Version in base suite: 140.8.0esr-1~deb13u1 Base version: thunderbird_140.8.0esr-1~deb13u1 Target version: thunderbird_140.9.0esr-1~deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/t/thunderbird/thunderbird_140.8.0esr-1~deb13u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/t/thunderbird/thunderbird_140.9.0esr-1~deb13u1.dsc /srv/release.debian.org/tmp/dwU9Rkj2sZ/thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin |binary /srv/release.debian.org/tmp/dwU9Rkj2sZ/thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin |binary /srv/release.debian.org/tmp/dwU9Rkj2sZ/thunderbird-140.9.0esr/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3 |binary thunderbird-140.9.0esr/.cargo/config.toml.in | 4 thunderbird-140.9.0esr/.cron.yml | 3 thunderbird-140.9.0esr/CLOBBER | 2 thunderbird-140.9.0esr/Cargo.lock | 4 thunderbird-140.9.0esr/accessible/generic/DocAccessible.cpp | 11 thunderbird-140.9.0esr/accessible/ipc/DocAccessibleParent.cpp | 72 thunderbird-140.9.0esr/accessible/ipc/DocAccessibleParent.h | 12 thunderbird-140.9.0esr/accessible/tests/browser/fission/browser.toml | 2 thunderbird-140.9.0esr/accessible/tests/browser/fission/browser_iframe_recreation.js | 29 thunderbird-140.9.0esr/browser/config/version.txt | 2 thunderbird-140.9.0esr/browser/config/version_display.txt | 2 thunderbird-140.9.0esr/comm/.gecko_rev.yml | 6 thunderbird-140.9.0esr/comm/mail/app/profile/all-thunderbird.js | 6 thunderbird-140.9.0esr/comm/mail/base/content/mailWindow.js | 6 thunderbird-140.9.0esr/comm/mail/components/MailGlue.sys.mjs | 41 thunderbird-140.9.0esr/comm/mail/config/version.txt | 2 thunderbird-140.9.0esr/comm/mail/config/version_display.txt | 2 thunderbird-140.9.0esr/comm/mail/extensions/am-e2e/prefs/e2e-prefs.js | 7 thunderbird-140.9.0esr/comm/mail/extensions/openpgp/content/modules/GPGMELib.sys.mjs | 35 thunderbird-140.9.0esr/comm/mail/metrics.yaml | 3 thunderbird-140.9.0esr/comm/mailnews/base/src/OAuth2Module.sys.mjs | 28 thunderbird-140.9.0esr/comm/mailnews/imap/src/nsImapGenericParser.cpp | 7 thunderbird-140.9.0esr/comm/mailnews/imap/src/nsImapServerResponseParser.cpp | 4 thunderbird-140.9.0esr/comm/rust/.cargo/config.toml.in | 4 thunderbird-140.9.0esr/comm/rust/Cargo.lock | 4 thunderbird-140.9.0esr/comm/rust/checksums.json | 2 thunderbird-140.9.0esr/comm/rust/gkrust/Cargo.toml | 2 thunderbird-140.9.0esr/comm/taskcluster/kinds/release-msix-push/kind.yml | 2 thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/.cargo-checksum.json | 2 thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/aggregate_device.rs | 58 thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/mod.rs | 58 thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/tests/mod.rs | 1 thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/tests/sync_callback.rs | 136 thunderbird-140.9.0esr/config/milestone.txt | 2 thunderbird-140.9.0esr/debian/changelog | 73 thunderbird-140.9.0esr/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js | 2 thunderbird-140.9.0esr/devtools/client/netmonitor/test/browser_net_columns_time.js | 3 thunderbird-140.9.0esr/devtools/client/netmonitor/test/browser_net_copy_as_fetch.js | 101 thunderbird-140.9.0esr/devtools/client/responsive/test/browser/browser_device_state_restore.js | 12 thunderbird-140.9.0esr/docshell/base/BrowsingContext.cpp | 5 thunderbird-140.9.0esr/docshell/base/BrowsingContext.h | 1 thunderbird-140.9.0esr/dom/base/DocumentOrShadowRoot.cpp | 10 thunderbird-140.9.0esr/dom/base/MimeType.cpp | 13 thunderbird-140.9.0esr/dom/base/nsContentPermissionHelper.cpp | 35 thunderbird-140.9.0esr/dom/base/nsContentPermissionHelper.h | 8 thunderbird-140.9.0esr/dom/base/test/gtest/TestMimeType.cpp | 44 thunderbird-140.9.0esr/dom/bindings/BindingUtils.cpp | 135 thunderbird-140.9.0esr/dom/bindings/ErrorIPCUtils.h | 70 thunderbird-140.9.0esr/dom/bindings/ErrorResult.h | 9 thunderbird-140.9.0esr/dom/bindings/ObservableArrayProxyHandler.cpp | 3 thunderbird-140.9.0esr/dom/canvas/TexUnpackBlob.cpp | 10 thunderbird-140.9.0esr/dom/events/GlobalKeyListener.cpp | 5 thunderbird-140.9.0esr/dom/indexedDB/ActorsParent.cpp | 8 thunderbird-140.9.0esr/dom/ipc/BrowserBridgeParent.cpp | 27 thunderbird-140.9.0esr/dom/ipc/BrowserChild.cpp | 4 thunderbird-140.9.0esr/dom/ipc/BrowserParent.cpp | 35 thunderbird-140.9.0esr/dom/ipc/ContentParent.cpp | 14 thunderbird-140.9.0esr/dom/ipc/ContentParent.h | 6 thunderbird-140.9.0esr/dom/ipc/PContentPermissionRequest.ipdl | 1 thunderbird-140.9.0esr/dom/localstorage/ActorsParent.cpp | 6 thunderbird-140.9.0esr/dom/media/MediaData.cpp | 44 thunderbird-140.9.0esr/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp | 20 thunderbird-140.9.0esr/dom/media/gmp/GMPLoader.cpp | 119 thunderbird-140.9.0esr/dom/media/gmp/GMPSharedMemManager.h | 4 thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderChild.cpp | 22 thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderChild.h | 3 thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderParent.cpp | 8 thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderParent.h | 1 thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderProxy.h | 1 thunderbird-140.9.0esr/dom/media/gmp/GMPVideoHost.cpp | 3 thunderbird-140.9.0esr/dom/media/gmp/GMPVideoi420FrameImpl.cpp | 101 thunderbird-140.9.0esr/dom/media/gmp/GMPVideoi420FrameImpl.h | 30 thunderbird-140.9.0esr/dom/media/gmp/PGMPVideoEncoder.ipdl | 1 thunderbird-140.9.0esr/dom/media/gtest/TestWebrtcGmpCodec.cpp | 279 thunderbird-140.9.0esr/dom/media/gtest/moz.build | 1 thunderbird-140.9.0esr/dom/media/platforms/agnostic/VPXDecoder.cpp | 6 thunderbird-140.9.0esr/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.cpp | 18 thunderbird-140.9.0esr/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.h | 1 thunderbird-140.9.0esr/dom/media/webcodecs/AudioData.cpp | 2 thunderbird-140.9.0esr/dom/media/webrtc/jsep/JsepSessionImpl.cpp | 10 thunderbird-140.9.0esr/dom/media/webrtc/jsep/JsepTrack.cpp | 104 thunderbird-140.9.0esr/dom/media/webrtc/jsep/JsepTrack.h | 15 thunderbird-140.9.0esr/dom/media/webrtc/jsep/moz.build | 5 thunderbird-140.9.0esr/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp | 83 thunderbird-140.9.0esr/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h | 2 thunderbird-140.9.0esr/dom/media/webrtc/transport/mediapacket.cpp | 72 thunderbird-140.9.0esr/dom/media/webrtc/transport/nricestunaddr.cpp | 13 thunderbird-140.9.0esr/dom/workers/remoteworkers/RemoteWorkerController.cpp | 4 thunderbird-140.9.0esr/gfx/2d/FilterNodeSoftware.cpp | 227 thunderbird-140.9.0esr/gfx/2d/FilterNodeSoftware.h | 22 thunderbird-140.9.0esr/gfx/2d/Filters.h | 3 thunderbird-140.9.0esr/gfx/2d/Rect.h | 17 thunderbird-140.9.0esr/gfx/2d/ScaledFontMac.cpp | 2 thunderbird-140.9.0esr/gfx/gl/GLContextEGL.h | 2 thunderbird-140.9.0esr/gfx/harfbuzz/src/hb-algs.hh | 15 thunderbird-140.9.0esr/gfx/harfbuzz/src/hb-ot-shaper-arabic.cc | 41 thunderbird-140.9.0esr/gfx/layers/AnimationHelper.cpp | 6 thunderbird-140.9.0esr/gfx/layers/BufferTexture.cpp | 11 thunderbird-140.9.0esr/gfx/layers/ImageContainer.cpp | 15 thunderbird-140.9.0esr/gfx/layers/ImageDataSerializer.cpp | 55 thunderbird-140.9.0esr/gfx/layers/ImageDataSerializer.h | 13 thunderbird-140.9.0esr/gfx/layers/SourceSurfaceSharedData.cpp | 17 thunderbird-140.9.0esr/gfx/layers/SourceSurfaceSharedData.h | 2 thunderbird-140.9.0esr/gfx/layers/composite/TextureHost.cpp | 7 thunderbird-140.9.0esr/gfx/layers/ipc/ImageBridgeParent.cpp | 13 thunderbird-140.9.0esr/gfx/layers/ipc/SharedPlanarYCbCrImage.cpp | 3 thunderbird-140.9.0esr/gfx/layers/opengl/TextureHostOGL.cpp | 10 thunderbird-140.9.0esr/gfx/layers/wr/WebRenderBridgeParent.cpp | 22 thunderbird-140.9.0esr/image/moz.build | 2 thunderbird-140.9.0esr/js/public/Value.h | 2 thunderbird-140.9.0esr/js/src/debugger/DebugScript.cpp | 18 thunderbird-140.9.0esr/js/src/debugger/Debugger.cpp | 33 thunderbird-140.9.0esr/js/src/gc/Memory.cpp | 10 thunderbird-140.9.0esr/js/src/gc/Verifier.cpp | 6 thunderbird-140.9.0esr/js/src/jit/IonAnalysis.cpp | 67 thunderbird-140.9.0esr/js/src/jit/MIR-wasm.h | 1 thunderbird-140.9.0esr/js/src/vm/ArrayBufferObject.cpp | 27 thunderbird-140.9.0esr/layout/style/FontFace.cpp | 6 thunderbird-140.9.0esr/media/libpng/ANNOUNCE | 37 thunderbird-140.9.0esr/media/libpng/AUTHORS | 12 thunderbird-140.9.0esr/media/libpng/CHANGES | 90 thunderbird-140.9.0esr/media/libpng/LICENSE | 4 thunderbird-140.9.0esr/media/libpng/README | 16 thunderbird-140.9.0esr/media/libpng/apng.patch | 20 thunderbird-140.9.0esr/media/libpng/arm/arm_init.c | 8 thunderbird-140.9.0esr/media/libpng/arm/filter_neon_intrinsics.c | 14 thunderbird-140.9.0esr/media/libpng/intel/filter_sse2_intrinsics.c | 58 thunderbird-140.9.0esr/media/libpng/libpng-manual.txt | 37 thunderbird-140.9.0esr/media/libpng/loongarch/filter_lsx_intrinsics.c | 37 thunderbird-140.9.0esr/media/libpng/loongarch/loongarch_lsx_init.c | 3 thunderbird-140.9.0esr/media/libpng/mips/filter_mmi_inline_assembly.c | 14 thunderbird-140.9.0esr/media/libpng/mips/filter_msa_intrinsics.c | 37 thunderbird-140.9.0esr/media/libpng/mips/mips_init.c | 6 thunderbird-140.9.0esr/media/libpng/moz.build | 16 thunderbird-140.9.0esr/media/libpng/moz.yaml | 7 thunderbird-140.9.0esr/media/libpng/png.c | 45 thunderbird-140.9.0esr/media/libpng/png.h | 1174 - thunderbird-140.9.0esr/media/libpng/pngconf.h | 49 thunderbird-140.9.0esr/media/libpng/pngdebug.h | 11 thunderbird-140.9.0esr/media/libpng/pngerror.c | 157 thunderbird-140.9.0esr/media/libpng/pngget.c | 15 thunderbird-140.9.0esr/media/libpng/pnginfo.h | 53 thunderbird-140.9.0esr/media/libpng/pngmem.c | 21 thunderbird-140.9.0esr/media/libpng/pngpread.c | 10 thunderbird-140.9.0esr/media/libpng/pngpriv.h | 975 - thunderbird-140.9.0esr/media/libpng/pngread.c | 267 thunderbird-140.9.0esr/media/libpng/pngrio.c | 4 thunderbird-140.9.0esr/media/libpng/pngrtran.c | 131 thunderbird-140.9.0esr/media/libpng/pngrutil.c | 20 thunderbird-140.9.0esr/media/libpng/pngset.c | 19 thunderbird-140.9.0esr/media/libpng/pngstruct.h | 16 thunderbird-140.9.0esr/media/libpng/pngtrans.c | 4 thunderbird-140.9.0esr/media/libpng/pngwio.c | 8 thunderbird-140.9.0esr/media/libpng/pngwrite.c | 57 thunderbird-140.9.0esr/media/libpng/pngwutil.c | 10 thunderbird-140.9.0esr/media/libpng/powerpc/filter_vsx_intrinsics.c | 2 thunderbird-140.9.0esr/media/libpng/powerpc/powerpc_init.c | 2 thunderbird-140.9.0esr/modules/libpref/init/StaticPrefList.yaml | 6 thunderbird-140.9.0esr/modules/libpref/parser/src/lib.rs | 3 thunderbird-140.9.0esr/modules/libpref/test/gtest/Parser.cpp | 12 thunderbird-140.9.0esr/modules/zlib/LICENSE | 22 thunderbird-140.9.0esr/modules/zlib/moz.yaml | 154 thunderbird-140.9.0esr/modules/zlib/mozzconf.patch | 13 thunderbird-140.9.0esr/modules/zlib/src/ChangeLog | 51 thunderbird-140.9.0esr/modules/zlib/src/ChangeLog.moz | 97 thunderbird-140.9.0esr/modules/zlib/src/FAQ | 367 thunderbird-140.9.0esr/modules/zlib/src/INDEX | 68 thunderbird-140.9.0esr/modules/zlib/src/LICENSE | 22 thunderbird-140.9.0esr/modules/zlib/src/README | 28 thunderbird-140.9.0esr/modules/zlib/src/compress.c | 44 thunderbird-140.9.0esr/modules/zlib/src/crc32.c | 164 thunderbird-140.9.0esr/modules/zlib/src/deflate.c | 176 thunderbird-140.9.0esr/modules/zlib/src/deflate.h | 8 thunderbird-140.9.0esr/modules/zlib/src/gzguts.h | 64 thunderbird-140.9.0esr/modules/zlib/src/gzlib.c | 103 thunderbird-140.9.0esr/modules/zlib/src/gzread.c | 296 thunderbird-140.9.0esr/modules/zlib/src/gzwrite.c | 267 thunderbird-140.9.0esr/modules/zlib/src/infback.c | 87 thunderbird-140.9.0esr/modules/zlib/src/inffast.c | 13 thunderbird-140.9.0esr/modules/zlib/src/inffixed.h | 182 thunderbird-140.9.0esr/modules/zlib/src/inflate.c | 189 thunderbird-140.9.0esr/modules/zlib/src/inflate.h | 2 thunderbird-140.9.0esr/modules/zlib/src/inftrees.c | 143 thunderbird-140.9.0esr/modules/zlib/src/inftrees.h | 4 thunderbird-140.9.0esr/modules/zlib/src/mozzconf.h | 21 thunderbird-140.9.0esr/modules/zlib/src/trees.c | 28 thunderbird-140.9.0esr/modules/zlib/src/uncompr.c | 62 thunderbird-140.9.0esr/modules/zlib/src/zconf.h | 46 thunderbird-140.9.0esr/modules/zlib/src/zlib.h | 307 thunderbird-140.9.0esr/modules/zlib/src/zutil.c | 84 thunderbird-140.9.0esr/modules/zlib/src/zutil.h | 99 thunderbird-140.9.0esr/netwerk/base/nsStandardURL.cpp | 26 thunderbird-140.9.0esr/netwerk/base/nsStandardURL.h | 5 thunderbird-140.9.0esr/netwerk/dns/effective_tld_names.dat | 62 thunderbird-140.9.0esr/netwerk/protocol/http/PHttpChannelParams.h | 46 thunderbird-140.9.0esr/netwerk/protocol/http/nsHttpResponseHead.cpp | 64 thunderbird-140.9.0esr/netwerk/protocol/http/nsHttpResponseHead.h | 4 thunderbird-140.9.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp | 10 thunderbird-140.9.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.h | 3 thunderbird-140.9.0esr/parser/expat/00_xmlchar.patch | 19 thunderbird-140.9.0esr/parser/expat/01_noslop.patch | 2 thunderbird-140.9.0esr/parser/expat/02_report_mismatched_tag.patch | 25 thunderbird-140.9.0esr/parser/expat/03_dont_generate_salt.patch | 6 thunderbird-140.9.0esr/parser/expat/04_always_set_eventptrs.patch | 2 thunderbird-140.9.0esr/parser/expat/05_getcurrentbyteindex.patch | 2 thunderbird-140.9.0esr/parser/expat/06_always_store_rawnames.patch | 69 thunderbird-140.9.0esr/parser/expat/06_report_processing_entity.patch | 17 thunderbird-140.9.0esr/parser/expat/07_always_store_rawnames.patch | 86 thunderbird-140.9.0esr/parser/expat/07_dont_ignore_undeclared_entity.patch | 33 thunderbird-140.9.0esr/parser/expat/08_dont_ignore_undeclared_entity.patch | 33 thunderbird-140.9.0esr/parser/expat/08_include_xmlns.patch | 140 thunderbird-140.9.0esr/parser/expat/09_include_xmlns.patch | 140 thunderbird-140.9.0esr/parser/expat/09_internalsubset.patch | 17 thunderbird-140.9.0esr/parser/expat/10_internalsubset.patch | 17 thunderbird-140.9.0esr/parser/expat/10_version_limit.patch | 28 thunderbird-140.9.0esr/parser/expat/11_nested_entities.patch | 33 thunderbird-140.9.0esr/parser/expat/11_no_debug_report.patch | 346 thunderbird-140.9.0esr/parser/expat/12_unused.patch | 280 thunderbird-140.9.0esr/parser/expat/12_version_limit.patch | 28 thunderbird-140.9.0esr/parser/expat/13_no_debug_report.patch | 218 thunderbird-140.9.0esr/parser/expat/14_unused.patch | 262 thunderbird-140.9.0esr/parser/expat/COPYING | 2 thunderbird-140.9.0esr/parser/expat/README_MOZILLA | 4 thunderbird-140.9.0esr/parser/expat/expat/lib/expat.h | 66 thunderbird-140.9.0esr/parser/expat/expat/lib/expat_external.h | 118 thunderbird-140.9.0esr/parser/expat/expat/lib/internal.h | 19 thunderbird-140.9.0esr/parser/expat/expat/lib/moz_xmlparse.c | 11 thunderbird-140.9.0esr/parser/expat/expat/lib/xmlparse.c | 1430 + thunderbird-140.9.0esr/parser/expat/expat/lib/xmlrole.c | 2 thunderbird-140.9.0esr/parser/expat/expat/lib/xmlrole.h | 36 thunderbird-140.9.0esr/parser/expat/expat/lib/xmltok.c | 6 thunderbird-140.9.0esr/parser/expat/expat/lib/xmltok.h | 232 thunderbird-140.9.0esr/parser/expat/expat/lib/xmltok_ns.c | 5 thunderbird-140.9.0esr/parser/expat/moz.yaml | 22 thunderbird-140.9.0esr/security/ct/CTKnownLogs.h | 10 thunderbird-140.9.0esr/security/manager/ssl/StaticHPKPins.h | 2 thunderbird-140.9.0esr/security/manager/ssl/nsSTSPreloadList.inc | 3957 ++-- thunderbird-140.9.0esr/security/manager/tools/log_list.json | 20 thunderbird-140.9.0esr/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp | 56 thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters.json | 9142 ++-------- thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json | 2 thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json | 2 thunderbird-140.9.0esr/services/settings/dumps/blocklists/gfx.json | 28 thunderbird-140.9.0esr/services/settings/dumps/main/devtools-compatibility-browsers.json | 418 thunderbird-140.9.0esr/services/settings/dumps/main/devtools-devices.json | 807 thunderbird-140.9.0esr/services/settings/dumps/main/remote-permissions.json | 13 thunderbird-140.9.0esr/services/settings/dumps/main/search-config-icons.json | 86 thunderbird-140.9.0esr/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3.meta.json | 2 thunderbird-140.9.0esr/services/settings/dumps/main/search-config-v2.json | 35 thunderbird-140.9.0esr/services/settings/dumps/main/search-telemetry-v2.json | 277 thunderbird-140.9.0esr/services/settings/dumps/security-state/intermediates.json | 2355 +- thunderbird-140.9.0esr/services/settings/dumps/security-state/onecrl.json | 662 thunderbird-140.9.0esr/sourcestamp.txt | 6 thunderbird-140.9.0esr/taskcluster/gecko_taskgraph/transforms/mark_as_merged.py | 2 thunderbird-140.9.0esr/taskcluster/gecko_taskgraph/util/bugbug.py | 2 thunderbird-140.9.0esr/taskcluster/kinds/fetch/toolchains.yml | 10 thunderbird-140.9.0esr/taskcluster/kinds/mark-as-merged/kind.yml | 1 thunderbird-140.9.0esr/taskcluster/kinds/toolchain/mingw.yml | 2 thunderbird-140.9.0esr/taskcluster/scripts/misc/build-mingw32-nsis.sh | 4 thunderbird-140.9.0esr/testing/web-platform/meta/fetch/content-type/response.window.js.ini | 29 thunderbird-140.9.0esr/testing/web-platform/meta/fetch/content-type/script.window.js.ini | 9 thunderbird-140.9.0esr/third_party/aom/av1/encoder/pickcdef.c | 38 thunderbird-140.9.0esr/third_party/rust/cubeb-coreaudio/.cargo-checksum.json | 2 thunderbird-140.9.0esr/third_party/rust/cubeb-coreaudio/src/backend/aggregate_device.rs | 58 thunderbird-140.9.0esr/third_party/rust/cubeb-coreaudio/src/backend/mod.rs | 58 thunderbird-140.9.0esr/third_party/rust/cubeb-coreaudio/src/backend/tests/mod.rs | 1 thunderbird-140.9.0esr/third_party/rust/cubeb-coreaudio/src/backend/tests/sync_callback.rs | 136 thunderbird-140.9.0esr/thunderbird-l10n/af/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/ar/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/ast/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/be/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/bg/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/br/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/ca/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/cak/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/cs/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/cy/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/da/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/de/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/dsb/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/el/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/en-CA/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/en-GB/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/es-AR/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/es-ES/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/es-MX/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/et/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/eu/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/fi/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/fr/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/fy-NL/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/ga-IE/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/gd/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/gl/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/he/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/hr/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/hsb/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/hu/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/hy-AM/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/id/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/is/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/it/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/ja/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/ka/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/kab/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/kk/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/ko/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/lt/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/lv/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/ms/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/nb-NO/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/nl/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/nn-NO/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/pa-IN/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/pl/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/pt-BR/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/pt-PT/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/rm/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/ro/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/ru/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/sk/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/sl/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/sq/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/sr/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/sv-SE/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/th/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/tr/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/uk/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/uz/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/vi/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/zh-CN/manifest.json | 4 thunderbird-140.9.0esr/thunderbird-l10n/zh-TW/manifest.json | 4 thunderbird-140.9.0esr/toolkit/components/resistfingerprinting/nsRFPService.cpp | 2 thunderbird-140.9.0esr/toolkit/components/resistfingerprinting/nsRFPService.h | 4 thunderbird-140.9.0esr/toolkit/components/telemetry/core/ipc/TelemetryComms.h | 72 thunderbird-140.9.0esr/toolkit/components/telemetry/other/CombinedStacks.h | 9 thunderbird-140.9.0esr/toolkit/library/rust/shared/Cargo.toml | 2 thunderbird-140.9.0esr/widget/EventForwards.h | 15 thunderbird-140.9.0esr/widget/MouseEvents.h | 13 thunderbird-140.9.0esr/widget/TextEvents.h | 13 thunderbird-140.9.0esr/widget/WidgetEventImpl.cpp | 6 thunderbird-140.9.0esr/widget/cocoa/nsCocoaWindow.mm | 4 thunderbird-140.9.0esr/widget/cocoa/nsMacSharingService.mm | 37 thunderbird-140.9.0esr/widget/gtk/nsImageToPixbuf.cpp | 41 thunderbird-140.9.0esr/widget/nsGUIEventIPC.h | 171 thunderbird-140.9.0esr/xpcom/base/ErrorList.py | 1 thunderbird-140.9.0esr/xpcom/base/nsSystemInfo.cpp | 110 thunderbird-140.9.0esr/xpcom/base/nsWindowsHelpers.h | 50 thunderbird-140.9.0esr/xpcom/io/SlicedInputStream.cpp | 8 thunderbird-140.9.0esr/xpcom/io/SnappyUncompressInputStream.cpp | 6 thunderbird-140.9.0esr/xpcom/metrics.yaml | 22 354 files changed, 16630 insertions(+), 15970 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp758sby3n/thunderbird_140.8.0esr-1~deb13u1.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp758sby3n/thunderbird_140.9.0esr-1~deb13u1.dsc: no acceptable signature found diff -Nru thunderbird-140.8.0esr/.cargo/config.toml.in thunderbird-140.9.0esr/.cargo/config.toml.in --- thunderbird-140.8.0esr/.cargo/config.toml.in 2026-02-19 21:35:00.000000000 +0000 +++ thunderbird-140.9.0esr/.cargo/config.toml.in 2026-03-20 19:18:29.000000000 +0000 @@ -85,9 +85,9 @@ rev = "e6f44a2bd1e57d11dfc737632a9e849077632330" replace-with = "vendored-sources" -[source."git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=2407441a2f67341a0e13b4ba6547555e387c671c"] +[source."git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=579b75af21c040700eee6a1d8520e222699fe4cd"] git = "https://github.com/mozilla/cubeb-coreaudio-rs" -rev = "2407441a2f67341a0e13b4ba6547555e387c671c" +rev = "579b75af21c040700eee6a1d8520e222699fe4cd" replace-with = "vendored-sources" [source."git+https://github.com/mozilla/cubeb-pulse-rs?rev=8678dcab1c287de79c4c184ccc2e065bc62b70e2"] diff -Nru thunderbird-140.8.0esr/.cron.yml thunderbird-140.9.0esr/.cron.yml --- thunderbird-140.8.0esr/.cron.yml 2026-02-19 21:35:00.000000000 +0000 +++ thunderbird-140.9.0esr/.cron.yml 2026-03-20 19:18:29.000000000 +0000 @@ -263,8 +263,7 @@ - mozilla-release - mozilla-esr140 when: - - {weekday: 'Monday', hour: 8, minute: 0} - - {weekday: 'Thursday', hour: 8, minute: 0} + - {weekday: 'Monday', hour: 5, minute: 0} - name: daily-beta-perf job: diff -Nru thunderbird-140.8.0esr/CLOBBER thunderbird-140.9.0esr/CLOBBER --- thunderbird-140.8.0esr/CLOBBER 2026-02-19 21:35:00.000000000 +0000 +++ thunderbird-140.9.0esr/CLOBBER 2026-03-20 19:18:30.000000000 +0000 @@ -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-01-12 \ No newline at end of file +Merge day clobber 2026-02-23 \ No newline at end of file diff -Nru thunderbird-140.8.0esr/Cargo.lock thunderbird-140.9.0esr/Cargo.lock --- thunderbird-140.8.0esr/Cargo.lock 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/Cargo.lock 2026-03-20 19:18:30.000000000 +0000 @@ -1086,7 +1086,7 @@ [[package]] name = "coreaudio-sys-utils" version = "0.1.0" -source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=2407441a2f67341a0e13b4ba6547555e387c671c#2407441a2f67341a0e13b4ba6547555e387c671c" +source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=579b75af21c040700eee6a1d8520e222699fe4cd#579b75af21c040700eee6a1d8520e222699fe4cd" dependencies = [ "core-foundation-sys", "coreaudio-sys", @@ -1398,7 +1398,7 @@ [[package]] name = "cubeb-coreaudio" version = "0.1.0" -source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=2407441a2f67341a0e13b4ba6547555e387c671c#2407441a2f67341a0e13b4ba6547555e387c671c" +source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=579b75af21c040700eee6a1d8520e222699fe4cd#579b75af21c040700eee6a1d8520e222699fe4cd" dependencies = [ "atomic", "audio-mixer", diff -Nru thunderbird-140.8.0esr/accessible/generic/DocAccessible.cpp thunderbird-140.9.0esr/accessible/generic/DocAccessible.cpp --- thunderbird-140.8.0esr/accessible/generic/DocAccessible.cpp 2026-02-19 21:35:00.000000000 +0000 +++ thunderbird-140.9.0esr/accessible/generic/DocAccessible.cpp 2026-03-20 19:18:30.000000000 +0000 @@ -1768,11 +1768,12 @@ } #endif - // 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()) { + // 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()) { RefPtr reorderEvent = new AccReorderEvent(LocalParent()); ParentDocument()->FireDelayedEvent(reorderEvent); } diff -Nru thunderbird-140.8.0esr/accessible/ipc/DocAccessibleParent.cpp thunderbird-140.9.0esr/accessible/ipc/DocAccessibleParent.cpp --- thunderbird-140.8.0esr/accessible/ipc/DocAccessibleParent.cpp 2026-02-19 21:35:00.000000000 +0000 +++ thunderbird-140.9.0esr/accessible/ipc/DocAccessibleParent.cpp 2026-03-20 19:18:29.000000000 +0000 @@ -50,6 +50,7 @@ mTopLevel(false), mTopLevelInContentProcess(false), mShutdown(false), + mIsInitialTreeDone(false), mFocus(0), mCaretId(0), mCaretOffset(-1), @@ -145,7 +146,9 @@ // Otherwise, clients might crawl the incomplete subtree and they won't get // mutation events for the remaining pieces. if (aComplete || root != child) { - AttachChild(parent, childIdx, child); + if (!AttachChild(parent, childIdx, child)) { + return IPC_FAIL(this, "failed to attach child"); + } } } @@ -174,7 +177,9 @@ MOZ_ASSERT(rootParent); root = GetAccessible(mPendingShowChild); MOZ_ASSERT(root); - AttachChild(rootParent, mPendingShowIndex, root); + if (!AttachChild(rootParent, mPendingShowIndex, root)) { + return IPC_FAIL(this, "failed to attach pending show child"); + } mPendingShowChild = 0; mPendingShowParent = 0; mPendingShowIndex = 0; @@ -234,6 +239,11 @@ 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()); @@ -246,9 +256,20 @@ return newProxy; } -void DocAccessibleParent::AttachChild(RemoteAccessible* aParent, +bool 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. @@ -269,11 +290,16 @@ } 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) { @@ -286,6 +312,10 @@ // 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); } } @@ -603,6 +633,18 @@ 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(); @@ -882,6 +924,11 @@ 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"); + } + // We do not use GetAccessible here because we want to be sure to not get the // document it self. ProxyEntry* e = mAccessibles.GetEntry(aParentID); @@ -930,11 +977,20 @@ aChildDoc->SetEmulatedWindowHandle(mEmulatedWindowHandle); } #endif // defined(XP_WIN) - // 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. + } + // 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) { FireEvent(outerDoc, nsIAccessibleEvent::EVENT_REORDER); } diff -Nru thunderbird-140.8.0esr/accessible/ipc/DocAccessibleParent.h thunderbird-140.9.0esr/accessible/ipc/DocAccessibleParent.h --- thunderbird-140.8.0esr/accessible/ipc/DocAccessibleParent.h 2026-02-19 21:35:00.000000000 +0000 +++ thunderbird-140.9.0esr/accessible/ipc/DocAccessibleParent.h 2026-03-20 19:18:29.000000000 +0000 @@ -325,11 +325,14 @@ }; RemoteAccessible* CreateAcc(const AccessibleData& aAccData); - void AttachChild(RemoteAccessible* aParent, uint32_t aIndex, + bool 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); /** @@ -365,9 +368,10 @@ uint32_t mPendingShowIndex = 0; nsTHashSet mMovingIDs; uint64_t mActorID; - bool mTopLevel; - bool mTopLevelInContentProcess; - bool mShutdown; + bool mTopLevel : 1; + bool mTopLevelInContentProcess : 1; + bool mShutdown : 1; + bool mIsInitialTreeDone : 1; RefPtr mBrowsingContext; nsTHashSet> mPendingOOPChildDocs; diff -Nru thunderbird-140.8.0esr/accessible/tests/browser/fission/browser.toml thunderbird-140.9.0esr/accessible/tests/browser/fission/browser.toml --- thunderbird-140.8.0esr/accessible/tests/browser/fission/browser.toml 2026-02-19 21:35:00.000000000 +0000 +++ thunderbird-140.9.0esr/accessible/tests/browser/fission/browser.toml 2026-03-20 19:18:29.000000000 +0000 @@ -11,6 +11,8 @@ ["browser_hidden_iframe.js"] https_first_disabled = true +["browser_iframe_recreation.js"] + ["browser_nested_iframe.js"] ["browser_reframe_root.js"] diff -Nru thunderbird-140.8.0esr/accessible/tests/browser/fission/browser_iframe_recreation.js thunderbird-140.9.0esr/accessible/tests/browser/fission/browser_iframe_recreation.js --- thunderbird-140.8.0esr/accessible/tests/browser/fission/browser_iframe_recreation.js 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/accessible/tests/browser/fission/browser_iframe_recreation.js 2026-03-20 19:18:29.000000000 +0000 @@ -0,0 +1,29 @@ +/* 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 -Nru thunderbird-140.8.0esr/browser/config/version.txt thunderbird-140.9.0esr/browser/config/version.txt --- thunderbird-140.8.0esr/browser/config/version.txt 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/browser/config/version.txt 2026-03-20 19:18:30.000000000 +0000 @@ -1 +1 @@ -140.8.0 +140.9.0 diff -Nru thunderbird-140.8.0esr/browser/config/version_display.txt thunderbird-140.9.0esr/browser/config/version_display.txt --- thunderbird-140.8.0esr/browser/config/version_display.txt 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/browser/config/version_display.txt 2026-03-20 19:18:29.000000000 +0000 @@ -1 +1 @@ -140.8.0esr +140.9.0esr diff -Nru thunderbird-140.8.0esr/comm/.gecko_rev.yml thunderbird-140.9.0esr/comm/.gecko_rev.yml --- thunderbird-140.8.0esr/comm/.gecko_rev.yml 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/.gecko_rev.yml 2026-03-20 19:19:03.000000000 +0000 @@ -1,8 +1,8 @@ --- GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified -GECKO_HEAD_REPOSITORY: https://hg-edge.mozilla.org/releases/mozilla-esr140 -GECKO_HEAD_REF: FIREFOX_140_8_0esr_BUILD2 -GECKO_HEAD_REV: b23aff4bbac16e44f2a9d3127c18616acfef6166 +GECKO_HEAD_REPOSITORY: https://hg.mozilla.org/releases/mozilla-esr140 +GECKO_HEAD_REF: FIREFOX_140_9_0esr_BUILD1 +GECKO_HEAD_REV: ad4a5ceb5516151b4014e2af6c1565c68ab330cc ###### ### For comm-central diff -Nru thunderbird-140.8.0esr/comm/mail/app/profile/all-thunderbird.js thunderbird-140.9.0esr/comm/mail/app/profile/all-thunderbird.js --- thunderbird-140.8.0esr/comm/mail/app/profile/all-thunderbird.js 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/mail/app/profile/all-thunderbird.js 2026-03-20 19:19:04.000000000 +0000 @@ -1478,6 +1478,12 @@ // TODO: Remove this when PKCE is fully rolled out for Yahoo/AOL/AT&T pref("mail.inappnotifications.pkceUpgradeForYahooAol", false); +// Whether Thunderbird is running under Flatpak or Snap. +// These are set at startup each run so they reflect the current runtime. +// Used to notify about upcoming changes via in-app notification. +pref("mail.inappnotifications.isFlatpak", false); +pref("mail.inappnotifications.isSnap", false); + #ifdef NIGHTLY_BUILD // Enable the new experimental conversation view based on Gloda. pref("mail.thread.conversation.enabled", false); diff -Nru thunderbird-140.8.0esr/comm/mail/base/content/mailWindow.js thunderbird-140.9.0esr/comm/mail/base/content/mailWindow.js --- thunderbird-140.8.0esr/comm/mail/base/content/mailWindow.js 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/mail/base/content/mailWindow.js 2026-03-20 19:19:03.000000000 +0000 @@ -368,9 +368,11 @@ url = Services.textToSubURI.unEscapeURIForUI(url); // Encode bidirectional formatting characters. - // (RFC 3987 sections 3.2 and 4.1 paragraph 6) + // + // https://url.spec.whatwg.org/#url-rendering-i18n + // https://www.unicode.org/reports/tr9/#Directional_Formatting_Characters url = url.replace( - /[\u200e\u200f\u202a\u202b\u202c\u202d\u202e]/g, + /[\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/g, encodeURIComponent ); } diff -Nru thunderbird-140.8.0esr/comm/mail/components/MailGlue.sys.mjs thunderbird-140.9.0esr/comm/mail/components/MailGlue.sys.mjs --- thunderbird-140.8.0esr/comm/mail/components/MailGlue.sys.mjs 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/mail/components/MailGlue.sys.mjs 2026-03-20 19:19:04.000000000 +0000 @@ -575,11 +575,47 @@ } }, + /** + * Set prefs if we appear to be running under Flatpak or Snap. + * + * Uses env vars first (easy to test by simulating env vars), + * then falls back to distribution.id (packager-provided). + * + * These prefs are set on every startup so profiles can be reused + * across different installations. + */ + _setFlatpakOrSnapPref() { + if (AppConstants.platform != "linux") { + Services.prefs.setBoolPref("mail.inappnotifications.isFlatpak", false); + Services.prefs.setBoolPref("mail.inappnotifications.isSnap", false); + return; + } + + let isFlatpak = Services.env.exists("FLATPAK_ID"); + let isSnap = + Services.env.exists("SNAP") || Services.env.exists("SNAP_NAME"); + + if (!isFlatpak && !isSnap) { + const distId = Services.prefs + .getDefaultBranch("") + .getCharPref("distribution.id", "") + .toLowerCase(); + + isFlatpak = distId.includes("flatpak"); + isSnap = distId.includes("snap"); + } + + Services.prefs.setBoolPref("mail.inappnotifications.isFlatpak", isFlatpak); + Services.prefs.setBoolPref("mail.inappnotifications.isSnap", isSnap); + }, + // Runs on startup, before the first command line handler is invoked // (i.e. before the first window is opened). _beforeUIStartup() { lazy.TBDistCustomizer.applyPrefDefaults(); + this._setFlatpakOrSnapPref(); + const UI_VERSION_PREF = "mail.ui-rdf.version"; this._isNewProfile = !Services.prefs.prefHasUserValue(UI_VERSION_PREF); @@ -1311,6 +1347,8 @@ const booleanPrefs = [ // General "browser.cache.disk.smart_size.enabled", + "extensions.hasExperimentsInstalled", + "extensions.hasExtensionsInstalled", "general.autoScroll", "general.smoothScroll", "intl.regional_prefs.use_os_locales", @@ -1321,6 +1359,9 @@ "mail.dark-reader.show-toggle", "mail.delete_matches_sort_order", "mail.display_glyph", + "mail.inappnotifications.pkceUpgradeForYahooAol", + "mail.inappnotifications.isFlatpak", + "mail.inappnotifications.isSnap", "mail.prompt_purge_threshold", "mail.purge.ask", "mail.showCondensedAddresses", diff -Nru thunderbird-140.8.0esr/comm/mail/config/version.txt thunderbird-140.9.0esr/comm/mail/config/version.txt --- thunderbird-140.8.0esr/comm/mail/config/version.txt 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/mail/config/version.txt 2026-03-20 19:19:04.000000000 +0000 @@ -1 +1 @@ -140.8.0 +140.9.0 diff -Nru thunderbird-140.8.0esr/comm/mail/config/version_display.txt thunderbird-140.9.0esr/comm/mail/config/version_display.txt --- thunderbird-140.8.0esr/comm/mail/config/version_display.txt 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/mail/config/version_display.txt 2026-03-20 19:19:04.000000000 +0000 @@ -1 +1 @@ -140.8.0esr +140.9.0esr diff -Nru thunderbird-140.8.0esr/comm/mail/extensions/am-e2e/prefs/e2e-prefs.js thunderbird-140.9.0esr/comm/mail/extensions/am-e2e/prefs/e2e-prefs.js --- thunderbird-140.8.0esr/comm/mail/extensions/am-e2e/prefs/e2e-prefs.js 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/mail/extensions/am-e2e/prefs/e2e-prefs.js 2026-03-20 19:19:04.000000000 +0000 @@ -28,6 +28,13 @@ pref("mail.openpgp.allow_external_gnupg", false); // If allow_external_gnupg is true: Optionally use a different gpg executable pref("mail.openpgp.alternative_gpg_path", ""); + +// If allow_external_gnupg is true, you may use this pref to allow +// loading of an GPGME version that is untested (officially unsupported) +// by the current software release. Example value: "45" +// Set it to the empty string to load only expected library versions. +pref("mail.openpgp.load_untested_gpgme_version", ""); + // The hexadecimal OpenPGP key ID used for an identity. pref("mail.identity.default.openpgp_key_id", ""); // If true, then openpgp_key_id is managed externally by GnuPG diff -Nru thunderbird-140.8.0esr/comm/mail/extensions/openpgp/content/modules/GPGMELib.sys.mjs thunderbird-140.9.0esr/comm/mail/extensions/openpgp/content/modules/GPGMELib.sys.mjs --- thunderbird-140.8.0esr/comm/mail/extensions/openpgp/content/modules/GPGMELib.sys.mjs 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/mail/extensions/openpgp/content/modules/GPGMELib.sys.mjs 2026-03-20 19:19:04.000000000 +0000 @@ -61,8 +61,31 @@ function loadExternalGPGMELib() { if (!libgpgme) { + let optionalGPGMEVersion = Services.prefs.getStringPref( + "mail.openpgp.load_untested_gpgme_version" + ); + + // Only allow characters expected in version numbers, + // which will disallow things like path separators. + if (optionalGPGMEVersion && !/^[A-Za-z0-9]+$/.test(optionalGPGMEVersion)) { + log.debug(`Ignoring invalid value in load_untested_gpgme_version`); + optionalGPGMEVersion = ""; + } + if (Services.appinfo.OS === "WINNT") { - tryLoadGPGME("libgpgme6-11", ""); + if (optionalGPGMEVersion) { + if (!libgpgme) { + tryLoadGPGME("libgpgme-" + optionalGPGMEVersion, ""); + } + + if (!libgpgme) { + tryLoadGPGME("gpgme-" + optionalGPGMEVersion, ""); + } + } + + if (!libgpgme) { + tryLoadGPGME("libgpgme6-11", ""); + } if (!libgpgme) { tryLoadGPGME("libgpgme-11", ""); @@ -73,6 +96,16 @@ } } + if (optionalGPGMEVersion) { + if (!libgpgme) { + tryLoadGPGME("gpgme", "." + optionalGPGMEVersion); + } + + if (!libgpgme) { + tryLoadGPGME("gpgme." + optionalGPGMEVersion, ""); + } + } + if (!libgpgme) { tryLoadGPGME("gpgme", ""); } diff -Nru thunderbird-140.8.0esr/comm/mail/metrics.yaml thunderbird-140.9.0esr/comm/mail/metrics.yaml --- thunderbird-140.8.0esr/comm/mail/metrics.yaml 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/mail/metrics.yaml 2026-03-20 19:19:04.000000000 +0000 @@ -179,6 +179,8 @@ - browser.display.use_system_colors - browser.safebrowsing.enabled - datareporting.healthreport.uploadEnabled + - extensions.hasExperimentsInstalled + - extensions.hasExtensionsInstalled - general.autoScroll - general.smoothScroll - intl.regional_prefs.use_os_locales @@ -211,6 +213,7 @@ - mail.enable_autocomplete - mail.fixed_width_messages - mail.forward_add_extension + - mail.inappnotifications.pkceUpgradeForYahooAol - mail.mdn.report.enabled - mail.minimizeToTray - mail.operate_on_msgs_in_collapsed_threads diff -Nru thunderbird-140.8.0esr/comm/mailnews/base/src/OAuth2Module.sys.mjs thunderbird-140.9.0esr/comm/mailnews/base/src/OAuth2Module.sys.mjs --- thunderbird-140.8.0esr/comm/mailnews/base/src/OAuth2Module.sys.mjs 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/mailnews/base/src/OAuth2Module.sys.mjs 2026-03-20 19:19:04.000000000 +0000 @@ -51,24 +51,6 @@ const { issuer, allScopes, requiredScopes } = details; - // Set pref for Yahoo/AOL/AT&T users if applicable - // TODO: Remove this when PKCE is fully rolled out for Yahoo/AOL/AT&T - const yahooLikeIssuer = ["login.yahoo.com", "login.aol.com"].includes( - details.issuer - ); - if ( - yahooLikeIssuer && - !Services.prefs.getBoolPref( - "mail.inappnotifications.pkceUpgradeForYahooAol", - false - ) - ) { - Services.prefs.setBoolPref( - "mail.inappnotifications.pkceUpgradeForYahooAol", - true - ); - } - // Find the app key we need for the OAuth2 string. Eventually, this should // be using dynamic client registration, but there are no current // implementations that we can test this with. @@ -77,6 +59,16 @@ return false; } + // Set pref for Yahoo/AOL/AT&T users if applicable + // TODO: Remove this block when PKCE is fully rolled out for Yahoo/AOL/AT&T + if (["login.yahoo.com", "login.aol.com"].includes(issuer)) { + Services.prefs.setBoolPref( + "mail.inappnotifications.pkceUpgradeForYahooAol", + !issuerDetails.usePKCE + ); + } + // TODO: END + // Username is needed to generate the XOAUTH2 string. this._username = username; // loginOrigin is needed to save the refresh token in the password manager. diff -Nru thunderbird-140.8.0esr/comm/mailnews/imap/src/nsImapGenericParser.cpp thunderbird-140.9.0esr/comm/mailnews/imap/src/nsImapGenericParser.cpp --- thunderbird-140.8.0esr/comm/mailnews/imap/src/nsImapGenericParser.cpp 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/mailnews/imap/src/nsImapGenericParser.cpp 2026-03-20 19:19:04.000000000 +0000 @@ -292,9 +292,12 @@ // ; any OCTET except NUL, %x00 char* nsImapGenericParser::CreateLiteral() { int32_t numberOfCharsInMessage = atoi(fNextToken + 1); + if (numberOfCharsInMessage < 0) { + SetSyntaxError(true, "negative literal size"); + return nullptr; + } + uint32_t numBytes = numberOfCharsInMessage + 1; - NS_ASSERTION(numBytes, "overflow!"); - if (!numBytes) return nullptr; char* returnString = (char*)PR_Malloc(numBytes); if (!returnString) { HandleMemoryFailure(); diff -Nru thunderbird-140.8.0esr/comm/mailnews/imap/src/nsImapServerResponseParser.cpp thunderbird-140.9.0esr/comm/mailnews/imap/src/nsImapServerResponseParser.cpp --- thunderbird-140.8.0esr/comm/mailnews/imap/src/nsImapServerResponseParser.cpp 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/mailnews/imap/src/nsImapServerResponseParser.cpp 2026-03-20 19:19:04.000000000 +0000 @@ -2272,6 +2272,10 @@ // the message response has been processed. bool nsImapServerResponseParser::msg_fetch_literal(bool chunk, int32_t origin) { numberOfCharsInThisChunk = atoi(fNextToken + 1); + if (numberOfCharsInThisChunk < 0) { + SetSyntaxError(true, "negative literal size"); + return true; + } // If we didn't request a specific size, or the server isn't returning exactly // as many octets as we requested, this must be the last or only chunk bool lastChunk = (!chunk || (numberOfCharsInThisChunk != diff -Nru thunderbird-140.8.0esr/comm/rust/.cargo/config.toml.in thunderbird-140.9.0esr/comm/rust/.cargo/config.toml.in --- thunderbird-140.8.0esr/comm/rust/.cargo/config.toml.in 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/rust/.cargo/config.toml.in 2026-03-20 19:19:04.000000000 +0000 @@ -81,9 +81,9 @@ rev = "e6f44a2bd1e57d11dfc737632a9e849077632330" replace-with = "vendored-sources" -[source."git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=2407441a2f67341a0e13b4ba6547555e387c671c"] +[source."git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=579b75af21c040700eee6a1d8520e222699fe4cd"] git = "https://github.com/mozilla/cubeb-coreaudio-rs" -rev = "2407441a2f67341a0e13b4ba6547555e387c671c" +rev = "579b75af21c040700eee6a1d8520e222699fe4cd" replace-with = "vendored-sources" [source."git+https://github.com/mozilla/cubeb-pulse-rs?rev=8678dcab1c287de79c4c184ccc2e065bc62b70e2"] diff -Nru thunderbird-140.8.0esr/comm/rust/Cargo.lock thunderbird-140.9.0esr/comm/rust/Cargo.lock --- thunderbird-140.8.0esr/comm/rust/Cargo.lock 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/rust/Cargo.lock 2026-03-20 19:19:04.000000000 +0000 @@ -962,7 +962,7 @@ [[package]] name = "coreaudio-sys-utils" version = "0.1.0" -source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=2407441a2f67341a0e13b4ba6547555e387c671c#2407441a2f67341a0e13b4ba6547555e387c671c" +source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=579b75af21c040700eee6a1d8520e222699fe4cd#579b75af21c040700eee6a1d8520e222699fe4cd" dependencies = [ "core-foundation-sys", "coreaudio-sys", @@ -1202,7 +1202,7 @@ [[package]] name = "cubeb-coreaudio" version = "0.1.0" -source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=2407441a2f67341a0e13b4ba6547555e387c671c#2407441a2f67341a0e13b4ba6547555e387c671c" +source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=579b75af21c040700eee6a1d8520e222699fe4cd#579b75af21c040700eee6a1d8520e222699fe4cd" dependencies = [ "atomic", "audio-mixer", diff -Nru thunderbird-140.8.0esr/comm/rust/checksums.json thunderbird-140.9.0esr/comm/rust/checksums.json --- thunderbird-140.8.0esr/comm/rust/checksums.json 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/rust/checksums.json 2026-03-20 19:19:04.000000000 +0000 @@ -1 +1 @@ -{"mc_workspace_toml": "1ab51fc7f070006cb9101893a503908fcd1edfd93b81b367289fbc734e59ec022947d6a2f127592acc34e0626c89ff20217e81abe96abd9c44f5cc60aa8b4031", "mc_gkrust_toml": "af2a68130abfc1214fa0d411fa475e1f429d5abb475fe53383e1e1a1ac903ce5855160bbc9a36919524ff21c6a527a9a109d691db82ed13d8894bbf758d49e70", "mc_hack_toml": "fba150c03e85bea54154a337babb30678c678f843452cfdec69bb00331b87cf003f1b93c33dfb1283b9cf4ff5e75ccd01379ff760b9adbf18832441238102305", "mc_cargo_lock": "2f3919a8d010c8d9a5e6eadbeb4428d53c7cd45519c85feb78a662dc7ea7de455e77f947a031a288cd6934a2b8bc8dcf8c66acfd8f24f6a87bffccf461cf1643"} \ No newline at end of file +{"mc_workspace_toml": "1ab51fc7f070006cb9101893a503908fcd1edfd93b81b367289fbc734e59ec022947d6a2f127592acc34e0626c89ff20217e81abe96abd9c44f5cc60aa8b4031", "mc_gkrust_toml": "d247dce96ce88c4fe9cff941825831539f27d062eb74fb167858fe21fe0b3d77fcc8bc5b1d154640fa63a259394fe13be44f03a345f3db6148d3340c121d0b65", "mc_hack_toml": "fba150c03e85bea54154a337babb30678c678f843452cfdec69bb00331b87cf003f1b93c33dfb1283b9cf4ff5e75ccd01379ff760b9adbf18832441238102305", "mc_cargo_lock": "a37a800b97f18501389d74453d8b754a1edf9c62613735a446dbc3314cc190e1506875aa28a4e21a35b7986862730157a686427498fab10ef75832577cef6700"} \ No newline at end of file diff -Nru thunderbird-140.8.0esr/comm/rust/gkrust/Cargo.toml thunderbird-140.9.0esr/comm/rust/gkrust/Cargo.toml --- thunderbird-140.8.0esr/comm/rust/gkrust/Cargo.toml 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/rust/gkrust/Cargo.toml 2026-03-20 19:19:04.000000000 +0000 @@ -34,7 +34,7 @@ cose-c = { version = "0.1.5" } crash_helper_client = { path = "../../../toolkit/crashreporter/crash_helper_client", optional = true } crypto_hash = { path = "../../../security/manager/ssl/crypto_hash" } -cubeb-coreaudio = { git = "https://github.com/mozilla/cubeb-coreaudio-rs", rev = "2407441a2f67341a0e13b4ba6547555e387c671c", optional = true } +cubeb-coreaudio = { git = "https://github.com/mozilla/cubeb-coreaudio-rs", rev = "579b75af21c040700eee6a1d8520e222699fe4cd", optional = true } cubeb-pulse = { git = "https://github.com/mozilla/cubeb-pulse-rs", rev = "8678dcab1c287de79c4c184ccc2e065bc62b70e2", optional = true, features = ['pulse-dlopen'] } cubeb-sys = { version = "0.13", optional = true, features = ['gecko-in-tree'] } dap_ffi = { path = "../../../toolkit/components/telemetry/dap/ffi" } diff -Nru thunderbird-140.8.0esr/comm/taskcluster/kinds/release-msix-push/kind.yml thunderbird-140.9.0esr/comm/taskcluster/kinds/release-msix-push/kind.yml --- thunderbird-140.8.0esr/comm/taskcluster/kinds/release-msix-push/kind.yml 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/taskcluster/kinds/release-msix-push/kind.yml 2026-03-20 19:19:04.000000000 +0000 @@ -34,7 +34,7 @@ release.*: release esr140: esr default: mock - publish-mode: Manual + publish-mode: Immediate tasks: thunderbird: diff -Nru thunderbird-140.8.0esr/comm/third_party/rust/cubeb-coreaudio/.cargo-checksum.json thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/.cargo-checksum.json --- thunderbird-140.8.0esr/comm/third_party/rust/cubeb-coreaudio/.cargo-checksum.json 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/.cargo-checksum.json 2026-03-20 19:19:04.000000000 +0000 @@ -1 +1 @@ -{"files":{".circleci/config.yml":"7f3dc865105ca8f33965a7958b1fe2e627ae2d5a703f3b2a4ab6e2e796018597",".editorconfig":"4e53b182bcc78b83d7e1b5c03efa14d22d4955c4ed2514d1ba4e99c1eb1a50ba",".githooks/pre-push":"8b8b26544cd56f54c0c33812551f786bb25cb08c86dbfeb6bf3daad881c826a1",".github/workflows/test.yml":"cf6ebe6d41b022897360866b526d19ba8843aa82ae99a1d28393985576b6a782",".travis.yml":"dc07bac53f70f16c9bdf52264bdc58500ae6018c1b4c567bc7642f6b4ca3cc35","Cargo.toml":"63b221c28d209afb8dfc53191b61f7ba9d3faa1591fddb5547e4c400301a8138","LICENSE":"6e6f56aff5bbf3cbc60747e152fb1a719bd0716aaf6d711c554f57d92e96297c","README.md":"0007782a05a5330f739ad789c19c82562c82e32386b0447000fc72c0d48405bc","build-audiounit-rust-in-cubeb.sh":"d228a05985dcd02ec1ecac66a2b64dae5a530804a25a7054ccc95905aedfb7ef","install_git_hook.sh":"d38c8e51e636f6b90b489621ac34ccd1d1b1f40dccce3d178ed1da1c5068f16d","install_rustfmt_clippy.sh":"4ae90d8dcb9757cb3ae4ae142ef80e5377c0dde61c63f4a3c32418646e80ca7b","run_device_tests.sh":"967448b6cd46a8e60d465d56be0b1e6794a18110592a30939d2cb0650c4e5bc6","run_sanitizers.sh":"84e93a0da137803018f37403511e8c92760be730426bf6cea34419d93d1a7ff8","run_tests.sh":"bae82f66dd47a060b6fdcc238520084aec1079d5b1b1d66d103baa1ffaa8773d","src/backend/aggregate_device.rs":"a910b9d596b1971cb4fee34f5030809ade584f41eb5cbad73a09abe7352ebd15","src/backend/auto_release.rs":"050fdcee74cf46b9a8a85a877e166d72a853d33220f59cf734cbb6ea09daa441","src/backend/buffer_manager.rs":"e9bcf964347daa8952f98caa2746e34a31ea8908375204896593f56e4b6147ca","src/backend/device_property.rs":"30ceeceee4fc1f6f872c6c61765e41d582ccd91d2d1ac3ca9b1e5ac18dd11a71","src/backend/mixer.rs":"c4d09291598cbffb2217b551770ec590f34b6dd6b461dd99b019d5bb70f0eef3","src/backend/mod.rs":"92c4a3431847282072c1b37960e3307c74716f5d96b0f316a29d0ed2ef5f6fb7","src/backend/resampler.rs":"48bf8f56ae8d60dbabca6417b768000619abee8731ac3902164b45651ac08a4d","src/backend/tests/aggregate_device.rs":"afbdf1da1fcaddcad2986bd3146bf93ca75c24b3362f5f23a09517a926290ca2","src/backend/tests/api.rs":"3b0936810b3afa84cb80428c471e1097701fd790460d00c0a5715fd8026d0a4d","src/backend/tests/backlog.rs":"3b189a7e036543c467cc242af0ed3332721179ee2b1c8847a6db563546f1ac52","src/backend/tests/device_change.rs":"bb4f7df992d915723222f62a4f995896cce861821c73351d831cb01a34cef0c4","src/backend/tests/device_property.rs":"4ef3ab625809fe95e944c19cc5dc1cc79f473520a4314d123b1f80c6b7e11411","src/backend/tests/interfaces.rs":"a96d1432afd381bf74dcbe73e892dfc4ddc68721a956606c94fd4128c6589adc","src/backend/tests/manual.rs":"f72625c05110534775c4608ccc45472ea108286657ffc1f029844a13d0b883bf","src/backend/tests/mod.rs":"8dba770023d7f9c4228f0e11915347f0e07da5fd818e3ee4478c4b197af9aa2a","src/backend/tests/parallel.rs":"a7ebd579339c40ca64c0757cc9da6baec641e670f226e1b2ec5049894700bd7a","src/backend/tests/tone.rs":"b028c67777b6453a26190b6a49785dfe28556adcbe179cb10862ce0d47ee8509","src/backend/tests/utils.rs":"9f4f486b3d59081747785dae4828ec22a4ecbab755ac4c09ff2c0c065865a358","src/backend/utils.rs":"6c3ffbcd602e6cc9f56deb9ecb07b2eef2e6f074ef924178e466f380aae5c595","src/capi.rs":"21b66b70545bf04ec719928004d1d9adb45b24ced51288f5b2993d79aaf78f5f","src/lib.rs":"be88c967e470bf6c120f3e42f7155fe89a4718f56a35524ea4c17181856757d5","todo.md":"efc1f012eb9a331a040cad4ac03aa79307f25885f71b6fb38f3ad7af8d7d515c"},"package":null} \ No newline at end of file +{"files":{".circleci/config.yml":"7f3dc865105ca8f33965a7958b1fe2e627ae2d5a703f3b2a4ab6e2e796018597",".editorconfig":"4e53b182bcc78b83d7e1b5c03efa14d22d4955c4ed2514d1ba4e99c1eb1a50ba",".githooks/pre-push":"8b8b26544cd56f54c0c33812551f786bb25cb08c86dbfeb6bf3daad881c826a1",".github/workflows/test.yml":"cf6ebe6d41b022897360866b526d19ba8843aa82ae99a1d28393985576b6a782",".travis.yml":"dc07bac53f70f16c9bdf52264bdc58500ae6018c1b4c567bc7642f6b4ca3cc35","Cargo.toml":"63b221c28d209afb8dfc53191b61f7ba9d3faa1591fddb5547e4c400301a8138","LICENSE":"6e6f56aff5bbf3cbc60747e152fb1a719bd0716aaf6d711c554f57d92e96297c","README.md":"0007782a05a5330f739ad789c19c82562c82e32386b0447000fc72c0d48405bc","build-audiounit-rust-in-cubeb.sh":"d228a05985dcd02ec1ecac66a2b64dae5a530804a25a7054ccc95905aedfb7ef","install_git_hook.sh":"d38c8e51e636f6b90b489621ac34ccd1d1b1f40dccce3d178ed1da1c5068f16d","install_rustfmt_clippy.sh":"4ae90d8dcb9757cb3ae4ae142ef80e5377c0dde61c63f4a3c32418646e80ca7b","run_device_tests.sh":"967448b6cd46a8e60d465d56be0b1e6794a18110592a30939d2cb0650c4e5bc6","run_sanitizers.sh":"84e93a0da137803018f37403511e8c92760be730426bf6cea34419d93d1a7ff8","run_tests.sh":"bae82f66dd47a060b6fdcc238520084aec1079d5b1b1d66d103baa1ffaa8773d","src/backend/aggregate_device.rs":"f408ea934a20f5a24372fdcaa3bbc113713239fdb32323de0fd6334034c25e46","src/backend/auto_release.rs":"050fdcee74cf46b9a8a85a877e166d72a853d33220f59cf734cbb6ea09daa441","src/backend/buffer_manager.rs":"e9bcf964347daa8952f98caa2746e34a31ea8908375204896593f56e4b6147ca","src/backend/device_property.rs":"30ceeceee4fc1f6f872c6c61765e41d582ccd91d2d1ac3ca9b1e5ac18dd11a71","src/backend/mixer.rs":"c4d09291598cbffb2217b551770ec590f34b6dd6b461dd99b019d5bb70f0eef3","src/backend/mod.rs":"6f38a9e3d5b8864e9f921a47fa7655d9322ecf8789a63560fb2f5fcc63076d33","src/backend/resampler.rs":"48bf8f56ae8d60dbabca6417b768000619abee8731ac3902164b45651ac08a4d","src/backend/tests/aggregate_device.rs":"afbdf1da1fcaddcad2986bd3146bf93ca75c24b3362f5f23a09517a926290ca2","src/backend/tests/api.rs":"3b0936810b3afa84cb80428c471e1097701fd790460d00c0a5715fd8026d0a4d","src/backend/tests/backlog.rs":"3b189a7e036543c467cc242af0ed3332721179ee2b1c8847a6db563546f1ac52","src/backend/tests/device_change.rs":"bb4f7df992d915723222f62a4f995896cce861821c73351d831cb01a34cef0c4","src/backend/tests/device_property.rs":"4ef3ab625809fe95e944c19cc5dc1cc79f473520a4314d123b1f80c6b7e11411","src/backend/tests/interfaces.rs":"a96d1432afd381bf74dcbe73e892dfc4ddc68721a956606c94fd4128c6589adc","src/backend/tests/manual.rs":"f72625c05110534775c4608ccc45472ea108286657ffc1f029844a13d0b883bf","src/backend/tests/mod.rs":"e388a37edd5f53cda04fe1ac8bf033e423c6604014792177c623c8456fe5d257","src/backend/tests/parallel.rs":"a7ebd579339c40ca64c0757cc9da6baec641e670f226e1b2ec5049894700bd7a","src/backend/tests/sync_callback.rs":"20e7ba57714c0d2bff3bc8d3a912f17fdab293737bc729eae1684070b90b72c4","src/backend/tests/tone.rs":"b028c67777b6453a26190b6a49785dfe28556adcbe179cb10862ce0d47ee8509","src/backend/tests/utils.rs":"9f4f486b3d59081747785dae4828ec22a4ecbab755ac4c09ff2c0c065865a358","src/backend/utils.rs":"6c3ffbcd602e6cc9f56deb9ecb07b2eef2e6f074ef924178e466f380aae5c595","src/capi.rs":"21b66b70545bf04ec719928004d1d9adb45b24ced51288f5b2993d79aaf78f5f","src/lib.rs":"be88c967e470bf6c120f3e42f7155fe89a4718f56a35524ea4c17181856757d5","todo.md":"efc1f012eb9a331a040cad4ac03aa79307f25885f71b6fb38f3ad7af8d7d515c"},"package":null} \ No newline at end of file diff -Nru thunderbird-140.8.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/aggregate_device.rs thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/aggregate_device.rs --- thunderbird-140.8.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/aggregate_device.rs 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/aggregate_device.rs 2026-03-20 19:19:04.000000000 +0000 @@ -152,9 +152,9 @@ debug_assert_running_serially(); let waiting_time = Duration::new(5, 0); - let condvar_pair = Arc::new((Mutex::new(()), Condvar::new())); - let mut cloned_condvar_pair = condvar_pair.clone(); - let data_ptr = &mut cloned_condvar_pair as *mut Arc<(Mutex<()>, Condvar)>; + let condvar_pair = Box::new((Mutex::new(()), Condvar::new())); + let data_ptr = Box::into_raw(condvar_pair); + sync_callback_registry_register(data_ptr as usize); let address = get_property_address( Property::HardwareDevices, @@ -177,12 +177,14 @@ data_ptr as *mut c_void, ); assert_eq!(status, NO_ERR); + sync_callback_registry_unregister(data_ptr as usize); + unsafe { drop(Box::from_raw(data_ptr)) }; }); let device = Self::create_blank_device(plugin_id)?; // Wait until the aggregate is created. - let (lock, cvar) = &*condvar_pair; + let (lock, cvar) = unsafe { &*data_ptr }; let guard = lock.lock().unwrap(); let (_guard, timeout_res) = cvar .wait_timeout_while(guard, waiting_time, |()| !get_devices().contains(&device)) @@ -202,10 +204,12 @@ data: *mut c_void, ) -> OSStatus { assert_eq!(id, kAudioObjectSystemObject); - let pair = unsafe { &mut *(data as *mut Arc<(Mutex<()>, Condvar)>) }; - let (lock, cvar) = &**pair; - let _guard = lock.lock().unwrap(); - cvar.notify_one(); + with_sync_callback_ptr(data, || { + let pair = unsafe { &*(data as *const (Mutex<()>, Condvar)) }; + let (lock, cvar) = pair; + let _guard = lock.lock().unwrap(); + cvar.notify_one(); + }); NO_ERR } @@ -314,9 +318,9 @@ let waiting_time = Duration::new(5, 0); - let condvar_pair = Arc::new((Mutex::new(AudioObjectID::default()), Condvar::new())); - let mut cloned_condvar_pair = condvar_pair.clone(); - let data_ptr = &mut cloned_condvar_pair as *mut Arc<(Mutex, Condvar)>; + let condvar_pair = Box::new((Mutex::new(AudioObjectID::default()), Condvar::new())); + let data_ptr = Box::into_raw(condvar_pair); + sync_callback_registry_register(data_ptr as usize); let status = audio_object_add_property_listener( device_id, @@ -325,22 +329,27 @@ data_ptr as *mut c_void, ); if status != NO_ERR { + sync_callback_registry_unregister(data_ptr as usize); + unsafe { drop(Box::from_raw(data_ptr)) }; return Err(Error::from(status)); } - let remove_listener = || -> OSStatus { - audio_object_remove_property_listener( + let cleanup = || { + let status = audio_object_remove_property_listener( device_id, &address, devices_changed_callback, data_ptr as *mut c_void, - ) + ); + sync_callback_registry_unregister(data_ptr as usize); + unsafe { drop(Box::from_raw(data_ptr)) }; + status }; Self::set_sub_devices(device_id, input_id, output_id)?; // Wait until the sub devices are added. - let (lock, cvar) = &*condvar_pair; + let (lock, cvar) = unsafe { &*data_ptr }; let device = lock.lock().unwrap(); if *device != device_id { let (dev, timeout_res) = cvar.wait_timeout(device, waiting_time).unwrap(); @@ -353,13 +362,10 @@ ); } if *dev != device_id { - let status = remove_listener(); + let status = cleanup(); // If the error is kAudioHardwareBadObjectError, it implies `device_id` is somehow // dead, so its listener should receive nothing. It's ok to leave here. assert!(status == NO_ERR || status == (kAudioHardwareBadObjectError as OSStatus)); - // TODO: Destroy the aggregate device immediately if error is not - // kAudioHardwareBadObjectError. Otherwise the `devices_changed_callback` is able - // to touch the `cloned_condvar_pair` after it's freed. return Err(Error::from(waiting_time)); } } @@ -370,15 +376,17 @@ _addresses: *const AudioObjectPropertyAddress, data: *mut c_void, ) -> OSStatus { - let pair = unsafe { &mut *(data as *mut Arc<(Mutex, Condvar)>) }; - let (lock, cvar) = &**pair; - let mut device = lock.lock().unwrap(); - *device = id; - cvar.notify_one(); + with_sync_callback_ptr(data, || { + let pair = unsafe { &*(data as *const (Mutex, Condvar)) }; + let (lock, cvar) = pair; + let mut device = lock.lock().unwrap(); + *device = id; + cvar.notify_one(); + }); NO_ERR } - let status = remove_listener(); + let status = cleanup(); assert_eq!(status, NO_ERR); Ok(()) } diff -Nru thunderbird-140.8.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/mod.rs thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/mod.rs --- thunderbird-140.8.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/mod.rs 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/mod.rs 2026-03-20 19:19:04.000000000 +0000 @@ -41,6 +41,7 @@ }; use mach::mach_time::{mach_absolute_time, mach_timebase_info}; use std::cmp; +use std::collections::HashSet; use std::ffi::{CStr, CString}; use std::fmt; use std::mem; @@ -49,7 +50,7 @@ use std::slice; use std::str::FromStr; use std::sync::atomic::{AtomicBool, AtomicU32, AtomicUsize, Ordering}; -use std::sync::{Arc, Condvar, Mutex, MutexGuard, Weak}; +use std::sync::{Arc, Condvar, LazyLock, Mutex, MutexGuard, Weak}; use std::time::{Duration, Instant}; const NO_ERR: OSStatus = 0; @@ -70,6 +71,28 @@ const MACOS_KERNEL_MAJOR_VERSION_MONTEREY: u32 = 21; +// Global registry for tracking valid sync callback pointers. +static SYNC_CALLBACK_REGISTRY: LazyLock>> = + LazyLock::new(|| Mutex::new(HashSet::new())); + +fn sync_callback_registry_register(ptr: usize) { + SYNC_CALLBACK_REGISTRY.lock().unwrap().insert(ptr); +} + +fn sync_callback_registry_unregister(ptr: usize) { + SYNC_CALLBACK_REGISTRY.lock().unwrap().remove(&ptr); +} + +fn with_sync_callback_ptr(ptr: *mut c_void, f: F) +where + F: FnOnce(), +{ + let guard = SYNC_CALLBACK_REGISTRY.lock().unwrap(); + if guard.contains(&(ptr as usize)) { + f(); + } +} + #[derive(Debug, PartialEq)] enum ParseMacOSKernelVersionError { SysCtl, @@ -1508,16 +1531,16 @@ } let waiting_time = Duration::from_millis(100); - let pair = Arc::new((Mutex::new(false), Condvar::new())); - let mut pair2 = pair.clone(); - let pair_ptr = &mut pair2; + let pair = Box::new((Mutex::new(false), Condvar::new())); + let pair_ptr = Box::into_raw(pair); + sync_callback_registry_register(pair_ptr as usize); assert_eq!( audio_unit_add_property_listener( unit, kAudioDevicePropertyBufferFrameSize, buffer_size_changed_callback, - pair_ptr, + pair_ptr as *mut c_void, ), NO_ERR ); @@ -1528,10 +1551,14 @@ unit, kAudioDevicePropertyBufferFrameSize, buffer_size_changed_callback, - pair_ptr, + pair_ptr as *mut c_void, ), NO_ERR ); + // Unregister blocks if callback is in-flight (holds registry lock) + sync_callback_registry_unregister(pair_ptr as usize); + // Safe to drop: callback has either completed or will exit early + unsafe { drop(Box::from_raw(pair_ptr)) }; }); set_buffer_size(unit, devtype, frames).map_err(|e| { @@ -1544,7 +1571,7 @@ Error::error() })?; - let (lock, cvar) = &*pair; + let (lock, cvar) = unsafe { &*pair_ptr }; let changed = lock.lock().unwrap(); if !*changed { let (chg, timeout_res) = cvar.wait_timeout(changed, waiting_time).unwrap(); @@ -1584,16 +1611,17 @@ in_element: AudioUnitElement, ) { if in_scope == 0 { - // filter out the callback for global scope. return; } - assert!(in_element == AU_IN_BUS || in_element == AU_OUT_BUS); - assert_eq!(in_property_id, kAudioDevicePropertyBufferFrameSize); - let pair = unsafe { &mut *(in_client_data as *mut Arc<(Mutex, Condvar)>) }; - let (lock, cvar) = &**pair; - let mut changed = lock.lock().unwrap(); - *changed = true; - cvar.notify_one(); + with_sync_callback_ptr(in_client_data, || { + assert!(in_element == AU_IN_BUS || in_element == AU_OUT_BUS); + assert_eq!(in_property_id, kAudioDevicePropertyBufferFrameSize); + let pair = unsafe { &*(in_client_data as *const (Mutex, Condvar)) }; + let (lock, cvar) = pair; + let mut changed = lock.lock().unwrap(); + *changed = true; + cvar.notify_one(); + }); } Ok(()) diff -Nru thunderbird-140.8.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/tests/mod.rs thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/tests/mod.rs --- thunderbird-140.8.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/tests/mod.rs 2026-02-19 21:35:33.000000000 +0000 +++ thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/tests/mod.rs 2026-03-20 19:19:04.000000000 +0000 @@ -8,5 +8,6 @@ mod interfaces; mod manual; mod parallel; +mod sync_callback; mod tone; mod utils; diff -Nru thunderbird-140.8.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/tests/sync_callback.rs thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/tests/sync_callback.rs --- thunderbird-140.8.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/tests/sync_callback.rs 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/comm/third_party/rust/cubeb-coreaudio/src/backend/tests/sync_callback.rs 2026-03-20 19:19:04.000000000 +0000 @@ -0,0 +1,136 @@ +// Copyright © 2026 Mozilla Foundation +// +// This program is made available under an ISC-style license. See the +// accompanying file LICENSE for details. + +use super::*; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::Arc; + +// Test basic registration and unregistration +#[test] +fn test_sync_callback_register_unregister() { + let dummy_data = Box::new(42u32); + let ptr = Box::into_raw(dummy_data); + let ptr_usize = ptr as usize; + + // Register the pointer + sync_callback_registry_register(ptr_usize); + + // Verify the callback is called when registered + let called = Arc::new(AtomicBool::new(false)); + let called_clone = called.clone(); + with_sync_callback_ptr(ptr as *mut c_void, || { + called_clone.store(true, Ordering::SeqCst); + }); + assert!( + called.load(Ordering::SeqCst), + "Callback should be called when pointer is registered" + ); + + // Unregister the pointer + sync_callback_registry_unregister(ptr_usize); + + // Verify the callback is NOT called after unregistration + let called2 = Arc::new(AtomicBool::new(false)); + let called2_clone = called2.clone(); + with_sync_callback_ptr(ptr as *mut c_void, || { + called2_clone.store(true, Ordering::SeqCst); + }); + assert!( + !called2.load(Ordering::SeqCst), + "Callback should NOT be called after unregistration" + ); + + // Clean up + unsafe { drop(Box::from_raw(ptr)) }; +} + +// Test that unregistered pointers don't trigger callbacks +#[test] +fn test_sync_callback_unregistered_pointer() { + let dummy_data = Box::new(100u32); + let ptr = Box::into_raw(dummy_data); + + // Try to use callback without registration + let called = Arc::new(AtomicBool::new(false)); + let called_clone = called.clone(); + with_sync_callback_ptr(ptr as *mut c_void, || { + called_clone.store(true, Ordering::SeqCst); + }); + assert!( + !called.load(Ordering::SeqCst), + "Callback should NOT be called for unregistered pointer" + ); + + // Clean up + unsafe { drop(Box::from_raw(ptr)) }; +} + +// Test multiple registrations don't cause issues +#[test] +fn test_sync_callback_multiple_pointers() { + let data1 = Box::new(1u32); + let ptr1 = Box::into_raw(data1); + let ptr1_usize = ptr1 as usize; + + let data2 = Box::new(2u32); + let ptr2 = Box::into_raw(data2); + let ptr2_usize = ptr2 as usize; + + // Register both pointers + sync_callback_registry_register(ptr1_usize); + sync_callback_registry_register(ptr2_usize); + + // Both should work + let called1 = Arc::new(AtomicBool::new(false)); + let called1_clone = called1.clone(); + with_sync_callback_ptr(ptr1 as *mut c_void, || { + called1_clone.store(true, Ordering::SeqCst); + }); + assert!( + called1.load(Ordering::SeqCst), + "First pointer callback should be called" + ); + + let called2 = Arc::new(AtomicBool::new(false)); + let called2_clone = called2.clone(); + with_sync_callback_ptr(ptr2 as *mut c_void, || { + called2_clone.store(true, Ordering::SeqCst); + }); + assert!( + called2.load(Ordering::SeqCst), + "Second pointer callback should be called" + ); + + // Unregister first pointer + sync_callback_registry_unregister(ptr1_usize); + + // First should not work, second should still work + let called1_after = Arc::new(AtomicBool::new(false)); + let called1_after_clone = called1_after.clone(); + with_sync_callback_ptr(ptr1 as *mut c_void, || { + called1_after_clone.store(true, Ordering::SeqCst); + }); + assert!( + !called1_after.load(Ordering::SeqCst), + "First pointer callback should NOT be called after unregister" + ); + + let called2_after = Arc::new(AtomicBool::new(false)); + let called2_after_clone = called2_after.clone(); + with_sync_callback_ptr(ptr2 as *mut c_void, || { + called2_after_clone.store(true, Ordering::SeqCst); + }); + assert!( + called2_after.load(Ordering::SeqCst), + "Second pointer callback should still be called" + ); + + // Clean up + sync_callback_registry_unregister(ptr2_usize); + unsafe { + drop(Box::from_raw(ptr1)); + drop(Box::from_raw(ptr2)); + }; +} diff -Nru thunderbird-140.8.0esr/config/milestone.txt thunderbird-140.9.0esr/config/milestone.txt --- thunderbird-140.8.0esr/config/milestone.txt 2026-02-19 21:35:00.000000000 +0000 +++ thunderbird-140.9.0esr/config/milestone.txt 2026-03-20 19:18:30.000000000 +0000 @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -140.8.0 +140.9.0 diff -Nru thunderbird-140.8.0esr/debian/changelog thunderbird-140.9.0esr/debian/changelog --- thunderbird-140.8.0esr/debian/changelog 2026-02-27 16:31:50.000000000 +0000 +++ thunderbird-140.9.0esr/debian/changelog 2026-03-25 09:06:02.000000000 +0000 @@ -1,3 +1,76 @@ +thunderbird (1:140.9.0esr-1~deb13u1) trixie-security; urgency=medium + + * Rebuild for trixie-security + + -- Christoph Goehre Wed, 25 Mar 2026 10:06:02 +0100 + +thunderbird (1:140.9.0esr-1) unstable; urgency=medium + + * [a5389ca] New upstream version 140.9.0esr + Fixed CVE issues in upstream version 140.9 (MFSA 2026-24): + CVE-2026-3889: Spoofing issue in Thunderbird + CVE-2026-4371: Out of bounds read in IMAP parsing + CVE-2026-4684: Race condition, use-after-free in the Graphics: WebRender + component + CVE-2026-4685: Incorrect boundary conditions in the Graphics: Canvas2D + component + CVE-2026-4686: Incorrect boundary conditions in the Graphics: Canvas2D + component + CVE-2026-4687: Sandbox escape due to incorrect boundary conditions in the + Telemetry component + CVE-2026-4688: Sandbox escape due to use-after-free in the Disability + Access APIs component + CVE-2026-4689: Sandbox escape due to incorrect boundary conditions, + integer overflow in the XPCOM component + CVE-2026-4690: Sandbox escape due to incorrect boundary conditions, + integer overflow in the XPCOM component + CVE-2026-4691: Use-after-free in the CSS Parsing and Computation component + CVE-2026-4692: Sandbox escape in the Responsive Design Mode component + CVE-2026-4693: Incorrect boundary conditions in the Audio/Video: Playback + component + CVE-2026-4694: Incorrect boundary conditions, integer overflow in the + Graphics component + CVE-2026-4695: Incorrect boundary conditions in the Audio/Video: Web + Codecs component + CVE-2026-4696: Use-after-free in the Layout: Text and Fonts component + CVE-2026-4697: Incorrect boundary conditions in the Audio/Video: Web + Codecs component + CVE-2026-4698: JIT miscompilation in the JavaScript Engine: JIT component + CVE-2026-4699: Incorrect boundary conditions in the Layout: Text and Fonts + component + CVE-2026-4700: Mitigation bypass in the Networking: HTTP component + CVE-2026-4701: Use-after-free in the JavaScript Engine component + CVE-2026-4702: JIT miscompilation in the JavaScript Engine component + CVE-2026-4704: Denial-of-service in the WebRTC: Signaling component + CVE-2026-4705: Undefined behavior in the WebRTC: Signaling component + CVE-2026-4706: Incorrect boundary conditions in the Graphics: Canvas2D + component + CVE-2026-4707: Incorrect boundary conditions in the Graphics: Canvas2D + component + CVE-2026-4708: Incorrect boundary conditions in the Graphics component + CVE-2026-4709: Incorrect boundary conditions in the Audio/Video: GMP + component + CVE-2026-4710: Incorrect boundary conditions in the Audio/Video component + CVE-2026-4711: Use-after-free in the Widget: Cocoa component + CVE-2026-4712: Information disclosure in the Widget: Cocoa component + CVE-2026-4713: Incorrect boundary conditions in the Graphics component + CVE-2026-4714: Incorrect boundary conditions in the Audio/Video component + CVE-2026-4715: Uninitialized memory in the Graphics: Canvas2D component + CVE-2026-4716: Incorrect boundary conditions, uninitialized memory in the + JavaScript Engine component + CVE-2026-4717: Privilege escalation in the Netmonitor component + CVE-2025-59375: Denial-of-service in the XML component + CVE-2026-4718: Undefined behavior in the WebRTC: Signaling component + CVE-2026-4719: Incorrect boundary conditions in the Graphics: Text + component + CVE-2026-4720: Memory safety bugs fixed in Firefox ESR 140.9, Thunderbird + ESR 140.9, Firefox 149 and Thunderbird 149 + CVE-2026-4721: Memory safety bugs fixed in Firefox ESR 115.34, Firefox ESR + 140.9, Thunderbird ESR 140.9, Firefox 149 and Thunderbird + 149 + + -- Christoph Goehre Wed, 25 Mar 2026 09:04:25 +0100 + thunderbird (1:140.8.0esr-1~deb13u1) trixie-security; urgency=medium * Rebuild for trixie-security diff -Nru thunderbird-140.8.0esr/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js thunderbird-140.9.0esr/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js --- thunderbird-140.8.0esr/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js 2026-03-20 19:18:30.000000000 +0000 @@ -746,7 +746,7 @@ }; const options = JSON.stringify(fetchOptions, null, 4); - const fetchString = `await fetch("${url}", ${options});`; + const fetchString = `await fetch(${JSON.stringify(url)}, ${options});`; return fetchString; } diff -Nru thunderbird-140.8.0esr/devtools/client/netmonitor/test/browser_net_columns_time.js thunderbird-140.9.0esr/devtools/client/netmonitor/test/browser_net_columns_time.js --- thunderbird-140.8.0esr/devtools/client/netmonitor/test/browser_net_columns_time.js 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/devtools/client/netmonitor/test/browser_net_columns_time.js 2026-03-20 19:18:30.000000000 +0000 @@ -50,10 +50,11 @@ 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 -Nru thunderbird-140.8.0esr/devtools/client/netmonitor/test/browser_net_copy_as_fetch.js thunderbird-140.9.0esr/devtools/client/netmonitor/test/browser_net_copy_as_fetch.js --- thunderbird-140.8.0esr/devtools/client/netmonitor/test/browser_net_copy_as_fetch.js 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/devtools/client/netmonitor/test/browser_net_copy_as_fetch.js 2026-03-20 19:18:31.000000000 +0000 @@ -7,7 +7,7 @@ * Tests if Copy as Fetch works. */ -add_task(async function () { +add_task(async function testBasicCopyAsFetch() { const { tab, monitor } = await initNetMonitor(HTTPS_CURL_URL, { requestCount: 1, }); @@ -15,7 +15,9 @@ // GET request, no cookies (first request) await performRequest("GET"); - await testClipboardContent(`await fetch("https://example.com/browser/devtools/client/netmonitor/test/sjs_simple-test-server.sjs", { + await testClipboardContent( + monitor, + `await fetch("https://example.com/browser/devtools/client/netmonitor/test/sjs_simple-test-server.sjs", { "credentials": "omit", "headers": { "User-Agent": "${navigator.userAgent}", @@ -33,7 +35,8 @@ "referrer": "https://example.com/browser/devtools/client/netmonitor/test/html_copy-as-curl.html", "method": "GET", "mode": "cors" -});`); +});` + ); await teardown(monitor); @@ -54,39 +57,71 @@ ); await waitRequest; } +}); - async function testClipboardContent(expectedResult) { - const { document } = monitor.panelWin; +/** + * 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... "); - 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] - ); + const waitRequest = waitForNetworkEvents(monitor, 1); + await SpecialPowers.spawn( + gBrowser.selectedBrowser, + ['data:text/html,"+alert(document.domain)+"'], + url => { + content.fetch(url); + } + ); + await waitRequest; + + 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; - 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; + 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; } - ); + 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 -Nru thunderbird-140.8.0esr/devtools/client/responsive/test/browser/browser_device_state_restore.js thunderbird-140.9.0esr/devtools/client/responsive/test/browser/browser_device_state_restore.js --- thunderbird-140.8.0esr/devtools/client/responsive/test/browser/browser_device_state_restore.js 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/devtools/client/responsive/test/browser/browser_device_state_restore.js 2026-03-20 19:18:30.000000000 +0000 @@ -10,15 +10,13 @@ /* eslint-disable max-len */ const TEST_DEVICE = { - name: "iPhone 6/7/8", - width: 375, - height: 667, - pixelRatio: 2, + name: "iPhone 17 / 17 Pro", + width: 402, + height: 874, + pixelRatio: 3, 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", + "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", touch: true, - firefoxOS: false, - os: "iOS", featured: true, }; /* eslint-enable max-len */ diff -Nru thunderbird-140.8.0esr/docshell/base/BrowsingContext.cpp thunderbird-140.9.0esr/docshell/base/BrowsingContext.cpp --- thunderbird-140.8.0esr/docshell/base/BrowsingContext.cpp 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/docshell/base/BrowsingContext.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -2786,6 +2786,11 @@ }); } +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"); diff -Nru thunderbird-140.8.0esr/docshell/base/BrowsingContext.h thunderbird-140.9.0esr/docshell/base/BrowsingContext.h --- thunderbird-140.8.0esr/docshell/base/BrowsingContext.h 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/docshell/base/BrowsingContext.h 2026-03-20 19:18:31.000000000 +0000 @@ -1136,6 +1136,7 @@ return IsTop(); } + bool CanSet(FieldIndex, const bool&, ContentParent* aSource); void DidSet(FieldIndex, bool aOldValue); MOZ_CAN_RUN_SCRIPT_BOUNDARY void DidSet(FieldIndex, bool aOldValue); diff -Nru thunderbird-140.8.0esr/dom/base/DocumentOrShadowRoot.cpp thunderbird-140.9.0esr/dom/base/DocumentOrShadowRoot.cpp --- thunderbird-140.8.0esr/dom/base/DocumentOrShadowRoot.cpp 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/base/DocumentOrShadowRoot.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -7,6 +7,7 @@ #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" @@ -112,6 +113,10 @@ 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 @@ -164,7 +169,10 @@ void DocumentOrShadowRoot::OnDeleteAdoptedStyleSheets(StyleSheet& aSheet, uint32_t aIndex, ErrorResult&) { - MOZ_ASSERT(mAdoptedStyleSheets.ElementAt(aIndex) == &aSheet); + if (MOZ_UNLIKELY(mAdoptedStyleSheets.ElementAt(aIndex) != &aSheet)) { + MOZ_ASSERT_UNREACHABLE("Out of sync proxy"); + return; + } mAdoptedStyleSheets.RemoveElementAt(aIndex); auto existingIndex = mAdoptedStyleSheets.LastIndexOf(&aSheet); if (existingIndex != mAdoptedStyleSheets.NoIndex && existingIndex >= aIndex) { diff -Nru thunderbird-140.8.0esr/dom/base/MimeType.cpp thunderbird-140.9.0esr/dom/base/MimeType.cpp --- thunderbird-140.8.0esr/dom/base/MimeType.cpp 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/base/MimeType.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -271,6 +271,7 @@ 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); @@ -278,8 +279,8 @@ nsTAutoString prevContentType; nsTAutoString prevCharset; - prevContentType.Assign(aOutEssence); - prevCharset.Assign(aOutCharset); + aOutEssence.Truncate(); + aOutCharset.Truncate(); nsTArray> mimeTypeParts = SplitMimetype(aMimeType); @@ -292,9 +293,7 @@ parsed = Parse(mimeTypeString); if (!parsed) { - aOutEssence.Truncate(); - aOutCharset.Truncate(); - return false; + continue; } parsed->GetEssence(aOutEssence); @@ -322,6 +321,10 @@ } } + if (aOutEssence.IsEmpty()) { + return false; + } + return true; } diff -Nru thunderbird-140.8.0esr/dom/base/nsContentPermissionHelper.cpp thunderbird-140.9.0esr/dom/base/nsContentPermissionHelper.cpp --- thunderbird-140.8.0esr/dom/base/nsContentPermissionHelper.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/base/nsContentPermissionHelper.cpp 2026-03-20 19:18:30.000000000 +0000 @@ -44,12 +44,15 @@ // @param aIsRequestDelegatedToUnsafeThirdParty see // mIsRequestDelegatedToUnsafeThirdParty. ContentPermissionRequestParent( - const nsTArray& aRequests, Element* aElement, - nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal, + 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; @@ -64,16 +67,13 @@ 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( - const nsTArray& aRequests, Element* aElement, - nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal, + Element* aElement, nsIPrincipal* aPrincipal, + nsIPrincipal* aTopLevelPrincipal, const bool aHasValidTransientUserGestureActivation, const bool aIsRequestDelegatedToUnsafeThirdParty) { MOZ_COUNT_CTOR(ContentPermissionRequestParent); @@ -81,7 +81,6 @@ mPrincipal = aPrincipal; mTopLevelPrincipal = aTopLevelPrincipal; mElement = aElement; - mRequests = aRequests.Clone(); mHasValidTransientUserGestureActivation = aHasValidTransientUserGestureActivation; mIsRequestDelegatedToUnsafeThirdParty = aIsRequestDelegatedToUnsafeThirdParty; @@ -91,13 +90,14 @@ MOZ_COUNT_DTOR(ContentPermissionRequestParent); } -mozilla::ipc::IPCResult ContentPermissionRequestParent::Recvprompt() { +void ContentPermissionRequestParent::Init( + nsTArray&& aRequests) { + mRequests = std::move(aRequests); 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 @@ /* static */ PContentPermissionRequestParent* nsContentPermissionUtils::CreateContentPermissionRequestParent( - const nsTArray& aRequests, Element* aElement, - nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal, + Element* aElement, nsIPrincipal* aPrincipal, + nsIPrincipal* aTopLevelPrincipal, const bool aHasValidTransientUserGestureActivation, const bool aIsRequestDelegatedToUnsafeThirdParty, const TabId& aTabId) { PContentPermissionRequestParent* parent = new ContentPermissionRequestParent( - aRequests, aElement, aPrincipal, aTopLevelPrincipal, + aElement, aPrincipal, aTopLevelPrincipal, aHasValidTransientUserGestureActivation, aIsRequestDelegatedToUnsafeThirdParty); ContentPermissionRequestParentMap()[parent] = aTabId; @@ -253,6 +253,14 @@ } /* static */ +void nsContentPermissionUtils::InitContentPermissionRequestParent( + PContentPermissionRequestParent* aActor, + nsTArray&& aRequests) { + static_cast(aActor)->Init( + std::move(aRequests)); +} + +/* static */ nsresult nsContentPermissionUtils::AskPermission( nsIContentPermissionRequest* aRequest, nsPIDOMWindowInner* aWindow) { NS_ENSURE_STATE(aWindow && aWindow->IsCurrentInnerWindow()); @@ -301,7 +309,6 @@ } ContentPermissionRequestChildMap()[req.get()] = child->GetTabId(); - req->Sendprompt(); return NS_OK; } diff -Nru thunderbird-140.8.0esr/dom/base/nsContentPermissionHelper.h thunderbird-140.9.0esr/dom/base/nsContentPermissionHelper.h --- thunderbird-140.8.0esr/dom/base/nsContentPermissionHelper.h 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/base/nsContentPermissionHelper.h 2026-03-20 19:18:30.000000000 +0000 @@ -63,11 +63,15 @@ // @param aIsRequestDelegatedToUnsafeThirdParty see // ContentPermissionRequestParent. static PContentPermissionRequestParent* CreateContentPermissionRequestParent( - const nsTArray& aRequests, Element* aElement, - nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal, + 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 -Nru thunderbird-140.8.0esr/dom/base/test/gtest/TestMimeType.cpp thunderbird-140.9.0esr/dom/base/test/gtest/TestMimeType.cpp --- thunderbird-140.8.0esr/dom/base/test/gtest/TestMimeType.cpp 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/base/test/gtest/TestMimeType.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -821,8 +821,8 @@ bool parsed = CMimeType::Parse(val, contentType, contentCharset); - ASSERT_FALSE(parsed); - ASSERT_TRUE(contentType.EqualsLiteral("")); + ASSERT_TRUE(parsed); + ASSERT_TRUE(contentType.EqualsLiteral("text/plain")); ASSERT_TRUE(contentCharset.EqualsLiteral("")); } @@ -1074,3 +1074,43 @@ 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 -Nru thunderbird-140.8.0esr/dom/bindings/BindingUtils.cpp thunderbird-140.9.0esr/dom/bindings/BindingUtils.cpp --- thunderbird-140.8.0esr/dom/bindings/BindingUtils.cpp 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/bindings/BindingUtils.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -260,39 +260,6 @@ } 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) { AssertInOwningThread(); @@ -401,34 +368,106 @@ }; template -void TErrorResult::SerializeDOMExceptionInfo( +void TErrorResult::SerializeErrorResult( IPC::MessageWriter* aWriter) const { using namespace IPC; AssertInOwningThread(); - MOZ_ASSERT(mUnionState == HasDOMExceptionInfo); - MOZ_ASSERT(mExtra.mDOMExceptionInfo); - WriteParam(aWriter, mExtra.mDOMExceptionInfo->mMessage); - WriteParam(aWriter, mExtra.mDOMExceptionInfo->mRv); + + // 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); + } } template -bool TErrorResult::DeserializeDOMExceptionInfo( +bool TErrorResult::DeserializeErrorResult( IPC::MessageReader* aReader) { using namespace IPC; AssertInOwningThread(); - nsCString message; - nsresult rv; - if (!ReadParam(aReader, &message) || !ReadParam(aReader, &rv)) { + + nsresult result; + if (!ReadParam(aReader, &result)) { return false; } - MOZ_ASSERT(mUnionState == HasNothing); - MOZ_ASSERT(IsDOMException()); - InitDOMExceptionInfo(new DOMExceptionInfo(rv, message)); + 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"); #ifdef DEBUG - mUnionState = HasDOMExceptionInfo; -#endif // DEBUG - return true; + 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; + } } template diff -Nru thunderbird-140.8.0esr/dom/bindings/ErrorIPCUtils.h thunderbird-140.9.0esr/dom/bindings/ErrorIPCUtils.h --- thunderbird-140.8.0esr/dom/bindings/ErrorIPCUtils.h 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/bindings/ErrorIPCUtils.h 2026-03-20 19:18:31.000000000 +0000 @@ -7,11 +7,8 @@ #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 { @@ -24,64 +21,18 @@ template <> struct ParamTraits { - 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, + const mozilla::ErrorResult& aParam) { + aParam.SerializeErrorResult(aWriter); } - static void Write(MessageWriter* aWriter, paramType&& aParam) { - Write(aWriter, static_cast(aParam)); + static void Write(MessageWriter* aWriter, mozilla::ErrorResult&& aParam) { + aParam.SerializeErrorResult(aWriter); aParam.SuppressException(); } - 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; + static bool Read(MessageReader* aReader, mozilla::ErrorResult* aResult) { + return aResult->DeserializeErrorResult(aReader); } }; @@ -90,14 +41,11 @@ typedef mozilla::CopyableErrorResult paramType; static void Write(MessageWriter* aWriter, const paramType& aParam) { - ParamTraits::Write(aWriter, aParam); + aParam.SerializeErrorResult(aWriter); } static bool Read(MessageReader* aReader, paramType* aResult) { - // We can't cast *aResult to ErrorResult&, so cheat and just cast - // to ErrorResult*. - return ParamTraits::Read( - aReader, reinterpret_cast(aResult)); + return aResult->DeserializeErrorResult(aReader); } }; diff -Nru thunderbird-140.8.0esr/dom/bindings/ErrorResult.h thunderbird-140.9.0esr/dom/bindings/ErrorResult.h --- thunderbird-140.8.0esr/dom/bindings/ErrorResult.h 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/bindings/ErrorResult.h 2026-03-20 19:18:31.000000000 +0000 @@ -401,7 +401,7 @@ // Check whether the TErrorResult says to just throw whatever is on // the JSContext already. - bool IsJSContextException() { + bool IsJSContextException() const { return ErrorCode() == NS_ERROR_INTERNAL_ERRORRESULT_EXCEPTION_ON_JSCONTEXT; } @@ -481,11 +481,10 @@ friend struct IPC::ParamTraits; friend struct IPC::ParamTraits; - void SerializeMessage(IPC::MessageWriter* aWriter) const; - bool DeserializeMessage(IPC::MessageReader* aReader); + friend struct IPC::ParamTraits; - void SerializeDOMExceptionInfo(IPC::MessageWriter* aWriter) const; - bool DeserializeDOMExceptionInfo(IPC::MessageReader* aReader); + void SerializeErrorResult(IPC::MessageWriter* aWriter) const; + bool DeserializeErrorResult(IPC::MessageReader* aReader); // Helper method that creates a new Message for this TErrorResult, // and returns the arguments array from that Message. diff -Nru thunderbird-140.8.0esr/dom/bindings/ObservableArrayProxyHandler.cpp thunderbird-140.9.0esr/dom/bindings/ObservableArrayProxyHandler.cpp --- thunderbird-140.8.0esr/dom/bindings/ObservableArrayProxyHandler.cpp 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/bindings/ObservableArrayProxyHandler.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -277,6 +277,9 @@ 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 -Nru thunderbird-140.8.0esr/dom/canvas/TexUnpackBlob.cpp thunderbird-140.9.0esr/dom/canvas/TexUnpackBlob.cpp --- thunderbird-140.8.0esr/dom/canvas/TexUnpackBlob.cpp 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/canvas/TexUnpackBlob.cpp 2026-03-20 19:18:30.000000000 +0000 @@ -1110,10 +1110,6 @@ //// const auto surfSize = surf->GetSize(); - if (uint32_t(surfSize.width) < size.x || uint32_t(surfSize.height) < size.y) { - gfxCriticalError() << "Source surface size too small for upload."; - return false; - } WebGLTexelFormat srcFormat; uint8_t srcBPP; @@ -1165,6 +1161,12 @@ 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; diff -Nru thunderbird-140.8.0esr/dom/events/GlobalKeyListener.cpp thunderbird-140.9.0esr/dom/events/GlobalKeyListener.cpp --- thunderbird-140.8.0esr/dom/events/GlobalKeyListener.cpp 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/events/GlobalKeyListener.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -418,6 +418,11 @@ 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 -Nru thunderbird-140.8.0esr/dom/indexedDB/ActorsParent.cpp thunderbird-140.9.0esr/dom/indexedDB/ActorsParent.cpp --- thunderbird-140.8.0esr/dom/indexedDB/ActorsParent.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/indexedDB/ActorsParent.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -18723,6 +18723,14 @@ 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()); diff -Nru thunderbird-140.8.0esr/dom/ipc/BrowserBridgeParent.cpp thunderbird-140.9.0esr/dom/ipc/BrowserBridgeParent.cpp --- thunderbird-140.8.0esr/dom/ipc/BrowserBridgeParent.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/ipc/BrowserBridgeParent.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -280,10 +280,13 @@ # if defined(ANDROID) MonitorAutoLock mal(nsAccessibilityService::GetAndroidMonitor()); # endif - 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) { + 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 && mEmbedderAccessibleDoc && !mEmbedderAccessibleDoc->IsShutdown()) { // We're clearing the embedder doc, so remove the pending child doc addition @@ -293,14 +296,22 @@ mEmbedderAccessibleDoc = static_cast(aDoc); mEmbedderAccessibleID = aID; if (!aDoc) { - MOZ_ASSERT(!aID); + if (aID) { + return IPC_FAIL(this, "Attempt to clear embedder but id given"); + } return IPC_OK(); } - MOZ_ASSERT(aID); + if (!aID) { + return IPC_FAIL(this, "Attempt to set embedder without id"); + } 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 is reflowed by layout. + // 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. mEmbedderAccessibleDoc->AddChildDoc(this); } return IPC_OK(); diff -Nru thunderbird-140.8.0esr/dom/ipc/BrowserChild.cpp thunderbird-140.9.0esr/dom/ipc/BrowserChild.cpp --- thunderbird-140.8.0esr/dom/ipc/BrowserChild.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/ipc/BrowserChild.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -2440,6 +2440,10 @@ // 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 -Nru thunderbird-140.8.0esr/dom/ipc/BrowserParent.cpp thunderbird-140.9.0esr/dom/ipc/BrowserParent.cpp --- thunderbird-140.8.0esr/dom/ipc/BrowserParent.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/ipc/BrowserParent.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -1291,6 +1291,14 @@ 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()); } @@ -1325,13 +1333,6 @@ 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 @@ -2782,7 +2783,10 @@ 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)) { + 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())) { // Got different event data from what we stored before dispatching an // event with the ID. return Nothing(); @@ -3909,13 +3913,18 @@ cookieJarSettings, aSourceWindowContext.GetMaybeDiscarded(), aSourceTopWindowContext.GetMaybeDiscarded()); - if (aVisualDnDData) { - const auto checkedSize = CheckedInt(aDragRect.height) * aStride; - if (checkedSize.isValid() && - aVisualDnDData->Size() >= checkedSize.value()) { + 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()) { dragStartData->SetVisualization(gfx::CreateDataSourceSurfaceFromData( gfx::IntSize(aDragRect.width, aDragRect.height), aFormat, - aVisualDnDData->Data(), aStride)); + aVisualDnDData->Data(), checkedStride.value())); } } diff -Nru thunderbird-140.8.0esr/dom/ipc/ContentParent.cpp thunderbird-140.9.0esr/dom/ipc/ContentParent.cpp --- thunderbird-140.8.0esr/dom/ipc/ContentParent.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/ipc/ContentParent.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -5130,8 +5130,18 @@ topPrincipal = principal; } return nsContentPermissionUtils::CreateContentPermissionRequestParent( - aRequests, tp->GetOwnerElement(), aPrincipal, topPrincipal, - aIsHandlingUserInput, aMaybeUnsafePermissionDelegate, aTabId); + 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(); } bool ContentParent::DeallocPContentPermissionRequestParent( diff -Nru thunderbird-140.8.0esr/dom/ipc/ContentParent.h thunderbird-140.9.0esr/dom/ipc/ContentParent.h --- thunderbird-140.8.0esr/dom/ipc/ContentParent.h 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/ipc/ContentParent.h 2026-03-20 19:18:32.000000000 +0000 @@ -538,6 +538,12 @@ 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 -Nru thunderbird-140.8.0esr/dom/ipc/PContentPermissionRequest.ipdl thunderbird-140.9.0esr/dom/ipc/PContentPermissionRequest.ipdl --- thunderbird-140.8.0esr/dom/ipc/PContentPermissionRequest.ipdl 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/ipc/PContentPermissionRequest.ipdl 2026-03-20 19:18:32.000000000 +0000 @@ -16,7 +16,6 @@ manager PContent; parent: - async prompt(); async Destroy(); child: diff -Nru thunderbird-140.8.0esr/dom/localstorage/ActorsParent.cpp thunderbird-140.9.0esr/dom/localstorage/ActorsParent.cpp --- thunderbird-140.8.0esr/dom/localstorage/ActorsParent.cpp 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/localstorage/ActorsParent.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -6595,6 +6595,12 @@ 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 -Nru thunderbird-140.8.0esr/dom/media/MediaData.cpp thunderbird-140.9.0esr/dom/media/MediaData.cpp --- thunderbird-140.8.0esr/dom/media/MediaData.cpp 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/MediaData.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -10,6 +10,7 @@ #include "MediaInfo.h" #include "MediaResult.h" #include "PerformanceRecorder.h" +#include "PlatformDecoderModule.h" #include "VideoUtils.h" #include "YCbCrUtils.h" #include "mozilla/gfx/gfxVars.h" @@ -28,8 +29,12 @@ # 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; @@ -186,6 +191,19 @@ 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 || @@ -193,7 +211,6 @@ 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"); @@ -203,7 +220,12 @@ !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); @@ -291,6 +313,7 @@ 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); @@ -409,6 +432,22 @@ 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)); @@ -635,3 +674,4 @@ } } // namespace mozilla +#undef LOG diff -Nru thunderbird-140.8.0esr/dom/media/gmp/GMPLoader.cpp thunderbird-140.9.0esr/dom/media/gmp/GMPLoader.cpp --- thunderbird-140.8.0esr/dom/media/gmp/GMPLoader.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp/GMPLoader.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -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 "mozilla/sandboxing/SandboxInitialization.h" -# include "mozilla/sandboxing/sandboxLogging.h" +# include "nsWindowsHelpers.h" #endif #if defined(XP_LINUX) && defined(MOZ_SANDBOX) # include "mozilla/Sandbox.h" @@ -83,18 +83,107 @@ 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 @@ -111,6 +200,20 @@ 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 -Nru thunderbird-140.8.0esr/dom/media/gmp/GMPSharedMemManager.h thunderbird-140.9.0esr/dom/media/gmp/GMPSharedMemManager.h --- thunderbird-140.8.0esr/dom/media/gmp/GMPSharedMemManager.h 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp/GMPSharedMemManager.h 2026-03-20 19:18:32.000000000 +0000 @@ -11,6 +11,8 @@ namespace mozilla::gmp { +class GMPVideoi420FrameImpl; + enum class GMPSharedMemClass { Decoded, Encoded }; class GMPSharedMemManager { @@ -27,6 +29,8 @@ 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; diff -Nru thunderbird-140.8.0esr/dom/media/gmp/GMPVideoEncoderChild.cpp thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderChild.cpp --- thunderbird-140.8.0esr/dom/media/gmp/GMPVideoEncoderChild.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderChild.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -10,7 +10,6 @@ #include "mozilla/Unused.h" #include "GMPPlatform.h" #include "GMPVideoEncodedFrameImpl.h" -#include "GMPVideoi420FrameImpl.h" #include "runnable_utils.h" namespace mozilla::gmp { @@ -67,9 +66,26 @@ 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; @@ -116,8 +132,10 @@ 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), - &mVideoHost); + &mVideoHost, HostReportPolicy::Destroyed); // Ignore any return code. It is OK for this to fail without killing the // process. diff -Nru thunderbird-140.8.0esr/dom/media/gmp/GMPVideoEncoderChild.h thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderChild.h --- thunderbird-140.8.0esr/dom/media/gmp/GMPVideoEncoderChild.h 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderChild.h 2026-03-20 19:18:32.000000000 +0000 @@ -10,6 +10,7 @@ #include "mozilla/gmp/PGMPVideoEncoderChild.h" #include "gmp-video-encode.h" #include "GMPSharedMemManager.h" +#include "GMPVideoi420FrameImpl.h" #include "GMPVideoHost.h" namespace mozilla::gmp { @@ -39,6 +40,7 @@ // GMPSharedMemManager void MgrDeallocShmem(Shmem& aMem) override { DeallocShmem(aMem); } + void MgrDecodedFrameDestroyed(GMPVideoi420FrameImpl* aFrame) override; protected: bool MgrIsOnOwningThread() const override; @@ -66,6 +68,7 @@ GMPContentChild* mPlugin; GMPVideoEncoder* mVideoEncoder; GMPVideoHostImpl mVideoHost; + uint64_t mLatestEncodedTimestamp = 0; }; } // namespace mozilla::gmp diff -Nru thunderbird-140.8.0esr/dom/media/gmp/GMPVideoEncoderParent.cpp thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderParent.cpp --- thunderbird-140.8.0esr/dom/media/gmp/GMPVideoEncoderParent.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderParent.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -271,6 +271,14 @@ 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 -Nru thunderbird-140.8.0esr/dom/media/gmp/GMPVideoEncoderParent.h thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderParent.h --- thunderbird-140.8.0esr/dom/media/gmp/GMPVideoEncoderParent.h 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderParent.h 2026-03-20 19:18:31.000000000 +0000 @@ -73,6 +73,7 @@ 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; diff -Nru thunderbird-140.8.0esr/dom/media/gmp/GMPVideoEncoderProxy.h thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderProxy.h --- thunderbird-140.8.0esr/dom/media/gmp/GMPVideoEncoderProxy.h 2026-02-19 21:35:01.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp/GMPVideoEncoderProxy.h 2026-03-20 19:18:31.000000000 +0000 @@ -19,6 +19,7 @@ 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 -Nru thunderbird-140.8.0esr/dom/media/gmp/GMPVideoHost.cpp thunderbird-140.9.0esr/dom/media/gmp/GMPVideoHost.cpp --- thunderbird-140.8.0esr/dom/media/gmp/GMPVideoHost.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp/GMPVideoHost.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -93,6 +93,9 @@ void GMPVideoHostImpl::DecodedFrameDestroyed(GMPVideoi420FrameImpl* aFrame) { MOZ_ALWAYS_TRUE(mDecodedFrames.RemoveElement(aFrame)); + if (mSharedMemMgr && aFrame->mReportPolicy == HostReportPolicy::Destroyed) { + mSharedMemMgr->MgrDecodedFrameDestroyed(aFrame); + } } } // namespace mozilla::gmp diff -Nru thunderbird-140.8.0esr/dom/media/gmp/GMPVideoi420FrameImpl.cpp thunderbird-140.9.0esr/dom/media/gmp/GMPVideoi420FrameImpl.cpp --- thunderbird-140.8.0esr/dom/media/gmp/GMPVideoi420FrameImpl.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp/GMPVideoi420FrameImpl.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -38,16 +38,25 @@ } } -GMPVideoi420FrameImpl::GMPVideoi420FrameImpl(GMPVideoHostImpl* aHost) - : mHost(aHost), mWidth(0), mHeight(0), mTimestamp(0ll), mDuration(0ll) { +GMPVideoi420FrameImpl::GMPVideoi420FrameImpl( + GMPVideoHostImpl* aHost, + HostReportPolicy aReportPolicy /*= HostReportPolicy::None*/) + : mReportPolicy(aReportPolicy), + 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) - : mHost(aHost), + GMPVideoHostImpl* aHost, + HostReportPolicy aReportPolicy /*= HostReportPolicy::None*/) + : mReportPolicy(aReportPolicy), + mHost(aHost), mShmemBuffer(std::move(aShmemBuffer)), mYPlane(aFrameData.mYPlane()), mUPlane(aFrameData.mUPlane()), @@ -63,8 +72,10 @@ GMPVideoi420FrameImpl::GMPVideoi420FrameImpl( const GMPVideoi420FrameData& aFrameData, nsTArray&& aArrayBuffer, - GMPVideoHostImpl* aHost) - : mHost(aHost), + GMPVideoHostImpl* aHost, + HostReportPolicy aReportPolicy /*= HostReportPolicy::None*/) + : mReportPolicy(aReportPolicy), + mHost(aHost), mArrayBuffer(std::move(aArrayBuffer)), mYPlane(aFrameData.mYPlane()), mUPlane(aFrameData.mUPlane()), @@ -146,30 +157,76 @@ // if so. Note: Size() greater than expected is also an error, but with no // negative consequences 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) || - (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.mVPlane().mSize() <= 0)) { + return false; + } + + // Check stride requirements (must be at least as wide as the data) + if ((aFrameData.mYPlane().mStride() < aFrameData.mWidth()) || (aFrameData.mUPlane().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))) { + (aFrameData.mVPlane().mStride() < half_width)) { + 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; } diff -Nru thunderbird-140.8.0esr/dom/media/gmp/GMPVideoi420FrameImpl.h thunderbird-140.9.0esr/dom/media/gmp/GMPVideoi420FrameImpl.h --- thunderbird-140.8.0esr/dom/media/gmp/GMPVideoi420FrameImpl.h 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp/GMPVideoi420FrameImpl.h 2026-03-20 19:18:31.000000000 +0000 @@ -17,14 +17,24 @@ class GMPVideoi420FrameData; class GMPVideoHostImpl; -class GMPVideoi420FrameImpl final : public GMPVideoi420Frame { +enum class HostReportPolicy : uint8_t { + None, + Destroyed, +}; + +class GMPVideoi420FrameImpl : public GMPVideoi420Frame { public: - explicit GMPVideoi420FrameImpl(GMPVideoHostImpl* aHost); - GMPVideoi420FrameImpl(const GMPVideoi420FrameData& aFrameData, - ipc::Shmem&& aShmemBuffer, GMPVideoHostImpl* aHost); - GMPVideoi420FrameImpl(const GMPVideoi420FrameData& aFrameData, - nsTArray&& aArrayBuffer, - GMPVideoHostImpl* aHost); + 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); virtual ~GMPVideoi420FrameImpl(); // This is called during a normal destroy sequence, which is @@ -75,7 +85,7 @@ const uint8_t* Buffer() const; int32_t AllocatedSize() const; - private: + protected: struct GMPFramePlane { explicit GMPFramePlane(const GMPPlaneData& aPlaneData); GMPFramePlane() = default; @@ -98,6 +108,10 @@ GMPErr MaybeResize(int32_t aNewSize); void DestroyBuffer(); + public: + const HostReportPolicy mReportPolicy; + + protected: GMPVideoHostImpl* mHost; nsTArray mArrayBuffer; ipc::Shmem mShmemBuffer; diff -Nru thunderbird-140.8.0esr/dom/media/gmp/PGMPVideoEncoder.ipdl thunderbird-140.9.0esr/dom/media/gmp/PGMPVideoEncoder.ipdl --- thunderbird-140.8.0esr/dom/media/gmp/PGMPVideoEncoder.ipdl 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp/PGMPVideoEncoder.ipdl 2026-03-20 19:18:31.000000000 +0000 @@ -43,6 +43,7 @@ async EncodedData(GMPVideoEncodedFrameData aEncodedFrame, uint8_t[] aEncodedData, uint8_t[] aCodecSpecificInfo); + async DroppedFrame(uint64_t aTimestamp); async Error(GMPErr aErr); async Shutdown(); }; diff -Nru thunderbird-140.8.0esr/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp thunderbird-140.9.0esr/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp --- thunderbird-140.8.0esr/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -129,6 +129,10 @@ 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; @@ -146,6 +150,18 @@ 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. @@ -201,7 +217,7 @@ 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() @@ -271,6 +287,8 @@ 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; }; diff -Nru thunderbird-140.8.0esr/dom/media/gtest/TestWebrtcGmpCodec.cpp thunderbird-140.9.0esr/dom/media/gtest/TestWebrtcGmpCodec.cpp --- thunderbird-140.8.0esr/dom/media/gtest/TestWebrtcGmpCodec.cpp 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gtest/TestWebrtcGmpCodec.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -0,0 +1,279 @@ +/* -*- 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 -Nru thunderbird-140.8.0esr/dom/media/gtest/moz.build thunderbird-140.9.0esr/dom/media/gtest/moz.build --- thunderbird-140.8.0esr/dom/media/gtest/moz.build 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/gtest/moz.build 2026-03-20 19:18:31.000000000 +0000 @@ -92,6 +92,7 @@ "TestAudioDeviceEnumerator.cpp", "TestPacer.cpp", "TestVideoFrameConverter.cpp", + "TestWebrtcGmpCodec.cpp", ] TEST_HARNESS_FILES.gtest += [ diff -Nru thunderbird-140.8.0esr/dom/media/platforms/agnostic/VPXDecoder.cpp thunderbird-140.9.0esr/dom/media/platforms/agnostic/VPXDecoder.cpp --- thunderbird-140.8.0esr/dom/media/platforms/agnostic/VPXDecoder.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/platforms/agnostic/VPXDecoder.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -187,13 +187,17 @@ 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 -Nru thunderbird-140.8.0esr/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.cpp thunderbird-140.9.0esr/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.cpp --- thunderbird-140.8.0esr/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -427,6 +427,24 @@ } } +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 -Nru thunderbird-140.8.0esr/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.h thunderbird-140.9.0esr/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.h --- thunderbird-140.8.0esr/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.h 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.h 2026-03-20 19:18:31.000000000 +0000 @@ -38,6 +38,7 @@ void Encoded(GMPVideoEncodedFrame* aEncodedFrame, const nsTArray& aCodecSpecificInfo) override; + void Dropped(uint64_t aTimestamp) override; void Error(GMPErr aError) override; void Terminated() override; diff -Nru thunderbird-140.8.0esr/dom/media/webcodecs/AudioData.cpp thunderbird-140.9.0esr/dom/media/webcodecs/AudioData.cpp --- thunderbird-140.8.0esr/dom/media/webcodecs/AudioData.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/webcodecs/AudioData.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -568,7 +568,7 @@ uint32_t bytesPerSample = BytesPerSamples(destFormat.value()); CheckedInt copyLength = bytesPerSample; copyLength *= copyElementCount; - if (copyLength.value() > destLength) { + if (!copyLength.isValid() || copyLength.value() > destLength) { auto msg = nsFmtCString(FMT_STRING("destination buffer of length {} too " "small for copying {} elements"), destLength, bytesPerSample * copyElementCount); diff -Nru thunderbird-140.8.0esr/dom/media/webrtc/jsep/JsepSessionImpl.cpp thunderbird-140.9.0esr/dom/media/webrtc/jsep/JsepSessionImpl.cpp --- thunderbird-140.8.0esr/dom/media/webrtc/jsep/JsepSessionImpl.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/webrtc/jsep/JsepSessionImpl.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -1905,17 +1905,17 @@ 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 -Nru thunderbird-140.8.0esr/dom/media/webrtc/jsep/JsepTrack.cpp thunderbird-140.9.0esr/dom/media/webrtc/jsep/JsepTrack.cpp --- thunderbird-140.8.0esr/dom/media/webrtc/jsep/JsepTrack.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/webrtc/jsep/JsepTrack.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -5,10 +5,14 @@ #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) { @@ -32,6 +36,8 @@ 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; } @@ -52,12 +58,45 @@ 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; - MOZ_ASSERT(mSsrcs.size() == mSsrcToRtxSsrc.size()); + if (mSsrcs.size() != mSsrcToRtxSsrc.size()) { + MOZ_MTLOG(ML_ERROR, + "[" << mTrackId + << "]: mSsrcToRtxSsrc has different size than mSsrcs."); + MOZ_ASSERT(false); + mSsrcs.clear(); + mSsrcToRtxSsrc.clear(); + } + } +} + +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( @@ -117,7 +156,10 @@ } void JsepTrack::SetRids(const std::vector& aRids) { - MOZ_ASSERT(!aRids.empty()); + if (!aRids.size()) { + MOZ_MTLOG(ML_ERROR, "cannot set empty rids"); + return; + } if (!mRids.empty()) { return; } @@ -134,9 +176,17 @@ void JsepTrack::RecvTrackSetRemote(const Sdp& aSdp, const SdpMediaSection& aMsection) { mInHaveRemote = true; - MOZ_ASSERT(mDirection == sdp::kRecv); - MOZ_ASSERT(aMsection.GetMediaType() != - SdpMediaSection::MediaType::kApplication); + 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; + } std::string error; SdpHelper helper(&error); @@ -187,7 +237,11 @@ } void JsepTrack::RecvTrackSetLocal(const SdpMediaSection& aMsection) { - MOZ_ASSERT(mDirection == sdp::kRecv); + if (mDirection != sdp::kRecv) { + MOZ_MTLOG(ML_ERROR, "RecvTrackSetLocal called on non-receive track"); + MOZ_ASSERT(false); + return; + } // 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. @@ -259,9 +313,16 @@ void JsepTrack::AddToMsection( const std::vector>& codecs, SdpMediaSection* msection) const { - MOZ_ASSERT(msection->GetMediaType() == mType); - MOZ_ASSERT(!codecs.empty()); - + 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; + } for (const auto& codec : codecs) { codec->AddToMediaSection(*msection); } @@ -279,8 +340,16 @@ } void JsepTrack::UpdateSsrcs(SsrcGenerator& ssrcGenerator, size_t encodings) { - MOZ_ASSERT(mDirection == sdp::kSend); - MOZ_ASSERT(mType != SdpMediaSection::kApplication); + 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; + } size_t numSsrcs = std::max(encodings, 1U); EnsureSsrcs(ssrcGenerator, numSsrcs); @@ -288,8 +357,10 @@ if (mNegotiatedDetails && mNegotiatedDetails->GetEncodingCount() > numSsrcs) { mNegotiatedDetails->TruncateEncodings(numSsrcs); } - - MOZ_ASSERT(!mSsrcs.empty()); + if (mSsrcs.empty()) { + MOZ_MTLOG(ML_ERROR, "UpdateSsrcs resulted in empty mSsrcs"); + MOZ_ASSERT(false); + } } void JsepTrack::PruneSsrcs(size_t aNumSsrcs) { @@ -352,7 +423,12 @@ UpdateSsrcs(ssrcGenerator, aRids.size()); if (requireRtxSsrcs) { - MOZ_ASSERT(mSsrcs.size() == mSsrcToRtxSsrc.size()); + if (mSsrcs.size() != mSsrcToRtxSsrc.size()) { + MOZ_MTLOG(ML_ERROR, + "[" << mTrackId + << "]: mSsrcToRtxSsrc has different size than mSsrcs."); + return; + } std::vector allSsrcs; UniquePtr group(new SdpSsrcGroupAttributeList); for (const auto& ssrc : mSsrcs) { diff -Nru thunderbird-140.8.0esr/dom/media/webrtc/jsep/JsepTrack.h thunderbird-140.9.0esr/dom/media/webrtc/jsep/JsepTrack.h --- thunderbird-140.8.0esr/dom/media/webrtc/jsep/JsepTrack.h 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/webrtc/jsep/JsepTrack.h 2026-03-20 19:18:32.000000000 +0000 @@ -166,20 +166,7 @@ virtual const std::vector& GetSsrcs() const { return mSsrcs; } - 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 std::vector GetRtxSsrcs() const; virtual void EnsureSsrcs(SsrcGenerator& ssrcGenerator, size_t aNumber); diff -Nru thunderbird-140.8.0esr/dom/media/webrtc/jsep/moz.build thunderbird-140.9.0esr/dom/media/webrtc/jsep/moz.build --- thunderbird-140.8.0esr/dom/media/webrtc/jsep/moz.build 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/webrtc/jsep/moz.build 2026-03-20 19:18:32.000000000 +0000 @@ -13,6 +13,9 @@ "/third_party/sipcc", ] -UNIFIED_SOURCES += ["JsepSessionImpl.cpp", "JsepTrack.cpp", "SsrcGenerator.cpp"] +UNIFIED_SOURCES += ["JsepSessionImpl.cpp", "SsrcGenerator.cpp"] + +# Can not be built in unified build because of MOZ_MTLOG +SOURCES += ["JsepTrack.cpp"] FINAL_LIBRARY = "xul" diff -Nru thunderbird-140.8.0esr/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp thunderbird-140.9.0esr/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp --- thunderbird-140.8.0esr/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -257,6 +257,7 @@ mGMP = nullptr; mHost = nullptr; mInitting = false; + mInputImageMap.Clear(); if (mCachedPluginId) { mReleasePluginEvent.Notify(*mCachedPluginId); @@ -340,6 +341,14 @@ 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"); @@ -347,6 +356,13 @@ } 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", @@ -387,7 +403,9 @@ GMP_LOG_DEBUG("GMP Encode: failed to create frame"); return; } - frame->SetTimestamp(AssertedCast(aInputImage.ntp_time_ms() * 1000)); + const auto gmpTimestamp = + AssertedCast(aInputImage.ntp_time_ms() * 1000); + frame->SetTimestamp(gmpTimestamp); GMPCodecSpecificInfo info{}; info.mCodecType = kGMPVideoCodecH264; @@ -421,18 +439,23 @@ 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( @@ -517,6 +540,7 @@ mGMP = nullptr; mHost = nullptr; mInitting = false; + mInputImageMap.Clear(); if (gmp) { // Do this last, since this could cause us to be destroyed @@ -526,20 +550,23 @@ // 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; - 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; - }; + MOZ_ASSERT(!mInputImageMap.IsEmpty()); + MOZ_ASSERT(mInputImageMap.Length() <= kMaxImagesInFlight); size_t nextIdx = mInputImageMap.IndexOfFirstElementGt( InputImageData{.gmp_timestamp_us = aEncodedFrame->TimeStamp()}, - gmp_timestamp_comparator); + GmpTimestampComparator); const size_t numToRemove = nextIdx; size_t numFramesDropped = numToRemove; MOZ_ASSERT(nextIdx != 0); @@ -676,6 +703,34 @@ 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) diff -Nru thunderbird-140.8.0esr/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h thunderbird-140.9.0esr/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h --- thunderbird-140.8.0esr/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h 2026-03-20 19:18:32.000000000 +0000 @@ -204,6 +204,8 @@ void Encoded(GMPVideoEncodedFrame* aEncodedFrame, const nsTArray& aCodecSpecificInfo) override; + void Dropped(uint64_t aTimestamp) override; + void Error(GMPErr aError) override {} private: diff -Nru thunderbird-140.8.0esr/dom/media/webrtc/transport/mediapacket.cpp thunderbird-140.9.0esr/dom/media/webrtc/transport/mediapacket.cpp --- thunderbird-140.8.0esr/dom/media/webrtc/transport/mediapacket.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/webrtc/transport/mediapacket.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -8,7 +8,17 @@ #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 { @@ -31,66 +41,52 @@ } void MediaPacket::Serialize(IPC::MessageWriter* aWriter) const { - aWriter->WriteUInt32(len_); - aWriter->WriteUInt32(capacity_); + WriteParam(aWriter, len_); + WriteParam(aWriter, capacity_); + WriteParam(aWriter, encrypted_len_); + WriteParam(aWriter, sdp_level_); + WriteParam(aWriter, type_); + 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(); - uint32_t len; - if (!aReader->ReadUInt32(&len)) { - return false; - } - uint32_t capacity; - if (!aReader->ReadUInt32(&capacity)) { + if (!ReadParam(aReader, &len_) || !ReadParam(aReader, &capacity_) || + !ReadParam(aReader, &encrypted_len_) || + !ReadParam(aReader, &sdp_level_) || !ReadParam(aReader, &type_)) { return false; } - 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)) { + if (capacity_ < 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)) { + // Kinda arbitrary, but we want some sort of ceiling here. + if ((capacity_ > 1024 * 1024) || (encrypted_len_ > 1024 * 1024)) { return false; } - if (sdp_level >= 0) { - sdp_level_ = Some(sdp_level); + if (capacity_) { + data_.reset(new uint8_t[capacity_]); + if (len_) { + if (!aReader->ReadBytesInto(data_.get(), len_)) { + return false; + } + } } - int32_t type; - if (!aReader->ReadInt32(&type)) { - return false; + if (encrypted_len_) { + encrypted_data_.reset(new uint8_t[encrypted_len_]); + if (!aReader->ReadBytesInto(encrypted_data_.get(), encrypted_len_)) { + return false; + } } - type_ = static_cast(type); return true; } diff -Nru thunderbird-140.8.0esr/dom/media/webrtc/transport/nricestunaddr.cpp thunderbird-140.9.0esr/dom/media/webrtc/transport/nricestunaddr.cpp --- thunderbird-140.8.0esr/dom/media/webrtc/transport/nricestunaddr.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/dom/media/webrtc/transport/nricestunaddr.cpp 2026-03-20 19:18:31.000000000 +0000 @@ -75,6 +75,19 @@ 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 -Nru thunderbird-140.8.0esr/dom/workers/remoteworkers/RemoteWorkerController.cpp thunderbird-140.9.0esr/dom/workers/remoteworkers/RemoteWorkerController.cpp --- thunderbird-140.8.0esr/dom/workers/remoteworkers/RemoteWorkerController.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/dom/workers/remoteworkers/RemoteWorkerController.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -334,6 +334,10 @@ AssertIsOnBackgroundThread(); MOZ_ASSERT(mObserver); + if (!mIsServiceWorker) { + return GenericPromise::CreateAndResolve(false, __func__); + } + RefPtr promise = new GenericPromise::Private(__func__); diff -Nru thunderbird-140.8.0esr/gfx/2d/FilterNodeSoftware.cpp thunderbird-140.9.0esr/gfx/2d/FilterNodeSoftware.cpp --- thunderbird-140.8.0esr/gfx/2d/FilterNodeSoftware.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/2d/FilterNodeSoftware.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -1765,12 +1765,10 @@ void FilterNodeComponentTransferSoftware::GenerateLookupTable( ptrdiff_t aComponent, uint8_t aTables[4][256], bool aDisabled) { - if (aDisabled) { + if (aDisabled || !FillLookupTable(aComponent, aTables[aComponent])) { for (int32_t i = 0; i < 256; ++i) { aTables[aComponent][i] = i; } - } else { - FillLookupTable(aComponent, aTables[aComponent]); } } @@ -1927,32 +1925,29 @@ Invalidate(); } -void FilterNodeTableTransferSoftware::FillLookupTable(ptrdiff_t aComponent, +bool FilterNodeTableTransferSoftware::FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) { switch (aComponent) { case B8G8R8A8_COMPONENT_BYTEOFFSET_R: - FillLookupTableImpl(mTableR, aTable); + return FillLookupTableImpl(mTableR, aTable); break; case B8G8R8A8_COMPONENT_BYTEOFFSET_G: - FillLookupTableImpl(mTableG, aTable); - break; + return FillLookupTableImpl(mTableG, aTable); case B8G8R8A8_COMPONENT_BYTEOFFSET_B: - FillLookupTableImpl(mTableB, aTable); - break; + return FillLookupTableImpl(mTableB, aTable); case B8G8R8A8_COMPONENT_BYTEOFFSET_A: - FillLookupTableImpl(mTableA, aTable); - break; + return FillLookupTableImpl(mTableA, aTable); default: MOZ_ASSERT(false, "unknown component"); - break; + return false; } } -void FilterNodeTableTransferSoftware::FillLookupTableImpl( +bool FilterNodeTableTransferSoftware::FillLookupTableImpl( std::vector& aTableValues, uint8_t aTable[256]) { uint32_t tvLength = aTableValues.size(); - if (tvLength < 2) { - return; + if (tvLength < 1) { + return false; } for (size_t i = 0; i < 256; i++) { @@ -1965,6 +1960,7 @@ val = std::max(0, val); aTable[i] = val; } + return true; } void FilterNodeDiscreteTransferSoftware::SetAttribute(uint32_t aIndex, @@ -1990,32 +1986,28 @@ Invalidate(); } -void FilterNodeDiscreteTransferSoftware::FillLookupTable(ptrdiff_t aComponent, +bool FilterNodeDiscreteTransferSoftware::FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) { switch (aComponent) { case B8G8R8A8_COMPONENT_BYTEOFFSET_R: - FillLookupTableImpl(mTableR, aTable); - break; + return FillLookupTableImpl(mTableR, aTable); case B8G8R8A8_COMPONENT_BYTEOFFSET_G: - FillLookupTableImpl(mTableG, aTable); - break; + return FillLookupTableImpl(mTableG, aTable); case B8G8R8A8_COMPONENT_BYTEOFFSET_B: - FillLookupTableImpl(mTableB, aTable); - break; + return FillLookupTableImpl(mTableB, aTable); case B8G8R8A8_COMPONENT_BYTEOFFSET_A: - FillLookupTableImpl(mTableA, aTable); - break; + return FillLookupTableImpl(mTableA, aTable); default: MOZ_ASSERT(false, "unknown component"); - break; + return false; } } -void FilterNodeDiscreteTransferSoftware::FillLookupTableImpl( +bool FilterNodeDiscreteTransferSoftware::FillLookupTableImpl( std::vector& aTableValues, uint8_t aTable[256]) { uint32_t tvLength = aTableValues.size(); if (tvLength < 1) { - return; + return false; } for (size_t i = 0; i < 256; i++) { @@ -2027,6 +2019,7 @@ val = std::max(0, val); aTable[i] = val; } + return true; } FilterNodeLinearTransferSoftware::FilterNodeLinearTransferSoftware() @@ -2072,28 +2065,24 @@ Invalidate(); } -void FilterNodeLinearTransferSoftware::FillLookupTable(ptrdiff_t aComponent, +bool FilterNodeLinearTransferSoftware::FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) { switch (aComponent) { case B8G8R8A8_COMPONENT_BYTEOFFSET_R: - FillLookupTableImpl(mSlopeR, mInterceptR, aTable); - break; + return FillLookupTableImpl(mSlopeR, mInterceptR, aTable); case B8G8R8A8_COMPONENT_BYTEOFFSET_G: - FillLookupTableImpl(mSlopeG, mInterceptG, aTable); - break; + return FillLookupTableImpl(mSlopeG, mInterceptG, aTable); case B8G8R8A8_COMPONENT_BYTEOFFSET_B: - FillLookupTableImpl(mSlopeB, mInterceptB, aTable); - break; + return FillLookupTableImpl(mSlopeB, mInterceptB, aTable); case B8G8R8A8_COMPONENT_BYTEOFFSET_A: - FillLookupTableImpl(mSlopeA, mInterceptA, aTable); - break; + return FillLookupTableImpl(mSlopeA, mInterceptA, aTable); default: MOZ_ASSERT(false, "unknown component"); - break; + return false; } } -void FilterNodeLinearTransferSoftware::FillLookupTableImpl( +bool 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); @@ -2101,6 +2090,7 @@ val = std::max(0, val); aTable[i] = val; } + return true; } FilterNodeGammaTransferSoftware::FilterNodeGammaTransferSoftware() @@ -2162,28 +2152,24 @@ Invalidate(); } -void FilterNodeGammaTransferSoftware::FillLookupTable(ptrdiff_t aComponent, +bool FilterNodeGammaTransferSoftware::FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) { switch (aComponent) { case B8G8R8A8_COMPONENT_BYTEOFFSET_R: - FillLookupTableImpl(mAmplitudeR, mExponentR, mOffsetR, aTable); - break; + return FillLookupTableImpl(mAmplitudeR, mExponentR, mOffsetR, aTable); case B8G8R8A8_COMPONENT_BYTEOFFSET_G: - FillLookupTableImpl(mAmplitudeG, mExponentG, mOffsetG, aTable); - break; + return FillLookupTableImpl(mAmplitudeG, mExponentG, mOffsetG, aTable); case B8G8R8A8_COMPONENT_BYTEOFFSET_B: - FillLookupTableImpl(mAmplitudeB, mExponentB, mOffsetB, aTable); - break; + return FillLookupTableImpl(mAmplitudeB, mExponentB, mOffsetB, aTable); case B8G8R8A8_COMPONENT_BYTEOFFSET_A: - FillLookupTableImpl(mAmplitudeA, mExponentA, mOffsetA, aTable); - break; + return FillLookupTableImpl(mAmplitudeA, mExponentA, mOffsetA, aTable); default: MOZ_ASSERT(false, "unknown component"); - break; + return false; } } -void FilterNodeGammaTransferSoftware::FillLookupTableImpl(Float aAmplitude, +bool FilterNodeGammaTransferSoftware::FillLookupTableImpl(Float aAmplitude, Float aExponent, Float aOffset, uint8_t aTable[256]) { @@ -2194,12 +2180,14 @@ 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) { @@ -2245,7 +2233,21 @@ 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"); @@ -2446,20 +2448,26 @@ 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 || - mKernelMatrix.size() != - uint32_t(mKernelSize.width * mKernelSize.height) || + !kernelArea.isValid() || + mKernelMatrix.size() != size_t(kernelArea.value()) || !IntRect(IntPoint(0, 0), mKernelSize).Contains(mTarget) || mDivisor == 0) { return Factory::CreateDataSourceSurface(aRect.Size(), SurfaceFormat::B8G8R8A8, true); } - IntRect srcRect = InflatedSourceRect(aRect); - + RectDouble srcRectD(aRect); + srcRectD.Inflate(GetInflateSourceMargin()); // Inflate the source rect by another pixel because the bilinear filtering in // ColorComponentAtPoint may want to access the margins. - srcRect.Inflate(1); + srcRectD.Inflate(1); + if (!RectIsInt32Safe(srcRectD)) { + return nullptr; + } + IntRect srcRect = TruncatedToInt(srcRectD); RefPtr input = GetInputDataSourceSurface(IN_CONVOLVE_MATRIX_IN, srcRect, @@ -2538,23 +2546,26 @@ 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(); } - 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; + RectDouble srcRect(aDestRect); + srcRect.Inflate(GetInflateSourceMargin()); + return RectIsInt32Safe(srcRect) ? TruncatedToInt(srcRect) : aDestRect; } IntRect FilterNodeConvolveMatrixSoftware::InflatedDestRect( @@ -2563,19 +2574,12 @@ return IntRect(); } - 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; + RectDouble destRect(aSourceRect); + MarginDouble margin = GetInflateSourceMargin(); + std::swap(margin.left, margin.right); + std::swap(margin.top, margin.bottom); destRect.Inflate(margin); - return destRect; + return RectIsInt32Safe(destRect) ? TruncatedToInt(destRect) : aSourceRect; } IntRect FilterNodeConvolveMatrixSoftware::GetOutputRectInRect( @@ -2609,6 +2613,11 @@ 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); @@ -2655,7 +2664,7 @@ uint8_t* targetData = targetMap.GetData(); int32_t targetStride = targetMap.GetStride(); - static const ptrdiff_t channelMap[4] = { + static const ptrdiff_t channelMap[COLOR_CHANNEL_MAX + 1] = { B8G8R8A8_COMPONENT_BYTEOFFSET_R, B8G8R8A8_COMPONENT_BYTEOFFSET_G, B8G8R8A8_COMPONENT_BYTEOFFSET_B, B8G8R8A8_COMPONENT_BYTEOFFSET_A}; uint16_t xChannel = channelMap[mChannelX]; @@ -3346,7 +3355,8 @@ template FilterNodeLightingSoftware::FilterNodeLightingSoftware( const char* aTypeName) - : mSurfaceScale(0) + : mSurfaceScale(0), + mKernelUnitLength(1.0f, 1.0f) #if defined(MOZILLA_INTERNAL_API) && defined(NS_BUILD_REFCNT_LOGGING) , mTypeName(aTypeName) @@ -3399,6 +3409,23 @@ 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"); @@ -3548,21 +3575,32 @@ } 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) { - IntRect srcRect = aRect; - srcRect.Inflate(ceil(mKernelUnitLength.width), - ceil(mKernelUnitLength.height)); - RequestInputRect(IN_LIGHTING_IN, srcRect); + RequestInputRect(IN_LIGHTING_IN, InflatedSourceRect(aRect)); } template IntRect FilterNodeLightingSoftware::MapRectToSource( const IntRect& aRect, const IntRect& aMax, FilterNode* aSourceNode) { - IntRect srcRect = aRect; - srcRect.Inflate(ceil(mKernelUnitLength.width), - ceil(mKernelUnitLength.height)); - return MapInputRectToSource(IN_LIGHTING_IN, srcRect, aMax, aSourceNode); + return MapInputRectToSource(IN_LIGHTING_IN, InflatedSourceRect(aRect), aMax, + aSourceNode); } template @@ -3576,14 +3614,17 @@ MOZ_ASSERT(aKernelUnitLengthY > 0, "aKernelUnitLengthY can be a negative or zero value"); - IntRect srcRect = aRect; - IntSize size = aRect.Size(); - srcRect.Inflate(ceil(float(aKernelUnitLengthX)), - ceil(float(aKernelUnitLengthY))); - + RectDouble srcRectD(aRect); + srcRectD.Inflate(GetInflateSourceMargin()); // Inflate the source rect by another pixel because the bilinear filtering in // ColorComponentAtPoint may want to access the margins. - srcRect.Inflate(1); + srcRectD.Inflate(1); + if (!RectIsInt32Safe(srcRectD)) { + return nullptr; + } + IntRect srcRect = TruncatedToInt(srcRectD); + + IntSize size = aRect.Size(); RefPtr input = GetInputDataSourceSurface( IN_LIGHTING_IN, srcRect, CAN_HANDLE_A8, EDGE_MODE_NONE); diff -Nru thunderbird-140.8.0esr/gfx/2d/FilterNodeSoftware.h thunderbird-140.9.0esr/gfx/2d/FilterNodeSoftware.h --- thunderbird-140.8.0esr/gfx/2d/FilterNodeSoftware.h 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/2d/FilterNodeSoftware.h 2026-03-20 19:18:32.000000000 +0000 @@ -360,7 +360,7 @@ void RequestFromInputsForRect(const IntRect& aRect) override; virtual void GenerateLookupTable(ptrdiff_t aComponent, uint8_t aTables[4][256], bool aDisabled); - virtual void FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) = 0; + virtual bool FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) = 0; bool mDisableR; bool mDisableG; @@ -379,10 +379,10 @@ uint32_t aSize) override; protected: - void FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; + bool FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; private: - void FillLookupTableImpl(std::vector& aTableValues, + bool FillLookupTableImpl(std::vector& aTableValues, uint8_t aTable[256]); std::vector mTableR; @@ -402,10 +402,10 @@ uint32_t aSize) override; protected: - void FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; + bool FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; private: - void FillLookupTableImpl(std::vector& aTableValues, + bool FillLookupTableImpl(std::vector& aTableValues, uint8_t aTable[256]); std::vector mTableR; @@ -425,10 +425,10 @@ void SetAttribute(uint32_t aIndex, Float aValue) override; protected: - void FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; + bool FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; private: - void FillLookupTableImpl(Float aSlope, Float aIntercept, uint8_t aTable[256]); + bool FillLookupTableImpl(Float aSlope, Float aIntercept, uint8_t aTable[256]); Float mSlopeR; Float mSlopeG; @@ -451,10 +451,10 @@ void SetAttribute(uint32_t aIndex, Float aValue) override; protected: - void FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; + bool FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; private: - void FillLookupTableImpl(Float aAmplitude, Float aExponent, Float aOffset, + bool FillLookupTableImpl(Float aAmplitude, Float aExponent, Float aOffset, uint8_t aTable[256]); Float mAmplitudeR; @@ -502,6 +502,7 @@ CoordType aKernelUnitLengthX, CoordType aKernelUnitLengthY); + MarginDouble GetInflateSourceMargin() const; IntRect InflatedSourceRect(const IntRect& aDestRect); IntRect InflatedDestRect(const IntRect& aSourceRect); @@ -764,6 +765,9 @@ CoordType aKernelUnitLengthX, CoordType aKernelUnitLengthY); + MarginDouble GetInflateSourceMargin() const; + IntRect InflatedSourceRect(const IntRect& aDestRect); + LightType mLight; LightingType mLighting; Float mSurfaceScale; diff -Nru thunderbird-140.8.0esr/gfx/2d/Filters.h thunderbird-140.9.0esr/gfx/2d/Filters.h --- thunderbird-140.8.0esr/gfx/2d/Filters.h 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/2d/Filters.h 2026-03-20 19:18:32.000000000 +0000 @@ -193,7 +193,8 @@ COLOR_CHANNEL_R = 0, COLOR_CHANNEL_G, COLOR_CHANNEL_B, - COLOR_CHANNEL_A + COLOR_CHANNEL_A, + COLOR_CHANNEL_MAX = COLOR_CHANNEL_A }; enum DisplacementMapInputs { diff -Nru thunderbird-140.8.0esr/gfx/2d/Rect.h thunderbird-140.9.0esr/gfx/2d/Rect.h --- thunderbird-140.8.0esr/gfx/2d/Rect.h 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/2d/Rect.h 2026-03-20 19:18:33.000000000 +0000 @@ -169,6 +169,11 @@ 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() {} @@ -338,10 +343,10 @@ int32_t(copy.Width()), int32_t(copy.Height())); } -template -bool RectIsInt32Safe(const RectTyped& aRect) { - float min = (float)std::numeric_limits::min(); - float max = (float)std::numeric_limits::max(); +template +bool RectIsInt32Safe(const RectTyped& aRect) { + F min = (F)std::numeric_limits::min(); + F max = (F)std::numeric_limits::max(); return aRect.x > min && aRect.y > min && aRect.width < max && aRect.height < max && aRect.XMost() < max && aRect.YMost() < max; } @@ -356,8 +361,8 @@ return IntRectTyped::RoundOut(aRect); } -template -IntRectTyped TruncatedToInt(const RectTyped& aRect) { +template +IntRectTyped TruncatedToInt(const RectTyped& aRect) { return IntRectTyped::Truncate(aRect); } diff -Nru thunderbird-140.8.0esr/gfx/2d/ScaledFontMac.cpp thunderbird-140.9.0esr/gfx/2d/ScaledFontMac.cpp --- thunderbird-140.8.0esr/gfx/2d/ScaledFontMac.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/2d/ScaledFontMac.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -784,7 +784,7 @@ already_AddRefed UnscaledFontMac::CreateFromFontDescriptor( const uint8_t* aData, uint32_t aDataLength, uint32_t aIndex) { - if (aDataLength == 0) { + if (aDataLength == 0 || aIndex > aDataLength) { gfxWarning() << "Mac font descriptor is truncated."; return nullptr; } diff -Nru thunderbird-140.8.0esr/gfx/gl/GLContextEGL.h thunderbird-140.9.0esr/gfx/gl/GLContextEGL.h --- thunderbird-140.8.0esr/gfx/gl/GLContextEGL.h 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/gl/GLContextEGL.h 2026-03-20 19:18:32.000000000 +0000 @@ -61,7 +61,7 @@ } static GLContextEGL* Cast(GLContext* gl) { - MOZ_ASSERT(gl->GetContextType() == GLContextType::EGL); + MOZ_RELEASE_ASSERT(gl->GetContextType() == GLContextType::EGL); return static_cast(gl); } diff -Nru thunderbird-140.8.0esr/gfx/harfbuzz/src/hb-algs.hh thunderbird-140.9.0esr/gfx/harfbuzz/src/hb-algs.hh --- thunderbird-140.8.0esr/gfx/harfbuzz/src/hb-algs.hh 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/harfbuzz/src/hb-algs.hh 2026-03-20 19:18:32.000000000 +0000 @@ -1042,6 +1042,21 @@ 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 -Nru thunderbird-140.8.0esr/gfx/harfbuzz/src/hb-ot-shaper-arabic.cc thunderbird-140.9.0esr/gfx/harfbuzz/src/hb-ot-shaper-arabic.cc --- thunderbird-140.8.0esr/gfx/harfbuzz/src/hb-ot-shaper-arabic.cc 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/harfbuzz/src/hb-ot-shaper-arabic.cc 2026-03-20 19:18:33.000000000 +0000 @@ -561,20 +561,29 @@ 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. */ - int n_copies = 0; + unsigned int n_copies = 0; - 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; + 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; /* 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; - hb_position_t shortfall = sign * w_remaining - sign * w_repeating * (n_copies + 1); + int64_t shortfall = w_remaining_signed - w_repeating_signed * (n_copies + 1); if (shortfall > 0 && n_repeating > 0) { ++n_copies; - hb_position_t excess = (n_copies + 1) * sign * w_repeating - sign * w_remaining; + int64_t excess = (n_copies + 1) * w_repeating_signed - w_remaining_signed; if (excess > 0) { extra_repeat_overlap = excess / (n_copies * n_repeating); @@ -582,10 +591,22 @@ } } + 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) { - extra_glyphs_needed += n_copies * n_repeating; - DEBUG_MSG (ARABIC, nullptr, "will add extra %d copies of repeating tiles", n_copies); + 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); } else { @@ -629,7 +650,9 @@ if (step == MEASURE) { - if (unlikely (!buffer->ensure (count + extra_glyphs_needed))) + unsigned int total_glyphs = 0; + if (unlikely (hb_unsigned_add_overflows (count, extra_glyphs_needed, &total_glyphs) || + !buffer->ensure (total_glyphs))) break; } else diff -Nru thunderbird-140.8.0esr/gfx/layers/AnimationHelper.cpp thunderbird-140.9.0esr/gfx/layers/AnimationHelper.cpp --- thunderbird-140.8.0esr/gfx/layers/AnimationHelper.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/AnimationHelper.cpp 2026-03-20 19:18:33.000000000 +0000 @@ -239,8 +239,12 @@ #endif } - uint32_t segmentIndex = 0; size_t segmentSize = animation.mSegments.Length(); + if (segmentSize == 0) { + return AnimationHelper::SampleResult(); + } + + uint32_t segmentIndex = 0; PropertyAnimation::SegmentData* segment = animation.mSegments.Elements(); while (segment->mEndPortion < computedTiming.mProgress.Value() && segmentIndex < segmentSize - 1) { diff -Nru thunderbird-140.8.0esr/gfx/layers/BufferTexture.cpp thunderbird-140.9.0esr/gfx/layers/BufferTexture.cpp --- thunderbird-140.8.0esr/gfx/layers/BufferTexture.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/BufferTexture.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -156,7 +156,8 @@ gfx::ColorRange aColorRange, gfx::ChromaSubsampling aSubsampling, TextureFlags aTextureFlags) { uint32_t bufSize = ImageDataSerializer::ComputeYCbCrBufferSize( - aYSize, aYStride, aCbCrSize, aCbCrStride); + aDisplay, aYSize, aYStride, aCbCrSize, aCbCrStride, aColorDepth, + aSubsampling); if (bufSize == 0) { return nullptr; } @@ -274,11 +275,15 @@ 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 = - ImageDataSerializer::ComputeRGBStride(aData.format, size.width); + aData.stride = stride; return true; } diff -Nru thunderbird-140.8.0esr/gfx/layers/ImageContainer.cpp thunderbird-140.9.0esr/gfx/layers/ImageContainer.cpp --- thunderbird-140.8.0esr/gfx/layers/ImageContainer.cpp 2026-02-19 21:35:04.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/ImageContainer.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -645,7 +645,9 @@ 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.mCbChannel || !yuvData.mCrChannel || + !(yuvData.YDataSize() <= yuvDesc.ySize()) || + !(yuvData.CbCrDataSize() <= yuvDesc.cbCrSize())) { gfxCriticalError() << "Unusual PlanarYCbCrData: " << yuvData.mYSkip << "," << yuvData.mCbSkip << "," << yuvData.mCrSkip << ", " << yuvDesc.ySize().width << "," << yuvDesc.ySize().height @@ -653,7 +655,8 @@ << yuvDesc.cbCrSize().height << ", " << yuvData.mYStride << "," << yuvData.mCbCrStride << ", " << yuvData.mYChannel << "," << yuvData.mCbChannel << "," - << yuvData.mCrChannel; + << yuvData.mCrChannel << "," << yuvData.YDataSize().width + << "," << yuvData.YDataSize().height; return {}; } @@ -750,8 +753,12 @@ yOffset, cbOffset, crOffset); uint32_t bufferSize = ImageDataSerializer::ComputeYCbCrBufferSize( - ySize, pdata->mYStride, cbcrSize, pdata->mCbCrStride, yOffset, cbOffset, - crOffset); + pdata->mPictureRect, ySize, pdata->mYStride, cbcrSize, pdata->mCbCrStride, + yOffset, cbOffset, crOffset, pdata->mColorDepth, + pdata->mChromaSubsampling); + if (bufferSize == 0) { + return NS_ERROR_FAILURE; + } aSdBuffer.data() = aAllocate(bufferSize); diff -Nru thunderbird-140.8.0esr/gfx/layers/ImageDataSerializer.cpp thunderbird-140.9.0esr/gfx/layers/ImageDataSerializer.cpp --- thunderbird-140.8.0esr/gfx/layers/ImageDataSerializer.cpp 2026-02-19 21:35:02.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/ImageDataSerializer.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -58,36 +58,56 @@ 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::IntSize& aYSize, int32_t aYStride, +uint32_t ComputeYCbCrBufferSize(const gfx::IntRect& aDisplay, + const gfx::IntSize& aYSize, int32_t aYStride, const gfx::IntSize& aCbCrSize, - int32_t aCbCrStride) { + int32_t aCbCrStride, gfx::ColorDepth aDepth, + const ChromaSubsampling aSubsampling) { MOZ_ASSERT(aYSize.height >= 0 && aYSize.width >= 0); - if (aYSize.height < 0 || aYSize.width < 0 || aCbCrSize.height < 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 || aCbCrSize.width < 0 || !gfx::Factory::AllowedSurfaceSize(IntSize(aYStride, aYSize.height)) || !gfx::Factory::AllowedSurfaceSize( - IntSize(aCbCrStride, aCbCrSize.height))) { + IntSize(aCbCrStride, aCbCrSize.height)) || + !CheckYCbCrStride(aYSize, aYStride, aDepth) || + !CheckYCbCrStride(aCbCrSize, aCbCrStride, aDepth) || + !(ChromaSize(aYSize, aSubsampling) <= aCbCrSize)) { return 0; } - // Overflow checks are performed in AllowedSurfaceSize - return GetAlignedStride<4>(aYSize.height, aYStride) + - 2 * GetAlignedStride<4>(aCbCrSize.height, aCbCrStride); + // 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(); } -uint32_t ComputeYCbCrBufferSize(const gfx::IntSize& aYSize, int32_t aYStride, +uint32_t ComputeYCbCrBufferSize(const gfx::IntRect& aDisplay, + const gfx::IntSize& aYSize, int32_t aYStride, const gfx::IntSize& aCbCrSize, int32_t aCbCrStride, uint32_t aYOffset, - 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))) { + 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) { return 0; } @@ -105,7 +125,8 @@ crEnd += cbCrLength; if (!yEnd.isValid() || !cbEnd.isValid() || !crEnd.isValid() || - yEnd.value() > aCbOffset || cbEnd.value() > aCrOffset) { + yEnd.value() > aCbOffset || cbEnd.value() > aCrOffset || + crEnd.value() < minBufLen) { return 0; } diff -Nru thunderbird-140.8.0esr/gfx/layers/ImageDataSerializer.h thunderbird-140.9.0esr/gfx/layers/ImageDataSerializer.h --- thunderbird-140.8.0esr/gfx/layers/ImageDataSerializer.h 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/ImageDataSerializer.h 2026-03-20 19:18:32.000000000 +0000 @@ -40,13 +40,18 @@ /// 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::IntSize& aYSize, int32_t aYStride, +uint32_t ComputeYCbCrBufferSize(const gfx::IntRect& aDisplay, + const gfx::IntSize& aYSize, int32_t aYStride, const gfx::IntSize& aCbCrSize, - int32_t aCbCrStride); -uint32_t ComputeYCbCrBufferSize(const gfx::IntSize& aYSize, int32_t aYStride, + int32_t aCbCrStride, gfx::ColorDepth aDepth, + const gfx::ChromaSubsampling aSubsampling); +uint32_t ComputeYCbCrBufferSize(const gfx::IntRect& aDisplay, + const gfx::IntSize& aYSize, int32_t aYStride, const gfx::IntSize& aCbCrSize, int32_t aCbCrStride, uint32_t aYOffset, - uint32_t aCbOffset, uint32_t aCrOffset); + uint32_t aCbOffset, uint32_t aCrOffset, + gfx::ColorDepth aDepth, + const gfx::ChromaSubsampling aSubsampling); uint32_t ComputeYCbCrBufferSize(uint32_t aBufferSize); void ComputeYCbCrOffsets(int32_t yStride, int32_t yHeight, int32_t cbCrStride, diff -Nru thunderbird-140.8.0esr/gfx/layers/SourceSurfaceSharedData.cpp thunderbird-140.9.0esr/gfx/layers/SourceSurfaceSharedData.cpp --- thunderbird-140.8.0esr/gfx/layers/SourceSurfaceSharedData.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/SourceSurfaceSharedData.cpp 2026-03-20 19:18:33.000000000 +0000 @@ -13,6 +13,7 @@ #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" @@ -46,7 +47,7 @@ MOZ_CRASH("Invalid shared memory handle!"); } - bool mapped = EnsureMapped(len); + bool mapped = EnsureMapped(); if ((sizeof(uintptr_t) <= 4 || StaticPrefs::image_mem_shared_unmap_force_enabled_AtStartup()) && len / 1024 > @@ -77,10 +78,15 @@ mBuf = aSurface->mBuf; } -bool SourceSurfaceSharedDataWrapper::EnsureMapped(size_t aLength) { +bool SourceSurfaceSharedDataWrapper::EnsureMapped() { MOZ_ASSERT(!GetData()); - if (mBufHandle.Size() < aLength) { + auto computedStride = + CheckedInt(mSize.width) * BytesPerPixel(mFormat); + if (mSize.width < 0 || mSize.height < 0 || mStride < 0 || + !computedStride.isValid() || mStride < computedStride.value() || + !image::SurfaceCache::IsLegalSize(mSize) || + mBufHandle.Size() < GetAlignedDataLength()) { return false; } @@ -118,9 +124,8 @@ SharedSurfacesParent::RemoveTracking(this); } if (!dataPtr) { - size_t len = GetAlignedDataLength(); - if (!EnsureMapped(len)) { - NS_ABORT_OOM(len); + if (!EnsureMapped()) { + NS_ABORT_OOM(GetAlignedDataLength()); } dataPtr = GetData(); } diff -Nru thunderbird-140.8.0esr/gfx/layers/SourceSurfaceSharedData.h thunderbird-140.9.0esr/gfx/layers/SourceSurfaceSharedData.h --- thunderbird-140.8.0esr/gfx/layers/SourceSurfaceSharedData.h 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/SourceSurfaceSharedData.h 2026-03-20 19:18:32.000000000 +0000 @@ -104,7 +104,7 @@ return mozilla::ipc::shared_memory::PageAlignedSize(GetDataLength()); } - bool EnsureMapped(size_t aLength); + bool EnsureMapped(); // Protects mapping and unmapping of mBuf. Maybe mHandleLock; diff -Nru thunderbird-140.8.0esr/gfx/layers/composite/TextureHost.cpp thunderbird-140.9.0esr/gfx/layers/composite/TextureHost.cpp --- thunderbird-140.8.0esr/gfx/layers/composite/TextureHost.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/composite/TextureHost.cpp 2026-03-20 19:18:33.000000000 +0000 @@ -279,9 +279,10 @@ case BufferDescriptor::TYCbCrDescriptor: { const YCbCrDescriptor& ycbcr = desc.get_YCbCrDescriptor(); reqSize = ImageDataSerializer::ComputeYCbCrBufferSize( - ycbcr.ySize(), ycbcr.yStride(), ycbcr.cbCrSize(), - ycbcr.cbCrStride(), ycbcr.yOffset(), ycbcr.cbOffset(), - ycbcr.crOffset()); + ycbcr.display(), ycbcr.ySize(), ycbcr.yStride(), + ycbcr.cbCrSize(), ycbcr.cbCrStride(), ycbcr.yOffset(), + ycbcr.cbOffset(), ycbcr.crOffset(), ycbcr.colorDepth(), + ycbcr.chromaSubsampling()); break; } case BufferDescriptor::TRGBDescriptor: { diff -Nru thunderbird-140.8.0esr/gfx/layers/ipc/ImageBridgeParent.cpp thunderbird-140.9.0esr/gfx/layers/ipc/ImageBridgeParent.cpp --- thunderbird-140.8.0esr/gfx/layers/ipc/ImageBridgeParent.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/ipc/ImageBridgeParent.cpp 2026-03-20 19:18:33.000000000 +0000 @@ -181,7 +181,20 @@ ~AutoImageBridgeParentAsyncMessageSender() { mImageBridge->SendPendingAsyncMessages(); if (mToDestroy) { + // Iterate mToDestroy but de-duplicate it to avoid destroying the + // same texture parent actor twice. + nsTHashSet seenTextureParents; for (const auto& op : *mToDestroy) { + // Peek inside the op (as DestroyActor does) to see if we are about + // to destroy a PTextureParent. + if (op.type() == OpDestroy::TPTexture) { + PTextureParent* textureParent = op.get_PTexture().AsParent(); + if (!seenTextureParents.EnsureInserted(textureParent)) { + // Already seen, so skip this one. + continue; + } + } + mImageBridge->DestroyActor(op); } } diff -Nru thunderbird-140.8.0esr/gfx/layers/ipc/SharedPlanarYCbCrImage.cpp thunderbird-140.9.0esr/gfx/layers/ipc/SharedPlanarYCbCrImage.cpp --- thunderbird-140.8.0esr/gfx/layers/ipc/SharedPlanarYCbCrImage.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/ipc/SharedPlanarYCbCrImage.cpp 2026-03-20 19:18:33.000000000 +0000 @@ -170,7 +170,8 @@ // will try to manage this memory without knowing it belongs to a // shmem. mBufferSize = ImageDataSerializer::ComputeYCbCrBufferSize( - aYSize, mData.mYStride, aCbCrSize, mData.mCbCrStride); + mData.mPictureRect, aYSize, mData.mYStride, aCbCrSize, mData.mCbCrStride, + mData.mColorDepth, mData.mChromaSubsampling); mSize = mData.mPictureRect.Size(); mOrigin = mData.mPictureRect.TopLeft(); diff -Nru thunderbird-140.8.0esr/gfx/layers/opengl/TextureHostOGL.cpp thunderbird-140.9.0esr/gfx/layers/opengl/TextureHostOGL.cpp --- thunderbird-140.8.0esr/gfx/layers/opengl/TextureHostOGL.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/opengl/TextureHostOGL.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -81,6 +81,11 @@ #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(), @@ -109,6 +114,11 @@ #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(), diff -Nru thunderbird-140.8.0esr/gfx/layers/wr/WebRenderBridgeParent.cpp thunderbird-140.9.0esr/gfx/layers/wr/WebRenderBridgeParent.cpp --- thunderbird-140.8.0esr/gfx/layers/wr/WebRenderBridgeParent.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/gfx/layers/wr/WebRenderBridgeParent.cpp 2026-03-20 19:18:32.000000000 +0000 @@ -16,6 +16,7 @@ #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" @@ -314,8 +315,19 @@ mWebRenderBridgeParent->SendPendingAsyncMessages(); if (mActorsToDestroy) { // Destroy the actors after sending the async messages because the latter - // may contain references to some actors. + // may contain references to some actors. De-duplicate the array to avoid + // destroying the same texture parent actor twice. + nsTHashSet seenTextureParents; for (const auto& op : *mActorsToDestroy) { + // Peek inside the op (as DestroyActor does) to see if we are about + // to destroy a PTextureParent. + if (op.type() == OpDestroy::TPTexture) { + PTextureParent* textureParent = op.get_PTexture().AsParent(); + if (!seenTextureParents.EnsureInserted(textureParent)) { + // Already seen, so skip this one. + continue; + } + } mWebRenderBridgeParent->DestroyActor(op); } } @@ -1864,12 +1876,16 @@ 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); + } FlushSceneBuilds(); FlushFrameGeneration(wr::RenderReasons::SNAPSHOT); mApi->Readback(start, size, bufferTexture->GetFormat(), - Range(buffer, buffer_size), aNeedsYFlip); + Range(buffer, buffer_size.value()), + aNeedsYFlip); return IPC_OK(); } diff -Nru thunderbird-140.8.0esr/image/moz.build thunderbird-140.9.0esr/image/moz.build --- thunderbird-140.8.0esr/image/moz.build 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/image/moz.build 2026-03-20 19:18:33.000000000 +0000 @@ -65,8 +65,10 @@ "ICOFileHeaders.h", "ImageMemoryReporter.h", "ImageUtils.h", + "PlaybackType.h", "Resolution.h", "SourceBuffer.h", + "SurfaceCache.h", "SurfaceFlags.h", "WebRenderImageProvider.h", ] diff -Nru thunderbird-140.8.0esr/js/public/Value.h thunderbird-140.9.0esr/js/public/Value.h --- thunderbird-140.8.0esr/js/public/Value.h 2026-02-19 21:35:04.000000000 +0000 +++ thunderbird-140.9.0esr/js/public/Value.h 2026-03-20 19:18:34.000000000 +0000 @@ -426,7 +426,7 @@ #endif #if defined(JS_RUNTIME_CANONICAL_NAN) -extern uint64_t CanonicalizedNaNBits; +extern JS_PUBLIC_API uint64_t CanonicalizedNaNBits; #else constexpr uint64_t CanonicalizedNaNBits = mozilla::SpecificNaNBitshasDebugScript()); DebugScriptMap* map = script->zone()->debugScriptMap; MOZ_ASSERT(map); @@ -205,7 +206,12 @@ /* 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()); @@ -283,6 +289,10 @@ /* 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); @@ -328,6 +338,10 @@ /* 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); @@ -393,6 +407,10 @@ /* static */ bool DebugAPI::stepModeEnabledSlow(JSScript* script) { + if (IsAboutToBeFinalizedUnbarriered(script)) { + return false; + } + return DebugScript::get(script)->stepperCount > 0; } diff -Nru thunderbird-140.8.0esr/js/src/debugger/Debugger.cpp thunderbird-140.9.0esr/js/src/debugger/Debugger.cpp --- thunderbird-140.8.0esr/js/src/debugger/Debugger.cpp 2026-02-19 21:35:04.000000000 +0000 +++ thunderbird-140.9.0esr/js/src/debugger/Debugger.cpp 2026-03-20 19:18:34.000000000 +0000 @@ -2025,26 +2025,27 @@ // // GetGeneratorObjectForFrame can return nullptr even when a generator // object does exist, if the frame is paused between the Generator and - // SetAliasedVar opcodes. But by checking the opcode first we eliminate that - // possibility, so it's fine to call genObj->isClosed(). + // SetAliasedVar opcodes. Rooted generatorObj( cx, GetGeneratorObjectForFrame(cx, frame)); - switch (JSOp(*pc)) { - case JSOp::InitialYield: - MOZ_ASSERT(!generatorObj->isClosed()); - return Completion(InitialYield(generatorObj)); - - case JSOp::Yield: - MOZ_ASSERT(!generatorObj->isClosed()); - return Completion(Yield(generatorObj, frame.returnValue())); - - case JSOp::Await: - MOZ_ASSERT(!generatorObj->isClosed()); - return Completion(Await(generatorObj, frame.returnValue())); - default: - return Completion(Return(frame.returnValue())); + if (generatorObj && !generatorObj->isClosed()) { + switch (JSOp(*pc)) { + case JSOp::InitialYield: + return Completion(InitialYield(generatorObj)); + + case JSOp::Yield: + return Completion(Yield(generatorObj, frame.returnValue())); + + case JSOp::Await: + return Completion(Await(generatorObj, frame.returnValue())); + + default: + break; + } } + + return Completion(Return(frame.returnValue())); } void Completion::trace(JSTracer* trc) { diff -Nru thunderbird-140.8.0esr/js/src/gc/Memory.cpp thunderbird-140.9.0esr/js/src/gc/Memory.cpp --- thunderbird-140.8.0esr/js/src/gc/Memory.cpp 2026-02-19 21:35:03.000000000 +0000 +++ thunderbird-140.9.0esr/js/src/gc/Memory.cpp 2026-03-20 19:18:33.000000000 +0000 @@ -894,7 +894,10 @@ int status; do { # if defined(XP_DARWIN) - status = madvise(region, length, MADV_FREE_REUSABLE); + // 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); # elif defined(XP_SOLARIS) status = posix_madvise(region, length, POSIX_MADV_DONTNEED); # else @@ -925,11 +928,6 @@ 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 -Nru thunderbird-140.8.0esr/js/src/gc/Verifier.cpp thunderbird-140.9.0esr/js/src/gc/Verifier.cpp --- thunderbird-140.8.0esr/js/src/gc/Verifier.cpp 2026-02-19 21:35:04.000000000 +0000 +++ thunderbird-140.9.0esr/js/src/gc/Verifier.cpp 2026-03-20 19:18:33.000000000 +0000 @@ -1215,10 +1215,14 @@ // 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->is() && cell->as()->isDependent()) { + if (cell->as()->isDependent()) { JSDependentString* str = &cell->as()->asDependent(); if (str->isTenured() && str->base()->isTenured()) { MOZ_RELEASE_ASSERT(!str->hasCharsInCollectedNurseryRegion()); diff -Nru thunderbird-140.8.0esr/js/src/jit/IonAnalysis.cpp thunderbird-140.9.0esr/js/src/jit/IonAnalysis.cpp --- thunderbird-140.8.0esr/js/src/jit/IonAnalysis.cpp 2026-02-19 21:35:04.000000000 +0000 +++ thunderbird-140.9.0esr/js/src/jit/IonAnalysis.cpp 2026-03-20 19:18:34.000000000 +0000 @@ -568,8 +568,9 @@ *ptest = nullptr; if (phiBlock != testBlock) { - MOZ_ASSERT(phiBlock->numSuccessors() == 1 && - phiBlock->getSuccessor(0) == testBlock); + MOZ_RELEASE_ASSERT(phiBlock->lastIns()->isGoto()); + MOZ_RELEASE_ASSERT(phiBlock->lastIns()->toGoto()->target() == testBlock); + MOZ_RELEASE_ASSERT(testBlock->numPredecessors() == 1); if (!phiBlock->begin()->isGoto()) { return false; } @@ -686,7 +687,7 @@ blockResult->setImplicitlyUsedUnchecked(); MInstruction* ins = block->lastIns(); - MOZ_ASSERT(ins->isGoto()); + MOZ_RELEASE_ASSERT(ins->isGoto()); ins->toGoto()->target()->removePredecessor(block); block->discardLastIns(); @@ -707,15 +708,14 @@ MInstruction* ins = block->lastIns(); if (ins->isTest()) { MTest* test = ins->toTest(); - MOZ_ASSERT(test->input() == value); + MOZ_RELEASE_ASSERT(test->input() == value); if (ifTrue != test->ifTrue()) { test->ifTrue()->removePredecessor(block); if (!ifTrue->addPredecessorSameInputsAs(block, existingPred)) { return false; } - MOZ_ASSERT(test->ifTrue() == test->getSuccessor(0)); - test->replaceSuccessor(0, ifTrue); + test->replaceSuccessor(MTest::TrueBranchIndex, ifTrue); } if (ifFalse != test->ifFalse()) { @@ -723,14 +723,13 @@ if (!ifFalse->addPredecessorSameInputsAs(block, existingPred)) { return false; } - MOZ_ASSERT(test->ifFalse() == test->getSuccessor(1)); - test->replaceSuccessor(1, ifFalse); + test->replaceSuccessor(MTest::FalseBranchIndex, ifFalse); } return true; } - MOZ_ASSERT(ins->isGoto()); + MOZ_RELEASE_ASSERT(ins->isGoto()); ins->toGoto()->target()->removePredecessor(block); block->discardLastIns(); @@ -775,8 +774,8 @@ return false; } - MBasicBlock* phiBlock = trueBranch->getSuccessor(0); - if (phiBlock != falseBranch->getSuccessor(0)) { + MBasicBlock* phiBlock = trueBranch->lastIns()->toGoto()->target(); + if (phiBlock != falseBranch->lastIns()->toGoto()->target()) { return false; } if (phiBlock->numPredecessors() != 2) { @@ -820,13 +819,13 @@ return true; } - MBasicBlock* phiBlock = trueBranch->getSuccessor(0); + MBasicBlock* phiBlock = trueBranch->lastIns()->toGoto()->target(); MBasicBlock* testBlock = phiBlock; - if (testBlock->numSuccessors() == 1) { + if (testBlock->lastIns()->isGoto()) { if (testBlock->isLoopBackedge()) { return true; } - testBlock = testBlock->getSuccessor(0); + testBlock = testBlock->lastIns()->toGoto()->target(); if (testBlock->numPredecessors() != 1) { return true; } @@ -838,7 +837,7 @@ return true; } - MOZ_ASSERT(phi->numOperands() == 2); + MOZ_RELEASE_ASSERT(phi->numOperands() == 2); // Make sure the test block does not have any outgoing loop backedges. if (!SplitCriticalEdgesForBlock(graph, testBlock)) { @@ -929,8 +928,8 @@ MBasicBlock* trueBranch = initialTest->ifTrue(); MBasicBlock* falseBranch = initialTest->ifFalse(); - if (trueBranch->numSuccessors() == 1 && - trueBranch->getSuccessor(0) == falseBranch) { + if (trueBranch->lastIns()->isGoto() && + trueBranch->lastIns()->toGoto()->target() == falseBranch) { if (trueBranch->numPredecessors() != 1) { return false; } @@ -940,8 +939,8 @@ return true; } - if (falseBranch->numSuccessors() == 1 && - falseBranch->getSuccessor(0) == trueBranch) { + if (falseBranch->lastIns()->isGoto() && + falseBranch->lastIns()->toGoto()->target() == trueBranch) { if (trueBranch->numPredecessors() != 2) { return false; } @@ -999,19 +998,19 @@ } MBasicBlock* phiBlock; - if (trueBranch->numSuccessors() == 1 && - trueBranch->getSuccessor(0) == falseBranch) { + if (trueBranch->lastIns()->isGoto() && + trueBranch->lastIns()->toGoto()->target() == falseBranch) { phiBlock = falseBranch; } else { - MOZ_ASSERT(falseBranch->getSuccessor(0) == trueBranch); + MOZ_ASSERT(falseBranch->lastIns()->toGoto()->target() == trueBranch); phiBlock = trueBranch; } MBasicBlock* testBlock = phiBlock; - if (testBlock->numSuccessors() == 1) { - MOZ_ASSERT(!testBlock->isLoopBackedge()); + if (testBlock->lastIns()->isGoto()) { + MOZ_RELEASE_ASSERT(!testBlock->isLoopBackedge()); - testBlock = testBlock->getSuccessor(0); + testBlock = testBlock->lastIns()->toGoto()->target(); if (testBlock->numPredecessors() != 1) { return true; } @@ -1023,7 +1022,7 @@ return true; } - MOZ_ASSERT(phi->numOperands() == 2); + MOZ_RELEASE_ASSERT(phi->numOperands() == 2); // If the phi-operand doesn't match the initial input, we can't fold the test. auto* phiInputForInitialBlock = @@ -1194,17 +1193,17 @@ } MBasicBlock* testBlock = phiBlock; - if (testBlock->numSuccessors() == 1) { + if (testBlock->lastIns()->isGoto()) { if (testBlock->isLoopBackedge()) { return true; } - testBlock = testBlock->getSuccessor(0); + testBlock = testBlock->lastIns()->toGoto()->target(); if (testBlock->numPredecessors() != 1) { return true; } } - MOZ_ASSERT(!phiBlock->isLoopBackedge()); + MOZ_RELEASE_ASSERT(!phiBlock->isLoopBackedge()); MPhi* phi = nullptr; MTest* finalTest = nullptr; @@ -1212,7 +1211,7 @@ return true; } - MOZ_ASSERT(phiBlock->numPredecessors() == phi->numOperands()); + MOZ_RELEASE_ASSERT(phiBlock->numPredecessors() == phi->numOperands()); // If the phi-operand doesn't match the initial input, we can't fold the test. auto* phiInputForInitialBlock = @@ -1243,7 +1242,7 @@ return true; } - MOZ_ASSERT(!pred->isLoopBackedge()); + MOZ_RELEASE_ASSERT(!pred->isLoopBackedge()); } // Ensure we found the single goto block. @@ -1270,7 +1269,7 @@ // Update all test instructions to point to the final target. while (phiBlock->numPredecessors()) { - mozilla::DebugOnly oldNumPred = phiBlock->numPredecessors(); + size_t oldNumPred = phiBlock->numPredecessors(); auto* pred = phiBlock->getPredecessor(0); auto* test = pred->lastIns()->toTest(); @@ -1281,7 +1280,7 @@ return false; } } else { - MOZ_ASSERT(test->ifFalse() == phiBlock); + MOZ_RELEASE_ASSERT(test->ifFalse() == phiBlock); if (!UpdateTestSuccessors(graph.alloc(), pred, test->input(), test->ifTrue(), finalTest->ifFalse(), testBlock)) { @@ -1290,7 +1289,7 @@ } // Ensure we've made progress. - MOZ_ASSERT(phiBlock->numPredecessors() + 1 == oldNumPred); + MOZ_RELEASE_ASSERT(phiBlock->numPredecessors() + 1 == oldNumPred); } // Remove phiBlock, if different from testBlock. diff -Nru thunderbird-140.8.0esr/js/src/jit/MIR-wasm.h thunderbird-140.9.0esr/js/src/jit/MIR-wasm.h --- thunderbird-140.8.0esr/js/src/jit/MIR-wasm.h 2026-02-19 21:35:04.000000000 +0000 +++ thunderbird-140.9.0esr/js/src/jit/MIR-wasm.h 2026-03-20 19:18:34.000000000 +0000 @@ -1346,7 +1346,6 @@ wasm::RefType refType) : MBinaryInstruction(classOpcode, elements, index) { setResultType(MIRType::WasmAnyRef); - setMovable(); initWasmRefType(wasm::MaybeRefType(refType)); } diff -Nru thunderbird-140.8.0esr/js/src/vm/ArrayBufferObject.cpp thunderbird-140.9.0esr/js/src/vm/ArrayBufferObject.cpp --- thunderbird-140.8.0esr/js/src/vm/ArrayBufferObject.cpp 2026-02-19 21:35:07.000000000 +0000 +++ thunderbird-140.9.0esr/js/src/vm/ArrayBufferObject.cpp 2026-03-20 19:18:36.000000000 +0000 @@ -2266,36 +2266,15 @@ 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; } - std::uninitialized_copy_n(source->dataPointer(), newByteLength, toFill); + size_t nbytes = std::min(newByteLength, sourceByteLength); + std::copy_n(source->dataPointer(), nbytes, toFill); return buffer; } diff -Nru thunderbird-140.8.0esr/layout/style/FontFace.cpp thunderbird-140.9.0esr/layout/style/FontFace.cpp --- thunderbird-140.8.0esr/layout/style/FontFace.cpp 2026-02-19 21:35:07.000000000 +0000 +++ thunderbird-140.9.0esr/layout/style/FontFace.cpp 2026-03-20 19:18:37.000000000 +0000 @@ -281,6 +281,12 @@ return; } + if (NS_IsMainThread() && !nsContentUtils::IsSafeToRunScript()) { + nsContentUtils::AddScriptRunner(NewRunnableMethod( + "FontFace::MaybeResolve", this, &FontFace::MaybeResolve)); + return; + } + mLoaded->MaybeResolve(this); } diff -Nru thunderbird-140.8.0esr/media/libpng/ANNOUNCE thunderbird-140.9.0esr/media/libpng/ANNOUNCE --- thunderbird-140.8.0esr/media/libpng/ANNOUNCE 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/ANNOUNCE 2026-03-20 19:18:38.000000000 +0000 @@ -1,5 +1,5 @@ -libpng 1.6.47 - February 18, 2025 -================================= +libpng 1.6.55 - February 9, 2026 +================================ This is a public release of libpng, intended for use in production code. @@ -7,15 +7,12 @@ Files available for download ---------------------------- -Source files with LF line endings (for Unix/Linux): +Source files: - * 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) + * libpng-1.6.55.tar.xz (LZMA-compressed, recommended) + * libpng-1.6.55.tar.gz (deflate-compressed) + * lpng1655.7z (LZMA-compressed) + * lpng1655.zip (deflate-compressed) Other information: @@ -25,22 +22,16 @@ * TRADEMARK.md -Changes from version 1.6.46 to version 1.6.47 +Changes from version 1.6.54 to version 1.6.55 --------------------------------------------- - * 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) - + * 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.) 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 -Nru thunderbird-140.8.0esr/media/libpng/AUTHORS thunderbird-140.9.0esr/media/libpng/AUTHORS --- thunderbird-140.8.0esr/media/libpng/AUTHORS 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/AUTHORS 2026-03-20 19:18:37.000000000 +0000 @@ -5,6 +5,7 @@ Authors, for copyright and licensing purposes. * Adam Richter + * Alexander Smorkalov * Andreas Dilger * Chris Blume * Cosmin Truta @@ -16,21 +17,25 @@ * Guy Eric Schalnat * James Yu * John Bowler + * Joshua Inscoe * Kevin Bracey * Lucas Chollet * Magnus Holmgren * Mandar Sahastrabuddhe + * Manfred Schlaegl * Mans Rullgard * Matt Sarett * Mike Klein * Pascal Massimino * Paul Schmidt + * Petr Simecek * Philippe Antoine * Qiang Zhou * Sam Bushell * Samuel Williams * Simon-Pierre Cadieux * Tim Wegner + * Tobias Stoeckmann * Tom Lane * Tom Tanner * Vadim Barkov @@ -40,8 +45,9 @@ - Zixu Wang (王子旭) * Arm Holdings - Richard Townsend - * Google Inc. + * Google LLC - Dan Field + - Dragoș Tiselice - Leon Scroggins III - Matt Sarett - Mike Klein @@ -51,6 +57,10 @@ - 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 -Nru thunderbird-140.8.0esr/media/libpng/CHANGES thunderbird-140.9.0esr/media/libpng/CHANGES --- thunderbird-140.8.0esr/media/libpng/CHANGES 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/CHANGES 2026-03-20 19:18:37.000000000 +0000 @@ -5988,7 +5988,7 @@ Version 1.6.32rc02 [August 22, 2017] Added contrib/oss-fuzz directory which contains files used by the oss-fuzz - project (https://github.com/google/oss-fuzz/tree/master/projects/libpng). + project . Version 1.6.32 [August 24, 2017] No changes. @@ -6251,7 +6251,93 @@ 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.) + 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 -Nru thunderbird-140.8.0esr/media/libpng/LICENSE thunderbird-140.9.0esr/media/libpng/LICENSE --- thunderbird-140.8.0esr/media/libpng/LICENSE 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/LICENSE 2026-03-20 19:18:37.000000000 +0000 @@ -4,8 +4,8 @@ PNG Reference Library License version 2 --------------------------------------- - * Copyright (c) 1995-2025 The PNG Reference Library Authors. - * Copyright (c) 2018-2025 Cosmin Truta. + * Copyright (c) 1995-2026 The PNG Reference Library Authors. + * Copyright (c) 2018-2026 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 -Nru thunderbird-140.8.0esr/media/libpng/README thunderbird-140.9.0esr/media/libpng/README --- thunderbird-140.8.0esr/media/libpng/README 2026-02-19 21:35:07.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/README 2026-03-20 19:18:37.000000000 +0000 @@ -1,4 +1,4 @@ -README for libpng version 1.6.47 +README for libpng version 1.6.55 ================================ See the note about version numbers near the top of `png.h`. @@ -24,14 +24,14 @@ 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 http://www.libpng.org/pub/png/pngdocs.html . +these at . -This code is currently being archived at https://libpng.sourceforge.io -in the download area, and at http://libpng.download/src . +This code is currently being archived at +in the download area, and at . 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 @@ 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,6 +147,7 @@ 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 @@ -162,6 +163,7 @@ 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 -Nru thunderbird-140.8.0esr/media/libpng/apng.patch thunderbird-140.9.0esr/media/libpng/apng.patch --- thunderbird-140.8.0esr/media/libpng/apng.patch 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/apng.patch 2026-03-20 19:18:37.000000000 +0000 @@ -30,18 +30,18 @@ /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ -@@ -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)); +@@ -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)); +#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 -@@ -3338,6 +3357,75 @@ PNG_EXPORT(244, int, png_set_option, (pn +@@ -3506,6 +3525,75 @@ PNG_EXPORT(244, int, png_set_option, (pn * END OF HARDWARE AND SOFTWARE OPTIONS ******************************************************************************/ @@ -117,14 +117,14 @@ /* Maintainer: Put new public prototypes here ^, in libpng.3, in project * defs, and in scripts/symbols.def. */ -@@ -3346,7 +3434,11 @@ PNG_EXPORT(244, int, png_set_option, (pn +@@ -3514,7 +3602,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/pnginfo.h b/pnginfo.h --- a/pnginfo.h +++ b/pnginfo.h -@@ -282,5 +282,18 @@ defined(PNG_READ_BACKGROUND_SUPPORTED) +@@ -259,5 +259,18 @@ defined(PNG_READ_BACKGROUND_SUPPORTED) #ifdef PNG_sRGB_SUPPORTED int rendering_intent; #endif diff -Nru thunderbird-140.8.0esr/media/libpng/arm/arm_init.c thunderbird-140.9.0esr/media/libpng/arm/arm_init.c --- thunderbird-140.8.0esr/media/libpng/arm/arm_init.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/arm/arm_init.c 2026-03-20 19:18:37.000000000 +0000 @@ -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 @@ #endif /* PNG_ARM_NEON_CHECK_SUPPORTED */ #ifndef PNG_ALIGNED_MEMORY_SUPPORTED -# error "ALIGNED_MEMORY is required; set: -DPNG_ALIGNED_MEMORY_SUPPORTED" +# error ALIGNED_MEMORY is required; please define PNG_ALIGNED_MEMORY_SUPPORTED #endif void diff -Nru thunderbird-140.8.0esr/media/libpng/arm/filter_neon_intrinsics.c thunderbird-140.9.0esr/media/libpng/arm/filter_neon_intrinsics.c --- thunderbird-140.8.0esr/media/libpng/arm/filter_neon_intrinsics.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/arm/filter_neon_intrinsics.c 2026-03-20 19:18:38.000000000 +0000 @@ -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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 -Nru thunderbird-140.8.0esr/media/libpng/intel/filter_sse2_intrinsics.c thunderbird-140.9.0esr/media/libpng/intel/filter_sse2_intrinsics.c --- thunderbird-140.8.0esr/media/libpng/intel/filter_sse2_intrinsics.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/intel/filter_sse2_intrinsics.c 2026-03-20 19:18:37.000000000 +0000 @@ -26,30 +26,39 @@ * 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. @@ -81,8 +90,9 @@ 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. @@ -106,8 +116,9 @@ 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 @@ -119,7 +130,7 @@ const __m128i zero = _mm_setzero_si128(); - __m128i b; + __m128i b; __m128i a, d = zero; png_debug(1, "in png_read_filter_row_avg3_sse2"); @@ -161,8 +172,9 @@ } } -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 @@ -171,7 +183,7 @@ */ 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"); @@ -198,7 +210,9 @@ } /* 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 @@ -217,7 +231,9 @@ } /* 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 @@ -225,8 +241,9 @@ #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: @@ -324,8 +341,9 @@ } } -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 -Nru thunderbird-140.8.0esr/media/libpng/libpng-manual.txt thunderbird-140.9.0esr/media/libpng/libpng-manual.txt --- thunderbird-140.8.0esr/media/libpng/libpng-manual.txt 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/libpng-manual.txt 2026-03-20 19:18:37.000000000 +0000 @@ -1,6 +1,6 @@ libpng-manual.txt - A description on how to use and modify libpng - Copyright (c) 2018-2025 Cosmin Truta + Copyright (c) 2018-2026 Cosmin Truta Copyright (c) 1998-2018 Glenn Randers-Pehrson This document is released under the libpng license. @@ -9,9 +9,9 @@ Based on: - libpng version 1.6.36, December 2018, through 1.6.47 - February 2025 + libpng version 1.6.36, December 2018, through 1.6.55 - February 2026 Updated and distributed by Cosmin Truta - Copyright (c) 2018-2025 Cosmin Truta + Copyright (c) 2018-2026 Cosmin Truta libpng versions 0.97, January 1998, through 1.6.35 - July 2018 Updated and distributed by Glenn Randers-Pehrson @@ -65,18 +65,22 @@ of reducing the amount of time and effort it takes to support the PNG file format in application programs. -The PNG specification (second edition), November 2003, is available as +The PNG specification (Third Edition), June 2025, is available as +a W3C Recommendation at +. + +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 @@ -3351,19 +3355,6 @@ /* 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 @@ -4089,7 +4080,7 @@ 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. @@ -4164,7 +4155,7 @@ int convert_to_8_bit, const void *buffer, png_int_32 row_stride, const void *colormap) - Write the image to the given (FILE*). + Write the image to the given FILE object. 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 -Nru thunderbird-140.8.0esr/media/libpng/loongarch/filter_lsx_intrinsics.c thunderbird-140.9.0esr/media/libpng/loongarch/filter_lsx_intrinsics.c --- thunderbird-140.8.0esr/media/libpng/loongarch/filter_lsx_intrinsics.c 2026-02-19 21:35:07.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/loongarch/filter_lsx_intrinsics.c 2026-03-20 19:18:37.000000000 +0000 @@ -102,8 +102,9 @@ 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; @@ -165,8 +166,9 @@ } } -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; @@ -199,8 +201,9 @@ } } -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; @@ -222,8 +225,9 @@ } } -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; @@ -275,8 +279,9 @@ } } -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; @@ -306,9 +311,9 @@ } } -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; @@ -371,9 +376,9 @@ } } -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 -Nru thunderbird-140.8.0esr/media/libpng/loongarch/loongarch_lsx_init.c thunderbird-140.9.0esr/media/libpng/loongarch/loongarch_lsx_init.c --- thunderbird-140.8.0esr/media/libpng/loongarch/loongarch_lsx_init.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/loongarch/loongarch_lsx_init.c 2026-03-20 19:18:37.000000000 +0000 @@ -17,7 +17,8 @@ #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 -Nru thunderbird-140.8.0esr/media/libpng/mips/filter_mmi_inline_assembly.c thunderbird-140.9.0esr/media/libpng/mips/filter_mmi_inline_assembly.c --- thunderbird-140.8.0esr/media/libpng/mips/filter_mmi_inline_assembly.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/mips/filter_mmi_inline_assembly.c 2026-03-20 19:18:37.000000000 +0000 @@ -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_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_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_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_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_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_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 -Nru thunderbird-140.8.0esr/media/libpng/mips/filter_msa_intrinsics.c thunderbird-140.9.0esr/media/libpng/mips/filter_msa_intrinsics.c --- thunderbird-140.8.0esr/media/libpng/mips/filter_msa_intrinsics.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/mips/filter_msa_intrinsics.c 2026-03-20 19:18:38.000000000 +0000 @@ -363,8 +363,9 @@ 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; @@ -454,8 +455,9 @@ } } -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; @@ -493,8 +495,9 @@ } } -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; @@ -538,8 +541,9 @@ } } -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; @@ -589,8 +593,9 @@ } } -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; @@ -650,9 +655,9 @@ } } -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; @@ -721,9 +726,9 @@ } } -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 -Nru thunderbird-140.8.0esr/media/libpng/mips/mips_init.c thunderbird-140.9.0esr/media/libpng/mips/mips_init.c --- thunderbird-140.8.0esr/media/libpng/mips/mips_init.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/mips/mips_init.c 2026-03-20 19:18:37.000000000 +0000 @@ -48,7 +48,7 @@ #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 @@ #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; set: -DPNG_ALIGNED_MEMORY_SUPPORTED" +# error ALIGNED_MEMORY is required; please define PNG_ALIGNED_MEMORY_SUPPORTED #endif /* MIPS supports two optimizations: MMI and MSA. The appropriate diff -Nru thunderbird-140.8.0esr/media/libpng/moz.build thunderbird-140.9.0esr/media/libpng/moz.build --- thunderbird-140.8.0esr/media/libpng/moz.build 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/moz.build 2026-03-20 19:18:38.000000000 +0000 @@ -13,7 +13,11 @@ 'pnglibconf.h' ] -UNIFIED_SOURCES += [ +# 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 += [ 'png.c', 'pngerror.c', 'pngget.c', @@ -38,7 +42,7 @@ if CONFIG['TARGET_CPU'] == 'arm' or CONFIG['TARGET_CPU'] == 'aarch64': DEFINES['MOZ_PNG_USE_ARM_NEON'] = True - UNIFIED_SOURCES += [ + SOURCES += [ 'arm/arm_init.c', 'arm/filter_neon_intrinsics.c', 'arm/palette_neon_intrinsics.c' @@ -51,14 +55,14 @@ if CONFIG['INTEL_ARCHITECTURE']: DEFINES['MOZ_PNG_USE_INTEL_SSE'] = True - UNIFIED_SOURCES += [ + SOURCES += [ 'intel/filter_sse2_intrinsics.c', 'intel/intel_init.c' ] if CONFIG['TARGET_CPU'] in ('mips32', 'mips64'): DEFINES['MOZ_PNG_USE_MIPS_MSA'] = True - UNIFIED_SOURCES += [ + SOURCES += [ 'mips/filter_mmi_inline_assembly.c', 'mips/filter_msa_intrinsics.c', 'mips/mips_init.c' @@ -66,7 +70,7 @@ if CONFIG['HAVE_ALTIVEC']: DEFINES['MOZ_PNG_USE_POWERPC'] = True - UNIFIED_SOURCES += [ + SOURCES += [ 'powerpc/filter_vsx_intrinsics.c', 'powerpc/powerpc_init.c' ] @@ -74,7 +78,7 @@ if CONFIG['TARGET_CPU'] == 'loongarch64': DEFINES['MOZ_PNG_USE_LOONGARCH_LSX'] = True CFLAGS += ['-mlsx'] - UNIFIED_SOURCES += [ + SOURCES += [ 'loongarch/filter_lsx_intrinsics.c', 'loongarch/loongarch_lsx_init.c', ] diff -Nru thunderbird-140.8.0esr/media/libpng/moz.yaml thunderbird-140.9.0esr/media/libpng/moz.yaml --- thunderbird-140.8.0esr/media/libpng/moz.yaml 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/moz.yaml 2026-03-20 19:18:38.000000000 +0000 @@ -11,9 +11,8 @@ url: "http://www.libpng.org/pub/png/libpng.html" license: libpng - release: v1.6.47 (2025-02-18T11:18:30+02:00). - - revision: "v1.6.43" + release: v1.6.55 (2026-02-09T22:02:20+02:00). + revision: v1.6.55 license-file: LICENSE @@ -25,7 +24,7 @@ enabled: True vendoring: - url: https://github.com/glennrp/libpng + url: https://github.com/pnggroup/libpng source-hosting: github tracking: tag diff -Nru thunderbird-140.8.0esr/media/libpng/png.c thunderbird-140.9.0esr/media/libpng/png.c --- thunderbird-140.8.0esr/media/libpng/png.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/png.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,6 +1,6 @@ /* png.c - location for general purpose libpng functions * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018-2026 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_47 Your_png_h_is_not_version_1_6_47; +typedef png_libpng_version_1_6_55 Your_png_h_is_not_version_1_6_55; /* Sanity check the chunks definitions - PNG_KNOWN_CHUNKS from pngpriv.h and the * corresponding macro definitions. This causes a compile time failure if @@ -101,17 +101,24 @@ #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; - if (items >= (~(png_alloc_size_t)0)/size) + /* 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) { - 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; } @@ -238,10 +245,6 @@ png_warning(png_ptr, m); #endif -#ifdef PNG_ERROR_NUMBERS_SUPPORTED - png_ptr->flags = 0; -#endif - return 0; } @@ -255,7 +258,8 @@ 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 @@ -359,7 +363,8 @@ /* 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; @@ -700,7 +705,7 @@ * function of your own because "FILE *" isn't necessarily available. */ void PNGAPI -png_init_io(png_structrp png_ptr, png_FILE_p fp) +png_init_io(png_structrp png_ptr, FILE *fp) { png_debug(1, "in png_init_io"); @@ -815,8 +820,8 @@ return PNG_STRING_COPYRIGHT #else return PNG_STRING_NEWLINE \ - "libpng version 1.6.47" PNG_STRING_NEWLINE \ - "Copyright (c) 2018-2025 Cosmin Truta" PNG_STRING_NEWLINE \ + "libpng version 1.6.55" PNG_STRING_NEWLINE \ + "Copyright (c) 2018-2026 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 \ @@ -1491,7 +1496,7 @@ } #endif /* COLORSPACE */ -#ifdef PNG_iCCP_SUPPORTED +#ifdef PNG_READ_iCCP_SUPPORTED /* Error message generation */ static char png_icc_tag_char(png_uint_32 byte) @@ -1567,9 +1572,7 @@ 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: * @@ -2257,8 +2260,8 @@ 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)) @@ -3969,7 +3972,7 @@ # 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 -Nru thunderbird-140.8.0esr/media/libpng/png.h thunderbird-140.9.0esr/media/libpng/png.h --- thunderbird-140.8.0esr/media/libpng/png.h 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/png.h 2026-03-20 19:18:38.000000000 +0000 @@ -1,8 +1,8 @@ /* png.h - header file for PNG reference library * - * libpng version 1.6.47 + * libpng version 1.6.55 * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018-2026 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.47, February 2025: + * libpng versions 1.6.36, December 2018, through 1.6.55, February 2026: * Cosmin Truta * See also "Contributing Authors", below. */ @@ -26,8 +26,8 @@ * PNG Reference Library License version 2 * --------------------------------------- * - * * Copyright (c) 1995-2025 The PNG Reference Library Authors. - * * Copyright (c) 2018-2025 Cosmin Truta. + * * Copyright (c) 1995-2026 The PNG Reference Library Authors. + * * Copyright (c) 2018-2026 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.47 16 10647 16.so.16.47[.0] + * 1.6.55 16 10655 16.so.16.55[.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.47" +#define PNG_LIBPNG_VER_STRING "1.6.55" #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 47 +#define PNG_LIBPNG_VER_RELEASE 55 /* 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 10647 /* 1.6.47 */ +#define PNG_LIBPNG_VER 10655 /* 1.6.55 */ /* Library configuration: these options cannot be changed after * the library has been built. @@ -441,7 +441,7 @@ /* 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_47; +typedef char *png_libpng_version_1_6_55; /* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. * @@ -800,20 +800,25 @@ * 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 @@ -826,19 +831,19 @@ * 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 */ @@ -896,9 +901,10 @@ * 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 @@ -930,20 +936,22 @@ */ /* 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). @@ -952,21 +960,21 @@ /* 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. @@ -979,8 +987,8 @@ * 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 @@ -992,67 +1000,77 @@ * 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 @@ -1062,45 +1080,54 @@ */ #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 @@ -1110,18 +1137,20 @@ #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 @@ -1166,10 +1195,10 @@ #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) @@ -1259,51 +1288,57 @@ */ #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) || \ @@ -1314,12 +1349,14 @@ * 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 @@ -1328,10 +1365,12 @@ * 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 @@ -1344,20 +1383,23 @@ #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 @@ -1379,82 +1421,92 @@ * 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 @@ -1484,8 +1536,8 @@ /* 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 @@ -1514,11 +1566,14 @@ #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 */ @@ -1537,44 +1592,44 @@ * 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 */ @@ -1589,7 +1644,8 @@ #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, png_FILE_p fp)); +PNG_EXPORT(74, void, png_init_io, + (png_structrp png_ptr, FILE *fp)); #endif /* Replace the (error and abort), and warning functions with user @@ -1600,11 +1656,13 @@ * 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. @@ -1616,47 +1674,54 @@ * 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 @@ -1671,8 +1736,10 @@ * 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 @@ -1695,28 +1762,32 @@ * 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 @@ -1726,7 +1797,8 @@ * '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 @@ -1734,45 +1806,53 @@ * 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 @@ -1792,36 +1872,42 @@ #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)) @@ -1830,17 +1916,17 @@ #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 @@ -1864,169 +1950,181 @@ * 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. */ @@ -2035,11 +2133,12 @@ #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. */ @@ -2048,64 +2147,73 @@ #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(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(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)); #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)); -#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(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(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(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, @@ -2118,19 +2226,21 @@ #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 */ @@ -2146,95 +2256,107 @@ #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(152, void, png_set_PLTE, (png_structrp png_ptr, - png_inforp info_ptr, png_const_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)); #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, @@ -2245,35 +2367,41 @@ */ #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, @@ -2282,21 +2410,22 @@ * 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 @@ -2399,7 +2528,8 @@ * 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 */ @@ -2407,14 +2537,14 @@ * 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 @@ -2425,43 +2555,47 @@ */ 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 */ @@ -2475,71 +2609,74 @@ * 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 */ @@ -2664,21 +2801,26 @@ #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. @@ -2686,7 +2828,8 @@ * 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 @@ -2733,10 +2876,10 @@ #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 */ @@ -3100,24 +3243,25 @@ * 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. * @@ -3150,7 +3294,8 @@ * 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. */ @@ -3174,15 +3319,17 @@ * 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*). */ +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. */ #endif /* SIMPLIFIED_WRITE_STDIO */ /* With all write APIs if image is in one of the linear formats with 16-bit @@ -3206,9 +3353,11 @@ * 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. @@ -3322,26 +3471,45 @@ * 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 /* HARDWARE: ARM Neon SIMD instructions supported */ +# define PNG_ARM_NEON 0 #endif -#define PNG_MAXIMUM_INFLATE_WINDOW 2 /* SOFTWARE: force maximum window */ -#define PNG_SKIP_sRGB_CHECK_PROFILE 4 /* SOFTWARE: Check ICC profile for sRGB */ + +/* 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 */ #ifdef PNG_MIPS_MSA_API_SUPPORTED -# define PNG_MIPS_MSA 6 /* HARDWARE: MIPS Msa SIMD instructions supported */ +# define PNG_MIPS_MSA 6 #endif + +/* SOFTWARE: Disable Adler32 check on IDAT */ #ifdef PNG_DISABLE_ADLER32_CHECK_SUPPORTED -# define PNG_IGNORE_ADLER32 8 /* SOFTWARE: disable Adler32 check on IDAT */ +# define PNG_IGNORE_ADLER32 8 #endif + +/* HARDWARE: PowerPC VSX SIMD instructions supported */ #ifdef PNG_POWERPC_VSX_API_SUPPORTED -# define PNG_POWERPC_VSX 10 /* HARDWARE: PowerPC VSX SIMD instructions - * supported */ +# define PNG_POWERPC_VSX 10 #endif + +/* HARDWARE: MIPS MMI SIMD instructions supported */ #ifdef PNG_MIPS_MMI_API_SUPPORTED -# define PNG_MIPS_MMI 12 /* HARDWARE: MIPS MMI SIMD instructions supported */ +# define PNG_MIPS_MMI 12 +#endif + +/* HARDWARE: RISC-V RVV SIMD instructions supported */ +#ifdef PNG_RISCV_RVV_API_SUPPORTED +# define PNG_RISCV_RVV 14 #endif -#define PNG_OPTION_NEXT 14 /* Next option - numbers must be even */ +/* Next option - numbers must be even */ +#define PNG_OPTION_NEXT 16 /* Return values: NOTE: there are four values and 'off' is *not* zero */ #define PNG_OPTION_UNSET 0 /* Unset - defaults to off */ @@ -3437,7 +3605,7 @@ #ifdef PNG_APNG_SUPPORTED PNG_EXPORT_LAST_ORDINAL(279); #else - PNG_EXPORT_LAST_ORDINAL(259); + PNG_EXPORT_LAST_ORDINAL(259); #endif /* APNG */ #endif diff -Nru thunderbird-140.8.0esr/media/libpng/pngconf.h thunderbird-140.9.0esr/media/libpng/pngconf.h --- thunderbird-140.8.0esr/media/libpng/pngconf.h 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngconf.h 2026-03-20 19:18:38.000000000 +0000 @@ -1,8 +1,8 @@ /* pngconf.h - machine-configurable file for libpng * - * libpng version 1.6.47 + * libpng version 1.6.55 * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018-2026 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,25 +219,13 @@ /* 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 -# 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 */ +# define PNG_DLL_EXPORT __declspec(dllexport) +# ifndef PNG_DLL_IMPORT +# define PNG_DLL_IMPORT __declspec(dllimport) +# endif #else /* !Windows */ # if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) @@ -479,7 +467,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 @@ -487,7 +475,7 @@ #elif SHRT_MIN == -32768 && SHRT_MAX == 32767 typedef short png_int_16; #else -# error "libpng requires a signed 16-bit type" +# error libpng requires a signed 16-bit integer type #endif #if UINT_MAX == 65535 @@ -495,7 +483,7 @@ #elif USHRT_MAX == 65535 typedef unsigned short png_uint_16; #else -# error "libpng requires an unsigned 16-bit type" +# error libpng requires an unsigned 16-bit integer type #endif #if INT_MIN < -2147483646 && INT_MAX > 2147483646 @@ -503,7 +491,7 @@ #elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 typedef long int png_int_32; #else -# error "libpng requires a signed 32-bit (or more) type" +# error libpng requires a signed 32-bit (or longer) integer type #endif #if UINT_MAX > 4294967294U @@ -511,7 +499,7 @@ #elif ULONG_MAX > 4294967294U typedef unsigned long int png_uint_32; #else -# error "libpng requires an unsigned 32-bit (or more) type" +# error libpng requires an unsigned 32-bit (or longer) integer type #endif /* Prior to 1.6.0, it was possible to disable the use of size_t and ptrdiff_t. @@ -592,10 +580,6 @@ 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; @@ -617,6 +601,15 @@ /* 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 -Nru thunderbird-140.8.0esr/media/libpng/pngdebug.h thunderbird-140.9.0esr/media/libpng/pngdebug.h --- thunderbird-140.8.0esr/media/libpng/pngdebug.h 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngdebug.h 2026-03-20 19:18:38.000000000 +0000 @@ -1,6 +1,6 @@ -/* pngdebug.h - Debugging macros for libpng, also used in pngtest.c +/* pngdebug.h - internal debugging macros for libpng * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2025 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,6 +10,10 @@ * 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 @@ -34,9 +38,6 @@ #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 -Nru thunderbird-140.8.0esr/media/libpng/pngerror.c thunderbird-140.9.0esr/media/libpng/pngerror.c --- thunderbird-140.8.0esr/media/libpng/pngerror.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngerror.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,6 +1,6 @@ /* pngerror.c - stub functions for i/o and memory allocation * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 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,46 +39,6 @@ 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); @@ -89,7 +49,8 @@ } #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 @@ -216,21 +177,6 @@ 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); @@ -431,8 +377,8 @@ }; 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; @@ -511,8 +457,8 @@ #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); @@ -569,7 +515,8 @@ #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) @@ -712,42 +659,9 @@ PNG_NORETURN) { #ifdef PNG_CONSOLE_IO_SUPPORTED -#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); - } + fprintf(stderr, "libpng error: %s", error_message ? error_message : + "undefined"); + fprintf(stderr, PNG_STRING_NEWLINE); #else PNG_UNUSED(error_message) /* Make compiler happy */ #endif @@ -755,7 +669,8 @@ } 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 && @@ -785,40 +700,8 @@ png_default_warning(png_const_structrp png_ptr, png_const_charp warning_message) { #ifdef PNG_CONSOLE_IO_SUPPORTED -# 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); - } + fprintf(stderr, "libpng warning: %s", warning_message); + fprintf(stderr, PNG_STRING_NEWLINE); #else PNG_UNUSED(warning_message) /* Make compiler happy */ #endif @@ -866,12 +749,8 @@ void PNGAPI png_set_strip_error_numbers(png_structrp png_ptr, png_uint_32 strip_mode) { - if (png_ptr != NULL) - { - png_ptr->flags &= - ((~(PNG_FLAG_STRIP_ERROR_NUMBERS | - PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode); - } + PNG_UNUSED(png_ptr) + PNG_UNUSED(strip_mode) } #endif diff -Nru thunderbird-140.8.0esr/media/libpng/pngget.c thunderbird-140.9.0esr/media/libpng/pngget.c --- thunderbird-140.8.0esr/media/libpng/pngget.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngget.c 2026-03-20 19:18:37.000000000 +0000 @@ -1,6 +1,6 @@ /* pngget.c - retrieval of values from info struct * - * Copyright (c) 2018-2024 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. @@ -122,8 +122,8 @@ } 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_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 @@ #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,7 +737,6 @@ } return 0; - } #endif diff -Nru thunderbird-140.8.0esr/media/libpng/pnginfo.h thunderbird-140.9.0esr/media/libpng/pnginfo.h --- thunderbird-140.8.0esr/media/libpng/pnginfo.h 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pnginfo.h 2026-03-20 19:18:37.000000000 +0000 @@ -1,6 +1,6 @@ -/* pnginfo.h - header file for PNG reference library +/* pnginfo.h - internal structures for libpng * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2025 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,43 +10,20 @@ * and license in png.h */ - /* 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(). - * - * The names chosen should be very close to the PNG specification, so - * consult that document for information about the meaning of each field. - * - * 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. +#ifndef PNGPRIV_H +# error This file must not be included by applications; please include +#endif + +/* INTERNAL, PRIVATE definition of a PNG. * - * 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. + * 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. + * + * 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. */ #ifndef PNGINFO_H #define PNGINFO_H diff -Nru thunderbird-140.8.0esr/media/libpng/pngmem.c thunderbird-140.9.0esr/media/libpng/pngmem.c --- thunderbird-140.8.0esr/media/libpng/pngmem.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngmem.c 2026-03-20 19:18:37.000000000 +0000 @@ -1,6 +1,6 @@ /* pngmem.c - stub functions for memory allocation * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2025 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,7 +46,8 @@ * 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; @@ -118,7 +119,8 @@ 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"); @@ -128,7 +130,8 @@ 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 || @@ -167,7 +170,8 @@ * 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; @@ -241,7 +245,8 @@ } 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; @@ -255,8 +260,8 @@ * 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 -Nru thunderbird-140.8.0esr/media/libpng/pngpread.c thunderbird-140.9.0esr/media/libpng/pngpread.c --- thunderbird-140.8.0esr/media/libpng/pngpread.c 2026-02-19 21:35:07.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngpread.c 2026-03-20 19:18:37.000000000 +0000 @@ -1,6 +1,6 @@ /* pngpread.c - read a png file in push mode * - * Copyright (c) 2018-2024 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. @@ -312,6 +312,14 @@ 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 -Nru thunderbird-140.8.0esr/media/libpng/pngpriv.h thunderbird-140.9.0esr/media/libpng/pngpriv.h --- thunderbird-140.8.0esr/media/libpng/pngpriv.h 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngpriv.h 2026-03-20 19:18:37.000000000 +0000 @@ -1,6 +1,6 @@ /* pngpriv.h - private declarations for use inside libpng * - * Copyright (c) 2018-2024 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. @@ -19,8 +19,20 @@ * 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 +# 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 /* Feature Test Macros. The following are defined here to ensure that correctly * implemented libraries reveal the APIs libpng needs to build and hide those @@ -57,7 +69,6 @@ */ #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 @@ -67,9 +78,7 @@ * 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. */ -#ifndef PNGLCONF_H -# include "pnglibconf.h" -#endif +#include "pnglibconf.h" /* Local renames may change non-exported API functions from png.h */ #if defined(PNG_PREFIX) && !defined(PNGPREFIX_H) @@ -134,6 +143,20 @@ # 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. @@ -279,6 +302,16 @@ # 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. @@ -681,7 +714,7 @@ /* #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000U */ /* #define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000U */ #define PNG_FLAG_LIBRARY_MISMATCH 0x20000U -#define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000U + /* 0x40000U unused */ #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 */ @@ -1005,17 +1038,15 @@ * 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 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. +# 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. * - * 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. + * 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. */ #endif @@ -1058,15 +1089,17 @@ */ /* 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 @@ -1078,22 +1111,25 @@ 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 @@ -1118,24 +1154,28 @@ * 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 @@ -1144,84 +1184,106 @@ * 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 */ @@ -1229,68 +1291,86 @@ /* 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_EMPTY); +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_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_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. @@ -1298,82 +1378,106 @@ #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 @@ -1401,8 +1505,9 @@ #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 @@ -1411,153 +1516,230 @@ * 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); +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); #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) @@ -1565,38 +1747,44 @@ #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, @@ -1617,25 +1805,27 @@ 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. */ @@ -1643,46 +1833,65 @@ /* 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 @@ -1731,48 +1940,58 @@ #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_EMPTY); +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. @@ -1783,8 +2002,9 @@ * 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) \ @@ -1816,23 +2036,26 @@ 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. @@ -1854,14 +2077,16 @@ * 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. */ @@ -1870,8 +2095,9 @@ # 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 @@ -1897,14 +2123,17 @@ #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 */ @@ -1996,8 +2225,9 @@ * 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 @@ -2005,8 +2235,9 @@ * 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) ||\ @@ -2019,14 +2250,17 @@ * 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 @@ -2035,11 +2269,13 @@ * 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 @@ -2050,8 +2286,9 @@ * 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, @@ -2060,37 +2297,45 @@ * 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_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); -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 { @@ -2118,28 +2363,34 @@ * 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 */ @@ -2150,8 +2401,9 @@ * 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 @@ -2160,32 +2412,44 @@ */ # 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 -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_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); #if PNG_ARM_NEON_IMPLEMENTATION == 1 PNG_INTERNAL_FUNCTION(void, @@ -2219,4 +2483,3 @@ #endif #endif /* PNG_VERSION_INFO_ONLY */ -#endif /* PNGPRIV_H */ diff -Nru thunderbird-140.8.0esr/media/libpng/pngread.c thunderbird-140.9.0esr/media/libpng/pngread.c --- thunderbird-140.8.0esr/media/libpng/pngread.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngread.c 2026-03-20 19:18:37.000000000 +0000 @@ -1,6 +1,6 @@ /* pngread.c - read a PNG file * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018-2026 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,7 +23,8 @@ /* 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, @@ -39,7 +40,8 @@ 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); @@ -599,7 +601,6 @@ if (png_ptr->read_row_fn != NULL) (*(png_ptr->read_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass); - } #endif /* SEQUENTIAL_READ */ @@ -782,7 +783,12 @@ png_uint_32 chunk_name = png_ptr->chunk_name; if (chunk_name != png_IDAT) - png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_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; + } if (chunk_name == png_IEND) png_handle_chunk(png_ptr, info_ptr, length); @@ -889,7 +895,8 @@ #endif #if defined(PNG_READ_EXPAND_SUPPORTED) && \ - defined(PNG_ARM_NEON_IMPLEMENTATION) + (defined(PNG_ARM_NEON_IMPLEMENTATION) || \ + defined(PNG_RISCV_RVV_IMPLEMENTATION)) png_free(png_ptr, png_ptr->riffled_palette); png_ptr->riffled_palette = NULL; #endif @@ -941,7 +948,7 @@ #ifdef PNG_INFO_IMAGE_SUPPORTED void PNGAPI png_read_png(png_structrp png_ptr, png_inforp info_ptr, - int transforms, voidp params) + int transforms, png_voidp params) { png_debug(1, "in png_read_png"); @@ -1178,19 +1185,20 @@ 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; - /* 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 */ + + /* 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 */ } png_image_read_control; /* Do all the *safe* initialization - 'safe' means that png_error won't be @@ -1408,7 +1416,7 @@ #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) { @@ -2911,17 +2919,17 @@ } { - 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; + 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; 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) { @@ -2945,7 +2953,7 @@ for (; ylocal_row); - png_bytep outrow = first_row + y * step_row; + png_bytep outrow = first_row + y * row_step; png_const_bytep end_row = outrow + width; /* Read read the libpng data into the temporary buffer. */ @@ -3154,20 +3162,20 @@ */ { png_voidp first_row = display->buffer; - ptrdiff_t row_bytes = display->row_stride; + ptrdiff_t row_step = display->row_stride; - /* The following expression is designed to work correctly whether it gives - * a signed or an unsigned result. + /* The following adjustment is to ensure that calculations are correct, + * regardless whether row_step is positive or negative. */ - if (row_bytes < 0) + if (row_step < 0) { char *ptr = png_voidcast(char*, first_row); - ptr += (image->height-1) * (-row_bytes); + ptr += (image->height-1) * (-row_step); first_row = png_voidcast(png_voidp, ptr); } display->first_row = first_row; - display->row_bytes = row_bytes; + display->row_step = row_step; } if (passes == 0) @@ -3185,17 +3193,17 @@ else { - png_alloc_size_t row_bytes = (png_alloc_size_t)display->row_bytes; + ptrdiff_t row_step = display->row_step; 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_bytes; + row += row_step; } } @@ -3203,6 +3211,61 @@ } } +/* 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) @@ -3228,17 +3291,18 @@ } { - png_uint_32 height = image->height; - png_uint_32 width = image->width; - ptrdiff_t step_row = display->row_bytes; + png_uint_32 height = image->height; + png_uint_32 width = image->width; + ptrdiff_t row_step = display->row_step; 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) { @@ -3270,7 +3334,7 @@ png_read_row(png_ptr, inrow, NULL); outrow = png_voidcast(png_bytep, display->first_row); - outrow += y * step_row; + outrow += y * row_step; end_row = outrow + width * channels; /* Now do the composition on each pixel in this row. */ @@ -3289,20 +3353,44 @@ if (alpha < 255) /* else just use component */ { - /* 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]]; + 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]]; - /* So 'component' is scaled by 255*65535 and is - * therefore appropriate for the sRGB to linear - * conversion table. - */ - component = PNG_sRGB_FROM_LINEAR(component); + /* 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; + } } outrow[c] = (png_byte)component; @@ -3391,12 +3479,12 @@ */ { png_bytep first_row = png_voidcast(png_bytep, display->first_row); - ptrdiff_t step_row = display->row_bytes; + ptrdiff_t row_step = display->row_step; 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) { @@ -3423,7 +3511,7 @@ { png_bytep inrow = png_voidcast(png_bytep, display->local_row); - png_bytep outrow = first_row + y * step_row; + png_bytep outrow = first_row + y * row_step; png_const_bytep end_row = outrow + width; /* Read the row, which is packed: */ @@ -3468,7 +3556,7 @@ { png_bytep inrow = png_voidcast(png_bytep, display->local_row); - png_bytep outrow = first_row + y * step_row; + png_bytep outrow = first_row + y * row_step; png_const_bytep end_row = outrow + width; /* Read the row, which is packed: */ @@ -3514,9 +3602,9 @@ 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_bytes. + * stride which was multiplied by 2 (below) to get row_step. */ - ptrdiff_t step_row = display->row_bytes / 2; + ptrdiff_t row_step = display->row_step / 2; unsigned int preserve_alpha = (image->format & PNG_FORMAT_FLAG_ALPHA) != 0; unsigned int outchannels = 1U+preserve_alpha; @@ -3530,8 +3618,8 @@ 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. */ @@ -3558,7 +3646,7 @@ for (; yinterlaced != 0) + do_local_scale = 1; + } + change &= ~PNG_FORMAT_FLAG_LINEAR; } @@ -3986,23 +4083,23 @@ */ { png_voidp first_row = display->buffer; - ptrdiff_t row_bytes = display->row_stride; + ptrdiff_t row_step = display->row_stride; if (linear != 0) - row_bytes *= 2; + row_step *= 2; - /* The following expression is designed to work correctly whether it gives - * a signed or an unsigned result. + /* The following adjustment is to ensure that calculations are correct, + * regardless whether row_step is positive or negative. */ - if (row_bytes < 0) + if (row_step < 0) { char *ptr = png_voidcast(char*, first_row); - ptr += (image->height-1) * (-row_bytes); + ptr += (image->height - 1) * (-row_step); first_row = png_voidcast(png_voidp, ptr); } display->first_row = first_row; - display->row_bytes = row_bytes; + display->row_step = row_step; } if (do_local_compose != 0) @@ -4031,19 +4128,37 @@ 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 { - png_alloc_size_t row_bytes = (png_alloc_size_t)display->row_bytes; + ptrdiff_t row_step = display->row_step; 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_bytes; + row += row_step; } } diff -Nru thunderbird-140.8.0esr/media/libpng/pngrio.c thunderbird-140.9.0esr/media/libpng/pngrio.c --- thunderbird-140.8.0esr/media/libpng/pngrio.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngrio.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,6 +1,6 @@ /* pngrio.c - functions for data input * - * Copyright (c) 2018 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. @@ -56,7 +56,7 @@ /* 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(png_FILE_p, png_ptr->io_ptr)); + check = fread(data, 1, length, png_voidcast(FILE *, png_ptr->io_ptr)); if (check != length) png_error(png_ptr, "Read Error"); diff -Nru thunderbird-140.8.0esr/media/libpng/pngrtran.c thunderbird-140.9.0esr/media/libpng/pngrtran.c --- thunderbird-140.8.0esr/media/libpng/pngrtran.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngrtran.c 2026-03-20 19:18:37.000000000 +0000 @@ -1,6 +1,6 @@ /* pngrtran.c - transforms the data in a row for PNG readers * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2026 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,6 +28,12 @@ # 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. */ @@ -495,9 +501,19 @@ { 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_alloc_size_t)num_palette); - for (i = 0; i < num_palette; i++) + PNG_MAX_PALETTE_LENGTH); + for (i = 0; i < PNG_MAX_PALETTE_LENGTH; i++) png_ptr->quantize_index[i] = (png_byte)i; } @@ -509,15 +525,14 @@ * Perhaps not the best solution, but good enough. */ - int i; + png_bytep quantize_sort; + int i, j; - /* Initialize an array to sort colors */ - png_ptr->quantize_sort = (png_bytep)png_malloc(png_ptr, + /* Initialize the local array to sort colors. */ + 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++) - png_ptr->quantize_sort[i] = (png_byte)i; + quantize_sort[i] = (png_byte)i; /* Find the least used palette entries by starting a * bubble sort, and running it until we have sorted @@ -529,19 +544,18 @@ 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[png_ptr->quantize_sort[j]] - < histogram[png_ptr->quantize_sort[j + 1]]) + if (histogram[quantize_sort[j]] + < histogram[quantize_sort[j + 1]]) { png_byte 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; + t = quantize_sort[j]; + quantize_sort[j] = quantize_sort[j + 1]; + quantize_sort[j + 1] = t; done = 0; } } @@ -553,18 +567,18 @@ /* Swap the palette around, and set up a table, if necessary */ if (full_quantize != 0) { - int j = num_palette; + 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)png_ptr->quantize_sort[i] >= maximum_colors) + if ((int)quantize_sort[i] >= maximum_colors) { do j--; - while ((int)png_ptr->quantize_sort[j] >= maximum_colors); + while ((int)quantize_sort[j] >= maximum_colors); palette[i] = palette[j]; } @@ -572,7 +586,7 @@ } else { - int j = num_palette; + j = num_palette; /* Move all the used colors inside the max limit, and * develop a translation table. @@ -580,13 +594,13 @@ for (i = 0; i < maximum_colors; i++) { /* Only move the colors we need to */ - if ((int)png_ptr->quantize_sort[i] >= maximum_colors) + if ((int)quantize_sort[i] >= maximum_colors) { png_color tmp_color; do j--; - while ((int)png_ptr->quantize_sort[j] >= maximum_colors); + while ((int)quantize_sort[j] >= maximum_colors); tmp_color = palette[j]; palette[j] = palette[i]; @@ -624,8 +638,7 @@ } } } - png_free(png_ptr, png_ptr->quantize_sort); - png_ptr->quantize_sort = NULL; + png_free(png_ptr, quantize_sort); } else { @@ -695,8 +708,8 @@ break; t->next = hash[d]; - t->left = (png_byte)i; - t->right = (png_byte)j; + t->left = png_ptr->palette_to_index[i]; + t->right = png_ptr->palette_to_index[j]; hash[d] = t; } } @@ -1107,8 +1120,8 @@ #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"); @@ -1768,19 +1781,51 @@ } else /* if (png_ptr->trans_alpha[i] != 0xff) */ { - 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]; + if ((png_ptr->flags & PNG_FLAG_OPTIMIZE_ALPHA) != 0) + { + /* Premultiply only: + * component = round((component * alpha) / 255) + */ + png_uint_32 component; + + 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]; + + 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]; + + 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]; + } } } else @@ -1798,6 +1843,7 @@ * 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) */ @@ -5003,13 +5049,8 @@ #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 -Nru thunderbird-140.8.0esr/media/libpng/pngrutil.c thunderbird-140.9.0esr/media/libpng/pngrutil.c --- thunderbird-140.8.0esr/media/libpng/pngrutil.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngrutil.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,6 +1,6 @@ /* pngrutil.c - utilities to read a PNG file * - * Copyright (c) 2018-2024 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. @@ -2391,7 +2391,7 @@ 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; @@ -2417,10 +2417,6 @@ } #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) @@ -2468,8 +2464,8 @@ 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"); @@ -2491,10 +2487,6 @@ } #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. @@ -2611,10 +2603,6 @@ } #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) diff -Nru thunderbird-140.8.0esr/media/libpng/pngset.c thunderbird-140.9.0esr/media/libpng/pngset.c --- thunderbird-140.8.0esr/media/libpng/pngset.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngset.c 2026-03-20 19:18:38.000000000 +0000 @@ -300,17 +300,14 @@ double maxDL, double minDL) { png_set_mDCV_fixed(png_ptr, info_ptr, - /* 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(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))"), png_fixed_ITU(png_ptr, maxDL, "png_set_mDCV(maxDL)"), png_fixed_ITU(png_ptr, minDL, "png_set_mDCV(minDL)")); } diff -Nru thunderbird-140.8.0esr/media/libpng/pngstruct.h thunderbird-140.9.0esr/media/libpng/pngstruct.h --- thunderbird-140.8.0esr/media/libpng/pngstruct.h 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngstruct.h 2026-03-20 19:18:38.000000000 +0000 @@ -1,6 +1,6 @@ -/* pngstruct.h - header file for PNG reference library +/* pngstruct.h - internal structures for libpng * - * Copyright (c) 2018-2022 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. @@ -10,11 +10,9 @@ * and license in png.h */ -/* 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 PNGPRIV_H +# error This file must not be included by applications; please include +#endif #ifndef PNGSTRUCT_H #define PNGSTRUCT_H @@ -377,7 +375,8 @@ /* New member added in libpng-1.6.36 */ #if defined(PNG_READ_EXPAND_SUPPORTED) && \ - defined(PNG_ARM_NEON_IMPLEMENTATION) + (defined(PNG_ARM_NEON_IMPLEMENTATION) || \ + defined(PNG_RISCV_RVV_IMPLEMENTATION)) png_bytep riffled_palette; /* buffer for accelerated palette expansion */ #endif @@ -427,7 +426,6 @@ #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 -Nru thunderbird-140.8.0esr/media/libpng/pngtrans.c thunderbird-140.9.0esr/media/libpng/pngtrans.c --- thunderbird-140.8.0esr/media/libpng/pngtrans.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngtrans.c 2026-03-20 19:18:38.000000000 +0000 @@ -802,8 +802,8 @@ 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 -Nru thunderbird-140.8.0esr/media/libpng/pngwio.c thunderbird-140.9.0esr/media/libpng/pngwio.c --- thunderbird-140.8.0esr/media/libpng/pngwio.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngwio.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,6 +1,6 @@ /* pngwio.c - functions for data output * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2025 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 @@ if (png_ptr == NULL) return; - check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr)); + check = fwrite(data, 1, length, (FILE *)png_ptr->io_ptr); if (check != length) png_error(png_ptr, "Write Error"); @@ -77,12 +77,12 @@ void PNGCBAPI png_default_flush(png_structp png_ptr) { - png_FILE_p io_ptr; + FILE *io_ptr; if (png_ptr == NULL) return; - io_ptr = png_voidcast(png_FILE_p, (png_ptr->io_ptr)); + io_ptr = png_voidcast(FILE *, png_ptr->io_ptr); fflush(io_ptr); } # endif diff -Nru thunderbird-140.8.0esr/media/libpng/pngwrite.c thunderbird-140.9.0esr/media/libpng/pngwrite.c --- thunderbird-140.8.0esr/media/libpng/pngwrite.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngwrite.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,6 +1,6 @@ /* pngwrite.c - general routines to write a PNG file * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018-2026 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. @@ -551,7 +551,8 @@ /* 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, @@ -565,7 +566,8 @@ 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); @@ -1385,8 +1387,8 @@ #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"); @@ -1402,7 +1404,7 @@ #ifdef PNG_INFO_IMAGE_SUPPORTED void PNGAPI png_write_png(png_structrp png_ptr, png_inforp info_ptr, - int transforms, voidp params) + int transforms, png_voidp params) { png_debug(1, "in png_write_png"); @@ -1567,18 +1569,20 @@ /* 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; - /* Local variables: */ + int convert_to_8bit; + + /* Instance variables */ png_const_voidp first_row; - ptrdiff_t row_bytes; - png_voidp local_row; + png_voidp local_row; + ptrdiff_t row_step; + /* 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; @@ -1685,7 +1689,7 @@ } png_write_row(png_ptr, png_voidcast(png_const_bytep, display->local_row)); - input_row += (png_uint_16)display->row_bytes/(sizeof (png_uint_16)); + input_row += display->row_step / 2; } return 1; @@ -1811,7 +1815,7 @@ png_write_row(png_ptr, png_voidcast(png_const_bytep, display->local_row)); - input_row += (png_uint_16)display->row_bytes/(sizeof (png_uint_16)); + input_row += display->row_step / 2; } /* while y */ } @@ -1836,7 +1840,7 @@ } png_write_row(png_ptr, output_row); - input_row += (png_uint_16)display->row_bytes/(sizeof (png_uint_16)); + input_row += display->row_step / 2; } } @@ -2152,16 +2156,16 @@ { png_const_bytep row = png_voidcast(png_const_bytep, display->buffer); - ptrdiff_t row_bytes = display->row_stride; + ptrdiff_t row_step = display->row_stride; if (linear != 0) - row_bytes *= (sizeof (png_uint_16)); + row_step *= 2; - if (row_bytes < 0) - row += (image->height-1) * (-row_bytes); + if (row_step < 0) + row += (image->height-1) * (-row_step); display->first_row = row; - display->row_bytes = row_bytes; + display->row_step = row_step; } /* Apply 'fast' options if the flag is set. */ @@ -2182,8 +2186,7 @@ * 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 ) || - (colormap == 0 && display->convert_to_8bit != 0)) + if (linear != 0 && (alpha != 0 || display->convert_to_8bit != 0)) { png_bytep row = png_voidcast(png_bytep, png_malloc(png_ptr, png_get_rowbytes(png_ptr, info_ptr))); @@ -2209,13 +2212,13 @@ else { png_const_bytep row = png_voidcast(png_const_bytep, display->first_row); - ptrdiff_t row_bytes = display->row_bytes; + ptrdiff_t row_step = display->row_step; png_uint_32 y = image->height; for (; y > 0; --y) { png_write_row(png_ptr, row); - row += row_bytes; + row += row_step; } } @@ -2342,7 +2345,7 @@ 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*). */ + /* Write the image to the given FILE object. */ if (image != NULL && image->version == PNG_IMAGE_VERSION) { if (file != NULL && buffer != NULL) diff -Nru thunderbird-140.8.0esr/media/libpng/pngwutil.c thunderbird-140.9.0esr/media/libpng/pngwutil.c --- thunderbird-140.8.0esr/media/libpng/pngwutil.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/pngwutil.c 2026-03-20 19:18:37.000000000 +0000 @@ -1,6 +1,6 @@ /* pngwutil.c - utilities to write a PNG file * - * Copyright (c) 2018-2024 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. @@ -487,10 +487,10 @@ */ 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 diff -Nru thunderbird-140.8.0esr/media/libpng/powerpc/filter_vsx_intrinsics.c thunderbird-140.9.0esr/media/libpng/powerpc/filter_vsx_intrinsics.c --- thunderbird-140.8.0esr/media/libpng/powerpc/filter_vsx_intrinsics.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/powerpc/filter_vsx_intrinsics.c 2026-03-20 19:18:37.000000000 +0000 @@ -23,7 +23,7 @@ #if PNG_POWERPC_VSX_OPT > 0 #ifndef __VSX__ -# error "This code requires VSX support (POWER7 and later). Please provide -mvsx compiler flag." +# error This code requires VSX support (POWER7 and later); please compile with -mvsx #endif #define vec_ld_unaligned(vec,data) vec = vec_vsx_ld(0,data) diff -Nru thunderbird-140.8.0esr/media/libpng/powerpc/powerpc_init.c thunderbird-140.9.0esr/media/libpng/powerpc/powerpc_init.c --- thunderbird-140.8.0esr/media/libpng/powerpc/powerpc_init.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/media/libpng/powerpc/powerpc_init.c 2026-03-20 19:18:37.000000000 +0000 @@ -46,7 +46,7 @@ #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 -Nru thunderbird-140.8.0esr/modules/libpref/init/StaticPrefList.yaml thunderbird-140.9.0esr/modules/libpref/init/StaticPrefList.yaml --- thunderbird-140.8.0esr/modules/libpref/init/StaticPrefList.yaml 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/modules/libpref/init/StaticPrefList.yaml 2026-03-20 19:18:38.000000000 +0000 @@ -13475,6 +13475,12 @@ 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 diff -Nru thunderbird-140.8.0esr/modules/libpref/parser/src/lib.rs thunderbird-140.9.0esr/modules/libpref/parser/src/lib.rs --- thunderbird-140.8.0esr/modules/libpref/parser/src/lib.rs 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/modules/libpref/parser/src/lib.rs 2026-03-20 19:18:38.000000000 +0000 @@ -352,7 +352,8 @@ Parser { path: path, kind: kind, - buf: buf, + // Skip a UTF-8 BOM if present at the start of the input. + buf: buf.strip_prefix(&[0xef, 0xbb, 0xbf]).unwrap_or(buf), i: 0, line_num: 1, pref_fn: pref_fn, diff -Nru thunderbird-140.8.0esr/modules/libpref/test/gtest/Parser.cpp thunderbird-140.9.0esr/modules/libpref/test/gtest/Parser.cpp --- thunderbird-140.8.0esr/modules/libpref/test/gtest/Parser.cpp 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/libpref/test/gtest/Parser.cpp 2026-03-20 19:18:38.000000000 +0000 @@ -492,5 +492,17 @@ "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 -Nru thunderbird-140.8.0esr/modules/zlib/LICENSE thunderbird-140.9.0esr/modules/zlib/LICENSE --- thunderbird-140.8.0esr/modules/zlib/LICENSE 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/LICENSE 2026-03-20 19:18:38.000000000 +0000 @@ -0,0 +1,22 @@ +Copyright notice: + + (C) 1995-2026 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 + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu diff -Nru thunderbird-140.8.0esr/modules/zlib/moz.yaml thunderbird-140.9.0esr/modules/zlib/moz.yaml --- thunderbird-140.8.0esr/modules/zlib/moz.yaml 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/moz.yaml 2026-03-20 19:18:38.000000000 +0000 @@ -0,0 +1,154 @@ +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 -Nru thunderbird-140.8.0esr/modules/zlib/mozzconf.patch thunderbird-140.9.0esr/modules/zlib/mozzconf.patch --- thunderbird-140.8.0esr/modules/zlib/mozzconf.patch 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/mozzconf.patch 2026-03-20 19:18:38.000000000 +0000 @@ -0,0 +1,13 @@ +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 -Nru thunderbird-140.8.0esr/modules/zlib/src/ChangeLog thunderbird-140.9.0esr/modules/zlib/src/ChangeLog --- thunderbird-140.8.0esr/modules/zlib/src/ChangeLog 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/ChangeLog 2026-03-20 19:18:38.000000000 +0000 @@ -1,6 +1,57 @@ 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 -Nru thunderbird-140.8.0esr/modules/zlib/src/ChangeLog.moz thunderbird-140.9.0esr/modules/zlib/src/ChangeLog.moz --- thunderbird-140.8.0esr/modules/zlib/src/ChangeLog.moz 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/ChangeLog.moz 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ - - 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 -Nru thunderbird-140.8.0esr/modules/zlib/src/FAQ thunderbird-140.9.0esr/modules/zlib/src/FAQ --- thunderbird-140.8.0esr/modules/zlib/src/FAQ 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/FAQ 1970-01-01 00:00:00.000000000 +0000 @@ -1,367 +0,0 @@ - - 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 -Nru thunderbird-140.8.0esr/modules/zlib/src/INDEX thunderbird-140.9.0esr/modules/zlib/src/INDEX --- thunderbird-140.8.0esr/modules/zlib/src/INDEX 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/INDEX 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -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 -Nru thunderbird-140.8.0esr/modules/zlib/src/LICENSE thunderbird-140.9.0esr/modules/zlib/src/LICENSE --- thunderbird-140.8.0esr/modules/zlib/src/LICENSE 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/LICENSE 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -Copyright notice: - - (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 - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu diff -Nru thunderbird-140.8.0esr/modules/zlib/src/README thunderbird-140.9.0esr/modules/zlib/src/README --- thunderbird-140.8.0esr/modules/zlib/src/README 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/README 2026-03-20 19:18:39.000000000 +0000 @@ -1,10 +1,10 @@ ZLIB DATA COMPRESSION LIBRARY -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). +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). 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 @@ Questions about zlib should be sent to , or to Gilles Vollant for the Windows DLL version. The zlib home page is -http://zlib.net/ . Before reporting a problem, please check this site to +https://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 http://zlib.net/zlib_faq.html before asking for help. +PLEASE read the zlib FAQ https://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://marknelson.us/posts/1997/01/01/zlib-engine.html . +https://zlib.net/nelson/ . -The changes made in version 1.3.1 are documented in the file ChangeLog. +The changes made in version 1.3.2 are documented in the file ChangeLog. Unsupported third party contributions are provided in directory contrib/ . @@ -43,9 +43,9 @@ A Python interface to zlib written by A.M. Kuchling is available in Python 1.5 and later versions, see -http://docs.python.org/library/zlib.html . +https://docs.python.org/3/library/zlib.html . -zlib is built into tcl: http://wiki.tcl.tk/4610 . +zlib is built into tcl: https://wiki.tcl-lang.org/page/zlib . An experimental package to read and write files in .zip format, written on top of zlib by Gilles Vollant , is available in the @@ -69,9 +69,7 @@ - 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. -- gzdopen is not supported on RISCOS or BEOS. - -- For PalmOs, see http://palmzlib.sourceforge.net/ +- For PalmOs, see https://palmzlib.sourceforge.net/ Acknowledgments: @@ -83,7 +81,7 @@ Copyright notice: - (C) 1995-2024 Jean-loup Gailly and Mark Adler + (C) 1995-2026 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 -Nru thunderbird-140.8.0esr/modules/zlib/src/compress.c thunderbird-140.9.0esr/modules/zlib/src/compress.c --- thunderbird-140.8.0esr/modules/zlib/src/compress.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/compress.c 2026-03-20 19:18:39.000000000 +0000 @@ -1,5 +1,5 @@ /* compress.c -- compress a memory buffer - * Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -18,13 +18,19 @@ 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(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong sourceLen, int level) { +int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, + z_size_t sourceLen, int level) { z_stream stream; int err; const uInt max = (uInt)-1; - uLong left; + z_size_t left; + + if ((sourceLen > 0 && source == NULL) || + destLen == NULL || (*destLen > 0 && dest == NULL)) + return Z_STREAM_ERROR; left = *destLen; *destLen = 0; @@ -43,23 +49,36 @@ do { if (stream.avail_out == 0) { - stream.avail_out = left > (uLong)max ? max : (uInt)left; + stream.avail_out = left > (z_size_t)max ? max : (uInt)left; left -= stream.avail_out; } if (stream.avail_in == 0) { - stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen; + stream.avail_in = sourceLen > (z_size_t)max ? max : + (uInt)sourceLen; sourceLen -= stream.avail_in; } err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH); } while (err == Z_OK); - *destLen = stream.total_out; + *destLen = (z_size_t)(stream.next_out - dest); 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); @@ -69,7 +88,12 @@ 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) { - return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13; + z_size_t bound = compressBound_z(sourceLen); + return (uLong)bound != bound ? (uLong)-1 : (uLong)bound; } diff -Nru thunderbird-140.8.0esr/modules/zlib/src/crc32.c thunderbird-140.9.0esr/modules/zlib/src/crc32.c --- thunderbird-140.8.0esr/modules/zlib/src/crc32.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/crc32.c 2026-03-20 19:18:39.000000000 +0000 @@ -1,5 +1,5 @@ /* crc32.c -- compute the CRC-32 of a data stream - * Copyright (C) 1995-2022 Mark Adler + * Copyright (C) 1995-2026 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,11 +24,18 @@ # include # ifndef DYNAMIC_CRC_TABLE # define DYNAMIC_CRC_TABLE -# endif /* !DYNAMIC_CRC_TABLE */ -#endif /* MAKECRCH */ +# endif +#endif +#ifdef DYNAMIC_CRC_TABLE +# define Z_ONCE +#endif #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 @@ -99,7 +106,8 @@ #endif /* If available, use the ARM processor CRC32 instruction. */ -#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8 +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && \ + defined(W) && W == 8 # define ARMCRC32 #endif @@ -152,10 +160,10 @@ 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 z_crc_t multmodp(z_crc_t a, z_crc_t b) { - z_crc_t m, p; +local uLong multmodp(uLong a, uLong b) { + uLong m, p; - m = (z_crc_t)1 << 31; + m = (uLong)1 << 31; p = 0; for (;;) { if (a & m) { @@ -171,12 +179,12 @@ /* Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been - initialized. + initialized. n must not be negative. */ -local z_crc_t x2nmodp(z_off64_t n, unsigned k) { - z_crc_t p; +local uLong x2nmodp(z_off64_t n, unsigned k) { + uLong p; - p = (z_crc_t)1 << 31; /* x^0 == 1 */ + p = (uLong)1 << 31; /* x^0 == 1 */ while (n) { if (n & 1) p = multmodp(x2n_table[k & 31], p); @@ -204,83 +212,8 @@ 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 once_t made = ONCE_INIT; +local z_once_t made = Z_ONCE_INIT; /* Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: @@ -326,7 +259,7 @@ p = (z_crc_t)1 << 30; /* x^1 */ x2n_table[0] = p; for (n = 1; n < 32; n++) - x2n_table[n] = p = multmodp(p, p); + x2n_table[n] = p = (z_crc_t)multmodp(p, p); #ifdef W /* initialize the braiding tables -- needs x2n_table[] */ @@ -529,11 +462,11 @@ int k; z_crc_t i, p, q; for (k = 0; k < w; k++) { - p = x2nmodp((n * w + 3 - k) << 3, 0); + p = (z_crc_t)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 = multmodp(i << 24, p); + ltl[k][i] = q = (z_crc_t)multmodp(i << 24, p); big[w - 1 - k][i] = byte_swap(q); } } @@ -548,7 +481,7 @@ */ const z_crc_t FAR * ZEXPORT get_crc_table(void) { #ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ return (const z_crc_t FAR *)crc_table; } @@ -572,9 +505,8 @@ #define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */ #define Z_BATCH_MIN 800 /* fewest words in a final batch */ -unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, - z_size_t len) { - z_crc_t val; +uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { + uLong val; z_word_t crc1, crc2; const z_word_t *word; z_word_t val0, val1, val2; @@ -585,7 +517,7 @@ if (buf == Z_NULL) return 0; #ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ /* Pre-condition the CRC */ @@ -640,7 +572,7 @@ } word += 3 * last; num -= 3 * last; - val = x2nmodp(last, 6); + val = x2nmodp((int)last, 6); crc = multmodp(val, crc) ^ crc1; crc = multmodp(val, crc) ^ crc2; } @@ -691,13 +623,12 @@ #endif /* ========================================================================= */ -unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, - z_size_t len) { +uLong ZEXPORT crc32_z(uLong 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 - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ /* Pre-condition the CRC */ @@ -1012,38 +943,41 @@ #endif /* ========================================================================= */ -unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf, - uInt len) { +uLong ZEXPORT crc32(uLong crc, const unsigned char FAR *buf, uInt len) { + #ifdef HAVE_S390X_VX + return crc32_z_hook(crc, buf, len); + #endif return crc32_z(crc, buf, len); } /* ========================================================================= */ -uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) { +uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) { + if (len2 < 0) + return 0; #ifdef DYNAMIC_CRC_TABLE - once(&made, make_crc_table); + z_once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ - return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff); + return x2nmodp(len2, 3); } /* ========================================================================= */ -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_gen(z_off_t len2) { + return crc32_combine_gen64((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); +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_combine_gen(z_off_t len2) { - return crc32_combine_gen64((z_off64_t)len2); +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_op(uLong crc1, uLong crc2, uLong op) { - return multmodp(op, crc1) ^ (crc2 & 0xffffffff); +uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) { + return crc32_combine64(crc1, crc2, (z_off64_t)len2); } diff -Nru thunderbird-140.8.0esr/modules/zlib/src/deflate.c thunderbird-140.9.0esr/modules/zlib/src/deflate.c --- thunderbird-140.8.0esr/modules/zlib/src/deflate.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/deflate.c 2026-03-20 19:18:39.000000000 +0000 @@ -1,5 +1,5 @@ /* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler + * Copyright (C) 1995-2026 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 in http://tools.ietf.org/html/rfc1951 + * Available at https://datatracker.ietf.org/doc/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.1 Copyright 1995-2024 Jean-loup Gailly and Mark Adler "; + " deflate 1.3.2 Copyright 1995-2026 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 @@ #define CLEAR_HASH(s) \ do { \ s->head[s->hash_size - 1] = NIL; \ - zmemzero((Bytef *)s->head, \ - (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ + zmemzero(s->head, (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ + s->slid = 0; \ } while (0) /* =========================================================================== @@ -195,8 +195,8 @@ m = *--p; *p = (Pos)(m >= wsize ? m - wsize : NIL); } while (--n); - n = wsize; #ifndef FASTEST + n = wsize; p = &s->prev[n]; do { m = *--p; @@ -206,6 +206,7 @@ */ } while (--n); #endif + s->slid = 1; } /* =========================================================================== @@ -259,7 +260,14 @@ 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; @@ -431,6 +439,7 @@ 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() */ @@ -712,10 +721,23 @@ /* ========================================================================= */ 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; } @@ -831,28 +853,34 @@ * * Shifts are used to approximate divisions, for speed. */ -uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { +z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen) { deflate_state *s; - uLong fixedlen, storelen, wraplen; + z_size_t fixedlen, storelen, wraplen, bound; /* 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 zlib wrapper */ - if (deflateStateCheck(strm)) - return (fixedlen > storelen ? fixedlen : storelen) + 6; + /* 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; + } /* compute wrapper length */ s = strm->state; - switch (s->wrap) { + switch (s->wrap < 0 ? -s->wrap : s->wrap) { case 0: /* raw deflate */ wraplen = 0; break; @@ -882,18 +910,25 @@ break; #endif default: /* for compiler happiness */ - wraplen = 6; + wraplen = 18; } /* if not default parameters, return one of the conservative bounds */ - if (s->w_bits != 15 || s->hash_bits != 8 + 7) - return (s->w_bits <= s->hash_bits && s->level ? fixedlen : storelen) + - wraplen; + 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; + } /* default settings: return tight bound for that case -- ~0.03% overhead plus a small constant */ - return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13 - 6 + wraplen; + 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; } /* ========================================================================= @@ -917,8 +952,8 @@ deflate_state *s = strm->state; _tr_flush_bits(s); - len = s->pending; - if (len > strm->avail_out) len = strm->avail_out; + len = s->pending > strm->avail_out ? strm->avail_out : + (unsigned)s->pending; if (len == 0) return; zmemcpy(strm->next_out, s->pending_out, len); @@ -938,8 +973,8 @@ #define HCRC_UPDATE(beg) \ do { \ if (s->gzhead->hcrc && s->pending > (beg)) \ - strm->adler = crc32(strm->adler, s->pending_buf + (beg), \ - s->pending - (beg)); \ + strm->adler = crc32_z(strm->adler, s->pending_buf + (beg), \ + s->pending - (beg)); \ } while (0) /* ========================================================================= */ @@ -1073,8 +1108,8 @@ put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); } if (s->gzhead->hcrc) - strm->adler = crc32(strm->adler, s->pending_buf, - s->pending); + strm->adler = crc32_z(strm->adler, s->pending_buf, + s->pending); s->gzindex = 0; s->status = EXTRA_STATE; } @@ -1082,9 +1117,9 @@ if (s->status == EXTRA_STATE) { if (s->gzhead->extra != Z_NULL) { ulg beg = s->pending; /* start of bytes to update crc */ - uInt left = (s->gzhead->extra_len & 0xffff) - s->gzindex; + ulg left = (s->gzhead->extra_len & 0xffff) - s->gzindex; while (s->pending + left > s->pending_buf_size) { - uInt copy = s->pending_buf_size - s->pending; + ulg 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; @@ -1295,12 +1330,13 @@ ss = source->state; - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); + zmemcpy(dest, 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((voidpf)ds, (voidpf)ss, sizeof(deflate_state)); + zmemcpy(ds, ss, sizeof(deflate_state)); ds->strm = dest; ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); @@ -1313,18 +1349,23 @@ deflateEnd (dest); return Z_MEM_ERROR; } - /* 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); + /* 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)); 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; @@ -1347,9 +1388,9 @@ */ local uInt longest_match(deflate_state *s, IPos cur_match) { unsigned chain_length = s->max_chain_length;/* max hash chain length */ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ + Bytef *scan = s->window + s->strstart; /* current string */ + Bytef *match; /* matched string */ + 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) ? @@ -1364,13 +1405,13 @@ /* Compare two bytes at a time. Note: this is not always beneficial. * Try with and without -DUNALIGNED_OK to check. */ - 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); + Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; + ush scan_start = *(ushf*)scan; + ush scan_end = *(ushf*)(scan + best_len - 1); #else - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - register Byte scan_end1 = scan[best_len - 1]; - register Byte scan_end = scan[best_len]; + Bytef *strend = s->window + s->strstart + MAX_MATCH; + Byte scan_end1 = scan[best_len - 1]; + Byte scan_end = scan[best_len]; #endif /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. @@ -1494,10 +1535,10 @@ * Optimized version for FASTEST only */ local uInt longest_match(deflate_state *s, IPos cur_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; + 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; /* 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. @@ -1557,7 +1598,7 @@ 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 = length; + IPos len = (IPos)length; if (match == (IPos)-1) { /* match starts one byte before the current window -- just compare the subsequent length-1 bytes */ @@ -1629,13 +1670,14 @@ * 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 = MIN(s->pending_buf_size - 5, s->w_size); + unsigned min_block = (unsigned)(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. */ - unsigned len, left, have, last = 0; + int last = 0; + unsigned len, left, have; unsigned used = s->strm->avail_in; do { /* Set len to the maximum size block that we can copy directly with the @@ -1643,12 +1685,12 @@ * would be copied from what's left in the window. */ len = MAX_STORED; /* maximum deflate stored block length */ - have = (s->bi_valid + 42) >> 3; /* number of header bytes */ + have = ((unsigned)s->bi_valid + 42) >> 3; /* bytes in header */ 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 = s->strstart - s->block_start; /* bytes left in window */ + left = (unsigned)(s->strstart - s->block_start); /* window bytes */ if (len > (ulg)left + s->strm->avail_in) len = left + s->strm->avail_in; /* limit len to the input */ if (len > have) @@ -1671,10 +1713,10 @@ _tr_stored_block(s, (char *)0, 0L, last); /* Replace the lengths in the dummy stored block with len. */ - 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; + 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); /* Write the stored block header bytes. */ flush_pending(s->strm); @@ -1745,8 +1787,10 @@ s->high_water = s->strstart; /* If the last block was written to next_out, then done. */ - if (last) + if (last) { + s->bi_used = 8; return finish_done; + } /* If flushing and all input has been consumed, then done. */ if (flush != Z_NO_FLUSH && flush != Z_FINISH && @@ -1754,7 +1798,7 @@ return block_done; /* Fill the window with any remaining input. */ - have = s->window_size - s->strstart; + have = (unsigned)(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; @@ -1781,11 +1825,11 @@ * 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 = (s->bi_valid + 42) >> 3; /* number of header bytes */ + have = ((unsigned)s->bi_valid + 42) >> 3; /* bytes in header */ /* maximum stored block length that will fit in pending: */ - have = MIN(s->pending_buf_size - have, MAX_STORED); + have = (unsigned)MIN(s->pending_buf_size - have, MAX_STORED); min_block = MIN(have, s->w_size); - left = s->strstart - s->block_start; + left = (unsigned)(s->strstart - s->block_start); if (left >= min_block || ((left || flush == Z_FINISH) && flush != Z_NO_FLUSH && s->strm->avail_in == 0 && left <= have)) { @@ -1798,6 +1842,8 @@ } /* We've done all we can with the available input and output. */ + if (last) + s->bi_used = 8; return last ? finish_started : need_more; } @@ -1846,7 +1892,7 @@ /* longest_match() sets match_start */ } if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->match_start, s->match_length); + check_match(s, s->strstart, s->match_start, (int)s->match_length); _tr_tally_dist(s, s->strstart - s->match_start, s->match_length - MIN_MATCH, bflush); @@ -1968,7 +2014,7 @@ 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, s->prev_length); + check_match(s, s->strstart - 1, s->prev_match, (int)s->prev_length); _tr_tally_dist(s, s->strstart - 1 - s->prev_match, s->prev_length - MIN_MATCH, bflush); @@ -2076,7 +2122,7 @@ /* 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, s->match_length); + check_match(s, s->strstart, s->strstart - 1, (int)s->match_length); _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush); diff -Nru thunderbird-140.8.0esr/modules/zlib/src/deflate.h thunderbird-140.9.0esr/modules/zlib/src/deflate.h --- thunderbird-140.8.0esr/modules/zlib/src/deflate.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/deflate.h 2026-03-20 19:18:39.000000000 +0000 @@ -1,5 +1,5 @@ /* deflate.h -- internal compression state - * Copyright (C) 1995-2024 Jean-loup Gailly + * Copyright (C) 1995-2026 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -271,6 +271,9 @@ /* 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 @@ -279,6 +282,9 @@ * 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 -Nru thunderbird-140.8.0esr/modules/zlib/src/gzguts.h thunderbird-140.9.0esr/modules/zlib/src/gzguts.h --- thunderbird-140.8.0esr/modules/zlib/src/gzguts.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/gzguts.h 2026-03-20 19:18:39.000000000 +0000 @@ -1,5 +1,5 @@ /* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004-2024 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -17,6 +17,18 @@ # 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 @@ -25,8 +37,8 @@ # include #endif -#ifndef _POSIX_SOURCE -# define _POSIX_SOURCE +#ifndef _POSIX_C_SOURCE +# define _POSIX_C_SOURCE 200112L #endif #include @@ -36,19 +48,13 @@ #if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32) # include +# include #endif -#if defined(_WIN32) +#if defined(_WIN32) && !defined(WIDECHAR) # 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 @@ -72,33 +78,28 @@ #endif #ifndef HAVE_VSNPRINTF -# ifdef MSDOS +# if !defined(NO_vsnprintf) && \ + (defined(MSDOS) || defined(__TURBOC__) || defined(__SASC) || \ + defined(VMS) || defined(__OS400) || defined(__MVS__)) /* 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(vsnprintf) && !defined(NO_vsnprintf) -# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) -# define vsnprintf _vsnprintf +# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) +# ifndef vsnprintf +# define vsnprintf _vsnprintf # endif # 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 +# 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 #endif @@ -182,7 +183,9 @@ 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 */ @@ -192,7 +195,6 @@ 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 -Nru thunderbird-140.8.0esr/modules/zlib/src/gzlib.c thunderbird-140.9.0esr/modules/zlib/src/gzlib.c --- thunderbird-140.8.0esr/modules/zlib/src/gzlib.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/gzlib.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,19 +1,19 @@ /* gzlib.c -- zlib functions common to reading and writing gzip files - * Copyright (C) 2004-2024 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ #include "gzguts.h" -#if defined(_WIN32) && !defined(__BORLANDC__) +#if defined(__DJGPP__) +# define LSEEK llseek +#elif defined(_WIN32) && !defined(__BORLANDC__) && !defined(UNDER_CE) # define LSEEK _lseeki64 -#else -#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +#elif defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 # define LSEEK lseek64 #else # define LSEEK lseek #endif -#endif #if defined UNDER_CE @@ -52,7 +52,7 @@ msgbuf[chars] = 0; } - wcstombs(buf, msgbuf, chars + 1); + wcstombs(buf, msgbuf, chars + 1); /* assumes buf is big enough */ LocalFree(msgbuf); } else { @@ -72,10 +72,12 @@ 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->seek = 0; /* no seek request pending */ + state->again = 0; /* no stalled i/o yet */ + state->skip = 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 */ @@ -85,16 +87,13 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { gz_statep state; z_size_t len; - int oflag; -#ifdef O_CLOEXEC - int cloexec = 0; -#endif + int oflag = 0; #ifdef O_EXCL int exclusive = 0; #endif /* check input */ - if (path == NULL) + if (path == NULL || mode == NULL) return NULL; /* allocate gzFile structure to return */ @@ -103,6 +102,7 @@ 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 @@ break; #ifdef O_CLOEXEC case 'e': - cloexec = 1; + oflag |= O_CLOEXEC; break; #endif #ifdef O_EXCL @@ -153,6 +153,14 @@ 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; @@ -168,22 +176,30 @@ return NULL; } - /* can't force transparent read */ + /* direct is 0, 1 if "T", or -1 if "G" (last "G" or "T" wins) */ if (state->mode == GZ_READ) { - if (state->direct) { + if (state->direct == 1) { + /* can't force a transparent read */ free(state); return NULL; } - state->direct = 1; /* for empty file */ + 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; } + 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); @@ -193,30 +209,30 @@ 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 : (O_WRONLY | O_CREAT | @@ -228,11 +244,23 @@ O_APPEND))); /* open the file with the appropriate flags (or just use fd) */ - state->fd = fd > -1 ? fd : ( + if (fd == -1) + state->fd = open((const char *)path, oflag, 0666); #ifdef WIDECHAR - fd == -2 ? _wopen(path, oflag, 0666) : + else if (fd == -2) + state->fd = _wopen(path, oflag, _S_IREAD | _S_IWRITE); +#endif + else { +#ifdef O_NONBLOCK + if (oflag & O_NONBLOCK) + fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK); #endif - open((const char *)path, oflag, 0666)); +#ifdef O_CLOEXEC + if (oflag & O_CLOEXEC) + fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | O_CLOEXEC); +#endif + state->fd = fd; + } if (state->fd == -1) { free(state->path); free(state); @@ -359,9 +387,10 @@ /* normalize offset to a SEEK_CUR specification */ if (whence == SEEK_SET) offset -= state->x.pos; - else if (state->seek) - offset += state->skip; - state->seek = 0; + else { + offset += state->past ? 0 : state->skip; + state->skip = 0; + } /* if within raw area while reading, just go there */ if (state->mode == GZ_READ && state->how == COPY && @@ -372,7 +401,7 @@ state->x.have = 0; state->eof = 0; state->past = 0; - state->seek = 0; + state->skip = 0; gz_error(state, Z_OK, NULL); state->strm.avail_in = 0; state->x.pos += offset; @@ -401,10 +430,7 @@ } /* request skip (if not zero) */ - if (offset) { - state->seek = 1; - state->skip = offset; - } + state->skip = offset; return state->x.pos + offset; } @@ -428,7 +454,7 @@ return -1; /* return position */ - return state->x.pos + (state->seek ? state->skip : 0); + return state->x.pos + (state->past ? 0 : state->skip); } /* -- see zlib.h -- */ @@ -535,7 +561,7 @@ } /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */ - if (err != Z_OK && err != Z_BUF_ERROR) + if (err != Z_OK && err != Z_BUF_ERROR && !state->again) state->x.have = 0; /* set error code, and if no message, then done */ @@ -572,6 +598,7 @@ return INT_MAX; #else unsigned p = 1, q; + do { q = p; p <<= 1; diff -Nru thunderbird-140.8.0esr/modules/zlib/src/gzread.c thunderbird-140.9.0esr/modules/zlib/src/gzread.c --- thunderbird-140.8.0esr/modules/zlib/src/gzread.c 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/gzread.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,5 +1,5 @@ /* gzread.c -- zlib functions for reading gzip files - * Copyright (C) 2004-2017 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -8,23 +8,36 @@ /* 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. */ + 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. */ 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 = read(state->fd, buf + *have, get); + ret = (int)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; } @@ -50,10 +63,14 @@ if (strm->avail_in) { /* copy what's there to the start */ unsigned char *p = state->in; unsigned const char *q = strm->next_in; - unsigned n = strm->avail_in; - do { - *p++ = *q++; - } while (--n); + + if (q != p) { + 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) @@ -104,39 +121,44 @@ } } - /* 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) { + /* 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) { inflateReset(strm); state->how = GZIP; + state->junk = state->junk != -1; state->direct = 0; return 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; + /* 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; 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; @@ -144,15 +166,17 @@ 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. */ + 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. */ local int gz_decomp(gz_statep state) { int ret = Z_OK; unsigned had; @@ -162,28 +186,41 @@ had = strm->avail_out; do { /* get more input for inflate() */ - if (strm->avail_in == 0 && gz_avail(state) == -1) - return -1; + if (strm->avail_in == 0 && gz_avail(state) == -1) { + ret = state->err; + break; + } if (strm->avail_in == 0) { - gz_error(state, Z_BUF_ERROR, "unexpected end of file"); + if (!state->again) + 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"); - return -1; + break; } if (ret == Z_MEM_ERROR) { gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; + break; } 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); - return -1; + break; } } while (strm->avail_out && ret != Z_STREAM_END); @@ -192,11 +229,14 @@ state->x.next = strm->next_out - state->x.have; /* if the gzip stream completed successfully, look for another */ - if (ret == Z_STREAM_END) + if (ret == Z_STREAM_END) { + state->junk = 0; state->how = LOOK; + return 0; + } - /* good decompression */ - return 0; + /* return decompression status */ + return ret != Z_OK ? -1 : 0; } /* Fetch data and put it in the output buffer. Assumes state->x.have is 0. @@ -227,25 +267,31 @@ 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 len uncompressed bytes of output. Return -1 on error, 0 on success. */ -local int gz_skip(gz_statep state, z_off64_t len) { +/* Skip state->skip (> 0) uncompressed bytes of output. Return -1 on error, 0 + on success. */ +local int gz_skip(gz_statep state) { unsigned n; /* skip over len bytes or reach end-of-file, whichever comes first */ - while (len) + do { /* skip over whatever is in output buffer */ if (state->x.have) { - n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > len ? - (unsigned)len : state->x.have; + n = GT_OFF(state->x.have) || + (z_off64_t)state->x.have > state->skip ? + (unsigned)state->skip : state->x.have; state->x.have -= n; state->x.next += n; state->x.pos += n; - len -= n; + state->skip -= n; } /* output buffer empty -- return if we're at the end of the input */ @@ -258,30 +304,32 @@ 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. */ + 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. */ 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->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return 0; - } + if (state->skip && gz_skip(state) == -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; @@ -295,37 +343,36 @@ 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) { - state->past = 1; /* tried to read past end */ + else if (state->eof && state->strm.avail_in == 0) break; - } /* need output data -- for small len or new stream load up our output - buffer */ + buffer, so that gzgetc() can be fast */ else if (state->how == LOOK || n < (state->size << 1)) { /* get more output, looking for header if required */ - if (gz_fetch(state) == -1) - return 0; + if (gz_fetch(state) == -1 && state->x.have == 0) + /* if state->x.have != 0, error will be caught after copy */ + err = -1; 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 */ - if (gz_load(state, (unsigned char *)buf, n, &n) == -1) - return 0; - } + else if (state->how == COPY) /* read directly */ + err = gz_load(state, (unsigned char *)buf, n, &n); /* large len -- decompress directly into user buffer */ else { /* state->how == GZIP */ state->strm.avail_out = n; state->strm.next_out = (unsigned char *)buf; - if (gz_decomp(state) == -1) - return 0; + err = gz_decomp(state); n = state->x.have; state->x.have = 0; } @@ -335,7 +382,11 @@ buf = (char *)buf + n; got += n; state->x.pos += n; - } while (len); + } while (len && !err); + + /* note read past eof */ + if (len && state->eof) + state->past = 1; /* return number of bytes read into user buffer */ return got; @@ -345,15 +396,17 @@ int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return -1; state = (gz_statep)file; + if (state->mode != GZ_READ) + return -1; - /* 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)) + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) 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) */ @@ -366,27 +419,39 @@ len = (unsigned)gz_read(state, buf, len); /* check for an error */ - if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR) - return -1; + 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; + } + } - /* return the number of bytes read (this is assured to fit in an int) */ + /* return the number of bytes read */ 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 */ + /* get internal structure and check that it's for reading */ if (file == NULL) return 0; state = (gz_statep)file; + if (state->mode != GZ_READ) + return 0; - /* 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)) + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) return 0; + gz_error(state, Z_OK, NULL); /* compute bytes to read -- error on overflow */ len = nitems * size; @@ -409,15 +474,17 @@ unsigned char buf[1]; gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ if (file == NULL) return -1; state = (gz_statep)file; + if (state->mode != GZ_READ) + return -1; - /* 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)) + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) return -1; + gz_error(state, Z_OK, NULL); /* try output buffer (no need to check for skip request) */ if (state->x.have) { @@ -438,26 +505,25 @@ int ZEXPORT gzungetc(int c, gzFile file) { gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ 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->mode == GZ_READ && state->how == LOOK && state->x.have == 0) + if (state->how == LOOK && state->x.have == 0) (void)gz_look(state); - /* 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)) + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) return -1; + gz_error(state, Z_OK, NULL); /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return -1; - } + if (state->skip && gz_skip(state) == -1) + return -1; /* can't push EOF */ if (c < 0) @@ -483,6 +549,7 @@ 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; @@ -502,32 +569,31 @@ unsigned char *eol; gz_statep state; - /* check parameters and get internal structure */ + /* check parameters, get internal structure, and check that it's for + reading */ if (file == NULL || buf == NULL || len < 1) return NULL; state = (gz_statep)file; + if (state->mode != GZ_READ) + return NULL; - /* 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)) + /* check that there was no (serious) error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) return NULL; + gz_error(state, Z_OK, NULL); /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return NULL; - } + if (state->skip && gz_skip(state) == -1) + return NULL; - /* 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) */ + /* copy output up to a new line, len-1 bytes, or there is no more output, + whichever comes first */ 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) - return NULL; /* error */ + break; /* error */ if (state->x.have == 0) { /* end of file */ state->past = 1; /* read past end */ break; /* return what we have */ @@ -548,7 +614,9 @@ buf += n; } while (left && eol == NULL); - /* return terminated string, or if nothing, end of file */ + /* 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 */ if (buf == str) return NULL; buf[0] = 0; @@ -570,7 +638,7 @@ (void)gz_look(state); /* return 1 if transparent, 0 if processing a gzip stream */ - return state->direct; + return state->direct == 1; } /* -- see zlib.h -- */ @@ -578,12 +646,10 @@ int ret, err; gz_statep state; - /* get internal structure */ + /* get internal structure and check that it's for reading */ 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 -Nru thunderbird-140.8.0esr/modules/zlib/src/gzwrite.c thunderbird-140.9.0esr/modules/zlib/src/gzwrite.c --- thunderbird-140.8.0esr/modules/zlib/src/gzwrite.c 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/gzwrite.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,5 +1,5 @@ /* gzwrite.c -- zlib functions for writing gzip files - * Copyright (C) 2004-2019 Mark Adler + * Copyright (C) 2004-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -74,9 +74,13 @@ /* 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 = write(state->fd, strm->next_in, put); + writ = (int)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; } @@ -88,8 +92,9 @@ /* check for a pending reset */ if (state->reset) { - /* don't start a new gzip member unless there is data to write */ - if (strm->avail_in == 0) + /* 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) return 0; deflateReset(strm); state->reset = 0; @@ -103,10 +108,14 @@ 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 = write(state->fd, state->x.next, put); + writ = (int)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; } @@ -138,10 +147,12 @@ return 0; } -/* 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; +/* 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; unsigned n; z_streamp strm = &(state->strm); @@ -149,29 +160,34 @@ if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) return -1; - /* compress len zeros (len guaranteed > 0) */ + /* compress state->skip zeros */ first = 1; - while (len) { - n = GT_OFF(state->size) || (z_off64_t)state->size > len ? - (unsigned)len : state->size; + do { + n = GT_OFF(state->size) || (z_off64_t)state->size > state->skip ? + (unsigned)state->skip : 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; - if (gz_comp(state, Z_NO_FLUSH) == -1) + state->skip -= n; + if (ret == -1) return -1; - len -= n; - } + } while (state->skip); 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. */ + 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. */ 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) @@ -182,16 +198,13 @@ return 0; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return 0; - } + if (state->skip && gz_zero(state) == -1) + return 0; /* for small len, copy to input buffer, otherwise compress directly */ if (len < state->size) { /* copy to input buffer, compress when full */ - do { + for (;;) { unsigned have, copy; if (state->strm.avail_in == 0) @@ -206,9 +219,11 @@ state->x.pos += copy; buf = (const char *)buf + copy; len -= copy; - if (len && gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - } while (len); + if (len == 0) + break; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return state->again ? put - len : 0; + } } else { /* consume whatever's left in the input buffer */ @@ -219,13 +234,16 @@ 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); } @@ -242,9 +260,10 @@ return 0; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) 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) */ @@ -268,9 +287,10 @@ return 0; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return 0; + gz_error(state, Z_OK, NULL); /* compute bytes to read -- error on overflow */ len = nitems * size; @@ -296,16 +316,14 @@ state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return -1; + gz_error(state, Z_OK, NULL); /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return -1; - } + if (state->skip && gz_zero(state) == -1) + return -1; /* try writing to input buffer for speed (state->size == 0 if buffer not initialized) */ @@ -338,9 +356,10 @@ return -1; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) return -1; + gz_error(state, Z_OK, NULL); /* write string */ len = strlen(s); @@ -349,16 +368,47 @@ return -1; } put = gz_write(state, s, len); - return put < len ? -1 : (int)len; + return len && put == 0 ? -1 : (int)put; } +#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) { - int len; - unsigned left; +#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; char *next; gz_statep state; z_streamp strm; @@ -369,24 +419,34 @@ state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) 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->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->err; - } + 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 is guaranteed to - be state->size bytes available after the current contents */ + 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) + return state->err; + } if (strm->avail_in == 0) strm->next_in = state->in; next = (char *)(state->in + (strm->next_in - state->in) + strm->avail_in); @@ -412,19 +472,16 @@ if (len == 0 || (unsigned)len >= state->size || next[state->size - 1] != 0) return 0; - /* update buffer and position, compress first half if past that */ + /* update buffer and position */ strm->avail_in += (unsigned)len; state->x.pos += len; - 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; - } + + /* write out buffer if more than half is occupied */ + ret = gz_vacate(state); + if (state->err && !state->again) + return state->err; return len; +#endif } int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) { @@ -444,6 +501,17 @@ 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; @@ -459,24 +527,34 @@ if (sizeof(int) != sizeof(void *)) return Z_STREAM_ERROR; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) 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->error; + return state->err; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->error; - } + 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 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); @@ -510,16 +588,13 @@ /* update buffer and position, compress first half if past that */ strm->avail_in += len; state->x.pos += len; - 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; - } + + /* write out buffer if more than half is occupied */ + ret = gz_vacate(state); + if (state->err && !state->again) + return state->err; return (int)len; +#endif } #endif @@ -533,20 +608,18 @@ return Z_STREAM_ERROR; state = (gz_statep)file; - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + /* check that we're writing and that there's no (serious) error */ + if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) 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->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->err; - } + if (state->skip && gz_zero(state) == -1) + return state->err; /* compress remaining data with requested flush */ (void)gz_comp(state, flush); @@ -564,20 +637,19 @@ state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK || state->direct) + /* 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) 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->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return state->err; - } + if (state->skip && gz_zero(state) == -1) + return state->err; /* change compression parameters for subsequent input */ if (state->size) { @@ -606,11 +678,8 @@ return Z_STREAM_ERROR; /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - ret = state->err; - } + if (state->skip && gz_zero(state) == -1) + ret = state->err; /* flush, free memory, and close file */ if (gz_comp(state, Z_FINISH) == -1) diff -Nru thunderbird-140.8.0esr/modules/zlib/src/infback.c thunderbird-140.9.0esr/modules/zlib/src/infback.c --- thunderbird-140.8.0esr/modules/zlib/src/infback.c 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/infback.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,5 +1,5 @@ /* infback.c -- inflate using a call-back interface - * Copyright (C) 1995-2022 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -46,7 +46,7 @@ #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,57 +63,6 @@ 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() */ @@ -293,7 +242,7 @@ state->mode = STORED; break; case 1: /* fixed block */ - fixedtables(state); + inflate_fixed(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); state->mode = LEN; /* decode codes */ @@ -303,8 +252,8 @@ state->last ? " (last)" : "")); state->mode = TABLE; break; - case 3: - strm->msg = (char *)"invalid block type"; + default: + strm->msg = (z_const char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -315,7 +264,7 @@ BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; + strm->msg = (z_const char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -353,7 +302,8 @@ DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; + strm->msg = (z_const char *) + "too many length or distance symbols"; state->mode = BAD; break; } @@ -375,7 +325,7 @@ ret = inflate_table(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid code lengths set"; + strm->msg = (z_const char *)"invalid code lengths set"; state->mode = BAD; break; } @@ -398,7 +348,8 @@ NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -421,7 +372,8 @@ DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -435,7 +387,8 @@ /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; + strm->msg = (z_const char *) + "invalid code -- missing end-of-block"; state->mode = BAD; break; } @@ -449,7 +402,7 @@ ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; + strm->msg = (z_const char *)"invalid literal/lengths set"; state->mode = BAD; break; } @@ -458,7 +411,7 @@ ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (char *)"invalid distances set"; + strm->msg = (z_const char *)"invalid distances set"; state->mode = BAD; break; } @@ -517,7 +470,7 @@ /* invalid code */ if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -549,7 +502,7 @@ } DROPBITS(here.bits); if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } @@ -564,7 +517,7 @@ } if (state->offset > state->wsize - (state->whave < state->wsize ? left : 0)) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *)"invalid distance too far back"; state->mode = BAD; break; } diff -Nru thunderbird-140.8.0esr/modules/zlib/src/inffast.c thunderbird-140.9.0esr/modules/zlib/src/inffast.c --- thunderbird-140.8.0esr/modules/zlib/src/inffast.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/inffast.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,5 +1,5 @@ /* inffast.c -- fast decoding - * Copyright (C) 1995-2017 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -155,7 +155,8 @@ dist += (unsigned)hold & ((1U << op) - 1); #ifdef INFLATE_STRICT if (dist > dmax) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *) + "invalid distance too far back"; state->mode = BAD; break; } @@ -168,8 +169,8 @@ op = dist - op; /* distance back in window */ if (op > whave) { if (state->sane) { - strm->msg = - (char *)"invalid distance too far back"; + strm->msg = (z_const char *) + "invalid distance too far back"; state->mode = BAD; break; } @@ -265,7 +266,7 @@ goto dodist; } else { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } @@ -280,7 +281,7 @@ break; } else { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } diff -Nru thunderbird-140.8.0esr/modules/zlib/src/inffixed.h thunderbird-140.9.0esr/modules/zlib/src/inffixed.h --- thunderbird-140.8.0esr/modules/zlib/src/inffixed.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/inffixed.h 2026-03-20 19:18:38.000000000 +0000 @@ -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 -Nru thunderbird-140.8.0esr/modules/zlib/src/inflate.c thunderbird-140.9.0esr/modules/zlib/src/inflate.c --- thunderbird-140.8.0esr/modules/zlib/src/inflate.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/inflate.c 2026-03-20 19:18:39.000000000 +0000 @@ -1,5 +1,5 @@ /* inflate.c -- zlib decompression - * Copyright (C) 1995-2022 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -85,12 +85,6 @@ #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 || @@ -110,6 +104,7 @@ 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; @@ -202,6 +197,7 @@ 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; @@ -234,124 +230,12 @@ } if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; value &= (1L << bits) - 1; - state->hold += (unsigned)value << state->bits; + state->hold += (unsigned long)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 when a window is already in use, or when output has been written during this @@ -642,12 +526,12 @@ if ( #endif ((BITS(8) << 8) + (hold >> 8)) % 31) { - strm->msg = (char *)"incorrect header check"; + strm->msg = (z_const char *)"incorrect header check"; state->mode = BAD; break; } if (BITS(4) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; + strm->msg = (z_const char *)"unknown compression method"; state->mode = BAD; break; } @@ -656,7 +540,7 @@ if (state->wbits == 0) state->wbits = len; if (len > 15 || len > state->wbits) { - strm->msg = (char *)"invalid window size"; + strm->msg = (z_const char *)"invalid window size"; state->mode = BAD; break; } @@ -672,12 +556,12 @@ NEEDBITS(16); state->flags = (int)(hold); if ((state->flags & 0xff) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; + strm->msg = (z_const char *)"unknown compression method"; state->mode = BAD; break; } if (state->flags & 0xe000) { - strm->msg = (char *)"unknown header flags set"; + strm->msg = (z_const char *)"unknown header flags set"; state->mode = BAD; break; } @@ -793,7 +677,7 @@ if (state->flags & 0x0200) { NEEDBITS(16); if ((state->wrap & 4) && hold != (state->check & 0xffff)) { - strm->msg = (char *)"header crc mismatch"; + strm->msg = (z_const char *)"header crc mismatch"; state->mode = BAD; break; } @@ -840,7 +724,7 @@ state->mode = STORED; break; case 1: /* fixed block */ - fixedtables(state); + inflate_fixed(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); state->mode = LEN_; /* decode codes */ @@ -854,8 +738,8 @@ state->last ? " (last)" : "")); state->mode = TABLE; break; - case 3: - strm->msg = (char *)"invalid block type"; + default: + strm->msg = (z_const char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -864,7 +748,7 @@ BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; + strm->msg = (z_const char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -905,7 +789,8 @@ DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; + strm->msg = (z_const char *) + "too many length or distance symbols"; state->mode = BAD; break; } @@ -923,12 +808,12 @@ while (state->have < 19) state->lens[order[state->have++]] = 0; state->next = state->codes; - state->lencode = (const code FAR *)(state->next); + state->lencode = state->distcode = (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 = (char *)"invalid code lengths set"; + strm->msg = (z_const char *)"invalid code lengths set"; state->mode = BAD; break; } @@ -952,7 +837,8 @@ NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -975,7 +861,8 @@ DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; + strm->msg = (z_const char *) + "invalid bit length repeat"; state->mode = BAD; break; } @@ -989,7 +876,8 @@ /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; + strm->msg = (z_const char *) + "invalid code -- missing end-of-block"; state->mode = BAD; break; } @@ -1003,7 +891,7 @@ ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; + strm->msg = (z_const char *)"invalid literal/lengths set"; state->mode = BAD; break; } @@ -1012,7 +900,7 @@ ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (char *)"invalid distances set"; + strm->msg = (z_const char *)"invalid distances set"; state->mode = BAD; break; } @@ -1066,7 +954,7 @@ break; } if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; + strm->msg = (z_const char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -1104,7 +992,7 @@ DROPBITS(here.bits); state->back += here.bits; if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; + strm->msg = (z_const char *)"invalid distance code"; state->mode = BAD; break; } @@ -1121,7 +1009,7 @@ } #ifdef INFLATE_STRICT if (state->offset > state->dmax) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -1136,7 +1024,8 @@ copy = state->offset - copy; if (copy > state->whave) { if (state->sane) { - strm->msg = (char *)"invalid distance too far back"; + strm->msg = (z_const char *) + "invalid distance too far back"; state->mode = BAD; break; } @@ -1195,7 +1084,7 @@ state->flags ? hold : #endif ZSWAP32(hold)) != state->check) { - strm->msg = (char *)"incorrect data check"; + strm->msg = (z_const char *)"incorrect data check"; state->mode = BAD; break; } @@ -1209,7 +1098,7 @@ if (state->wrap && state->flags) { NEEDBITS(32); if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) { - strm->msg = (char *)"incorrect length check"; + strm->msg = (z_const char *)"incorrect length check"; state->mode = BAD; break; } @@ -1440,7 +1329,6 @@ struct inflate_state FAR *state; struct inflate_state FAR *copy; unsigned char FAR *window; - unsigned wsize; /* check input */ if (inflateStateCheck(source) || dest == Z_NULL) @@ -1451,6 +1339,7 @@ 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 *) @@ -1462,8 +1351,8 @@ } /* copy state */ - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); - zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); + zmemcpy(dest, source, sizeof(z_stream)); + zmemcpy(copy, state, sizeof(struct inflate_state)); copy->strm = dest; if (state->lencode >= state->codes && state->lencode <= state->codes + ENOUGH - 1) { @@ -1471,10 +1360,8 @@ copy->distcode = copy->codes + (state->distcode - state->codes); } copy->next = copy->codes + (state->next - state->codes); - if (window != Z_NULL) { - wsize = 1U << state->wbits; - zmemcpy(window, state->window, wsize); - } + if (window != Z_NULL) + zmemcpy(window, state->window, state->whave); copy->window = window; dest->state = (struct internal_state FAR *)copy; return Z_OK; diff -Nru thunderbird-140.8.0esr/modules/zlib/src/inflate.h thunderbird-140.9.0esr/modules/zlib/src/inflate.h --- thunderbird-140.8.0esr/modules/zlib/src/inflate.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/inflate.h 2026-03-20 19:18:38.000000000 +0000 @@ -100,7 +100,7 @@ unsigned char FAR *window; /* allocated sliding window, if needed */ /* bit accumulator */ unsigned long hold; /* input bit accumulator */ - unsigned bits; /* number of bits in "in" */ + unsigned bits; /* number of bits in hold */ /* for string and stored block copying */ unsigned length; /* literal or length of data to copy */ unsigned offset; /* distance back to copy string from */ diff -Nru thunderbird-140.8.0esr/modules/zlib/src/inftrees.c thunderbird-140.9.0esr/modules/zlib/src/inftrees.c --- thunderbird-140.8.0esr/modules/zlib/src/inftrees.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/inftrees.c 2026-03-20 19:18:39.000000000 +0000 @@ -1,15 +1,29 @@ /* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2024 Mark Adler + * Copyright (C) 1995-2026 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.1 Copyright 1995-2024 Mark Adler "; + " inflate 1.3.2 Copyright 1995-2026 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 @@ -47,9 +61,9 @@ 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; /* base value table to use */ - const unsigned short FAR *extra; /* extra bits table to use */ - unsigned match; /* use base and extra for symbol >= match */ + 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 */ 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 */ @@ -57,7 +71,7 @@ 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, 203, 77}; + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 75}; 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, @@ -175,7 +189,6 @@ /* set up for code type */ switch (type) { case CODES: - base = extra = work; /* dummy value--not used */ match = 20; break; case LENS: @@ -183,10 +196,9 @@ extra = lext; match = 257; break; - default: /* DISTS */ + case DISTS: base = dbase; extra = dext; - match = 0; } /* initialize state for loop */ @@ -297,3 +309,116 @@ *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 -Nru thunderbird-140.8.0esr/modules/zlib/src/inftrees.h thunderbird-140.9.0esr/modules/zlib/src/inftrees.h --- thunderbird-140.8.0esr/modules/zlib/src/inftrees.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/inftrees.h 2026-03-20 19:18:39.000000000 +0000 @@ -1,5 +1,5 @@ /* inftrees.h -- header to use inftrees.c - * Copyright (C) 1995-2005, 2010 Mark Adler + * Copyright (C) 1995-2026 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -60,3 +60,5 @@ 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 -Nru thunderbird-140.8.0esr/modules/zlib/src/mozzconf.h thunderbird-140.9.0esr/modules/zlib/src/mozzconf.h --- thunderbird-140.8.0esr/modules/zlib/src/mozzconf.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/mozzconf.h 2026-03-20 19:18:39.000000000 +0000 @@ -160,9 +160,30 @@ #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 -Nru thunderbird-140.8.0esr/modules/zlib/src/trees.c thunderbird-140.9.0esr/modules/zlib/src/trees.c --- thunderbird-140.8.0esr/modules/zlib/src/trees.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/trees.c 2026-03-20 19:18:39.000000000 +0000 @@ -1,5 +1,5 @@ /* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2024 Jean-loup Gailly + * Copyright (C) 1995-2026 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 @@ #else # include "trees.h" -#endif /* GEN_TREES_H */ +#endif /* defined(GEN_TREES_H) || !defined(STDC) */ struct static_tree_desc_s { const ct_data *static_tree; /* static tree or NULL */ @@ -152,7 +152,7 @@ * IN assertion: 1 <= len <= 15 */ local unsigned bi_reverse(unsigned code, int len) { - register unsigned res = 0; + unsigned res = 0; do { res |= code & 1; code >>= 1, res <<= 1; @@ -184,10 +184,11 @@ } 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) & ~7; + s->bits_sent = (s->bits_sent + 7) & ~(ulg)7; #endif } @@ -466,6 +467,7 @@ s->bi_buf = 0; s->bi_valid = 0; + s->bi_used = 0; #ifdef ZLIB_DEBUG s->compressed_len = 0L; s->bits_sent = 0L; @@ -724,7 +726,7 @@ if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { - s->bl_tree[curlen].Freq += count; + s->bl_tree[curlen].Freq += (ush)count; } else if (curlen != 0) { if (curlen != prevlen) s->bl_tree[curlen].Freq++; s->bl_tree[REP_3_6].Freq++; @@ -817,7 +819,7 @@ } /* 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 %ld, stat %ld", + Tracev((stderr, "\ndyn trees: dyn %lu, stat %lu", s->opt_len, s->static_len)); return max_blindex; @@ -843,13 +845,13 @@ Tracev((stderr, "\nbl code %2d ", bl_order[rank])); send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); } - Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); + Tracev((stderr, "\nbl tree: sent %lu", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1); /* literal tree */ - Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); + Tracev((stderr, "\nlit tree: sent %lu", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1); /* distance tree */ - Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); + Tracev((stderr, "\ndist tree: sent %lu", s->bits_sent)); } /* =========================================================================== @@ -932,7 +934,7 @@ extra = extra_dbits[code]; if (extra != 0) { dist -= (unsigned)base_dist[code]; - send_bits(s, dist, extra); /* send the extra distance bits */ + send_bits(s, (int)dist, extra); /* send the extra bits */ } } /* literal or match pair ? */ @@ -1006,11 +1008,11 @@ /* Construct the literal and distance trees */ build_tree(s, (tree_desc *)(&(s->l_desc))); - Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + Tracev((stderr, "\nlit data: dyn %lu, stat %lu", s->opt_len, s->static_len)); build_tree(s, (tree_desc *)(&(s->d_desc))); - Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + Tracev((stderr, "\ndist data: dyn %lu, stat %lu", 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. @@ -1083,7 +1085,7 @@ #endif } Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len >> 3, - s->compressed_len - 7*last)); + s->compressed_len - 7*(ulg)last)); } /* =========================================================================== diff -Nru thunderbird-140.8.0esr/modules/zlib/src/uncompr.c thunderbird-140.9.0esr/modules/zlib/src/uncompr.c --- thunderbird-140.8.0esr/modules/zlib/src/uncompr.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/uncompr.c 2026-03-20 19:18:39.000000000 +0000 @@ -1,5 +1,5 @@ /* uncompr.c -- decompress a memory buffer - * Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 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(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong *sourceLen) { +int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, + z_size_t *sourceLen) { z_stream stream; int err; const uInt max = (uInt)-1; - uLong len, left; - Byte buf[1]; /* for detection of incomplete stream when *destLen == 0 */ + z_size_t len, left; + + if (sourceLen == NULL || (*sourceLen > 0 && source == NULL) || + destLen == NULL || (*destLen > 0 && dest == NULL)) + return Z_STREAM_ERROR; len = *sourceLen; - if (*destLen) { - left = *destLen; - *destLen = 0; - } - else { - left = 1; - dest = buf; - } + left = *destLen; + if (left == 0 && dest == Z_NULL) + dest = (Bytef *)&stream.reserved; /* next_out cannot be NULL */ stream.next_in = (z_const Bytef *)source; stream.avail_in = 0; @@ -56,30 +56,46 @@ do { if (stream.avail_out == 0) { - stream.avail_out = left > (uLong)max ? max : (uInt)left; + stream.avail_out = left > (z_size_t)max ? max : (uInt)left; left -= stream.avail_out; } if (stream.avail_in == 0) { - stream.avail_in = len > (uLong)max ? max : (uInt)len; + stream.avail_in = len > (z_size_t)max ? max : (uInt)len; len -= stream.avail_in; } err = inflate(&stream, Z_NO_FLUSH); } while (err == Z_OK); - *sourceLen -= len + stream.avail_in; - if (dest != buf) - *destLen = stream.total_out; - else if (stream.total_out && err == Z_BUF_ERROR) - left = 1; + /* 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; inflateEnd(&stream); return err == Z_STREAM_END ? Z_OK : err == Z_NEED_DICT ? Z_DATA_ERROR : - err == Z_BUF_ERROR && left + stream.avail_out ? Z_DATA_ERROR : + err == Z_BUF_ERROR && len == 0 ? 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) { - return uncompress2(dest, destLen, source, &sourceLen); + uLong used = sourceLen; + return uncompress2(dest, destLen, source, &used); } diff -Nru thunderbird-140.8.0esr/modules/zlib/src/zconf.h thunderbird-140.9.0esr/modules/zlib/src/zconf.h --- thunderbird-140.8.0esr/modules/zlib/src/zconf.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/zconf.h 2026-03-20 19:18:38.000000000 +0000 @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -36,7 +36,10 @@ # 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 @@ -47,6 +50,7 @@ # 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 @@ -62,6 +66,7 @@ # 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 @@ -131,9 +136,12 @@ # 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 @@ -237,10 +245,12 @@ # endif #endif -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const +#ifndef z_const +# ifdef ZLIB_CONST +# define z_const const +# else +# define z_const +# endif #endif #ifdef Z_SOLO @@ -436,11 +446,11 @@ typedef unsigned long z_crc_t; #endif -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +#if HAVE_UNISTD_H-0 /* may be set to #if 1 by ./configure */ # define Z_HAVE_UNISTD_H #endif -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +#if HAVE_STDARG_H-0 /* may be set to #if 1 by ./configure */ # define Z_HAVE_STDARG_H #endif @@ -473,12 +483,8 @@ #endif #ifndef Z_HAVE_UNISTD_H -# ifdef __WATCOMC__ -# define Z_HAVE_UNISTD_H -# endif -#endif -#ifndef Z_HAVE_UNISTD_H -# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32) +# if defined(__WATCOMC__) || defined(__GO32__) || \ + (defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)) # define Z_HAVE_UNISTD_H # endif #endif @@ -513,17 +519,19 @@ #endif #ifndef z_off_t -# define z_off_t long +# define z_off_t long 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 -# if defined(_WIN32) && !defined(__GNUC__) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif +# define z_off64_t z_off_t #endif /* MVS linker does not support external names larger than 8 bytes */ diff -Nru thunderbird-140.8.0esr/modules/zlib/src/zlib.h thunderbird-140.9.0esr/modules/zlib/src/zlib.h --- thunderbird-140.8.0esr/modules/zlib/src/zlib.h 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/zlib.h 2026-03-20 19:18:38.000000000 +0000 @@ -1,7 +1,7 @@ /* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.3.1, January 22nd, 2024 + version 1.3.2, February 17th, 2026 - Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2026 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,24 +24,28 @@ 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 + Comments) 1950 to 1952 at https://datatracker.ietf.org/doc/html/rfc1950 (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). */ #ifndef ZLIB_H #define ZLIB_H -#include "zconf.h" +#ifdef ZLIB_BUILD +# include +#else +# include "zconf.h" +#endif #ifdef __cplusplus extern "C" { #endif -#define ZLIB_VERSION "1.3.1" -#define ZLIB_VERNUM 0x1310 +#define ZLIB_VERSION "1.3.2" +#define ZLIB_VERNUM 0x1320 #define ZLIB_VER_MAJOR 1 #define ZLIB_VER_MINOR 3 -#define ZLIB_VER_REVISION 1 +#define ZLIB_VER_REVISION 2 #define ZLIB_VER_SUBREVISION 0 /* @@ -441,7 +445,7 @@ 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 last byte taken from strm->next_in, plus 64 if + number of unused bits in the input 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 @@ -587,18 +591,21 @@ 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_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. + 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. 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 @@ -758,8 +765,8 @@ returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. */ -ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, - uLong sourceLen); +ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen); +ZEXTERN z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen); /* deflateBound() returns an upper bound on the compressed size after deflation of sourceLen bytes. It must be called after deflateInit() or @@ -771,6 +778,9 @@ 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, @@ -785,6 +795,21 @@ 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. */ @@ -987,13 +1012,15 @@ int bits, int value); /* - 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. + 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. 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 @@ -1001,7 +1028,15 @@ to feeding inflate codes. inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. + 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. */ ZEXTERN long ZEXPORT inflateMark(z_streamp strm); @@ -1047,20 +1082,22 @@ 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.) 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. + 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. If inflateGetHeader is not used, then the header information is simply discarded. The header is always checked for validity, including the header @@ -1208,13 +1245,14 @@ 21: FASTEST -- deflate algorithm with only one, lowest compression level 22,23: 0 (reserved) - The sprintf variant used by gzprintf (zero is best): + The sprintf variant used by gzprintf (all zeros is best): 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() is 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: - 27-31: 0 (reserved) + 28-31: 0 (reserved) */ #ifndef Z_SOLO @@ -1226,11 +1264,14 @@ 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. + 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. */ -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 @@ -1244,9 +1285,12 @@ 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 @@ -1261,21 +1305,24 @@ */ 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. Upon entry, destLen is the total size + the byte length of the source buffer. On 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.) Upon exit, destLen + mechanism outside the scope of this compression library.) On exit, *destLen is the actual size of the uncompressed data. uncompress returns Z_OK if success, Z_MEM_ERROR if there was not @@ -1285,8 +1332,10 @@ 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 @@ -1314,13 +1363,17 @@ '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. + 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. - "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 @@ -1339,14 +1392,22 @@ 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. + 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. */ 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. + 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. 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 @@ -1416,10 +1477,16 @@ 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. + 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. */ ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, @@ -1443,15 +1510,20 @@ 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 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. + 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. */ 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. + 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. */ ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, @@ -1466,9 +1538,18 @@ 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 @@ -1476,11 +1557,19 @@ 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 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(). + 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. */ ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); @@ -1489,6 +1578,11 @@ 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); @@ -1501,8 +1595,13 @@ 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 there was an error, the contents at - buf are indeterminate. + 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. */ ZEXTERN int ZEXPORT gzputc(gzFile file, int c); @@ -1513,11 +1612,19 @@ 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. 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. + 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. */ ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); @@ -1530,6 +1637,11 @@ 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); @@ -1559,7 +1671,8 @@ 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. + starting position. For reading or writing, any actual seeking is deferred + until the next read or write operation, or close operation when writing. gzseek returns the resulting offset location as measured in bytes from the beginning of the uncompressed stream, or -1 in case of error, in @@ -1567,7 +1680,7 @@ 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. @@ -1575,7 +1688,7 @@ */ /* -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, @@ -1620,8 +1733,11 @@ 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(). + 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). When writing, gzdirect() returns true (1) if transparent writing was requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: @@ -1631,7 +1747,7 @@ 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 @@ -1659,9 +1775,10 @@ ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum); /* Return the error message for the last error which occurred on file. - 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. + 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. The application must not modify the returned string. Future calls to this function may invalidate the previously returned string. If file is @@ -1712,7 +1829,8 @@ ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len); /* - Same as adler32(), but with a size_t length. + Same as adler32(), but with a size_t length. Note that a long is 32 bits + on Windows. */ /* @@ -1748,7 +1866,8 @@ ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf, z_size_t len); /* - Same as crc32(), but with a size_t length. + Same as crc32(), but with a size_t length. Note that a long is 32 bits on + Windows. */ /* @@ -1758,14 +1877,14 @@ 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. + len2. len2 must be non-negative, otherwise zero is returned. */ /* 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. + crc32_combine_op(). len2 must be non-negative, otherwise zero is returned. */ ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op); @@ -1888,9 +2007,9 @@ 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_off_t); - ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); + 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); # endif #else ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *); diff -Nru thunderbird-140.8.0esr/modules/zlib/src/zutil.c thunderbird-140.9.0esr/modules/zlib/src/zutil.c --- thunderbird-140.8.0esr/modules/zlib/src/zutil.c 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/zutil.c 2026-03-20 19:18:38.000000000 +0000 @@ -1,5 +1,5 @@ /* zutil.c -- target dependent utility functions for the compression library - * Copyright (C) 1995-2017 Jean-loup Gailly + * Copyright (C) 1995-2026 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -86,28 +86,36 @@ flags += 1L << 21; #endif #if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifdef NO_vsnprintf - flags += 1L << 25; -# ifdef HAS_vsprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_vsnprintf_void - flags += 1L << 26; -# endif -# endif +# 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 #else flags += 1L << 24; -# ifdef NO_snprintf - flags += 1L << 25; -# ifdef HAS_sprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_snprintf_void - flags += 1L << 26; -# endif -# endif +# 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 #endif return flags; } @@ -142,28 +150,34 @@ #ifndef HAVE_MEMCPY -void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len) { - if (len == 0) return; - do { - *dest++ = *source++; /* ??? to be unrolled */ - } while (--len != 0); +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--; + } } -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; +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--; } return 0; } -void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len) { +void ZLIB_INTERNAL zmemzero(void FAR *b, z_size_t len) { + uchf *p = b; if (len == 0) return; - do { - *dest++ = 0; /* ??? to be unrolled */ - } while (--len != 0); + while (len) { + *p++ = 0; + len--; + } } + #endif #ifndef Z_SOLO diff -Nru thunderbird-140.8.0esr/modules/zlib/src/zutil.h thunderbird-140.9.0esr/modules/zlib/src/zutil.h --- thunderbird-140.8.0esr/modules/zlib/src/zutil.h 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/modules/zlib/src/zutil.h 2026-03-20 19:18:38.000000000 +0000 @@ -1,5 +1,5 @@ /* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -36,6 +36,10 @@ 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; @@ -48,6 +52,8 @@ # 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 @@ -63,7 +69,9 @@ /* 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 @@ -141,7 +149,7 @@ # define OS_CODE 7 #endif -#ifdef __acorn +#if defined(__acorn) || defined(__riscos) # define OS_CODE 13 #endif @@ -168,11 +176,10 @@ #endif /* provide prototypes for these when building zlib without LFS */ -#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); +#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); #endif /* common defaults */ @@ -211,9 +218,9 @@ # define zmemzero(dest, len) memset(dest, 0, len) # endif #else - 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); + 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); #endif /* Diagnostic functions */ @@ -251,4 +258,74 @@ #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 -Nru thunderbird-140.8.0esr/netwerk/base/nsStandardURL.cpp thunderbird-140.9.0esr/netwerk/base/nsStandardURL.cpp --- thunderbird-140.8.0esr/netwerk/base/nsStandardURL.cpp 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/netwerk/base/nsStandardURL.cpp 2026-03-20 19:18:38.000000000 +0000 @@ -3400,8 +3400,20 @@ } 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 @@ -3417,10 +3429,6 @@ return rv; } - if (!IsValid()) { - return NS_ERROR_MALFORMED_URI; - } - clearOnExit.release(); return NS_OK; @@ -3656,11 +3664,6 @@ 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); @@ -3683,6 +3686,11 @@ return false; } + nsresult rv = CheckIfHostIsAscii(); + if (NS_FAILED(rv)) { + return false; + } + clearOnExit.release(); return true; diff -Nru thunderbird-140.8.0esr/netwerk/base/nsStandardURL.h thunderbird-140.9.0esr/netwerk/base/nsStandardURL.h --- thunderbird-140.8.0esr/netwerk/base/nsStandardURL.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/netwerk/base/nsStandardURL.h 2026-03-20 19:18:39.000000000 +0000 @@ -603,6 +603,11 @@ 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 -Nru thunderbird-140.8.0esr/netwerk/dns/effective_tld_names.dat thunderbird-140.9.0esr/netwerk/dns/effective_tld_names.dat --- thunderbird-140.8.0esr/netwerk/dns/effective_tld_names.dat 2026-02-19 21:35:08.000000000 +0000 +++ thunderbird-140.9.0esr/netwerk/dns/effective_tld_names.dat 2026-03-20 19:18:38.000000000 +0000 @@ -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-02-15_17-15-07_UTC -// COMMIT: 1e7d25f31fa3b180951d9a9567e4148e105d1fdd +// VERSION: 2026-03-09_08-24-09_UTC +// COMMIT: 3c5eb8e70837e15570608f2cb5abe8579e09c9b9 // Instructions on pulling and using this list can be found at https://publicsuffix.org/list/. @@ -3824,8 +3824,14 @@ net.kg org.kg -// kh : http://www.mptc.gov.kh/dns_registration.htm -*.kh +// kh : https://trc.gov.kh +// Submitted by khnic@trc.gov.kh +kh +com.kh +edu.kh +gov.kh +net.kh +org.kh // ki : https://www.iana.org/domains/root/db/ki.html ki @@ -6818,7 +6824,7 @@ // newGTLDs -// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2026-02-15T15:24:49Z +// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2026-02-18T15:51:43Z // This list is auto-generated, don't edit it manually. // aaa : American Automobile Association, Inc. // https://www.iana.org/domains/root/db/aaa.html @@ -9476,7 +9482,7 @@ // https://www.iana.org/domains/root/db/ong.html ong -// onl : iRegistry GmbH +// onl : Jolly Host, LLC // https://www.iana.org/domains/root/db/onl.html onl @@ -10744,7 +10750,7 @@ // https://www.iana.org/domains/root/db/whoswho.html whoswho -// wien : punkt.wien GmbH +// wien : domainworx Service & Management GmbH // https://www.iana.org/domains/root/db/wien.html wien @@ -11363,6 +11369,8 @@ // 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 @@ -12457,9 +12465,10 @@ // Submitted by Herman Martinus bearblog.dev -// Beget Ltd -// Submitted by Lev Nekrasov +// Beget LLC : https://beget.com +// Submitted by Lev Nekrasov & Nikita Radchenko *.beget.app +*.begetcdn.cloud // Besties : https://besties.house // Submitted by Hazel Cora @@ -12914,7 +12923,11 @@ caffeine.xyz // dhosting.pl Sp. z o.o. : https://dhosting.pl/ -// Submitted by Michal Kokoszkiewicz +// Submitted by Szczepan Redzioch +mybox.company +intouch.email +mybox.me +mybox.page dfirma.pl dkonto.pl you2.pl @@ -13441,9 +13454,11 @@ relay.evervault.dev // Expo : https://expo.dev/ -// Submitted by James Ide +// Submitted by Phil Pluckthun expo.app +on.expo.app staging.expo.app +on.staging.expo.app // Fabrica Technologies, Inc. : https://www.fabrica.dev/ // Submitted by Eric Jiang @@ -14289,10 +14304,6 @@ webadorsite.com jouwweb.site -// Joyent : https://www.joyent.com/ -// Submitted by Brian Bennett -*.triton.zone - // JS.ORG : http://dns.js.org // Submitted by Stefan Keim js.org @@ -14306,6 +14317,10 @@ // 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 @@ -14547,10 +14562,6 @@ 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 @@ -14688,6 +14699,10 @@ 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 @@ -15964,6 +15979,10 @@ 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 @@ -16154,6 +16173,11 @@ 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 diff -Nru thunderbird-140.8.0esr/netwerk/protocol/http/PHttpChannelParams.h thunderbird-140.9.0esr/netwerk/protocol/http/PHttpChannelParams.h --- thunderbird-140.8.0esr/netwerk/protocol/http/PHttpChannelParams.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/netwerk/protocol/http/PHttpChannelParams.h 2026-03-20 19:18:39.000000000 +0000 @@ -10,6 +10,7 @@ #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" @@ -34,6 +35,19 @@ 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 @@ -62,6 +76,18 @@ }; 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; @@ -192,33 +218,29 @@ aParam.Enter(); WriteParam(aWriter, aParam.mHeaders); WriteParam(aWriter, aParam.mMethod); - WriteParam(aWriter, static_cast(aParam.mVersion)); + WriteParam(aWriter, aParam.mVersion); WriteParam(aWriter, aParam.mRequestURI); WriteParam(aWriter, aParam.mPath); WriteParam(aWriter, aParam.mOrigin); - WriteParam(aWriter, static_cast(aParam.mParsedMethod)); + WriteParam(aWriter, 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, &version) || + !ReadParam(aReader, &aResult->mVersion) || !ReadParam(aReader, &aResult->mRequestURI) || !ReadParam(aReader, &aResult->mPath) || !ReadParam(aReader, &aResult->mOrigin) || - !ReadParam(aReader, &method) || !ReadParam(aReader, &aResult->mHTTPS)) { + !ReadParam(aReader, &aResult->mParsedMethod) || + !ReadParam(aReader, &aResult->mHTTPS)) { aResult->Exit(); return false; } - aResult->mVersion = static_cast(version); - aResult->mParsedMethod = - static_cast(method); aResult->Exit(); return true; } @@ -234,7 +256,7 @@ const paramType& aParam) MOZ_NO_THREAD_SAFETY_ANALYSIS { aParam.Enter(); WriteParam(aWriter, aParam.mHeaders); - WriteParam(aWriter, static_cast(aParam.mVersion)); + WriteParam(aWriter, aParam.mVersion); WriteParam(aWriter, aParam.mStatus); WriteParam(aWriter, aParam.mStatusText); WriteParam(aWriter, aParam.mContentLength); @@ -255,10 +277,9 @@ } static bool Read(MessageReader* aReader, paramType* aResult) { - uint32_t version; aResult->Enter(); if (!ReadParam(aReader, &aResult->mHeaders) || - !ReadParam(aReader, &version) || + !ReadParam(aReader, &aResult->mVersion) || !ReadParam(aReader, &aResult->mStatus) || !ReadParam(aReader, &aResult->mStatusText) || !ReadParam(aReader, &aResult->mContentLength) || @@ -279,7 +300,6 @@ return false; } - aResult->mVersion = static_cast(version); aResult->Exit(); return true; } diff -Nru thunderbird-140.8.0esr/netwerk/protocol/http/nsHttpResponseHead.cpp thunderbird-140.9.0esr/netwerk/protocol/http/nsHttpResponseHead.cpp --- thunderbird-140.8.0esr/netwerk/protocol/http/nsHttpResponseHead.cpp 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/netwerk/protocol/http/nsHttpResponseHead.cpp 2026-03-20 19:18:39.000000000 +0000 @@ -293,6 +293,25 @@ 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)); @@ -318,6 +337,15 @@ } 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; } @@ -444,6 +472,33 @@ 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; @@ -487,14 +542,7 @@ } } else if (hdr == nsHttp::Content_Type) { - 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())); + ParseContentTypeValue(hdr, val); } else if (hdr == nsHttp::Cache_Control) { ParseCacheControl(mHeaders.PeekHeader(hdr)); } else if (hdr == nsHttp::Pragma) { diff -Nru thunderbird-140.8.0esr/netwerk/protocol/http/nsHttpResponseHead.h thunderbird-140.9.0esr/netwerk/protocol/http/nsHttpResponseHead.h --- thunderbird-140.8.0esr/netwerk/protocol/http/nsHttpResponseHead.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/netwerk/protocol/http/nsHttpResponseHead.h 2026-03-20 19:18:39.000000000 +0000 @@ -160,6 +160,9 @@ // 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); @@ -210,6 +213,7 @@ 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 -Nru thunderbird-140.8.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp thunderbird-140.9.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp --- thunderbird-140.8.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp 2026-03-20 19:18:39.000000000 +0000 @@ -135,13 +135,12 @@ mDedicatedConnection = aDedicated; - if (!aServerCertHashes.IsEmpty()) { - mServerCertHashes.Clear(); - mServerCertHashes.AppendElements(aServerCertHashes); - } - { MutexAutoLock lock(mMutex); + if (!aServerCertHashes.IsEmpty()) { + mServerCertHashes.Clear(); + mServerCertHashes.AppendElements(aServerCertHashes); + } ChangeState(WebTransportSessionProxyState::NEGOTIATING); } @@ -252,6 +251,7 @@ NS_IMETHODIMP WebTransportSessionProxy::GetServerCertificateHashes( nsTArray>& aServerCertHashes) { + MutexAutoLock lock(mMutex); aServerCertHashes.Clear(); aServerCertHashes.AppendElements(mServerCertHashes); return NS_OK; diff -Nru thunderbird-140.8.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.h thunderbird-140.9.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.h --- thunderbird-140.8.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.h 2026-03-20 19:18:39.000000000 +0000 @@ -191,7 +191,8 @@ nsTArray> mPendingCreateStreamEvents MOZ_GUARDED_BY(mMutex); nsCOMPtr mTarget MOZ_GUARDED_BY(mMutex); - nsTArray> mServerCertHashes; + nsTArray> mServerCertHashes + MOZ_GUARDED_BY(mMutex); bool mDedicatedConnection; // for WebTranport nsIWebTransport::HTTPVersion mHTTPVersion = nsIWebTransport::HTTPVersion::h3; }; diff -Nru thunderbird-140.8.0esr/parser/expat/00_xmlchar.patch thunderbird-140.9.0esr/parser/expat/00_xmlchar.patch --- thunderbird-140.8.0esr/parser/expat/00_xmlchar.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/00_xmlchar.patch 2026-03-20 19:18:39.000000000 +0000 @@ -1,30 +1,31 @@ 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 -@@ -137,6 +137,9 @@ extern "C" { +@@ -138,6 +138,9 @@ extern "C" { + # endif # 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; -@@ -150,6 +153,9 @@ typedef char XML_Char; +@@ -151,6 +154,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 -@@ -194,6 +194,9 @@ typedef char ICHAR; +@@ -195,6 +195,9 @@ typedef char ICHAR; #endif @@ -34,7 +35,7 @@ #ifdef XML_UNICODE # ifdef XML_UNICODE_WCHAR_T -@@ -211,6 +214,9 @@ typedef char ICHAR; +@@ -212,6 +215,9 @@ typedef char ICHAR; #endif diff -Nru thunderbird-140.8.0esr/parser/expat/01_noslop.patch thunderbird-140.9.0esr/parser/expat/01_noslop.patch --- thunderbird-140.8.0esr/parser/expat/01_noslop.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/01_noslop.patch 2026-03-20 19:18:39.000000000 +0000 @@ -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 -@@ -269,7 +269,9 @@ typedef struct { +@@ -270,7 +270,9 @@ typedef struct { #define INIT_DATA_BUF_SIZE 1024 #define INIT_ATTS_SIZE 16 #define INIT_ATTS_VERSION 0xFFFFFFFF diff -Nru thunderbird-140.8.0esr/parser/expat/02_report_mismatched_tag.patch thunderbird-140.9.0esr/parser/expat/02_report_mismatched_tag.patch --- thunderbird-140.8.0esr/parser/expat/02_report_mismatched_tag.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/02_report_mismatched_tag.patch 2026-03-20 19:18:38.000000000 +0000 @@ -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 -@@ -764,6 +764,9 @@ struct XML_ParserStruct { - ACCOUNTING m_accounting; +@@ -791,6 +791,9 @@ struct XML_ParserStruct { 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 */ }; - #define MALLOC(parser, s) (parser->m_mem.malloc_fcn((s))) -@@ -1189,6 +1192,10 @@ parserCreate(const XML_Char *encodingNam + #if XML_GE == 1 +@@ -1538,6 +1541,10 @@ parserCreate(const XML_Char *encodingName, parser->m_internalEncoding = XmlGetInternalEncoding(); } @@ -22,22 +22,7 @@ return parser; } -@@ -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 +@@ -3593,6 +3600,33 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, len = XmlNameLength(enc, rawName); if (len != tag->rawNameLength || memcmp(tag->rawName, rawName, len) != 0) { diff -Nru thunderbird-140.8.0esr/parser/expat/03_dont_generate_salt.patch thunderbird-140.9.0esr/parser/expat/03_dont_generate_salt.patch --- thunderbird-140.8.0esr/parser/expat/03_dont_generate_salt.patch 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/03_dont_generate_salt.patch 2026-03-20 19:18:38.000000000 +0000 @@ -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 -@@ -796,6 +796,8 @@ static const XML_Char implicitContext[] +@@ -1046,6 +1046,8 @@ static const XML_Char implicitContext[] ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0'}; @@ -10,7 +10,7 @@ /* To avoid warnings about unused functions: */ #if ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) -@@ -957,9 +959,13 @@ ENTROPY_DEBUG(const char *label, unsigne +@@ -1210,9 +1212,13 @@ ENTROPY_DEBUG(const char *label, unsigned long entropy) { } return entropy; } @@ -24,7 +24,7 @@ unsigned long entropy; (void)parser; -@@ -999,6 +1005,10 @@ generate_hash_secret_salt(XML_Parser par +@@ -1252,6 +1258,10 @@ generate_hash_secret_salt(XML_Parser parser) { entropy * (unsigned long)2305843009213693951ULL); } #endif diff -Nru thunderbird-140.8.0esr/parser/expat/04_always_set_eventptrs.patch thunderbird-140.9.0esr/parser/expat/04_always_set_eventptrs.patch --- thunderbird-140.8.0esr/parser/expat/04_always_set_eventptrs.patch 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/04_always_set_eventptrs.patch 2026-03-20 19:18:38.000000000 +0000 @@ -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 -@@ -2328,6 +2328,10 @@ XML_ResumeParser(XML_Parser parser) { +@@ -2536,6 +2536,10 @@ 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; diff -Nru thunderbird-140.8.0esr/parser/expat/05_getcurrentbyteindex.patch thunderbird-140.9.0esr/parser/expat/05_getcurrentbyteindex.patch --- thunderbird-140.8.0esr/parser/expat/05_getcurrentbyteindex.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/05_getcurrentbyteindex.patch 2026-03-20 19:18:39.000000000 +0000 @@ -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 -@@ -2357,7 +2357,13 @@ XML_GetCurrentByteIndex(XML_Parser parse +@@ -2780,7 +2780,13 @@ XML_GetCurrentByteIndex(XML_Parser parser) { if (parser->m_eventPtr) return (XML_Index)(parser->m_parseEndByteIndex - (parser->m_parseEndPtr - parser->m_eventPtr)); diff -Nru thunderbird-140.8.0esr/parser/expat/06_always_store_rawnames.patch thunderbird-140.9.0esr/parser/expat/06_always_store_rawnames.patch --- thunderbird-140.8.0esr/parser/expat/06_always_store_rawnames.patch 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/06_always_store_rawnames.patch 2026-03-20 19:18:38.000000000 +0000 @@ -0,0 +1,69 @@ +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, + enum XML_Account account); + static enum XML_Error processEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl, enum EntityType type); ++/* 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, ++ const char *end, const char **endPtr, ++ XML_Bool haveMore, ++ enum XML_Account account); ++/* END MOZILLA CHANGE */ + 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); ++/* 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; + } + +@@ -3331,10 +3342,14 @@ externalEntityContentProcessor(XML_Parser parser, const char *start, + = 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; ++ } ++ return result; ++} ++ ++static enum XML_Error ++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) { ++/* END MOZILLA CHANGE */ + /* save one level of indirection */ + DTD *const dtd = parser->m_dtd; + diff -Nru thunderbird-140.8.0esr/parser/expat/06_report_processing_entity.patch thunderbird-140.9.0esr/parser/expat/06_report_processing_entity.patch --- thunderbird-140.8.0esr/parser/expat/06_report_processing_entity.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/06_report_processing_entity.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -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 -Nru thunderbird-140.8.0esr/parser/expat/07_always_store_rawnames.patch thunderbird-140.9.0esr/parser/expat/07_always_store_rawnames.patch --- thunderbird-140.8.0esr/parser/expat/07_always_store_rawnames.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/07_always_store_rawnames.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ -diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c ---- a/expat/lib/xmlparse.c -+++ b/expat/lib/xmlparse.c -@@ -491,6 +491,13 @@ static enum XML_Error doProlog(XML_Parse - enum XML_Account account); - 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, -+ const char *end, const char **endPtr, -+ XML_Bool haveMore, -+ enum XML_Account account); -+/* END MOZILLA CHANGE */ - static enum XML_Error doContent(XML_Parser parser, int startTagLevel, - const ENCODING *enc, const char *start, - const char *end, const char **endPtr, -@@ -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) { - if (! storeRawNames(parser)) - return XML_ERROR_NO_MEMORY; - } -+#endif -+/* END MOZILLA CHANGE */ - return result; - } - -@@ -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; -+} -+ -+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) { -+/* END MOZILLA CHANGE */ - /* 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 -Nru thunderbird-140.8.0esr/parser/expat/07_dont_ignore_undeclared_entity.patch thunderbird-140.9.0esr/parser/expat/07_dont_ignore_undeclared_entity.patch --- thunderbird-140.8.0esr/parser/expat/07_dont_ignore_undeclared_entity.patch 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/07_dont_ignore_undeclared_entity.patch 2026-03-20 19:18:39.000000000 +0000 @@ -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 +@@ -3487,9 +3487,15 @@ doContentInternal(XML_Parser parser, int startTagLevel, const ENCODING *enc, + } else if (! entity) { + if (parser->m_skippedEntityHandler) + parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); ++/* BEGIN MOZILLA CHANGE (Bug 35984 - Undeclared entities are ignored when external DTD not found) */ ++#if 0 + else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + break; ++#else ++ return XML_ERROR_UNDEFINED_ENTITY; ++#endif ++/* END MOZILLA CHANGE */ + } + if (entity->open) + return XML_ERROR_RECURSIVE_ENTITY_REF; +@@ -6785,7 +6791,13 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, + if ((pool == &parser->m_tempPool) && parser->m_defaultHandler) + reportDefault(parser, enc, ptr, next); + */ ++/* BEGIN MOZILLA CHANGE (Bug 35984 - Undeclared entities are ignored when external DTD not found) */ ++#if 0 + break; ++#else ++ return XML_ERROR_UNDEFINED_ENTITY; ++#endif ++/* END MOZILLA CHANGE */ + } + if (entity->open) { + if (enc == parser->m_encoding) { diff -Nru thunderbird-140.8.0esr/parser/expat/08_dont_ignore_undeclared_entity.patch thunderbird-140.9.0esr/parser/expat/08_dont_ignore_undeclared_entity.patch --- thunderbird-140.8.0esr/parser/expat/08_dont_ignore_undeclared_entity.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/08_dont_ignore_undeclared_entity.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c ---- a/expat/lib/xmlparse.c -+++ b/expat/lib/xmlparse.c -@@ -3028,9 +3028,15 @@ doContentInternal(XML_Parser parser, int - } else if (! entity) { - if (parser->m_skippedEntityHandler) - parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); -+/* BEGIN MOZILLA CHANGE (Bug 35984 - Undeclared entities are ignored when external DTD not found) */ -+#if 0 - else if (parser->m_defaultHandler) - reportDefault(parser, enc, s, next); - break; -+#else -+ return XML_ERROR_UNDEFINED_ENTITY; -+#endif -+/* END MOZILLA CHANGE */ - } - if (entity->open) - return XML_ERROR_RECURSIVE_ENTITY_REF; -@@ -6229,7 +6235,13 @@ appendAttributeValue(XML_Parser parser, - if ((pool == &parser->m_tempPool) && parser->m_defaultHandler) - reportDefault(parser, enc, ptr, next); - */ -+/* BEGIN MOZILLA CHANGE (Bug 35984 - Undeclared entities are ignored when external DTD not found) */ -+#if 0 - break; -+#else -+ return XML_ERROR_UNDEFINED_ENTITY; -+#endif -+/* END MOZILLA CHANGE */ - } - if (entity->open) { - if (enc == parser->m_encoding) { diff -Nru thunderbird-140.8.0esr/parser/expat/08_include_xmlns.patch thunderbird-140.9.0esr/parser/expat/08_include_xmlns.patch --- thunderbird-140.8.0esr/parser/expat/08_include_xmlns.patch 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/08_include_xmlns.patch 2026-03-20 19:18:39.000000000 +0000 @@ -0,0 +1,140 @@ +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, + int n; + XML_Char *uri; + int nPrefixes = 0; ++/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ ++ int nXMLNSDeclarations = 0; ++/* END MOZILLA CHANGE */ + BINDING *binding; + const XML_Char *localPart; + +@@ -4086,7 +4089,15 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, + appAtts[attIndex], bindingsPtr); + if (result) + return result; ++/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ ++#if 0 + --attIndex; ++#else ++ attIndex++; ++ nXMLNSDeclarations++; ++ (attId->name)[-1] = 3; ++#endif ++/* END MOZILLA CHANGE */ + } else { + /* deal with other prefixed names later */ + attIndex++; +@@ -4118,6 +4129,12 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, + da->value, bindingsPtr); + if (result) + return result; ++/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ ++ (da->id->name)[-1] = 3; ++ nXMLNSDeclarations++; ++ appAtts[attIndex++] = da->id->name; ++ appAtts[attIndex++] = da->value; ++/* END MOZILLA CHANGE */ + } else { + (da->id->name)[-1] = 2; + nPrefixes++; +@@ -4136,7 +4153,13 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, + /* expand prefixed attribute names, check for duplicates, + and clear flags that say whether attributes were specified */ + i = 0; ++/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ ++#if 0 + if (nPrefixes) { ++#else ++ if (nPrefixes || nXMLNSDeclarations) { ++#endif ++/* END MOZILLA CHANGE */ + unsigned 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, + } + + unsigned int nsAttsSize = 1u << parser->m_nsAttsPower; ++/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ ++ if (nPrefixes) { ++/* END MOZILLA CHANGE */ + 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, + parser->m_nsAtts[--j].version = version; + } + parser->m_nsAttsVersion = --version; ++/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ ++ } ++/* END MOZILLA CHANGE */ + + /* 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, + parser->m_nsAtts[j].hash = uriHash; + parser->m_nsAtts[j].uriName = s; + ++/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ ++#if 0 + if (! --nPrefixes) { ++#else ++ if (! --nPrefixes && ! nXMLNSDeclarations) { ++#endif ++/* END MOZILLA CHANGE */ + i += 2; + break; + } ++/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ ++ } else if (s[-1] == 3) { /* xmlns attribute */ ++ static const XML_Char xmlnsNamespace[] = { ++ ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ++ ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ++ ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_2, ASCII_0, ASCII_0, ASCII_0, ++ ASCII_SLASH, ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s, ASCII_SLASH, '\0' ++ }; ++ static const XML_Char xmlnsPrefix[] = { ++ ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s, '\0' ++ }; ++ ++ ((XML_Char *)s)[-1] = 0; /* clear flag */ ++ if (! poolAppendString(&parser->m_tempPool, xmlnsNamespace) ++ || ! poolAppendChar(&parser->m_tempPool, parser->m_namespaceSeparator)) ++ return XML_ERROR_NO_MEMORY; ++ s += sizeof(xmlnsPrefix) / sizeof(xmlnsPrefix[0]) - 1; ++ if (*s == XML_T(':')) { ++ ++s; ++ do { /* copies null terminator */ ++ if (! poolAppendChar(&parser->m_tempPool, *s)) ++ return XML_ERROR_NO_MEMORY; ++ } while (*s++); ++ if (parser->m_ns_triplets) { /* append namespace separator and prefix */ ++ parser->m_tempPool.ptr[-1] = parser->m_namespaceSeparator; ++ if (! poolAppendString(&parser->m_tempPool, xmlnsPrefix) ++ || ! poolAppendChar(&parser->m_tempPool, '\0')) ++ return XML_ERROR_NO_MEMORY; ++ } ++ } ++ else { ++ /* xlmns attribute without a prefix. */ ++ if (! poolAppendString(&parser->m_tempPool, xmlnsPrefix) ++ || ! poolAppendChar(&parser->m_tempPool, '\0')) ++ return XML_ERROR_NO_MEMORY; ++ } ++ ++ /* store expanded name in attribute list */ ++ s = poolStart(&parser->m_tempPool); ++ poolFinish(&parser->m_tempPool); ++ appAtts[i] = s; ++ ++ if (! --nXMLNSDeclarations && ! nPrefixes) { ++ i += 2; ++ break; ++ } ++/* END MOZILLA CHANGE */ + } else /* not prefixed */ + ((XML_Char *)s)[-1] = 0; /* clear flag */ + } diff -Nru thunderbird-140.8.0esr/parser/expat/09_include_xmlns.patch thunderbird-140.9.0esr/parser/expat/09_include_xmlns.patch --- thunderbird-140.8.0esr/parser/expat/09_include_xmlns.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/09_include_xmlns.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,140 +0,0 @@ -diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c ---- a/expat/lib/xmlparse.c -+++ b/expat/lib/xmlparse.c -@@ -3458,6 +3458,9 @@ storeAtts(XML_Parser parser, const ENCOD - int n; - XML_Char *uri; - int nPrefixes = 0; -+/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ -+ int nXMLNSDeclarations = 0; -+/* END MOZILLA CHANGE */ - BINDING *binding; - const XML_Char *localPart; - -@@ -3615,7 +3618,15 @@ storeAtts(XML_Parser parser, const ENCOD - appAtts[attIndex], bindingsPtr); - if (result) - return result; -+/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ -+#if 0 - --attIndex; -+#else -+ attIndex++; -+ nXMLNSDeclarations++; -+ (attId->name)[-1] = 3; -+#endif -+/* END MOZILLA CHANGE */ - } else { - /* deal with other prefixed names later */ - attIndex++; -@@ -3647,6 +3658,12 @@ storeAtts(XML_Parser parser, const ENCOD - da->value, bindingsPtr); - if (result) - return result; -+/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ -+ (da->id->name)[-1] = 3; -+ nXMLNSDeclarations++; -+ appAtts[attIndex++] = da->id->name; -+ appAtts[attIndex++] = da->value; -+/* END MOZILLA CHANGE */ - } else { - (da->id->name)[-1] = 2; - nPrefixes++; -@@ -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; -+/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ -+#if 0 - if (nPrefixes) { -+#else -+ if (nPrefixes || nXMLNSDeclarations) { -+#endif -+/* END MOZILLA CHANGE */ - int j; /* hash table index */ - unsigned long version = parser->m_nsAttsVersion; - -@@ -3675,6 +3698,9 @@ storeAtts(XML_Parser parser, const ENCOD - } - - unsigned int nsAttsSize = 1u << parser->m_nsAttsPower; -+/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ -+ if (nPrefixes) { -+/* END MOZILLA CHANGE */ - unsigned char oldNsAttsPower = parser->m_nsAttsPower; - /* size of hash table must be at least 2 * (# of prefixed attributes) */ - if ((nPrefixes << 1) -@@ -3724,6 +3750,9 @@ storeAtts(XML_Parser parser, const ENCOD - parser->m_nsAtts[--j].version = version; - } - parser->m_nsAttsVersion = --version; -+/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ -+ } -+/* END MOZILLA CHANGE */ - - /* expand prefixed names and check for duplicates */ - for (; i < attIndex; i += 2) { -@@ -3823,10 +3852,63 @@ storeAtts(XML_Parser parser, const ENCOD - parser->m_nsAtts[j].hash = uriHash; - parser->m_nsAtts[j].uriName = s; - -+/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ -+#if 0 - if (! --nPrefixes) { -+#else -+ if (! --nPrefixes && ! nXMLNSDeclarations) { -+#endif -+/* END MOZILLA CHANGE */ - i += 2; - break; - } -+/* BEGIN MOZILLA CHANGE (Include xmlns attributes in attributes array) */ -+ } else if (s[-1] == 3) { /* xmlns attribute */ -+ static const XML_Char xmlnsNamespace[] = { -+ ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, -+ ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, -+ ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_2, ASCII_0, ASCII_0, ASCII_0, -+ ASCII_SLASH, ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s, ASCII_SLASH, '\0' -+ }; -+ static const XML_Char xmlnsPrefix[] = { -+ ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s, '\0' -+ }; -+ -+ ((XML_Char *)s)[-1] = 0; /* clear flag */ -+ if (! poolAppendString(&parser->m_tempPool, xmlnsNamespace) -+ || ! poolAppendChar(&parser->m_tempPool, parser->m_namespaceSeparator)) -+ return XML_ERROR_NO_MEMORY; -+ s += sizeof(xmlnsPrefix) / sizeof(xmlnsPrefix[0]) - 1; -+ if (*s == XML_T(':')) { -+ ++s; -+ do { /* copies null terminator */ -+ if (! poolAppendChar(&parser->m_tempPool, *s)) -+ return XML_ERROR_NO_MEMORY; -+ } while (*s++); -+ if (parser->m_ns_triplets) { /* append namespace separator and prefix */ -+ parser->m_tempPool.ptr[-1] = parser->m_namespaceSeparator; -+ if (! poolAppendString(&parser->m_tempPool, xmlnsPrefix) -+ || ! poolAppendChar(&parser->m_tempPool, '\0')) -+ return XML_ERROR_NO_MEMORY; -+ } -+ } -+ else { -+ /* xlmns attribute without a prefix. */ -+ if (! poolAppendString(&parser->m_tempPool, xmlnsPrefix) -+ || ! poolAppendChar(&parser->m_tempPool, '\0')) -+ return XML_ERROR_NO_MEMORY; -+ } -+ -+ /* store expanded name in attribute list */ -+ s = poolStart(&parser->m_tempPool); -+ poolFinish(&parser->m_tempPool); -+ appAtts[i] = s; -+ -+ if (! --nXMLNSDeclarations && ! nPrefixes) { -+ i += 2; -+ break; -+ } -+/* END MOZILLA CHANGE */ - } else /* not prefixed */ - ((XML_Char *)s)[-1] = 0; /* clear flag */ - } diff -Nru thunderbird-140.8.0esr/parser/expat/09_internalsubset.patch thunderbird-140.9.0esr/parser/expat/09_internalsubset.patch --- thunderbird-140.8.0esr/parser/expat/09_internalsubset.patch 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/09_internalsubset.patch 2026-03-20 19:18:39.000000000 +0000 @@ -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 +@@ -6227,7 +6227,13 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, + entity->open = XML_TRUE; + entityTrackingOnOpen(parser, entity, __LINE__); + if (! parser->m_externalEntityRefHandler( ++/* BEGIN MOZILLA CHANGE (Bug 191482 - Add external entity inclusions to internalSubset) */ ++#if 0 + parser->m_externalEntityRefHandlerArg, 0, entity->base, ++#else ++ parser->m_externalEntityRefHandlerArg, entity->name, entity->base, ++#endif ++/* END MOZILLA CHANGE */ + entity->systemId, entity->publicId)) { + entityTrackingOnClose(parser, entity, __LINE__); + entity->open = XML_FALSE; diff -Nru thunderbird-140.8.0esr/parser/expat/10_internalsubset.patch thunderbird-140.9.0esr/parser/expat/10_internalsubset.patch --- thunderbird-140.8.0esr/parser/expat/10_internalsubset.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/10_internalsubset.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c ---- a/expat/lib/xmlparse.c -+++ b/expat/lib/xmlparse.c -@@ -5752,7 +5752,13 @@ doProlog(XML_Parser parser, const ENCODI - entity->open = XML_TRUE; - entityTrackingOnOpen(parser, entity, __LINE__); - if (! parser->m_externalEntityRefHandler( -+/* BEGIN MOZILLA CHANGE (Bug 191482 - Add external entity inclusions to internalSubset) */ -+#if 0 - parser->m_externalEntityRefHandlerArg, 0, entity->base, -+#else -+ parser->m_externalEntityRefHandlerArg, entity->name, entity->base, -+#endif -+/* END MOZILLA CHANGE */ - entity->systemId, entity->publicId)) { - entityTrackingOnClose(parser, entity, __LINE__); - entity->open = XML_FALSE; diff -Nru thunderbird-140.8.0esr/parser/expat/10_version_limit.patch thunderbird-140.9.0esr/parser/expat/10_version_limit.patch --- thunderbird-140.8.0esr/parser/expat/10_version_limit.patch 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/10_version_limit.patch 2026-03-20 19:18:39.000000000 +0000 @@ -0,0 +1,28 @@ +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'}; + + static const char KW_no[] = {ASCII_n, ASCII_o, '\0'}; + ++/* BEGIN MOZILLA CHANGE (Bug 62157 - Document content is rendered even though version value is not "1.0") */ ++static const char KW_XML_1_0[] = {ASCII_1, ASCII_PERIOD, ASCII_0, '\0'}; ++/* END MOZILLA CHANGE */ ++ + static int + doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, const char *, + const char *), +@@ -1175,6 +1179,13 @@ doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, const char *, + *versionPtr = val; + if (versionEndPtr) + *versionEndPtr = ptr; ++/* BEGIN MOZILLA CHANGE (Bug 62157 - Document content is rendered even though version value is not "1.0") */ ++ /* Anything else but a version="1.0" is invalid for us, until we support later versions. */ ++ if (!XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_XML_1_0)) { ++ *badPtr = val; ++ return 0; ++ } ++/* END MOZILLA CHANGE */ + if (! parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { + *badPtr = ptr; + return 0; diff -Nru thunderbird-140.8.0esr/parser/expat/11_nested_entities.patch thunderbird-140.9.0esr/parser/expat/11_nested_entities.patch --- thunderbird-140.8.0esr/parser/expat/11_nested_entities.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/11_nested_entities.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -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 -Nru thunderbird-140.8.0esr/parser/expat/11_no_debug_report.patch thunderbird-140.9.0esr/parser/expat/11_no_debug_report.patch --- thunderbird-140.8.0esr/parser/expat/11_no_debug_report.patch 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/11_no_debug_report.patch 2026-03-20 19:18:39.000000000 +0000 @@ -0,0 +1,346 @@ +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; + typedef struct accounting { + XmlBigCount countBytesDirect; + XmlBigCount countBytesIndirect; ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + unsigned long debugLevel; ++#endif ++/* END MOZILLA CHANGE */ + float maximumAmplificationFactor; // >=1.0 + 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 + unsigned int countEverOpened; + unsigned int currentDepth; + unsigned int maximumDepthSeen; + unsigned long debugLevel; ++#endif ++/* END MOZILLA CHANGE */ + } ENTITY_STATS; + #endif /* XML_GE == 1 */ + +@@ -632,18 +644,26 @@ static void parserInit(XML_Parser parser, const XML_Char *encodingName); + static float accountingGetCurrentAmplification(XML_Parser rootParser); + static void accountingReportStats(XML_Parser originParser, const char *epilog); + static void accountingOnAbort(XML_Parser originParser); ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + static void accountingReportDiff(XML_Parser rootParser, + unsigned int levelsAwayFromRootParser, + const char *before, const char *after, + ptrdiff_t bytesMore, int source_line, + enum XML_Account account); ++#endif ++/* END MOZILLA CHANGE */ + static XML_Bool accountingDiffTolerated(XML_Parser originParser, int tok, + const char *before, const char *after, + int source_line, + enum XML_Account account); + ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + static void entityTrackingReportStats(XML_Parser parser, ENTITY *entity, + const char *action, int sourceLine); ++#endif ++/* END MOZILLA CHANGE */ + 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, + unsigned int *outLevelDiff); + ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + static unsigned long getDebugLevel(const char *variableName, + unsigned long defaultDebugLevel); ++#endif ++/* END MOZILLA CHANGE */ + + #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) { + + #if XML_GE == 1 + memset(&parser->m_accounting, 0, sizeof(ACCOUNTING)); ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + parser->m_accounting.debugLevel = getDebugLevel("EXPAT_ACCOUNTING_DEBUG", 0u); ++#endif ++/* END MOZILLA CHANGE */ + parser->m_accounting.maximumAmplificationFactor + = EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_MAXIMUM_AMPLIFICATION_DEFAULT; + parser->m_accounting.activationThresholdBytes + = EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT; + + memset(&parser->m_entity_stats, 0, sizeof(ENTITY_STATS)); ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + parser->m_entity_stats.debugLevel = getDebugLevel("EXPAT_ENTITY_DEBUG", 0u); + #endif ++/* END MOZILLA CHANGE */ ++#endif + } + + /* moves list of bindings to m_freeBindingList */ +@@ -8667,6 +8727,8 @@ accountingGetCurrentAmplification(XML_Parser rootParser) { + + static void + accountingReportStats(XML_Parser originParser, const char *epilog) { ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + const XML_Parser rootParser = getRootParserOf(originParser, NULL); + assert(! rootParser->m_parentParser); + +@@ -8682,6 +8744,8 @@ accountingReportStats(XML_Parser originParser, const char *epilog) { + (void *)rootParser, rootParser->m_accounting.countBytesDirect, + rootParser->m_accounting.countBytesIndirect, + (double)amplificationFactor, epilog); ++#endif ++/* END MOZILLA CHANGE */ + } + + static void +@@ -8689,6 +8753,8 @@ accountingOnAbort(XML_Parser originParser) { + accountingReportStats(originParser, " ABORTING\n"); + } + ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + static void + accountingReportDiff(XML_Parser rootParser, + unsigned int levelsAwayFromRootParser, const char *before, +@@ -8725,6 +8791,8 @@ accountingReportDiff(XML_Parser rootParser, + } + fprintf(stderr, "\"\n"); + } ++#endif ++/* END MOZILLA CHANGE */ + + 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, + || (amplificationFactor + <= rootParser->m_accounting.maximumAmplificationFactor); + ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + if (rootParser->m_accounting.debugLevel >= 2u) { + accountingReportStats(rootParser, ""); + accountingReportDiff(rootParser, levelsAwayFromRootParser, before, after, + bytesMore, source_line, account); + } ++#endif ++/* END MOZILLA CHANGE */ + + return tolerated; + } +@@ -8795,6 +8867,8 @@ testingAccountingGetCountBytesIndirect(XML_Parser parser) { + return parser->m_accounting.countBytesIndirect; + } + ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + static void + entityTrackingReportStats(XML_Parser rootParser, ENTITY *entity, + const char *action, int sourceLine) { +@@ -8818,9 +8892,13 @@ entityTrackingReportStats(XML_Parser rootParser, ENTITY *entity, + entity->is_param ? "%" : "&", entityName, action, entity->textLen, + sourceLine); + } ++#endif ++/* END MOZILLA CHANGE */ + + static void + entityTrackingOnOpen(XML_Parser originParser, ENTITY *entity, int sourceLine) { ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + const XML_Parser rootParser = getRootParserOf(originParser, NULL); + assert(! rootParser->m_parentParser); + +@@ -8832,15 +8910,21 @@ entityTrackingOnOpen(XML_Parser originParser, ENTITY *entity, int sourceLine) { + } + + entityTrackingReportStats(rootParser, entity, "OPEN ", sourceLine); ++#endif ++/* END MOZILLA CHANGE */ + } + + static void + entityTrackingOnClose(XML_Parser originParser, ENTITY *entity, int sourceLine) { ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + const XML_Parser rootParser = getRootParserOf(originParser, NULL); + assert(! rootParser->m_parentParser); + + entityTrackingReportStats(rootParser, entity, "CLOSE", sourceLine); + rootParser->m_entity_stats.currentDepth--; ++#endif ++/* END MOZILLA CHANGE */ + } + + #endif /* XML_GE == 1 */ +@@ -8862,6 +8946,8 @@ getRootParserOf(XML_Parser parser, unsigned int *outLevelDiff) { + + #if XML_GE == 1 + ++/* 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) { + assert(0); /* never gets here */ + // LCOV_EXCL_STOP + } ++#endif ++/* END MOZILLA CHANGE */ + + #endif /* XML_GE == 1 */ + ++/* BEGIN MOZILLA CHANGE (don't report debug information) */ ++#if 0 + 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) { + + return debugLevel; + } ++#endif ++/* END MOZILLA CHANGE */ diff -Nru thunderbird-140.8.0esr/parser/expat/12_unused.patch thunderbird-140.9.0esr/parser/expat/12_unused.patch --- thunderbird-140.8.0esr/parser/expat/12_unused.patch 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/12_unused.patch 2026-03-20 19:18:39.000000000 +0000 @@ -0,0 +1,280 @@ +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); + static void FASTCALL normalizePublicId(XML_Char *s); + + static DTD *dtdCreate(XML_Parser parser); ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + /* do not call if m_parentParser != NULL */ + static void dtdReset(DTD *p, XML_Parser parser); ++#endif ++/* END MOZILLA CHANGE */ + static void dtdDestroy(DTD *p, XML_Bool isDocEntity, XML_Parser parser); + 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, + size_t createSize); + static void FASTCALL hashTableInit(HASH_TABLE *table, XML_Parser parser); ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + static void FASTCALL hashTableClear(HASH_TABLE *table); ++#endif ++/* END MOZILLA CHANGE */ + 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 + ++/* 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) { + XML_Char tmp[2] = {nsSep, 0}; + return XML_ParserCreate_MM(encodingName, NULL, tmp); + } ++#endif ++/* END MOZILLA CHANGE */ + + // "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) { + #endif + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + /* 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) { + } + return XML_STATUS_OK; + } ++#endif ++/* END MOZILLA CHANGE */ + + XML_Parser XMLCALL + XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, +@@ -2109,6 +2129,8 @@ XML_UseParserAsHandlerArg(XML_Parser parser) { + parser->m_handlerArg = parser; + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + 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) { + return XML_ERROR_FEATURE_REQUIRES_XML_DTD; + #endif + } ++#endif ++/* END MOZILLA CHANGE */ + + void XMLCALL + XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { +@@ -2198,6 +2222,8 @@ XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, + parser->m_endElementHandler = end; + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + 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) { + if (parser != NULL) + parser->m_endElementHandler = end; + } ++#endif ++/* END MOZILLA CHANGE */ + + void XMLCALL + XML_SetCharacterDataHandler(XML_Parser parser, +@@ -2240,6 +2268,8 @@ XML_SetCdataSectionHandler(XML_Parser parser, + parser->m_endCdataSectionHandler = end; + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + void XMLCALL + XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start) { +@@ -2261,6 +2291,8 @@ XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler) { + parser->m_defaultHandler = handler; + parser->m_defaultExpandInternalEntities = XML_FALSE; + } ++#endif ++/* END MOZILLA CHANGE */ + + void XMLCALL + XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler) { +@@ -2279,6 +2311,8 @@ XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, + parser->m_endDoctypeDeclHandler = end; + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + void XMLCALL + XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start) { +@@ -2291,6 +2325,8 @@ XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end) { + if (parser != NULL) + parser->m_endDoctypeDeclHandler = end; + } ++#endif ++/* END MOZILLA CHANGE */ + + void XMLCALL + XML_SetUnparsedEntityDeclHandler(XML_Parser parser, +@@ -2315,6 +2351,8 @@ XML_SetNamespaceDeclHandler(XML_Parser parser, + parser->m_endNamespaceDeclHandler = end; + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + void XMLCALL + XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start) { +@@ -2335,6 +2373,8 @@ XML_SetNotStandaloneHandler(XML_Parser parser, + if (parser != NULL) + parser->m_notStandaloneHandler = handler; + } ++#endif ++/* END MOZILLA CHANGE */ + + void XMLCALL + XML_SetExternalEntityRefHandler(XML_Parser parser, +@@ -2353,6 +2393,8 @@ XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) { + parser->m_externalEntityRefHandlerArg = parser; + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + void XMLCALL + XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler) { +@@ -2386,6 +2428,8 @@ XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler) { + if (parser != NULL) + parser->m_entityDeclHandler = handler; + } ++#endif ++/* END MOZILLA CHANGE */ + + void XMLCALL + XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler handler) { +@@ -2856,6 +2900,8 @@ XML_GetCurrentByteIndex(XML_Parser parser) { + /* END MOZILLA CHANGE */ + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + int XMLCALL + XML_GetCurrentByteCount(XML_Parser parser) { + if (parser == NULL) +@@ -2884,6 +2930,8 @@ XML_GetInputContext(XML_Parser parser, int *offset, int *size) { + #endif /* XML_CONTEXT_BYTES > 0 */ + return (const char *)0; + } ++#endif ++/* END MOZILLA CHANGE */ + + XML_Size XMLCALL + XML_GetCurrentLineNumber(XML_Parser parser) { +@@ -2909,6 +2957,8 @@ XML_GetCurrentColumnNumber(XML_Parser parser) { + return parser->m_position.columnNumber; + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + void XMLCALL + XML_FreeContentModel(XML_Parser parser, XML_Content *model) { + if (parser == NULL) +@@ -3159,6 +3209,8 @@ XML_GetFeatureList(void) { + + return features; + } ++#endif ++/* END MOZILLA CHANGE */ + + #if XML_GE == 1 + XML_Bool XMLCALL +@@ -7770,6 +7822,8 @@ dtdCreate(XML_Parser parser) { + return p; + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + static void + dtdReset(DTD *p, XML_Parser parser) { + HASH_TABLE_ITER iter; +@@ -7810,6 +7864,8 @@ dtdReset(DTD *p, XML_Parser parser) { + p->hasParamEntityRefs = XML_FALSE; + p->standalone = XML_FALSE; + } ++#endif ++/* 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) { + return table->v[i]; + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + static void FASTCALL + hashTableClear(HASH_TABLE *table) { + size_t i; +@@ -8173,6 +8231,8 @@ hashTableClear(HASH_TABLE *table) { + } + table->used = 0; + } ++#endif ++/* END MOZILLA CHANGE */ + + static void FASTCALL + hashTableDestroy(HASH_TABLE *table) { +@@ -8853,6 +8913,8 @@ accountingDiffTolerated(XML_Parser originParser, int tok, const char *before, + return tolerated; + } + ++/* BEGIN MOZILLA CHANGE (unused API) */ ++#if 0 + unsigned long long + testingAccountingGetCountBytesDirect(XML_Parser parser) { + if (! parser) +@@ -8866,6 +8928,8 @@ testingAccountingGetCountBytesIndirect(XML_Parser parser) { + return 0; + return parser->m_accounting.countBytesIndirect; + } ++#endif ++/* END MOZILLA CHANGE */ + + /* BEGIN MOZILLA CHANGE (don't report debug information) */ + #if 0 diff -Nru thunderbird-140.8.0esr/parser/expat/12_version_limit.patch thunderbird-140.9.0esr/parser/expat/12_version_limit.patch --- thunderbird-140.8.0esr/parser/expat/12_version_limit.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/12_version_limit.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -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, A - - static const char KW_no[] = {ASCII_n, ASCII_o, '\0'}; - -+/* BEGIN MOZILLA CHANGE (Bug 62157 - Document content is rendered even though version value is not "1.0") */ -+static const char KW_XML_1_0[] = {ASCII_1, ASCII_PERIOD, ASCII_0, '\0'}; -+/* END MOZILLA CHANGE */ -+ - static int - doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, const char *, - const char *), -@@ -1175,6 +1179,13 @@ doParseXmlDecl(const ENCODING *(*encodin - *versionPtr = val; - if (versionEndPtr) - *versionEndPtr = ptr; -+/* BEGIN MOZILLA CHANGE (Bug 62157 - Document content is rendered even though version value is not "1.0") */ -+ /* Anything else but a version="1.0" is invalid for us, until we support later versions. */ -+ if (!XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_XML_1_0)) { -+ *badPtr = val; -+ return 0; -+ } -+/* END MOZILLA CHANGE */ - if (! parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { - *badPtr = ptr; - return 0; diff -Nru thunderbird-140.8.0esr/parser/expat/13_no_debug_report.patch thunderbird-140.9.0esr/parser/expat/13_no_debug_report.patch --- thunderbird-140.8.0esr/parser/expat/13_no_debug_report.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/13_no_debug_report.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,218 +0,0 @@ -diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c ---- a/expat/lib/xmlparse.c -+++ b/expat/lib/xmlparse.c -@@ -444,16 +444,24 @@ typedef unsigned long long XmlBigCount; - typedef struct accounting { - XmlBigCount countBytesDirect; - XmlBigCount countBytesIndirect; -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - unsigned long debugLevel; -+#endif -+/* END MOZILLA CHANGE */ - float maximumAmplificationFactor; // >=1.0 - unsigned long long activationThresholdBytes; - } ACCOUNTING; - - typedef struct entity_stats { -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - unsigned int countEverOpened; - unsigned int currentDepth; - unsigned int maximumDepthSeen; - unsigned long debugLevel; -+#endif -+/* END MOZILLA CHANGE */ - } ENTITY_STATS; - #endif /* XML_GE == 1 */ - -@@ -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); -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - static void accountingReportDiff(XML_Parser rootParser, - unsigned int levelsAwayFromRootParser, - const char *before, const char *after, - ptrdiff_t bytesMore, int source_line, - enum XML_Account account); -+#endif -+/* END MOZILLA CHANGE */ - static XML_Bool accountingDiffTolerated(XML_Parser originParser, int tok, - const char *before, const char *after, - int source_line, - enum XML_Account account); - -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - static void entityTrackingReportStats(XML_Parser parser, ENTITY *entity, - const char *action, int sourceLine); -+#endif -+/* END MOZILLA CHANGE */ - static void entityTrackingOnOpen(XML_Parser parser, ENTITY *entity, - int sourceLine); - static void entityTrackingOnClose(XML_Parser parser, ENTITY *entity, -@@ -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 - static unsigned long getDebugLevel(const char *variableName, - unsigned long defaultDebugLevel); -+#endif -+/* END MOZILLA CHANGE */ - - #define poolStart(pool) ((pool)->start) - #define poolLength(pool) ((pool)->ptr - (pool)->start) -@@ -1292,15 +1312,23 @@ parserInit(XML_Parser parser, const XML_ - - #if XML_GE == 1 - memset(&parser->m_accounting, 0, sizeof(ACCOUNTING)); -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - parser->m_accounting.debugLevel = getDebugLevel("EXPAT_ACCOUNTING_DEBUG", 0u); -+#endif -+/* END MOZILLA CHANGE */ - parser->m_accounting.maximumAmplificationFactor - = EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_MAXIMUM_AMPLIFICATION_DEFAULT; - parser->m_accounting.activationThresholdBytes - = EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT; - - memset(&parser->m_entity_stats, 0, sizeof(ENTITY_STATS)); -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - parser->m_entity_stats.debugLevel = getDebugLevel("EXPAT_ENTITY_DEBUG", 0u); - #endif -+/* END MOZILLA CHANGE */ -+#endif - } - - /* moves list of bindings to m_freeBindingList */ -@@ -8069,6 +8097,8 @@ accountingGetCurrentAmplification(XML_Pa - - static void - accountingReportStats(XML_Parser originParser, const char *epilog) { -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - const XML_Parser rootParser = getRootParserOf(originParser, NULL); - assert(! rootParser->m_parentParser); - -@@ -8084,6 +8114,8 @@ accountingReportStats(XML_Parser originP - (void *)rootParser, rootParser->m_accounting.countBytesDirect, - rootParser->m_accounting.countBytesIndirect, - (double)amplificationFactor, epilog); -+#endif -+/* END MOZILLA CHANGE */ - } - - static void -@@ -8091,6 +8123,8 @@ accountingOnAbort(XML_Parser originParse - accountingReportStats(originParser, " ABORTING\n"); - } - -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - static void - accountingReportDiff(XML_Parser rootParser, - unsigned int levelsAwayFromRootParser, const char *before, -@@ -8127,6 +8161,8 @@ accountingReportDiff(XML_Parser rootPars - } - fprintf(stderr, "\"\n"); - } -+#endif -+/* END MOZILLA CHANGE */ - - static XML_Bool - accountingDiffTolerated(XML_Parser originParser, int tok, const char *before, -@@ -8174,11 +8210,15 @@ accountingDiffTolerated(XML_Parser origi - || (amplificationFactor - <= rootParser->m_accounting.maximumAmplificationFactor); - -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - if (rootParser->m_accounting.debugLevel >= 2u) { - accountingReportStats(rootParser, ""); - accountingReportDiff(rootParser, levelsAwayFromRootParser, before, after, - bytesMore, source_line, account); - } -+#endif -+/* END MOZILLA CHANGE */ - - return tolerated; - } -@@ -8197,6 +8237,8 @@ testingAccountingGetCountBytesIndirect(X - return parser->m_accounting.countBytesIndirect; - } - -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - static void - entityTrackingReportStats(XML_Parser rootParser, ENTITY *entity, - const char *action, int sourceLine) { -@@ -8220,9 +8262,13 @@ entityTrackingReportStats(XML_Parser roo - entity->is_param ? "%" : "&", entityName, action, entity->textLen, - sourceLine); - } -+#endif -+/* END MOZILLA CHANGE */ - - static void - entityTrackingOnOpen(XML_Parser originParser, ENTITY *entity, int sourceLine) { -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - const XML_Parser rootParser = getRootParserOf(originParser, NULL); - assert(! rootParser->m_parentParser); - -@@ -8234,15 +8280,21 @@ entityTrackingOnOpen(XML_Parser originPa - } - - entityTrackingReportStats(rootParser, entity, "OPEN ", sourceLine); -+#endif -+/* END MOZILLA CHANGE */ - } - - static void - entityTrackingOnClose(XML_Parser originParser, ENTITY *entity, int sourceLine) { -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - const XML_Parser rootParser = getRootParserOf(originParser, NULL); - assert(! rootParser->m_parentParser); - - entityTrackingReportStats(rootParser, entity, "CLOSE", sourceLine); - rootParser->m_entity_stats.currentDepth--; -+#endif -+/* END MOZILLA CHANGE */ - } - - 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) { -@@ -8781,9 +8835,13 @@ unsignedCharToPrintable(unsigned char c) - } - assert(0); /* never gets here */ - } -+#endif -+/* END MOZILLA CHANGE */ - - #endif /* XML_GE == 1 */ - -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - static unsigned long - getDebugLevel(const char *variableName, unsigned long defaultDebugLevel) { - const char *const valueOrNull = getenv(variableName); -@@ -8802,3 +8860,5 @@ getDebugLevel(const char *variableName, - - return debugLevel; - } -+#endif -+/* END MOZILLA CHANGE */ diff -Nru thunderbird-140.8.0esr/parser/expat/14_unused.patch thunderbird-140.9.0esr/parser/expat/14_unused.patch --- thunderbird-140.8.0esr/parser/expat/14_unused.patch 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/14_unused.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,262 +0,0 @@ -diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c ---- a/expat/lib/xmlparse.c -+++ b/expat/lib/xmlparse.c -@@ -564,8 +564,12 @@ static XML_Bool setContext(XML_Parser pa - static void FASTCALL normalizePublicId(XML_Char *s); - - 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, const XML_Memory_Handling_Suite *ms); -+#endif -+/* END MOZILLA CHANGE */ - 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, -@@ -576,7 +580,11 @@ static NAMED *lookup(XML_Parser parser, - size_t createSize); - 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); -+#endif -+/* END MOZILLA CHANGE */ - static void FASTCALL hashTableDestroy(HASH_TABLE *table); - static void FASTCALL hashTableIterInit(HASH_TABLE_ITER *iter, - const HASH_TABLE *table); -@@ -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); -@@ -810,6 +820,8 @@ XML_ParserCreateNS(const XML_Char *encod - XML_Char tmp[2] = {nsSep, 0}; - return XML_ParserCreate_MM(encodingName, NULL, tmp); - } -+#endif -+/* END MOZILLA CHANGE */ - - // "xml=http://www.w3.org/XML/1998/namespace" - static const XML_Char implicitContext[] -@@ -1331,6 +1343,8 @@ parserInit(XML_Parser parser, const XML_ - #endif - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - /* moves list of bindings to m_freeBindingList */ - static void FASTCALL - moveToFreeBindingList(XML_Parser parser, BINDING *bindings) { -@@ -1409,6 +1423,8 @@ XML_SetEncoding(XML_Parser parser, const - } - return XML_STATUS_OK; - } -+#endif -+/* END MOZILLA CHANGE */ - - XML_Parser XMLCALL - XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, -@@ -1665,6 +1681,8 @@ XML_UseParserAsHandlerArg(XML_Parser par - parser->m_handlerArg = parser; - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - enum XML_Error XMLCALL - XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) { - if (parser == NULL) -@@ -1681,6 +1699,8 @@ XML_UseForeignDTD(XML_Parser parser, XML - return XML_ERROR_FEATURE_REQUIRES_XML_DTD; - #endif - } -+#endif -+/* END MOZILLA CHANGE */ - - void XMLCALL - XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { -@@ -1756,6 +1776,8 @@ XML_SetElementHandler(XML_Parser parser, - parser->m_endElementHandler = end; - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - void XMLCALL - XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler start) { - if (parser != NULL) -@@ -1767,6 +1789,8 @@ XML_SetEndElementHandler(XML_Parser pars - if (parser != NULL) - parser->m_endElementHandler = end; - } -+#endif -+/* END MOZILLA CHANGE */ - - void XMLCALL - XML_SetCharacterDataHandler(XML_Parser parser, -@@ -1798,6 +1822,8 @@ XML_SetCdataSectionHandler(XML_Parser pa - parser->m_endCdataSectionHandler = end; - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - void XMLCALL - XML_SetStartCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start) { -@@ -1819,6 +1845,8 @@ XML_SetDefaultHandler(XML_Parser parser, - parser->m_defaultHandler = handler; - parser->m_defaultExpandInternalEntities = XML_FALSE; - } -+#endif -+/* END MOZILLA CHANGE */ - - void XMLCALL - XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler) { -@@ -1837,6 +1865,8 @@ XML_SetDoctypeDeclHandler(XML_Parser par - parser->m_endDoctypeDeclHandler = end; - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - void XMLCALL - XML_SetStartDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start) { -@@ -1849,6 +1879,8 @@ XML_SetEndDoctypeDeclHandler(XML_Parser - if (parser != NULL) - parser->m_endDoctypeDeclHandler = end; - } -+#endif -+/* END MOZILLA CHANGE */ - - void XMLCALL - XML_SetUnparsedEntityDeclHandler(XML_Parser parser, -@@ -1873,6 +1905,8 @@ XML_SetNamespaceDeclHandler(XML_Parser p - parser->m_endNamespaceDeclHandler = end; - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - void XMLCALL - XML_SetStartNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start) { -@@ -1893,6 +1927,8 @@ XML_SetNotStandaloneHandler(XML_Parser p - if (parser != NULL) - parser->m_notStandaloneHandler = handler; - } -+#endif -+/* END MOZILLA CHANGE */ - - void XMLCALL - XML_SetExternalEntityRefHandler(XML_Parser parser, -@@ -1911,6 +1947,8 @@ XML_SetExternalEntityRefHandlerArg(XML_P - parser->m_externalEntityRefHandlerArg = parser; - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - void XMLCALL - XML_SetSkippedEntityHandler(XML_Parser parser, - XML_SkippedEntityHandler handler) { -@@ -1944,6 +1982,8 @@ XML_SetEntityDeclHandler(XML_Parser pars - if (parser != NULL) - parser->m_entityDeclHandler = handler; - } -+#endif -+/* END MOZILLA CHANGE */ - - void XMLCALL - XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler handler) { -@@ -2401,6 +2441,8 @@ XML_GetCurrentByteIndex(XML_Parser parse - /* END MOZILLA CHANGE */ - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - int XMLCALL - XML_GetCurrentByteCount(XML_Parser parser) { - if (parser == NULL) -@@ -2429,6 +2471,8 @@ XML_GetInputContext(XML_Parser parser, i - #endif /* XML_CONTEXT_BYTES > 0 */ - return (const char *)0; - } -+#endif -+/* END MOZILLA CHANGE */ - - XML_Size XMLCALL - XML_GetCurrentLineNumber(XML_Parser parser) { -@@ -2454,6 +2498,8 @@ XML_GetCurrentColumnNumber(XML_Parser pa - return parser->m_position.columnNumber; - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - void XMLCALL - XML_FreeContentModel(XML_Parser parser, XML_Content *model) { - if (parser != NULL) -@@ -2682,6 +2728,8 @@ XML_GetFeatureList(void) { - - return features; - } -+#endif -+/* END MOZILLA CHANGE */ - - #if XML_GE == 1 - XML_Bool XMLCALL -@@ -7146,6 +7194,8 @@ dtdCreate(const XML_Memory_Handling_Suit - return p; - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - static void - dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) { - HASH_TABLE_ITER iter; -@@ -7186,6 +7236,8 @@ dtdReset(DTD *p, const XML_Memory_Handli - p->hasParamEntityRefs = XML_FALSE; - p->standalone = XML_FALSE; - } -+#endif -+/* END MOZILLA CHANGE */ - - static void - 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]; - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - static void FASTCALL - hashTableClear(HASH_TABLE *table) { - size_t i; -@@ -7549,6 +7603,8 @@ hashTableClear(HASH_TABLE *table) { - } - table->used = 0; - } -+#endif -+/* END MOZILLA CHANGE */ - - static void FASTCALL - hashTableDestroy(HASH_TABLE *table) { -@@ -8223,6 +8279,8 @@ accountingDiffTolerated(XML_Parser origi - return tolerated; - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - unsigned long long - testingAccountingGetCountBytesDirect(XML_Parser parser) { - if (! parser) -@@ -8236,6 +8294,8 @@ testingAccountingGetCountBytesIndirect(X - return 0; - return parser->m_accounting.countBytesIndirect; - } -+#endif -+/* END MOZILLA CHANGE */ - - /* BEGIN MOZILLA CHANGE (don't report debug information) */ - #if 0 diff -Nru thunderbird-140.8.0esr/parser/expat/COPYING thunderbird-140.9.0esr/parser/expat/COPYING --- thunderbird-140.8.0esr/parser/expat/COPYING 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/COPYING 2026-03-20 19:18:39.000000000 +0000 @@ -1,5 +1,5 @@ Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper -Copyright (c) 2001-2022 Expat maintainers +Copyright (c) 2001-2025 Expat maintainers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff -Nru thunderbird-140.8.0esr/parser/expat/README_MOZILLA thunderbird-140.9.0esr/parser/expat/README_MOZILLA --- thunderbird-140.8.0esr/parser/expat/README_MOZILLA 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/README_MOZILLA 2026-03-20 19:18:39.000000000 +0000 @@ -4,6 +4,6 @@ To update run $ ./mach vendor parser/expat/moz.yaml --patch-mode=none -$ hg commit -m "Bug X - Update to Expat x.x.x." +$ git commit -a -m "Bug X - Update to Expat x.x.x." $ ./mach vendor parser/expat/moz.yaml --patch-mode=only -$ hg commit -m "Bug X - Apply local patches to Expat x.x.x." +$ git commit -a -m "Bug X - Apply local patches to Expat x.x.x." diff -Nru thunderbird-140.8.0esr/parser/expat/expat/lib/expat.h thunderbird-140.9.0esr/parser/expat/expat/lib/expat.h --- thunderbird-140.8.0esr/parser/expat/expat/lib/expat.h 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/expat/lib/expat.h 2026-03-20 19:18:38.000000000 +0000 @@ -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-2024 Sebastian Pipping + Copyright (c) 2016-2026 Sebastian Pipping Copyright (c) 2016 Cristian Rodríguez Copyright (c) 2016 Thomas Beutlich Copyright (c) 2017 Rhodri James @@ -19,6 +19,7 @@ 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 @@ -42,21 +43,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 @@ -73,11 +74,11 @@ */ 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 { @@ -276,7 +277,7 @@ /* 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 documnents need to be parsed. + such as when a large number of small documents 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. @@ -680,7 +681,7 @@ 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, @@ -752,7 +753,7 @@ 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: @@ -773,7 +774,7 @@ */ 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 @@ -970,9 +971,9 @@ 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) @@ -1032,7 +1033,10 @@ 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 + XML_FEATURE_GE, + /* Added in Expat 2.7.2. */ + XML_FEATURE_ALLOC_TRACKER_MAXIMUM_AMPLIFICATION_DEFAULT, + XML_FEATURE_ALLOC_TRACKER_ACTIVATION_THRESHOLD_DEFAULT, /* Additional features must be added to the end of this enum. */ }; @@ -1045,7 +1049,7 @@ 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) @@ -1057,7 +1061,17 @@ XMLPARSEAPI(XML_Bool) XML_SetBillionLaughsAttackProtectionActivationThreshold( XML_Parser parser, unsigned long long activationThresholdBytes); -#endif + +/* 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 /* Added in Expat 2.6.0. */ XMLPARSEAPI(XML_Bool) @@ -1066,12 +1080,12 @@ /* Expat follows the semantic versioning convention. See https://semver.org */ -#define XML_MAJOR_VERSION 2 -#define XML_MINOR_VERSION 6 -#define XML_MICRO_VERSION 4 +# define XML_MAJOR_VERSION 2 +# define XML_MINOR_VERSION 7 +# define XML_MICRO_VERSION 4 -#ifdef __cplusplus +# ifdef __cplusplus } -#endif +# endif #endif /* not Expat_INCLUDED */ diff -Nru thunderbird-140.8.0esr/parser/expat/expat/lib/expat_external.h thunderbird-140.9.0esr/parser/expat/expat/lib/expat_external.h --- thunderbird-140.8.0esr/parser/expat/expat/lib/expat_external.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/expat/lib/expat_external.h 2026-03-20 19:18:38.000000000 +0000 @@ -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-2019 Sebastian Pipping + Copyright (c) 2016-2025 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_EXTENSIONS) && ! defined(__BEOS__) && ! defined(__CYGWIN__) -# define XMLIMPORT __declspec(dllimport) +# if defined(_MSC_VER) && ! defined(__BEOS__) && ! defined(__CYGWIN__) +# define XMLIMPORT __declspec(dllimport) +# endif + # endif +# endif /* not defined XML_STATIC */ +# ifndef XML_ENABLE_VISIBILITY +# define XML_ENABLE_VISIBILITY 0 # endif -#endif /* not defined XML_STATIC */ -#ifndef XML_ENABLE_VISIBILITY -# define XML_ENABLE_VISIBILITY 0 -#endif - -#if ! defined(XMLIMPORT) && XML_ENABLE_VISIBILITY -# define XMLIMPORT __attribute__((visibility("default"))) -#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 - -#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" + +# 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 -#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 -Nru thunderbird-140.8.0esr/parser/expat/expat/lib/internal.h thunderbird-140.9.0esr/parser/expat/expat/lib/internal.h --- thunderbird-140.8.0esr/parser/expat/expat/lib/internal.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/expat/lib/internal.h 2026-03-20 19:18:39.000000000 +0000 @@ -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-2024 Sebastian Pipping + Copyright (c) 2016-2025 Sebastian Pipping Copyright (c) 2018 Yury Gribov Copyright (c) 2019 David Loffredo Copyright (c) 2023-2024 Sony Corporation / Snild Dolkow @@ -108,6 +108,7 @@ #endif #include // ULONG_MAX +#include // size_t #if defined(_WIN32) \ && (! defined(__USE_MINGW_ANSI_STDIO) \ @@ -127,6 +128,9 @@ # 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" @@ -145,6 +149,16 @@ 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 @@ -168,6 +182,9 @@ #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 -Nru thunderbird-140.8.0esr/parser/expat/expat/lib/moz_xmlparse.c thunderbird-140.9.0esr/parser/expat/expat/lib/moz_xmlparse.c --- thunderbird-140.8.0esr/parser/expat/expat/lib/moz_xmlparse.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/expat/lib/moz_xmlparse.c 2026-03-20 19:18:39.000000000 +0000 @@ -149,3 +149,14 @@ 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 -Nru thunderbird-140.8.0esr/parser/expat/expat/lib/xmlparse.c thunderbird-140.9.0esr/parser/expat/expat/lib/xmlparse.c --- thunderbird-140.8.0esr/parser/expat/expat/lib/xmlparse.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/expat/lib/xmlparse.c 2026-03-20 19:18:39.000000000 +0000 @@ -1,4 +1,4 @@ -/* c5625880f4bf417c1463deee4eb92d86ff413f802048621c57e25fe483eb59e4 (2.6.4+) +/* fab937ab8b186d7d296013669c332e6dfce2f99567882cff1f8eb24223c524a7 (2.7.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-2024 Sebastian Pipping + Copyright (c) 2016-2026 Sebastian Pipping Copyright (c) 2016 Gaurav Copyright (c) 2016 Thomas Beutlich Copyright (c) 2016 Gustavo Grieco @@ -39,8 +39,12 @@ Copyright (c) 2022 Sean McBride Copyright (c) 2023 Owain Davies Copyright (c) 2023-2024 Sony Corporation / Snild Dolkow - Copyright (c) 2024 Berkay Eren Ürün + Copyright (c) 2024-2025 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 @@ -97,10 +101,10 @@ #include #include /* memset(), memcpy() */ #include -#include /* UINT_MAX */ +#include /* INT_MAX, UINT_MAX */ #include /* fprintf */ #include /* getenv, rand_s */ -#include /* uintptr_t */ +#include /* SIZE_MAX, uintptr_t */ #include /* isnan */ #ifdef _WIN32 @@ -133,11 +137,6 @@ # 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 @@ -154,8 +153,6 @@ * 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. \ \ @@ -240,7 +237,7 @@ unsigned char power; size_t size; size_t used; - const XML_Memory_Handling_Suite *mem; + XML_Parser parser; } HASH_TABLE; static size_t keylen(KEY s); @@ -318,8 +315,11 @@ const char *rawName; /* tagName in the original encoding */ int rawNameLength; TAG_NAME name; /* tagName in the API encoding */ - char *buf; /* buffer for name components */ - char *bufEnd; /* end of the buffer */ + 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 */ BINDING *bindings; } TAG; @@ -333,6 +333,10 @@ 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; @@ -352,7 +356,7 @@ typedef struct block { struct block *next; int size; - XML_Char s[1]; + XML_Char s[]; } BLOCK; typedef struct { @@ -361,7 +365,7 @@ const XML_Char *end; XML_Char *ptr; XML_Char *start; - const XML_Memory_Handling_Suite *mem; + XML_Parser parser; } STRING_POOL; /* The XML_Char before the name is used to determine whether @@ -423,6 +427,12 @@ int *scaffIndex; } DTD; +enum EntityType { + ENTITY_INTERNAL, + ENTITY_ATTRIBUTE, + ENTITY_VALUE, +}; + typedef struct open_internal_entity { const char *internalEventPtr; const char *internalEventEndPtr; @@ -430,6 +440,7 @@ ENTITY *entity; int startTagLevel; XML_Bool betweenDecl; /* WFC: PE Between Declarations */ + enum EntityType type; } OPEN_INTERNAL_ENTITY; enum XML_Account { @@ -453,6 +464,18 @@ 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 @@ -497,8 +520,8 @@ const char *next, const char **nextPtr, XML_Bool haveMore, XML_Bool allowClosingDoctype, enum XML_Account account); -static enum XML_Error processInternalEntity(XML_Parser parser, ENTITY *entity, - XML_Bool betweenDecl); +static enum XML_Error processEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl, enum EntityType type); /* 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, @@ -536,18 +559,22 @@ 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); +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 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); + 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); #else static enum XML_Error storeSelfEntityValue(XML_Parser parser, ENTITY *entity); #endif @@ -563,23 +590,21 @@ static void FASTCALL normalizePublicId(XML_Char *s); -static DTD *dtdCreate(const XML_Memory_Handling_Suite *ms); +static DTD *dtdCreate(XML_Parser parser); /* BEGIN MOZILLA CHANGE (unused API) */ #if 0 /* do not call if m_parentParser != NULL */ -static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms); +static void dtdReset(DTD *p, XML_Parser parser); #endif /* END MOZILLA CHANGE */ -static void dtdDestroy(DTD *p, XML_Bool isDocEntity, - const XML_Memory_Handling_Suite *ms); +static void dtdDestroy(DTD *p, XML_Bool isDocEntity, XML_Parser parser); static int dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, - const XML_Memory_Handling_Suite *ms); + XML_Parser parser); 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, - const XML_Memory_Handling_Suite *ms); +static void FASTCALL hashTableInit(HASH_TABLE *table, XML_Parser parser); /* BEGIN MOZILLA CHANGE (unused API) */ #if 0 static void FASTCALL hashTableClear(HASH_TABLE *table); @@ -590,8 +615,7 @@ const HASH_TABLE *table); static NAMED *FASTCALL hashTableIterNext(HASH_TABLE_ITER *iter); -static void FASTCALL poolInit(STRING_POOL *pool, - const XML_Memory_Handling_Suite *ms); +static void FASTCALL poolInit(STRING_POOL *pool, XML_Parser parser); static void FASTCALL poolClear(STRING_POOL *pool); static void FASTCALL poolDestroy(STRING_POOL *pool); static XML_Char *poolAppend(STRING_POOL *pool, const ENCODING *enc, @@ -611,15 +635,15 @@ static ELEMENT_TYPE *getElementType(XML_Parser parser, const ENCODING *enc, const char *ptr, const char *end); -static XML_Char *copyString(const XML_Char *s, - const XML_Memory_Handling_Suite *memsuite); +static XML_Char *copyString(const XML_Char *s, XML_Parser parser); 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); + const XML_Char *nameSep, DTD *dtd, + XML_Parser parentParser); static void parserInit(XML_Parser parser, const XML_Char *encodingName); @@ -651,10 +675,10 @@ 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 @@ -752,6 +776,10 @@ 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; @@ -797,16 +825,261 @@ 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 */ }; -#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))) +#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 /* BEGIN MOZILLA CHANGE (unused API) */ #if 0 @@ -853,11 +1126,14 @@ void *const currentTarget = (void *)((char *)target + bytesWrittenTotal); const size_t bytesToWrite = count - bytesWrittenTotal; + assert(bytesToWrite <= INT_MAX); + const int bytesWrittenMore = # if defined(HAVE_GETRANDOM) - getrandom(currentTarget, bytesToWrite, getrandomFlags); + (int)getrandom(currentTarget, bytesToWrite, getrandomFlags); # else - syscall(SYS_getrandom, currentTarget, bytesToWrite, getrandomFlags); + (int)syscall(SYS_getrandom, currentTarget, bytesToWrite, + getrandomFlags); # endif if (bytesWrittenMore > 0) { @@ -1033,8 +1309,11 @@ # 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 = gather_time_entropy() ^ getpid(); + entropy ^= getpid(); +# endif /* Factors are 2^31-1 and 2^61-1 (Mersenne primes M31 and M61) */ if (sizeof(unsigned long) == 4) { @@ -1052,9 +1331,10 @@ static unsigned long get_hash_secret_salt(XML_Parser parser) { - if (parser->m_parentParser != NULL) - return get_hash_secret_salt(parser->m_parentParser); - return parser->m_hash_secret_salt; + const XML_Parser rootParser = getRootParserOf(parser, NULL); + assert(! rootParser->m_parentParser); + + return rootParser->m_hash_secret_salt; } static enum XML_Error @@ -1088,7 +1368,29 @@ #if defined(XML_TESTING) g_bytesScanned += (unsigned)have_now; #endif - const enum XML_Error ret = parser->m_processor(parser, start, end, endPtr); + // 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; + } + if (ret == XML_ERROR_NONE) { // if we consumed nothing, remember what we had on this parse attempt. if (*endPtr == start) { @@ -1118,19 +1420,43 @@ XML_ParserCreate_MM(const XML_Char *encodingName, const XML_Memory_Handling_Suite *memsuite, const XML_Char *nameSep) { - return parserCreate(encodingName, memsuite, nameSep, NULL); + return parserCreate(encodingName, memsuite, nameSep, NULL, NULL); } static XML_Parser parserCreate(const XML_Char *encodingName, const XML_Memory_Handling_Suite *memsuite, const XML_Char *nameSep, - DTD *dtd) { - XML_Parser parser; + 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 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; @@ -1138,39 +1464,94 @@ } } else { XML_Memory_Handling_Suite *mtemp; - parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); +#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)); 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 - = (ATTRIBUTE *)MALLOC(parser, parser->m_attsSize * sizeof(ATTRIBUTE)); + parser->m_atts = MALLOC(parser, parser->m_attsSize * sizeof(ATTRIBUTE)); if (parser->m_atts == NULL) { FREE(parser, parser); return NULL; } #ifdef XML_ATTR_INFO - parser->m_attInfo = (XML_AttrInfo *)MALLOC( - parser, parser->m_attsSize * sizeof(XML_AttrInfo)); + parser->m_attInfo = 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 - = (XML_Char *)MALLOC(parser, INIT_DATA_BUF_SIZE * sizeof(XML_Char)); + parser->m_dataBuf = MALLOC(parser, INIT_DATA_BUF_SIZE * sizeof(XML_Char)); if (parser->m_dataBuf == NULL) { FREE(parser, parser->m_atts); #ifdef XML_ATTR_INFO @@ -1184,7 +1565,7 @@ if (dtd) parser->m_dtd = dtd; else { - parser->m_dtd = dtdCreate(&parser->m_mem); + parser->m_dtd = dtdCreate(parser); if (parser->m_dtd == NULL) { FREE(parser, parser->m_dataBuf); FREE(parser, parser->m_atts); @@ -1199,6 +1580,8 @@ 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; @@ -1216,8 +1599,8 @@ parser->m_protocolEncodingName = NULL; - poolInit(&parser->m_tempPool, &(parser->m_mem)); - poolInit(&parser->m_temp2Pool, &(parser->m_mem)); + poolInit(&parser->m_tempPool, parser); + poolInit(&parser->m_temp2Pool, parser); parserInit(parser, encodingName); if (encodingName && ! parser->m_protocolEncodingName) { @@ -1253,7 +1636,7 @@ parser->m_processor = prologInitProcessor; XmlPrologStateInit(&parser->m_prologState); if (encodingName != NULL) { - parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); + parser->m_protocolEncodingName = copyString(encodingName, parser); } parser->m_curBase = NULL; XmlInitEncoding(&parser->m_initEncoding, &parser->m_encoding, 0); @@ -1305,6 +1688,8 @@ 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; @@ -1313,8 +1698,9 @@ 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; @@ -1384,6 +1770,24 @@ 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) @@ -1393,10 +1797,27 @@ FREE(parser, (void *)parser->m_protocolEncodingName); parser->m_protocolEncodingName = NULL; parserInit(parser, encodingName); - dtdReset(parser->m_dtd, &parser->m_mem); + dtdReset(parser->m_dtd, parser); 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) @@ -1405,8 +1826,7 @@ XXX There's no way for the caller to determine which of the XXX possible error cases caused the XML_STATUS_ERROR return. */ - if (parser->m_parsingStatus.parsing == XML_PARSING - || parser->m_parsingStatus.parsing == XML_SUSPENDED) + if (parserBusy(parser)) return XML_STATUS_ERROR; /* Get rid of any previous encoding name */ @@ -1417,7 +1837,7 @@ parser->m_protocolEncodingName = NULL; else { /* Copy the new encoding name into allocated memory */ - parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); + parser->m_protocolEncodingName = copyString(encodingName, parser); if (! parser->m_protocolEncodingName) return XML_STATUS_ERROR; } @@ -1448,6 +1868,7 @@ XML_ExternalEntityRefHandler oldExternalEntityRefHandler; XML_SkippedEntityHandler oldSkippedEntityHandler; XML_UnknownEncodingHandler oldUnknownEncodingHandler; + void *oldUnknownEncodingHandlerData; XML_ElementDeclHandler oldElementDeclHandler; XML_AttlistDeclHandler oldAttlistDeclHandler; XML_EntityDeclHandler oldEntityDeclHandler; @@ -1493,6 +1914,7 @@ 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; @@ -1528,9 +1950,10 @@ */ if (parser->m_ns) { XML_Char tmp[2] = {parser->m_namespaceSeparator, 0}; - parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); + parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd, oldParser); } else { - parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); + parser + = parserCreate(encodingName, &parser->m_mem, NULL, newDtd, oldParser); } if (! parser) @@ -1552,6 +1975,7 @@ 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; @@ -1574,7 +1998,7 @@ parser->m_prologState.inEntityValue = oldInEntityValue; if (context) { #endif /* XML_DTD */ - if (! dtdCopy(oldParser, parser->m_dtd, oldDtd, &parser->m_mem) + if (! dtdCopy(oldParser, parser->m_dtd, oldDtd, parser) || ! setContext(parser, context)) { XML_ParserFree(parser); return NULL; @@ -1627,7 +2051,7 @@ } p = tagList; tagList = tagList->parent; - FREE(parser, p->buf); + FREE(parser, p->buf.raw); destroyBindings(p->bindings, parser); FREE(parser, p); } @@ -1645,7 +2069,34 @@ 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); @@ -1659,14 +2110,16 @@ #else if (parser->m_dtd) #endif /* XML_DTD */ - dtdDestroy(parser->m_dtd, (XML_Bool)! parser->m_parentParser, - &parser->m_mem); - FREE(parser, (void *)parser->m_atts); + dtdDestroy(parser->m_dtd, (XML_Bool)! parser->m_parentParser, parser); + FREE(parser, parser->m_atts); #ifdef XML_ATTR_INFO - FREE(parser, (void *)parser->m_attInfo); + FREE(parser, parser->m_attInfo); #endif FREE(parser, parser->m_groupConnector); - FREE(parser, parser->m_buffer); + // 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_dataBuf); FREE(parser, parser->m_nsAtts); FREE(parser, parser->m_unknownEncodingMem); @@ -1689,8 +2142,7 @@ return XML_ERROR_INVALID_ARGUMENT; #ifdef XML_DTD /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (parser->m_parsingStatus.parsing == XML_PARSING - || parser->m_parsingStatus.parsing == XML_SUSPENDED) + if (parserBusy(parser)) return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING; parser->m_useForeignDTD = useDTD; return XML_ERROR_NONE; @@ -1707,8 +2159,7 @@ if (parser == NULL) return; /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (parser->m_parsingStatus.parsing == XML_PARSING - || parser->m_parsingStatus.parsing == XML_SUSPENDED) + if (parserBusy(parser)) return; parser->m_ns_triplets = do_nst ? XML_TRUE : XML_FALSE; } @@ -1997,8 +2448,7 @@ if (parser == NULL) return 0; /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (parser->m_parsingStatus.parsing == XML_PARSING - || parser->m_parsingStatus.parsing == XML_SUSPENDED) + if (parserBusy(parser)) return 0; #ifdef XML_DTD parser->m_paramEntityParsing = peParsing; @@ -2012,13 +2462,14 @@ XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt) { if (parser == NULL) return 0; - if (parser->m_parentParser) - return XML_SetHashSalt(parser->m_parentParser, hash_salt); + + const XML_Parser rootParser = getRootParserOf(parser, NULL); + assert(! rootParser->m_parentParser); + /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (parser->m_parsingStatus.parsing == XML_PARSING - || parser->m_parsingStatus.parsing == XML_SUSPENDED) + if (parserBusy(rootParser)) return 0; - parser->m_hash_secret_salt = hash_salt; + rootParser->m_hash_secret_salt = hash_salt; return 1; } @@ -2201,6 +2652,10 @@ 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; } @@ -2286,8 +2741,10 @@ parser->m_errorCode = XML_ERROR_NO_MEMORY; return NULL; } - newBuf = (char *)MALLOC(parser, bufferSize); - if (newBuf == 0) { + // 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) { parser->m_errorCode = XML_ERROR_NO_MEMORY; return NULL; } @@ -2297,7 +2754,10 @@ memcpy(newBuf, &parser->m_bufferPtr[-keep], EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr) + keep); - FREE(parser, parser->m_buffer); + // 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); parser->m_buffer = newBuf; parser->m_bufferEnd = parser->m_buffer @@ -2313,7 +2773,10 @@ if (parser->m_bufferPtr) { memcpy(newBuf, parser->m_bufferPtr, EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr)); - FREE(parser, parser->m_buffer); + // 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); parser->m_bufferEnd = newBuf + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr); @@ -2330,6 +2793,11 @@ 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) @@ -2403,10 +2871,6 @@ 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; } @@ -2502,28 +2966,43 @@ #if 0 void XMLCALL XML_FreeContentModel(XML_Parser parser, XML_Content *model) { - if (parser != NULL) - FREE(parser, 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); } void *XMLCALL XML_MemMalloc(XML_Parser parser, size_t size) { if (parser == NULL) return NULL; - return MALLOC(parser, size); + + // NOTE: We are avoiding MALLOC(..) here to not include + // user allocations with allocation tracking and limiting. + return parser->m_mem.malloc_fcn(size); } void *XMLCALL XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) { if (parser == NULL) return NULL; - return REALLOC(parser, ptr, size); + + // NOTE: We are avoiding REALLOC(..) here to not include + // user allocations with allocation tracking and limiting. + return parser->m_mem.realloc_fcn(ptr, size); } void XMLCALL XML_MemFree(XML_Parser parser, void *ptr) { - if (parser != NULL) - FREE(parser, 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); } void XMLCALL @@ -2723,6 +3202,13 @@ 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}}; @@ -2753,22 +3239,30 @@ parser->m_accounting.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; +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; } -/* 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; +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; } -/* END MOZILLA CHANGE */ +#endif /* XML_GE == 1 */ XML_Bool XMLCALL XML_SetReparseDeferralEnabled(XML_Parser parser, XML_Bool enabled) { @@ -2788,10 +3282,10 @@ storeRawNames(XML_Parser parser) { TAG *tag = parser->m_tagStack; while (tag) { - int bufSize; - int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); + size_t bufSize; + size_t nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); size_t rawNameLen; - char *rawNameBuf = tag->buf + nameLen; + char *rawNameBuf = tag->buf.raw + 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 @@ -2806,23 +3300,23 @@ /* Detect and prevent integer overflow. */ if (rawNameLen > (size_t)INT_MAX - nameLen) return XML_FALSE; - bufSize = nameLen + (int)rawNameLen; - if (bufSize > tag->bufEnd - tag->buf) { - char *temp = (char *)REALLOC(parser, tag->buf, bufSize); + bufSize = nameLen + rawNameLen; + if (bufSize > (size_t)(tag->bufEnd - tag->buf.raw)) { + char *temp = REALLOC(parser, tag->buf.raw, bufSize); if (temp == NULL) return XML_FALSE; - /* if tag->name.str points to tag->buf (only when namespace + /* if tag->name.str points to tag->buf.str (only when namespace processing is off) then we have to update it */ - if (tag->name.str == (XML_Char *)tag->buf) + if (tag->name.str == tag->buf.str) 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 - (XML_Char *)tag->buf); - tag->buf = temp; + = (XML_Char *)temp + (tag->name.localPart - tag->buf.str); + tag->buf.raw = temp; tag->bufEnd = temp + bufSize; rawNameBuf = temp + nameLen; } @@ -2837,8 +3331,9 @@ contentProcessor(XML_Parser parser, const char *start, const char *end, const char **endPtr) { enum XML_Error result = doContent( - parser, 0, parser->m_encoding, start, end, endPtr, - (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_ACCOUNT_DIRECT); + parser, parser->m_parentParser ? 1 : 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) { @@ -2930,6 +3425,11 @@ 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; } @@ -3128,7 +3628,7 @@ reportDefault(parser, enc, s, next); break; } - result = processInternalEntity(parser, entity, XML_FALSE); + result = processEntity(parser, entity, XML_FALSE, ENTITY_INTERNAL); if (result != XML_ERROR_NONE) return result; } else if (parser->m_externalEntityRefHandler) { @@ -3157,15 +3657,15 @@ tag = parser->m_freeTagList; parser->m_freeTagList = parser->m_freeTagList->parent; } else { - tag = (TAG *)MALLOC(parser, sizeof(TAG)); + tag = MALLOC(parser, sizeof(TAG)); if (! tag) return XML_ERROR_NO_MEMORY; - tag->buf = (char *)MALLOC(parser, INIT_TAG_BUF_SIZE); - if (! tag->buf) { + tag->buf.raw = MALLOC(parser, INIT_TAG_BUF_SIZE); + if (! tag->buf.raw) { FREE(parser, tag); return XML_ERROR_NO_MEMORY; } - tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; + tag->bufEnd = tag->buf.raw + INIT_TAG_BUF_SIZE; } tag->bindings = NULL; tag->parent = parser->m_tagStack; @@ -3178,31 +3678,32 @@ { const char *rawNameEnd = tag->rawName + tag->rawNameLength; const char *fromPtr = tag->rawName; - toPtr = (XML_Char *)tag->buf; + toPtr = tag->buf.str; 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 - (XML_Char *)tag->buf); + convLen = (int)(toPtr - tag->buf.str); if ((fromPtr >= rawNameEnd) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) { tag->name.strLen = convLen; break; } - bufSize = (int)(tag->bufEnd - tag->buf) << 1; + 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; { - char *temp = (char *)REALLOC(parser, tag->buf, bufSize); + char *temp = REALLOC(parser, tag->buf.raw, bufSize); if (temp == NULL) return XML_ERROR_NO_MEMORY; - tag->buf = temp; + tag->buf.raw = temp; tag->bufEnd = temp + bufSize; toPtr = (XML_Char *)temp + convLen; } } } - tag->name.str = (XML_Char *)tag->buf; + tag->name.str = tag->buf.str; *toPtr = XML_T('\0'); result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings), account); @@ -3254,7 +3755,9 @@ } if ((parser->m_tagLevel == 0) && (parser->m_parsingStatus.parsing != XML_FINISHED)) { - if (parser->m_parsingStatus.parsing == XML_SUSPENDED) + if (parser->m_parsingStatus.parsing == XML_SUSPENDED + || (parser->m_parsingStatus.parsing == XML_PARSING + && parser->m_reenter)) parser->m_processor = epilogProcessor; else return epilogProcessor(parser, next, end, nextPtr); @@ -3342,7 +3845,9 @@ } if ((parser->m_tagLevel == 0) && (parser->m_parsingStatus.parsing != XML_FINISHED)) { - if (parser->m_parsingStatus.parsing == XML_SUSPENDED) + if (parser->m_parsingStatus.parsing == XML_SUSPENDED + || (parser->m_parsingStatus.parsing == XML_PARSING + && parser->m_reenter)) parser->m_processor = epilogProcessor; else return epilogProcessor(parser, next, end, nextPtr); @@ -3475,14 +3980,22 @@ 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 */ @@ -3584,14 +4097,14 @@ * 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_t)(-1) / sizeof(ATTRIBUTE)) { + if ((unsigned)parser->m_attsSize > SIZE_MAX / sizeof(ATTRIBUTE)) { parser->m_attsSize = oldAttsSize; return XML_ERROR_NO_MEMORY; } #endif - temp = (ATTRIBUTE *)REALLOC(parser, (void *)parser->m_atts, - parser->m_attsSize * sizeof(ATTRIBUTE)); + temp = REALLOC(parser, parser->m_atts, + parser->m_attsSize * sizeof(ATTRIBUTE)); if (temp == NULL) { parser->m_attsSize = oldAttsSize; return XML_ERROR_NO_MEMORY; @@ -3603,14 +4116,14 @@ * 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_t)(-1) / sizeof(XML_AttrInfo)) { + if ((unsigned)parser->m_attsSize > SIZE_MAX / sizeof(XML_AttrInfo)) { parser->m_attsSize = oldAttsSize; return XML_ERROR_NO_MEMORY; } # endif - temp2 = (XML_AttrInfo *)REALLOC(parser, (void *)parser->m_attInfo, - parser->m_attsSize * sizeof(XML_AttrInfo)); + temp2 = REALLOC(parser, parser->m_attInfo, + parser->m_attsSize * sizeof(XML_AttrInfo)); if (temp2 == NULL) { parser->m_attsSize = oldAttsSize; return XML_ERROR_NO_MEMORY; @@ -3765,7 +4278,7 @@ if (nPrefixes || nXMLNSDeclarations) { #endif /* END MOZILLA CHANGE */ - int j; /* hash table index */ + unsigned int j; /* hash table index */ unsigned long version = parser->m_nsAttsVersion; /* Detect and prevent invalid shift */ @@ -3802,15 +4315,14 @@ * 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_t)(-1) / sizeof(NS_ATT)) { + if (nsAttsSize > SIZE_MAX / sizeof(NS_ATT)) { /* Restore actual size of memory in m_nsAtts */ parser->m_nsAttsPower = oldNsAttsPower; return XML_ERROR_NO_MEMORY; } #endif - temp = (NS_ATT *)REALLOC(parser, parser->m_nsAtts, - nsAttsSize * sizeof(NS_ATT)); + temp = REALLOC(parser, parser->m_nsAtts, nsAttsSize * sizeof(NS_ATT)); if (! temp) { /* Restore actual size of memory in m_nsAtts */ parser->m_nsAttsPower = oldNsAttsPower; @@ -3866,7 +4378,7 @@ if (! b) return XML_ERROR_UNBOUND_PREFIX; - for (j = 0; j < b->uriLen; j++) { + for (j = 0; j < (unsigned int)b->uriLen; j++) { const XML_Char c = b->uri[j]; if (! poolAppendChar(&parser->m_tempPool, c)) return XML_ERROR_NO_MEMORY; @@ -4013,7 +4525,7 @@ return XML_ERROR_NONE; prefixLen = 0; if (parser->m_ns_triplets && binding->prefix->name) { - for (; binding->prefix->name[prefixLen++];) + while (binding->prefix->name[prefixLen++]) ; /* prefixLen includes null terminator */ } tagNamePtr->localPart = localPart; @@ -4042,12 +4554,12 @@ * 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_t)(-1) / sizeof(XML_Char)) { + if ((unsigned)(n + EXPAND_SPARE) > SIZE_MAX / sizeof(XML_Char)) { return XML_ERROR_NO_MEMORY; } #endif - uri = (XML_Char *)MALLOC(parser, (n + EXPAND_SPARE) * sizeof(XML_Char)); + uri = MALLOC(parser, (n + EXPAND_SPARE) * sizeof(XML_Char)); if (! uri) return XML_ERROR_NO_MEMORY; binding->uriAlloc = n + EXPAND_SPARE; @@ -4288,13 +4800,13 @@ * 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_t)(-1) / sizeof(XML_Char)) { + if ((unsigned)(len + EXPAND_SPARE) > SIZE_MAX / sizeof(XML_Char)) { return XML_ERROR_NO_MEMORY; } #endif - XML_Char *temp = (XML_Char *)REALLOC( - parser, b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); + XML_Char *temp + = REALLOC(parser, b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); if (temp == NULL) return XML_ERROR_NO_MEMORY; b->uri = temp; @@ -4302,7 +4814,7 @@ } parser->m_freeBindingList = b->nextTagBinding; } else { - b = (BINDING *)MALLOC(parser, sizeof(BINDING)); + b = MALLOC(parser, sizeof(BINDING)); if (! b) return XML_ERROR_NO_MEMORY; @@ -4315,13 +4827,12 @@ * 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_t)(-1) / sizeof(XML_Char)) { + if ((unsigned)(len + EXPAND_SPARE) > SIZE_MAX / sizeof(XML_Char)) { return XML_ERROR_NO_MEMORY; } #endif - b->uri - = (XML_Char *)MALLOC(parser, sizeof(XML_Char) * (len + EXPAND_SPARE)); + b->uri = MALLOC(parser, sizeof(XML_Char) * (len + EXPAND_SPARE)); if (! b->uri) { FREE(parser, b); return XML_ERROR_NO_MEMORY; @@ -4481,14 +4992,21 @@ /* 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 */ @@ -4820,7 +5338,7 @@ } /* found end of entity value - can store it now */ return storeEntityValue(parser, parser->m_encoding, s, end, - XML_ACCOUNT_DIRECT); + XML_ACCOUNT_DIRECT, NULL); } else if (tok == XML_TOK_XML_DECL) { enum XML_Error result; result = processXmlDecl(parser, 0, start, next); @@ -4947,7 +5465,7 @@ break; } /* found end of entity value - can store it now */ - return storeEntityValue(parser, enc, s, end, XML_ACCOUNT_DIRECT); + return storeEntityValue(parser, enc, s, end, XML_ACCOUNT_DIRECT, NULL); } start = next; } @@ -5390,9 +5908,9 @@ #if XML_GE == 1 // This will store the given replacement text in // parser->m_declEntity->textPtr. - enum XML_Error result - = storeEntityValue(parser, enc, s + enc->minBytesPerChar, - next - enc->minBytesPerChar, XML_ACCOUNT_NONE); + enum XML_Error result = callStoreEntityValue( + 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 @@ -5685,7 +6203,7 @@ return XML_ERROR_NO_MEMORY; } - char *const new_connector = (char *)REALLOC( + char *const new_connector = REALLOC( parser, parser->m_groupConnector, parser->m_groupSize *= 2); if (new_connector == NULL) { parser->m_groupSize /= 2; @@ -5700,20 +6218,22 @@ * 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_t)(-1) / sizeof(int)) { + if (parser->m_groupSize > SIZE_MAX / sizeof(int)) { + parser->m_groupSize /= 2; return XML_ERROR_NO_MEMORY; } #endif - int *const new_scaff_index = (int *)REALLOC( + int *const new_scaff_index = REALLOC( parser, dtd->scaffIndex, parser->m_groupSize * sizeof(int)); - if (new_scaff_index == NULL) + if (new_scaff_index == NULL) { + parser->m_groupSize /= 2; return XML_ERROR_NO_MEMORY; + } dtd->scaffIndex = new_scaff_index; } } else { - parser->m_groupConnector - = (char *)MALLOC(parser, parser->m_groupSize = 32); + parser->m_groupConnector = MALLOC(parser, parser->m_groupSize = 32); if (! parser->m_groupConnector) { parser->m_groupSize = 0; return XML_ERROR_NO_MEMORY; @@ -5817,7 +6337,7 @@ enum XML_Error result; XML_Bool betweenDecl = (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE); - result = processInternalEntity(parser, entity, betweenDecl); + result = processEntity(parser, entity, betweenDecl, ENTITY_INTERNAL); if (result != XML_ERROR_NONE) return result; handleDefault = XML_FALSE; @@ -5876,8 +6396,11 @@ case XML_ROLE_CONTENT_EMPTY: if (dtd->in_eldecl) { if (parser->m_elementDeclHandler) { - XML_Content *content - = (XML_Content *)MALLOC(parser, sizeof(XML_Content)); + // 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)); if (! content) return XML_ERROR_NO_MEMORY; content->quant = XML_CQUANT_NONE; @@ -5933,7 +6456,7 @@ name = el->name; dtd->scaffold[myindex].name = name; nameLen = 0; - for (; name[nameLen++];) + while (name[nameLen++]) ; /* Detect and prevent integer overflow */ @@ -6028,6 +6551,12 @@ 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); @@ -6095,106 +6624,92 @@ 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 -processInternalEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl) { - const char *textStart, *textEnd; - const char *next; - enum XML_Error result; - OPEN_INTERNAL_ENTITY *openEntity; +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 */ + } - if (parser->m_freeInternalEntities) { - openEntity = parser->m_freeInternalEntities; - parser->m_freeInternalEntities = openEntity->next; + if (*freeEntityList) { + openEntity = *freeEntityList; + *freeEntityList = openEntity->next; } else { - openEntity - = (OPEN_INTERNAL_ENTITY *)MALLOC(parser, sizeof(OPEN_INTERNAL_ENTITY)); + openEntity = 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 = parser->m_openInternalEntities; - parser->m_openInternalEntities = openEntity; + openEntity->next = *openEntityList; + *openEntityList = 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; - - 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); - } - 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; - } + // 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); } - return result; + return XML_ERROR_NONE; } 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; @@ -6204,72 +6719,71 @@ 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; - - 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 (result != XML_ERROR_NONE) - return result; + // 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_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; + } - if (textEnd != next && parser->m_parsingStatus.parsing == XML_SUSPENDED) { - entity->processed = (int)(next - (const char *)entity->textPtr); + // 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); return result; - } + } // End of entity processing, "if" block will return here + // Remove fully processed openEntity from open entity list. #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 = openEntity->next; + parser->m_openInternalEntities = parser->m_openInternalEntities->next; + /* put openEntity back in list of free instances */ openEntity->next = parser->m_freeInternalEntities; parser->m_freeInternalEntities = openEntity; - // 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; + if (parser->m_openInternalEntities == NULL) { + parser->m_processor = entity->is_param ? prologProcessor : contentProcessor; } + triggerReenter(parser); + return XML_ERROR_NONE; } static enum XML_Error PTRCALL @@ -6285,8 +6799,70 @@ storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, const char *ptr, const char *end, STRING_POOL *pool, enum XML_Account account) { - enum XML_Error result - = appendAttributeValue(parser, enc, isCdata, ptr, end, pool, 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; + } + } + if (result) return result; if (! isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) @@ -6299,7 +6875,7 @@ 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) { + enum XML_Account account, const char **nextPtr) { DTD *const dtd = parser->m_dtd; /* save one level of indirection */ #ifndef XML_DTD UNUSED_P(account); @@ -6317,6 +6893,9 @@ #endif switch (tok) { case XML_TOK_NONE: + if (nextPtr) { + *nextPtr = next; + } return XML_ERROR_NONE; case XML_TOK_INVALID: if (enc == parser->m_encoding) @@ -6370,7 +6949,7 @@ case XML_TOK_ENTITY_REF: { const XML_Char *name; ENTITY *entity; - char checkEntityDecl; + bool checkEntityDecl; XML_Char ch = (XML_Char)XmlPredefinedEntityName( enc, ptr + enc->minBytesPerChar, next - enc->minBytesPerChar); if (ch) { @@ -6463,21 +7042,11 @@ return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; } else { enum XML_Error 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; + result = processEntity(parser, entity, XML_FALSE, ENTITY_ATTRIBUTE); + if ((result == XML_ERROR_NONE) && (nextPtr != NULL)) { + *nextPtr = next; + } + return result; } } break; default: @@ -6506,7 +7075,7 @@ static enum XML_Error storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *entityTextPtr, const char *entityTextEnd, - enum XML_Account account) { + enum XML_Account account, const char **nextPtr) { DTD *const dtd = parser->m_dtd; /* save one level of indirection */ STRING_POOL *pool = &(dtd->entityValuePool); enum XML_Error result = XML_ERROR_NONE; @@ -6524,8 +7093,9 @@ return XML_ERROR_NO_MEMORY; } + const char *next; for (;;) { - const char *next + next = entityTextPtr; /* XmlEntityValueTok doesn't always set the last arg */ int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); @@ -6587,16 +7157,8 @@ } else dtd->keepProcessing = dtd->standalone; } else { - 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; + result = processEntity(parser, entity, XML_FALSE, ENTITY_VALUE); + goto endEntityValue; } break; } @@ -6684,6 +7246,81 @@ # 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; } @@ -6845,8 +7482,8 @@ if (type->nDefaultAtts == type->allocDefaultAtts) { if (type->allocDefaultAtts == 0) { type->allocDefaultAtts = 8; - type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC( - parser, type->allocDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); + type->defaultAtts + = MALLOC(parser, type->allocDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); if (! type->defaultAtts) { type->allocDefaultAtts = 0; return 0; @@ -6866,13 +7503,13 @@ * 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_t)(-1) / sizeof(DEFAULT_ATTRIBUTE)) { + if ((unsigned)count > SIZE_MAX / sizeof(DEFAULT_ATTRIBUTE)) { return 0; } #endif - temp = (DEFAULT_ATTRIBUTE *)REALLOC(parser, type->defaultAtts, - (count * sizeof(DEFAULT_ATTRIBUTE))); + temp = REALLOC(parser, type->defaultAtts, + (count * sizeof(DEFAULT_ATTRIBUTE))); if (temp == NULL) return 0; type->allocDefaultAtts = count; @@ -7163,19 +7800,19 @@ } static DTD * -dtdCreate(const XML_Memory_Handling_Suite *ms) { - DTD *p = ms->malloc_fcn(sizeof(DTD)); +dtdCreate(XML_Parser parser) { + DTD *p = MALLOC(parser, sizeof(DTD)); if (p == NULL) return p; - poolInit(&(p->pool), ms); - poolInit(&(p->entityValuePool), ms); - hashTableInit(&(p->generalEntities), ms); - hashTableInit(&(p->elementTypes), ms); - hashTableInit(&(p->attributeIds), ms); - hashTableInit(&(p->prefixes), ms); + poolInit(&(p->pool), parser); + poolInit(&(p->entityValuePool), parser); + hashTableInit(&(p->generalEntities), parser); + hashTableInit(&(p->elementTypes), parser); + hashTableInit(&(p->attributeIds), parser); + hashTableInit(&(p->prefixes), parser); #ifdef XML_DTD p->paramEntityRead = XML_FALSE; - hashTableInit(&(p->paramEntities), ms); + hashTableInit(&(p->paramEntities), parser); #endif /* XML_DTD */ p->defaultPrefix.name = NULL; p->defaultPrefix.binding = NULL; @@ -7197,7 +7834,7 @@ /* BEGIN MOZILLA CHANGE (unused API) */ #if 0 static void -dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) { +dtdReset(DTD *p, XML_Parser parser) { HASH_TABLE_ITER iter; hashTableIterInit(&iter, &(p->elementTypes)); for (;;) { @@ -7205,7 +7842,7 @@ if (! e) break; if (e->allocDefaultAtts != 0) - ms->free_fcn(e->defaultAtts); + FREE(parser, e->defaultAtts); } hashTableClear(&(p->generalEntities)); #ifdef XML_DTD @@ -7222,9 +7859,9 @@ p->in_eldecl = XML_FALSE; - ms->free_fcn(p->scaffIndex); + FREE(parser, p->scaffIndex); p->scaffIndex = NULL; - ms->free_fcn(p->scaffold); + FREE(parser, p->scaffold); p->scaffold = NULL; p->scaffLevel = 0; @@ -7240,7 +7877,7 @@ /* END MOZILLA CHANGE */ static void -dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) { +dtdDestroy(DTD *p, XML_Bool isDocEntity, XML_Parser parser) { HASH_TABLE_ITER iter; hashTableIterInit(&iter, &(p->elementTypes)); for (;;) { @@ -7248,7 +7885,7 @@ if (! e) break; if (e->allocDefaultAtts != 0) - ms->free_fcn(e->defaultAtts); + FREE(parser, e->defaultAtts); } hashTableDestroy(&(p->generalEntities)); #ifdef XML_DTD @@ -7260,10 +7897,10 @@ poolDestroy(&(p->pool)); poolDestroy(&(p->entityValuePool)); if (isDocEntity) { - ms->free_fcn(p->scaffIndex); - ms->free_fcn(p->scaffold); + FREE(parser, p->scaffIndex); + FREE(parser, p->scaffold); } - ms->free_fcn(p); + FREE(parser, p); } /* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise. @@ -7271,7 +7908,7 @@ */ static int dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, - const XML_Memory_Handling_Suite *ms) { + XML_Parser parser) { HASH_TABLE_ITER iter; /* Copy the prefix table. */ @@ -7346,13 +7983,12 @@ * 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_t)(-1) / sizeof(DEFAULT_ATTRIBUTE))) { + if ((size_t)oldE->nDefaultAtts > SIZE_MAX / sizeof(DEFAULT_ATTRIBUTE)) { return 0; } #endif newE->defaultAtts - = ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); + = MALLOC(parser, oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); if (! newE->defaultAtts) { return 0; } @@ -7514,7 +8150,7 @@ /* table->size is a power of 2 */ table->size = (size_t)1 << INIT_POWER; tsize = table->size * sizeof(NAMED *); - table->v = table->mem->malloc_fcn(tsize); + table->v = MALLOC(table->parser, tsize); if (! table->v) { table->size = 0; return NULL; @@ -7549,12 +8185,12 @@ unsigned long newMask = (unsigned long)newSize - 1; /* Detect and prevent integer overflow */ - if (newSize > (size_t)(-1) / sizeof(NAMED *)) { + if (newSize > SIZE_MAX / sizeof(NAMED *)) { return NULL; } size_t tsize = newSize * sizeof(NAMED *); - NAMED **newV = table->mem->malloc_fcn(tsize); + NAMED **newV = MALLOC(table->parser, tsize); if (! newV) return NULL; memset(newV, 0, tsize); @@ -7570,7 +8206,7 @@ } newV[j] = table->v[i]; } - table->mem->free_fcn(table->v); + FREE(table->parser, table->v); table->v = newV; table->power = newPower; table->size = newSize; @@ -7583,7 +8219,7 @@ } } } - table->v[i] = table->mem->malloc_fcn(createSize); + table->v[i] = MALLOC(table->parser, createSize); if (! table->v[i]) return NULL; memset(table->v[i], 0, createSize); @@ -7598,7 +8234,7 @@ hashTableClear(HASH_TABLE *table) { size_t i; for (i = 0; i < table->size; i++) { - table->mem->free_fcn(table->v[i]); + FREE(table->parser, table->v[i]); table->v[i] = NULL; } table->used = 0; @@ -7610,17 +8246,17 @@ hashTableDestroy(HASH_TABLE *table) { size_t i; for (i = 0; i < table->size; i++) - table->mem->free_fcn(table->v[i]); - table->mem->free_fcn(table->v); + FREE(table->parser, table->v[i]); + FREE(table->parser, table->v); } static void FASTCALL -hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) { +hashTableInit(HASH_TABLE *p, XML_Parser parser) { p->power = 0; p->size = 0; p->used = 0; p->v = NULL; - p->mem = ms; + p->parser = parser; } static void FASTCALL @@ -7640,13 +8276,13 @@ } static void FASTCALL -poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) { +poolInit(STRING_POOL *pool, XML_Parser parser) { pool->blocks = NULL; pool->freeBlocks = NULL; pool->start = NULL; pool->ptr = NULL; pool->end = NULL; - pool->mem = ms; + pool->parser = parser; } static void FASTCALL @@ -7673,13 +8309,13 @@ BLOCK *p = pool->blocks; while (p) { BLOCK *tem = p->next; - pool->mem->free_fcn(p); + FREE(pool->parser, p); p = tem; } p = pool->freeBlocks; while (p) { BLOCK *tem = p->next; - pool->mem->free_fcn(p); + FREE(pool->parser, p); p = tem; } } @@ -7789,7 +8425,7 @@ static XML_Bool FASTCALL poolGrow(STRING_POOL *pool) { if (pool->freeBlocks) { - if (pool->start == 0) { + if (pool->start == NULL) { pool->blocks = pool->freeBlocks; pool->freeBlocks = pool->freeBlocks->next; pool->blocks->next = NULL; @@ -7834,8 +8470,7 @@ if (bytesToAllocate == 0) return XML_FALSE; - temp = (BLOCK *)pool->mem->realloc_fcn(pool->blocks, - (unsigned)bytesToAllocate); + temp = REALLOC(pool->parser, pool->blocks, bytesToAllocate); if (temp == NULL) return XML_FALSE; pool->blocks = temp; @@ -7875,7 +8510,7 @@ if (bytesToAllocate == 0) return XML_FALSE; - tem = pool->mem->malloc_fcn(bytesToAllocate); + tem = MALLOC(pool->parser, bytesToAllocate); if (! tem) return XML_FALSE; tem->size = blockSize; @@ -7902,16 +8537,21 @@ * 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_t)(-1) / sizeof(int))) { + if (parser->m_groupSize > SIZE_MAX / sizeof(int)) { return -1; } #endif - dtd->scaffIndex = (int *)MALLOC(parser, parser->m_groupSize * sizeof(int)); + dtd->scaffIndex = 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) { @@ -7924,26 +8564,25 @@ * 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_t)(-1) / 2u / sizeof(CONTENT_SCAFFOLD)) { + if (dtd->scaffSize > SIZE_MAX / 2u / sizeof(CONTENT_SCAFFOLD)) { return -1; } #endif - temp = (CONTENT_SCAFFOLD *)REALLOC( - parser, dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); + temp = REALLOC(parser, dtd->scaffold, + dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); if (temp == NULL) return -1; dtd->scaffSize *= 2; } else { - temp = (CONTENT_SCAFFOLD *)MALLOC(parser, INIT_SCAFFOLD_ELEMENTS - * sizeof(CONTENT_SCAFFOLD)); + temp = MALLOC(parser, INIT_SCAFFOLD_ELEMENTS * sizeof(CONTENT_SCAFFOLD)); if (temp == NULL) return -1; dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS; } dtd->scaffold = temp; } - next = dtd->scaffCount++; + next = (int)dtd->scaffCount++; me = &dtd->scaffold[next]; if (dtd->scaffLevel) { CONTENT_SCAFFOLD *parent @@ -7975,22 +8614,25 @@ * 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_t)(-1) / sizeof(XML_Content)) { + if (dtd->scaffCount > SIZE_MAX / sizeof(XML_Content)) { return NULL; } - if (dtd->contentStringLen > (size_t)(-1) / sizeof(XML_Char)) { + if (dtd->contentStringLen > SIZE_MAX / sizeof(XML_Char)) { return NULL; } #endif if (dtd->scaffCount * sizeof(XML_Content) - > (size_t)(-1) - dtd->contentStringLen * sizeof(XML_Char)) { + > SIZE_MAX - dtd->contentStringLen * sizeof(XML_Char)) { return NULL; } const size_t allocsize = (dtd->scaffCount * sizeof(XML_Content) + (dtd->contentStringLen * sizeof(XML_Char))); - ret = (XML_Content *)MALLOC(parser, allocsize); + // 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); if (! ret) return NULL; @@ -8111,7 +8753,7 @@ } static XML_Char * -copyString(const XML_Char *s, const XML_Memory_Handling_Suite *memsuite) { +copyString(const XML_Char *s, XML_Parser parser) { size_t charsRequired = 0; XML_Char *result; @@ -8123,7 +8765,7 @@ charsRequired++; /* Now allocate space for the copy */ - result = memsuite->malloc_fcn(charsRequired * sizeof(XML_Char)); + result = MALLOC(parser, charsRequired * sizeof(XML_Char)); if (result == NULL) return NULL; /* Copy the original into place */ @@ -8142,10 +8784,10 @@ + rootParser->m_accounting.countBytesIndirect; const float amplificationFactor = rootParser->m_accounting.countBytesDirect - ? (countBytesOutput + ? ((float)countBytesOutput / (float)(rootParser->m_accounting.countBytesDirect)) - : ((lenOfShortestInclude - + rootParser->m_accounting.countBytesIndirect) + : ((float)(lenOfShortestInclude + + rootParser->m_accounting.countBytesIndirect) / (float)lenOfShortestInclude); assert(! rootParser->m_parentParser); return amplificationFactor; @@ -8318,7 +8960,7 @@ (void *)rootParser, rootParser->m_entity_stats.countEverOpened, rootParser->m_entity_stats.currentDepth, rootParser->m_entity_stats.maximumDepthSeen, - (rootParser->m_entity_stats.currentDepth - 1) * 2, "", + ((int)rootParser->m_entity_stats.currentDepth - 1) * 2, "", entity->is_param ? "%" : "&", entityName, action, entity->textLen, sourceLine); } @@ -8357,6 +8999,8 @@ /* END MOZILLA CHANGE */ } +#endif /* XML_GE == 1 */ + static XML_Parser getRootParserOf(XML_Parser parser, unsigned int *outLevelDiff) { XML_Parser rootParser = parser; @@ -8372,6 +9016,8 @@ return rootParser; } +#if XML_GE == 1 + /* BEGIN MOZILLA CHANGE (don't report debug information) */ #if 0 const char * @@ -8889,11 +9535,13 @@ 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 -Nru thunderbird-140.8.0esr/parser/expat/expat/lib/xmlrole.c thunderbird-140.9.0esr/parser/expat/expat/lib/xmlrole.c --- thunderbird-140.8.0esr/parser/expat/expat/lib/xmlrole.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/expat/lib/xmlrole.c 2026-03-20 19:18:39.000000000 +0000 @@ -16,6 +16,7 @@ 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 @@ -46,7 +47,6 @@ # include "winconfig.h" #endif -#include "expat_external.h" #include "internal.h" #include "xmlrole.h" #include "ascii.h" diff -Nru thunderbird-140.8.0esr/parser/expat/expat/lib/xmlrole.h thunderbird-140.9.0esr/parser/expat/expat/lib/xmlrole.h --- thunderbird-140.8.0esr/parser/expat/expat/lib/xmlrole.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/expat/lib/xmlrole.h 2026-03-20 19:18:39.000000000 +0000 @@ -10,7 +10,7 @@ Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Karl Waclawek Copyright (c) 2002 Fred L. Drake, Jr. - Copyright (c) 2017-2024 Sebastian Pipping + Copyright (c) 2017-2025 Sebastian Pipping Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -34,19 +34,13 @@ */ #ifndef XmlRole_INCLUDED -#define XmlRole_INCLUDED 1 +# define XmlRole_INCLUDED 1 -#ifdef __VMS -/* 0 1 2 3 0 1 2 3 - 1234567890123456789012345678901 1234567890123456789012345678901 */ -# define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt -#endif +# include "xmltok.h" -#include "xmltok.h" - -#ifdef __cplusplus +# ifdef __cplusplus extern "C" { -#endif +# endif enum { XML_ROLE_ERROR = -1, @@ -107,11 +101,11 @@ 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 }; @@ -120,23 +114,23 @@ 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 -Nru thunderbird-140.8.0esr/parser/expat/expat/lib/xmltok.c thunderbird-140.9.0esr/parser/expat/expat/lib/xmltok.c --- thunderbird-140.8.0esr/parser/expat/expat/lib/xmltok.c 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/expat/lib/xmltok.c 2026-03-20 19:18:39.000000000 +0000 @@ -24,6 +24,7 @@ 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 @@ -56,7 +57,6 @@ # include "winconfig.h" #endif -#include "expat_external.h" #include "internal.h" #include "xmltok.h" #include "nametab.h" @@ -1409,7 +1409,7 @@ } ENCODING * -XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert, +XmlInitUnknownEncoding(void *mem, const int *table, CONVERTER convert, void *userData) { int i; struct unknown_encoding *e = (struct unknown_encoding *)mem; @@ -1672,7 +1672,7 @@ # undef ns ENCODING * -XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert, +XmlInitUnknownEncodingNS(void *mem, const int *table, CONVERTER convert, void *userData) { ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData); if (enc) diff -Nru thunderbird-140.8.0esr/parser/expat/expat/lib/xmltok.h thunderbird-140.9.0esr/parser/expat/expat/lib/xmltok.h --- thunderbird-140.8.0esr/parser/expat/expat/lib/xmltok.h 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/expat/lib/xmltok.h 2026-03-20 19:18:38.000000000 +0000 @@ -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_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_N_LITERAL_TYPES 2 -#define XML_ATTRIBUTE_VALUE_LITERAL 0 -#define XML_ENTITY_VALUE_LITERAL 1 +# 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 */ + +# 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 /* 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 @@ 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 @@ typedef int(XMLCALL *CONVERTER)(void *userData, const char *p); -ENCODING *XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert, +ENCODING *XmlInitUnknownEncoding(void *mem, const int *table, CONVERTER convert, void *userData); int XmlParseXmlDeclNS(int isGeneralTextEntity, const ENCODING *enc, @@ -312,10 +312,10 @@ const char *name); const ENCODING *XmlGetUtf8InternalEncodingNS(void); const ENCODING *XmlGetUtf16InternalEncodingNS(void); -ENCODING *XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert, - void *userData); -#ifdef __cplusplus +ENCODING *XmlInitUnknownEncodingNS(void *mem, const int *table, + CONVERTER convert, void *userData); +# ifdef __cplusplus } -#endif +# endif #endif /* not XmlTok_INCLUDED */ diff -Nru thunderbird-140.8.0esr/parser/expat/expat/lib/xmltok_ns.c thunderbird-140.9.0esr/parser/expat/expat/lib/xmltok_ns.c --- thunderbird-140.8.0esr/parser/expat/expat/lib/xmltok_ns.c 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/expat/lib/xmltok_ns.c 2026-03-20 19:18:39.000000000 +0000 @@ -12,6 +12,7 @@ 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 @@ -98,13 +99,13 @@ int i; XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); if (ptr != end) - return 0; + return NULL; *p = 0; if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) return enc; i = getEncodingIndex(buf); if (i == UNKNOWN_ENC) - return 0; + return NULL; return NS(encodings)[i]; } diff -Nru thunderbird-140.8.0esr/parser/expat/moz.yaml thunderbird-140.9.0esr/parser/expat/moz.yaml --- thunderbird-140.8.0esr/parser/expat/moz.yaml 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/parser/expat/moz.yaml 2026-03-20 19:18:39.000000000 +0000 @@ -9,8 +9,8 @@ name: libexpat description: Expat is an XML parser. url: https://github.com/libexpat/libexpat - release: R_2_6_4 (2024-11-07T02:31:34+01:00). - revision: R_2_6_4 + release: R_2_7_4 (2026-01-31T12:16:55+01:00). + revision: R_2_7_4 license: MIT license-file: COPYING @@ -27,6 +27,7 @@ - "**" - expat/lib/Makefile.am - expat/lib/libexpat.def.cmake + - expat/lib/libexpat.map.in include: - AUTHORS @@ -39,6 +40,7 @@ - expat_config.h - expat_config_moz.h - expat_config_rlbox.h + - README_MOZILLA - rlbox_expat.h - rlbox_expat_types.h - sources.mozbuild @@ -53,12 +55,10 @@ - 03_dont_generate_salt.patch - 04_always_set_eventptrs.patch - 05_getcurrentbyteindex.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 + - 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 diff -Nru thunderbird-140.8.0esr/security/ct/CTKnownLogs.h thunderbird-140.9.0esr/security/ct/CTKnownLogs.h --- thunderbird-140.8.0esr/security/ct/CTKnownLogs.h 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/security/ct/CTKnownLogs.h 2026-03-20 19:18:39.000000000 +0000 @@ -14,7 +14,7 @@ #include -static const PRTime kCTExpirationTime = INT64_C(1777287252000000); +static const PRTime kCTExpirationTime = INT64_C(1779695596000000); namespace mozilla::ct { @@ -327,8 +327,8 @@ "\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::Admissible, CTLogFormat::RFC6962, - 1765578600000, // 2025-12-12T22:30:00Z + {"Let's Encrypt 'Oak2026h1'", CTLogState::Retired, CTLogFormat::RFC6962, + 1772236800000, // 2026-02-28T00: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 +337,8 @@ "\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::Admissible, CTLogFormat::RFC6962, - 1765578600000, // 2025-12-12T22:30:00Z + {"Let's Encrypt 'Oak2026h2'", CTLogState::Retired, CTLogFormat::RFC6962, + 1772236800000, // 2026-02-28T00: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" diff -Nru thunderbird-140.8.0esr/security/manager/ssl/StaticHPKPins.h thunderbird-140.9.0esr/security/manager/ssl/StaticHPKPins.h --- thunderbird-140.8.0esr/security/manager/ssl/StaticHPKPins.h 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/security/manager/ssl/StaticHPKPins.h 2026-03-20 19:18:39.000000000 +0000 @@ -726,4 +726,4 @@ static const int32_t kUnknownId = -1; -static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1779706430495000); +static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1782114773318000); diff -Nru thunderbird-140.8.0esr/security/manager/ssl/nsSTSPreloadList.inc thunderbird-140.9.0esr/security/manager/ssl/nsSTSPreloadList.inc --- thunderbird-140.8.0esr/security/manager/ssl/nsSTSPreloadList.inc 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/security/manager/ssl/nsSTSPreloadList.inc 2026-03-20 19:18:39.000000000 +0000 @@ -8,7 +8,7 @@ /*****************************************************************************/ #include -const PRTime gPreloadListExpirationTime = INT64_C(1782125626821000); +const PRTime gPreloadListExpirationTime = INT64_C(1784533969259000); %% 0--1.de, 1 0-0.io, 1 @@ -16,6 +16,8 @@ 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 @@ -163,7 +165,6 @@ 0571z6.com, 1 0595.com, 1 0597z6.com, 1 -059958.com, 1 060579.com, 1 060798.com, 1 06091994.xyz, 1 @@ -186,7 +187,6 @@ 07d88.com, 1 07d88.net, 1 07f.de, 1 -0800-horoscope.com, 1 08000113.nl, 1 0800829988.com, 1 081115.com, 0 @@ -308,6 +308,7 @@ 0xfc.de, 1 0xfn.eu, 1 0xheuts.nl, 1 +0xinsider.com, 1 0xn.de, 1 0xnotes.me, 1 0xnull.de, 1 @@ -334,7 +335,6 @@ 10000spoons.tk, 1 10001000.xyz, 1 100048.com, 1 -1000ftad.ch, 1 1000inf.ru, 1 1000ps.at, 1 1000ps.de, 1 @@ -371,6 +371,7 @@ 100pluspro.com, 1 100pour100print.com, 1 100pudov.tk, 1 +100reach.com, 1 100refer.tk, 1 100sapog.tk, 1 100skidok.ga, 1 @@ -405,6 +406,7 @@ 10218e.com, 0 10218f.com, 0 10218h.com, 0 +1024.ee, 1 1024.kr, 1 1025.ga, 1 1031ex.com, 1 @@ -423,6 +425,7 @@ 1068511.com, 1 106906.xyz, 1 10705.ml, 1 +1071kongremerkezi.com, 1 107996.com, 1 1079fm.ga, 1 107fm.kz, 1 @@ -533,6 +536,7 @@ 113z6.com, 1 11400.com, 1 11443837.com, 0 +114514911.xyz, 1 114514ss.com, 1 114online.com, 1 115.one, 1 @@ -540,6 +544,7 @@ 1174healing.com, 1 117766.xyz, 1 1177z6.com, 1 +11792.com, 1 1190america.tk, 1 1199bet.vip, 0 119sh.com, 1 @@ -1076,6 +1081,7 @@ 1911-movie.jp, 1 1911trust.com, 1 1912x.com, 1 +191512.xyz, 1 192.com, 1 1920.tk, 1 1920301.com, 1 @@ -1246,6 +1252,7 @@ 1password.com, 1 1password.eu, 1 1picture.hu, 1 +1placedessaisons.com, 1 1plus.red, 1 1plus1tv.zone, 1 1pluss.ee, 1 @@ -1254,7 +1261,7 @@ 1q2w.nl, 1 1q365a.com, 1 1r.is, 1 -1rail.com.au, 1 +1rail.com.au, 0 1roadsquadtransport.com, 1 1rs.nl, 1 1rust.net, 1 @@ -1416,6 +1423,7 @@ 1xbetkor.com, 1 1xbetkr.com, 1 1xbetkr1.com, 1 +1xbetmm.com, 1 1xbetqq.com, 1 1xbetsd.com, 1 1xbetst.com, 1 @@ -1508,6 +1516,7 @@ 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 @@ -1531,6 +1540,7 @@ 2083236893.com, 1 208garfield.com, 1 208medical.org, 1 +20deg.com, 1 20denier.com, 1 20gg.de, 1 20mcc.in, 1 @@ -1543,6 +1553,12 @@ 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 @@ -1561,7 +1577,6 @@ 220control.ru, 1 2211.cf, 1 22168365.com, 1 -221b.store, 1 222001.com, 1 222382.xyz, 1 2226321.com, 1 @@ -1666,6 +1681,7 @@ 240525.com, 1 241552.com, 1 242552.com, 1 +244.life, 1 2444.cf, 1 245990.xyz, 1 245meadowvistaway.com, 1 @@ -1718,21 +1734,19 @@ 24hrbrandbash.com, 1 24images.com, 1 24k.co.jp, 1 -24meg.com, 1 24onlain.tk, 1 -24see.com, 1 24shares.cc, 1 24slides.com, 1 24toolkit.com, 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 @@ -1758,7 +1772,6 @@ 2601.de, 1 262569.com, 1 263mail.com, 1 -267326.com, 1 269196.com, 1 2698pacificave.com, 1 26uuu.mobi, 1 @@ -1773,19 +1786,15 @@ 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 @@ -1883,7 +1892,6 @@ 2think.org, 1 2to.co, 1 2travel8.world, 1 -2ugaming.com, 1 2url.link, 1 2ustyle.com, 1 2vnews.com, 1 @@ -2167,11 +2175,9 @@ 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 @@ -2190,19 +2196,14 @@ 3880p.com, 1 38888msc.com, 1 38irkutsk.tk, 1 -390539.com, 1 -390trains.com, 1 392365.com, 0 393335.ml, 0 394553.com, 1 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 @@ -2249,7 +2250,6 @@ 3970z.com, 1 3970zz.com, 1 397542.com, 1 -398039.com, 1 39news.tk, 1 39sihu.com, 0 39w66.com, 1 @@ -2282,7 +2282,6 @@ 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 @@ -2430,7 +2429,6 @@ 3wikipedia.org, 1 3wincorp.com, 1 3xceler.com.br, 1 -3xx.click, 1 3xx.link, 1 3z4m.stream, 1 3zm-cheats.de, 1 @@ -2459,7 +2457,6 @@ 4025369.com, 1 403.ch, 1 403page.com, 1 -404.blue, 1 404.city, 1 404.guide, 1 4048kkk.com, 1 @@ -2564,7 +2561,6 @@ 476470.com, 1 47essays.com, 1 47yr.com, 1 -483329.com, 1 483610.com, 1 48365365cn.com, 1 48365cn-365.com, 1 @@ -2650,7 +2646,7 @@ 4mm.org, 1 4n3.net, 1 4n6.io, 1 -4netguides.org, 1 +4netguides.org, 0 4nikola.de, 1 4nk.network, 1 4o.pw, 0 @@ -2662,6 +2658,7 @@ 4project.co.il, 1 4q-quartet.tk, 1 4racers.jp, 1 +4recon.se, 1 4ree.tk, 1 4screens.net, 1 4season-flowers.com, 1 @@ -2863,6 +2860,7 @@ 52evar.com, 1 52evar1.com, 1 52hentai.ml, 1 +52iv.one, 1 52kb1.com, 1 52kb365.com, 0 52ncp.net, 1 @@ -2888,10 +2886,7 @@ 5533445.com, 1 55365t.com, 1 5557552.com, 1 -555bet86.com, 1 -555kb.com, 1 555w.org, 1 -555xl.com, 1 555zlong.com, 1 556185.com, 1 557.pm, 1 @@ -2903,7 +2898,6 @@ 5611bet.com, 1 562656.com, 1 562956.com, 1 -563398.com, 1 5633bet.com, 1 56365t.com, 1 5663.cc, 1 @@ -2927,7 +2921,6 @@ 589174.com, 1 589team.com, 1 592227.com, 0 -593398.com, 1 594795.com, 1 595380.com, 1 5981168.com, 1 @@ -3019,6 +3012,7 @@ 5peciali5t.tk, 1 5penazi.sk, 1 5percentperweek.com, 1 +5play.life, 1 5sjsa.com, 1 5snb.club, 1 5sporn.com, 1 @@ -3111,6 +3105,7 @@ 6396zzz.com, 0 63fg.com, 1 63gaming.com, 1 +64.place, 1 644.ro, 1 645ds.com, 0 64970.com, 1 @@ -3284,7 +3279,6 @@ 6729z.co, 1 6729zz.co, 1 672bbb.com, 1 -673395.com, 1 673422.com, 0 673569.com, 1 673bbb.com, 1 @@ -3298,12 +3292,10 @@ 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 @@ -3425,12 +3417,8 @@ 7261696e626f77.net, 1 727sss.com, 1 730.no, 1 -732273.com, 1 -736373.com, 1 -736573.com, 1 737478.xyz, 1 -739373.com, 1 -739673.com, 1 +73k.us, 1 740424.ml, 1 740660.com, 1 740cashbuyers.com, 1 @@ -3439,8 +3427,6 @@ 7478vip2.cc, 1 74dy.org, 1 74th.jp, 1 -750375.com, 1 -750475.com, 1 751930.com, 1 7552001.com, 1 7552002.com, 1 @@ -3458,12 +3444,8 @@ 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 @@ -3476,7 +3458,6 @@ 76669.com, 1 766788.xyz, 1 767333.xyz, 1 -769sc.com, 0 76networks.tk, 1 76o.cn, 1 77018dd.com, 0 @@ -3504,7 +3485,6 @@ 77online.com, 1 78.to, 1 780aa.com, 1 -783346.com, 1 78365b.com, 0 783lab.com, 1 787637.com, 1 @@ -3549,6 +3529,7 @@ 7kovrikov.ru, 1 7kvadratov.by, 1 7l00p.com, 1 +7matic.net, 1 7money.co, 1 7net.uk, 1 7nets.com, 1 @@ -3578,7 +3559,6 @@ 800999.xyz, 1 800email.com, 1 800ink.com, 1 -800live.com, 1 800mattress.com, 1 800perkins.com, 1 800sports.com, 1 @@ -3607,6 +3587,7 @@ 8097d.com, 1 80993.net, 1 80bin.com, 1 +80dental.com.my, 1 80motorsclub.tk, 1 80smaniacs.nl, 1 81.cz, 1 @@ -3665,7 +3646,6 @@ 8226d.com, 1 8228d.com, 1 8229d88.com, 1 -823582.com, 1 82365f.com, 1 82365g.com, 1 82365h.com, 1 @@ -3688,8 +3668,6 @@ 82365y.com, 1 82365z.com, 1 825148.com, 1 -825382.com, 1 -826282.com, 1 82781111.com, 0 82783333.com, 0 82784444.com, 0 @@ -3708,7 +3686,6 @@ 83365365.com, 1 834365.com, 1 8349822.com, 1 -838888.net, 1 83ir2k8b.duckdns.org, 1 83kb88.com, 1 84000.com, 1 @@ -3795,11 +3772,9 @@ 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 @@ -3930,7 +3905,7 @@ 8l.com.au, 1 8maerz.at, 1 8me.nl, 1 -8n.pw, 0 +8n.pw, 1 8shequapp.com, 1 8t8.eu, 1 8tech.com.hk, 1 @@ -3944,6 +3919,7 @@ 8yun.cf, 1 8yun.ga, 0 9-11commission.gov, 1 +9.kz, 1 9.lviv.ua, 1 9.ms, 1 90.cx, 1 @@ -4021,7 +3997,6 @@ 9076.cf, 1 9077.cf, 1 9078.cf, 1 -907856.com, 1 9079.cf, 1 9080.cf, 1 9081.cf, 1 @@ -4041,7 +4016,6 @@ 9098.cf, 1 90daydiet.org, 1 90daysales.com, 1 -90minut.com, 1 90r.jp, 1 90splease.com, 1 91-av.com, 1 @@ -4082,12 +4056,10 @@ 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 @@ -4133,7 +4105,6 @@ 9176.cf, 1 9177.cf, 1 9179.cf, 1 -917991.com, 1 9180.cf, 1 9181.cf, 1 9181181.com, 1 @@ -4168,7 +4139,6 @@ 918kissinw.com, 1 9190.cf, 1 9193.cf, 1 -919391.com, 1 9194.cf, 1 9195.cf, 1 9197.cf, 1 @@ -4197,7 +4167,6 @@ 9201.cf, 1 9202.cf, 1 9203.cf, 1 -920392.com, 1 9204.cf, 1 9205.cf, 1 9206.cf, 1 @@ -4210,7 +4179,6 @@ 9215.cf, 1 9216.cf, 1 9217.cf, 1 -921792.com, 1 9218.cf, 1 9219.cf, 1 9220.cf, 1 @@ -4235,16 +4203,12 @@ 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 @@ -4410,7 +4374,6 @@ 9397r.com, 1 9398.cf, 1 939wns.com, 1 -93ag8.com, 1 93cq.com, 1 9401.cf, 1 9402.cf, 1 @@ -4558,7 +4521,6 @@ 9618.cf, 1 9619.cf, 1 9620.cf, 1 -96200.com, 1 9621.cf, 1 9622.cf, 1 96220.com, 1 @@ -4725,8 +4687,6 @@ 987987.com, 1 987kisscountry.com, 1 988.gov, 1 -9882258.com, 1 -9884458.com, 1 98877.com, 1 98944448.com, 1 98944449.com, 1 @@ -4828,18 +4788,12 @@ 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 @@ -4848,7 +4802,9 @@ 999family.com, 0 999salon.co, 1 999zlong.com, 1 +99bt.com, 1 99buffets.com, 1 +99dog.com, 1 99furnitureideasandtips.gq, 1 99furnitureideasexamples.ga, 1 99laptops.com, 1 @@ -4866,7 +4822,6 @@ 9ccn.top, 1 9elements.com, 0 9face.com, 1 -9fruit.com, 1 9fvip.net, 1 9gag.com, 1 9hosts.net, 1 @@ -4955,6 +4910,7 @@ 9pkfz.com, 1 9point6.com, 1 9ranks.com, 1 +9rx.cz, 1 9tailedkitsune.com, 1 9to5linux.com, 1 9uelle.jp, 0 @@ -4970,7 +4926,6 @@ 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 @@ -5036,7 +4991,7 @@ a2ssrl.duckdns.org, 1 a2z-restoration.com, 1 a2zbabyname.com, 1 -a2zplumbing.com.au, 1 +a2zplumbing.com.au, 0 a340.com, 1 a356.top, 1 a36533.com, 1 @@ -5063,7 +5018,6 @@ a9-9.top, 0 a9297.co, 1 a9728.co, 1 -a9l.im, 1 aa-security.be, 1 aa.cx, 1 aa43d.cn, 1 @@ -5101,6 +5055,7 @@ aadskeuken.nl, 1 aadv.com.br, 1 aaenhunze.nl, 1 +aafip.org, 1 aaflalo.me, 1 aagetransport.no, 1 aahhbali.com, 1 @@ -5204,6 +5159,7 @@ ab91corp.com, 1 abaca.bar, 1 abaco.cr, 1 +abacoaggregate.net, 1 abaconappliancerepairs.co.za, 1 abacross.com, 1 abacus-marketing.uk, 1 @@ -5223,7 +5179,6 @@ abakan-news.net, 1 abalsa.tk, 1 abambo.tk, 1 -abancommercials.com, 1 abandoned-zone.tk, 1 abandoned.tk, 1 abandonedmines.gov, 1 @@ -5313,6 +5268,7 @@ abdulawal.tk, 1 abdulazizgolca.com, 1 abdulkarimm.tk, 1 +abdulkerimsesli.de, 1 abdullaeff.net, 1 abdullahavci.com, 1 abdullahavci.com.tr, 1 @@ -5325,7 +5281,6 @@ abdullahkoyuncu.de, 1 abdullahzubayerofficial.ml, 1 abdulraheem.org, 1 -abdulraheemalick.com, 1 abdulrahman.eu, 1 abdulwahaab.ca, 1 abduramshad.ml, 1 @@ -5448,6 +5403,7 @@ abnbfcu.org, 1 abnehmen-sport-fitness.de, 1 abnobapetstore.co.uk, 1 +abnobdoss.com, 1 abnradiofm.tk, 1 aboat.cc, 1 aboces.org, 1 @@ -5556,7 +5512,7 @@ aboutyou.se, 1 aboutyou.si, 1 aboutyou.sk, 1 -abovethefirehouse.com, 1 +abovethefirehouse.com, 0 abox-kb.com, 1 abpages.com, 1 abpis.hr, 1 @@ -5611,12 +5567,12 @@ 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 @@ -5630,6 +5586,7 @@ abstractbarista.net, 0 abstractive.ai, 1 absurdia.tk, 1 +absurdityindex.org, 1 absurdopedia.wiki, 1 absyscyborg.com, 1 abteam.tk, 1 @@ -5653,6 +5610,7 @@ abuse.io, 1 abusive-host.tk, 1 abvlbasketviganello.ch, 0 +abvplumbing.com, 1 aby-action.com, 1 abys.se, 1 abysra.com, 1 @@ -5761,7 +5719,6 @@ 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 @@ -5820,6 +5777,7 @@ accretech.vn, 1 accsaber.com, 1 accslot.com, 1 +accstrading.com, 1 acct-affiliate.com, 1 accubitsdemo.ml, 1 accudemia.net, 1 @@ -5926,7 +5884,6 @@ achimrosenhagen.de, 1 achinsk.tk, 1 achintyaesbee.tk, 1 -achireland.com, 1 achkandiro.ml, 1 achkandiro.tk, 1 achl.fr, 1 @@ -6003,7 +5960,6 @@ acopatableware.com, 1 acordes.online, 1 acorespro.com, 1 -acorn.works, 1 acorncastles.co.uk, 1 acornli.com, 1 acornmetal.com.au, 1 @@ -6038,7 +5994,6 @@ acquisition.gov, 1 acquisitiongateway.gov, 1 acquisitionstars.com, 1 -acrackstreams.city, 1 acraftedpassion.com, 1 acrealamendolara.tk, 1 acreinfoco.com, 1 @@ -6079,7 +6034,6 @@ 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 @@ -6122,13 +6076,14 @@ actionraingutters.com, 1 actionsack.com, 1 actionsandreactions.com, 1 -actionsecuritycameras.com, 1 actionverb.com, 1 actisgolf.com, 1 actiumhealth.com, 0 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 @@ -6184,7 +6139,6 @@ actro.ga, 1 actro.gq, 1 actronx.tk, 1 -actserv.co.ke, 1 actsofkindness.org, 1 actsofsilence.com, 1 actu-itech.cf, 1 @@ -6199,10 +6153,12 @@ 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 @@ -6217,7 +6173,6 @@ acupuncture.ml, 1 acupuncturecornwall.co.uk, 1 acupuncturefoundation.com, 1 -acupuncturefoundation.org, 1 acupuntura.coach, 1 acupuntura.doctor, 1 acupuntura.institute, 1 @@ -6245,6 +6200,7 @@ 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 @@ -6258,6 +6214,7 @@ 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 @@ -6269,7 +6226,7 @@ adachi.work, 1 adacomputerscience.org, 1 adacprod.fr, 1 -adad95.de, 1 +adad95.de, 0 adadimall.com, 1 adaera.com, 1 adaeze-wolf.com, 1 @@ -6277,6 +6234,7 @@ adaircomo.gov, 1 adaircosomo.gov, 1 adalabtech.com, 1 +adalie.me, 1 adalis.org, 1 adalite-staging-testnet.herokuapp.com, 1 adalpha.tech, 1 @@ -6301,6 +6259,7 @@ adamfontenot.com, 1 adamgibbins.com, 1 adamh.us, 1 +adamiskandar.com, 1 adamj.eu, 1 adamjoycegames.co.uk, 1 adamkissee.com, 1 @@ -6324,7 +6283,6 @@ adamscountyne.gov, 1 adamscountypa.gov, 1 adamscs.com, 1 -adamshemrent.se, 1 adamsmithsociety.com, 1 adamstas.com, 1 adamsweb.tk, 1 @@ -6339,6 +6297,7 @@ 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 @@ -6375,7 +6334,6 @@ adblockextreme.net, 1 adblockextreme.org, 1 adbw.xyz, 1 -adc-dentalcare.com, 0 adc64.com, 1 adceuta.tk, 1 adcoglazing.co.uk, 1 @@ -6400,10 +6358,10 @@ 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 @@ -6483,6 +6441,7 @@ adf.africa, 1 adf.gov, 1 adfc-nrw.de, 1 +adfconsumer.gov.au, 1 adfisicateca.org, 1 adflegal.org, 0 adfs.pro, 1 @@ -6497,7 +6456,6 @@ adh.org.au, 1 adhadse.com, 1 adhap.fr, 1 -adhd-explained.com, 1 adhd-inattentive.com, 1 adhdgroup.org, 1 adhdyoga.ca, 1 @@ -6546,7 +6504,6 @@ adjustablebeds.com.au, 1 adjustablebeds.org, 1 adjutor.xyz, 1 -adk-wohnungsaufloesung.berlin, 1 adkinvest.co.il, 1 adld.center, 1 adlerneves.com, 1 @@ -6555,6 +6512,7 @@ adlerosn.com.br, 1 adlershop.ch, 1 adlignum.se, 1 +adlims.com, 1 adliomar.tk, 1 adm-sarov.ru, 1 admac.co.uk, 1 @@ -6656,10 +6614,9 @@ adorkable.social, 1 adorned.ga, 1 adoropets.com.br, 1 -adotta.me, 1 adoucishop.fr, 1 +adownloader.org, 1 adp.fr, 1 -adphosting.it, 1 adphotography.pl, 1 adpot.xyz, 0 adquest.ro, 1 @@ -6709,6 +6666,7 @@ adriarae.xyz, 1 adriatika.tk, 1 adriatrans.ga, 1 +adridri.fr, 1 adrienfelsmann.fr, 1 adrieng.fr, 1 adrienkohlbecker.com, 1 @@ -6721,7 +6679,6 @@ adrino.ml, 1 adrup.com, 1 ads-kuwait.net, 1 -ads.gd, 1 adsb.lol, 1 adsbouncycastles.co.uk, 1 adscss.eu, 1 @@ -6806,7 +6763,7 @@ advancedelectricalservicesqld.com.au, 1 advancedfueladditives.com, 1 advancedhealthmedical.com.au, 0 -advancedinteg.com, 0 +advancedinteg.com, 1 advancedkiosks.com, 1 advancednetflowtraining.com, 1 advancedoneroofing.com, 1 @@ -6839,6 +6796,7 @@ advarra.com, 1 advasa.jp, 0 advasa.net, 1 +advayan.com, 1 advbizintel.com, 1 advena.com.au, 1 advenacs.com, 1 @@ -6890,6 +6848,7 @@ adverts.ie, 1 advery.tk, 1 advgrow.com, 1 +advi.no, 1 advice24.tk, 1 advicepay.com, 0 advicepharma.com, 1 @@ -6912,7 +6871,6 @@ advocatae.com, 1 advocatburo.tk, 1 advocateanakha.com, 1 -advocatize.com, 1 advocator.ca, 1 advoervice.ga, 1 advogadavaleria.com.br, 1 @@ -6949,6 +6907,7 @@ advu.no, 1 adware.pl, 0 adwokat-kielce.com.pl, 1 +adwokat.bydgoszcz.pl, 1 adwokatkosterka.pl, 1 adwokatzdunek.pl, 1 adwork.net, 1 @@ -7015,6 +6974,7 @@ aegisys.com, 1 aegon.hu, 0 aegrel.ee, 1 +aegrel.eu, 1 aeh5134.cc, 1 aeha.tk, 1 aehe.us, 1 @@ -7026,6 +6986,7 @@ aejaca.com, 1 aeksantcugat.tk, 1 aeksistem.com, 1 +aekwien.at, 1 aelgame.com, 1 aelia.cc, 1 aelia.im, 1 @@ -7035,7 +6996,7 @@ aelyapi.com, 1 aenes.com, 1 aeolservice.es, 1 -aeon.co, 0 +aeonbig.com.my, 1 aeonc.com, 1 aeonct.org, 1 aeonfoundation.my, 1 @@ -7065,9 +7026,10 @@ aerobiomasa.com, 1 aerobotz.com, 0 aeroclub-tolhuin.tk, 1 +aeroct.com.br, 1 aerodoc.com, 1 aeroeggtech.com, 1 -aeroelectronics.net, 1 +aeroelectronics.net, 0 aeroequity.com, 1 aeroexpress.tk, 1 aerofarms.com, 1 @@ -7105,6 +7067,7 @@ aertel.ie, 1 aerztezentrum.io, 1 aes.org.pt, 1 +aesencryption.org, 1 aesi.bg, 1 aesm.limited, 1 aesm.ltd, 1 @@ -7280,10 +7243,8 @@ 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 @@ -7300,6 +7261,7 @@ aforadearrastu.tk, 1 aforism.tk, 1 afp548.com, 1 +afrahalurdun.online, 1 afreelancersworld.com, 1 afreserve.com, 1 afreshperspective.com, 1 @@ -7320,7 +7282,6 @@ africanmangoforum.ga, 1 africanmangoforum.gq, 1 africansafaris.co.nz, 1 -africantourer.com, 1 africaone-publishing.com, 1 afrijet.ga, 1 afrimarket.ci, 1 @@ -7338,12 +7299,12 @@ afroenergy.org, 1 afrogospel.tk, 1 afroludi.tk, 1 -afropages.fr, 1 afroto.com, 0 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 @@ -7409,7 +7370,6 @@ ag888818.com, 1 ag889.com, 1 ag8891.com, 1 -ag8vip.com, 1 ag918.cc, 0 ag918.co, 1 ag918.top, 1 @@ -7492,7 +7452,6 @@ agencetourismemali.ml, 1 agenciaalafia.com.br, 1 agenciacanina.tk, 1 -agenciacoder.com, 1 agenciacorujadesign.com.br, 1 agenciacrown.es, 1 agenciadeperformanceembh.com, 1 @@ -7534,11 +7493,12 @@ agentesevillanocooper.tk, 1 agentfire.com, 1 agentfirewall.com, 1 +agenticdelivery.se, 1 +agenticsoftwarefactory.com, 1 agentpak.com, 1 agentpatrolest.ga, 1 agentpoint.website, 1 agentprovocateur.com, 1 -agentrisk.com, 0 agentsmith.tk, 1 agentum.ga, 1 agentur-etcetera.de, 1 @@ -7570,7 +7530,6 @@ aghayeva-edler.de, 1 aghdirfood.com, 1 agiairini.cz, 1 -agic-geneve.ch, 1 agiftinside.com, 1 agilan.nl, 1 agile.coach, 1 @@ -7597,6 +7556,7 @@ agingstop.net, 1 aginion.com, 1 aginion.net, 1 +aginternational.org, 1 agioanmark.tk, 1 agiosthomas.tk, 1 agirc-arrco.fr, 1 @@ -7639,6 +7599,7 @@ agnesmatilda.tk, 1 agnestakeaway.be, 1 agneta.tk, 1 +agnify.io, 1 agnosia.tk, 1 agnosticism.tk, 1 agnusbostel.tk, 1 @@ -7672,7 +7633,6 @@ agpandit.in, 1 agph.org, 1 agpideas.com, 1 -agpsn.com, 1 agr.asia, 1 agralines.tk, 1 agrarking.com, 1 @@ -7680,6 +7640,7 @@ agrarkredit.de, 1 agravery.com, 1 agraw.tk, 1 +agrcars.com, 1 agregator.tk, 1 agremo.com, 1 agreor.com, 1 @@ -7803,7 +7764,6 @@ ahccorleone.tk, 1 ahcfacilities.com, 1 ahcpr.gov, 1 -ahd-cyber.org, 1 ahd.com, 0 ahealthyjourney.ca, 1 ahegaoroulette.com, 1 @@ -7865,6 +7825,7 @@ ahorroenergeticoenhogares.es, 1 ahosamuel.com, 1 ahouansou.cz, 1 +ahqf.com, 1 ahrefs.com, 1 ahroproject.org, 1 ahrq.gov, 1 @@ -7883,6 +7844,8 @@ 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-genit.com, 1 ai-kyousei.com, 1 @@ -7893,12 +7856,12 @@ 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 +ai47.us, 1 aiabs.co, 1 aiaccinu.eu.org, 1 aiag.org, 1 @@ -7909,6 +7872,7 @@ aiasnet.it, 1 aiat.net, 1 aiatsis.gov.au, 1 +aiavt-stg-01.com, 1 aib.gov.uk, 1 aibes.org, 1 aibili.pt, 1 @@ -8041,6 +8005,7 @@ aina.moi, 1 ainameals.com, 1 ainamoroms.com, 1 +ainativedata.io, 1 aine.com.br, 1 ainewsto.com, 0 ainfographie.com, 1 @@ -8057,7 +8022,6 @@ aion.fi, 1 aiosetups.com, 1 aiot.pw, 1 -aipbarcelona.com, 1 aipcardio.hu, 1 aipderm.eu, 1 aipderm.ro, 1 @@ -8073,7 +8037,6 @@ aiprime.solutions, 1 aiproductivelab.com, 1 aipulse.org, 1 -aiqinggu.com, 1 aiqingli.com, 1 air-business.tk, 1 air-clan.tk, 1 @@ -8163,11 +8126,10 @@ airburners.com, 1 airburners.net, 1 aircareair.tk, 1 -aircheapfare.com, 1 -aircheapfares.com, 1 aircomet.tk, 1 airconditioning.tk, 1 airconditioningcondensers.tk, 1 +airconditioningservicejohannesburg.co.za, 1 airconsboksburg.co.za, 1 airconservicingcapetown.co.za, 1 airconsfourways.co.za, 1 @@ -8176,6 +8138,7 @@ aircraftspruce.com, 1 aircrewdepot.com, 1 aircrewportpages.com, 1 +aircrewtrac.com, 1 airday.tk, 1 airdeer.com, 1 airdropkings.com, 1 @@ -8186,21 +8149,15 @@ airensmuseum.com, 1 aires-autoroute-areas.com, 1 airethilien.tk, 1 -aireuropeflights.com, 1 airez.tk, 1 airfan.cf, 1 airfarecheapdeal.com, 1 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 airfareshotels.com, 1 airfarestoamerica.com, 1 airfarestogermany.com, 1 @@ -8208,7 +8165,6 @@ airfaretousa.com, 1 airfield.gq, 1 airfix.com, 1 -airflightsdeals.com, 1 airflowterravista.com, 1 airflux.fr, 1 airforce-technology.com, 1 @@ -8239,7 +8195,6 @@ airlinebe.com, 1 airlineblue.com, 1 airlinebookingtickets.com, 1 -airlinebuyticket.com, 1 airlineby.com, 1 airlinec.com, 1 airlinecheapflightinternationalticket.com, 1 @@ -8257,9 +8212,7 @@ 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 @@ -8277,7 +8230,6 @@ airlinenews.tk, 1 airlinenewzealand.com, 1 airlineoil.com, 1 -airlinep.com, 1 airlineplanetickets.com, 1 airlinesair.com, 1 airlinesamsterdam.com, 1 @@ -8324,7 +8276,6 @@ airlinesphonenumber.com, 1 airlinespolicyhub.com, 1 airlinessanfrancisco.com, 1 -airlinesseating.com, 1 airlinessingapore.com, 1 airlinestexas.com, 1 airlinesto.com, 1 @@ -8342,7 +8293,6 @@ airlinestolasvegas.com, 1 airlinestolosangeles.com, 1 airlinestomiami.com, 1 -airlinestoorlando.com, 1 airlinestophoenix.com, 1 airlinestosingapore.com, 1 airlinestoturkey.com, 1 @@ -8353,11 +8303,8 @@ 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 @@ -8476,6 +8423,7 @@ aiscale.fr, 1 aischannel.com, 1 aischepervers-porn.com, 1 +aisdent.com, 1 aisdr.com, 1 aisedomains.ga, 1 aisera.com, 1 @@ -8483,6 +8431,7 @@ aishima.com, 1 aisi316l.net, 1 aising.jp, 1 +aisolutions-hammer.at, 1 aisp.sg, 1 aispirit.tk, 1 aisrvs.net, 1 @@ -8562,6 +8511,7 @@ ajfite.com, 0 ajforum.tk, 1 ajhstamps.co.uk, 1 +ajial212.com, 1 ajiboye.com, 1 ajinabraham.com, 1 ajito.pw, 1 @@ -8622,15 +8572,16 @@ 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, 1 -akamspairyourphone.com, 1 +akamsnetworksetup.com, 0 +akamspairyourphone.com, 0 akamsphonelink.com, 1 akamu.de, 0 -akaphonelink.com, 1 +akaphonelink.com, 0 akaratasker.com, 1 akari.net, 1 akariforge.com, 1 @@ -8648,6 +8599,7 @@ akasi.cf, 1 akasmedikal.com, 1 akasmedikal.net, 1 +akatdo.com, 1 akatsukainuneko.co.jp, 1 akaxaka.tk, 1 akaziya.cf, 1 @@ -8658,7 +8610,6 @@ akcenty.com.ua, 1 akcevybuch.cz, 1 akconciergerie.fr, 1 -akcpetinsurance.com, 1 akcs.one, 1 akdenizecza.com, 1 akdenizecza.com.tr, 1 @@ -8702,7 +8653,7 @@ akimbocore.com, 1 akimeder.tk, 1 akimitsu.co.jp, 1 -aking.com.my, 1 +aking.com.my, 0 akinoiro.ru, 1 akinokae.de, 1 akiranet.tk, 1 @@ -8711,7 +8662,7 @@ akita-stream.com, 1 akitacyber.com, 1 akiym.com, 1 -akj.io, 0 +akj.io, 1 akkerwinde.tk, 1 akko.wtf, 1 akkoniq.com, 1 @@ -8747,19 +8698,18 @@ 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 @@ -8795,7 +8745,6 @@ akumat.eu, 1 akumat.pl, 1 akumbittiyolyardim.com, 1 -akupunktur-akupunktoer.dk, 0 akupunktura.tk, 1 akura.cf, 1 akura.tk, 1 @@ -8830,7 +8779,7 @@ al3ilm.com, 1 al3xpro.com, 1 al911.net, 1 -alaan.com, 1 +alaan.com, 0 alaattinkaraca.tk, 1 alab.space, 1 alabalaporto.tk, 1 @@ -8892,10 +8841,10 @@ aland.co.uk, 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 @@ -8947,6 +8896,7 @@ alb-flirt.de, 1 alb-media.tk, 1 alba.ovh, 1 +alba24.ro, 1 albaadani.com, 1 albadon.tk, 1 albaform.com, 1 @@ -8984,7 +8934,6 @@ albatrostercume.com, 1 albauroman.com, 1 albayan.ae, 1 -albeelaw.com, 1 albemarlehistory.org, 1 albendazole.ga, 1 albendazole.ml, 1 @@ -9054,7 +9003,6 @@ alcarpentry.co, 1 alcatraz-webdesign.tk, 1 alcatrazeast.com, 1 -alcatraztourtickets.com, 1 alchakov.tk, 1 alchemist-heaven.tk, 1 alchemisten.tk, 1 @@ -9067,6 +9015,7 @@ alchemytechevents.com, 1 alchemytechonline.com, 1 alchemytechresource.com, 1 +alchemytechsource.com, 1 alchemywellness.health, 1 alchevsk-news.ru, 1 alchevsknews.ru, 1 @@ -9098,7 +9047,6 @@ aldenstate.com, 1 alderautomation.ca, 1 alderimages.com, 1 -aldersgatemontgomery.org, 1 aldervets.co.uk, 1 aldevadigital.com, 1 aldien.com.br, 1 @@ -9128,7 +9076,6 @@ alehinta.fi, 1 alejandrocruz.es, 0 alejandromateoconde.tk, 1 -alejandromillalen.com, 1 alejandromunoz.es, 1 alejandropernett.tk, 1 alejandrophones.com.mx, 1 @@ -9151,7 +9098,6 @@ alelectricista.es, 1 alelin.ml, 1 alemagia.pl, 1 -aleman-auto.com, 1 alemangranada.tk, 1 alen.nl, 1 alena.ga, 1 @@ -9189,6 +9135,7 @@ alesraa-academy.com, 1 alesryjacek.cz, 1 aless.io, 1 +alessalopez.exposed, 1 alessandraoliva.tk, 1 alessandrobasi.it, 1 alessandrolapiana.com, 1 @@ -9196,7 +9143,6 @@ alessandroz.ddns.net, 1 alessiacornici.com, 1 alessiomesiano.com, 1 -alestarestaurant.com, 1 alesto-mail.eu, 1 alesto.at, 1 aleszejdl.cz, 1 @@ -9283,6 +9229,7 @@ alexhaack.de, 1 alexhaidar.com, 1 alexhaydock.co.uk, 1 +alexhaydock.com, 1 alexhd.de, 1 alexhodgkinson.tk, 1 alexia.fr, 1 @@ -9293,7 +9240,6 @@ alexismeza.com.mx, 1 alexismeza.dk, 1 alexismeza.es, 1 -alexisparcellsmd.com, 0 alexispoficial.tk, 1 alexisquero.tk, 1 alexisshaw.com, 1 @@ -9412,6 +9358,7 @@ algerie360.com, 1 alghanimcatering.com, 1 algibranstore.id, 1 +algo2world.com, 1 algoarmada.com, 1 algoentremanos.com, 1 algoesolutions.com, 1 @@ -9439,7 +9386,6 @@ algotest.in, 1 algrape.com, 1 alhamedeia.tk, 1 -alhayes.com, 1 alhidayahkg.com, 1 alhomaidani.com, 1 alhost.ml, 1 @@ -9504,6 +9450,7 @@ alifeinbinary.com, 1 alight.ge, 1 alightwell.com, 1 +align-pilates.lt, 1 align27.com, 1 alignancekinesiologie.fr, 1 alignedchiro.org, 1 @@ -9561,7 +9508,7 @@ alistaku.tk, 1 alistar.ltd, 1 alistelab.com, 1 -alistshop.com, 1 +alistshop.com, 0 alisufyan.cloud, 1 alisufyan.net, 1 alisufyan.pk, 1 @@ -9629,8 +9576,6 @@ 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 @@ -9669,10 +9614,12 @@ 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 allanta.be, 1 allapresenter.com, 1 @@ -9681,7 +9628,6 @@ allas.se, 1 allas.tk, 1 allasianpics.com, 1 -allatoonadiesel.com, 0 allattaremoda.com.br, 1 allauthor.com, 1 allballband.com, 1 @@ -9710,7 +9656,6 @@ allcloud.com, 1 allcooking.tk, 1 allcookingclub.com, 1 -allcouponat.com, 1 allcourts.tk, 1 allcoveredbyac.com, 1 allcrimea.tk, 1 @@ -9749,6 +9694,7 @@ allemanniamarburg.at, 1 allemoz.com, 1 allemoz.fr, 1 +allen-health.co.uk, 1 allenacampbell.tk, 1 allenarchive.com, 1 allencountyinvoters.gov, 1 @@ -9770,12 +9716,9 @@ 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 @@ -9824,7 +9767,6 @@ 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 @@ -9837,10 +9779,12 @@ 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 @@ -9862,8 +9806,10 @@ 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 @@ -9878,6 +9824,44 @@ 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 @@ -9976,7 +9960,6 @@ allshiftmed.com, 1 allshousedesigns.com, 0 allslots777.com.pk, 1 -allslotspak.com, 1 allsmart.gr, 1 allsouls.co.za, 1 allspinecare.com, 1 @@ -10021,6 +10004,7 @@ alluremedicalaesthetic.com, 1 allurescarves.com, 0 alluringdesigns.tk, 1 +alluriva.ch, 1 alluvion.studio, 1 allvideofoot.tk, 1 allvips.ru, 1 @@ -10050,17 +10034,20 @@ 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 almanshood.com, 1 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 @@ -10126,6 +10113,7 @@ alojadalu.com.br, 1 alola.co.uk, 1 alolabor.org, 1 +aloma.io, 1 alomch.gq, 1 alomendia.tk, 1 alomobittersgh.com, 1 @@ -10148,6 +10136,7 @@ alotso.com, 1 alottajava.com, 1 alov.blog, 1 +alovesinh.com, 1 alp-eastlink-portal-model.azurewebsites.net, 1 alp-samsungca-portal-model.azurewebsites.net, 1 alp-spectrum-portal-model.azurewebsites.net, 1 @@ -10185,14 +10174,12 @@ alpesc.com, 1 alpetrov.cf, 1 alpha-ag.ru, 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.ch, 1 -alphaagency360.com, 1 alphaassurances.com, 1 alphabet-z.xyz, 1 alphabetsigns.com, 1 @@ -10260,6 +10247,7 @@ alpinepubliclibrary.org, 1 alpinestarmassage.com, 1 alpinewy.gov, 1 +alplink.eu, 1 alplogopedia.it, 1 alpparts.com, 1 alpstar.kiev.ua, 1 @@ -10274,7 +10262,6 @@ alrdc.com, 1 alre-outillage.fr, 1 alredaldaem.com, 1 -alredho.com, 1 alrehmantech.tk, 1 alrioart.com, 1 alroniks.com, 0 @@ -10510,6 +10497,7 @@ alvinalvelino.com, 1 alvinaonline.com, 1 alvirzy.tk, 1 +alvixinsurance.com, 1 alvn.ga, 1 alvorada-rs.com.br, 1 alvordschools.org, 1 @@ -10531,7 +10519,6 @@ aly.pet, 1 alyafood.com, 1 alykkelife.com, 1 -alyoung.com, 1 alyssamilano.tk, 1 alyusr.com.sa, 1 alyx.sh, 1 @@ -10587,6 +10574,7 @@ amaisd.org, 1 amaiz.com, 0 amalbansode.com, 1 +amaleki.com, 1 amalelmohtar.com, 0 amalfi5stars.com, 1 amalfipositanoboatrental.com, 1 @@ -10756,8 +10744,10 @@ amdental.lv, 1 amdiagnostics.com.au, 1 amdm.ru, 1 +amdmachines.com, 1 amdrumors.com, 1 amdukis-bordercollies.tk, 1 +amebaiot.com, 1 amebavirtual.tk, 1 amebolounge.tk, 1 amechancez.work, 1 @@ -10769,13 +10759,13 @@ ameego.nl, 1 ameego.org, 1 ameen.tech, 1 -ameenaccounting.co.za, 1 ameeradubai.com, 1 amees.me, 0 ameho.me, 0 ameisenbaer.tk, 1 amelanchiers.tk, 1 amelia-wedding.pl, 1 +ameliagb.com, 1 ameliatillbryssel.se, 1 amelielei.net, 1 amello.de, 1 @@ -10804,14 +10794,13 @@ 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 americandisinfectingassociation.com, 1 americandisinfectingassociation.org, 1 americandrugrehabs.com, 1 @@ -10830,7 +10819,6 @@ americanmessaging.net, 1 americanmusical.com, 0 americanoncology.com, 1 -americanpointer.co, 1 americanpop.be, 1 americanpridefund.com, 1 americanreels.com, 1 @@ -10936,7 +10924,6 @@ amimi.tk, 1 amimore.ru, 1 aminafrance.com, 1 -aminatakondeh.me, 1 amineptine.com, 1 aminfarhoodi.tk, 1 aminformatica.ml, 1 @@ -10957,7 +10944,6 @@ amirasyraf.com, 0 amirautos.com, 0 amirhanova-a.ru, 1 -amirhosseinabutalebi.com, 1 amirkaraj.tk, 1 amis-du-cinema.com, 1 amis-sh.fr, 1 @@ -10982,7 +10968,6 @@ amliorefemme.tk, 1 amlisten.com, 1 amlops.com.au, 1 -amm-ceramics.com, 1 ammanagingdirectors.com, 1 amministratore.biz, 1 amministratore.roma.it, 1 @@ -11008,7 +10993,7 @@ amobileway.co.uk, 1 amoc.org, 1 amodeocarlo.com, 1 -amoderm.com, 1 +amoebababy.eu, 1 amoeboids.com, 1 amogus.cloud, 1 amokinio.com, 1 @@ -11114,7 +11099,6 @@ amsel305nc.ddnss.de, 1 amsev.de, 1 amsmart.hu, 1 -amsochile.cl, 1 amstelradio.tk, 1 amstelveentje.nl, 1 amsterdam.nl, 1 @@ -11265,8 +11249,8 @@ 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 @@ -11368,7 +11352,6 @@ andantepiano.studio, 1 andefang.com, 1 andel.info, 0 -andercloud.de, 1 anders.hamburg, 1 andersbedraad.nl, 1 anderskp.dk, 0 @@ -11394,6 +11377,7 @@ andhrawishesh.com, 1 andiamoluggage.com, 1 andibo.net, 1 +andin.art, 1 andiplusben.com, 1 andis.com, 1 andisadhdspot.com, 1 @@ -11402,7 +11386,6 @@ andoaingo-gaztetxea.tk, 1 andobil.com, 1 andoms.fi, 1 -andonivr.com, 1 andonix.com, 1 andorraimperial.tk, 1 andorrainsiders.com, 1 @@ -11583,6 +11566,8 @@ androscoggincountyema.gov, 1 androskylugo.com, 0 androtix.com, 1 +andrzej-na-rowerze.pl, 1 +andrzejnarowerze.pl, 1 andscape.com, 1 andsecure.ch, 0 andthisismyodyssey.tk, 1 @@ -11649,7 +11634,6 @@ anextraordinaryday.net, 1 anfadern.com, 1 anfieldbc.co.uk, 1 -anfilada.info, 1 anfr.fr, 1 anfra.fi, 1 angablade.com, 1 @@ -11657,6 +11641,7 @@ 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 @@ -11701,7 +11686,6 @@ angelsgirl.eu.org, 1 angelshha.com, 1 angelsmile.tk, 1 -angelsmithphotography.com, 1 angelspetfuneralhome.com, 1 angelswar.ga, 1 angeltorri.tk, 1 @@ -11712,7 +11696,7 @@ angeredmoon.tk, 1 angermanalvorna.tk, 1 angestoepselt.de, 1 -angie-webdesign.ch, 0 +angie-webdesign.ch, 1 angiejones.com, 1 angielynx.net, 1 angiesite.tk, 1 @@ -11721,6 +11705,7 @@ angione.ca, 1 angione.se, 1 angisonline.cz, 1 +angiszi.hu, 1 angkapaito.net, 1 angkasa.net.id, 1 anglarsports.com, 1 @@ -11761,6 +11746,7 @@ anhembi.br, 1 anhoa.edu.vn, 1 anhtus.com, 1 +anhtus.vn, 1 ani-man.de, 1 aniababan.com, 1 aniabuduje.pl, 1 @@ -11774,7 +11760,6 @@ aniforprez.net, 1 anightmareonelmstreet.tk, 1 anihilated.tk, 1 -anihime.com, 1 anihonetwallpaper.com, 1 anikajulie.com, 1 anikaras.ga, 1 @@ -11927,7 +11912,6 @@ aniwhen.com, 1 aniya.moe, 1 anja-vastgoed.nl, 1 -anjajoerger.life, 1 anjansundaram.com, 1 anjara.eu, 1 anjocerdena.com, 1 @@ -11957,6 +11941,7 @@ 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 @@ -11974,6 +11959,7 @@ ankiuser.net, 1 ankiweb.net, 1 anklepainclinic.sg, 1 +ankorltd.ru, 1 ankos.cf, 1 ankosofttech.com, 1 ankosofttech.de, 1 @@ -12043,6 +12029,7 @@ annettewindlin.ch, 1 annevankesteren.nl, 1 annevankesteren.org, 1 +annexvault.com, 1 anney-life.com, 1 anniangel-porn.com, 1 annicascakes.nl, 1 @@ -12071,7 +12058,6 @@ annu.tk, 1 annuaire-auto-ecole.com, 1 annuaire-express.tk, 1 -annuaire404.com, 1 annual.ga, 1 annualreportowl.com, 1 annuire.org, 1 @@ -12137,9 +12123,7 @@ anouncer.ga, 1 anova.com, 1 anoxinon.media, 1 -anp.it, 1 anpaju.gq, 1 -anpigabon.ga, 1 anquankongjian.com, 1 anquanssl.com, 1 ans-ge.ch, 0 @@ -12199,6 +12183,7 @@ antarcti.co, 1 antarctida.tk, 1 antaresmedia.com.py, 1 +antaressystems.net, 1 antarktida.ru, 1 antarktida.tk, 1 antarlina.com, 1 @@ -12319,7 +12304,6 @@ antihistory.ml, 1 antihype.space, 1 antijob.tk, 1 -antik-trodelmarkt.de, 1 antikfloors.ga, 1 antikfloors.gq, 1 antikfloors.ml, 1 @@ -12588,6 +12572,7 @@ apachetoday.com, 1 apadmi.com, 0 apadrinaunolivo.org, 1 +apaeilha.org.br, 1 apaesthetics.com, 1 apaleo.com, 1 apambiente.pt, 1 @@ -12655,8 +12640,6 @@ 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 @@ -12685,13 +12668,13 @@ aphelis.net, 1 aphorismen-archiv.de, 1 api-agri.ga, 1 -api-bitrefill.com, 1 api-hany.cf, 1 api.biz.tr, 1 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 @@ -12704,7 +12687,6 @@ apico-fish.ru, 1 apicoltore.it, 1 apiculture.net, 1 -apido.de, 1 apienergisahomol.com, 1 apifiregroup.com, 1 apigb.com, 1 @@ -12794,6 +12776,7 @@ apokalipsis.tk, 1 apola.best, 1 apolitical.co, 1 +apolloautopecas.com.br, 1 apollodiet.com, 1 apollogames.cz, 1 apolloheatingandair.com, 0 @@ -12808,7 +12791,6 @@ apollyon.work, 1 apologrouptv.net, 1 apoly.de, 1 -aponkral.com, 1 aponkral.com.tr, 1 aponkral.dev, 1 aponkral.net, 1 @@ -12881,7 +12863,6 @@ 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 @@ -12898,7 +12879,6 @@ appen.com, 1 appen.com.cn, 1 appengine.google.com, 1 -appetiser.com.au, 1 appetto.co, 1 appfollow.io, 1 appgeek.com.br, 1 @@ -12972,6 +12952,7 @@ applicationtracker.com, 1 applied-anthropology.com, 1 applied-privacy.net, 1 +appliedinnovationinc.com, 1 appliedmaths.lk, 1 appliedprinciples.co.ke, 1 appliedresearchanddesign.com, 1 @@ -12981,6 +12962,7 @@ applique.co.jp, 0 appliquette.com.au, 1 appllio.com, 1 +applogytel.es, 1 apploye.com, 0 apply.eu, 1 apply55gx.com, 1 @@ -13059,7 +13041,6 @@ appunwrapped.com, 1 appveyor.com, 1 appwardbeta.com, 1 -appwhats.space, 0 appworld.ga, 1 appwrk.com, 1 appypie.com, 1 @@ -13096,7 +13077,6 @@ apropotv.tk, 1 aprosoftwaresolutions.com, 1 aprovatotal.com.br, 1 -aprpullmanportermuseum.org, 0 aprsdroid.org, 1 apruebame.tech, 1 apruvd.com, 1 @@ -13146,13 +13126,14 @@ apw-dortmund.de, 1 aqarategypt.com, 1 aqarbab.com, 1 +aqas-arch.de, 1 aqas.de, 1 aqdlt.tv, 1 aqdun.com, 0 aqenglish.pk, 1 aqihub.info, 1 aqlivia.com, 1 -aqmetrics.com, 1 +aqmetrics.com, 0 aqqrate.com, 1 aqss.rs, 1 aqu.com, 1 @@ -13248,13 +13229,13 @@ aquivardenafilo.gq, 1 aqusto.pl, 1 aqworlds.cf, 1 +aqy.fr, 1 ar-1xbet.com, 1 ar-android.com, 1 ar-informatique.ch, 0 ar-oma.tk, 1 ar-vernet.fr, 1 ar.al, 1 -ara.wales, 1 araadvocats.net, 1 arab-drama.tv, 1 arab-romance.tk, 1 @@ -13330,6 +13311,7 @@ arasozgun.net, 1 aratum.com, 1 aravalionyx.com, 1 +aravana74.ru, 1 aravindhebbali.com, 1 aravitor.com, 1 aravo.com, 1 @@ -13347,6 +13329,7 @@ arbeitslosenverwaltung.de, 1 arbejdsdag.dk, 1 arbeta.re, 0 +arbitix.io, 1 arbitmax.com, 1 arbitrarion.com, 1 arbitrary.ch, 1 @@ -13358,6 +13341,7 @@ arbolesdenavidad.info, 1 arbolesdenavidad.site, 1 arbophil.fr, 1 +arbopolar.de, 1 arborio.com.ua, 1 arboristadvice.com, 1 arboristic.de, 1 @@ -13477,6 +13461,7 @@ arcourts6th.gov, 1 arcovix.com, 1 arcproject.org.uk, 1 +arcpx.com, 1 arcsar.eu, 1 arcserv.com, 1 arcskoru.com, 1 @@ -13503,10 +13488,14 @@ ardakannews.tk, 1 ardania.de, 1 ardaninmutfagi.com, 1 +ardeal24.ro, 1 ardeche-guide.com, 1 ardennes.com, 1 +ardens.co.uk, 1 ardentinsure.com.au, 1 +ardentsia.com, 1 ardenwolfsky.com, 1 +ardhi-dz.com, 1 arditech.ml, 1 ardmoreok.gov, 1 ardo.tk, 1 @@ -13525,7 +13514,6 @@ area51bit.it, 1 areacinquentaeum.tk, 1 areacode231.com, 1 -areaf5.es, 1 areallyneatwebsite.com, 1 arealsultan.ga, 1 areanet.tk, 1 @@ -13632,7 +13620,6 @@ arhitectura.ru, 1 arhivpalanka.rs, 1 ari.beauty, 1 -ari.gg, 1 ari.lt, 1 aria-best.ru, 1 aria-best.su, 1 @@ -13648,8 +13635,6 @@ 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 @@ -13735,6 +13720,7 @@ arjunasdaughter.pub, 1 arjunvedbrat.com, 1 arjweb.co.uk, 1 +ark.swiss, 1 ark4nyc.com, 1 arkaan.tk, 1 arkadaslik.tk, 1 @@ -13769,7 +13755,6 @@ arknodejs.com, 1 arkomaok.gov, 1 arks.cards, 1 -arksan.com.tr, 1 arktci.com, 1 arkutinofamilyresort.com, 1 arlatools.com, 1 @@ -13793,7 +13778,6 @@ armadillogaragedoors.com, 1 armadilloprojects.co.uk, 1 armadilloroofing.co.uk, 1 -armadilloscubatx.com, 1 armado.tk, 1 armagangultekin.av.tr, 1 armageddonclan.tk, 1 @@ -13922,7 +13906,6 @@ aromaimportado.com.br, 1 aromaonlinestore-korat.com, 1 aromatherapy.cf, 1 -aromatlas.com, 1 aromatraining.com, 1 aromavadisi.com, 1 aromex.ml, 1 @@ -13977,6 +13960,7 @@ arriveguidelines.org, 1 arrivehealth.com, 1 arrmaforum.com, 1 +arroapp.com.ar, 1 arroba.digital, 1 arrotatore.roma.it, 1 arrow-api.nl, 1 @@ -14033,6 +14017,7 @@ art-khotyn.tk, 1 art-kuchni.tk, 1 art-news.tk, 1 +art-okon.ru, 1 art-online.tk, 1 art-pix.de, 1 art-pix.net, 1 @@ -14092,6 +14077,7 @@ artel.od.ua, 1 artelignum.tk, 1 artelista.com, 1 +artem.se, 0 artembusiness.tk, 1 artemida-dot.tk, 1 artemis-fowl.tk, 1 @@ -14122,7 +14108,6 @@ artetculture.tk, 1 artevos.com, 1 artevos.de, 1 -artex.com.br, 1 artexhibition.jp, 1 artextasia.com, 1 artfabrics.com, 1 @@ -14170,6 +14155,7 @@ artificiala.gq, 1 artificialaxis.com, 1 artificialdiffusion.com, 1 +artificialheights.com, 1 artificialintelligenceproject.com, 1 artificialplants.tk, 1 artificialpoetry.com, 1 @@ -14189,6 +14175,7 @@ artisan-ravalement-facade.fr, 1 artisan.tk, 1 artisanat2france.fr, 1 +artisanconstructionco.com, 1 artisanhd.com, 1 artisanportrait.com, 1 artisansoftaste.com, 1 @@ -14260,6 +14247,7 @@ arts.gov, 1 artsalon.tk, 1 artscanvas.org, 1 +artshouse.com.au, 1 artsinbushwick.org, 1 artslife.com, 1 artsmagazine.com, 1 @@ -14379,7 +14367,6 @@ asadatec.de, 1 asaduddinowaisi.tk, 1 asafaweb.com, 1 -asafilm.co, 1 asafomba.com, 0 asahi-tax.or.jp, 1 asahiseikou.com, 1 @@ -14404,7 +14391,6 @@ asapboardshop.com, 1 asaphomeinspect.com, 1 asapp.com, 0 -asaprestoration247.com, 1 asara.tk, 1 asart.bg, 1 asas-tn.org, 1 @@ -14487,12 +14473,17 @@ 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 +ashargrosirparfum.com, 1 asharq.com, 1 ashastalent.com, 0 ashbee.buzz, 1 @@ -14517,10 +14508,12 @@ asheroto.com, 1 asherrit.com, 1 ashersec.com, 1 +ashersgrp.com, 1 ashesdiamonds.com, 1 ashesheriff.gov, 1 ashevillemenshealth.com, 1 ashfak.tk, 1 +ashfordcastle.com, 1 ashgroveclinic.com.au, 1 ashgw.me, 0 ashiba-kagu.com, 1 @@ -14559,10 +14552,8 @@ 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 @@ -14635,12 +14626,10 @@ askbill.org.uk, 1 askbrake.com, 1 askcaisse.com, 1 -askcascade.com, 0 askdeliver.tk, 1 asker-massasje.no, 1 askerweb.cf, 1 askeverythingonline.com, 1 -askeygeek.com, 1 askfoto.com, 1 askfront.com, 1 askgamblers.com, 1 @@ -14674,7 +14663,6 @@ aslia.no, 1 asliceofny.com, 1 asliving1.com, 1 -aslme.org, 1 aslsp.org, 1 asm.io, 1 asm13.org, 1 @@ -14862,6 +14850,7 @@ assured.se, 0 assuredallies.com, 1 assuredspc.com, 1 +assuretechnical.com, 1 assureuk.co.uk, 1 assusoft.eu, 1 assyriatwpmi.gov, 1 @@ -14902,6 +14891,7 @@ asterobot.net, 1 astettner.de, 1 asthamishra.com, 1 +asthene.com, 1 asthithwa.com, 1 asthma-explained.com, 1 asthowen.com, 1 @@ -15002,6 +14992,7 @@ astroze.it, 1 astrumadvies.nl, 1 astsummer.tk, 1 +asttu.org, 1 astucas.com, 1 astucedirecte.tk, 1 astucewebmaster.com, 1 @@ -15231,10 +15222,10 @@ 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 @@ -15300,7 +15291,6 @@ atlasuno.com, 1 atlaswu.com, 1 atletico-guacuano.tk, 1 -atletika.hu, 1 atletismomacotera.tk, 1 atlucknow.com, 1 atm-bur.ru, 1 @@ -15338,9 +15328,7 @@ 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 @@ -15370,10 +15358,10 @@ 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 @@ -15408,7 +15396,6 @@ attengo.ga, 1 attentioninsight.com, 1 attentionpleats.com.tw, 1 -attesawp.com, 1 atthehelmins.com, 1 attic-design.com, 1 atticinsulation-houston.com, 1 @@ -15445,7 +15432,6 @@ atulhost.com, 1 atumfire.ru, 1 atunel.tk, 1 -atvirtual.at, 1 atvlifesaver.net, 1 atvsafety.gov, 1 atwatermn.gov, 1 @@ -15473,7 +15459,6 @@ 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 @@ -15501,6 +15486,7 @@ aucklandcastles.co.uk, 1 aucneteurope.com, 1 aucoindufruit.fr, 1 +auction.com, 1 auctionbv.tk, 1 audacityland.com, 1 audencia.com, 0 @@ -15564,6 +15550,7 @@ 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 @@ -15575,7 +15562,6 @@ auenhof-agrar.de, 1 auerbach-verlag.de, 1 aufay.me, 1 -aufeergroup.eu, 1 aufeerjob.cz, 1 aufiowilauf.at, 1 aufmerksamkeitsstudie.com, 1 @@ -15585,7 +15571,6 @@ 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 @@ -15719,6 +15704,7 @@ ausbildung-rbg.de, 1 ausbildungplus.de, 1 ausbrightfacilities.com.au, 1 +ausbusinessregister.com.au, 1 auscanalliancecorp.com, 1 auscube.tk, 1 auscultador.com, 1 @@ -15734,7 +15720,6 @@ ausgrants.com, 1 ausgrants.com.au, 1 ausics.net, 1 -ausielogistics.com.au, 1 auskast.com, 1 auskate.tk, 1 auskunftsbegehren.at, 1 @@ -15764,11 +15749,12 @@ austcm.com.au, 1 austenplumbing.com, 1 austercita.tk, 1 -austickcarremoval.com.au, 1 +austickcarremoval.com.au, 0 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 @@ -15852,14 +15838,15 @@ 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 auto-borse.tk, 1 auto-delchev.com, 1 -auto-drpciv.ro, 1 auto-ecole-du-tursan.fr, 1 auto-ecole-remparts.fr, 1 auto-graph.eu, 1 @@ -15985,7 +15972,6 @@ autokasko.tk, 1 autokeskus.com, 1 autokino-sachsen.de, 1 -autoklub.cz, 1 autoknife.cf, 1 autokontinent.ml, 1 autokovrik-diskont.ru, 1 @@ -16172,6 +16158,7 @@ automotiveworth.ga, 1 automotiveyankee.ga, 1 automoto-tom.net, 1 +automotoscout.de, 1 automouseclick.com, 1 automuovifix.fi, 1 autonewsreview.com, 1 @@ -16210,7 +16197,6 @@ autorefuellings.ru, 1 autoreinigung-noack.de, 1 autoren-magazin.de, 1 -autorepguide.com, 1 autorepmans.com, 1 autoresponderilimitado.tk, 1 autoreview.ml, 1 @@ -16244,7 +16230,6 @@ autospurgo.co, 1 autospurgo.com, 1 autospurgo.milano.it, 1 -autospurgo.name, 1 autostationsest.ga, 1 autostickere.ro, 1 autostodulky.cz, 1 @@ -16297,6 +16282,7 @@ autres-talents.fr, 1 auts.fi, 0 autumnhungary.tk, 1 +autumnplantfair.nz, 1 autya.ga, 1 auventsettoilesregional.ca, 1 auventsettoilesregional.com, 1 @@ -16313,6 +16299,7 @@ auxilion.de, 1 auxilius.be, 1 auxion.net, 1 +auxite.io, 1 auxmode.com, 1 auzeau.fr, 1 av-autoparts.gr, 1 @@ -16521,6 +16508,7 @@ avions.ga, 1 aviorair.com, 0 aviprime.by, 1 +avirahost.com.br, 1 aviruptribedi.com, 1 avisbabes.com, 1 avishanx.com, 1 @@ -16596,7 +16584,6 @@ avstack.io, 1 avstekla.ru, 1 avt-ukraine.com, 1 -avtechno.ru, 1 avtecmedia.com, 0 avto-bazar.tk, 1 avto-signal.cf, 1 @@ -16622,6 +16609,7 @@ avtours.gr, 1 avtoveles.by, 1 avtovikup.ml, 1 +avtovokzaly-ua.com, 1 avtovokzaly.ru, 1 avtoyurist.cf, 1 avtoyurist.ga, 1 @@ -16768,6 +16756,7 @@ axiniteguitars.com, 1 axioinvest.com, 1 axiom4.net, 1 +axiomametering.com, 1 axiome.cpa, 1 axiomecomptables.ca, 1 axiomecpa.ca, 1 @@ -16802,7 +16791,6 @@ axitoequities.com.au, 1 axitolending.au, 1 axitolending.com.au, 1 -axl.net, 1 axmedmessi.tk, 1 axoftglobal.com, 1 axoftglobal.ru, 1 @@ -16984,7 +16972,6 @@ azadblog.tk, 1 azadliq.online, 1 azafraneshelca.es, 1 -azairline.com, 1 azaleos.com, 1 azalhavayolu.com.tr, 1 azapp-vvv-program-api-dev.azurewebsites.net, 1 @@ -17054,6 +17041,7 @@ azort.com, 1 azotobacter.nl, 1 azoulaygroup.org, 1 +azovgroup.com, 1 azplayersclub.com, 1 azpousivmechu.cz, 1 azquality.com, 1 @@ -17064,6 +17052,7 @@ azs-nw.ru, 1 azsalud.gov, 1 azsec.biz, 1 +azshop.ro, 1 azso.pro, 1 azsoriginal.pw, 0 azsupport.com, 1 @@ -17120,7 +17109,6 @@ 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 @@ -17137,6 +17125,7 @@ b-wartburg.de, 1 b.ee, 1 b.ls, 1 +b.lu, 1 b.wtf, 1 b00de.ga, 1 b0hr.ai, 1 @@ -17154,7 +17143,6 @@ b1r0d4l0m.com, 1 b1rd.tk, 1 b24.pt, 1 -b2b-leads.nl, 1 b2b-nestle.com.br, 1 b2bazun.com, 1 b2bchiemihara.com, 1 @@ -17166,7 +17154,9 @@ 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 @@ -17216,7 +17206,6 @@ b70664.com, 1 b70884.com, 1 b70991.com, 1 -b70992.com, 1 b70993.com, 1 b70994.com, 1 b70995.com, 1 @@ -17317,13 +17306,13 @@ 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 @@ -17555,7 +17544,6 @@ badf00d.de, 1 badge.rs, 1 badgeboundprep.com, 1 -badgerherald.com, 1 badges.fedoraproject.org, 1 badges.stg.fedoraproject.org, 1 badgetree.com, 1 @@ -17578,6 +17566,7 @@ badmintonbeersheva.co.il, 1 badmintonclubwaarschoot.tk, 1 badmintondk.cz, 0 +badmintonline.nl, 1 badmintonoverdag.tk, 1 badmonkey.fr, 1 badmood.tk, 1 @@ -17593,7 +17582,6 @@ badoo.eu, 1 badoo.us, 1 badpc.net, 1 -badphilosopher.com, 1 badpinguin.gq, 1 badpreachers.tk, 1 badrap.io, 1 @@ -17625,6 +17613,7 @@ baer-holger.de, 0 baer.space, 1 baesystems-she.com, 1 +baeverdock.com, 1 baevserver.ddns.net, 1 bafing.com, 1 bafoeg-rechner.de, 1 @@ -17656,6 +17645,7 @@ bagu.biz, 1 bagu.fr, 1 bagumum-kotakediri.com, 1 +baguncadamente.com, 1 bagusat.com, 1 bagwrap.com, 1 bahadirh.ml, 1 @@ -17892,7 +17882,6 @@ ballotapi.com, 1 ballotaudit.com, 1 ballpythonsaspets.com, 1 -ballrace.ph, 1 ballstonspa.gov, 1 balluncar.tk, 1 ballweg-tech.de, 1 @@ -17919,6 +17908,7 @@ baltimorecolonrectal.com, 1 baltimoreroofingservices.com, 0 baltlex.de, 1 +baltrag.com, 1 bam.com.gt, 1 bamaland.org, 1 bambamthetanman.com, 0 @@ -17958,6 +17948,7 @@ bananatrunkingprotocol.com, 1 bananavapes.com, 1 bananenbr0t.de, 1 +bananes.top, 1 banania.fr, 1 bananice.moe, 1 bananium.fr, 1 @@ -17970,6 +17961,7 @@ bancoagricola.com, 1 bancoatlantida.com.ni, 1 bancobica.com.ar, 1 +bancobig.es, 1 bancobpm.it, 1 bancodeloja.fin.ec, 1 bancoeconomico.ao, 1 @@ -18054,7 +18046,6 @@ banham.com, 1 banhphongtomquangtran.com, 1 bani-hashem.tk, 1 -banijay.com, 1 banimarket.by, 0 banja-kulasi.ga, 1 banjonelson.tk, 1 @@ -18161,10 +18152,16 @@ 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 @@ -18190,7 +18187,6 @@ baravalle.com, 1 baraxolka.ga, 1 baraxolka.ml, 1 -barbara-bertagnolli.co.uk, 1 barbara-fuchs-gruene-fuerth.de, 1 barbarabryce.com, 1 barbaraedanielsantos.ga, 1 @@ -18199,10 +18195,10 @@ 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 @@ -18290,6 +18286,7 @@ barklanepets.com, 0 barkmembership.com, 1 barkstop.net, 1 +barlaplana.es, 1 barlettaviva.it, 1 barlex.pl, 1 barley.com, 1 @@ -18297,6 +18294,7 @@ barlogova.sk, 1 barlotta.net, 1 barlow-media.club, 1 +barm.cc, 1 barmenteros.com, 1 barmusic.tk, 1 barnabycolby.io, 1 @@ -18547,6 +18545,7 @@ bastian-fluegel.de, 1 bastille.net, 1 bastillebsd.org, 1 +bastion-scan.eu, 1 bastionadvokat.ml, 1 bastionentifo.tk, 1 bastisgroup.com, 1 @@ -18591,7 +18590,6 @@ batchfoundation.org, 1 batchjob.ai, 1 batchroom.com, 1 -batdongsancongnghiep.vn, 0 bateaux-sans-permis.com, 0 batechnic.dk, 1 batelco.com, 1 @@ -18658,7 +18656,6 @@ battleguard.net, 1 battleleague.com.br, 1 battlemedialab.com, 1 -battleofthegridiron.com, 1 battlerealms.cc, 1 battlerite.tk, 1 battletech.tk, 1 @@ -18678,6 +18675,7 @@ 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 @@ -18792,6 +18790,7 @@ baysidephotography.ga, 1 bayt.com, 1 baytobayaircon.com.au, 1 +baytv.it, 1 bayvets.co.uk, 1 bayvetsreferrals.co.uk, 1 bayvotesfl.gov, 1 @@ -18822,6 +18821,7 @@ bazel.build, 1 bazhan.wang, 1 bazinga-events.nl, 1 +bazis-kazan.ru, 1 bazomag.pl, 1 bazooka.se, 1 bazos.at, 1 @@ -18887,7 +18887,6 @@ bbp.ng, 1 bbpnas.win, 1 bbqenbites.nl, 1 -bbqs-algarve.com, 1 bbqstars.com, 1 bbrassart.fr, 1 bbrigittae.hu, 1 @@ -18897,6 +18896,7 @@ bbschat.tk, 1 bbsec.xyz, 1 bbsis.org, 1 +bbt.com.vn, 1 bbusa.tk, 1 bbw-wrestling.com, 1 bbwanalsex.com, 1 @@ -18947,7 +18947,6 @@ 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 @@ -18985,7 +18984,6 @@ bdasites.in, 1 bdbe.ga, 1 bdbpayroll.com, 1 -bdbxml.net, 1 bdcdev.in, 1 bdd.fi, 1 bddam.fr, 1 @@ -19004,6 +19002,7 @@ bdo-tools.jp, 1 bdo.com, 1 bdpachicago.tech, 1 +bdplus.cc, 1 bdpn.ru, 1 bdrmedia.rs, 1 bdrops.de, 1 @@ -19026,6 +19025,7 @@ 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 @@ -19042,7 +19042,6 @@ beabadoartesanato.com.br, 1 beable.com, 1 beacham.online, 1 -beachcitiestaxandaccounting.com, 1 beachcitybody.com, 1 beachcitycastles.com, 0 beachcruisers.tk, 1 @@ -19064,7 +19063,6 @@ beacongaragedoors.com, 1 beaconhealthoptions.com, 1 beaconinvesting.com, 1 -beaconinvestingetfs.com, 1 beaconny.gov, 1 beadaptive.ca, 1 beadare.com, 1 @@ -19093,6 +19091,7 @@ beamdisinfo.org, 1 beamitaly.tk, 1 beamitapp.com, 1 +beamleaks.com, 1 bean-jam.jp, 1 beanbot.party, 1 beanboygames.com, 1 @@ -19100,7 +19099,6 @@ beanieshow.co.uk, 1 beanilla.com, 1 beanjuice.me, 1 -beansgalore.com.au, 0 beanshencr.com, 1 beaoriflame.hu, 1 bearcloud.id.lv, 1 @@ -19124,6 +19122,7 @@ bearslakeinn.com, 1 bearzoutdoor.com, 1 beasel.biz, 1 +beasr.world, 1 beast-books.com, 1 beast.rent, 1 beastlog.tk, 1 @@ -19131,6 +19130,7 @@ beastnet.xyz, 1 beastowner.com, 1 beastowner.li, 1 +beatareszka.com, 1 beatbikers.com, 1 beatbox.zone, 1 beatbreaker.tk, 1 @@ -19142,6 +19142,7 @@ 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 @@ -19223,11 +19224,28 @@ beaver-creek.ga, 1 beavercityut.gov, 1 beaverdamautos.com, 1 +beaverdoc.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 +beaverdok.com, 1 +beaverdokc.com, 1 +beaverdpck.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 @@ -19244,6 +19262,7 @@ bebest.gov, 1 bebetrotteur.com, 1 bebidasrd.com, 1 +bebitoo.com, 1 beble.pl, 1 bebodywise.com, 1 beboldpr.com, 0 @@ -19375,10 +19394,10 @@ 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 @@ -19435,6 +19454,7 @@ beerwestmag.com, 1 beerxa.cz, 1 bees-portal.com, 1 +beesafe.pl, 1 beescloud.com, 1 beesnoosa.com, 1 beesoft.com.vn, 1 @@ -19501,7 +19521,6 @@ behealthandrehab.com, 1 behealthoncologia.com, 1 behealthpr.com, 1 -behealthyeveryday.eu, 1 behealthyoga.com, 1 beheeronline.nl, 1 behemoth.cf, 1 @@ -19517,7 +19536,6 @@ behomewithlove.com.br, 1 behoreal.cz, 1 behotelmalta.com, 1 -behpooshshop.com, 1 behrer.se, 1 beiersdorf-svz.ch, 1 beihelsinki.de, 1 @@ -19580,7 +19598,6 @@ belayarus.tk, 1 belbin.com, 1 belcanto.cz, 1 -belcoda.com, 0 beleadsteam.com, 1 beleaf.cz, 0 belebey.city, 1 @@ -19783,9 +19800,11 @@ benchmark-dental.com, 0 benchmark-ip.com, 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 @@ -19808,6 +19827,7 @@ benedictoaguilar.tech, 1 benedikto.tk, 1 benedyktynki-sakramentki.org, 1 +benedyktynki.info, 1 benee-awraham.nl, 1 benefactgroup.com, 1 benefeds.com, 1 @@ -19838,6 +19858,7 @@ benevita.live, 1 benevita.organic, 1 benewahcountyid.gov, 1 +benficafootballcamp.lt, 1 bengalcat.tk, 1 bengalcatscare.com, 1 bengaldisom.tk, 1 @@ -19866,7 +19887,6 @@ benimsetin.org, 1 beninca.link, 1 beninrevele.bj, 1 -benizon.shop, 1 benjamin-horvath.com, 1 benjamin-suess.de, 1 benjamin-thomsen.de, 1 @@ -19889,6 +19909,7 @@ benjonline.tk, 1 benkelmed.com, 1 benken.tk, 1 +benlashri.com, 1 benleb.de, 1 benleemd.com, 1 benmack.net, 1 @@ -20039,12 +20060,12 @@ 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 berkshireesupply.com, 0 berksholocaustmuseum.org, 1 @@ -20178,11 +20199,13 @@ 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 @@ -20202,7 +20225,6 @@ besnard.me, 1 besnik.de, 0 besnik.tk, 1 -besola.de, 1 besole.ch, 1 besolov.tk, 1 besox.be, 1 @@ -20254,7 +20276,6 @@ best66.me, 1 besta.tk, 1 bestaction.tk, 1 -bestads.co.il, 1 bestafricaradio.tk, 1 bestallgames.com, 1 bestarts.tk, 1 @@ -20319,7 +20340,6 @@ bestevakantieparken.com, 1 bestevakantieparken.nl, 1 bestfcu.org, 1 -bestfewo.de, 1 bestfidgettoysforadhd.com, 1 bestfinancialcu.org, 1 bestfitnesswatchreview.info, 1 @@ -20342,7 +20362,6 @@ bestinductioncooktop.us, 1 bestinsider.net, 0 bestinsulatedwaterbottle.tk, 1 -bestinver.es, 0 bestitwork.tk, 1 bestjumptrampolines.be, 1 bestkbeauty.com, 1 @@ -20498,8 +20517,8 @@ bestmattresses.tk, 1 bestmaturepics.com, 1 bestmedsmmj.com, 1 +bestmicro.fr, 1 bestmodels.ua, 1 -bestmorkiepups.com, 1 bestmotherfucking.website, 1 bestnetentcasino.info, 1 bestnetflowanalyzer.com, 1 @@ -20525,7 +20544,6 @@ bestplus.ml, 1 bestplus.tk, 1 bestpneu.cz, 1 -bestpomskypups.com, 1 bestporn.pics, 1 bestpornclip.com, 1 bestporngirls.com, 1 @@ -20540,11 +20558,11 @@ bestrating-hengelo.nl, 1 bestreleases.tk, 1 bestremote.io, 1 -bestresumeobjectiveexamples.com, 1 bestrongandhomosexual.top, 1 bestroofinginkansascity.com, 1 bestroutes.net, 1 bestsatoshifaucet.ga, 1 +bestsavingscoupon.com, 1 bestsextoys.com, 1 bestsheepadoodles.com, 1 bestshopping.ga, 1 @@ -20576,6 +20594,7 @@ bestzoo.tk, 1 besured.nl, 1 besv.com, 1 +besverdock.com, 1 beszerzokozpont.hu, 1 bet-platform.com, 1 bet08vip.com, 0 @@ -20599,7 +20618,6 @@ bet333h.com, 1 bet333n.com, 0 bet333r.com, 0 -bet333x.com, 1 bet333y.com, 1 bet333z.com, 0 bet338c.com, 1 @@ -20633,7 +20651,6 @@ bet365q9.com, 1 bet365r8.com, 1 bet365vip2.com, 1 -bet365vip2020.com, 0 bet365vip7.com, 1 bet365x0.com, 1 bet365x1.com, 1 @@ -20719,7 +20736,6 @@ betbed.ml, 1 betbravo.et, 1 betbrothers.es, 1 -betc.com, 1 betcn-mart.com, 1 betecnet.de, 1 betel.tk, 1 @@ -20790,6 +20806,7 @@ bettashoerepairs.com.au, 1 bettendorf.gov, 1 bettenhaus-schlafoase.de, 1 +better.ad, 1 better.com, 1 better.fyi, 1 betterbaseball.com, 1 @@ -20877,7 +20894,6 @@ beulen.pro, 1 beurettes-en-chaleur.tk, 1 beursbever.be, 1 -beurswandwereld.nl, 1 beus.ink, 1 beusefulbook.ru, 1 beuteugeu.com, 1 @@ -20887,7 +20903,6 @@ bevallarta.com, 1 bevcrushesit.ca, 1 bevedo.com, 1 -bevedo.cz, 1 bevedo.sk, 1 beveiligingscamerawestland.nl, 1 bevelbeer.com, 1 @@ -20996,11 +21011,13 @@ 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 bezpredel.tk, 1 +bf-bogdan.ru, 1 bf2statistics.eu, 1 bfam.tv, 1 bfbet365.com, 1 @@ -21043,7 +21060,6 @@ bgemi.net, 1 bget.org.uk, 1 bgetfuel.co.uk, 1 -bgfalconmedia.com, 1 bgfashion.net, 1 bgfr.net, 1 bggcapital.com, 1 @@ -21067,6 +21083,7 @@ bgschuledortmund.de, 1 bgtraffic.tk, 1 bgunikat.eu, 1 +bgv.org.tr, 1 bh-oberland.de, 1 bh.sb, 1 bhacit.com, 0 @@ -21092,6 +21109,7 @@ bhnnews.com, 1 bhodisoft.com, 1 bhogavati.tk, 1 +bhojpurisex.site, 1 bhpropco.com, 1 bhrc.wa.gov.au, 1 bhrenovations.com, 0 @@ -21100,6 +21118,7 @@ bhtechconnection.com, 0 bhtelecom.ba, 1 bhub.tk, 1 +bhulakkad.com, 1 bhuntr.com, 1 bhuttae.com, 1 bhuvanreddy.space, 1 @@ -21120,7 +21139,6 @@ biagiowineandspirits.com, 1 biahposter.com, 1 biancadark.tk, 1 -biancapaulphotography.com, 1 biancapulizie.it, 1 biancasalgueiro.tk, 1 biancavandenberg.nl, 1 @@ -21155,6 +21173,7 @@ bibitec.de, 1 bible-maroc.com, 1 bible4u.net, 1 +biblear.org, 1 biblebrainhealth.com, 1 bibleforchildren.ru, 1 biblegen.com, 1 @@ -21163,7 +21182,6 @@ biblemobile.com, 1 biblesearch.tw, 1 biblesignposts.com, 1 -bibletower.net, 0 bibleversesfordailyliving.com, 1 biblia.es, 1 bibliadoczytania.pl, 1 @@ -21253,6 +21271,7 @@ bienbailao.com, 1 biene.rocks, 1 bienenfreunde.tk, 1 +bienertplus50.de, 1 bienestarinmobiliarioyaliadas.com, 1 bienhacerlimpiezas.es, 1 bienici.com, 1 @@ -21306,6 +21325,7 @@ big-tits-video.ru, 1 big-travel.tk, 1 big.one, 1 +big.pt, 1 big.ua, 1 big.wtf, 1 big12sports.com, 1 @@ -21348,12 +21368,12 @@ 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 @@ -21489,6 +21509,7 @@ bikerestart.com, 1 bikersclub.tk, 1 bikersmadrid.es, 1 +bikerzbits.com, 1 bikesandbits.tk, 1 bikesdirect.com, 1 bikeshopitalia.com, 1 @@ -21503,7 +21524,6 @@ bikinibich.tk, 1 bikinis.ga, 1 bikinis.tk, 1 -bikiniseli.com, 1 bikkelbroeders.com, 0 bikkelbroeders.nl, 0 biknet.tk, 1 @@ -21624,8 +21644,10 @@ biltullen.com, 1 bim.physio, 1 bimacitizen.com, 1 +bimber.nl, 1 bimbingan.tk, 1 bimedis.com, 1 +bimilogo.it, 1 bimmerguide.de, 1 bimmerlabs.com, 1 bimoge.tk, 1 @@ -21727,7 +21749,6 @@ bio-place.com, 1 bio-verzeichnis.de, 1 bio-world.com, 1 -bio24.si, 0 bioadva.com, 1 bioagency.it, 1 bioagroapteka.bg, 1 @@ -21776,7 +21797,6 @@ biofeedbackcalifornia.org, 1 biofire.gr, 1 biofizpribor.ru, 1 -bioflamma.com, 1 bioforce.tk, 1 biofourmis.com, 0 biofuels-news.com, 1 @@ -21859,7 +21879,6 @@ bioplaces.eu, 1 bioplaces.fr, 1 biopreferred.gov, 1 -biopro-st.com, 1 biopsychiatry.com, 1 bioqual.com, 1 biored.com.tr, 1 @@ -21867,11 +21886,11 @@ 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 @@ -21885,7 +21904,7 @@ biosupplyalliance.com, 1 biot.tk, 1 biotage.com, 1 -biotal.ua, 1 +biotal.ua, 0 biotanquesbts.com, 1 biote.com, 1 biotec.tk, 1 @@ -21943,6 +21962,7 @@ birkilise.com, 1 birkilise.net, 1 birkilise.org, 1 +birkmayeraerospace.com, 1 birman.tk, 1 birminghamal911.gov, 1 birminghammoneyman.com, 1 @@ -21951,7 +21971,7 @@ birobidjan.tk, 1 birobidzhan-news.net, 1 birone.tk, 1 -bironthemes.com, 1 +bironthemes.com, 0 birosuli.hu, 1 birouldeimagine.ro, 1 birow.com, 1 @@ -22065,7 +22085,6 @@ bitcoin.asia, 1 bitcoin.ch, 1 bitcoin.co.nz, 1 -bitcoin.com.sc, 1 bitcoin.de, 1 bitcoin.gob.sv, 1 bitcoin.im, 1 @@ -22180,7 +22199,7 @@ bitrate.tk, 1 bitredirixe.top, 1 bitref.com, 1 -bitrefill.com, 1 +bitrefill.com, 0 bitrefill.info, 1 bitrefill.me, 1 bitronixcode.com, 1 @@ -22235,6 +22254,7 @@ biurokarier.edu.pl, 1 biuropulawy.pl, 1 biurosuszec.pl, 1 +biv.lt, 1 bivg.ru, 0 bixbydevelopers.com, 1 bixilon.de, 1 @@ -22252,6 +22272,7 @@ bizarrefuture.cf, 1 bizbelarus.tk, 1 bizboatest.ga, 1 +bizbuzzgo.com, 1 bizcalcs.com, 1 bizdemevcut.com.tr, 1 bizdir.tk, 1 @@ -22309,7 +22330,7 @@ bjcw.com, 1 bjecard.buzz, 1 bjerregaard.me, 1 -bjfconsulting.fr, 1 +bjfconsulting.fr, 0 bjfuli.com, 1 bjjmississauga.com, 1 bjksportscentre.com, 1 @@ -22455,6 +22476,7 @@ bkin-43450.xyz, 1 bkin-46680.xyz, 1 bkk24.de, 1 +bkkf.at, 1 bkkposn.com, 1 bklaindia.com, 1 bkli.me, 1 @@ -22538,6 +22560,7 @@ blackcastle.tk, 1 blackcat.ca, 1 blackcatcard.com, 1 +blackcatinfo.com, 1 blackcatinformatics.ca, 1 blackcatinformatics.com, 1 blackcatwanderlust.com, 1 @@ -22545,8 +22568,6 @@ 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 @@ -22554,7 +22575,6 @@ blackexpo.id, 1 blackeyes.gq, 1 blackeyes.tk, 1 -blackfeather.in, 1 blackfield.org, 1 blackfire.io, 1 blackfirecrew.tk, 1 @@ -22638,7 +22658,7 @@ blacksniffer.tk, 1 blackspark.tk, 1 blackspider.tk, 1 -blacksprut.com, 1 +blacksprut.com, 0 blacksprut.pro, 1 blackstonepress.tk, 1 blackstonetubrefinishers.ca, 1 @@ -22648,6 +22668,7 @@ blacksun-sole-nero.net, 1 blacksvets.co.uk, 1 blackswan.tk, 1 +blackswanai.de, 1 blackswancompany.com, 1 blackswirl.com, 1 blacktemplars.tk, 1 @@ -22657,6 +22678,7 @@ blacktubes.ga, 1 blacktubes.ml, 1 blacktype.bet, 1 +blackveilsecurity.com, 1 blackvinegarcollection.com, 0 blackwaterlounge.com, 1 blackwaterutilities.tk, 1 @@ -22704,6 +22726,7 @@ blakezone.com, 1 blako-squad.tk, 1 blakylle.de, 1 +blammmedia.com, 1 blan.tk, 1 blana.ro, 1 blanboom.org, 1 @@ -22755,7 +22778,6 @@ blau-weiss-stolberg.de, 1 blaudev.es, 1 blauejungsbolzum.de, 1 -blauesschwarz.de, 0 blaugelb-frankfurt.de, 1 blauglockenbaum.de, 1 blaumedia.com, 1 @@ -22770,6 +22792,7 @@ blaze-in.com, 1 blazebit.com, 1 blazefire.tk, 1 +blazejmrozinski.com, 1 blazelock.com, 1 blazeweb.ml, 1 blazing.cz, 1 @@ -22808,6 +22831,8 @@ 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 @@ -22815,7 +22840,6 @@ bleyershoes.com, 1 blic-zajm.gq, 1 blichmann.eu, 1 -blick-durchblick.com, 1 blicy.net, 1 blideobames.com, 1 blids.nl, 1 @@ -22928,7 +22952,6 @@ blocked.icu, 1 blockedservers.com, 1 blockified.io, 1 -blockitall.us, 1 blockmomsest.ga, 1 blocksettle.com, 1 blockshopauto.com, 1 @@ -23021,7 +23044,6 @@ blogstar.tk, 1 blogtechnologiczny.pl, 1 blogtheque.com, 1 -blogtroterzy.pl, 1 bloguerrilla.it, 1 blogvadim.ga, 1 blogworm.eu, 1 @@ -23034,6 +23056,7 @@ blomsbegravning.se, 1 blonde-hexe.net, 1 blondeangels.com, 1 +bloo.pw, 1 bloob.io, 1 bloobasket.com, 1 bloobirds.com, 1 @@ -23187,6 +23210,7 @@ blueridgelife.com, 1 blueridgemachinery.com, 1 blueridgemanorky.gov, 1 +blueripple.com, 1 blueroocarwash.com, 1 blues-and-pictures.com, 1 bluesbarn.tk, 1 @@ -23390,12 +23414,12 @@ 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 @@ -23463,21 +23487,14 @@ 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 @@ -23526,7 +23543,6 @@ boenyc.gov, 1 boerandolphcountyga.gov, 1 boerderijspel.nl, 1 -boesckens.de, 1 boesenlaw.com, 1 boevik.ml, 1 boew.de, 1 @@ -23592,7 +23608,6 @@ bolaodarico.com.br, 1 bolbilisim.com, 1 bolcaparca.com.tr, 1 -bold-fabrics.com, 1 boldare.com, 1 boldbeau.pt, 1 boldhaus.de, 1 @@ -23655,8 +23670,8 @@ boltingmaster.com, 1 boltmobile.ca, 1 bolton-consulting.org, 1 -boltonac.com, 1 boltonct.gov, 1 +boltup.ai, 1 boltz.exchange, 1 boluhaberleri.tk, 1 bolur.is, 1 @@ -23668,6 +23683,7 @@ boma.ml, 1 bomanufacture.com, 1 bombard.ga, 1 +bombeck.io, 1 bombeirostv.pt, 0 bomberosceuta.tk, 1 bomberus.de, 1 @@ -23835,7 +23851,6 @@ bookameeting.se, 1 bookbazar.co.in, 1 bookcabaurangabad.com, 1 -bookcheapairline.com, 1 bookcreator.com, 1 bookdubaihome.com, 1 bookergroupjobs.co.uk, 1 @@ -23897,7 +23912,7 @@ bookvuz.tk, 1 bookworld.gr, 1 bookwormstory.social, 1 -bookyourdata.com, 0 +bookyourdata.com, 1 bookyoursmog.com, 1 bool.be, 1 boom2.network, 1 @@ -23927,6 +23942,7 @@ boonecsdia.gov, 1 booneiowa.gov, 1 boonemo.gov, 1 +boonsfis.com, 1 booox.biz, 1 booox.cc, 1 booox.net, 1 @@ -23961,6 +23977,7 @@ bootspraxis.com, 1 bootstrapcollab.com, 0 bootsverleih-buch-balduinstein.de, 1 +bootsverleih-buch.de, 1 bootswinter.tk, 1 bootytube.net, 1 boozinyan.com, 1 @@ -24037,6 +24054,7 @@ born2flygirl.com, 1 bornan.sport, 1 bornandgrazed.com, 0 +bornapunda.com, 1 bornbinder.com, 1 borneoarabic.com, 1 borneodictionary.com, 1 @@ -24123,14 +24141,15 @@ bot-manager.pl, 1 bot.country, 1 botabota.ca, 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 @@ -24146,6 +24165,7 @@ botnam.com, 1 botoes-primor.pt, 1 botoks.tk, 1 +botosani24.ro, 1 botox.bz, 1 botpago.cl, 1 botschaft.digital, 1 @@ -24208,7 +24228,6 @@ 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 @@ -24248,7 +24267,6 @@ 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 @@ -24345,7 +24363,6 @@ bownhpd.gov, 1 bowwowinsurance.com.au, 1 box-it-up.nl, 1 -box-mail.org, 1 box.bz, 1 box.co.uk, 1 box.sklep.pl, 1 @@ -24376,7 +24393,7 @@ boxofficefunding.com, 1 boxofninjas.ca, 1 boxoptions.com, 1 -boxpark.co.uk, 1 +boxpark.co.uk, 0 boxpirates.to, 0 boxsite.ga, 1 boxtub.com, 1 @@ -24446,7 +24463,6 @@ bpx.exchange, 1 bpx.global, 1 bq1.me, 1 -bq5.me, 1 bq8.me, 1 bqgw.info, 1 bqgw8.com, 0 @@ -24469,7 +24485,6 @@ brabant.nl, 1 brabantia.com, 1 brabantse-delta.nl, 1 -brabantserfgoed.nl, 1 brabotax.nl, 1 braccialini.tk, 1 brace-automotive.com, 1 @@ -24485,7 +24500,6 @@ bracknellvets.co.uk, 1 bractwogothica.ml, 1 brad.fi, 1 -bradalnutri.com.br, 1 bradeales.com, 1 bradentonfl.gov, 1 bradfield-designs.com, 1 @@ -24616,6 +24630,7 @@ brandmonkey.dk, 0 brandmovers.co, 1 brandmrwijchen.nl, 1 +brandnaked.nl, 1 brandnucreations.com, 1 brando753.xyz, 1 brandon-manilow.tk, 1 @@ -24641,7 +24656,6 @@ brandsafe.io, 1 brandsclub.tk, 1 brandsource.com, 1 -brandsseekers.com, 1 brandstof-prijzen.nl, 1 brandsynergy.pl, 1 brandtechdesign.co.uk, 1 @@ -24669,8 +24683,8 @@ 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 @@ -24727,7 +24741,6 @@ bravelions.org, 1 bravelittlesquirrel.com, 1 bravelocation.com, 1 -bravelychoc.com, 1 bravenboer.tk, 1 braverytechnology.com, 1 bravewiki.tk, 1 @@ -24752,6 +24765,7 @@ braxtonfair.com, 1 braychappell.com, 0 brayden.gq, 1 +braydenshort.com, 1 braynblog.ml, 1 brayva.com, 1 brazenfol.io, 1 @@ -24829,6 +24843,7 @@ breentwp.gov, 1 breethe.com, 1 breezisaas.com, 1 +breezitech.io, 1 breezly.fr, 1 breezyapp.hu, 1 breezypointmn.gov, 1 @@ -24949,6 +24964,7 @@ brianroadifer.com, 1 briansemrau.com, 1 briansmith.org, 1 +brianterealtygroup.com, 1 brianum.de, 1 brianum.net, 1 brianvalente.tk, 1 @@ -24963,6 +24979,7 @@ brickfilms.com, 1 brickftp.com, 1 brickland.tk, 1 +brickmayhem.com, 1 brickrodeo.com, 1 bricks-clicks.com, 1 bricksandmotor.co.uk, 1 @@ -24975,11 +24992,11 @@ 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 @@ -25068,7 +25085,6 @@ brigittaspromise.org, 1 brigittebutt.tk, 1 brigittefontaine.tk, 1 -brijesh.fyi, 1 brilalux.pe, 1 brileytownshipmi.gov, 1 brili.com, 1 @@ -25112,7 +25128,6 @@ 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 @@ -25132,7 +25147,6 @@ britannia.no, 1 britanniapandi.com, 1 british-assessment.co.uk, 1 -britishairlinesflights.com, 1 britishantiquefurniture.co.uk, 1 britishbee.org.uk, 1 britishbee.uk, 1 @@ -25153,7 +25167,6 @@ britishgeneralelection.ml, 1 britishgroupsg.com, 1 britishmeat.com, 1 -britishpearl.com, 1 britishpropoliss.my.id, 1 britishsfaward.org, 1 britney-galaxy.com, 1 @@ -25167,13 +25180,11 @@ 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 @@ -25251,6 +25262,7 @@ broilertrade.com, 1 brojagraphics.de, 1 brokebitch.org, 1 +brokebitchabq.org, 1 brokebitchnyc.org, 1 brokeinkorea.tk, 1 brokenbiz-news.tk, 1 @@ -25325,7 +25337,7 @@ broomcastle.org, 1 broomcastle.social, 1 broomecountyny.gov, 1 -broomorchard.com, 1 +broomorchard.com, 0 brosay-legko.ml, 1 brossmanit.com, 1 brother.com.hk, 1 @@ -25614,7 +25626,6 @@ btcrit.com, 1 btcwip.com, 1 btd.be, 1 -btddd.com, 1 btdirect.uk, 1 btdproductions.tk, 1 btec.ae, 1 @@ -25684,12 +25695,13 @@ bubblesco.tk, 1 bubblespetspa.com, 0 bubblin.io, 1 -bubcs.com, 1 +bubblyliving.com, 1 bublup.com, 1 bubnovsky.org, 1 bubok.com, 1 bubok.com.ar, 1 bubok.es, 1 +bubok.pt, 1 bubra.net, 1 bubra.stream, 1 bubsngrubs.com.au, 1 @@ -25763,6 +25775,7 @@ buddy-development-rabodirectconnect-api.azurewebsites.net, 1 buddy-locator.com, 1 buddy.net, 1 +buddyboss.com, 1 buddyme.me, 1 budeanu.com, 1 budejce.cz, 1 @@ -25810,15 +25823,17 @@ buenavistava.org, 1 buendnis-deutschland.de, 1 buenosairesconnect.com, 1 -buentaller.com, 1 +buenosairesrunway.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 bufete.tk, 1 buff-buff.tk, 1 buffalo-ny-gay-chat.com, 1 @@ -26025,6 +26040,7 @@ bulvar.tk, 1 bumastemra.nl, 1 bumblebee.cf, 1 +bumblebeebeekeeping.com, 1 bumblebeekids.uk, 1 bumbleforfriends.com, 1 bumenn.is, 1 @@ -26042,7 +26058,6 @@ bunaken.tk, 1 bunbun.be, 1 bunburydad.tk, 1 -bunchful.com, 1 buncombecounty.org, 1 buncranacarndonaghgreenway.ie, 1 bund-muelheim.de, 1 @@ -26113,7 +26128,6 @@ bureausuite.co.za, 1 bureauwbtv.nl, 1 bureauwsnp.nl, 1 -bureauzelfstandigenfryslan.nl, 1 burenservice.nl, 1 burevestnik.tk, 1 burewala.tk, 1 @@ -26224,6 +26238,7 @@ burz.net, 1 burz.one, 1 burz.ro, 1 +burza-techniky.cz, 1 burzcast.com, 1 burzcast.ro, 1 burzgroup.com, 1 @@ -26592,7 +26607,6 @@ butserdocumentary.tk, 1 buttedesmortssd1wi.gov, 1 butter.horse, 1 -butterflytigress.com, 1 butterhost.ga, 1 buttermilk.cf, 1 butternutbox.com, 0 @@ -26711,7 +26725,6 @@ buyneurontin.ml, 1 buynothingyear.com, 1 buyornot.tk, 1 -buyorsellcampers.com, 1 buypal.com.pe, 1 buypapercheap.net, 1 buypersonalproxy.com, 1 @@ -26806,7 +26819,6 @@ bvrpd-pa.gov, 1 bvusd.org, 1 bvv-europe.eu, 1 -bvwnews.com, 1 bvwphotography.com, 1 bw.codes, 1 bw1970s.com, 1 @@ -26919,6 +26931,7 @@ byrest.com, 1 byrko.sk, 1 byronkg.us, 1 +byrtz.de, 1 byrut.org, 1 byshop.tk, 1 byskafasi.com, 1 @@ -26928,6 +26941,7 @@ byte-lab.tk, 1 byte.nl, 1 byte128.com, 0 +bytebin.org, 1 bytebiter.io, 1 byteblobs.com, 1 bytebodega.com, 1 @@ -26935,6 +26949,7 @@ bytebucket.org, 1 bytebytego.com, 1 bytedance.com, 1 +byteengine.net, 1 byteflies.com, 0 bytegrowth.com, 1 byteguardian.nl, 1 @@ -27035,7 +27050,6 @@ c19ivermectin.com, 1 c19ivermectin.org, 1 c19ivm.org, 1 -c19legacy.com, 1 c19probiotics.com, 1 c19proxalutamide.com, 1 c19study.com, 1 @@ -27060,7 +27074,6 @@ c3soc.de, 1 c3speak.com, 1 c3speak.de, 1 -c3stream.de, 1 c3vo.de, 0 c3w.at, 1 c3wien.at, 1 @@ -27257,7 +27270,6 @@ caesar.me.uk, 1 caesar.today, 1 caesarkabalan.com, 0 -caesegatos.com.br, 1 caetano.es, 1 caetano.pt, 1 caetanoflotas.es, 1 @@ -27341,7 +27353,7 @@ cai.sg, 1 caiben.org, 1 caibi.io, 1 -caileb.com, 1 +caileb.com, 0 cailoli.com, 1 cainesjannif.com, 1 cainhoyathletic.com, 1 @@ -27438,6 +27450,7 @@ 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 @@ -27495,6 +27508,7 @@ calhouncountyil.gov, 1 calhounfalls.gov, 1 calhounmi911.gov, 1 +calia.cc, 1 calialabs.com, 1 calibarber.com, 1 calibermind.com, 1 @@ -27504,7 +27518,6 @@ calicojudge.com, 1 calidadbio.com, 1 calidognia.com, 1 -calidoinvierno.com, 1 califarul.ro, 1 californiabudgetfinance.tk, 1 californiabuilding.ma, 1 @@ -27519,7 +27532,7 @@ californiaonlinedivorce.com, 0 californiapa.gov, 1 californiapayroll.com, 1 -californiaschools.us, 0 +californiaschools.us, 1 californiatitlesearch.com, 1 californiavalues.cf, 1 calim.com.ar, 1 @@ -27528,7 +27541,6 @@ calinadrian.uk, 1 calinetworks.com, 1 caliph.one, 1 -calista-directinvestors.eu, 1 calisteniaperu.ga, 1 calistogaca.gov, 1 calitateavietii-ardeal.ro, 1 @@ -27563,7 +27575,6 @@ calliari.org, 1 calliesalls.com, 1 calligraph.gq, 1 -calligraphychic.com, 1 callinsdecor.com.br, 1 callipeg.com, 1 callmewatkins.com, 1 @@ -27673,7 +27684,6 @@ camera-podvod.tk, 1 cameraforensics.com, 1 camerahire.com.au, 1 -camerajabber.com, 1 cameraman.tk, 1 cameramark.nl, 1 camerashot.tk, 1 @@ -27745,6 +27755,7 @@ campdesante.com, 1 campdetarragona.tk, 1 campeonatoalemao.com.br, 1 +campercollective.com, 1 camperdays.de, 1 camperdirectoryers.ga, 1 camperdirectoryest.ga, 1 @@ -27756,9 +27767,7 @@ 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 camping-trentino.it, 1 camping.it, 1 @@ -27814,6 +27823,7 @@ camsupplier.ml, 1 camsupplierers.ga, 1 camtor.ml, 1 +camu.us, 1 camunaslab.org, 1 camunda.com, 0 camunda.org, 1 @@ -27959,7 +27969,6 @@ candypalace.tk, 1 candysailing.ml, 1 candysamira.org, 1 -candytip.ru, 1 candywings.com, 1 candyxs.org, 1 cane.bg, 1 @@ -28019,7 +28028,7 @@ canningcityfc.org.au, 1 canningpartners.com.au, 1 cannoli.london, 1 -cannon.org.cn, 1 +cannon.org.cn, 0 cannoncountytn.gov, 1 cannonriverwatershedmn.gov, 1 cannonsforsale.com, 1 @@ -28122,6 +28131,7 @@ capemaypoint.org, 1 capeoni.fr, 1 capeprivacy.com, 0 +capestone.com.au, 1 capetown.travel, 1 capetowncpf.co.za, 1 capetownelite.co.za, 1 @@ -28171,6 +28181,7 @@ capitaltg.com, 0 capitaltruepartner.hk, 1 capitaltruepartnertechnology.cn, 1 +capitalwaveinsight.com, 1 capitan.ml, 1 capitanbeilinson.tk, 1 capitanlorenzana.com, 1 @@ -28178,7 +28189,6 @@ capitein.tk, 1 capitolavenue62.co.in, 1 capitolcarwashwv.com, 1 -capitolcounseling.net, 0 capitolnational.com, 1 capitolpathways.org, 1 capitolrisk.tk, 1 @@ -28220,7 +28230,6 @@ capsulekitchen.co, 1 capsulezone.tk, 1 captain-dandelion.com, 1 -captain-droid.com, 1 captainark.net, 1 captainchef.net, 1 captainclaw.tk, 1 @@ -28313,16 +28322,18 @@ 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 carbonvision.cn, 0 +carbophile.com, 1 +carbophile.org, 1 carbuzz.com, 1 carcatron.org, 1 carceloinfierno.tk, 1 @@ -28423,7 +28434,6 @@ career.how, 1 careerandjobsearch.tk, 1 careercapital.co.za, 1 -careerfoundry.com, 0 careergigo.com, 1 careerminds.com, 1 careernet.in, 1 @@ -28474,6 +28484,7 @@ carfixautorepair.com, 1 carforme.gr, 1 carfraemill.co.uk, 1 +cargillsbank.com, 1 cargo.build, 1 cargobas.com, 1 cargobay.net, 1 @@ -28490,6 +28501,7 @@ caricatureavenue.com, 1 carien.eu, 1 carigami.fr, 1 +carignan.quebec, 1 carijournals.org, 0 cariki.gq, 1 carikiv.gq, 1 @@ -28502,7 +28514,7 @@ caringpups.com, 1 carinsuranceliveest.ga, 1 carinthia.eu, 1 -carinzo.com, 1 +carinvesting.com.br, 1 carioca-romania.ro, 0 cariocabelos.com.br, 1 cariproperti.com, 1 @@ -28624,7 +28636,7 @@ carnildo.com, 1 carnivalcostumes.tk, 1 carnivalkingsupplies.com, 1 -carnivalliqueur.com, 1 +carnivalliqueur.com, 0 carnivalstore.de, 1 carnivorousplants.co.uk, 1 carobme.de, 1 @@ -28659,7 +28671,6 @@ carolineovercash.com, 1 carolinepleuvret.fr, 1 carolmolinari.tk, 1 -carottage-beton.com, 1 carousel.ga, 1 carouselbuses.co.uk, 1 carouselinsights.com, 1 @@ -28773,7 +28784,6 @@ carteles.tk, 1 cartelesparaimprimir.com, 1 cartelloni.roma.it, 1 -cartenova.co, 1 cartercountymo.gov, 1 carterdan.net, 1 carterjonas.co.uk, 1 @@ -28792,7 +28802,6 @@ carthagesavings.com, 1 cartierplan.ga, 0 cartographiepremiereligne.ca, 1 -cartoleriabotticelli.it, 1 cartomancieperso.tk, 1 cartona.com, 1 cartongesso.roma.it, 1 @@ -28867,7 +28876,7 @@ casadopulpo.com, 1 casadostratoresjau.com.br, 1 casadue.de, 1 -casaearomas.com.br, 1 +casaearomas.com.br, 0 casaessencias.com.br, 1 casafina.tk, 1 casagami.ga, 1 @@ -28999,7 +29008,6 @@ cash.app, 1 cash.me, 1 cash.nyc, 1 -cash1loans.com, 1 cashamerican.tk, 1 cashati.com, 1 cashbackcow.us, 1 @@ -29220,7 +29228,6 @@ caspicards.com, 1 caspiconstruction.com, 1 caspiliving.com, 1 -cassa.ro, 1 casscoroadmi.gov, 1 casscountyia.gov, 1 casscountyil.gov, 1 @@ -29275,7 +29282,6 @@ castle-engine.io, 1 castle-house-ireland.com, 1 castlebar.one, 0 -castlebeats.de, 1 castlecapers.com.au, 1 castledurrow.com, 1 castleflame.fr, 1 @@ -29326,8 +29332,8 @@ catalogingpro.com, 1 catalogobiblioteca.com, 1 catalogobiblioteca.net, 1 +catalogodoamor.com, 1 catalogosdemujer.com, 1 -catalogosvirtualesonline.com, 1 catalogueau.com, 0 catalojic.tk, 1 catalonia.tk, 1 @@ -29368,7 +29374,6 @@ catchteamca.gov, 1 catchthestars.org, 1 catchup-enschede.tk, 1 -catchyz.com, 1 catclouds.net, 1 catcontent.cloud, 1 catcoxx.com, 1 @@ -29458,7 +29463,6 @@ catrepeller.com, 1 catrinasporelmundo.com, 1 catrins-kunst.de, 1 -catsarch.co, 1 catsarch.com, 1 catscreativecakes.ga, 1 catsmagic.pp.ua, 1 @@ -29514,6 +29518,7 @@ cavisson.com, 1 cavistenancy.fr, 1 cavsconnect.com, 1 +cavuno.com, 1 cavzodiaco.com.br, 1 caw.be, 1 cawagiras.ga, 1 @@ -29579,6 +29584,7 @@ cboost.nl, 1 cboss.xyz, 1 cbozarks.com, 1 +cbplus.tn, 1 cbpridecenter.org, 0 cbr-rcb.ca, 1 cbr-xml-daily.ru, 1 @@ -29619,7 +29625,6 @@ ccak.training, 1 ccaptioning.com, 1 ccatpracticetest.com, 1 -ccatpracticetests.com, 1 ccattestprep.com, 1 ccautomobil.de, 1 ccb.gov, 1 @@ -29818,13 +29823,12 @@ ceannard.net, 1 ceatheneum.com, 1 ceba-cuec.ca, 0 -cebek.co.uk, 1 +cebek.co.uk, 0 cebolinha-imaginaria.com, 1 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 @@ -29866,9 +29870,10 @@ 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 @@ -29933,6 +29938,7 @@ celigo.com, 1 celinaohiopd.gov, 1 celine-patisserie.fr, 1 +celinecity.com, 1 celineitalia.tk, 1 celinesrecipes.com, 1 cellboost.cf, 1 @@ -29945,6 +29951,7 @@ cellnatsci.com, 1 cellonline.org, 1 cellopasorobles.com, 1 +cellpex.com, 1 cellphonedb.org, 1 cellrg.org, 1 cellsheet.me, 1 @@ -29971,8 +29978,10 @@ celulares.com, 1 celulas-estaminais.info, 1 celuliteonline.com, 1 +celyrian.com, 1 cemada.cz, 1 cembra.ch, 1 +cemcerkez.com, 1 cement-co2-protocol.org, 1 cementplas.es, 0 cementscience.com, 1 @@ -30034,8 +30043,6 @@ 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 @@ -30047,10 +30054,11 @@ centralengland.coop, 1 centralesnucleaires.fr, 1 centralfor.me, 1 +centralhaat.com, 1 centralhome.com, 1 centralhq.tk, 1 centralimpressos.com.br, 0 -centralisgroup.com, 1 +centralisgroup.com, 0 centralitasbaratas.es, 1 centralkladno.cz, 1 centrallaketownshipmi.gov, 1 @@ -30130,8 +30138,6 @@ 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 @@ -30140,7 +30146,6 @@ centuryreporters.com, 1 centurystudios.com, 1 centurytiling.com.au, 1 -ceo-consulting.eu, 1 ceomanipur.nic.in, 1 ceomonthlyest.ga, 1 cephalexin.ga, 1 @@ -30192,6 +30197,7 @@ cernakova.eu, 1 cernalistina.eu, 1 cernko.de, 1 +cernyn.com, 1 ceroresiduo.com, 0 cerovica.tk, 1 cerpus-course.com, 1 @@ -30257,7 +30263,6 @@ certum.shop, 0 certusquartz.com, 1 certyhukil.ga, 1 -cerulean.work, 1 cervejista.com, 1 cervek.me, 1 cervellomorto.tk, 1 @@ -30295,7 +30300,6 @@ cestasdepresente.com.br, 1 cestasedelicias.com.br, 1 cestaswmonline.com.br, 1 -cestgada.com, 1 cestinavass.lol, 1 cestpasviolent.com, 1 cestujnamiru.cz, 1 @@ -30368,6 +30372,7 @@ 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 @@ -30422,7 +30427,7 @@ cgpcollective.com, 1 cgpe.com, 1 cgplumbing.com, 1 -cgplumbingservice.com, 1 +cgplumbingservice.com, 0 cgps.ch, 1 cgsmart.com, 1 cgsmotors.com, 1 @@ -30493,6 +30498,7 @@ chaitanyapandit.com, 1 chaizhikang.com, 1 chakanaherb.be, 1 +chakrakali.com, 1 chalanbiltv.net, 1 chaldal.com, 1 chalet-charmettes.fr, 1 @@ -30511,7 +30517,7 @@ chalons-agglo.fr, 1 chalonsenchampagne.fr, 1 chalov.ml, 1 -chama.gr, 0 +chama.gr, 1 chamanga.store, 1 chamartin.tk, 1 chamath.co.uk, 1 @@ -30565,6 +30571,7 @@ chandradeepdey.com, 1 chandramani.tk, 1 changdunovel.com, 1 +change-coaching-gmbh.ch, 1 change10000lives.com.ph, 1 changeactivation.com, 1 changeanalytics.us, 1 @@ -30591,6 +30598,7 @@ channellife.co.nz, 1 channellife.co.uk, 1 channellife.com.au, 1 +channellife.ie, 1 channellife.in, 1 channellife.news, 1 channelpro.es, 1 @@ -30602,6 +30610,7 @@ chantalflores.co.uk, 1 chantellbeauty.co.uk, 1 chantierjob.com, 1 +chantuong.org, 1 chanty.com, 1 chanz.com, 1 chaos-darmstadt.de, 1 @@ -30679,6 +30688,7 @@ charlesdickens.tk, 1 charlesheidsieck.com, 1 charlesmarkhotel.com, 1 +charlesodale.com, 1 charlesperkinsacademy.com.au, 1 charlesreedcagle.com, 0 charlesreid1.com, 1 @@ -30765,7 +30775,6 @@ chaskamn.gov, 1 chaskapolice.gov, 1 chasoslov.tk, 1 -chasse-maree.com, 1 chasseurdetruites.com, 1 chastitybelts.tk, 1 chat-buddy.com, 1 @@ -30779,6 +30788,7 @@ chat4me.tk, 1 chataberan.cz, 1 chatacademies.org.uk, 1 +chatalmuluk.com, 1 chatarpaullaw.com, 1 chataynazz.ga, 1 chatbarran.tk, 1 @@ -30896,7 +30906,6 @@ cheapairfaresdeals.com, 1 cheapairfaresticket.com, 1 cheapairlinesuk.com, 1 -cheapairplaneticket.biz, 1 cheapalarmparts.com.au, 0 cheapandbesthosting.com, 1 cheapautoinsuranceblog.com, 1 @@ -30906,18 +30915,15 @@ cheapessay.net, 1 cheapestdirectdebit.co.uk, 1 cheapestgamecards.com, 1 -cheapestwaytofly.com, 1 cheapestwebcamsites.com, 1 cheapexpenseers.ga, 1 cheapexpenseest.ga, 1 -cheapfareto.com, 1 cheapflightatlanta.com, 1 cheapflightla.com, 1 cheapflightmexico.com, 1 cheapflightsengland.com, 1 cheapflightsticketstoindia.com, 1 cheapiesystems.com, 1 -cheapinternationalair.com, 1 cheaplasix.tk, 1 cheaplookers.ga, 1 cheaplookest.ga, 1 @@ -30991,7 +30997,6 @@ checkmack.ga, 1 checkmack.gq, 1 checkmarket.com, 1 -checkmarx.com, 1 checkme.gq, 1 checkme.ml, 1 checkmedia.org, 1 @@ -31150,7 +31155,6 @@ chernyak.id.au, 1 cherokeecountyga.gov, 1 cherrett.digital, 0 -cherry-green.ch, 1 cherry-handmade.ml, 1 cherryband.space, 1 cherrybread.net, 1 @@ -31160,7 +31164,6 @@ cherryjimbo.sucks, 1 cherrynova.live, 0 cherryonit.com, 0 -cherrypink.no, 1 cherubicsoft.com, 1 cheryboomcar.ro, 1 cheryls.com, 1 @@ -31280,7 +31283,6 @@ chikucab.com, 1 chikumablog.com, 1 chilapaweb.tk, 1 -chilbert.co, 1 child-theater-bs.co.il, 1 childbravery.com, 1 childcare.gov, 1 @@ -31530,6 +31532,7 @@ choirofbeirut.cf, 1 choisirmoneau.blog, 1 chokladfantasi.net, 1 +chokoppang.com, 1 cholleria.es, 1 chollima.pro, 1 chollospain.cf, 1 @@ -31629,6 +31632,7 @@ chrispontius.tk, 1 chrisrude.com, 1 chrisshort.net, 1 +chrissimpsonseo.com, 1 chrisspencercreative.com, 1 chrisspencermusic.com, 1 chrissx.de, 1 @@ -31716,7 +31720,6 @@ christmaspartyhire.co.uk, 1 christmasrecipe.tk, 1 christo.ga, 1 -christofer.pro, 1 christoph.media, 1 christophbartschat.com, 0 christophe-beclier.fr, 1 @@ -31813,7 +31816,6 @@ chronocarpe.com, 1 chronocolis.ml, 1 chronodelivery.com, 1 -chronology.no, 1 chronometre-en-ligne.com, 1 chronoshop.cz, 0 chronotech.fr, 1 @@ -31845,6 +31847,7 @@ chtodelat.ga, 1 chtyvo.tk, 1 chuan.top, 1 +chuanchih.com, 1 chuanggu.com, 0 chubbygirlpics.com, 1 chubr.cf, 1 @@ -31852,7 +31855,6 @@ chuckame.fr, 1 chuckblier.com, 1 chucklesthebeard.website, 1 -chuckmckinnon.com, 1 chuckval.tk, 1 chudnov.tk, 1 chugoku-navi.jp, 1 @@ -31925,7 +31927,6 @@ chv.ro, 1 chvalov.com, 1 chwempower.com, 1 -chytraauta.cz, 1 chytris.cf, 1 chytris.cz, 1 chziq.com, 1 @@ -31949,7 +31950,6 @@ cialisonlinee.com, 0 cialisprice.net, 1 cialisshop.net, 1 -cialisvtr.com, 1 cialisworld.net, 1 cialisworld.org, 1 ciallo.de, 1 @@ -31999,6 +31999,7 @@ cidones.tk, 1 cie-theatre-montfaucon.ch, 0 cie.nl, 1 +ciekawieoprawie.pl, 1 ciekwestronki.cf, 1 ciekwestronki.ga, 1 ciekwestronki.gq, 1 @@ -32022,6 +32023,7 @@ cigniti.com, 1 cignium.com, 1 cigotracker.com, 1 +cihanbagdatli.com, 1 cihanmedya.ga, 1 cihar.com, 1 cihr-irsc.gc.ca, 1 @@ -32046,7 +32048,6 @@ cimsp.com, 1 cimsp.net, 1 cimtools.net, 1 -cin-dere-lla.com, 1 cin.net.au, 1 cinafilm.com, 1 cinay.pw, 1 @@ -32134,7 +32135,6 @@ cipherfunk.com, 1 cipherlist.eu, 0 ciphermail.com, 1 -ciphermining.com, 1 ciphersuite.info, 1 ciphertech.com.tw, 1 cipherwizards.com, 1 @@ -32195,6 +32195,7 @@ cirriton.de, 1 cirro.io, 1 cirroenergy.com, 1 +cirrusrays.com, 1 cirugiaesteticalarrarte.es, 1 cirugiaplasticasanluis.com, 1 cirugiatotal.com, 1 @@ -32282,8 +32283,8 @@ 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 @@ -32530,6 +32531,7 @@ civilhost.tk, 1 civiliansnews.com, 1 civillines.nl, 1 +civiltoday.com, 1 civilvirus.tk, 1 civmob.com, 1 cixbrasil.com, 1 @@ -32577,7 +32579,7 @@ ck0.eu, 1 ck1020.cc, 1 ckcg.tk, 1 -ckeke.com, 1 +ckeke.com, 0 ckenel.com, 1 ckenell.com, 1 ckenelley.com, 1 @@ -32712,7 +32714,6 @@ clarkmerrick.com, 1 clarknationalaccounts.com, 1 clarkpacific.com.au, 1 -clarkpro.biz, 1 clarksburgma.gov, 1 clarksmeathouse.com, 0 clarkstatecontract.com, 1 @@ -32721,7 +32722,7 @@ clarkturnkey.com, 1 clarktwpmi.gov, 1 clarkwinkelmann.com, 1 -clarosports.com, 1 +clarosports.com, 0 clarotvpromocao.com.br, 1 clarr.tk, 1 claryssabarbosa.com.br, 1 @@ -32795,7 +32796,6 @@ classy-websites.de, 1 classyng.com, 1 clatsopcounty.gov, 1 -claude.ai, 1 claude.com, 1 claude.me, 1 claude.photo, 1 @@ -32914,7 +32914,6 @@ clearklima.hu, 1 clearlake.com, 1 clearlinux.org, 1 -clearmatics.com, 1 clearpathtechnology.co.uk, 1 clearpay.co.uk, 1 clearpicturelegalvideo.com, 1 @@ -32923,10 +32922,10 @@ clearsafetalk.com, 1 clearsailingproperties.com, 1 clearsoftcomputacion.com, 1 -clearstep.health, 0 clearstone.au, 1 clearstoneip.com, 0 clearstreamcapital.com, 1 +cleartest.co.uk, 1 cleartheear.co.uk, 1 clearview-creative.com, 1 clearview-psychiatry.com, 1 @@ -33016,13 +33015,14 @@ clevyrcreative.com, 1 clevyrgames.com, 1 clevyrhosting.com, 1 +clevyrhub.com, 1 clevyrnode.com, 1 clevyrnodejs.com, 1 clevyrstream.com, 1 clevyrstreamjs.com, 1 clevyrstudios.com, 1 clevyrvr.com, 1 -cleysense.com, 0 +clflife.com, 1 clgp.jp, 1 clgraphix.com, 1 clial.com, 1 @@ -33053,7 +33053,6 @@ clickheretobegin.tk, 1 clickhost.com.au, 1 clickhouse.tech, 1 -clickhyundai.com, 0 clickinfo.tk, 1 clickingmad.com, 1 clickipo.com, 1 @@ -33105,7 +33104,6 @@ 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 @@ -33145,9 +33143,7 @@ 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 @@ -33216,7 +33212,6 @@ clips.ga, 1 cliqit.com.au, 1 cliquetis.ddns.net, 1 -clirnet.com, 1 clive.io, 1 cliveptr.cc, 1 clkbw.com, 1 @@ -33253,7 +33248,6 @@ clonestack.com, 1 cloneuniverse.com, 1 cloneuniverse.de, 1 -clonex.wtf, 1 clonidine-hydrochloride.ga, 1 clonix.tk, 1 clonoe.tk, 1 @@ -33320,7 +33314,6 @@ cloudbleed.info, 1 cloudboard.fr, 1 cloudbook.wiki, 1 -cloudbool.com, 1 cloudbreaker.net, 1 cloudbrothers.info, 0 cloudbytesconnect.com, 1 @@ -33351,6 +33344,7 @@ cloudflareonazure.com, 1 cloudfleet.ai, 1 cloudforce.com, 1 +cloudforge.cz, 1 cloudfree.shop, 1 cloudfronts.com, 1 cloudfudge.com, 1 @@ -33429,7 +33423,6 @@ cloudtocloud.tk, 1 cloudtropia.de, 1 cloudtskr.com, 1 -cloudturing.chat, 1 cloudturing.com, 1 cloudu.de, 1 cloudup.com, 1 @@ -33539,7 +33532,6 @@ clubexpress.com, 1 clubfactory.ml, 1 clubfailed.tk, 1 -clubfamily.de, 1 clubfatass.com, 1 clubforce.com, 1 clubfunday.ga, 1 @@ -33593,6 +33585,7 @@ cluelesscraft.com, 1 cluin.org, 1 cluj.help, 1 +cluj24.ro, 1 clun.top, 0 clurinternational.com, 1 clush.pw, 1 @@ -33645,7 +33638,6 @@ cmlcpa.ca, 1 cmlex.com, 1 cmlignon.ch, 1 -cmmcinfo.org, 1 cmn-group.com, 0 cmn-groupe.com, 0 cmngroup.com, 0 @@ -33655,6 +33647,7 @@ cmonlien.fr, 1 cmotech.asia, 1 cmotech.ca, 1 +cmotech.ie, 1 cmotech.in, 1 cmotech.news, 1 cmotech.uk, 1 @@ -33701,6 +33694,7 @@ cnatraining.network, 1 cnb.ie, 1 cnb1901.com, 1 +cnbcollege.edu.in, 1 cnbs.ch, 1 cnc-lehrgang.de, 1 cncexplorer.com, 1 @@ -33713,7 +33707,6 @@ cnetion.com, 1 cnetw.xyz, 1 cnews.ru, 1 -cnfree.xyz, 0 cng.com.au, 1 cngf.com, 1 cni-certing.it, 1 @@ -33736,8 +33729,8 @@ cnslub.ru, 1 cnss.gob.do, 1 cntr.fr, 1 -cntras.com, 1 cntraveller.com, 1 +cnv-academy.com, 1 cnvt.fr, 1 cnxiangxian.com, 1 cnzhengmai.com, 1 @@ -33760,7 +33753,6 @@ 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 @@ -33807,6 +33799,7 @@ cobaka.tk, 1 cobalt.tools, 1 cobaltia.org, 1 +cobatab.edu.mx, 1 cobb-ranch.com, 0 cobbcountygeorgia.ml, 1 coberturaplus.com, 1 @@ -33817,7 +33810,6 @@ cobracastles.co.uk, 1 cobralelie.nl, 1 cobranzasimg.com, 1 -cobs.si, 1 coc.de, 1 coca-colasip.com, 1 cocaine.ninja, 1 @@ -33894,7 +33886,6 @@ code-gen.ca, 1 code-in-plate.tk, 1 code-judge.tk, 1 -code-maze.com, 1 code-poets.co.uk, 1 code-server.host, 1 code-styling.de, 1 @@ -33926,7 +33917,6 @@ codecnetworks.com, 1 codecolliders.com, 1 codecommunity.io, 1 -codeconnect.ir, 1 codecool.com, 0 codecreate.co.uk, 1 codecrew.us, 1 @@ -33948,7 +33938,6 @@ codehangar.io, 1 codehelper.ml, 1 codeheroes.be, 1 -codeheroes.fr, 1 codehupy.org.py, 1 codehz.one, 1 codeidea.ga, 1 @@ -34032,9 +34021,7 @@ 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 @@ -34116,7 +34103,6 @@ coffeechi.ir, 1 coffeeholic.tk, 1 coffeehousewriters.com, 1 -coffeeplazahamburg.com, 1 coffeesense.coffee, 1 coffeestain.ltd, 1 coffeestory.in.ua, 1 @@ -34190,11 +34176,11 @@ 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 -coinmarketjob.com, 1 coinmedium.com, 1 coinmotion.com, 1 coinnector.com, 1 @@ -34238,8 +34224,6 @@ 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 @@ -34285,6 +34269,7 @@ coletteschley.de, 1 colfaxcountyne.gov, 1 colfaxia.gov, 1 +colframe.com.co, 1 colibri.jp, 1 colibriexpress.tk, 1 colibrigroup.com, 1 @@ -34549,7 +34534,6 @@ com4.no, 0 comactor.com, 1 comactor.fr, 1 -comagexinvoice.com, 1 comalia.com, 1 comanchecountyks.gov, 1 comanchenationpolice.gov, 1 @@ -34568,7 +34552,6 @@ combatix.io, 1 combattrecellulite.com, 1 combidarlehen.de, 1 -combineconquer.com, 1 combineid.com, 1 combloux.com, 1 combos-2020.tk, 1 @@ -34612,7 +34595,6 @@ comet.eu.org, 1 comet.tech, 1 cometbot.cf, 1 -cometcache.com, 1 comete-electricite.fr, 1 cometer.co, 1 cometer.io, 1 @@ -34620,7 +34602,6 @@ comevius.com, 1 comevius.org, 1 comevius.xyz, 1 -comewith.online, 1 comex.biz, 1 comfandivirtual.com.co, 1 comff.net, 1 @@ -34803,7 +34784,6 @@ 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 @@ -34815,6 +34795,7 @@ comparamejor.com, 1 comparatif-moto.fr, 1 comparativadetarifasenergeticas.es, 1 +comparazionequote.net, 1 compare-energie.fr, 1 compareairfaredeals.com, 1 compareer.com, 1 @@ -34822,6 +34803,7 @@ comparemymobile.com, 1 compareshow.com, 1 comparesoft.com, 1 +comparetaxsoftware.com, 1 comparetheproject.com, 1 comparewatch.com, 1 compareweddinginsurance.org.uk, 1 @@ -34839,7 +34821,6 @@ compattatori.it, 1 compdermcenter.com, 1 compensadosbello.com.br, 1 -compete4ever.com, 1 competencyassessment.ca, 1 competis.cf, 1 competitiontree.com, 1 @@ -34987,7 +34968,6 @@ computron.ga, 1 comqi.com, 1 comquadro.com.br, 1 -comquestmed.com, 1 comra-therapy.com, 1 comradesofmight.tk, 1 comsoli.com.br, 1 @@ -35004,6 +34984,7 @@ comunidadmontepinar.es, 1 comunidadreparando.com, 1 comunidadvegetariana.com, 1 +comunilife.org, 1 comuniondelucia.com, 1 comunismo.tk, 1 comunistas.tk, 1 @@ -35031,7 +35012,6 @@ concept3d.com, 1 concept4photography.com, 1 concept5.co.il, 1 -conceptatelier.de, 1 conceptec.de, 1 conceptfoundation.org, 1 conceptluxury.it, 1 @@ -35050,7 +35030,7 @@ concierge.diet, 1 conciertoscolombia.tk, 1 conciliainc.com, 1 -concilig.com.br, 0 +concilig.com.br, 1 concilioderivendel.tk, 1 conciliumnotaire.ca, 1 conciseflow.co.za, 1 @@ -35063,6 +35043,7 @@ concor.ne.jp, 1 concord.sh, 1 concordance.bible, 1 +concordvoice.chat, 1 concrefy.com, 1 concretedreamsoftexas.com, 1 concretehermit.com, 0 @@ -35072,7 +35053,6 @@ 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 @@ -35099,7 +35079,6 @@ conectagob.gov.co, 1 conectatop.com.br, 1 conectens.com, 1 -conectumfinanse.pl, 1 conejicos.tk, 1 conesin.com, 1 conews.ml, 1 @@ -35181,6 +35160,7 @@ congenio.eu, 1 congenio.net, 1 congineer.com, 1 +congmc.com, 1 congnghe.so, 1 congoproject.tk, 1 congregacionmitacol.org, 0 @@ -35209,11 +35189,12 @@ 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, 0 +connectedinvestors.com, 1 connectedmind.me, 1 connectfss.com, 1 connectheor.com, 1 @@ -35250,6 +35231,7 @@ connexdevices.co.za, 1 connexio.digital, 1 connext.de, 1 +connextglobal.com, 1 connictro.de, 1 connieetterphotography.com, 1 conning.com, 1 @@ -35357,7 +35339,6 @@ constinit.org, 1 constipationrecords.tk, 1 constitution.website, 0 -constru-vegas.com.mx, 1 construccionesceyve.com, 1 construct.net, 1 constructexpres.ro, 1 @@ -35366,10 +35347,10 @@ 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 @@ -35429,7 +35410,6 @@ consumertesting.com, 1 consumidor.gov, 1 consumptionjunction.com, 1 -consumr.ai, 1 consuwijzer.nl, 1 consyltec.de, 1 contabilidadebhpampulha.com.br, 1 @@ -35439,7 +35419,6 @@ contact.inc, 1 contact.xyz, 1 contactbadger.com, 1 -contacted.io, 0 contactelus88.fr, 1 contactsrl.it, 1 contactstay.com, 1 @@ -35448,12 +35427,11 @@ contalbi.pt, 1 contaminatie.nl, 1 contango.xyz, 1 +contato.vip, 1 contecgmbh.com, 1 contempfleury.com, 1 -contemplativeeducation.org, 1 contemptevoke.com, 1 contenedoresdereciclaje.online, 1 -content.watch, 1 contentcaching.com, 1 contentpass.io, 1 contentpass.net, 1 @@ -35540,6 +35518,7 @@ convenantencheck.nl, 1 convergence.fi, 1 convergencela.com, 1 +convergent.tn, 1 convergenza.roma.it, 1 convergnce.com, 1 conversationexchange.com, 1 @@ -35571,7 +35550,6 @@ conwaysc.gov, 1 conwood.best, 1 conwood.my.id, 1 -conwx.com, 1 conxcon.de, 1 coo.ooo, 1 coobis.com, 1 @@ -35581,16 +35559,15 @@ 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 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 @@ -35606,6 +35583,7 @@ cookingperformancegroup.com, 1 cooko.at, 1 cooks.house, 1 +cooks.ly, 1 cooksite.tk, 1 cooktiva.com, 1 cooktoprepairaustin.com, 1 @@ -35652,7 +35630,6 @@ coolulder.net, 1 coolweirdfacts.ga, 1 coolwinefix.com, 1 -coombsinc.com, 1 coomer.st, 1 coomonte.tk, 1 coonelnel.net, 1 @@ -35678,6 +35655,7 @@ coordonnees-gps.fr, 1 coore.jp, 1 coorpacademy.com, 1 +coosada911al.gov, 1 coosbayor.gov, 1 cooscountynh.gov, 1 cooscountyor.gov, 1 @@ -35756,7 +35734,6 @@ 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 @@ -35770,7 +35747,7 @@ cordeydesign.ch, 0 cordial.systems, 1 cordialapis.com, 1 -cordialsystems.com, 1 +cordialsystems.com, 0 cordioea.net, 1 cordis.io, 0 cordlessdog.com, 1 @@ -35831,7 +35808,6 @@ coretechnology.ie, 1 coretema.eu, 1 coreum.ca, 1 -coreup.de, 1 corevetconnect.co.uk, 1 corexpert.com, 1 coreyjmahler.com, 1 @@ -35895,7 +35871,6 @@ coroas10.tk, 1 coroimagen.tk, 1 corona-data.eu, 1 -corona-renderer.cloud, 1 coronacheck.nl, 1 coronasafe.network, 1 coronastationphotography.com, 1 @@ -35909,7 +35884,6 @@ coronavirustesting.gov, 1 coronersconnect.co.uk, 1 cororocierodebelen.tk, 1 -corover.ai, 1 corp.goog, 1 corpconsulting.com, 1 corpdocs.com.au, 1 @@ -35942,7 +35916,6 @@ corpuschristisouthriver.org, 1 corpuschristitx.gov, 1 corpusslayer.com, 1 -corpvs.com.br, 1 corr-met.pl, 1 corradofranco.it, 1 corrales-sanchez.tk, 1 @@ -35998,6 +35971,7 @@ cortestesisat.net, 1 cortex-development.de, 1 cortex-tickets.de, 1 +cortexsage.com, 1 cortezco.gov, 1 cortezsanitation.gov, 1 corthouts.pl, 1 @@ -36019,6 +35993,7 @@ corvel.com, 1 corvettesalvage.com, 1 corvetto.tk, 1 +corvly.com, 1 corvus.eu.org, 1 corvuscorax.info, 1 coryadum.com, 1 @@ -36078,6 +36053,7 @@ cosmosenalerta.tk, 1 cosmosfala.com.br, 1 cosmosmkt.com.mx, 1 +cosmowords.games, 1 cosmoz.ga, 1 cosmundi.de, 1 cosmv.org, 1 @@ -36089,7 +36065,6 @@ cospol.ch, 0 cosset.com.tw, 1 costa-ballena.tk, 1 -costa-blanca.space, 1 costalinux.tk, 1 costaneranorte.cl, 1 costaricadreamers.com, 1 @@ -36100,7 +36075,6 @@ costco.co.nz, 1 costco.co.uk, 1 costco.com.au, 1 -costco.com.mx, 1 costcoinsider.com, 1 costel.tk, 1 costelcom.co, 1 @@ -36155,7 +36129,6 @@ couchscreen.de, 1 couetteduvet.fr, 1 cougar-bordeaux.fr, 1 -cougargrades.io, 1 coughlan.de, 1 could.jp, 1 couleur-lavande.com, 1 @@ -36290,6 +36263,7 @@ coutelleriederibbes.fr, 1 coutts.com, 1 couverture-barre.fr, 1 +cov.com, 1 covar.com.co, 1 cove.chat, 1 coventa.cl, 1 @@ -36370,7 +36344,6 @@ coyote105.com, 1 coyotegear-usa.com, 1 coyotehillstecate.com, 1 -coz-artistic.net, 1 cozanne.fr, 1 coze.zone, 1 cozinharaz.com, 1 @@ -36379,13 +36352,13 @@ cozmoyachts.com, 1 cozo.me, 1 coztacukrzyca.pl, 1 -cozumelairlines.com, 1 cozumelflight.com, 1 cozumelisparadise.com, 1 cozyeggdesigns.com, 1 cozyfarms.in, 1 cozynergy.com, 1 cp-st-martin.be, 1 +cp.pt, 1 cpac.moe, 1 cpac.nyc, 1 cpacharge.com, 0 @@ -36454,7 +36427,6 @@ cpsq.fr, 1 cpstest.live, 1 cpstest.org, 1 -cptcreative.com, 1 cptoon.com, 1 cpts-tdm16.fr, 1 cptvl.de, 1 @@ -36523,6 +36495,7 @@ cradletocareer.org.uk, 1 craft-beer.life, 1 craft-me-in.com, 1 +craft.eu.org, 1 craftadda.com, 1 craftandbuild.de, 1 craftbyhand.com, 1 @@ -36532,6 +36505,7 @@ craftcms.com, 1 crafted.cat, 1 craftedcharmweddingplanning.com, 1 +craftedsignal.io, 1 crafterbase.de, 1 crafters-room.com, 1 crafters.co.jp, 1 @@ -36560,7 +36534,7 @@ craftyphotons.net, 1 craftyun.cn, 1 craig-mullins.com, 1 -craigary.net, 0 +craigary.net, 1 craigbates.co.uk, 0 craigdavis.ga, 1 craigfrancis.co.uk, 1 @@ -36677,7 +36651,7 @@ crcncc.org, 1 crcprojects.in, 1 crcr.pw, 1 -cre-pf.org.au, 1 +cre-pf.org.au, 0 cre8ivedeals.com, 1 crea-shops.ch, 0 crea.bg, 1 @@ -36751,6 +36725,7 @@ creativeedge.ch, 1 creativeeducation.tk, 1 creativeexpertdesigner.com, 1 +creativefinisheshub.com, 1 creativegraphix.com, 1 creativeground.com, 1 creativeground.com.au, 1 @@ -36792,6 +36767,7 @@ creatuasociacion.es, 1 creature.social, 1 creayes.com, 1 +creaza.nl, 1 crebita.de, 1 creche-noel.com, 1 crechepequenopolegar.com.br, 1 @@ -36819,8 +36795,6 @@ creditcorponline.com, 0 creditenonstop.ro, 1 crediteurope.ru, 1 -creditfair.in, 1 -credithuman.com, 1 creditif.tk, 1 creditkarma.ca, 1 creditkarma.com, 1 @@ -36855,7 +36829,6 @@ creelandgow.com, 1 creep.tk, 1 creepycraft.nl, 1 -creepymemes.com, 1 creepynuts.com, 1 creepypastas.com, 1 creepystories.tk, 1 @@ -36873,6 +36846,7 @@ crena.ch, 1 crepa.ch, 0 crepusculofansmexico.tk, 1 +crepz.ai, 1 crescendo.ai, 0 crescendo.ventures, 1 crescent-moon.tk, 1 @@ -36882,7 +36856,6 @@ cresserons.fr, 0 cressetcapital.com, 1 crestalepropiedades.com.ar, 1 -crestaproject.com, 1 crestasantos.com, 1 crestataustin.com.my, 1 crestaurant.com.au, 1 @@ -36948,10 +36921,8 @@ 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 @@ -36992,10 +36963,8 @@ 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 @@ -37189,11 +37158,9 @@ crowdfiber.com, 1 crowdpress.it, 1 crowdsim3d.com, 1 -crowdstack.com, 1 crowdstack.io, 1 crowdsupply.com, 1 croweleaseaccountingexpress.com, 1 -croweserver.com, 1 crowleytxlicensedelectrician.com, 1 crown-beverage.com, 1 crown-building.com, 1 @@ -37203,7 +37170,6 @@ crownchessclub.com, 1 crownedhijab.com, 1 crownhotelharrogate.com, 1 -crownmazda.ca, 1 crownmutual.com, 1 crownmutualgroup.com, 1 crownpeak.com, 1 @@ -37229,6 +37195,7 @@ crspcrst.ca, 1 crsserviceogkloak.dk, 1 crstat.ru, 1 +crt.sh, 1 crt2014-2024review.gov, 1 crtevents.co.uk, 1 crtified.me, 1 @@ -37269,6 +37236,7 @@ crutic.gq, 1 cruxreasoning.com, 1 cruzadamorada.tk, 1 +cruzrealestatepropertiesllc.com, 1 crvenikrst.tk, 1 cry-sys.de, 0 cryb.me, 1 @@ -37374,6 +37342,7 @@ cryptopaste.org, 1 cryptophobia.nl, 1 cryptopolitan.com, 1 +cryptops.fr, 1 cryptorival.com, 1 cryptoscamdb.org, 1 cryptoscope.io, 1 @@ -37390,6 +37359,7 @@ cryptoya.io, 1 cryptozoologyguide.com, 1 cryptpad.cz, 1 +cryptpeer.com, 1 cryptsetup.com, 1 cryptulo.com, 1 crys.cloud, 1 @@ -37419,11 +37389,11 @@ crystalsdollz.tk, 1 crystalsky.tk, 1 crystalspringsms.gov, 1 -crystmaple.net, 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 @@ -37493,8 +37463,6 @@ 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 @@ -37598,6 +37566,7 @@ ctafo.com, 0 ctauditors.gov, 1 ctbirding.org, 1 +ctc-g.com.sg, 1 ctcloud.ml, 1 ctcom-peru.com, 1 ctconp.org, 1 @@ -37611,7 +37580,6 @@ ctf-albstadt.de, 1 ctf-archive.com, 0 ctf.link, 1 -ctg.com, 1 cthomas.work, 1 cthulhuden.com, 1 ctir.gov.br, 1 @@ -37636,6 +37604,7 @@ ctpe.net, 1 ctpro.net, 1 ctr-sante.eu, 1 +ctrackcrystal.co.za, 1 ctrl-click.fr, 1 ctrl.blog, 1 ctrl.gr, 0 @@ -37657,13 +37626,13 @@ 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 @@ -37697,7 +37666,6 @@ cubia4.com, 1 cubic-lynx.com, 1 cubicle.tk, 1 -cubiest.com, 1 cubigames.tk, 1 cubikus.fr, 1 cubile.xyz, 1 @@ -37742,7 +37710,6 @@ cuevafelina.tk, 1 cuevasymontoto.com, 1 cufoon.com, 1 -cugetliber.ro, 1 cuhadardokuma.com, 1 cuhawaii.com, 1 cuidadosamente.com, 1 @@ -37751,12 +37718,12 @@ cuir-lipari.fr, 1 cuisine-centrale17.fr, 1 cuisine-ultime.fr, 1 +cuisineburst.com, 1 cuitrau.tk, 1 cujanovic.com, 1 cukrarnalahoda.cz, 1 cukrinelape.com, 1 cukrzyca.net, 1 -cuktech.tr, 1 cukurbag.ml, 1 culan.dk, 0 culaoxi.com, 0 @@ -37815,7 +37782,6 @@ cumingcountyne.gov, 1 cumlaudegent.be, 1 cumman.life, 1 -cummiesin.me, 1 cumnock.name, 1 cumnock.org, 1 cumplegenial.com, 1 @@ -37920,15 +37886,12 @@ currentchaos.tk, 1 currenteurope.eu, 1 currenthaus.com, 1 -currentlystreaming.com, 1 currycountynm.gov, 1 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 @@ -37940,7 +37903,6 @@ cursos-trabajadores.net, 1 cursos.com, 1 cursos.enf.br, 1 -cursosbajoprecio.com, 1 cursosdepestanas.com, 1 cursosemmaus.es, 1 cursosforex.com, 1 @@ -38003,6 +37965,7 @@ customsandals.tk, 1 customsportsocks.com, 0 customtel.com.au, 1 +customtruckaccessories.com, 1 customtshirtrequest.com, 0 customwebsitesplus.com, 0 customwritings.com, 1 @@ -38019,7 +37982,6 @@ cute-urls.ml, 1 cute2u.com, 1 cuteboibutt.ml, 1 -cutegifmaker.com, 1 cutehost.ga, 1 cutemodel.ml, 1 cutenfunnypets.com, 1 @@ -38147,7 +38109,6 @@ cwrau.info, 1 cwrau.io, 1 cwrau.rocks, 1 -cws.ae, 1 cwtsamplecenter.com, 1 cwtv.cc, 1 cwtv.in, 1 @@ -38156,7 +38117,6 @@ cxbmystore.com, 1 cxcarepro.com, 1 cxense.com, 1 -cxfund.com.cn, 1 cxologic.com, 1 cxologic.io, 1 cxologic.net, 1 @@ -38166,7 +38126,6 @@ cxpbrasil.com.br, 1 cy.ax, 1 cy.technology, 1 -cyabra.com, 1 cyanhexagon.com, 1 cyanogenupdatetracker.com, 1 cybaa.io, 1 @@ -38224,6 +38183,7 @@ cyberclasse.ca, 1 cyberclaw.tk, 1 cybercloud.cc, 0 +cyberclub.com.br, 1 cyberconsultia.com, 1 cybercrew.cc, 1 cybercrew.rocks, 1 @@ -38231,6 +38191,7 @@ cyberd.org, 0 cyberdan.co.uk, 1 cyberdean.fr, 1 +cyberdefgeek.com, 1 cyberdevelopment.es, 1 cyberdiscoverycommunity.uk, 1 cyberdog.ch, 1 @@ -38255,7 +38216,6 @@ cybergroup.cf, 1 cyberguardian.consulting, 1 cyberhaus.ch, 1 -cyberhelden.nl, 1 cyberhipsters.nl, 1 cyberhost.uk, 1 cyberinfraarmor.com, 1 @@ -38328,6 +38288,7 @@ cyberschmiede.com, 1 cyberschmiede.de, 1 cyberscroll.com, 1 +cybersecops.bg, 1 cybersecur.co.ao, 0 cybersecurite-info.fr, 1 cybersecurity.gov, 1 @@ -38349,7 +38310,7 @@ cybersmart.co.uk, 1 cybersolution.tk, 1 cybersolve.com, 1 -cybersoulz.com, 1 +cybersoulz.com, 0 cybersound.tk, 1 cyberspect.io, 1 cyberspot-ci.net, 1 @@ -38436,7 +38397,6 @@ cynqx.com, 1 cynrgie.fr, 1 cynthiacherry.com, 1 -cyoa.com, 1 cyon.ch, 1 cyp.io, 1 cype.dedyn.io, 1 @@ -38444,6 +38404,7 @@ cyph.healthcare, 1 cyph.ws, 1 cyphar.com, 1 +cyphene.com, 1 cypherbot.org, 1 cypherock.com, 1 cypherpunk.observer, 1 @@ -38452,6 +38413,7 @@ cypro.co.uk, 1 cyprus-company-for.gr, 1 cyprus-company-service.com, 1 +cyprus-consult.com, 1 cyprustimes.com, 1 cyqual.com, 1 cyraco.com, 1 @@ -38479,6 +38441,7 @@ cytosorbents.com, 1 cytovet.ru, 1 cyvault.io, 1 +cywall.co, 1 cz.ma, 1 cz.nl, 1 czakey.net, 1 @@ -38506,6 +38469,7 @@ czechps.cz, 1 czechvirus.cz, 1 czeh.us, 1 +czerner.cz, 1 czewo-data.de, 1 czirnich.org, 1 czk.mk, 1 @@ -38527,7 +38491,7 @@ d-eisenbahn.com, 1 d-ku.de, 1 d-macindustries.com, 1 -d-mind.de, 1 +d-mind.de, 0 d-shed.tk, 1 d-soft.tk, 1 d-solutions.com.au, 1 @@ -38566,6 +38530,7 @@ d25x5pqe2jwu0a.cloudfront.net, 1 d2evs.net, 1 d2i06m35fc7thi.cloudfront.net, 1 +d2i28hdolds51o.cloudfront.net, 1 d2servicios.com, 1 d2trade.tk, 1 d2woj1dt0tk6sn.cloudfront.net, 1 @@ -38603,7 +38568,6 @@ d82365.com, 1 d883vip.com, 1 d884vip.com, 1 -d8859.com, 1 d885vip.com, 1 d886vip.com, 1 d887vip.com, 1 @@ -38656,12 +38620,12 @@ 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 @@ -38698,7 +38662,6 @@ daemon.xin, 1 daemons.ml, 1 daemonslayer.net, 1 -daemus.ro, 0 daemwool.ch, 1 daenet.de, 1 daer.cloud, 1 @@ -38818,6 +38781,7 @@ dairikab.go.id, 1 dairy.com.sg, 1 dairydata.ie, 1 +dairygoldagri.ie, 1 daisidaniels.co.uk, 1 daisuki.pw, 1 daisy-peanut.com, 1 @@ -38895,7 +38859,6 @@ dallaswestinternational.ga, 1 dallatana.tk, 1 dallatur.com.br, 1 -dalliard.ch, 1 dallinbryce.com, 1 dallincooper.com, 1 dalliope.com, 1 @@ -38996,6 +38959,7 @@ danceworld.tk, 1 dancingangels.tk, 1 dancingcubs.co.uk, 1 +dancol.org, 1 danddy.eu, 1 dandelikaliadventure.com, 1 dandelion.eu, 1 @@ -39064,7 +39028,7 @@ danielbotelho.com, 1 danielcardoso.net, 1 danielcolquitt.com, 1 -danieldavies.co.uk, 1 +danieldavies.co.uk, 0 danielderidderfansite.tk, 1 danieldevine.tk, 1 danielduran.tk, 1 @@ -39078,6 +39042,7 @@ danielfukuda.com, 1 danielg0.co.uk, 1 danielg0.com, 1 +danielgamrot.cz, 1 danielgil.pt, 1 danielgorr.de, 1 danielgray.email, 1 @@ -39159,10 +39124,9 @@ dankim.de, 0 dankojunasevic.tk, 1 danla.nl, 1 -danlirette.ca, 1 danlirette.com, 1 danlockton.tk, 1 -danloona.nl, 1 +danma.in, 1 danmaby.com, 1 danmassarano.com, 1 danminkevitch.com, 0 @@ -39221,8 +39185,9 @@ dantesinferno.tk, 1 danthecloudman.com, 1 dantikap.tk, 1 +dantob.com.au, 1 dantri.com.vn, 1 -danux.co.uk, 1 +danux.co.uk, 0 danvillebikeandfootwear.com, 1 danvillein.gov, 1 danvillevt.gov, 1 @@ -39276,6 +39241,7 @@ darebioscience.com, 1 daredefydiscover.ca, 1 daredorm.com, 1 +darehousingfoundation.org, 1 darenc.gov, 1 darenet.org, 1 daresay.games, 1 @@ -39297,6 +39263,7 @@ dariusheghbali.tk, 1 dariusstoica.com, 1 dariusstoica.de, 1 +dariusstoica.ro, 1 darix.tk, 1 dark-ages.tk, 1 dark-crystal.tk, 1 @@ -39305,7 +39272,6 @@ 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 @@ -39339,6 +39305,7 @@ darkgames.cf, 1 darkgrid.eu, 1 darkhall.tk, 1 +darkhelm.org, 1 darkhuntersworld.tk, 1 darkinvasion.tk, 1 darkishgreen.com, 1 @@ -39359,6 +39326,7 @@ darknessinme.tk, 1 darkoctoberseance.com, 1 darkoff.tk, 1 +darkorp.dk, 1 darkotip.tk, 1 darkovepredmety.cz, 1 darkpassionsite.tk, 1 @@ -39371,7 +39339,6 @@ darksair.org, 1 darkscience.tk, 1 darksecret.dk, 1 -darkseller.in, 1 darkserver.fedoraproject.org, 1 darkserver.stg.fedoraproject.org, 1 darksideprod.tk, 1 @@ -39400,8 +39367,10 @@ 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 @@ -39410,6 +39379,7 @@ darrenflemingphotography.co.uk, 1 darrenlines.uk, 1 darrenm.net, 1 +darrentoh.ai, 1 darrouzettisd.gov, 1 dart-tanke.com, 1 dart-tanke.de, 1 @@ -39495,6 +39465,7 @@ data-loader.com, 1 data-mail.tk, 1 data-mining.co.uk, 1 +data-mirror.org, 1 data-privacy.tk, 1 data-reader.de, 1 data-replicator.cloud, 1 @@ -39522,9 +39493,8 @@ databiz.co, 1 databiz.ga, 1 datablender.nl, 1 -databridge360.com, 1 +databridge360.com, 0 databutlr.com, 1 -databutlr.net, 1 datacad.com, 1 datacalle.com, 1 datacandy.com, 0 @@ -39537,7 +39507,7 @@ datacenternews.ca, 1 datacenternews.co.nz, 1 datacenternews.us, 1 -datacenterunited.com, 1 +datacentrenews.ie, 1 datacentrenews.in, 1 datacentrenews.uk, 1 datacentresupport.com, 1 @@ -39555,7 +39525,7 @@ datacommissioner.gov.au, 0 datacomp.sk, 1 datacool.tk, 1 -datacorp.fr, 1 +datacorp.fr, 0 datadefendersforum.com, 1 datadoghq.com, 1 datadorf.de, 1 @@ -39594,7 +39564,6 @@ datamish.com, 1 datamotion.com, 1 datanaka.com, 1 -datanetusa.com, 1 datapiped.com, 1 dataprisma.com.br, 1 dataprivacyframework.gov, 1 @@ -39650,6 +39619,7 @@ dataweeknl.nl, 1 datax-cloud.de, 1 dataxl.net, 1 +datayoyo.fr, 1 datazoo.asia, 1 datazoo.com, 1 date-conference.com, 1 @@ -39673,7 +39643,6 @@ datenrettung360.at, 1 datenrettung360.de, 1 datenschutz-berlin.de, 1 -datenschutz-consult.de, 1 datenschutz-gruenwald.de, 1 datenschutz-individuell.de, 1 datenschutz-isny.de, 1 @@ -39718,7 +39687,6 @@ datnenhamiltongarden.com, 1 datorb.com, 1 datorhjalpen.link, 1 -datorhjalptaby.se, 1 datos-quimsaitw.es, 1 datosfreak.tk, 1 datovy-portal.cz, 1 @@ -39854,7 +39822,6 @@ davidmanouchehri.com, 1 davidmessenger.co.uk, 1 davidmgarvin.com, 1 -davidmirandamd.com, 0 davidmlujan.com, 1 davidmyers.org, 1 davidn.cz, 1 @@ -39943,7 +39910,6 @@ dawnzine.com, 1 dawonmedax.com, 1 dawprogram.org, 1 -dawrimiz.com, 1 dawson-floridavilla.co.uk, 1 dawsoncountyga.gov, 1 dawsoncountyne.gov, 1 @@ -39964,6 +39930,7 @@ day.marketing, 1 dayachts.com, 1 dayagainstdrm.org, 1 +dayasgames.com, 1 daybreaklearning.com.au, 1 daybuy.tw, 1 daycomtech.com, 1 @@ -39972,6 +39939,7 @@ daydream.is, 1 daydream.team, 1 dayesh.tk, 1 +dayfloorcoveringinstallation.com, 1 daygametraining.com, 1 daylafit.com, 1 daylightpirates.org, 1 @@ -40036,6 +40004,7 @@ dbeilharz.eu, 1 dbentertainment.co.uk, 1 dbeta.co.uk, 1 +dbfopraga-pn.waw.pl, 0 dbgames.info, 1 dbhome.org, 1 dbhouse.tk, 1 @@ -40219,6 +40188,7 @@ 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 @@ -40275,6 +40245,7 @@ dealerwriter.com, 1 dealflowpro.io, 1 dealha.com, 1 +dealhabibi.com, 1 dealinflatables.co.uk, 1 dealjumbo.com, 1 deallix.com, 1 @@ -40305,6 +40276,7 @@ dearburma.com, 1 dearfrannypodcast.com, 1 dearktiel.nl, 1 +dearpeople.eu, 1 deasserstadsloop.nl, 1 deasy-store.com, 1 death-notices.co.uk, 1 @@ -40327,8 +40299,6 @@ deavel.com, 1 deavel.fr, 1 deavel.net, 1 -deavita.fr, 1 -deavita.net, 1 deavon.tk, 1 debacker.biz, 1 debarkader34.tk, 1 @@ -40355,6 +40325,7 @@ debelareabogados.es, 0 debelbaum.com, 1 debelicd.tk, 1 +deberranger.com, 1 debesiukas.lt, 1 debewaker.tk, 1 debian-hell.org, 1 @@ -40443,6 +40414,7 @@ deciso.eu, 1 decisora.com, 1 decizzy.com, 1 +deckconnect.me, 1 deckerammo.com, 1 deckerville-mi.gov, 1 deckfix.co.nz, 1 @@ -40451,6 +40423,7 @@ declarando.es, 1 declaration250.gov, 1 declarativ.ga, 1 +declarpro.fr, 1 declivitas.com, 1 declutteringmymess.com, 1 deco.tax, 1 @@ -40458,7 +40431,9 @@ decock-usedcars.be, 1 decode.ga, 1 decodeanddestroy.com, 1 +decodeit.nz, 1 decoder.eu.org, 1 +decodiverse.com, 1 decombejean.fr, 1 decompression.tk, 1 decompressneuroma.com, 1 @@ -40494,7 +40469,6 @@ decoyoctopus.tk, 1 decrousaz-ceramique.ch, 0 decrypt.co, 1 -decrypto.net, 1 decs.es, 1 decstasy.de, 1 decsys.work, 1 @@ -40550,7 +40524,6 @@ deepharbor.vc, 1 deephill.com, 1 deephue.studio, 1 -deepid.com, 1 deepinsight.io, 0 deepl.com, 1 deepmountains.tk, 1 @@ -40586,6 +40559,7 @@ defcon.social, 1 defcongame.tk, 1 defectivebydesign.org, 1 +defectradar.com, 1 defeestboek.nl, 1 defeestridders.tk, 1 defelo.de, 1 @@ -40670,7 +40644,6 @@ degreeverify.com, 1 degreeverify.net, 1 degreeverify.org, 1 -degressif.com, 1 degroetenvanrosaline.nl, 1 degrootenslot.nl, 0 degroupnews.com, 1 @@ -40709,7 +40682,6 @@ deinupdate.de, 1 deionized.ga, 1 deitec-global.com, 1 -deitte.com, 1 deitti.net, 1 deja-lu.de, 1 dejandayoff.com, 1 @@ -40733,7 +40705,6 @@ dekasegi-kansai.com, 1 dekbedden.nl, 1 dekel.co.il, 1 -dekesharon.com, 1 dekeurslagers.nl, 1 dekhanyalcalde.com, 1 dekinai.moe, 1 @@ -40790,7 +40761,6 @@ delete.cf, 1 deletebin.com, 1 deletebin.org, 1 -deletecat.com, 1 delfi.ee, 1 delfi.lt, 1 delfi.net, 1 @@ -40927,7 +40897,6 @@ delzottolink.com, 1 demaison.pro, 1 demakkelijkevegan.nl, 1 -demandcaster.com, 1 demander.tk, 1 demandmatrix.com, 1 demannen.tk, 1 @@ -41031,7 +41000,6 @@ denboschtimemachine.nl, 1 dencel.lv, 1 denchik.tk, 1 -dencore.eu, 1 dendi.tk, 1 dendibanget.tk, 1 dendionigi.com, 1 @@ -41083,6 +41051,7 @@ denizlicilingir.org, 1 denizlihaber.tk, 1 denizlihaberleri.tk, 1 +denizlihaliyikama.net, 1 denizlisohbet.tk, 1 denizuydur.nl, 1 denk-it.be, 0 @@ -41100,7 +41069,6 @@ dennino.gr, 1 dennis-carpenter.com, 1 dennis.reisen, 1 -dennis50jaar.nl, 1 dennisang.com, 1 denniscsl.com, 1 dennisdgr.ddns.net, 1 @@ -41288,8 +41256,6 @@ deqa-vet.de, 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 @@ -41303,7 +41269,6 @@ deratisationidf.com, 1 deratisationparis-75.com, 1 derattizzare.it, 1 -derattizzazione.name, 1 derattizzazioni.biz, 1 derattizzazioni.it, 1 derattizzazioni.milano.it, 1 @@ -41376,6 +41341,7 @@ derpynerd.xyz, 1 derre.fr, 1 derreichesack.com, 1 +derrickvoice.io, 1 derricofinancialservices.com, 0 derrigimlaghtokylemoregreenway.ie, 1 derriteice.com, 1 @@ -41405,6 +41371,7 @@ descargapormega.ml, 1 descobrim.com, 1 desconfiats.tk, 1 +desconteira.com.br, 1 descopera.ro, 1 descubre.ml, 1 descuentomi.es, 1 @@ -41442,6 +41409,7 @@ deshobi.cloud, 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 @@ -41554,6 +41522,7 @@ dessinemoilademocratie.ch, 0 desstrade.com, 1 dest-gottskar-nidingen.se, 1 +destan.bg, 1 destcyr.com, 1 destech.nl, 1 desteconsilium.be, 1 @@ -41586,11 +41555,11 @@ 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.org, 1 -desucla.com, 1 desvan.tk, 1 deswaffelaars.tk, 1 desy.tk, 1 @@ -41712,9 +41681,11 @@ devalkincentives.nl, 1 devalps.eu, 1 devanstavern.tk, 1 +devarena.pp.ua, 1 devastacion.tk, 1 devb.nl, 1 devbay.cc, 1 +devcarollo.com, 1 devcf.com, 1 devcftc.gov, 1 devchuli.ml, 1 @@ -41842,6 +41813,7 @@ devries.frl, 1 devries.one, 1 devrijejansenist.nl, 1 +devrijheidameland.nl, 1 devs-env.com, 1 devs-from.asia, 1 devsectools.com, 1 @@ -41932,6 +41904,7 @@ dfg.re, 1 dfiik.com, 1 dfilip.icu, 1 +dfkp.de, 1 dfm.ae, 0 dfmn.berlin, 1 dfmvf.org, 1 @@ -42008,6 +41981,7 @@ dgrj.com.br, 1 dgroups.org, 1 dgschell.com, 1 +dgst.cloud, 1 dgt-portal.de, 1 dgtl.hosting, 1 dgtl.tools, 1 @@ -42045,7 +42019,6 @@ dhl-smart.ch, 1 dhlcotizadorexpo-qa.azurewebsites.net, 1 dhlinux.org, 1 -dhlkh.com, 1 dhlparcel.nl, 1 dhome.at, 1 dhrupad.tk, 1 @@ -42108,6 +42081,7 @@ dialogue.co, 1 dialoguecorp.com, 1 dialoguecorp.eu, 1 +dialox.ai, 1 dialradio24.tk, 1 dialybiendong.tk, 1 diamant.family, 1 @@ -42163,7 +42137,7 @@ diaocan.com, 1 diaoyu8.com, 1 diapazon.kz, 1 -diapuls.ru, 1 +diapuls.ru, 0 diare-na-miru.cz, 1 diario-egipto.com, 1 diariodearaxa.com.br, 1 @@ -42198,7 +42172,6 @@ diccionariodedudas.com, 1 diccionarioperu.com, 1 diccionarqui.com, 1 -dice.tokyo, 1 dicelab-rhul.org, 1 dicelab.co.uk, 1 dicemer.com, 1 @@ -42271,7 +42244,6 @@ 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 @@ -42325,6 +42297,7 @@ diegotoledo.it, 1 diegovisual.tk, 1 diehumanisten.de, 1 +diekinvest.nl, 1 diekleinekartenfabrik.de, 1 diekperaiwseis.gr, 1 dielinke-igb.de, 1 @@ -42351,8 +42324,6 @@ 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 @@ -42363,7 +42334,6 @@ dieste.com, 1 dieta-figura.tk, 1 dietandexercises.tk, 1 -dietanic.co, 1 dietaryguidelines.gov, 1 dietbrand.eu, 1 dieter.one, 1 @@ -42396,7 +42366,7 @@ differenziare.it, 1 difficulty.ga, 1 diffnow.com, 1 -diflora.it, 1 +diflora.it, 0 diflucangeneric.ml, 1 diflucanonline.tk, 1 diflucanpill.ga, 1 @@ -42461,6 +42431,7 @@ digino.jp, 1 digino.us, 1 digino.xyz, 1 +diginow.in, 1 digionline.de, 1 digiparse.com, 1 digipartindex.ch, 1 @@ -42523,7 +42494,6 @@ digitalbridge.com, 1 digitalbridge.com.au, 1 digitalbuero.eu, 1 -digitalbuyer.com, 1 digitalcanvas.com.br, 1 digitalcarbide.com, 1 digitalcash.cf, 1 @@ -42534,6 +42504,7 @@ digitalchurch.ng, 1 digitalcircusmerch.com, 0 digitalcitizens.uk, 1 +digitalcodes.info, 1 digitalcoffeepodcast.com, 1 digitalcolony.com, 1 digitalcolposcopy.com, 1 @@ -42550,13 +42521,11 @@ 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-ausleihe.de, 1 digitale-bibliothek.tk, 1 digitale-gesellschaft.ch, 1 digitale-oekonomie.ch, 1 @@ -42608,6 +42577,7 @@ 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 @@ -42738,6 +42708,7 @@ dillynbarber.com, 0 dilmahtea.me, 1 dilmarames.com, 0 +dilolabs.fr, 1 dimagrimentoincorso.it, 1 dimamergel.com, 1 dimanss47.net, 1 @@ -42754,6 +42725,7 @@ dimesitegusto.com, 1 dimeven.tk, 1 dimez.ru, 1 +dimfin.ru, 1 dimiro.co.tz, 1 dimism.eu, 1 dimitri-davies.com, 1 @@ -42827,7 +42799,7 @@ dinotv.at, 1 dintrafic.net, 1 diobrasperu.com, 1 -diocesedeosorio.org, 1 +diocesedeosorio.org, 0 diodo.me, 1 dioesfoto.com, 1 diogbatech.tk, 1 @@ -42879,12 +42851,11 @@ direc-tory.tk, 1 direct-aesthetics.com, 1 direct-sel.com, 1 -direct.cz, 0 +direct.cz, 1 direct2trade.co.nz, 1 direct365.es, 1 directaccident.co.uk, 1 directadmin.com, 1 -directairlineflights.com, 1 directautoverhuur.com, 1 directb2b.ca, 1 directcouriers.com.au, 1 @@ -42896,6 +42867,7 @@ directions.ee, 1 directions.fi, 1 directions.lt, 1 +directions.tools, 1 directlendingsolutions.com, 1 directlook.tk, 1 directly.ga, 1 @@ -42941,7 +42913,6 @@ dirkdavid.org, 1 dirkdebacker.be, 1 dirki.tk, 1 -dirkjonker.nl, 1 dirkkok.nl, 1 dirko.net, 0 dirksencenter.org, 1 @@ -43030,6 +43001,7 @@ discotek.club, 1 discotheque.tk, 1 discountduuka.com, 1 +discounted.tours, 1 discountforelectronics.tk, 1 discounto.de, 1 discountpark.fr, 1 @@ -43056,7 +43028,6 @@ discoverlutruwita.com, 1 discoverradiance.com, 1 discoversnoop.com, 1 -discoverthehawkesbury.com.au, 1 discoverthreejs.com, 1 discoverucg.co.uk, 1 discoverx.com, 1 @@ -43176,19 +43147,16 @@ 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 -displaycalibration.de, 1 displaynote.com, 1 displayrd.com, 1 disposable.link, 1 @@ -43209,7 +43177,6 @@ distancelove.ml, 1 distancelove.tk, 1 distancionno.com, 1 -distant.land, 1 distekinc.com, 0 distelbentelo.nl, 1 distelsdetails.com, 1 @@ -43301,7 +43268,7 @@ diverse.systems, 1 diversificarte.com, 1 diversify.cf, 1 -diversify.com, 1 +diversify.com, 0 diversify.ga, 1 diversity-otherwise.tk, 1 diversityflags.com.au, 1 @@ -43309,6 +43276,7 @@ diversitywatch.co.nz, 1 diversovariable.tk, 1 diversual.com, 1 +divert.cloud, 1 divertidores.tk, 1 diverzus.nl, 1 divestos.org, 1 @@ -43329,7 +43297,6 @@ divinefeminineyoga.com, 1 divinemercyparishvld.com, 1 divinemercyparishvlds.com, 1 -divinepathretreat.com, 1 divineprovidenceorphanage.org, 1 divinerooms.com, 1 divinho.com.br, 1 @@ -43346,7 +43313,6 @@ divjak.at, 1 divo-remont.tk, 1 divorce.com, 1 -divorceattorneyshouston.com, 1 divorcefiller.com, 1 divorceformsfiller.com, 1 divorcelawyer365.com, 1 @@ -43358,7 +43324,6 @@ divvy.tk, 1 divyahindi.com, 1 diw-bau.cloud, 1 -diwan.ir, 1 dixa.tech, 1 dixeo.fr, 1 dixibox.com, 1 @@ -43442,6 +43407,7 @@ djazair.tk, 1 djazim.tk, 1 djbardhi.tk, 1 +djbass.com.se, 1 djbell.tk, 1 djbessi.tk, 1 djbobbytables.com, 1 @@ -43492,6 +43458,7 @@ djichtus.tk, 1 djieno.com, 1 djinstinct.tk, 1 +djipanov.com, 1 djjab.com, 1 djjacs.tk, 1 djjonimix.tk, 1 @@ -43567,7 +43534,7 @@ djsp.uk, 1 djsp.work, 1 djswebserver.com, 1 -djt-vom-chausseehaus.de, 1 +djt-vom-chausseehaus.de, 0 djtavo.tk, 1 djthibodeau.com, 1 djtiago.tk, 1 @@ -43598,7 +43565,6 @@ dkdigital.tk, 1 dkds.us, 1 dkec2.space, 1 -dken.guru, 1 dkengineeringwork.com, 1 dkern.eu, 1 dkern.net, 1 @@ -43629,6 +43595,8 @@ 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 @@ -43751,7 +43719,6 @@ dmi.gov.lb, 1 dmia.org.au, 1 dmiapis.id, 1 -dmiaviation.com, 1 dmilb.org, 1 dmineiros.com.br, 1 dmitaxapp.ca, 1 @@ -43761,6 +43728,7 @@ dmitrysnotes.ru, 1 dmitrysyrov.com, 1 dmix.ca, 1 +dmkthinks.org, 1 dmkuchnie.pl, 0 dmlaser.nl, 1 dmlive.wiki, 1 @@ -43797,14 +43765,13 @@ dna-agency.it, 1 dna-technology.ua, 1 dna.li, 0 -dnadesigngroup.com, 1 dnadk.com, 1 dnaka91.rocks, 1 dnalounge.com, 1 dnapagamentos.com.br, 1 dnapizza.com, 1 dnash.tk, 1 -dnatechnology.io, 1 +dnatechnology.io, 0 dnb.co.in, 1 dnb.no, 1 dnb.se, 1 @@ -43835,7 +43802,6 @@ dnc.org.nz, 1 dndblog.tk, 1 dnddobbelstenen.nl, 1 -dndesturia.uk, 1 dndtools.net, 1 dnel.me, 1 dnepr-news.ru, 1 @@ -43984,6 +43950,7 @@ dockysearch.com, 1 doclassworks.com, 1 docline.gov, 1 +docloq.com, 1 doclures.com, 1 docmode.org, 1 docogo.ga, 1 @@ -44010,7 +43977,6 @@ docteurqui.fr, 0 doctoblog.fr, 1 doctorapuestas.pe, 1 -doctorapuestasargentina.com, 1 doctorbini.com, 1 doctorcalefon.com, 1 doctordabbah.com, 1 @@ -44031,7 +43997,7 @@ doctorradio.tk, 1 doctorrayaneh.com, 1 doctorsarfarazdo.ga, 1 -doctorsatdoor.com, 1 +doctorsatdoor.com, 0 doctorshealthfund.com.au, 1 doctorsinternet.com, 1 doctorswithoutborders.org, 1 @@ -44072,6 +44038,7 @@ docusign.mx, 0 docusign.nl, 0 docutayho.com, 1 +docvox.com.br, 1 docxtemplater.com, 1 doczlo.tk, 1 doda.space, 1 @@ -44093,6 +44060,7 @@ dodiedods.fr, 1 dodikod.tk, 1 dodolle.co.uk, 1 +dodopizza.ru, 1 dodotool.com, 1 dodotool.ru, 1 doedelzakken-jsh.tk, 1 @@ -44121,7 +44089,7 @@ dofus.market, 1 dog-likeeyes.tk, 1 dog-sounds.com, 0 -dog.systems, 0 +dog.systems, 1 doga-osusume.jp, 1 doga.tk, 1 dogadostuambalaj.com, 1 @@ -44187,7 +44155,6 @@ doit-intl.com, 1 doit.com, 1 doitauto.de, 1 -doj.gov.in, 1 doja-cat.ru, 1 dojah.io, 1 dojifish.space, 1 @@ -44266,7 +44233,6 @@ dolomiasdearagon.com, 1 dolomititour.com, 1 dolonki.beauty, 1 -dolorhunter.com, 1 dolorism.com, 1 dolph.de, 1 dolphbit.de, 1 @@ -44327,6 +44293,7 @@ domainscope.com, 1 domainsearchindia.com, 1 domainsecurityinfo.com, 1 +domainsecurityscanner.com, 1 domainservice.cf, 1 domainsetup.email, 1 domainsilk.com, 1 @@ -44367,6 +44334,7 @@ dominanta-law.com, 1 dominationgame.co.uk, 1 dominctheroofguy.com, 1 +domindev.com, 1 dominguezchannelclaims.com, 1 dominicana-lux.cf, 1 dominicandfelixroco.tk, 1 @@ -44461,7 +44429,6 @@ domyzitrka.cz, 1 domznak.ru, 1 don-news.tk, 1 -don-zalmrol.be, 1 dona.to, 0 donacarlota.net.br, 1 donacije.rs, 1 @@ -44470,7 +44437,6 @@ donalblaney.ga, 1 donalblaney.gq, 1 donaldduck.nl, 1 -donaldrussell.com, 1 donaldtrump.ga, 1 donaldwarner.com, 1 donama.co, 1 @@ -44558,6 +44524,7 @@ dontaerayford.co, 0 dontarriva.org.uk, 1 dontasktoask.com, 1 +dontbeevil.com, 1 dontbreakme.com, 1 dontbubble.me, 1 dontcageus.org, 1 @@ -44591,7 +44558,7 @@ donumanimo.pl, 1 donutchurroworld.com, 1 donutcompany.co.jp, 1 -donutdip.com, 1 +donutdip.com, 0 donutprincessla.com, 1 donvine.com, 1 donwana.com, 1 @@ -44636,6 +44603,7 @@ doornmore.com, 1 doors-and-windows.tk, 1 doorservice.ml, 1 +doorslite.ru, 1 doorsystemsweden.se, 1 doortodoor.ml, 1 doorzy.ca, 1 @@ -44701,6 +44669,7 @@ dorpsparade.tk, 1 dorquelle.com, 1 dorrtownshipmi.gov, 1 +dorsett-consulting.com, 1 dorth.nl, 1 dortmund.de, 1 dortmund.directory, 1 @@ -44769,7 +44738,6 @@ dothegangnamstyle.tk, 1 dotjesper.com, 1 dotjs.party, 1 -dotker.com, 1 dotkniseandroida.cz, 1 dotkod.pl, 1 dotlab.net, 1 @@ -44809,13 +44777,10 @@ douai.me, 1 douari.info, 1 douari.jp, 1 -douari.net, 1 -douari.xxx, 1 douban.city, 1 double20.gg, 1 doublearm.in, 1 doublebass-solo.com, 1 -doublebassworkshop.com, 1 doubled.ml, 1 doubledees.africa, 1 doubledees.co.ke, 1 @@ -44866,7 +44831,6 @@ doujinshi.info, 1 doukhobor.org, 1 dourowineselection.pt, 1 -doutorapostas.pt, 1 douyin.com, 1 douyinec.com, 1 douyinmusicpromotion.com, 1 @@ -44904,7 +44868,6 @@ downalarm.sk, 1 downandouts.tk, 1 downarea.com, 1 -downduvet.co.uk, 1 downer.email, 1 downer.info, 1 downestan.ga, 1 @@ -44973,7 +44936,6 @@ doyoulyft.com, 1 doypacky.cz, 1 doze-cloud.tech, 1 -dozen-donuts.com, 1 dozor.ga, 1 dozor.gq, 1 dozor.tk, 1 @@ -44997,9 +44959,8 @@ dpecuador.com, 1 dpereira.net, 1 dperkins.org, 1 -dperson.net, 1 dpeter.me, 1 -dpg.no, 1 +dpg.no, 0 dphipartner.com, 1 dpid.org, 1 dpim.org.my, 1 @@ -45169,6 +45130,7 @@ drardiving.com, 1 drardivingcenter.com, 1 dras.hu, 1 +drashna.net, 1 drasocalzado.com, 1 drasoclothes.com, 1 drastic-ds.com, 1 @@ -45210,9 +45172,9 @@ 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 drdach.pl, 1 drdamirplasticsurgeon.com, 1 @@ -45255,7 +45217,6 @@ dreamflux.xyz, 1 dreamforcetv.pro, 1 dreamhostremixer.com, 1 -dreamhotels.com, 1 dreamimd.com, 0 dreaminds.de, 1 dreaminformatique.tk, 1 @@ -45270,6 +45231,7 @@ dreamlux.cz, 1 dreamlux.sk, 1 dreammagnets.nl, 1 +dreammeaningnow.com, 1 dreamms.gg, 1 dreamofice.cn, 1 dreamoza.com, 1 @@ -45291,7 +45253,6 @@ dreamsxxl.com, 1 dreamsystems.tk, 1 dreamtapestry.ga, 1 -dreamweavers.live, 1 dreamworldstudio.tk, 1 dreamy-flat-lyon.fr, 1 dreamytheatre.com, 1 @@ -45369,6 +45330,7 @@ drhogarth.co.uk, 1 drhouserepairs.com, 1 drianpublishing.tk, 1 +dribbble.com, 1 drica.tk, 1 dricka.tk, 1 driesjtuver.nl, 1 @@ -45412,6 +45374,8 @@ 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 @@ -45480,6 +45444,7 @@ drksachsen.de, 1 drlandis.com, 1 drlarakiortho.com, 1 +drlc.com.au, 1 drleoplasticsurgery.com, 1 drlevi.cf, 1 drlevi.ga, 1 @@ -45528,6 +45493,7 @@ dronebl.org, 1 dronebox.nu, 1 dronedeploy.com, 1 +droneid.org, 1 droneland.nl, 1 droneops.ro, 1 dronepanorama.net, 1 @@ -45540,7 +45506,6 @@ 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 @@ -45572,7 +45537,6 @@ drozd.biz, 1 drozera.com, 1 drpalmer-training.com, 1 -drpancholi.com, 1 drpatyuen.com, 1 drpetervoigt.ddns.net, 1 drpetervoigt.de, 1 @@ -45610,7 +45574,6 @@ drtimothysteelresults.com, 1 drtimothysteelscholarship.com.au, 1 drtimothysteelvideos.com, 1 -drtomson.ee, 1 drtragency.com, 1 drtsaiclinic.com, 1 drtti.io, 1 @@ -45645,9 +45608,8 @@ drummondframing.com, 1 drumnbass.tk, 1 drumscrib.com, 1 -drunkcalc.com, 1 +drunkcalc.com, 0 drunkendropkes.tk, 1 -drupal.org, 1 drupalfr.be, 1 drusantia.net, 1 drusillas.co.uk, 1 @@ -45657,7 +45619,6 @@ druzya.store, 1 drv.gov.ua, 1 drvanessaphua.com, 1 -drvishnusubramani.com, 0 drvonschwarz.com, 1 drwang.group, 0 drweissbrot.com, 1 @@ -45679,7 +45640,7 @@ dryskin.gq, 1 dryskin.ml, 1 dryskin.tk, 1 -dryusdan.space, 1 +drywall.com.co, 1 drywallresponse.gov, 1 dryzgov.tk, 1 drzhnn.com, 1 @@ -45727,6 +45688,7 @@ dsgvo.name, 1 dsh.io, 1 dshield.org, 1 +dsigroup.com.tw, 1 dsimonitor.online, 1 dsiteam.in, 1 dsjbvba.be, 1 @@ -45799,7 +45761,7 @@ dtguide.ga, 1 dths.dk, 1 dtinel.org, 1 -dtk-vom-chausseehaus.de, 1 +dtk-vom-chausseehaus.de, 0 dtleague.eu, 1 dtmbnl.com, 1 dtmbx.com, 1 @@ -45873,7 +45835,6 @@ dubolom.tk, 1 dubovi.ch, 1 dubrava.tk, 1 -dubreuilville.ca, 1 dubrovnik.tours, 1 dubrovnikfoodtours.com, 1 dubrovskiy.cf, 1 @@ -46026,6 +45987,7 @@ dunedot.tk, 1 dunesadventure.net, 1 dunescorporation.tk, 1 +dunesharbourbeach.com.au, 1 dungbui.co, 0 dungbui.net, 1 dungchata.com, 1 @@ -46054,7 +46016,6 @@ duobus.nl, 1 duodeno.tk, 1 duoduocha.com, 0 -duoduodazhe.com, 1 duohao.xyz, 1 duolife.us, 1 duoluodeyu.com, 1 @@ -46079,6 +46040,7 @@ dura.si, 1 durabletravailler.tk, 1 duracell.com, 1 +duracfilm.cz, 1 durad.in.rs, 1 durad.xyz, 1 duraes.pt, 0 @@ -46121,14 +46083,13 @@ duskraven.tk, 1 dusmomente.com, 1 dusnan.com, 1 -dusonchet-construction.ch, 1 +dusonchet-construction.ch, 0 dust.bio, 1 dust.tk, 1 dust4you.tk, 1 dustbox.tk, 1 dustinbrett.com, 1 dustindecker.com, 1 -dustinpurdy.com, 1 dustjacket.one, 1 dustman.tk, 1 dustpla.net, 1 @@ -46179,7 +46140,6 @@ dutton.uk, 1 duttonmt.gov, 1 dutyfreeperfumes.tk, 1 -duurzaamgww.nl, 1 duurzaamwonen.amsterdam, 1 duux.com, 1 duv.al, 1 @@ -46195,7 +46155,6 @@ 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 @@ -46356,7 +46315,7 @@ dynamicroofingconcepts.com, 1 dynamicsandlearning.com, 1 dynamicsdays.info, 1 -dynamicservers.co.uk, 1 +dynamicservers.co.uk, 0 dynamicsnetwork.net, 1 dynamicsretailnotes.com, 1 dynamictesting.co.uk, 1 @@ -46373,10 +46332,10 @@ 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 dynn.be, 0 dyno.com, 1 dynorphin.com, 1 @@ -46497,6 +46456,7 @@ 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 @@ -46520,6 +46480,7 @@ 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 @@ -46630,7 +46591,6 @@ 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 @@ -46653,6 +46613,7 @@ 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 @@ -46668,6 +46629,7 @@ 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 @@ -46682,13 +46644,14 @@ 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, 0 +e2essentialelements.com, 1 e2feed.com, 1 e2i.com.sg, 1 e2net.social, 1 @@ -46842,6 +46805,7 @@ earthpoints.org, 1 earthquake.gov, 1 earthsalala.com, 1 +earthseed.cc, 1 earthshotprize.org, 1 earthsocialism.org, 1 earthsolidarity.org, 1 @@ -46859,7 +46823,6 @@ easlerlaw.com, 1 east-front-miniatures.com, 0 east-line.su, 1 -east-westlogistics.com, 1 eastafricafeed.ga, 1 eastarapmetdistco.gov, 1 eastarm.net, 1 @@ -46870,6 +46833,7 @@ eastcoastautoconcepts.com, 1 eastcoastcars.net, 0 eastcoastexports.tk, 1 +eastcoastpep.com, 1 eastcoasttours.com.au, 1 eastcornwallsrt.org.uk, 1 eastcottvets.co.uk, 1 @@ -46962,6 +46926,7 @@ easyeuicc.org, 1 easyfiles.ch, 1 easyfiles.gq, 1 +easyfilings.co.uk, 1 easyfloors.ae, 1 easyfoto.tk, 1 easygenerator.com, 1 @@ -47127,7 +47092,7 @@ ebenica.sk, 1 ebenvloedaanleggen.nl, 1 eberharter-steine.at, 1 -eberls.com, 1 +eberls.com, 0 eberspacher-rus.ru, 1 ebest.co.jp, 1 ebetbananom.tk, 1 @@ -47235,10 +47200,10 @@ 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 @@ -47254,7 +47219,6 @@ 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 @@ -47264,7 +47228,6 @@ echoesbase.com, 1 echoeshq.com, 0 echoesin.com, 1 -echofoxtrot.co, 1 echoit.net, 1 echoit.net.au, 1 echoit.services, 1 @@ -47300,7 +47263,6 @@ eckerl.org, 1 eckersondesign.com, 1 eckfordtownshipmi.gov, 1 -eckindustries.com, 1 eckler.ca, 1 eckotech.fr, 1 eckstein.tech, 1 @@ -47328,7 +47290,6 @@ ecmx.eu, 1 ecnetworker.com, 1 eco-derattizzazione.it, 1 -eco-gripfloor.com, 1 eco-nyashky.com.ua, 1 eco-price.ru, 1 eco-rally.cz, 1 @@ -47341,6 +47302,8 @@ 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 @@ -47357,7 +47320,6 @@ ecodepur.fr, 1 ecodesign-labo.jp, 1 ecodesigns.nl, 1 -ecodrive.in.ua, 1 ecoelectricsandiego.com, 1 ecoelegance.com.au, 1 ecoeuropa.cf, 1 @@ -47417,6 +47379,7 @@ ecommercenews.in, 1 ecommercenews.uk, 1 ecommerceuropa.eu, 1 +ecomove.pt, 1 ecomovers.com, 1 ecompen.co.za, 1 ecomsight.com, 0 @@ -47426,12 +47389,12 @@ 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 economicnews.ga, 1 economics-colleges.com, 1 economie.gouv.fr, 1 @@ -47452,7 +47415,6 @@ ecopark.asia, 1 ecopath.org, 1 ecopiscines.fr, 1 -ecopond.co.nz, 1 ecopowerenginewash.com, 0 ecopoweroil.com, 1 ecorak.de, 1 @@ -47487,6 +47449,7 @@ ecovadis.ltd, 1 ecoventfix.com, 1 ecowater.com, 1 +ecowatt.pt, 1 ecowoman-armenian.tk, 1 ecowoman-bengalian.tk, 1 ecowoman-indonezian.tk, 1 @@ -47494,7 +47457,6 @@ 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 @@ -47541,7 +47503,6 @@ ed.gs, 1 ed.nl, 1 ed394jed.fr, 1 -eda-az.com, 1 eda-records.com, 1 eda.cooking, 0 eda.gov, 1 @@ -47626,7 +47587,6 @@ edgeless.pp.ua, 0 edgelogs.com, 1 edgemagazine.net, 1 -edgemasterspaint.com, 1 edgeofnoservers.com, 1 edgeservices.co.uk, 1 edgetalk.net, 1 @@ -47707,6 +47667,7 @@ edmundy.tk, 1 edocr.com, 1 edok.com.br, 1 +edoo.pl, 1 edopomoga.gov.ua, 1 edoss.co.za, 0 edotplus.ch, 1 @@ -47753,6 +47714,7 @@ edublognews.tk, 1 edubox.pt, 1 educ-aid.site, 1 +educa.cloud, 1 educabis.tk, 1 educacaopocos.com.br, 1 educacionnm.ml, 1 @@ -47800,7 +47762,6 @@ educourse.nl, 1 edudip-next.com, 1 edudip.com, 1 -edufever.com, 1 edufever.in, 0 eduflow.at, 1 edugeton.com, 1 @@ -47830,7 +47791,6 @@ eduproject.tk, 1 eduproquality.tk, 1 eduqfix.com, 1 -eduradiadores.com.br, 1 eduroam.no, 1 eduroam.uy, 1 edusanjal.com, 1 @@ -47911,7 +47871,6 @@ een-eenvoudige-test-voor-de-maximum-lengte-van-een-nederlandse.nl, 1 een.com, 1 eenfotowaard.nl, 1 -eenmailsturen.nl, 0 eentweevijf.be, 1 eenvxing.com, 1 eenzwolle.nl, 1 @@ -47961,7 +47920,6 @@ efesocollins.org.nz, 1 efesoformayor.co.nz, 1 efesoformayor.nz, 1 -efesoformayor.org, 1 efesoformayor.org.nz, 1 eff.org, 1 effdocs.com, 1 @@ -48001,7 +47959,6 @@ efiglobal.com, 1 efiledcsuperiorcourt.gov, 1 efinanceng.com, 1 -efirbet.com, 1 efirma.com, 1 eflorashop.ch, 1 eflorashop.com, 1 @@ -48025,7 +47982,6 @@ efsalon.net.pe, 1 efsanesi.tk, 1 eft.boutique, 1 -eftcorp.biz, 1 eftelingcraft.net, 1 efterfest.tk, 1 eftotoekspertizbalikesir.com, 1 @@ -48101,7 +48057,6 @@ eglisedenantes.fr, 1 egly.se, 1 egm-sakura.com, 1 -egmbypga.com, 1 ego4u.com, 1 ego4u.de, 1 egoclan.tk, 1 @@ -48177,6 +48132,7 @@ ehome.im, 1 ehometools.com, 1 ehorizon.jp, 1 +ehourapp.com, 1 ehpad-ariege.fr, 1 ehpsmt.gov, 1 ehr.bg, 1 @@ -48216,7 +48172,6 @@ eifel-adventure.de, 1 eifel.website, 1 eifelstuebchen.de, 1 -eiffageconstruction.com, 1 eigenaardig.tk, 1 eigenbubi.de, 1 eigendeeg.eu, 1 @@ -48258,6 +48213,7 @@ 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 @@ -48300,6 +48256,8 @@ 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 eiyoushi-shigoto.com, 1 @@ -48347,6 +48305,7 @@ ekamfoundationmumbai.org, 0 ekamus.tk, 1 ekatalendra.com, 1 +ekaterinagolubovich.exposed, 1 ekati.ru, 1 ekawaiishop.com, 1 ekb-avia.ru, 0 @@ -48368,6 +48327,7 @@ ekklesia-web.com, 1 eklepka.com, 1 eklitzke.org, 1 +ekloz.org, 1 ekmanager.tk, 1 ekmo.cz, 1 eko69.pl, 1 @@ -48491,6 +48451,7 @@ elcient.com, 1 elcigaro.bg, 1 elcin.tk, 1 +elcofrecolecciones.com, 1 elcom.au, 1 elcom.com.au, 1 elcom.net.au, 1 @@ -48511,7 +48472,6 @@ elcomtv.com, 1 elcontadorsac.com, 1 elcontrol.tk, 1 -elcorbett.com, 1 elcosmos.tk, 1 elcosteno.tk, 1 elcozinante.com, 1 @@ -48623,6 +48583,7 @@ electrofreakz.tk, 1 electrofusion.de, 1 electrogenic.co.uk, 1 +electroheatinduction.com.mx, 1 electrohelp.ga, 1 electroiq.com, 1 electrolandia.tk, 1 @@ -48652,9 +48613,9 @@ 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 @@ -48677,7 +48638,6 @@ elegantly-clean.co.uk, 1 elegantseagulls.com, 0 eleganza.ga, 1 -eleicoes2018.com, 1 elejido.es, 1 elejordemarketingconsultancy.com, 1 elekner.tk, 1 @@ -48685,6 +48645,7 @@ elektiriklidireksiyontamiri.com, 1 elektiriktasarruf.tk, 1 elektrac.cz, 1 +elektricketrhovisko.sk, 1 elektriker-frankfurt.eu, 1 elektriker-notdienst-zentrale.de, 1 elektrilevi.ee, 1 @@ -48722,7 +48683,6 @@ elektromobil-zubehoer.de, 1 elektromosev.cz, 1 elektromotor.tk, 1 -elektronicka-servisni-knizka.cz, 1 elektronickakancelar.cz, 1 elektroniksigarasehri1.com, 1 elektronische-post.org, 1 @@ -48747,7 +48707,6 @@ elektrumdrive.ee, 1 elektrumdrive.lt, 1 elektrumdrive.lv, 1 -elektrumgroup.com, 1 elektrumloterija.lv, 1 elektryczka.pl, 1 elelenin.cf, 1 @@ -48825,7 +48784,6 @@ eleplant.fi, 1 elepover.com, 1 elesconditedelola.com, 1 -elestoque.org, 1 eletem.org, 1 eletminosegert.ro, 1 eletom.pl, 1 @@ -48850,7 +48808,7 @@ elevationplumbingandheating.com, 1 elevator.ee, 1 elevatoraptitudetest.com, 1 -elevaweb.cl, 1 +elevaweb.cl, 0 elevelo.eu, 1 elevenbeta.tk, 1 elevenensemble.tk, 1 @@ -48926,6 +48884,7 @@ eliguli.com, 1 elijahbrown.tk, 1 elijahgrey.com, 1 +elijahtreefelling.com, 1 elikers.ml, 1 elimidrol.com, 1 eliminations.tk, 1 @@ -49086,6 +49045,7 @@ elliot.cat, 0 elliotadler.co, 0 elliotlewisms.com, 1 +elliotluque.com, 1 elliott-assist.com, 1 elliottallanhilsinger.com, 0 elliottbernstein.com, 1 @@ -49146,7 +49106,6 @@ elona-wvw.de, 1 elonaspitze.de, 1 elonma.gov, 1 -elontime.de, 1 elorbe.com, 1 elorrieta.eus, 1 elosconstrutora.com.br, 1 @@ -49240,7 +49199,6 @@ elverdaderoamor.tk, 1 elvermann.de, 1 elvikom.co.uk, 1 -elvikom.pl, 1 elviraszabo.com, 1 elvis-atouchofgold.com, 1 elvis-presley.tk, 1 @@ -49250,13 +49208,13 @@ 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 @@ -49264,7 +49222,6 @@ 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 @@ -49275,6 +49232,7 @@ 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 @@ -49286,7 +49244,6 @@ emailable.com, 1 emailablev.com, 1 emailalaperformance.fr, 1 -emailassist.ai, 1 emailbusters.tk, 1 emailer.party, 1 emailexpress.ga, 1 @@ -49309,6 +49266,7 @@ emakicms.com, 1 emaks.tk, 1 emalm.com, 1 +emanaclinic.com, 1 emancipet.org, 1 emanol.co.uk, 1 emanuel-loos.eu, 1 @@ -49363,7 +49321,6 @@ 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 @@ -49378,7 +49335,6 @@ emdesigns.tk, 1 emdrtherapytoronto.com, 1 emdrupholm.dk, 1 -emdvcorasia.com, 1 emedpractice.com, 1 emeetattd.ddns.net, 1 emekegitimakademi.com, 1 @@ -49483,12 +49439,14 @@ 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 @@ -49519,6 +49477,7 @@ emoji-meaning.org, 1 emoji-symbols.org, 1 emoji.build, 1 +emoji.bzh, 1 emoji.web.tr, 1 emoji.wf, 1 emojiace.com, 1 @@ -49637,7 +49596,6 @@ emrawi.org, 1 emreaydinfan.tk, 1 emrecicekmuhendislik.com, 1 -emresaglam.com, 1 emrider.es, 1 emrullahsahin.com, 1 ems.gov, 1 @@ -49658,14 +49616,12 @@ 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 @@ -49689,6 +49645,7 @@ enable-javascript.com, 1 enabling.ga, 1 enablingcommunities.com.au, 1 +enact-ai.com, 1 enactor.co, 1 enago.com, 1 enai.eu, 1 @@ -49720,6 +49677,7 @@ encipher.me, 1 encirca.com, 0 encircleapp.com, 1 +enclavecairns.com.au, 1 encode.host, 1 encontra-me.org, 1 encontracarros.pt, 1 @@ -49735,6 +49693,7 @@ encretplomb.ch, 0 encryp.ch, 1 encrypt.cf, 1 +encrypt.click, 1 encrypt.my.id, 1 encrypted.at, 1 encrypted.google.com, 1 @@ -49754,6 +49713,7 @@ end.tf, 1 endangeredwatch.com, 1 endavantstap9b.tk, 1 +endbeachpollution.sydney, 1 endbegins.tk, 1 endbox.email, 1 endcottagevets.co.uk, 1 @@ -49913,7 +49873,7 @@ energysaveroregon.com, 1 energysite.tk, 1 energystar.gov, 1 -energysystems.com, 1 +energysystems.com, 0 energytrust.tk, 1 energyuse.net, 1 energywisdom.tk, 1 @@ -49964,7 +49924,6 @@ engardelinux.org, 1 engaugetools.com, 1 engbers.com, 1 -engehall.com, 1 engelandautohuur.nl, 1 engeldasein.at, 1 engeldasein.com, 1 @@ -50008,9 +49967,7 @@ 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 @@ -50019,7 +49976,6 @@ 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 @@ -50170,7 +50126,7 @@ enshrouded.com, 1 ensightpharma.com, 1 ensilencio.tk, 1 -ensimini.com, 1 +ensimini.com, 0 ensingpodotherapie.nl, 1 enskat.de, 1 enslavedplantationclub.com, 1 @@ -50179,6 +50135,7 @@ ensobrands.com, 1 ensons.de, 1 ensonyan.com, 1 +enspiredwellness.com, 1 enstavideo.com, 0 ensured.com, 1 ensured.nl, 1 @@ -50241,7 +50198,6 @@ 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 @@ -50407,6 +50363,7 @@ eosguru.ru, 1 eosol.services, 1 eostar.ro, 1 +eov.org.tr, 1 eov2.com, 1 ep-cortex.com, 1 ep-plus.jp, 1 @@ -50487,6 +50444,7 @@ episkevh-plaketas.gr, 1 episode.tk, 1 episource.com, 0 +epistalux.com, 1 epistas.com, 1 epistas.de, 1 epistemes.org, 1 @@ -50509,7 +50467,6 @@ epobocka.com, 1 epoch-film.ml, 1 epochcg.pt, 1 -epochstream.com, 1 epolitiker.com, 1 epos.az, 1 eposmidlands.co.uk, 1 @@ -50537,7 +50494,7 @@ eprosto.cf, 1 eprzybornik.pl, 1 epsamsg.com, 1 -epsilogix.com, 1 +epsilogix.com, 0 epsilon.photography, 1 epsilontel.com, 1 epsmil.it, 1 @@ -50552,7 +50509,6 @@ epubreader.org, 1 epvd.tk, 1 epweb.pro, 1 -eqalert.ru, 1 eqassociates.com, 1 eqbal.org, 1 eqibank.com, 1 @@ -50606,7 +50562,6 @@ equitable-igwm.com, 1 equitablehealthycities.org, 1 equitazionepertutti.it, 1 -equiton.com, 1 equitybank.com, 1 equityelevate.com, 1 equityloupe.ru, 1 @@ -50655,7 +50610,6 @@ erdineks.com, 1 ereader.uno, 1 erebuildings.com, 1 -erectiepillenwinkel.nl, 1 erector.cf, 1 erector.tk, 1 eredmenye.xyz, 1 @@ -50730,6 +50684,7 @@ ericsilva.me, 1 ericsilva.org, 1 ericspeidel.de, 1 +ericterminal.com, 1 ericvantijn.tk, 1 ericwie.se, 0 eridan.me, 1 @@ -50849,6 +50804,7 @@ 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 @@ -50883,7 +50839,7 @@ erwin.saarland, 1 erwinmi.gov, 1 erwinonline.tk, 1 -erwinpaal.nl, 1 +erwinpaal.nl, 0 erwinschmaeh.ch, 1 erwinsite.tk, 1 erwinwensveen.nl, 1 @@ -50894,7 +50850,6 @@ 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 @@ -50924,7 +50879,6 @@ esb8886.com, 1 esb999.com, 1 esb999.info, 0 -esb999.us, 0 esba11.cc, 1 esba11.com, 1 esbuilders.co.nz, 0 @@ -50945,7 +50899,6 @@ escandell.cat, 1 escaparate.tk, 1 escapees.com, 0 -escapeforyou.com, 1 escapegames.dk, 1 escapely.com, 1 escapemotions.com, 1 @@ -50961,7 +50914,7 @@ escobarservice7000.com, 1 escobeira.pt, 1 escoben.tk, 1 -escolaaberje.com.br, 0 +escolaaberje.com.br, 1 escolaconquer.com.br, 1 escoladejudo.com.br, 1 escoladepilota.tk, 1 @@ -50999,7 +50952,6 @@ escueladeministerioytecnologia.com, 1 escuelaparapapas.tk, 1 escuelasargento.tk, 1 -escuelitasansebastian.cl, 1 escuelotika-online.tk, 1 escursione.it, 1 esd.cc, 1 @@ -51047,7 +50999,6 @@ esiga.mx, 1 esignandpay.net, 1 esignering.se, 1 -esignprod.herokuapp.com, 1 esigtorg.ru, 0 esike.hu, 1 esiliati.org, 1 @@ -51123,7 +51074,6 @@ espacioweb.tk, 1 espacoalimentoesaude.com.br, 1 espacosaudesuplementos.com.br, 1 -espaiarrela.com, 1 espaiblancandorra.ga, 1 espaiblancandorra.gq, 1 espaiblancandorra.ml, 1 @@ -51172,6 +51122,7 @@ espritguitare.com, 1 espritguitare.fr, 1 esprk.com, 1 +espub.org, 1 esq, 1 esquelario.tk, 1 esquirebrotherhood.tk, 1 @@ -51187,6 +51138,7 @@ 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 @@ -51207,9 +51159,9 @@ essayshark.com, 1 essaytalk.com, 1 essaywebsite.com, 1 +esse.tools, 1 essecharlie.com, 1 essenah.com, 1 -essencesdeprana.org, 1 essencespresso.es, 0 essenciasparis.com.br, 1 essendi.de, 1 @@ -51292,6 +51244,7 @@ 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 @@ -51349,12 +51302,10 @@ 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 @@ -51389,6 +51340,8 @@ 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 @@ -51423,6 +51376,7 @@ ethaligan.fr, 1 ethan-hanlon.xyz, 1 ethan.pm, 1 +ethancg.com, 1 ethanjones.me, 1 ethanlew.is, 1 ethanopp.com, 0 @@ -51438,7 +51392,6 @@ etherdream.com, 1 ethereal-skies.tk, 1 etherealcollapse.tk, 1 -ethereum-news.info, 1 ethereumnews.best, 1 ethereumnews.digital, 1 ethereumnews.live, 1 @@ -51493,6 +51446,7 @@ etitlelien.net, 1 etke.cc, 1 etlab.in, 1 +etld.com.br, 1 etme.com, 1 etnoforum.tk, 1 etnoria.com, 1 @@ -51542,6 +51496,7 @@ eu-secured.com, 1 eu-stellenangebot.de, 1 eu.ax, 1 +eu.pe, 1 eu4ua.org, 1 euaaaio.ru, 0 euc.world, 1 @@ -51599,6 +51554,31 @@ eulenschmiede.de, 1 euler.finance, 1 euleres.tk, 1 +eulerhermes.be, 1 +eulerhermes.bg, 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.tr, 1 +eulerhermes.cz, 1 +eulerhermes.de, 1 +eulerhermes.es, 1 +eulerhermes.fi, 1 +eulerhermes.fr, 1 +eulerhermes.gr, 1 +eulerhermes.hk, 1 +eulerhermes.it, 1 +eulerhermes.kr, 1 +eulerhermes.lv, 1 +eulerhermes.my, 1 +eulerhermes.nl, 1 +eulerhermes.se, 1 +eulerhermes.sg, 1 +eulerhermes.sk, 1 +eulerhermes.tw, 1 eulerkey.cn, 1 eulessplumbers.com, 1 euman.ml, 1 @@ -51851,6 +51831,8 @@ evasioncreole.com, 1 evasionteam.tk, 1 evasovova.cz, 1 +evastats.gg, 1 +evav.ca, 1 evavangunsteren.com, 1 evavolfova.cz, 1 evavonschirach.com, 1 @@ -51863,6 +51845,7 @@ eve-ua.com, 1 eve.tax, 1 eve0s.com, 1 +eveandi.health, 1 eveaz.com, 1 eveco-mebel.ga, 1 evedanjailbreak.com, 1 @@ -51918,6 +51901,7 @@ eventdata.co.uk, 1 eventdata.uk, 1 eventdays.tk, 1 +eventdrop.at, 1 eventex-rentals.com, 1 eventfun.tk, 1 eventhub.events, 1 @@ -51926,13 +51910,11 @@ 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 @@ -51952,7 +51934,6 @@ eventprazdnik.ru, 1 events1.co.il, 1 eventsbytma.com, 1 -eventsforyou.fr, 1 eventsmaster.ca, 1 eventso.net, 1 eventstack.nl, 1 @@ -51964,7 +51945,7 @@ everaerts.eu, 1 everand.com, 1 everberg.tk, 1 -everchanging.de, 1 +everchanging.de, 0 evercheck.com, 1 evercred.com, 1 everdivemarine.com, 1 @@ -52064,7 +52045,6 @@ everytrycounts.gov, 1 everyveterancountsohio.gov, 1 eveshaiwu.com, 1 -eveshamglass.co.uk, 1 evest.com, 1 evetdermisin.com, 1 evetech.net, 1 @@ -52100,7 +52080,6 @@ evin.tk, 1 evisa.us.com, 1 evisos.cl, 1 -evisos.com, 1 evisos.com.ar, 1 evisos.com.mx, 1 evisos.es, 1 @@ -52108,12 +52087,12 @@ evkitdigital.com.br, 1 evl.one, 1 evlconsulting.com.au, 1 -evlilikilan.com, 0 +evlilikilan.com, 1 evlqa1sp1tzb05zo-reoo0vhj9a1t5pousfudnkg.com, 0 +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 @@ -52147,7 +52126,6 @@ evolvemodular.ca, 1 evolvetechnologies.co.uk, 1 evolvewithquantum.com, 1 -evolvexengineering.com, 1 evolvicity.org, 1 evolvingseo.com, 1 evolvingthoughts.net, 1 @@ -52215,6 +52193,7 @@ ewp.live, 1 ewritingservice.com, 1 ewsfeed.com, 1 +ewtpro.com, 1 ewuchuan.com, 1 ewuraba.co, 1 ewycena.pl, 1 @@ -52257,7 +52236,6 @@ exampleessays.com, 1 examroll.fr, 1 examroo.nl, 0 -examroom.ai, 1 examsite.tk, 1 examsmate.in, 1 examsoft.com, 1 @@ -52270,6 +52248,7 @@ exaspace.de, 1 exatmiseis.net, 0 exatom.io, 1 +exavo.fr, 1 excaliburmatrix.tk, 1 excaliburvintagequests.com, 1 excavation.ga, 1 @@ -52296,7 +52275,6 @@ excellentsurferers.ga, 1 excellentsurferest.ga, 1 excellingleaders.nl, 1 -excelnutritional.com.br, 1 excelpedia.net, 1 excelsamurai.com, 1 excelsiorcomics.com.br, 0 @@ -52400,6 +52378,10 @@ 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 @@ -52437,7 +52419,6 @@ expatriate.pl, 0 expe.voyage, 1 expectful.com, 0 -expectingplus.com, 1 expediteplus-asia.com, 1 expediteplus.biz, 1 expediteplus.ca, 1 @@ -52522,7 +52503,6 @@ exploit.party, 1 exploited.cz, 1 exploithe.net, 1 -explora.studio, 1 explorance.com, 1 exploraturuta.com, 1 exploravacations.in, 1 @@ -52643,7 +52623,6 @@ extendedteam.co, 1 extendedteam.net, 1 extendet.tk, 1 -extendgroup.com, 1 extendresources.com, 0 extendwings.com, 1 extenselizzembalagens.com.br, 1 @@ -52793,6 +52772,7 @@ ezekia.com, 1 ezequiel-garzon.net, 1 ezercommerce.com, 1 +ezfinanz.com, 1 ezgif.com, 1 ezhub.de, 1 ezik-ido.tk, 1 @@ -52835,6 +52815,7 @@ 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 @@ -52843,7 +52824,6 @@ f00f.org, 1 f0x.es, 1 f1-onlineliga.com, 1 -f13ts.nl, 1 f1bigpicture.com, 1 f1classement.com, 0 f1collection.com, 1 @@ -52943,8 +52923,8 @@ fabian-kluge.de, 1 fabian-zoske.de, 1 fabian.gq, 1 -fabianbeiner.com, 1 -fabianbeiner.de, 1 +fabianbeiner.com, 0 +fabianbeiner.de, 0 fabianbertona.com, 1 fabianegli.ch, 1 fabianfranke.de, 1 @@ -52981,7 +52961,6 @@ fabpilot.com, 1 fabriano.com, 1 fabricacultural.org.br, 1 -fabricademonstros.com.br, 1 fabricandoclientes.com.br, 1 fabricio.adv.br, 1 fabriciokleinadvocacia.com.br, 1 @@ -53023,7 +53002,7 @@ facan-godollo.hu, 1 facanabota.com, 1 facanabota.com.br, 1 -facanacaveira.com, 1 +facanacaveira.com, 0 facarospauls.com, 1 facchinaggio.milano.it, 1 facchinaggio.roma.it, 1 @@ -53063,7 +53042,7 @@ fachfusspflege-exner.de, 1 fachim.tk, 1 fachiri.tk, 1 -fachschaften.org, 0 +fachschaften.org, 1 fachschaftslisten.at, 1 fachschaftslisten.org, 1 fachversand-hennes.de, 1 @@ -53113,7 +53092,6 @@ 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 @@ -53235,7 +53213,6 @@ fairhavenvt.gov, 1 fairisleaccommodation.com, 1 fairleevt.gov, 1 -fairlesslaw.com, 1 fairline.com, 1 fairlingtonumc.org, 1 fairmates.tk, 1 @@ -53247,6 +53224,7 @@ fairmountfireco.gov, 1 fairplay.im, 1 fairporthots.com, 1 +fairtprm.com, 1 fairtrade010.nl, 1 fairviewcounseling.org, 1 fairviewevents.ca, 0 @@ -53260,6 +53238,7 @@ 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 @@ -53315,6 +53294,7 @@ fakturoid.cz, 1 fal.moe, 1 falaeapp.org, 1 +falastin.tk, 1 falbros.com, 1 falcatus-dalmatians.hu, 1 falce.in, 1 @@ -53338,7 +53318,6 @@ falegname-roma.it, 1 falegname.roma.it, 1 falegnameria.milano.it, 1 -falixnodes.net, 1 falkenbergthomsen.dk, 1 falkenthal.org, 1 falkentyre.com, 1 @@ -53446,7 +53425,7 @@ familystockexchangeers.ga, 1 familytreehq.com, 1 familytrees.net, 1 -familytreewebinars.com, 1 +familytreewebinars.com, 0 familyzone.ga, 1 famion.eu, 1 famiport.com, 1 @@ -53608,7 +53587,6 @@ fareinternational.com, 1 farenheit.net, 1 faresair.com, 1 -faresfrom.com, 1 fareto.com, 1 fareuntrasloco.it, 1 farexpress.it, 1 @@ -53652,10 +53630,8 @@ farmerbrossamples.com, 1 farmerfairness.gov, 1 farmers.gov, 1 -farmerschilemarket.com, 1 farmersfridge.com, 0 farmersgirlkitchen.co.uk, 1 -farmforte.com, 1 farmhouse.com.my, 1 farmhouse.com.sg, 1 farming.co.uk, 1 @@ -53779,7 +53755,6 @@ fashionunited.nz, 1 fashionunited.pl, 1 fashionunited.pt, 1 -fashionunited.ru, 1 fashionunited.se, 1 fashionunited.uk, 1 fashionusa.gq, 1 @@ -53799,7 +53774,6 @@ fast-drops.cf, 1 fast-events.eu, 1 fast-host.gq, 1 -fast-host.net, 1 fast-mobile.tk, 1 fast-pro.co.jp, 1 fast-silver.tk, 1 @@ -54013,7 +53987,6 @@ fbijobs.gov, 1 fbilab.gov, 1 fbk.moe, 1 -fbnquest.com, 1 fbo.gov, 1 fbo.network, 1 fboerman.nl, 1 @@ -54105,6 +54078,7 @@ fearedcreation.tk, 1 fearfactory.tk, 1 fearghus.org, 1 +fearglas.cloud, 1 fearlessmusic.tk, 1 fearstyle.tk, 1 fearunknown.tk, 1 @@ -54148,7 +54122,6 @@ federalbusers.ga, 1 federalbusest.ga, 1 federalcalendarest.ga, 1 -federalcriminaldefenseattorney.com, 1 federalinvestments.gov, 1 federaljob.net, 1 federaljobs.gov, 1 @@ -54167,6 +54140,7 @@ fedidcard.gov, 1 fedifeed.net, 1 fedinvest.gov, 0 +fedishark.eu, 1 fedistatus.com, 1 fedistatus.eu, 1 fedistatus.net, 1 @@ -54201,6 +54175,7 @@ fedramp.gov, 1 fedres.gov, 1 fedrigoni.com, 1 +fedrigopeinture.fr, 1 fedrooms.gov, 1 fedrtc.org, 1 fedsfeedfamilies.gov, 1 @@ -54236,7 +54211,7 @@ feel-events.com, 1 feel-it.nl, 1 feel.aero, 1 -feelbycubanas.com, 1 +feelaugust.com, 1 feelclear.com, 1 feeld.cloud, 1 feelerfolg.com, 1 @@ -54261,7 +54236,6 @@ feetnesclub.tk, 1 feetpa.ws, 1 feetsco.com, 1 -feezlinkz.com.ng, 1 feezmodo.com, 1 fef.moe, 1 fefacaram.com.br, 1 @@ -54302,7 +54276,6 @@ fejervar.hu, 1 fejlaw.com.au, 0 fejo.dk, 1 -fekepp.net, 1 feketerichard.hu, 1 fekir.info, 1 felcas.com.co, 1 @@ -54321,6 +54294,7 @@ felinefriend.co.uk, 1 felinepc.com, 1 felipesexto.tk, 1 +felippettoassociates.com, 1 feliratok.eu, 1 felis.com.mx, 1 feliscatus.tk, 1 @@ -54424,6 +54398,7 @@ fenns.co.za, 1 fennville.gov, 1 fennydewit.nl, 1 +fenogent.com, 1 fenom.ga, 1 fenris.ovh, 1 fenritec.eu, 0 @@ -54556,6 +54531,7 @@ ferydoonzandi.tk, 1 fescuesodsouthernindiana.com, 1 feseev.ml, 1 +fesoftware.net, 1 festaprylar.se, 1 festar.tk, 1 festesuniversitaries.tk, 1 @@ -54613,7 +54589,6 @@ 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 @@ -54633,6 +54608,7 @@ 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 @@ -54652,8 +54628,9 @@ ff-obersunzing-niedersunzing.de, 1 ff-tostedt.de, 1 ff15.ddns.net, 1 +ff2.cn, 1 ff5197.co, 1 -ff5g.com, 1 +ff5g.com, 0 ff62.fr, 1 ff6729.co, 1 ff6957.co, 1 @@ -54661,7 +54638,6 @@ ff9397.com, 1 ff9728.co, 1 ffamranteatime.com, 1 -ffaprivatebank.com, 1 ffazeshift.net, 1 ffb.gov, 1 ffb1.com, 1 @@ -54711,7 +54687,6 @@ fh-mittelstand.de, 1 fh-photographie.art, 1 fh-wechat.com, 1 -fh-x.de, 1 fh-zh.com, 1 fh.spb.ru, 1 fh169.cc, 1 @@ -54804,6 +54779,7 @@ fico.com, 1 ficor.gov, 1 fid-elite.ch, 0 +fidbank.co.uk, 1 fiddle.to, 1 fiddlesaw.com, 1 fiddlestickstoys.com.au, 1 @@ -54836,7 +54812,6 @@ fieldelectriconline.com, 1 fieldgroupny.com, 1 fieldsgynroboticsurgery.com, 1 -fieldsusa.com, 1 fieldworkbrewing.com, 1 fieldworks.ne.jp, 1 fiemmeimpianti.it, 1 @@ -54924,6 +54899,7 @@ filamentia.nl, 1 filanthropystar.org, 1 filantropikum.com, 1 +filapanel.com, 1 filaretihairlove.gr, 1 filassistance.fr, 1 filcosplay.tk, 1 @@ -54955,23 +54931,22 @@ 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 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 filipinasdailynews.tk, 1 filipinochinese.tk, 1 filipinostaff.uk, 1 @@ -54993,7 +54968,6 @@ filmbabasi.net, 1 filmbasar.com, 1 filmbest.tk, 1 -filmbooster.com, 1 filmbrain.com, 1 filmcorner.tk, 1 filmdates.co.uk, 1 @@ -55004,7 +54978,6 @@ filmfog.ga, 1 filmfreeway.com, 1 filmimpact.com, 0 -filminebandim.com, 0 filmisfun.com, 1 filmisfun.net, 1 filmizleindir.tk, 1 @@ -55070,7 +55043,6 @@ final-rest.co.uk, 1 final-x.com, 1 finalashes.tk, 1 -finalesuperuser.com, 1 finalfate.tk, 1 finalfoursteam.tk, 1 finalfourstream.tk, 1 @@ -55096,6 +55068,7 @@ financenews.tk, 1 financepre.com, 1 financestead.com, 1 +financetool.de, 1 financetwenty.com, 1 financewhile.com, 1 financewithcromulent.com, 1 @@ -55123,6 +55096,7 @@ 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 @@ -55144,6 +55118,7 @@ findairconditioningers.ga, 1 findairconditioningest.ga, 1 findallgames.com, 0 +findandfunds.com, 1 findanengineer.com, 1 findapinball.com, 1 findautoloan.ml, 1 @@ -55181,7 +55156,6 @@ findmeapp.fr, 1 findmentalhealth.co.uk, 0 findmybottleshop.com.au, 1 -findmycare.ca, 1 findmyfamily.org, 1 findmytricks.com, 0 findnhmoney.gov, 1 @@ -55236,7 +55210,6 @@ finfleet.id, 1 finform.ch, 1 finfowe.com, 1 -finfreeservice.com, 1 finfriend.work, 1 fingerlakesgaming.com, 0 fingerprintjs.com, 1 @@ -55256,6 +55229,7 @@ finkelstein.fr, 1 finlandcook.online, 1 finlandcook.top, 1 +finlay.nyc, 1 finlayjacks.co.nz, 1 finlaylloyd.com, 1 finlays.net, 1 @@ -55301,7 +55275,6 @@ finverse.com, 0 finwarriors.tk, 1 finwe.info, 1 -finy.pl, 1 finzy.com, 1 fionahengartner.ch, 1 fionamcbride.com, 1 @@ -55371,14 +55344,13 @@ fireservicerota.co.uk, 1 fireshellsecurity.team, 1 firesmoke.ca, 1 -firesofheaven.org, 1 -firesprite.com, 0 +firesprite.com, 1 firestart.tk, 1 firestarter.fi, 1 firestuff.org, 1 firetotheprisons.org, 1 fireurboss.tk, 1 -firevap.org, 1 +firewallfairy.com, 1 firewallremoval.cf, 1 firewallremovalers.ga, 1 fireware.tk, 1 @@ -55437,11 +55409,11 @@ firstbooks.ml, 1 firstbridge.io, 1 firstbus.co.uk, 1 +firstcall.cloud, 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 @@ -55457,6 +55429,7 @@ firstcontact.cf, 1 firstdry.com.br, 1 firstechpayments.com, 0 +firstenergyservice.com, 1 firstever.eu, 1 firstfederalbath.com, 1 firstfinanceit.com, 1 @@ -55475,6 +55448,7 @@ firstload.tk, 1 firstmall.de, 1 firstmarket.tech, 1 +firstmarketscanner.com, 1 firstname.tk, 1 firstnet.gov, 1 firstnetwork.cf, 1 @@ -55482,6 +55456,7 @@ firstottawa.com, 1 firstphilec.com, 1 firstplace.ga, 1 +firstpoint.com.tr, 1 firstqa.com, 0 firstresponder.gov, 1 firstshowing.net, 1 @@ -55565,19 +55540,20 @@ fiskaly.com, 1 fiskarsinlaituri.fi, 1 fisophi.com, 1 -fispan.com, 1 +fispan.com, 0 fistingtogether.com, 1 fistwerk.de, 1 fisvo.org, 0 fit-4u.ch, 0 +fit-corner.nl, 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 @@ -55632,14 +55608,15 @@ 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 fitzsim.org, 1 fitzwilliamhotelbelfast.com, 1 fiu.ee, 0 -five.sh, 1 five15.net, 1 fiveboosts.xyz, 1 fiveclassauto.com, 1 @@ -55651,7 +55628,6 @@ fiveslice.pizza, 1 fivestar.et, 1 fivestaraussie.com, 1 -fivestartrader.com, 1 fivethirtyeight.com, 1 fiveyearsahead.com, 1 fivolodigital.com, 1 @@ -55694,6 +55670,7 @@ fixtesisat.com, 1 fixthetimeline.com, 1 fixthetimeline.org, 1 +fixthevuln.com, 1 fixupx.com, 1 fixverkaufen.de, 1 fixville.co, 1 @@ -55739,6 +55716,7 @@ fjordbank.lt, 1 fjordboge.dk, 1 fjordenpaard.tk, 1 +fjordrykkur.is, 1 fjsb.com, 1 fjugstad.com, 1 fjzone.org, 1 @@ -55766,7 +55744,6 @@ flaggorvarlden.se, 1 flaggrimsby.co.uk, 1 flagi-panstw.pl, 1 -flagipanstw.info.pl, 1 flagipanstw.pl, 1 flagistrany.ru, 1 flagium.org, 1 @@ -55797,6 +55774,7 @@ flam.studio, 1 flaman-h7a.fr, 1 flamanville.fr, 1 +flamby.ovh, 1 flameflyff.com, 1 flamehaze.tk, 1 flamellugano.com, 1 @@ -55842,7 +55820,6 @@ flash-games.tk, 1 flash-payments.com, 1 flash.homes, 1 -flashback.org, 1 flashbackband.tk, 1 flashbeat.tk, 1 flashcardsmobile.com, 1 @@ -55989,6 +55966,7 @@ flexex.io, 1 flexfone.dk, 1 flexforcemonkey.com, 1 +flexgloble.com, 1 flexgs.ca, 1 flexgs.net, 1 flexhyp.de, 1 @@ -56042,7 +56020,6 @@ flightdiary.ga, 1 flightdiary.gq, 1 flightfrankfurt.com, 1 -flighthonolulu.com, 1 flighthub-sms.com, 1 flightjackets.tk, 1 flightrights.gov, 1 @@ -56050,9 +56027,7 @@ flightschoolbooking.com, 1 flightschoolcandidates.gov, 1 flightschoolxxi.com, 1 -flightstimes.com, 1 flightti.com, 1 -flightticketsto.com, 1 flightzero.cf, 1 fliino.com, 1 fliino.eu, 1 @@ -56065,6 +56040,7 @@ flinny.org, 1 flintavenue.com, 1 flintregistry.org, 1 +flintriverkeeper.org, 1 flintstones.tk, 1 flip-flop.tk, 1 flip.kim, 1 @@ -56215,7 +56191,7 @@ floridaplasticsurgery.com, 1 floridaroofdesign.com, 1 floridarrc.com, 1 -floridaschools.us, 0 +floridaschools.us, 1 floridastadium.ga, 1 floridastadiumers.ga, 1 floridastadiumest.ga, 1 @@ -56246,6 +56222,7 @@ flourishtogether.com, 0 flow-serv.com, 1 flow.su, 1 +flow28.co.uk, 1 flowair24.ru, 1 flowalizer.com, 1 flowalyzer.com, 1 @@ -56295,11 +56272,14 @@ 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 @@ -56364,8 +56344,6 @@ fluui.com.br, 1 flux.today, 0 flux360.net, 1 -fluxerstatic.com, 1 -fluxerusercontent.com, 1 fluxforge.com, 1 fluxnet.tk, 1 fluxoid.com, 1 @@ -56388,7 +56366,7 @@ flyboarder.tk, 1 flyboyfpv.com, 1 flycolumbus.com, 1 -flyddiction.com, 0 +flyddiction.com, 1 flyer-homes.com, 1 flyer.tools, 1 flyerdatabase.tk, 1 @@ -56583,6 +56561,7 @@ fokep.no, 1 fokos.de, 0 fokus.ag, 1 +fokusfalter.ch, 1 fol.tf, 1 folar.ga, 1 folclore.tk, 1 @@ -56637,7 +56616,6 @@ fonds-dieter.be, 1 fondsnieuws.nl, 1 fondsvermittler.com, 1 -fonduri-structurale.ro, 1 fondy.ua, 1 fondzee.cz, 1 fonemisitme.com, 1 @@ -56964,6 +56942,7 @@ forestvets.com, 1 forever.gq, 1 foreverbreak.com, 1 +foreverclean.com, 1 forevercollage.com, 1 foreverpontiac.com, 1 foreverreem.com, 0 @@ -56985,7 +56964,6 @@ forexnese.com, 1 forexnew.org, 1 forexpattern.tk, 1 -forexsignalroom.com, 1 forextickler.com, 1 forexwinway.com, 1 forexworld.cf, 1 @@ -57086,6 +57064,7 @@ formyourcorp.com, 1 fornarisandres.com, 1 fornata.it, 1 +fornatov.com, 1 forneyplus.com, 1 fornoreason.net.au, 1 foro-coopfuture.tk, 1 @@ -57133,10 +57112,19 @@ 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 @@ -57164,13 +57152,14 @@ fortissimusbellator.pt, 1 fortknoxster.com, 1 fortmatic.com, 1 -fortnet.online, 1 +fortnanov.com, 1 fortnightlyofeugene.org, 1 fortnitedb.com, 1 fortnitemagic.ga, 1 fortniterefund.com, 1 fortnitetrends.com, 1 fortoglethorpega.gov, 1 +fortonov.com, 1 fortress.no, 0 fortress.sk, 1 fortressgb.com, 1 @@ -57247,6 +57236,7 @@ forward-fly-fishing.ch, 0 forward-proxy.email, 1 forward.lc, 1 +forwardblood.com, 1 forwardemail.net, 1 forwardfever.tk, 1 forwardfinancingest.ga, 1 @@ -57275,7 +57265,6 @@ foster.ga, 1 fosteringconsultant.com, 1 fosters.ky, 1 -fosterthechange.com, 1 fosterunity.com, 1 fosterwiki.com, 1 fosttest.be, 1 @@ -57300,7 +57289,7 @@ fotoapp.ch, 1 fotoarchiv-niederrhein.de, 1 fotoblog.nrw, 1 -fotobodyart.nl, 1 +fotobodyart.nl, 0 fotobrb.de, 1 fotobringer.de, 1 fotobrinke.de, 1 @@ -57318,6 +57307,7 @@ 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 @@ -57328,6 +57318,7 @@ fotoleitner.com, 1 fotoleitner.de, 1 fotoloji.art, 1 +fotomac.com.tr, 1 fotomodel.cf, 1 fotomodels.tk, 1 fotonippon.com, 1 @@ -57373,7 +57364,6 @@ foundationspecialisteast.com, 1 foundchurch.co.uk, 1 founderinvestors.tk, 1 -founderio.net, 1 founderscard.com, 1 foundland.com, 1 foundrehotels.com, 1 @@ -57413,7 +57403,6 @@ foutrelis.com, 1 fovndry.com, 1 fowesolutions.net, 1 -foweyretreat.co.uk, 1 fowlmanor.tk, 1 fowlsmurf.net, 1 fowos.de, 1 @@ -57422,7 +57411,6 @@ fox13now.com, 1 fox17online.com, 1 fox47news.com, 1 -fox4now.com, 1 foxandfish.be, 1 foxart.com.tr, 1 foxbenjaminfox.com, 1 @@ -57469,7 +57457,6 @@ fpalzira.es, 1 fpasca.com, 1 fpc.gov, 1 -fpcdn.io, 1 fpcorporatefinance.eu, 1 fpcs-anchorage.com, 1 fpcslidell.org, 1 @@ -57478,12 +57465,10 @@ fpf.ch, 1 fpf.org, 1 fpgamania.com, 1 -fpjscdn.net, 1 fpki.sh, 1 fpline.jp, 1 fpmafi.com, 1 fpnet.tk, 1 -fpnpmcdn.net, 1 fpoe.eu, 1 fppq.org.br, 1 fprinnovaciones.es, 1 @@ -57501,6 +57486,7 @@ fptbb.com, 1 fptsoftware.com, 1 fpu.sk, 1 +fpvracerbern.ch, 1 fpy.cz, 1 fr-fotopage.tk, 1 fr.search.yahoo.com, 0 @@ -57615,6 +57601,7 @@ 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 @@ -57674,6 +57661,7 @@ francoislaude.fr, 1 francoislepage.com, 0 franconia.space, 1 +francoraso.com, 1 francosud.ca, 1 francovital.com, 1 francoz.me, 0 @@ -57756,7 +57744,7 @@ frantic1048.com, 1 frantorregrosa.me, 1 frantz.gr, 1 -frantzeskidis.com, 1 +frantzeskidis.com, 0 franz-vatter.de, 1 franz.beer, 1 franzen.tk, 1 @@ -57866,7 +57854,6 @@ freddieonfire.tk, 0 freddo.tk, 1 freddyhasderyk.tk, 1 -freddyjs.com, 1 freddythechick.net, 1 freddyvasquez.com, 1 freddyxvasquez.com, 1 @@ -58046,7 +58033,6 @@ freemchosting.tk, 1 freeme.gq, 1 freemedia.tech, 1 -freemegamovies.com, 1 freemilf.org, 1 freemilfpics.com, 1 freeminecraftmaps.tk, 1 @@ -58154,7 +58140,6 @@ freewoodfactory.com, 1 freexmovie.com, 1 freexxxmovies.biz, 1 -freeyourmusic.com, 1 freeyourself.nu, 1 freeza.cf, 1 freeza.tk, 1 @@ -58179,6 +58164,7 @@ freightinsightservice.com, 1 freightscore.net, 1 freikirchebergen.de, 1 +freiraum-plus.com, 1 freiszene.de, 1 freitas.org, 1 freitasbastos.com.br, 1 @@ -58210,7 +58196,6 @@ frenchmac.com, 1 frenchtonpups.com, 1 frenchtownmi.gov, 1 -frenchvandal.com, 0 frendamos-roleplay.ml, 1 frendle.tech, 1 frenetic.lv, 1 @@ -58284,6 +58269,7 @@ freundlieb.ch, 1 frexxi.com, 1 freyapearls.com.au, 1 +frgal.cz, 1 fribourgviking.net, 1 frickelboxx.de, 1 frickelmeister.de, 1 @@ -58405,7 +58391,6 @@ frizim.com, 1 frizo.com, 1 frlcnews.com, 1 -frlt.one, 1 frltexas.com, 1 frlunit.com, 1 frly.de, 0 @@ -58487,13 +58472,11 @@ 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 -frostplatform.com, 1 frostprotection.co.uk, 1 frostwarning.com, 1 frostwolf.tk, 1 @@ -58565,6 +58548,7 @@ fruturaproduce.com, 1 fruxh.moe, 1 fruxnux.net, 1 +fruxon.com, 1 frwmb.gov, 1 fry.at, 1 frydrychit.cz, 1 @@ -58586,7 +58570,7 @@ fsapubs.gov, 0 fsatech.com, 1 fsavc.org.uk, 1 -fsbn.eu, 1 +fsbn.eu, 0 fsbpaintrock.com, 1 fsbtahlequah.com, 1 fsch2009.com, 1 @@ -58616,7 +58600,6 @@ fspk.pro, 1 fspk.tech, 1 fsrs.gov, 1 -fssai.gov.in, 1 fssc.com, 1 fsscms.com, 1 fssolutions.com, 1 @@ -58727,7 +58710,6 @@ fuel.ventures, 1 fuel2go.eu, 1 fuelbyte.sg, 1 -fuelco.com.au, 1 fuelcycle.com, 1 fueleconomy.gov, 1 fuelgalicia.tk, 1 @@ -58800,7 +58782,6 @@ fujifilm-connect.com, 1 fujikatu.tk, 1 fujikochan.tk, 1 -fujimurado.com, 1 fujitsu, 1 fujivibe.art, 1 fujiwarashinzo.com, 1 @@ -58827,7 +58808,6 @@ fulfyld.com, 1 fulgaz.com, 0 fulgentoncology.com, 1 -fulgenzis.com, 1 fulisex.com, 1 fuliwang.info, 1 full-service-suite.com, 1 @@ -58861,7 +58841,6 @@ fulltxt.ml, 1 fully-covered.tk, 1 fully-hair.tk, 1 -fullzest.com, 1 fultoncountyar.gov, 1 fultoncountyil.gov, 1 fultoncountyilelections.gov, 1 @@ -58913,6 +58892,7 @@ fundamentals.lu, 1 fundamentt.com, 1 fundayltd.com, 1 +fundcapitalnow.com, 1 fundedschools.ml, 1 fundelva.com, 1 fundera.com, 1 @@ -59161,6 +59141,7 @@ fursho.ws, 1 furshows.org, 1 furtainment.com, 1 +furtanov.com, 1 furthestpoint.org, 1 furtodo.at, 1 furtodo.com, 1 @@ -59188,6 +59169,7 @@ fuse.com.vn, 1 fuselight.nl, 1 fuseos.net, 1 +fusestudio.net, 1 fuseyahoken.com, 1 fushee.com, 1 fushimidc.com, 1 @@ -59227,7 +59209,6 @@ futa.agency, 1 futa.wiki, 1 futabadc.jp, 1 -futacockinside.me, 1 futalis.de, 1 futarara.ga, 1 futaritomo.tk, 1 @@ -59278,7 +59259,6 @@ futuregrowthva.com, 1 futureimmigration.net, 1 futuremadein.eu, 1 -futurenode.dk, 1 futureofyoucdc.sg, 1 futureplan.de, 1 futureplanet.tk, 1 @@ -59305,6 +59285,7 @@ fuxia.ai, 1 fuyeor.com, 1 fuyeor.net, 1 +fuyeor.org, 1 fuyeor.top, 1 fuyer.cn, 0 fuyu.moe, 1 @@ -59331,7 +59312,6 @@ fwaux.de, 1 fwba.hopto.org, 1 fwd.pp.ua, 1 -fwdmovers.com, 1 fwdx.net, 1 fwest.ovh, 1 fwest98.nl, 1 @@ -59411,7 +59391,6 @@ fxvdd.com, 1 fxvdigital.com, 1 fxwebstudio.com.au, 0 -fya.ch, 1 fyers.in, 1 fyfywka.com, 1 fyllehack.se, 1 @@ -59455,6 +59434,7 @@ 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 @@ -59475,14 +59455,12 @@ g15ubezpieczenia.pl, 1 g2-inc.com, 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 @@ -59560,7 +59538,6 @@ gabrielsimonet.ch, 1 gabrielsteens.nl, 1 gabrielvillarreal.com, 0 -gabrielyin.com, 0 gabryjeluk.tk, 1 gabskent.de, 1 gabtitui.gov.au, 0 @@ -59574,7 +59551,6 @@ gachiyase.com, 1 gachoki.com, 1 gachter.name, 0 -gachw.org, 0 gaci88play.com, 1 gacirenin.cf, 1 gacirenin.tk, 1 @@ -59609,6 +59585,7 @@ gadgetslab.tk, 1 gadingpromosindo.tk, 1 gadkiy-farm.tk, 1 +gadrian.com.br, 1 gadsdensoefl.gov, 1 gadse.games, 1 gadzilla.tk, 1 @@ -59799,6 +59776,7 @@ gamalawadforum.tk, 1 gamalhamza.tk, 1 gamanlu.com, 1 +gamatotv.io, 1 gambarian.com, 1 gamberorosso.menu, 1 gamberorotto.com, 1 @@ -59936,7 +59914,6 @@ games2kids.net, 1 games4theworld.org, 1 gamesandcasino.com, 1 -gamesaviour.com, 1 gamesbrowser.org, 1 gamescatalogue.blog, 1 gamesclix.com, 1 @@ -59947,7 +59924,6 @@ gameserver.fun, 1 gamesgalaxy.it, 1 gamesgate.tk, 1 -gameshack.io, 1 gameship.ga, 1 gameshopsrbija.com, 1 gameshowchallenge.ie, 1 @@ -60025,6 +60001,7 @@ gamrenovation.ca, 1 gamtosgidas.lt, 1 gan.wtf, 1 +ganaconelbarrio.com, 1 ganaha.org, 1 ganardinerillo.tk, 1 ganasoku.net, 1 @@ -60032,7 +60009,6 @@ ganchev.bg, 1 gandalfcz.tk, 1 gandalfservice.com, 1 -gandhiashramsabarmati.org, 1 gandmfamilydental.com, 1 gandour.com, 0 gangbangs.tk, 1 @@ -60074,7 +60050,7 @@ gaphag.ddns.net, 1 gapo.re, 1 gaponov.tk, 1 -garage-leone.com, 1 +garage-leone.com, 0 garage.click, 1 garage042.bg, 1 garage15.com.ua, 1 @@ -60122,6 +60098,7 @@ gardenroomsdirect.co.uk, 1 gardensuperstore.com.au, 1 gardentotable.org, 1 +gardenwith.me, 1 gardevault.eu, 1 gardinenzubehoer.tk, 1 gardinolsson.se, 1 @@ -60220,6 +60197,7 @@ gasbarkenora.com, 1 gasenergy.kz, 1 gasesdelaguajira.com, 1 +gasestepiesa.ro, 1 gasfitermaipu.cl, 1 gasherde.tk, 1 gashtline.ir, 1 @@ -60322,13 +60300,13 @@ gavin.sh, 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 @@ -60395,7 +60373,6 @@ gbcsummercamps.com, 1 gbdavisplasticsurgery.com, 1 gbecreativeagency.com, 1 -gbedu360.com, 1 gbenson.net, 1 gbes.com, 1 gbfoundation.org, 1 @@ -60448,7 +60425,6 @@ gcode.space, 1 gcoded.de, 1 gconcept.tk, 1 -gconduit.com, 1 gconstruction.org, 1 gcoption.pro, 1 gcorevape.ca, 1 @@ -60464,7 +60440,6 @@ gcstats.org, 1 gcstechnologies.com, 1 gctdtx.gov, 1 -gcubedinc.com, 1 gcuf.edu.pk, 1 gcustom.email, 1 gcwatx.gov, 1 @@ -60516,7 +60491,6 @@ gear4music.nl, 1 gear4music.no, 1 gear4music.se, 1 -gearbot.rocks, 1 gearboxhero.com, 1 gearev.net, 1 gearfinder.nl, 1 @@ -60550,7 +60524,6 @@ gecem.org, 1 gechr.io, 1 geckler-ee.de, 0 -geckoroutes.com, 0 geckos-geocaching.de, 1 geckosurfschool.com, 0 geckowithahat.com, 1 @@ -60567,6 +60540,7 @@ geek-hub.de, 1 geek-rooms.tk, 1 geek.ch, 1 +geek.tw, 1 geek1.de, 1 geekabit.nl, 1 geekandi.com, 1 @@ -60579,7 +60553,6 @@ geekcreations.co.uk, 1 geekdoit.com, 1 geekedin.ga, 1 -geekelectronico.com, 1 geekflare.com, 1 geekgear.tk, 1 geekhelpline.com.au, 1 @@ -60627,7 +60600,6 @@ geen.gp, 1 geenspam.net, 1 geerdsen.net, 1 -geertdegraaf.nl, 1 geertjanvanhest.nl, 1 geertswei.nl, 1 gees.ch, 1 @@ -60640,6 +60612,7 @@ gegeco.ch, 0 gegevensdelen.nl, 1 gego-bergen.de, 1 +gehenna2035.com, 1 geheugenvannederland.nl, 1 gehirn.co.jp, 1 gehirn.jp, 1 @@ -60664,13 +60637,15 @@ 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 @@ -60712,7 +60687,6 @@ gemailt.net, 1 gemaskeerd.nl, 1 gematik.de, 1 -gemawardian.com, 1 gemax-online.de, 1 gembet99.com, 1 gemdirt.com, 1 @@ -60739,11 +60713,13 @@ gemooi.com, 1 gemour.pl, 1 gemquery.com, 1 +gemsen.com, 1 gemstones.com, 1 gemwerx.com, 1 gen.cn.eu.org, 1 gen.net.eu.org, 1 gen3marketing.com, 1 +genaropretill.com, 1 genbars.jp, 1 genbrugge.tk, 1 genchev.io, 0 @@ -60816,6 +60792,7 @@ generator-energy.ru, 1 generatorcountry.com, 1 generatorkodowkreskowych.pl, 1 +generatorlabs.com, 1 generatormusic.tk, 1 generatorreview.pro, 1 generators-pro.ru, 1 @@ -61152,6 +61129,7 @@ gepo69.net, 1 gepps.de, 0 geppy.im, 1 +gequma.de, 1 gera-haushaltsaufloesung.de, 1 gerainano.com, 1 geraintwhite.co.uk, 1 @@ -61258,7 +61236,6 @@ gestionth.com, 1 gestor.co, 1 gestorehotel.com, 1 -gestorestecnologicos.com, 1 gestoriaycontratos.com, 1 gestus.tk, 1 gesundheits-fakten.de, 1 @@ -61280,7 +61257,7 @@ get.how, 1 getabear.com, 1 getacrane.co.uk, 1 -getahearing.com, 1 +getahearing.com, 0 getaldea.com, 1 getalink.ga, 1 getalitools.ru, 1 @@ -61316,6 +61293,7 @@ getcarina.com, 1 getcerta.com, 1 getchip.cc, 1 +getclarity.life, 1 getcleanworx.co.uk, 1 getclever.marketing, 1 getcloak.com, 1 @@ -61379,7 +61357,6 @@ getjerry.com, 1 getjms.com, 1 getkeyport.com, 1 -getkliq.com, 1 getlaminas.org, 1 getlantern.org, 0 getlawyered.com.au, 1 @@ -61406,10 +61383,8 @@ getnetset.com, 1 getnetworkvisibility.com, 1 getnew.tk, 1 -getnexar.com, 1 getnib.com, 1 getnikola.com, 1 -getonlinecalculator.com, 1 getonwikipedia.com, 1 getoxley.com, 1 getpagespeed.com, 1 @@ -61471,6 +61446,7 @@ getticker.com, 1 gettingtvers.ga, 1 gettopquality.com, 1 +gettrack.us, 1 getts.ro, 1 getts.shop, 1 gettwo.ml, 1 @@ -61579,8 +61555,6 @@ gg9297.co, 1 gg9397.com, 1 gg9728.co, 1 -ggaustraliagames.com, 1 -ggb.world, 1 ggchamber.com, 1 ggddrenthe.nl, 1 ggdrop.com, 1 @@ -61592,6 +61566,7 @@ gglks.com, 1 ggmmontascale.it, 1 ggpoker.com, 1 +ggpuketi.com, 1 ggretrobox.com, 1 ggrks.lol, 1 ggs-marschallstrasse.de, 1 @@ -61654,6 +61629,7 @@ ghosthunting.dk, 1 ghostinbox.pl, 1 ghostinfluence.com, 1 +ghostkeys.eu, 1 ghostlight.tk, 1 ghostmail.no, 1 ghostmarket.io, 1 @@ -61687,7 +61663,6 @@ giacomomaniaci.it, 1 giacomopelagatti.it, 1 giacomosecchi.com, 1 -giakki.eu, 1 gialai.gov.vn, 1 gialupa.tk, 1 giamcanhieuqua.vn, 1 @@ -61820,6 +61795,7 @@ gigawa.lt, 1 gigawattz.com, 1 gigbh.com, 1 +gigent.xyz, 1 giggear.com.au, 1 gigharborsound.com, 1 gigharborwa.gov, 1 @@ -61871,6 +61847,7 @@ gim.ac.in, 1 gimbal.ca, 1 gimme.money, 1 +gimmecalc.com, 1 gimmickbots.com, 1 gimmickmedia.de, 1 gimmix.lk, 1 @@ -61887,6 +61864,7 @@ ginecomastiatratamento.com.br, 1 ginen.xyz, 0 ginepolice.gov, 1 +ginesenergy.com, 1 ginev.tk, 1 gingerhomemaking.com, 1 gingerxumd.com, 1 @@ -61949,7 +61927,6 @@ girishkumar.tk, 1 girl.science, 1 girlan.net, 1 -girlandhermoon.com, 0 girlbaito.jp, 1 girlboss.ceo, 1 girlboss.systems, 1 @@ -62051,7 +62028,6 @@ givaudan.com, 1 give.net, 1 give2charity.co, 1 -give2charityapp.com, 1 giveasquare.com, 1 giveasquare.net, 1 giveasquare.org, 1 @@ -62171,7 +62147,6 @@ glascentro-gmbh.de, 1 glascentro.de, 1 glasck.com, 1 -glasck.gg, 1 glasdon.com, 1 glase.shop, 1 glaserceramics.com, 1 @@ -62284,6 +62259,7 @@ glitchcomic.tk, 1 glitched.online, 1 glitchtip.com, 1 +glitchworks.ch, 1 glitterblast.uk, 1 glitteringmariah.tk, 1 glitzerstuecke.de, 1 @@ -62362,7 +62338,7 @@ globalhomeautomation.ca, 1 globalhomicideers.ga, 1 globalhorses.de, 1 -globalhubb.ro, 1 +globalincomeexperts.com, 1 globalind.com.au, 1 globalink.tk, 1 globalinvestorgate.com, 1 @@ -62396,7 +62372,6 @@ globalpolarbear.com, 1 globalpouchfactory.com, 0 globalprivacyassembly.com, 1 -globalprocess.co.nz, 1 globalproduction.ga, 1 globalprojetores.com.br, 1 globalradio.tk, 1 @@ -62467,6 +62442,7 @@ globit.com.tr, 1 globoasiatico.com.ph, 1 globologic.com, 1 +globotech.be, 0 globotur.de, 1 globowood.ml, 1 globus-plus.ml, 1 @@ -62508,6 +62484,7 @@ glotwpnjpd.gov, 1 gloucesterva.gov, 1 glovementor.com, 1 +glovitech.co.kr, 1 glowcdn.com, 1 glowfic.com, 1 glp1thailand.com, 1 @@ -62515,11 +62492,6 @@ 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 @@ -62691,6 +62663,7 @@ goabase.com, 1 goabase.net, 1 goaddress.co.ke, 1 +goagu.top, 1 goaheadireland.ie, 1 goalgrass.com, 1 goalswizard.com, 1 @@ -62705,7 +62678,6 @@ goathub.io, 0 goatlord.tk, 1 goatstore.ca, 1 -goaudits.com, 1 gobarrelroll.com, 1 gobebra.com, 1 gobeline.com, 1 @@ -62716,7 +62688,6 @@ gobookmart.com, 1 gobouncy.co.uk, 1 gobouncy.com, 1 -gobox.pt, 1 gobus.ee, 1 gobytedesign.uk, 1 gocar.ie, 1 @@ -62817,9 +62788,9 @@ goexam.net, 0 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 @@ -62831,6 +62802,7 @@ gofuel.ae, 1 gofundhourly.tk, 1 gofundme.com, 1 +gogalactic.ai, 1 goge.ml, 1 gogebic.gov, 1 gogetssl.com, 0 @@ -62873,7 +62845,6 @@ gokhankesici.com, 1 gokkastenstip.nl, 1 gokmenguresci.com, 1 -gokon.se, 0 goksu.in, 1 goktoday.com, 1 gokyrgyzstan.com, 1 @@ -62917,7 +62888,7 @@ goldeneggs.club, 1 goldeneyesantafe.com, 1 goldenfashion.co.za, 1 -goldengatexpress.org, 1 +goldenfawz.com, 1 goldenglow.fans, 1 goldenhillsoftware.com, 1 goldenhilltower.com, 1 @@ -63103,6 +63074,7 @@ 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 @@ -63110,7 +63082,6 @@ gooddatingsites.ml, 1 gooddayatwork.co.uk, 1 gooddomain.co, 1 -gooddomain.com, 1 gooddomainna.me, 1 goodearth.com.tw, 1 goodees.com, 1 @@ -63118,6 +63089,7 @@ goodesign.su, 1 goodfeatherfarms.com, 1 goodfeels.net, 1 +goodfolks.ai, 1 goodfoodrussia.com, 1 goodfundsgateway.com, 1 goodgame.ruhr, 1 @@ -63156,6 +63128,7 @@ goodtasteofhome.com, 1 goodtea.com, 1 goodth.ink, 1 +goodtls.com, 1 goodtotell.nl, 1 goodtrader.tk, 1 goodtrip.kr, 1 @@ -63214,7 +63187,6 @@ gopass.health, 1 gopher.tk, 1 gopherdata.net, 1 -gophersland.com, 1 gophoto.it, 1 gophouse.org, 1 gopigment.com, 1 @@ -63327,6 +63299,7 @@ gospeldesign.tk, 1 gospelidea.com, 1 gospellifewc.com, 1 +gospelmusicstreams.com, 1 gospelofthekingdom.com, 1 gospelstreamingsermons.com, 1 gospelunited.tk, 1 @@ -63436,6 +63409,7 @@ gourmetspalencia.com, 1 gourmetstars.cz, 1 gourmetvitamins.ga, 1 +gourmetwitch.org, 1 gousto.co.uk, 1 goutsmits-tegelwerken.nl, 1 gouwdata.nl, 0 @@ -63496,6 +63470,7 @@ gp-lightstone.de, 1 gpalabs.com, 1 gpbdev.ru, 1 +gpc.work, 1 gpccp.cc, 0 gpcmicro.com, 1 gpcp.org, 1 @@ -63548,6 +63523,7 @@ gptunnel.ru, 1 gpu.nu, 1 gpupods.cloud, 1 +gpuserver.kz, 1 gpwatimes.org, 1 gpwih.com, 1 gpwmd-portal.org, 1 @@ -63652,6 +63628,7 @@ grahamfamilydentalwy.com, 0 grahamleeonline.com, 1 grahamsmith.tech, 1 +grahamstevenson.me.uk, 1 graide.io, 1 grailians.com, 1 grailify.com, 1 @@ -63660,7 +63637,6 @@ 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 @@ -63672,6 +63648,7 @@ grammar.hu, 1 grammarcheck.net, 1 grammarhouse.me, 0 +grammaroftheshot.com, 1 grammofono.gr, 1 grampage.ru, 1 gramtarang.org.in, 1 @@ -63789,7 +63766,6 @@ granulate.io, 1 grape33.com, 1 grapee.jp, 1 -grapeintentions.com, 1 grapevine.is, 1 graph.org, 1 graphe.gq, 1 @@ -63831,7 +63807,6 @@ grass.markets, 1 grassau.com, 1 grassberry.in, 1 -grasscity.com, 0 grasshoppervape.com, 1 grasski.net, 0 grasslaketownship.gov, 1 @@ -63885,6 +63860,7 @@ gravityinvestments.com, 1 gravitylab.fr, 0 gravityledger.com, 1 +gravitynode.ovh, 1 gravitypdf.com, 1 gravityresearchgroup.cf, 1 gravityresearchgroup.ga, 1 @@ -63895,7 +63871,7 @@ gray.network, 1 grayarrow.com, 1 graycat.ml, 1 -graydaze.com, 1 +graydaze.com, 0 grayduck.mn, 1 grayhatter.com, 1 grayingrainbows.com, 1 @@ -63949,7 +63925,6 @@ greatgooglymoogly.tk, 1 greathairtransplants.com, 1 greathillpartners.com, 1 -greatlakelocksmiths.co.nz, 1 greatlakesdatastream.ca, 1 greatlakesden.net, 1 greatlakesstone.com, 1 @@ -64023,6 +63998,7 @@ greenbrickgroup.com, 1 greenburghny.gov, 1 greencapital.gent, 1 +greencarbon.kr, 1 greencbd.com, 1 greencocktail.ga, 1 greencoconutresort.cf, 1 @@ -64184,7 +64160,6 @@ gregorywiest.com, 1 gregpierson.com, 0 gregproffit.com, 1 -gregtutors.com, 1 greizer.tk, 1 grekiskagudar.tk, 1 grekos.com.pl, 1 @@ -64206,7 +64181,6 @@ grenti.eu, 1 grenzach.com, 1 grepable.com, 1 -grepular.com, 1 gresak.io, 0 greshamhistorical.org, 1 gresrewop.ca, 1 @@ -64274,7 +64248,6 @@ griffinguthrie.com, 1 griffinsrfc.tk, 1 griffithobs.org, 1 -griffithobservatory.org, 1 griffonwise.com, 1 griffophotography.tk, 1 grifomarchetti.com, 1 @@ -64285,7 +64258,7 @@ grigorev.tk, 1 grijalba.tk, 1 grijpskerk500.tk, 1 -grilehub.ro, 1 +grilehub.ro, 0 grillboxtaxi.de, 1 grillen-darf-nicht-gesund-sein.de, 1 grillfocused.com, 1 @@ -64403,12 +64376,10 @@ groundball.tk, 1 groundcaresolutionsllc.com, 1 groundfm.tk, 1 -groundjerusalem.com, 1 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 @@ -64435,6 +64406,7 @@ groupeleriverain.com, 1 groupeleven.com, 0 groupensd.com, 1 +groupeperrier.com, 0 grouperacinecotedesbar.fr, 1 groupescr.fr, 0 groupghistelinck-cars.be, 1 @@ -64480,10 +64452,8 @@ 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 @@ -64492,6 +64462,7 @@ growthsimulationest.ga, 1 growthtoysers.ga, 1 growthtoysest.ga, 1 +growthwheel.net, 1 growy.ch, 0 grozdanov.tk, 1 grozny-news.net, 1 @@ -64554,6 +64525,7 @@ grupatvogzivota.tk, 1 grupcarles.com, 1 grupdedansa.tk, 1 +grupdigital.com, 1 gruphepsi.tk, 1 grupo-famia.tk, 1 grupo-rbd.com, 1 @@ -64582,6 +64554,7 @@ grupolegalsgf.com, 1 grupomacroex.com, 1 grupomanquecura.tk, 1 +grupomazzucco.com, 1 grupomedlegal.com, 1 grupomfn.com.br, 1 grupomonti.com.ar, 1 @@ -64592,11 +64565,11 @@ 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 @@ -64605,7 +64578,7 @@ gruppe-casablanca.tk, 1 gruppe.schwarz, 1 grupporigoni.com, 1 -grupposanmarco.eu, 0 +grupposanmarco.eu, 1 grupposiciliaviola.tk, 1 gruppotac.com, 1 gruppouna.it, 1 @@ -64613,7 +64586,7 @@ grurez.com, 1 gruslic.org.mx, 1 gruveo.com, 1 -gruver.de, 1 +gruver.de, 0 gruzchiki.ml, 1 gruzchiki74.tk, 1 gruzinfo.tk, 1 @@ -64665,6 +64638,7 @@ gsmtool.tk, 1 gsmvermist.tk, 1 gsp.com, 1 +gspann.com, 1 gspcreations.com, 1 gspilar.tk, 1 gsplast.com, 1 @@ -64672,6 +64646,7 @@ gsrc.io, 1 gss.ind.br, 1 gstackrankers.com, 1 +gstcalc.nz, 1 gstehlik.com, 1 gstrans.bg, 1 gsv.dk, 1 @@ -64727,6 +64702,8 @@ gtslotcars.com, 1 gtsoftware.gr, 1 gtupgrade.eu, 1 +gtw0.mx, 1 +gtw0.org, 1 gtwaction.org, 1 gtxmail.de, 1 gtxthere.tk, 1 @@ -64742,6 +64719,7 @@ guajars.cl, 1 gualanexteriorremodeling.com, 1 guamcourts.gov, 1 +guanggaonet.com, 1 guangjiangk.com, 1 guanquan.com, 1 guanwangquanji.com, 1 @@ -64777,6 +64755,7 @@ guarrato.tk, 1 guategmala.ga, 1 guateradio.tk, 1 +guatx.com, 1 guatzessen.at, 1 guayaquil-consort.tk, 1 gubagoo.com, 1 @@ -64869,6 +64848,7 @@ guichetunique-pl.org, 1 guid2steamid.pw, 1 guidaditalia.com, 1 +guidaev.com, 1 guidanceetbienetre.com, 1 guidanceflammejumelle.com, 1 guidaturisticavigevano.it, 1 @@ -64918,9 +64898,10 @@ guillaume-briand.fr, 1 guillaume-simonet.com, 1 guillaumechirache.com, 1 +guillaumechirache.fr, 1 guillaumecote.me, 1 guillaumematheron.fr, 1 -guillaumesworld.com, 1 +guillaumesworld.com, 0 guille.tk, 1 guillemagullo.tk, 1 guillembosch.es, 1 @@ -64931,6 +64912,7 @@ guiltyfox.com, 1 guim.co.uk, 1 guinaliu.tk, 1 +guinder.com.br, 1 guineapig101.com, 1 guineapigmustach.es, 1 guinel-johnson.fr, 0 @@ -64957,11 +64939,11 @@ 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 @@ -65027,7 +65009,6 @@ gurbetilan.com, 0 guri.ml, 1 gurkantuna.com, 1 -gurkhatech.com, 1 gurl.eu.org, 1 gurleyal.gov, 1 gurmat.info, 1 @@ -65039,10 +65020,10 @@ gurugamer.com, 1 gurumobile.tk, 1 gurunanakdarvar.tk, 1 -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 @@ -65076,7 +65057,7 @@ gustinetx.gov, 1 gusto.com, 1 gustoclean.com.au, 1 -gustom.io, 0 +gustom.io, 1 gusuraman.tk, 1 gut-aue.com, 1 gute-nachricht.org, 1 @@ -65141,7 +65122,6 @@ gv-neumann.de, 1 gv-salto.nl, 1 gvaa.nl, 1 -gvarliani.com, 1 gvatas.in, 1 gvc-it.tk, 1 gvdgroup.tk, 1 @@ -65182,7 +65162,6 @@ gwnmarketing.com, 1 gworkspace.lt, 1 gworld.cf, 1 -gwrr.com, 1 gwsquickwash.com, 1 gwy15.com, 1 gxbank.my, 1 @@ -65192,7 +65171,6 @@ gxm5.com, 1 gxmyqy.net, 1 gyaanprasaar.tk, 1 -gyan365.com, 1 gyannews.ga, 1 gyas.nl, 1 gybagardlin.tk, 1 @@ -65278,10 +65256,8 @@ 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.fo, 1 h.hk.cn, 1 @@ -65299,18 +65275,15 @@ 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 @@ -65319,10 +65292,8 @@ h2rul.eu, 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 @@ -65382,7 +65353,6 @@ haberizma.com, 1 haberlandconsulting.com, 1 haberlanddesign.com, 1 -haberlanddigital.com, 1 haberlandgroup.com, 1 haberlandpartners.com, 1 habermatik.net, 1 @@ -65429,7 +65399,6 @@ hackadena.com, 1 hackamac.tk, 1 hackathontwjr.ml, 0 -hackatruck.com.br, 1 hackbarth.guru, 1 hackbeil.name, 1 hackbubble.me, 1 @@ -65438,10 +65407,9 @@ hackcraft.net, 1 hackdown.eu.org, 1 hackdown.tech, 1 -hackdra.com, 1 hackeado.tk, 1 hacked.be, 1 -hacked.com, 1 +hacked.com, 0 hackedaf.com, 1 hackendoz.com, 1 hackengine.ga, 1 @@ -65515,6 +65483,7 @@ hacp.gov, 1 hacquemand.be, 1 hacquemand.co, 1 +hacquemand.com, 1 hacsapp.co.uk, 1 hadaly.fr, 1 hadan-it.com, 0 @@ -65539,6 +65508,7 @@ hadotifpc.in, 1 hadouk.in, 1 hadouken.tk, 1 +hadow.fr, 1 hadrienbbt.fr, 1 hadroncms.com, 1 hadrons.org, 1 @@ -65561,6 +65531,7 @@ haferman.net, 1 haferman.org, 1 hafiz-alquran.com, 1 +hafiz.uz, 1 hafizalquran.com, 1 hafizkadir.tk, 1 hafling.net, 1 @@ -65662,7 +65633,7 @@ hajekdavid.cz, 1 hajekj.cz, 1 hajekj.net, 1 -hajery.com, 0 +hajery.com, 1 hak-lab.com, 1 hak-zona.tk, 1 hak.edu.ee, 1 @@ -65717,7 +65688,6 @@ halff.com, 1 halfhosting.de, 1 halfmba.com, 1 -halfmoonbayhighschool.com, 1 halfords.com, 0 halfords.ie, 0 halfreal.tk, 1 @@ -65735,7 +65705,6 @@ halilweb.tk, 1 halilyagcioglu.tk, 1 halimjr.com, 0 -halkakoop.com, 1 halkbank.mk, 1 halkegitimkurs.com, 1 halkoyu.org, 1 @@ -65803,7 +65772,6 @@ hamburger-reinigung.de, 1 hamburger-umzuege.de, 1 hamburger-wirtschaft.de, 1 -hamburgerbesteld.nl, 1 hamburgerland.tk, 1 hamburgerwithcheese.com, 1 hamdenct.gov, 1 @@ -66092,7 +66060,6 @@ happy-wans.com, 1 happy.academy, 1 happy2hub.eu, 1 -happy5thwheelers.com, 1 happyagain.se, 1 happyandrelaxeddogs.com, 1 happyanimalsshop.com, 1 @@ -66125,7 +66092,6 @@ happygadget.me, 1 happygardencenter.com.br, 1 happygeek.com, 1 -happygiftapp.cl, 1 happygiftapp.com, 1 happygreats.ml, 1 happygreats.tk, 1 @@ -66210,7 +66176,6 @@ hardeeflvotes.gov, 1 hardeman.nu, 0 hardenburghny.gov, 1 -hardened.com.br, 1 hardenize.com, 1 hardesec.com, 1 hardfloorcleaninglondon.co.uk, 1 @@ -66231,7 +66196,6 @@ hardjump.tk, 1 hardknocksacademy.org, 1 hardmetal.tk, 1 -hardmine.ru, 1 hardnet.cz, 1 hardnetsoft.com, 1 hardnode.org, 1 @@ -66277,6 +66241,7 @@ harithaayurveda.com, 1 haritsa.co.id, 1 hariz.ga, 1 +harizalan.hu, 1 harlan.cc, 1 harlem-mt.gov, 1 harlemeverafter.com, 1 @@ -66287,7 +66252,7 @@ harlor.de, 1 harmandinjuryhub.scot, 1 harmfarm.nl, 1 -harmim.cz, 1 +harmim.cz, 0 harmlesspeopleers.ga, 1 harmlesspeopleest.ga, 1 harmonicasireland.com, 0 @@ -66318,7 +66283,6 @@ haroldkramer.tk, 1 haroldsharpe.com, 1 harp.gov, 1 -harpcoin.co, 1 harpen.de, 1 harperreed.com, 1 harpersvilleal.gov, 1 @@ -66375,7 +66339,6 @@ harryyy.me, 0 harshani.ga, 1 harshee.ml, 1 -harshilkhimasia.com, 1 hart.amsterdam, 1 hartan.to, 1 hartcountyky.gov, 1 @@ -66391,6 +66354,7 @@ hartmancpa.com, 1 hartmann-hartmann.eu, 1 hartmannindustries.com, 1 +hartonfilm.com, 1 hartsfieldrock.tk, 1 hartslagnu.nl, 1 hartstart.info, 1 @@ -66428,7 +66392,6 @@ has.work, 1 hasabig.wang, 1 hasalittle.wang, 1 -hasandurmus.com, 1 hasankayra04.com, 1 hasas-automatizari.ro, 1 hasas-cnc.ro, 1 @@ -66457,7 +66420,7 @@ hashish.net, 1 hashiura.jp, 1 hashmart.io, 1 -hashnode.com, 0 +hashnode.com, 1 hashplex.com, 1 hashru.nl, 1 hashsters.com, 1 @@ -66582,7 +66545,6 @@ havasuinsurance.com, 1 havasutacohacienda.com, 1 have-it.tk, 1 -have.jp, 1 haveabounce.co.uk, 1 havedicewillsave.com, 1 haveforeningen-enghaven.dk, 1 @@ -66650,9 +66612,9 @@ 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 @@ -66757,6 +66719,7 @@ hcr.io, 0 hcscrusaders.com, 1 hcsoffshore.com, 1 +hcst.be, 1 hcstrache.at, 1 hctegelhandel.tk, 1 hctr002.tk, 1 @@ -66769,7 +66732,6 @@ hd-outillage.com, 1 hd4arab.tk, 1 hd6729.com, 1 -hd6957.com, 1 hd9721.com, 1 hdaccess.info, 1 hdbigass.com, 1 @@ -66781,6 +66743,7 @@ hdcoupler.com.au, 1 hddrecovery.net.au, 1 hdeaves.uk, 1 +hdentertainment.de, 1 hdevent.net, 1 hdfreex.com, 1 hdgrannytube.com, 1 @@ -66813,6 +66776,7 @@ hdsi.io, 1 hdsinemax.com, 0 hdspot.org, 1 +hdsr.nl, 1 hdtech.com.pl, 1 hdtvblogsers.ga, 1 hdtvblogsest.ga, 1 @@ -66857,7 +66821,6 @@ headspaequipment.com, 1 headstartkernow.org.uk, 1 headstrong.de, 1 -headsuphealth.com, 1 headtopics.com, 1 headuser.org, 1 headwall-hosting.com, 1 @@ -66865,7 +66828,6 @@ healdsburg.gov, 1 healinfoods.com, 1 healingmatters.ca, 1 -healingriverscounseling.net, 0 healingthenaturalway.cf, 1 healingthenaturalway.ga, 1 healingthenaturalway.gq, 1 @@ -67081,7 +67043,6 @@ healthmystical.ga, 1 healthnano.ga, 1 healthnational.ga, 1 -healthnetworkcollective.com, 1 healthnobel.ga, 1 healthnorman.tk, 1 healthnorthamerican.ga, 1 @@ -67179,7 +67140,6 @@ healthvariety.tk, 1 healthveedersburg.tk, 1 healthvision.ml, 1 -healthvitalzone.com, 1 healthwarior.tk, 1 healthwausau.tk, 1 healthwealthtime.org, 1 @@ -67195,7 +67155,6 @@ healthyarizona.tk, 1 healthyarkansas.tk, 1 healthybeauty365bn.com, 1 -healthybrewhub.com, 1 healthyburn.tk, 1 healthychoices.tk, 1 healthyclinic.tk, 1 @@ -67248,6 +67207,7 @@ hearkener.com, 1 heart-cartoons.tk, 1 heart-valve-surgery.com, 1 +heartalyze.com, 1 heartbeat24.de, 1 heartbound.wiki, 1 heartcard.tk, 1 @@ -67293,7 +67253,6 @@ 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 @@ -67385,6 +67344,7 @@ heeler.red, 1 heello.es, 1 heerenveen.nl, 1 +heerenveenlokaal.nl, 1 heerlijkland.com, 1 heerlijkland.nl, 1 heesenyachts.com, 0 @@ -67412,7 +67372,6 @@ heiaheia.com, 1 heibel.tk, 1 heibobo.cf, 1 -heibobo.com, 1 heibobo.ga, 1 heibobo.gq, 1 heibobo.ml, 1 @@ -67470,7 +67429,6 @@ heinopeters.eu, 1 heinrich1.de, 1 heinrich5991.de, 1 -heins.info, 1 heins.one, 1 heinzdekat.tk, 1 heinzencastellano.tk, 1 @@ -67480,7 +67438,6 @@ heirportal.com, 1 heise.cf, 1 heise.ml, 1 -heisenberg.co, 1 heishop.com.br, 1 heishop.mx, 1 heist-clan.tk, 1 @@ -67588,6 +67545,7 @@ heliwing.com, 1 helix.am, 1 helixagencyservices.com, 1 +helixnebula.tech, 1 helixsense.com, 1 helixternak.com, 1 helkyn.eu, 1 @@ -67883,7 +67841,6 @@ her123.win, 1 herald-review.com, 1 herald.ga, 1 -heraldcourier.com, 1 heraldik-wiki.de, 1 heraldmakassar.com, 1 heratnews.tk, 1 @@ -67914,6 +67871,7 @@ herbosia.fr, 1 herbreathonglass.tk, 1 herbsociety.org, 1 +herbstgroup.io, 1 herbsupplements.co.uk, 1 herbweb.net, 1 herbweb.org, 1 @@ -67967,6 +67925,7 @@ hermesawards.com, 1 hermesoft.at, 1 hermessenger.fr, 1 +hermetas.org, 1 hermetien.tk, 1 hermietkreeft.site, 0 herminghaus24.de, 1 @@ -68002,7 +67961,6 @@ heronhallacademy.org.uk, 1 heroofkings.com, 1 heroplusgroup.com, 0 -heroxin.com, 1 herpderpderpderp.com, 1 herpes-no.com, 1 herq.top, 0 @@ -68050,6 +68008,7 @@ hesama.tk, 1 hesaplama.net, 1 hesapozeti.com.tr, 1 +hesbenergie.be, 1 hescos.tk, 1 hesgotrizz.com, 1 heshamelsawah.clinic, 1 @@ -68062,7 +68021,7 @@ hessen.social, 1 hessenheim.tk, 1 hessentoday.de, 1 -hessis.eu, 1 +hessis.eu, 0 hessis.xyz, 1 hessischer-landtag.de, 1 hesslag.com, 1 @@ -68096,6 +68055,7 @@ hetveurtheater.nl, 1 hetvezercsarda.hu, 1 hetwalhalla.nl, 1 +hetwebsitebedrijf.nl, 1 heureka2.com, 1 heute-kaufen.de, 1 heute.training, 1 @@ -68161,7 +68121,6 @@ hey.com, 1 hey.pw, 1 heybilly.io, 1 -heyblogging.com, 0 heybookmark.ga, 1 heybookmark.gq, 1 heybritney.tk, 1 @@ -68224,7 +68183,6 @@ hgwld.com, 1 hgyo.me, 1 hgyoseo.com, 1 -hgzw.com, 0 hh-host.de, 1 hh-massage.de, 1 hh-medic.com, 1 @@ -68308,6 +68266,7 @@ hideallip.com, 1 hideandseek.org, 1 hidedd.com, 1 +hidelife.ru, 1 hidemee.com, 1 hidemyipaddress.com, 1 hideouswebsite.com, 1 @@ -68370,6 +68329,7 @@ higheducation.ml, 1 highend-audiopc.com, 1 highenergy.tk, 1 +highenergymagic.net, 1 higherairspace.eu, 1 higherpress.org, 1 highftp.tk, 1 @@ -68458,6 +68418,7 @@ hilbertwi.gov, 1 hilde.link, 1 hiledge.com, 1 +hilfe.de, 1 hilfiker.cloud, 1 hilfikernet.ch, 1 hilfikers.com, 1 @@ -68485,6 +68446,7 @@ hillshandymate.com, 1 hillside-il.gov, 1 hillsidecustom.com, 1 +hillsidemooloolahvalley.com.au, 1 hillsphotosoc.tk, 1 hillstohome.com, 1 hillstrak.com.au, 1 @@ -68531,13 +68493,11 @@ hinduworld.tk, 1 hindweb.tk, 1 hinesitecoding.com, 1 -hingehealth.com, 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 @@ -68573,6 +68533,7 @@ hippogriffhaven.com, 1 hippogriffhaven.net, 1 hippolini-herold.de, 1 +hiprax.com, 1 hiprosun.com, 1 hips.com, 1 hipstermamaproductions.com, 1 @@ -68674,7 +68635,7 @@ hitchcockcountyne.gov, 1 hitchen.net, 1 hitchens.tk, 1 -hitchhikerslive.com, 1 +hitchhikerslive.com, 0 hitchpin.com, 1 hitchunion.org, 1 hitech-news.ml, 1 @@ -68809,6 +68770,7 @@ hkmap.net, 1 hkmusz.cn, 1 hknhuisartsen.nl, 1 +hknit.de, 1 hkno.it, 1 hkoreatv.gq, 1 hkp-usa.com, 1 @@ -69199,7 +69161,6 @@ 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 @@ -69236,6 +69197,7 @@ homebrew.tk, 1 homebrewshop.be, 1 homebrewworm.tk, 1 +homebrookgosnells.com.au, 1 homebuilder.tk, 1 homebutton.tk, 1 homecache.ga, 1 @@ -69436,7 +69398,6 @@ homemaintenanceservicesindubai.com, 1 homemarks.ga, 1 homemaster-chita.ru, 0 -homematicblog.de, 0 homemediadb.org, 1 homemember.ga, 1 homemessenger.ga, 1 @@ -69607,7 +69568,6 @@ honeysucklerosephotography.com, 1 honeysucklewhite.com, 1 honeytracks.com, 1 -honeyuniversity.net, 1 honeyxlips.com, 1 hong.com.br, 1 hong.io, 1 @@ -69623,7 +69583,6 @@ hongosdemexico.tk, 1 honguyensy.tk, 1 hongyun-rent.com, 1 -honigconte.com, 1 honigkuchenpferdeher.de, 1 honk.house, 1 honkai.sr, 1 @@ -69762,7 +69721,7 @@ hornburg.io, 1 hornby.com, 1 horneytownbrewing.com, 1 -horngyihyangped.com.tw, 1 +horngyihyangped.com.tw, 0 hornofamerica.com, 1 horntec.at, 1 hornwiesen-grundschule.de, 1 @@ -69779,7 +69738,6 @@ horoscopo.ml, 1 horotoday.tk, 1 horovod.im, 1 -horozo.com, 1 horrell.ca, 1 horrendous-servers.com, 1 horror-forum.de, 1 @@ -69788,7 +69746,6 @@ horrormovies.gr, 1 horrorserv.com, 1 horrycountysc.gov, 1 -horsa.cc, 1 horsa.io, 1 horsa.xyz, 1 horsebreeding.cf, 1 @@ -69818,6 +69775,7 @@ horvatnyelvkonyv.hu, 1 hory.me, 1 horza.org, 1 +hoscad.net, 1 hosch.co.nz, 1 hose.ga, 1 hosen-flicken.de, 1 @@ -69844,7 +69802,6 @@ hospicewebsite.org, 1 hospicewise.org, 1 hospicjumzory.pl, 1 -hospimedia.fr, 1 hospitable.com, 1 hospitalcmq.com, 1 hospitalcruzvermelha.pt, 1 @@ -69881,7 +69838,6 @@ hostcoz.com, 1 hostcsr.com, 1 hostdns.com, 1 -hosteasy.nl, 0 hosted-power.com, 1 hostedcomments.com, 1 hosteddatabase.in, 1 @@ -69891,6 +69847,7 @@ hostedghost.org, 1 hostedtalkgadget.google.com, 1 hosteko.com, 1 +hostel.brussels, 1 hosteleriauno.es, 1 hostelgeeks.com, 1 hostelio.com, 1 @@ -69917,6 +69874,7 @@ hostingactive.it, 0 hostingalternative.com, 0 hostingdesignweb.com, 0 +hostingdetails.eu, 1 hostingdirect.nl, 1 hostingdirectory.ga, 1 hostingelite.tk, 1 @@ -70016,19 +69974,16 @@ 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 -hotelbird.com, 1 hotelbiz.cf, 1 hotelbiz.ga, 1 hotelbiz.gq, 1 hotelbretagne.dk, 1 hotelcharlestonsantateresa.com, 1 hotelcoco.co.uk, 1 -hotelconsulado.com.br, 1 hotelcorporate.codes, 1 hotelcorporatecodes.com, 1 hoteldealsphuket.com, 1 @@ -70047,7 +70002,7 @@ hotelite.tk, 1 hotelizalde.com, 1 hotelkeihan.co.jp, 1 -hotelkiara.mx, 1 +hotelkentavar.com, 1 hotellamm.it, 1 hotellocaldubai.com, 1 hotelmap.com, 1 @@ -70055,6 +70010,7 @@ hotelmelograno.eu, 1 hotelmirage-bg.com, 1 hotelnagarkotparadise.tk, 1 +hotelpalotacity.hu, 1 hotelparqcentral.com, 1 hotelpenzance.com, 1 hotelplanner.com, 1 @@ -70081,6 +70037,7 @@ hotelsrejber.cz, 1 hotelsrit.tk, 1 hotelsthisweekend.com, 1 +hotelstrandparken.dk, 1 hotelsvetaekaterina.com, 1 hotelswithallinclusive.com, 1 hotelswithprivatepool.com, 1 @@ -70090,6 +70047,7 @@ hotelvalena.com, 1 hotelvillafiorita.com, 1 hotelvisegrad.hu, 1 +hotelwestplonsk.pl, 1 hotelylangylang.com, 1 hotelylangylang.fr, 1 hotelylangylang.re, 1 @@ -70292,7 +70250,6 @@ howcodingworks.com, 1 howdidido.com, 1 howdl.com, 1 -howdoesmycode.work, 1 howdy.fr, 1 howdymassage.com, 1 howeda.de, 1 @@ -70321,10 +70278,10 @@ howto-connect.com, 1 howto-outlook.com, 0 howtobehealthy.tk, 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 @@ -70383,7 +70340,6 @@ hpnso.com, 1 hprasath.com, 1 hpruehl.de, 1 -hpscb.com, 1 hpsdigital.hu, 1 hpsldc.com, 1 hpsq.io, 1 @@ -70464,7 +70420,7 @@ hrpayhub.com, 1 hrprofessionals.tk, 1 hrreporter.com, 1 -hrrpnepal.org, 1 +hrrpnepal.org, 0 hrsa.gov, 1 hrseoservice.com, 1 hrstapps-dev.com, 1 @@ -70568,9 +70524,9 @@ 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 @@ -70618,6 +70574,7 @@ httpsecured.net, 1 httpsiseasy.com, 1 httpsispisseasy.com, 1 +httpsornot.com, 1 httpsrdr.me, 1 httpsredirector.com, 1 httpssify.com, 1 @@ -70667,7 +70624,6 @@ huapont.com, 1 huapood.com, 1 huaqian.art, 1 -huarenda.com, 0 huashan.co.uk, 1 huashang.tk, 1 huaskj.com, 1 @@ -70730,7 +70686,7 @@ hudsonregional.gov, 1 hudsonsolutions.com, 1 hudsonwi.gov, 1 -hudu.com, 1 +hudu.com, 0 huduser.gov, 1 huecomundo.tk, 1 hueffenhardt.de, 1 @@ -71007,6 +70963,7 @@ huoyankan.com, 1 huoyou.com, 1 hup.hu, 0 +hupoints.com, 1 hurdafiyatlari.site, 1 hurdaphysio.fi, 1 hurinkazan2020.com, 1 @@ -71112,7 +71069,6 @@ hwr-barsinghausen.de, 1 hwsw.io, 1 hwvv.nl, 1 -hwy25landscaping.com, 1 hx-sun.com, 1 hx53.de, 1 hx678.cc, 1 @@ -71191,7 +71147,6 @@ hydroscans.com, 1 hydrosense.click, 1 hydrosila.com, 0 -hydrostor.ca, 1 hydroturbine.info, 0 hydrozen.io, 1 hydrozone.fr, 1 @@ -71338,6 +71293,7 @@ hyundaisrilanka.lk, 1 hyunjoonkim.net, 1 hyvinvointineuvoja.fi, 1 +hyweene.fr, 1 hyy.chat, 1 hyyen.com, 1 hyyperchat.com, 1 @@ -71421,7 +71377,6 @@ i7sas.tk, 1 i88i.gq, 1 i9297.co, 1 -i95dev.com, 0 i9728.co, 1 i9s.in, 1 ia-tools.com, 1 @@ -71546,8 +71501,7 @@ ibb.istanbul, 1 ibc.com, 1 ibcfinancial.com, 1 -ibcmed.com, 0 -ibcrage.com, 1 +ibcmed.com, 1 ibdmdb.org, 1 ibe.de, 1 ibec.ie, 1 @@ -71575,11 +71529,9 @@ ibidyoupeace.com, 1 ibiki-boushi-makura.net, 1 ibilog.net, 1 -ibin.co, 1 ibipoint.com, 1 ibiu.xyz, 0 ibizads.tk, 1 -ibizaluxuryachts.com, 1 ibk.at, 1 iblackfriday.ro, 1 ibles.pl, 1 @@ -71602,7 +71554,7 @@ ibq.life, 1 ibra.org.uk, 1 ibrainmedicine.org, 1 -ibrave.nl, 1 +ibrave.nl, 0 ibrom.eu, 1 ibron.co, 0 ibsglobal.co.za, 1 @@ -71615,11 +71567,11 @@ 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 @@ -71717,12 +71669,10 @@ 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 @@ -71765,7 +71715,6 @@ icomputeconsulting.com, 1 icomuk.co.uk, 1 icon-programming.tk, 1 -iconbuild.com, 1 iconcope.org, 1 icone-one.fr, 1 iconexperience.com, 1 @@ -71788,8 +71737,10 @@ 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 @@ -71947,13 +71898,13 @@ 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 @@ -72053,6 +72004,7 @@ iear.be, 1 iear.nl, 1 iec-telecom.com, 1 +iedc.ie, 1 iedereenaanzet.nl, 1 iedr.ie, 1 ieduex.com, 1 @@ -72075,7 +72027,6 @@ ieomidi.com, 1 iepaiement.fr, 1 iepanywhere.com, 1 -ierecordings.com, 1 ieros.it, 1 iesledzkarjeru.lv, 1 iesm.lk, 1 @@ -72162,6 +72113,7 @@ ig.me, 1 iga-semi.jp, 1 igame.ml, 1 +igaming.express, 1 igamingaffiliateprograms.com, 1 igamingdirectory.com, 1 igamingnyheder.dk, 1 @@ -72173,6 +72125,7 @@ igc.in.th, 1 igcomputers.bg, 1 igdb.com, 1 +igeeksblog.com, 1 igen.fr, 1 igenuinebeauty.co.jp, 1 igforum.tk, 1 @@ -72182,10 +72135,11 @@ 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 @@ -72208,6 +72162,7 @@ ign-proprete.fr, 1 ignace72.eu, 1 ignacjanskiednimlodziezy.pl, 1 +ignasiesteve.com, 1 ignat-mag.com, 1 ignat-torcov.tk, 1 ignatij.tk, 1 @@ -72335,7 +72290,7 @@ iiet.pl, 0 iig-order.com, 1 iihr.res.in, 1 -iii-coalition.us, 0 +iii-coalition.us, 1 iiid.work, 1 iiii.gq, 1 iiii.loan, 1 @@ -72343,6 +72298,7 @@ iiinhoj.com, 1 iiipublishing.com, 1 iiit.pl, 1 +iiitint.online, 1 iinehp.com, 1 iinf.in, 1 iinix.com, 1 @@ -72357,7 +72313,7 @@ iisjy.cn, 1 iispeed.com, 1 iisuss.gq, 1 -iita.org, 1 +iita.org, 0 iitbmonash.org, 1 iitcr.ca, 1 iitcr.com, 1 @@ -72390,6 +72346,7 @@ ikama.cz, 1 ikara.social, 1 ikari-san.tk, 1 +ikaria.com.gr, 1 ikaros.tk, 1 ikarus-itkurs.de, 1 ikazumitsu.tk, 1 @@ -72430,6 +72387,7 @@ iknowd.org, 1 iknowthatgirl.com, 1 iknowthatgirlpremium.com, 1 +ikoreg.nl, 1 ikra24.in.ua, 1 ikrab.club, 1 iks.moe, 1 @@ -72444,6 +72402,7 @@ ikwildjworden.com, 1 ikwileendomein.tk, 1 ikx.me, 1 +ikymomo.com, 1 ikzoekeengoedkopeauto.nl, 1 ikzoektim.nl, 1 il12thcourt.gov, 1 @@ -72532,9 +72491,8 @@ illinitechservice.com, 0 illinoiscaselaw.com, 1 illinoiscourtscommission.gov, 1 -illinoiseagle.com, 0 illinoishealth.tk, 1 -illinoisschools.us, 0 +illinoisschools.us, 1 illinoistitlesearch.com, 1 illiweb.com, 1 illjinx.info, 1 @@ -72640,7 +72598,6 @@ image.tf, 1 image4arab.tk, 1 imagealbums.tk, 1 -imagebin.ca, 1 imagecom.tk, 1 imagecurl.com, 0 imagelr.com, 1 @@ -72672,6 +72629,7 @@ imagineokla.gov, 1 imaginescape.tk, 1 imaginethefloor.tk, 1 +imaginethissound.com, 1 imagingstudio.co.uk, 0 imagisphe.re, 1 imajjeans.com, 1 @@ -72730,7 +72688,6 @@ imediabay.com, 1 imediafly.com, 1 imediato.pt, 1 -imediatoonline.com, 1 imena-znachenie.ru, 1 imenalfa.com, 1 imenieto.com, 1 @@ -72738,7 +72695,6 @@ 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 @@ -72771,7 +72727,7 @@ imisto.net, 1 imitationjewelry.tk, 1 imitza.com, 0 -imjconnect.co.uk, 1 +imjason.hk, 1 imjo.in, 1 imjosepho.lol, 1 imjustcreative.com, 1 @@ -72916,7 +72872,6 @@ immtel.com, 1 immune.cf, 1 immunetolerance.org, 1 -immuniweb.com, 1 immunoboost.be, 1 immunowell-jcv-portal.com, 1 immutable.com, 0 @@ -72971,6 +72926,7 @@ impactparcels.co.uk, 1 impactphysio.co.uk, 1 impactpub.ch, 0 +impactyou-academy.nl, 1 impactyou.nl, 1 impakho.com, 1 impalaparts.com, 1 @@ -73021,7 +72977,6 @@ implementconsultinggroup.com, 1 implicitsuccess.com, 1 implosion.tk, 1 -implude.com, 0 import-shopping.de, 1 important-stories.com, 1 importanteducation.tk, 1 @@ -73070,7 +73025,7 @@ improbo-group.com, 1 improd.works, 1 improfestival.ee, 1 -improsupreme.com, 0 +improsupreme.com, 1 improv.ee, 1 improved-madness.de, 1 improvenerg.com, 1 @@ -73130,7 +73085,6 @@ 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 @@ -73155,11 +73109,13 @@ 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 @@ -73221,6 +73177,7 @@ incnjp.com, 1 incntfit.com, 1 incognito.org.uk, 1 +incoko.ai, 1 income-earnings.tk, 1 incomeaccess.com, 1 incomeplus.tk, 1 @@ -73290,7 +73247,6 @@ index-games.com, 1 index.co.cr, 1 index.law, 1 -index.love, 1 indexacapital.com, 1 indexcesmad.cz, 1 indexhost.tk, 1 @@ -73358,6 +73314,7 @@ indiaworlddigital.tk, 1 indicana.pl, 1 indicatifs.fr, 1 +indichosts.net, 1 indicia.nl, 1 indico.tk, 1 indicodata.ai, 1 @@ -73379,7 +73336,6 @@ indigoblack.com.au, 1 indigobooks.gq, 1 indigodergisi.com, 1 -indigojewelers.com, 1 indigosakura.com, 1 indigterms.com, 1 indihome.co.id, 1 @@ -73459,7 +73415,6 @@ industrialgassprings.com, 1 industrialprecisionmfg.com, 0 industriascruz.co, 1 -industrilokal.com, 1 industrydecarbonization.com, 1 industryoutlaws.tk, 1 industryskillsaustralia.org.au, 1 @@ -73498,7 +73453,6 @@ inf0sec.nl, 1 infakt.pl, 1 infaktcdn.pl, 1 -infalaw.com, 1 infamousguild.tk, 1 infans.be, 1 infantry.org.ua, 1 @@ -73536,21 +73490,21 @@ infinitenews.cf, 1 infinitenews.ml, 1 infiniteserieslabs.com, 1 +infinitetimetoact.com, 1 infinitewealth.com.au, 1 infinitiofallentownparts.com, 1 infinitiofaugustaparts.com, 1 infinitiofmarinparts.com, 1 infinitipartsdeal.com, 1 infinitiresearch.com, 1 +infinitisoftware.net, 1 infinito.tk, 1 -infinitomarca.com, 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 @@ -73561,7 +73515,7 @@ infinityrecruitinggroup.com, 1 infinityspm.com, 1 infinityvr.net, 1 -infinityweb.com.au, 1 +infinityweb.com.au, 0 infinityworks.com, 1 infino.me, 1 infinoe.fr, 1 @@ -73583,6 +73537,7 @@ inflationstation.net, 1 inflexa.com, 1 inflexsys.com, 0 +inflowave.io, 1 influencemobile.services, 1 influencestaging.services, 1 influencetechpr.com, 1 @@ -73634,7 +73589,6 @@ infocert.digital, 1 infocert.it, 1 infocielo.com, 1 -infocision.com, 1 infocoin.es, 1 infocrypto.pl, 1 infocus.company, 0 @@ -73747,10 +73701,11 @@ infosecsw.ca, 0 infosectek.io, 1 infosective.org, 1 +infosecurite.com, 1 infoserp.net.pe, 1 infoshield.sa, 1 infosolution.biz, 0 -infosoph.org, 1 +infosoph.org, 0 infostack.store, 1 infostor.com, 1 infosystem.cf, 1 @@ -73761,7 +73716,6 @@ infoteka.cf, 1 infotelsystems.com, 1 infotics.es, 1 -infotune.nl, 1 infotv.io, 1 infotype.ga, 1 infovb.org, 1 @@ -73828,7 +73782,6 @@ ingegnereambientale.tk, 1 ingemmologie.com, 1 ingenesis.com, 1 -ingeni.ink, 1 ingeniasas.com, 1 ingenieurbatiment.com, 1 ingenieure-website.de, 1 @@ -73837,6 +73790,7 @@ ingeniumsociety.tk, 1 ingenius.ws, 1 ingenuitycloudservices.com, 1 +ingeospect.si, 1 ingerhy.com, 1 ingermany.ml, 1 ingersolltwpmi.gov, 1 @@ -73862,6 +73816,7 @@ ingolfsskali.is, 1 ingoschlueter.de, 1 ingrain-ed.com, 1 +ingrammicro.de, 1 ingredientwatch.com, 1 ingresatupedido.com, 1 ingresosautomaticos.tk, 1 @@ -73963,8 +73918,8 @@ 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 @@ -73993,7 +73948,6 @@ innatepotatoes.com, 1 innatocol.com, 1 inncoaching.nl, 1 -innectsphere.ca, 1 innenstadtkirche.de, 1 inner-change-mastery.com, 1 inner-vision.tk, 1 @@ -74056,6 +74010,7 @@ innovatopia.jp, 1 innovent.com, 1 innover.se, 1 +innovex-inc.com, 1 innoviafilms.com, 0 innoviahome.com, 1 innovinity.io, 1 @@ -74170,6 +74125,7 @@ insiderateers.ga, 1 insiderateest.ga, 1 insiders.ga, 1 +insidertradingabout.com, 1 insiderx.com, 1 insidethefirewall.tk, 1 insidetheigloo.com, 1 @@ -74178,7 +74134,7 @@ insightfabric.com, 1 insightfulpsychics.com, 1 insighti.com, 1 -insights.plus, 1 +insightrestoration247.com, 1 insights.solutions, 1 insightsoftware.com, 1 insightsvt.com, 1 @@ -74199,6 +74155,7 @@ insomniasec.com, 0 insource.org, 1 inspaceindustrial.com, 1 +inspectia.io, 1 inspiraenterprise.com, 1 inspirascholen.be, 1 inspirationallight.com, 1 @@ -74239,7 +74196,7 @@ insst.es, 1 insta-viewer.ml, 1 instabizmart.com, 1 -instacart.careers, 1 +instacart.careers, 0 instacart.com, 1 instachina.ru, 1 instacredito.pt, 1 @@ -74318,6 +74275,7 @@ instytutwellsense.pl, 1 insulationmachinestore.com, 1 insulations.ga, 1 +insulationstop.com, 1 insulectro.com, 1 insult.es, 1 insultband.tk, 1 @@ -74348,6 +74306,7 @@ insured-event.tk, 1 insuredcloud.ga, 1 insuredcreativity.com, 1 +insurekidsnow.gov, 1 insuremycar.ru, 1 insureon.com, 1 insurethebox.tk, 1 @@ -74393,7 +74352,6 @@ integral-calculator.ru, 1 integral-re.com, 1 integralblue.com, 1 -integralcare.org, 1 integralinmobiliario.com, 1 integralkk.com, 1 integralrechner.de, 1 @@ -74406,7 +74364,7 @@ integratedbms.co.za, 1 integratedmedicalonline.com, 1 integratedphysio.com.au, 1 -integration-mouvements-oculaires.com, 1 +integration-mouvements-oculaires.com, 0 integrativetherapy.com.mt, 1 integrator.io, 1 integreatedmedia.com, 1 @@ -74416,7 +74374,6 @@ integrity.gov, 1 integritydetail.com, 1 integrityglobal.com, 1 -integrityhomecontractors.com, 1 integritykrakow.pl, 1 integrityline.com, 1 integrityriskintl.com, 1 @@ -74451,9 +74408,9 @@ intellicore.cl, 1 intellicus.com, 1 intellicyb.com, 1 +intellify.me, 1 intelligence-explosion.com, 1 intelligence-privee.com, 1 -intelligencia.ai, 1 intelligentglo.fi, 1 intelligentgo.org, 1 intelligentnegotiator.com, 0 @@ -74501,7 +74458,6 @@ interaktiva.fi, 1 interallied.org, 1 interativashop.com.br, 1 -interbanco.com.gt, 1 interbank.pe, 1 interbase.org, 1 interbec.com, 0 @@ -74603,9 +74559,7 @@ internationaldesigncomp.com, 1 internationalepolitik.de, 0 internationalfashionjobs.com, 1 -internationalflightstickets.com, 1 internationalfm.tk, 1 -internationalfrom.com, 1 internationaljoustingleague.tk, 1 internationallaborlaw.com, 1 internationalmedicaleducation.co.uk, 1 @@ -74642,7 +74596,6 @@ internetional.nl, 1 internetivo.com, 1 internetk.tk, 1 -internetkultur.se, 1 internetkunskap.se, 1 internetline.tk, 1 internetmagaz.tk, 1 @@ -74682,6 +74635,7 @@ 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 @@ -74720,7 +74674,7 @@ interwebz.nz, 1 interwerk.de, 1 intestclub.tk, 1 -intgr8ai.com, 0 +intgr8ai.com, 1 inthe10.com, 1 inthechair.com, 1 inthechileanwoods.tk, 1 @@ -74748,6 +74702,7 @@ into-the-mountain.com, 1 intomsk.tk, 1 inton.biz, 1 +intoneccm.com, 1 intoparking.fi, 1 intor.fi, 1 intosec.nl, 1 @@ -74765,6 +74720,7 @@ intraedge.com, 1 intrafi.com, 1 intralan.nl, 1 +intralogix.online, 1 intranet.dvag, 1 intranetcity.ch, 1 intranetconsultant.au, 1 @@ -74790,18 +74746,18 @@ 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, 1 +inuyasi.com, 0 invadecafe.tk, 1 invaded.ga, 1 invadion.com, 1 @@ -74899,6 +74855,7 @@ investisiya.az, 1 investment-adh.com, 1 investment.com, 1 +investmentanalysethat.com, 1 investmentmonitor.ai, 1 investmentpal.com, 1 investmentrankingsers.ga, 1 @@ -74912,6 +74869,7 @@ investorcom.com, 1 investoren-beteiligung.de, 1 investorforms.com, 1 +investorimpulse.com, 1 investorloanshub.com, 1 investormonkey.com, 1 investorplace.com, 1 @@ -74955,7 +74913,6 @@ invuite.com, 1 invuite.com.au, 1 inwebo.net, 1 -inwepo.co, 1 inwhite-medical.ru, 1 inwit.tk, 1 inwmsp.pl, 1 @@ -74973,7 +74930,6 @@ inzestfreunde.de, 1 inzichtmeditatie.nl, 1 inzidenz.eu, 1 -inzite.com, 1 io-markets.com, 0 io.kg, 1 io.nl.eu.org, 1 @@ -75029,7 +74985,6 @@ ionstudio.pe, 1 ionutnica.ro, 1 ionx.co.uk, 1 -iop.intuit.com, 1 iopex.com, 1 iopool.us, 1 ioretreat.com, 1 @@ -75050,7 +75005,6 @@ iotaiy.com, 1 iotaker.jp, 1 iotanodes.org, 1 -iotbusinessforum.com.br, 1 iotekha.tv, 1 iotfen.com, 1 iotflowers.com, 1 @@ -75101,11 +75055,11 @@ 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 @@ -75202,7 +75156,6 @@ iprjb.org, 0 iprod.it, 1 iproducemusic.com, 1 -iproductrepair.com, 1 iprofinews.ru, 1 iproov.com, 1 iprox.nl, 1 @@ -75255,6 +75208,7 @@ ipv6.jetzt, 0 ipv6.pictures, 1 ipv64.net, 0 +ipv6cybersecurity.com, 1 ipv6ioffentligsektor.se, 1 ipvbook.com, 0 ipview.tk, 1 @@ -75273,6 +75227,7 @@ iqsecurity.eu, 1 iqsmn.org, 0 iqtechportal.com, 1 +iquiz.ie, 1 iqviet.com, 1 iqxbusiness.com, 1 ir.to, 1 @@ -75343,7 +75298,6 @@ ireba-navi.com, 1 iredellcountync.gov, 1 iregister.al, 1 -ireiguam.org, 1 ireland.gq, 1 irelandinternetstuffs4u.tk, 1 irelandondemand.ie, 1 @@ -75548,6 +75502,7 @@ isavings.com, 1 isbase.de, 1 isbaseballstillon.com, 1 +isbc.org, 1 isbk.de, 0 isbndirect.com, 0 isbul.net, 1 @@ -75556,7 +75511,6 @@ isc2estoniachapter.ee, 1 isca-apologetics.org, 1 ischool.co.jp, 1 -iscloud.org, 1 iscontrol.com.mx, 1 iscoolentertainment.com, 1 iscribblesolutions.com, 1 @@ -75566,9 +75520,10 @@ 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 @@ -75640,7 +75595,6 @@ islamantarih.tk, 1 islambolivia.tk, 1 islamdersi.tk, 1 -islamdin.com, 1 islamfirst.ml, 1 islamicacademy.tk, 1 islamicarchitecturalheritage.com, 1 @@ -75686,7 +75640,6 @@ isleofman.tk, 1 isleoftheserpent.com, 1 isletmenlikkursuankara.tk, 1 -isliada.org, 1 islief.com, 1 islightdown.today, 1 islikimas.lt, 1 @@ -75745,7 +75698,6 @@ isotope.gov, 1 isotopes.gov, 1 isovideo.com, 1 -isowebtech.com, 1 ispactivo.com, 1 ispadmin.eu, 1 ispanika.tk, 1 @@ -75763,16 +75715,15 @@ 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 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 @@ -75790,7 +75741,6 @@ isreedyinthe.us, 1 isreedyintheuk.com, 1 isrib.com, 1 -isrokapa.com, 1 issacdelgado.com, 1 issaias.net, 0 issaquah.cam, 1 @@ -75799,7 +75749,6 @@ issea.wiki, 1 issforum.org, 1 issho.jp, 1 -issimaequestre.com, 1 issio.net, 1 isslshop.com, 1 issnet.cf, 1 @@ -75809,7 +75758,6 @@ issuerconsulting.com, 1 issues.email, 1 issuetrak.com, 1 -issundries.com, 1 issww.top, 1 ist-analys.com, 1 ist-analyse.com, 1 @@ -75822,7 +75770,9 @@ 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 @@ -75938,6 +75888,7 @@ italgold.it, 1 italia-facile.ru, 1 italiaeconomy.it, 1 +italiainvestigazioni.com, 1 italiale.tk, 1 italian-shoes.tk, 1 italiana-lacrima.tk, 1 @@ -75985,6 +75936,7 @@ itbrief.co.nz, 1 itbrief.co.uk, 1 itbrief.com.au, 1 +itbrief.ie, 1 itbrief.in, 1 itbrief.news, 1 itbrouwerij.be, 1 @@ -76075,6 +76027,7 @@ itis.gov, 1 itis4u.ch, 1 itisjustnot.cricket, 1 +itisyourmoney.co.uk, 1 itiweb.tk, 1 itk.se, 1 itleaked.gq, 1 @@ -76092,6 +76045,9 @@ 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 @@ -76116,6 +76072,7 @@ itprosmgmt.com, 1 itprotect.pl, 1 itqlatam.com, 1 +itrad.ie, 1 itradeit.in, 1 itradenetwork.com, 1 itraffic.cf, 1 @@ -76162,7 +76119,6 @@ itscalculator.com, 1 itscc.kr, 1 itsch-itsche.com, 1 -itscitycommerce.com, 1 itsdcdn.com, 1 itsdho.com, 1 itsdho.org, 1 @@ -76249,7 +76205,7 @@ itxn.cn, 0 itxnorge.no, 1 itxuc.com, 1 -ity.moe, 1 +ity.moe, 0 ityco.com, 1 ityrecare.com, 1 ityug247.com, 1 @@ -76262,8 +76218,11 @@ 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 @@ -76309,6 +76268,7 @@ ivendi.com, 1 iventishirts.com, 1 ivermectin.gq, 1 +iverscustomcycles.com, 1 iversionesdp.com, 1 ivetazivot.cz, 1 ivetebolos.com.br, 1 @@ -76321,7 +76281,6 @@ ivisitkorea.com, 1 ivixor.ru, 1 ivkh.ee, 1 -ivkom.com, 1 ivkymppi.fi, 1 ivmmeta.com, 1 ivmstatus.com, 1 @@ -76333,6 +76292,7 @@ ivocopro.com, 1 ivocotec.com, 1 ivoid.cf, 1 +ivonne.ca, 1 ivopetkov.com, 1 ivor.io, 1 ivor.is, 1 @@ -76342,7 +76302,6 @@ ivory.de, 1 ivoryandgrace.com, 1 ivoryhomes.com, 1 -ivorymp3.com, 1 ivotemahdi.com, 1 ivpark.fr, 1 ivpbot.tk, 1 @@ -76356,6 +76315,7 @@ ivtherapyclinic.ru, 1 ivy-league-colleges.com, 1 ivyandrose.co, 1 +ivyar.org, 1 ivybaby.bg, 1 ivygarden.az, 1 ivyhelpers.com, 1 @@ -76398,13 +76358,12 @@ 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, 0 +iww.me, 1 iww.mx, 1 iww.org.au, 1 ix.run, 1 @@ -76449,6 +76408,7 @@ izapi4.fr, 1 izavel.com, 1 izbansaatleri.com, 1 +izdemosite.com, 1 izecubz.me, 1 izemporium.com, 1 izeno.com, 1 @@ -76492,6 +76452,7 @@ izxxs.com, 1 izxxs.net, 1 izxzw.net, 1 +izyvape.cz, 1 izzardink.com, 1 izzqz.me, 1 izzy.is, 1 @@ -76510,6 +76471,7 @@ j-robertson.com, 1 j-step.or.jp, 1 j.ac, 1 +j.box, 1 j.ls, 1 j.sh, 1 j.wtf, 1 @@ -76600,7 +76562,6 @@ jabramson.net, 1 jabsolutions.tk, 1 jacaranda-deutschland.org, 1 -jaccblog.com, 1 jacekowski.org, 1 jachtbouw.eu, 1 jachtypruszynski.pl, 1 @@ -76619,6 +76580,7 @@ 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 @@ -76695,6 +76657,7 @@ jacobtaylor.id.au, 1 jacool.tk, 1 jacopo.tk, 1 +jacopogiorgini.it, 1 jacopomolina.me, 1 jacquant.be, 1 jacquelinebellefontaine.co.uk, 1 @@ -76705,7 +76668,6 @@ jacquin.eu, 1 jacspb.ru, 1 jad.so, 1 -jadalaq.com, 1 jadara.info, 1 jadb.nl, 1 jadchaar.me, 1 @@ -76763,6 +76725,7 @@ jainnatory.ca, 1 jainnotary.ca, 1 jaion.tech, 1 +jaipandya.com, 1 jairoenfrancien.tk, 1 jairsinho.me, 1 jaisiam.co.th, 1 @@ -76790,6 +76753,8 @@ 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 @@ -76920,6 +76885,7 @@ jammy4312.me, 1 jamonesrute.com, 1 jamonsilva.com, 1 +jamrulidze.com, 1 jamstack.icu, 1 jamstallt.se, 1 jamstatic.fr, 1 @@ -76937,6 +76903,7 @@ 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 @@ -76977,6 +76944,7 @@ janilowski.pl, 1 janine-und-johannes.de, 1 janisphotos.de, 0 +janithmalinga.xyz, 1 janjic.net, 1 janjoris.nl, 1 jankamp.com, 1 @@ -77011,7 +76979,6 @@ janu.software, 1 january.com, 1 janulkowedomki.pl, 1 -janus-it.pl, 1 januszex.top, 1 janv.it, 1 janvanmechelen.tk, 1 @@ -77213,7 +77180,6 @@ javierlorente.es, 1 javiermascherano.tk, 1 javiersanchez.tk, 1 -javiscoffee.com, 1 javitron.tk, 1 javleech.com, 1 javna.com, 1 @@ -77471,7 +77437,6 @@ jed.site, 1 jeda.ch, 1 jeda.im, 1 -jedar-agency.com, 1 jedatw.com, 1 jedayoshi.com, 1 jedayoshi.me, 1 @@ -77479,6 +77444,7 @@ jedayoshi.tk, 1 jedcg.com, 1 jeddahlyn.nl, 1 +jedediahhinkle.com, 1 jedepannetonordi.ch, 0 jedepannetonordi.com, 0 jedepannetonordi.fr, 0 @@ -77570,6 +77536,7 @@ jelleraaijmakers.nl, 1 jellinbah.com.au, 1 jellybeanpress.com, 1 +jellyfin.one, 1 jellyfin.spdns.eu, 1 jellyfish.co, 1 jellyfishlivewire.co.uk, 1 @@ -77589,7 +77556,6 @@ 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 @@ -77667,6 +77633,7 @@ jeremyfaton.me, 1 jeremyharnois.com, 1 jeremyhodges.uk, 1 +jeremyjohnsonphoto.com, 1 jeremynally.com, 1 jeremyness.com, 1 jeremysermersheim.com, 1 @@ -77709,11 +77676,11 @@ 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 @@ -77778,7 +77745,6 @@ jetcraft.tk, 1 jetdrywallinteriors.com, 1 jetedhumain.fr, 1 -jetflex.de, 1 jethash.io, 1 jetkittens.co.uk, 1 jetmirshatri.com, 0 @@ -77838,7 +77804,7 @@ jezura.cz, 1 jezykoteka.pl, 1 jezzicat.org, 1 -jf-igrejanovadosobral.pt, 0 +jf-igrejanovadosobral.pt, 1 jf-madalena.tk, 1 jf-sulpice.notaires.fr, 1 jf886.cc, 1 @@ -78006,7 +77972,6 @@ jillvirus.tk, 1 jillynmalone.studio, 1 jilworldwide.org, 1 -jimautoservice.pl, 1 jimbeam-welcomesessions.at, 1 jimbiproducts.com, 1 jimbosprint.com, 1 @@ -78071,6 +78036,7 @@ jinkou.gq, 1 jinkou.ml, 1 jinliming.ml, 1 +jinma.site, 1 jinng.org, 1 jino.gq, 1 jinritemai.com, 1 @@ -78090,6 +78056,7 @@ jiriholy.cz, 1 jirkanch-ayollar.ga, 1 jirkanch-ayollar.ml, 1 +jirniy.com, 1 jis.school, 1 jisai.net.cn, 1 jischool.org, 1 @@ -78144,6 +78111,7 @@ jkest.cc, 0 jkfasham.com.au, 1 jkg.tw, 1 +jkimdds.com, 0 jkinteriorspa.com, 1 jkjpm.com, 1 jkloli.tk, 1 @@ -78202,7 +78170,7 @@ jmb.lc, 1 jmbaxi.com, 1 jmbaxico.com, 1 -jmbaxigroup.com, 1 +jmbaxigroup.com, 0 jmbaximarineservices.com, 1 jmbcorpcell.com, 1 jmbfe.com, 1 @@ -78296,7 +78264,6 @@ jobanzeigen.de, 1 jobapps.ch, 1 jobassadeurs.fr, 1 -jobbkk.com, 1 jobbnorge.no, 1 jobbois.com, 1 jobbs.se, 1 @@ -78316,6 +78283,7 @@ jobfury.com, 1 jobgether.com, 1 jobhouse.jp, 1 +jobhunt.pl, 1 jobie.tk, 1 jobindex.dk, 1 jobintourism.gr, 1 @@ -78361,10 +78329,8 @@ jobwinner.ch, 1 jobynet.tk, 1 jobzcorner.tk, 1 -jocafil.com, 1 jocata.com, 1 jocelynjenkins.com, 1 -jochem.sh, 1 jock2go.eu, 1 jockbusuttil.co.uk, 1 jockbusuttil.com, 1 @@ -78429,7 +78395,6 @@ joeyhoer.com, 1 joeysglassbaytown.com, 1 joeysmith.com, 0 -joeysslimeventure.com, 1 joeyvanvenrooij.nl, 1 joeyvilaro.com, 1 jofel-kinderkleding.tk, 1 @@ -78452,14 +78417,12 @@ 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 @@ -78544,7 +78507,6 @@ 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 @@ -78570,6 +78532,7 @@ joinamericorps.gov, 1 joincahoot.com, 1 joinclyde.com, 1 +joindns4.eu, 1 joinentre.com, 1 joinfear.tk, 1 joingy.com, 1 @@ -78804,7 +78767,6 @@ jose-latino.tk, 1 jose-manuel-benito-alvarez.tk, 1 josebernabe.ch, 1 -josedaniel.website, 1 joseenriquegonzalez.tk, 1 joseetesser.nl, 1 josef-lotz.de, 1 @@ -78853,11 +78815,8 @@ 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 @@ -78937,7 +78896,6 @@ jovenespuntales.es, 1 jovic.hamburg, 1 jovisa.com.tw, 1 -joweb.co, 1 jowm-jo.com, 1 joworld.net, 0 joy-iq.com, 1 @@ -78996,7 +78954,7 @@ jpg.fr, 1 jpg.tf, 1 jpgangbang.com, 1 -jphev.de, 0 +jphev.de, 1 jphost.ml, 1 jpilan.com, 1 jpinfo.tk, 1 @@ -79020,7 +78978,6 @@ jpst.it, 1 jptv4.us, 1 jpvermogensregie.com, 1 -jpvisual.com, 1 jqlin.com, 1 jqlsql.com, 1 jquery.wtf, 1 @@ -79049,6 +79006,7 @@ jrmora.com, 0 jrock.tk, 1 jrock.us, 1 +jrockrevolution.com, 1 jrom.net, 1 jross.me, 1 jrroofinglancs.co.uk, 1 @@ -79110,7 +79068,6 @@ jsn.one, 1 jsnfwlr.com, 0 jso-crescendo.ch, 1 -json.download, 1 json.id, 0 jsonprice.org, 1 jsonvalidator.tk, 1 @@ -79166,7 +79123,6 @@ juancadc.es, 1 juancarlosflores.tk, 1 juancarlosgalvez.tk, 1 -juancarlosllaque.com, 1 juancatalangomez.es, 1 juanfrancisco.tech, 1 juanherranz.com, 0 @@ -79206,6 +79162,7 @@ judi-online.ga, 1 judi.ga, 1 judi.tk, 1 +judic-ia.com, 1 judicialappointments.scot, 1 judicialstudiesjournal.ie, 1 judiciary.gov.ph, 1 @@ -79213,7 +79170,6 @@ judidominokiukiu.ga, 1 judidominokiukiu.ml, 1 judithsargentini.nl, 1 -judjas.com, 1 judo2point0.com, 1 judobasicsers.ga, 1 judobasicsest.ga, 1 @@ -79270,7 +79226,7 @@ julb.de, 1 julditec.com, 1 jule-spil.dk, 1 -julenetxaniz.eus, 0 +julenetxaniz.eus, 1 julenlanda.com, 0 julesfrans.be, 1 julesroovers.nl, 1 @@ -79307,7 +79263,6 @@ julianwallmeroth.de, 1 julianweigle.de, 1 juliaoantiguidades.com.br, 1 -juliard.club, 1 julias.zone, 1 juliasugar.net, 1 juliawebber.co.za, 1 @@ -79398,12 +79353,12 @@ 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 jungefreiheit.de, 1 jungelinke.tk, 1 @@ -79427,12 +79382,14 @@ 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 junkcarboys.ca, 1 +junkcarremovalbrampton.ca, 1 junkdrome.org, 0 junkersparadise.tk, 1 junkfoodcafe.com, 1 @@ -79461,6 +79418,7 @@ jura-versicherungen.de, 1 juragan.ga, 1 juragantembakau.com, 1 +jurai.pro, 1 jurancic.com, 1 jurassicworldfilmen.cf, 1 jurcic-prpic.hr, 1 @@ -79578,6 +79536,7 @@ justlovecoffeefranchise.com, 0 justmade.com.br, 1 justmensgloves.com, 1 +justmy.space, 1 justmyblog.net, 0 justmysocks.xyz, 1 justnajoua.tk, 1 @@ -79599,6 +79558,7 @@ justshare.tk, 1 juststone.net.au, 1 justthepill.com, 1 +justwatermark.com, 1 justweather.org, 1 justyy.com, 1 justzz.xyz, 1 @@ -79692,7 +79652,6 @@ k-labs.be, 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 @@ -79704,6 +79663,7 @@ 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 @@ -79716,7 +79676,7 @@ k24klik.com, 1 k258059.net, 1 k29.ee, 1 -k2corporatemobility.com, 1 +k2advocacy.com, 1 k2lin.com, 1 k2velosi.com, 1 k36533.com, 1 @@ -79745,7 +79705,6 @@ k86921.com, 0 k86930.com, 1 k86967.com, 0 -k87.app, 1 k87073.com, 0 k87074.com, 0 k87075.com, 0 @@ -79792,6 +79751,7 @@ ka4ka-ru.tk, 1 ka4ka.cf, 1 ka4ka.ml, 1 +kaag-it.com, 1 kaagenbraassem.nl, 1 kaalberry.com, 0 kaamoscreations.com, 1 @@ -79864,7 +79824,6 @@ kadifeli.com, 1 kadinhaber.tk, 1 kadinhayati.com, 1 -kadinisci.org, 1 kadinsaglikhaber.tk, 1 kadinvesaglik.tk, 1 kadizadeinsaat.com.tr, 1 @@ -79875,7 +79834,6 @@ kadvi.tk, 1 kadykchanskiy.ml, 1 kadymacdonalddenton.ca, 1 -kaeme.com, 1 kaeptns-sechser.de, 1 kaeru-seitai.com, 1 kaesehagen.nl, 1 @@ -79920,7 +79878,6 @@ kaibaunderwear.com.ar, 1 kaibinyang.com, 1 kaibinyang.tk, 1 -kaiche.com, 1 kaidoblogi.eu, 1 kaigojj.com, 1 kaihipay.jp, 1 @@ -79942,6 +79899,7 @@ kairainyhappy.com, 1 kairion.de, 1 kairoscope.org, 1 +kairoscyprus.com, 1 kais08.com, 1 kaisanord.org, 1 kaiseraerospace.tk, 1 @@ -79950,7 +79908,6 @@ kaisev.net, 1 kaishi009.com, 1 kaisla.ai, 1 -kaisto.net, 0 kaisyo.co.jp, 1 kaitol.click, 1 kaitseministeerium.ee, 0 @@ -80006,7 +79963,7 @@ kakvzyatzaim.cf, 1 kakvzyatzaim.gq, 1 kakvzyatzaim.tk, 1 -kal.co.jp, 1 +kal.co.jp, 0 kal05.tk, 1 kalabhavashricreations.com, 1 kaladarb.com, 0 @@ -80044,13 +80001,13 @@ kalimari.tk, 1 kalimat.gq, 1 kalimba-hangszerbolt.hu, 1 -kalimojo.fr, 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 @@ -80095,10 +80052,9 @@ kalwak.cr, 1 kalwestelectric.com, 1 kalyancity.in.ua, 1 -kalyandevelopers.com, 1 kalyangupta.ml, 1 kalyazin-online.tk, 1 -kalypsoapp.com, 1 +kalyndachase.com.au, 1 kam-serwis.pl, 1 kamada.com, 1 kamagrajel.org, 1 @@ -80107,7 +80063,6 @@ 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 @@ -80147,7 +80102,6 @@ kaminholz.eu, 1 kaminoke.info, 0 kaminoyamasaigube.com, 1 -kaminy-msk.ru, 0 kamio.co.uk, 1 kamisato-ent.com, 1 kamistik.com, 1 @@ -80172,6 +80126,7 @@ kampungcyber.tk, 1 kampunginggris-ue.com, 1 kampusku.tk, 1 +kampyn.com, 1 kamrad.tk, 1 kamranmirhazar.com, 1 kamsoft.pl, 1 @@ -80201,6 +80156,7 @@ kanbanflow.com, 1 kanbanflowbackup.com, 1 kancelarblanik.cz, 1 +kancelaria.torun.pl, 1 kancelariawlt.pl, 1 kancolle.me, 1 kancriaura.org, 1 @@ -80264,7 +80220,6 @@ kanoonkehaath.in, 1 kanootours.com, 1 kanotijd.nl, 1 -kanoumokuzai.co.jp, 1 kanpian369.com, 1 kanru-clinic.com.tw, 1 kansascityzoo.org, 0 @@ -80346,6 +80301,7 @@ karachay.tk, 1 karada.live, 1 karadenizhaberleri.tk, 1 +karadenizmetal.tr, 1 karagory.cloud, 1 karajonline.tk, 1 karakafa.net, 1 @@ -80436,6 +80392,8 @@ 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 @@ -80473,6 +80431,7 @@ karramba.tk, 1 karriharju.tk, 1 karrot.world, 1 +karryfishing.com, 1 karsiyakacilingir.biz.tr, 1 karsofsystems.com, 1 karsta.de, 1 @@ -80491,6 +80450,7 @@ kartenplanet.ch, 1 kartikmohta.com, 1 karting-normandie.fr, 0 +kartingzone.ru, 1 kartoffel-stampfer.com, 1 kartoffel-tobi.de, 1 kartonki.tk, 1 @@ -80564,7 +80524,7 @@ kastemperaturen.ga, 1 kastgroup.com, 1 kastrup.is, 1 -kastrupvinduet.dk, 1 +kastrupvinduet.dk, 0 kastuvas-tau.lt, 1 kasu.ga, 1 kasuganozaka.net, 1 @@ -80576,7 +80536,7 @@ kat4at.tk, 1 katabump.com, 1 katagena.com, 1 -kataiszilveszter.hu, 0 +kataiszilveszter.hu, 1 katalog-parfyum.tk, 1 katalog-serverof.ml, 1 katalog-serverov.cf, 1 @@ -80624,7 +80584,6 @@ kathleendeisher.com, 1 kathmandupost.com, 1 kathrin-maren-enders.de, 1 -kathrineaspaas.no, 1 kathrynbernardo.tk, 1 kathy.best, 1 kathy.lgbt, 1 @@ -80691,7 +80650,7 @@ kaustubhk.com, 1 kava.io, 1 kavalasite.gr, 1 -kavaofi.com, 1 +kavaofi.com, 0 kavaplius.lt, 1 kavatasygarety.tk, 1 kaveh24.com, 1 @@ -80713,13 +80672,11 @@ kawaiicon.org, 1 kawaiiku.de, 1 kawaiilo.li, 1 -kawaitomato.com, 1 kawamipiano.com, 1 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 @@ -80823,6 +80780,7 @@ kc9.com, 1 kc9.lol, 1 kc9.vip, 1 +kca2009.com, 1 kcagsolutions.com, 1 kcc8.com, 1 kcchung.com, 1 @@ -80995,7 +80953,6 @@ keitaro.io, 1 keith.pro, 1 keithazzopardi.tk, 1 -keithblakemorenoble.com, 1 keithmcmillen.com, 1 keiths.ml, 1 keithstaxis.co.uk, 1 @@ -81067,6 +81024,7 @@ kemahtx.gov, 1 kemanai.akita.jp, 1 kemand.com, 1 +kemapack.com, 1 kemba.com, 1 kemeha.tk, 1 kemerovo-news.net, 1 @@ -81128,8 +81086,6 @@ kenhv.com, 1 keniasfamilychildcare.com, 1 keniff.gq, 1 -kenkobox.jp, 1 -kenlewis.com, 1 kennards.co.nz, 1 kennebec.gov, 1 kennedy.cf, 1 @@ -81194,6 +81150,7 @@ kep-sbt.hu, 1 kepak.tk, 1 kepakoti.fi, 1 +kephren.com, 1 kepkonyvtar.hu, 1 kepleruniklinikum.at, 1 keppler.tk, 1 @@ -81259,7 +81216,7 @@ keshankang.org, 1 keshausconsulting.com, 1 keshav.cc, 1 -keshavnet.com, 0 +keshavnet.com, 1 kesif360.com, 1 kesifasya.com, 1 kesinidulu.com, 1 @@ -81324,6 +81281,7 @@ kevinaud.io, 1 kevinbarbieri.com, 1 kevinbardot.alwaysdata.net, 1 +kevinborja.com, 1 kevinbowers.me, 1 kevinchang.me, 1 kevincordes.de, 1 @@ -81380,7 +81338,6 @@ keydelay.tk, 1 keydifferencemedia.com, 1 keyesrobot.cn, 1 -keyfortech.com, 1 keyfoundation.xyz, 1 keygen.sh, 1 keyhani.tk, 1 @@ -81399,7 +81356,6 @@ keyphotojs.cf, 1 keypoint.edu.au, 1 keyrana.com, 1 -keyroot.tech, 1 keys.fedoraproject.org, 1 keyscore.me, 1 keyserver.sexy, 0 @@ -81408,6 +81364,7 @@ keysmedspa.com, 1 keysofart.com, 1 keysso.net, 1 +keystone-europe.com, 1 keystoneco.gov, 1 keystore.eu.org, 1 keysupport.net, 1 @@ -81438,7 +81395,6 @@ kfintech.com, 1 kfjgyb.com, 0 kfjh.se, 1 -kfk.haus, 1 kflo.org, 1 kfm.ink, 0 kfmhf.ca, 1 @@ -81487,6 +81443,7 @@ khaki.ga, 1 khakim.gq, 1 khakim.tk, 1 +khalabansho.com, 1 khaledalsabt.com, 1 khaledkhan.ml, 1 khaleesi.tk, 1 @@ -81495,6 +81452,7 @@ khaliinfo.tk, 1 khalilicollections.org, 1 khalti.com, 1 +khanh.id, 1 khankandi.tk, 1 khanovaskola.cz, 1 khaolak-house.com, 1 @@ -81506,10 +81464,12 @@ khas.co.uk, 1 khatapana.com, 1 khatnip.net, 1 +khatwa-editions.org, 1 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 @@ -81533,6 +81493,7 @@ khoury-dulla.ch, 0 khouryalexandre.com, 0 khoxuongchothuegiare.vn, 1 +khprop.com, 1 khramtsov.org, 1 khro.me, 1 khs1994.com, 1 @@ -81591,7 +81552,6 @@ kicktipp.nl, 1 kicktipp.pl, 1 kicktipp.pt, 1 -kickzy.nl, 1 kicnews.org, 1 kicou.info, 1 kiczela.eu, 1 @@ -81686,10 +81646,13 @@ kiewit.com, 1 kiewiterp.com, 1 kiezlerovi.cz, 1 -kif.rocks, 0 +kif.rocks, 1 kiffmarks.com, 1 kifid.nl, 1 +kigermap.cn, 1 kigermap.com, 1 +kighub.cn, 1 +kigyounomori.com, 1 kihi.news, 1 kiinanharjakoirat.tk, 1 kiind.com.au, 1 @@ -81714,8 +81677,10 @@ kiki.ee, 1 kikikanri.biz, 1 kikivega.net, 1 +kikki.io, 1 kikoskia.com, 0 kiku.pw, 1 +kildarestreet.com, 1 kilian-sommer.de, 1 kilian.gallery, 1 kiliansommer.de, 1 @@ -81723,6 +81688,7 @@ kiliflix.de, 1 kilimstyle.com, 1 kilinskiego12.pl, 1 +kilintime.com, 1 kilkennyaccountingservices.ie, 1 kilkennycoco.ie, 1 kilkimzaibu.tk, 1 @@ -81746,7 +81712,6 @@ killmebaby.ml, 1 killmenow.tk, 1 killteamseller.it, 1 -killtv.me, 0 killua-website.tk, 1 killymoonbouncycastles.com, 1 kilo-files.tk, 1 @@ -81791,7 +81756,6 @@ kimonocloud.com, 1 kimonoplatform.com, 1 kimoo.co, 1 -kimoo.net, 1 kimootoko.net, 0 kimotodental.com, 1 kimotrip.com, 1 @@ -81839,6 +81803,7 @@ kincaimedia.net, 1 kindan.net, 1 kindapoth.com, 1 +kinde.com, 1 kinder-garten.tk, 1 kinderarzt-berlin-zia.de, 1 kinderarzt-traunstein.de, 1 @@ -81905,6 +81870,7 @@ kingcourriel.fr, 1 kingcute.com, 1 kingdombuilderschurch.org, 1 +kingdomcincy.com, 1 kingdomcitymo.gov, 1 kingdomcrawlers.tk, 1 kingdomnubia.com, 1 @@ -81970,6 +81936,8 @@ 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 @@ -82092,6 +82060,7 @@ kirkkonummenavhkerho.net, 1 kirksville.gov, 1 kirkwood-smith.com, 1 +kirkwood.biz, 1 kirkwoodfencing.com, 1 kirkwoodoutdoors.com, 1 kirmizipill.com, 1 @@ -82133,11 +82102,13 @@ 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 @@ -82160,7 +82131,6 @@ 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 @@ -82315,7 +82285,6 @@ kknapredak-rubin.tk, 1 kkpig.cn, 1 kkpp.ga, 1 -kkr-bridal.net, 1 kkren.me, 0 kks.ch, 1 kksg-sulzbach.de, 1 @@ -82400,7 +82369,7 @@ kleinestrandburg-usedom.de, 0 kleinfein.co, 1 kleinhaneveld.tk, 1 -kleinhapl.com, 1 +kleinhapl.com, 0 kleinhelena.dynv6.net, 1 kleinlich.com, 1 kleinmechaniek.nl, 1 @@ -82448,6 +82417,7 @@ klimaanlage-fehler.net, 1 klimaatadaptatienederland.nl, 1 klimaatkids.be, 1 +klimaatklaar.nl, 1 klimacamp-sterkraderwald.de, 1 klimafakten.de, 1 klimakomplekt.com, 1 @@ -82510,7 +82480,6 @@ 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 @@ -82582,11 +82551,11 @@ knashaug.com, 1 knauf.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 @@ -82695,7 +82664,6 @@ knulla.me, 1 knulle.me, 1 knurps.de, 1 -knurses.com, 1 knutas.de, 1 knuterikskare.no, 1 knuthildebrandt.de, 0 @@ -82752,7 +82720,6 @@ kocca.kr, 1 koccoo.ga, 1 koch-wro.pl, 1 -koch.com.au, 1 kochadaiyaan.tk, 1 kochamkoszalin.pl, 1 kochbar.de, 1 @@ -82796,6 +82763,7 @@ koef.nl, 1 koehlhoff.de, 1 koehn-consulting.com, 1 +koehn.com, 1 koelbli.ch, 1 koeldezomerdoor.nl, 1 koelnmafia.de, 1 @@ -82958,6 +82926,7 @@ komo.am, 1 komodolabs.com, 1 komoraoze.cz, 1 +komornicy.torun.pl, 1 komornikmroczek.pl, 1 komp-plus.tk, 1 komp247.pl, 1 @@ -83019,6 +82988,7 @@ kondo-kougei.co.jp, 1 konectbus.co.uk, 1 konectus.io, 1 +koneti.fr, 1 konetsu.tk, 1 konf.ga, 1 konfekcjonowanie.com, 1 @@ -83032,7 +83002,6 @@ kongedugnad.no, 1 kongjie.cf, 1 kongjie.ml, 1 -kongkritpost.com, 1 kongress-hostessen.de, 1 kongressband.de, 1 koniag-gs.com, 1 @@ -83052,11 +83021,10 @@ 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, 1 +konser.co.uk, 0 konsertoversikt.no, 1 konservy.tk, 1 konsol.pro, 1 @@ -83066,7 +83034,6 @@ konstanz.tk, 1 konstitucia.com, 1 konsul.ga, 1 -konsul.id, 1 konsul.tk, 1 konsultacii-buhgaltera.ga, 1 konsultaciya-astrologa.cf, 1 @@ -83094,6 +83061,7 @@ kontrastonline.tk, 1 kontrol40.com, 1 kontrolapovinnosti.cz, 1 +kontrolewewspolnotach.pl, 1 kontur.tk, 1 konturalco.ru, 1 konus.tk, 1 @@ -83105,7 +83073,7 @@ konyalian.com, 1 konyhaelektronika.hu, 1 konzaross.tk, 1 -konzepttreu.de, 1 +konzepttreu.de, 0 konzertheld.de, 1 koobin.cat, 1 koobin.com, 1 @@ -83209,7 +83177,6 @@ korfballeague.nl, 1 korhonen.cc, 1 korikart.net, 1 -korjoin.com, 1 korkortet.tk, 1 korkortonline.se, 1 korlatlanmobilinternet.hu, 1 @@ -83223,7 +83190,6 @@ korotonomedya.net, 1 korrekttech.hu, 1 korrelzout.nl, 1 -korsordsvar.com, 1 korst.tk, 1 korstanjebouw.nl, 1 korstanjetimmerwerken.nl, 1 @@ -83273,7 +83239,6 @@ kostecki.org, 1 kostecki.tel, 1 kostenloses-forum.tk, 1 -kosterenpartners.com, 1 kostlyn.com, 1 kostroma-city.tk, 1 kostroma-news.net, 1 @@ -83322,6 +83287,7 @@ 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 @@ -83350,7 +83316,6 @@ kowalski7.cc, 1 kowalski7cc.xyz, 1 kowarschick.de, 1 -kowu.ru, 1 koyaanisqatsi.tk, 1 koyarecipes.com, 1 koyariz.com.tr, 1 @@ -83385,6 +83350,7 @@ kpfanworld.com, 1 kpinterface.com, 1 kpinvest.eu, 1 +kpirx.com, 1 kpit.com, 1 kpkhub.com, 1 kplante.com, 1 @@ -83470,6 +83436,7 @@ kranjnakolo.ml, 1 krankenkasse-schweiz-liste.ch, 1 krankenkasse-schweiz-vergleich.ch, 1 +krankenkasse-schweiz-wechseln.ch, 0 krankenpflege-haushaltshilfe.de, 1 krankenpflege-journal.com, 1 krankenpflege.ch, 1 @@ -83535,7 +83502,6 @@ kreditkarta.ml, 1 kreditkarten123.de, 1 kreditkoll.nu, 1 -kredito.pt, 1 kreditonline.ml, 1 kreditor.gq, 1 kreditovnet.tk, 1 @@ -83544,13 +83510,13 @@ 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 @@ -83558,7 +83524,6 @@ kremer.shop, 1 kreno.tech, 1 krenstetter.at, 1 -kreolis.net, 1 kresimir-blazevic.tk, 1 krestanskydarek.cz, 0 kretaforum.dk, 1 @@ -83612,6 +83577,7 @@ kriskras99.nl, 1 krismurray.co.uk, 1 krisp.ai, 1 +krisp.kz, 1 krispeinture.be, 1 krispykremesa.com, 1 krispymods.com, 1 @@ -83662,6 +83628,7 @@ kroll.tk, 1 krolowarodzin.pl, 1 kromamoveis.com.br, 1 +kromati.co, 1 kromberg.tk, 1 kromciri.gq, 1 krome.sg, 1 @@ -83676,6 +83643,7 @@ kronych.cz, 1 kroo.com, 1 kroon.email, 1 +kroonlocks.com, 1 kropkait.pl, 1 krosno24.com, 1 krosovki-nike.tk, 1 @@ -83740,6 +83708,7 @@ krypmonet.com, 1 krypsys.com, 1 krypt.com, 1 +krypta.me, 1 kryptera.se, 1 kryptix.eu, 1 kryptix.net, 1 @@ -83752,28 +83721,27 @@ kryptosekken.no, 1 kryptoslogic.com, 1 kryptostern.de, 1 +kryptoveritas.com, 1 kryptux.xyz, 1 krysecu.com, 1 kryshodel.ml, 1 krystal-framework.ml, 1 krytykawszystkiego.com, 1 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.kr.ua, 1 ks.pl, 1 ks015.com, 0 ks017.com, 1 ks058.com, 1 -ks0618.com, 1 ks068.com, 0 ks0886.com, 1 ks16.net, 1 @@ -83785,7 +83753,6 @@ ks335.com, 1 ks3636.com, 1 ks380.com, 0 -ks386.com, 1 ks5000.com, 0 ks5531.com, 0 ks5532.com, 1 @@ -83841,7 +83808,6 @@ kseniyakoroleva.tk, 1 ksenomorf.tk, 1 ksenoris.by, 1 -ksero.com.pl, 1 ksero.info, 1 ksero.wroclaw.pl, 0 kserownia.eu, 1 @@ -83862,6 +83828,7 @@ ksmsindia.com, 1 ksnl.net, 1 ksoftware.tk, 1 +ksolves.com, 1 ksopp.si, 1 ksp-electronics.ro, 1 kspndanautoba.id, 1 @@ -83874,7 +83841,6 @@ kst-dlvr.tk, 1 kst-service.tk, 1 kstar.eu, 1 -kstatecollegian.com, 1 kstdlvr.by, 1 ksteamship.com, 1 kstech.tech, 1 @@ -83903,6 +83869,7 @@ ktk-pc.de, 1 ktkprom.com, 1 ktlikescoffee.com, 1 +ktlspedition.de, 1 ktm-troxler.de, 1 ktnv.com, 1 ktphapn.org, 1 @@ -83946,7 +83913,6 @@ kubmeta.com, 1 kubopro.com, 1 kubopro.cyou, 1 -kubota.ca, 1 kubota.co.nz, 1 kubotapower.com.au, 1 kubrakov.ml, 1 @@ -83969,6 +83935,7 @@ kudofoto.com, 1 kudoran.tk, 1 kuechler.info, 1 +kuehn.onl, 1 kuehndel.org, 1 kuehnel-online.eu, 1 kuemmling.eu, 1 @@ -84059,7 +84026,6 @@ 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 @@ -84148,7 +84114,6 @@ 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 @@ -84165,7 +84130,6 @@ kurtisfranklin.com, 1 kurtki-moda.tk, 1 kurtlarvadisi-pusu-1.tk, 1 -kurtneuweiler.com, 1 kurtosys.com, 1 kurtschleinbeck.com, 1 kurungkurawal.id, 1 @@ -84312,9 +84276,11 @@ kyber.club, 1 kyber.consulting, 1 kyber.network, 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 @@ -84423,6 +84389,7 @@ l1qu1d.net, 1 l214.com, 1 l2dragonland.tk, 1 +l2family.net, 1 l2kl.com, 1 l2news.ga, 1 l2relax.ml, 1 @@ -84462,7 +84429,6 @@ la-tourmaline.ch, 1 la-verite.tk, 1 la-ville-aux-dames-auto-ecole.com, 1 -la360.us, 1 laa.gov.ly, 1 laac.io, 1 laakevahinko.fi, 1 @@ -84480,6 +84446,7 @@ labadusa.com, 1 labamassage.lt, 1 labambi.pl, 1 +labanca.com.uy, 1 labandadelamente.tk, 1 labandadelexpreso.tk, 1 labanochjonas.se, 1 @@ -84549,7 +84516,6 @@ labourparty.nz, 1 labourparty.org.nz, 1 labourpolicies.org.nz, 1 -laboutiquedeluminia.fr, 1 laboutiquemarocaineduconvoyeur.com, 1 laboutiquemarocaineduconvoyeur.ma, 1 labpartnering.org, 1 @@ -84609,7 +84575,6 @@ lacker-baugutachten.de, 1 lackfer.tk, 1 lackinflaveis.com.br, 1 -lacledelareussite.com, 0 lacledeslan.com, 1 lacledeslan.org, 1 laclefdigitale.fr, 1 @@ -84651,7 +84616,6 @@ ladakhtrip.tours, 1 ladanivabelgium.tk, 1 ladanmokhtari.tk, 1 -ladderartspace.com.au, 1 laddrs.uk, 1 ladedu.com, 1 ladelicateparenthese.com, 1 @@ -84681,7 +84645,6 @@ 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 @@ -84691,7 +84654,6 @@ ladyboyfiles.com, 1 ladyboytube.tv, 1 ladybugjam.com, 1 -ladychina.com, 1 ladyestelle.org, 1 ladyisabell666.com, 1 ladykarame.org, 1 @@ -84707,6 +84669,7 @@ ladyoxytocin.com, 1 ladysecrets.cf, 1 ladysecrets.ga, 1 +ladyshields.com, 1 ladysybella.net, 1 ladytron.tk, 1 ladyvampira.com, 1 @@ -84796,7 +84759,6 @@ lagos-car-hire.com, 1 lagoscooperativecollege.com, 1 lagotto.tk, 1 -lagout.org, 1 lagovistatexas.gov, 1 lagrangeutilitiesky.gov, 1 lagrangiandesign.com, 1 @@ -84849,7 +84811,6 @@ lajnaserial.cz, 1 lajornadafilipina.com, 1 lajusta.tk, 1 -lak.li, 1 lakabina.tk, 1 lakashirdetes.com, 1 lakashirdetesek.com, 1 @@ -84892,7 +84853,6 @@ lakesideinternationalhotel.com, 1 lakesidelodges.uk, 1 lakesiderealty.info, 1 -lakesideweb.design, 1 lakesitetn.gov, 1 lakespropertymgt.com, 1 lakestreetministorage.com, 1 @@ -85011,7 +84971,6 @@ lamparassevilla.com, 1 lampbooks.gq, 1 lampco.com, 1 -lamper-design.nl, 1 lampertheimer-zeitung.de, 1 lamplightvideo.com, 1 lampposthomeschool.com, 1 @@ -85058,8 +85017,6 @@ lancertactical.eu, 1 lanceyip.com, 1 lanchong.tk, 1 -lancom.de, 1 -lanconstruct.be, 1 lancyvbc.ch, 0 land.nrw, 0 landart.tk, 1 @@ -85205,7 +85162,6 @@ lanzalex.com, 1 lanzamientovirtual.es, 1 lanzarote.com, 1 -lanzastil.com, 1 lao.dog, 0 laobayy.com, 1 laoctavadireccion.tk, 1 @@ -85221,7 +85177,6 @@ laorquestadelamemoria.tk, 1 laostiaradio.tk, 1 laotravoz.tk, 1 -laowang.run, 1 laoxiwang.com, 1 laozhengxing.com, 0 laozhu.me, 1 @@ -85254,11 +85209,6 @@ 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 laplanquedujoueur.com, 1 @@ -85280,7 +85230,6 @@ laprophan.com, 1 lapseofsanity.net, 1 lapshore.com, 1 -laptopantoan.vn, 1 laptopgiasi.vn, 1 laptopnaive.com, 1 laptopnewbie.eu.org, 1 @@ -85345,6 +85294,7 @@ larifari.ch, 1 larigami.de, 1 larimarhomes.ca, 1 +larimartransporte.de, 1 larimer.gov, 1 larimercolorado.gq, 1 lariver.org, 1 @@ -85367,7 +85317,6 @@ larryandprisca.it, 1 larryhmillerseniorhealth.com, 1 larryli.cn, 1 -larrywalshe.com, 1 lars-ewald.com, 1 lars-kusch.de, 1 lars-mense.de, 1 @@ -85461,10 +85410,12 @@ 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 lastfriends.site, 1 lastingcar.com, 1 lastingmarksers.ga, 1 @@ -85557,6 +85508,7 @@ latnetwork.com, 1 latoken.com, 1 latoquedor.com, 1 +latorrecastropol.es, 1 latortilleria.eu, 1 latos.tk, 1 latour-managedcare.ch, 1 @@ -85656,6 +85608,7 @@ lava.moe, 1 lavabit.com, 1 lavabit.no, 1 +lavadodesalascdmx.mx, 1 lavaggio.it, 1 lavaggista.it, 1 lavaldostana.es, 1 @@ -85704,7 +85657,6 @@ 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 @@ -85714,7 +85666,6 @@ lawcadia.co.uk, 1 lawcadia.com, 1 lawcancer.cf, 1 -lawcer.com, 1 lawcollaborator.com, 1 lawcore.com.ua, 1 lawcover.com.au, 1 @@ -85738,7 +85689,6 @@ lawmore.pl, 1 lawn-seeds.com, 1 lawn-tech.jp, 1 -lawnandordercs.com, 1 lawnenvyva.com, 1 lawnkitsers.ga, 1 lawnkitsest.ga, 1 @@ -85773,7 +85723,6 @@ lawsuit.tk, 1 lawsuitconsultanters.ga, 1 lawsuitconsultantest.ga, 1 -lawtests.ir, 1 lawtimesnews.com, 1 lawtrend.in, 1 lawvize.com, 1 @@ -85903,7 +85852,6 @@ lc871.com, 0 lc873.com, 0 lc875.com, 0 -lc8841.com, 1 lc897.com, 1 lc8c.com, 1 lc8guidance.com, 1 @@ -85929,6 +85877,7 @@ lcgaj.com, 1 lchardingplumbing.com.au, 1 lcht.ch, 1 +lcis-legal.ai, 1 lckube.it, 1 lclarkpdx.com, 1 lcle.uk, 1 @@ -85947,7 +85896,6 @@ lcti.biz, 1 lcv-psi.com, 1 lcv-psi.com.br, 1 -lcv.ceo, 1 lcv.cool, 1 lcv.email, 1 lcv.expert, 1 @@ -86013,7 +85961,7 @@ le-therapeute.com, 1 le-upfitter.com, 1 le-vario.net, 1 -le-vit.com, 1 +le-vit.com, 0 le0n.ddns.net, 1 le0yn.ml, 1 le130rb.com, 1 @@ -86154,6 +86102,7 @@ learntotradethemarket.com, 1 learntube.cz, 0 learnupon.com, 1 +learnwelsh.cymru, 1 learnwisego-stage.com, 1 learnwith.cc, 0 leaseit24.com, 1 @@ -86173,6 +86122,7 @@ leathercollection.de, 1 leathercollection.es, 1 leathercollection.fr, 1 +leathercollection.store, 1 leatherfur.tk, 1 leathergoods.tk, 1 leatherneckappliance.com, 1 @@ -86275,6 +86225,7 @@ ledgy.com, 1 ledhive.co.uk, 1 ledigajobb.se, 1 +ledlamba.com, 1 ledlampor365.se, 1 ledlenser.com, 1 ledlight.com, 1 @@ -86365,6 +86316,7 @@ leftclick.fr, 1 leftclick.network, 1 leftclick.nl, 1 +leftcoast.events, 1 leftcoasthauling.com, 1 lefthandwater.gov, 1 lefucine.com, 1 @@ -86445,7 +86397,6 @@ legalne-kasyna.com, 1 legalnews.cf, 1 legalnews.ml, 1 -legalneziolka.pl, 1 legalnorthamerican.ga, 1 legaloriginal.ga, 1 legalphase.ga, 1 @@ -86477,7 +86428,6 @@ legalthunder.ga, 1 legaltings.com, 1 legaltip.eu, 1 -legaltity.com, 1 legaltreasure.ga, 1 legalunique.ga, 1 legalverde.ga, 1 @@ -86600,6 +86550,7 @@ leit.kr, 0 leitha.eu, 1 leitz-cloud.com, 1 +lejaimesteticaspa.com, 1 lejardindesmesanges.fr, 1 lejlax.com, 1 lejournaldublog.com, 0 @@ -86633,6 +86584,7 @@ lem0n.eu.org, 1 lemaldive.eu, 1 lemanbleu.ch, 1 +lemarcheatavola.com, 1 lemarcheelagrandeguerra.it, 1 lemasdupalus.com, 1 lematelas.fr, 1 @@ -86655,6 +86607,7 @@ lemoine.at, 1 lemon.nl.eu.org, 1 lemonade.com, 1 +lemonadefashion.com, 1 lemonardo.ga, 1 lemonbrain.ch, 1 lemoncloud.eu.org, 1 @@ -86666,6 +86619,7 @@ lemontownshippa.gov, 1 lemonwater.tk, 1 lemp.sh, 1 +lempetz.de, 1 lemr.fr, 1 lemvig.nu, 1 lemx.exchange, 1 @@ -86730,10 +86684,9 @@ lenqiue.com, 0 lenr-experiment.tk, 1 lenr-forum.com, 1 -lens-soma.com, 1 lens.google.com, 1 lens.tw, 1 -lens.xyz, 1 +lens.xyz, 0 lenseshop.tk, 1 lensfiyat.com, 1 lensflair.studio, 1 @@ -86802,6 +86755,7 @@ leonorebrandwebsites.nl, 1 leonpa.gov, 1 leonplast.tk, 1 +leontailoring.com, 1 leontiekoetter.de, 1 leontworzy.pl, 1 leontyev.tk, 1 @@ -86899,13 +86853,13 @@ 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, 0 +lescrieursduweb.com, 1 lesdelicesdeloris.fr, 1 lesdeuxfilles.be, 1 lesdeuxrives.com, 1 @@ -87121,7 +87075,6 @@ levincc.com, 1 levinholidaypark.co.nz, 1 levis.fun, 1 -levis.name, 1 levischuck.com, 1 levisenlaw.com, 1 levitatingx.com, 1 @@ -87174,7 +87127,6 @@ lexeri.com, 1 lexgo.be, 1 lexgo.lu, 1 -lexic.co, 1 lexico.pt, 1 lexicography.online, 1 lexicore.ga, 1 @@ -87195,6 +87147,7 @@ lexmedia.ro, 1 lexmondcommunications.com, 1 lexopen.dk, 1 +lexpars.com, 1 lexpartsofac.com, 1 lexpert.ca, 1 lexplicite.fr, 1 @@ -87237,7 +87190,6 @@ lfi-mv.de, 0 lfmosqueira.com.br, 1 lfn.moe, 1 -lfnaturopathie.com, 1 lforum.tk, 1 lfrconseil.com, 1 lfyhokk.tk, 1 @@ -87321,6 +87273,7 @@ lianand.com, 1 liangbi.ml, 1 liangfaner.com, 0 +liangji.com.tw, 1 liangmian.com, 1 liangxingai.com, 1 liangyichen.net, 0 @@ -87444,6 +87397,7 @@ librarytapes.tk, 1 librarytools.com, 1 libravatar.org, 1 +librazy.org, 1 libre-innovation.org, 1 libre.cr, 1 libre.net.au, 1 @@ -87485,6 +87439,8 @@ libstaffer.net, 1 libstick.org, 1 libstock.si, 1 +libus.pro, 1 +libusova.pro, 1 libvolk.org, 1 libwizard.com, 1 libwizard.net, 1 @@ -87536,6 +87492,7 @@ lidepla.com, 1 lidernaturascarlettbados.com, 1 liderok.tk, 1 +liderzyprawa.pl, 1 lidhedredovisning.se, 1 lidkoping.se, 1 lidl-gewinnspiel.de, 1 @@ -87591,7 +87548,6 @@ life24korea.com, 1 life4net.tk, 1 lifeandhealthtips.tk, 1 -lifeandhowtosurviveit.com, 1 lifeartstudios.net, 1 lifeasgame.tk, 1 lifeatthemax.graphics, 1 @@ -87615,6 +87571,7 @@ lifeinhellfansite.tk, 1 lifeinhex.com, 1 lifeinsurancepro.org, 1 +lifeis.money, 1 lifeisabug.com, 1 lifeisbeautiful.com, 1 lifeismmo.com, 1 @@ -87679,7 +87636,6 @@ lifewithdyna.com, 1 lifexpert.tk, 1 lifexue.com, 1 -lifi.is, 1 lift-world.info, 1 lift.hr, 1 liftagacademy.com, 1 @@ -87701,6 +87657,7 @@ light.mail.ru, 1 lightandvideo.com, 1 lightbearer.tk, 1 +lightbluelearning.com, 0 lightbook.org, 1 lightcraftmc.tk, 1 lightdark.xyz, 1 @@ -87729,7 +87686,6 @@ lightography.com, 1 lightonelectrical.com.au, 1 lightquantum.moe, 1 -lightrun.com, 1 lights0123.com, 1 lightsfromspace.com, 0 lightsheep.no, 0 @@ -87840,7 +87796,7 @@ lilth.moe, 1 liltv.media, 1 lilula-web.jp, 1 -liluna.nl, 1 +liluna.nl, 0 lily-bearing.com, 1 lily-inn.com, 1 lily-luv.com, 1 @@ -87946,6 +87902,7 @@ lincolncountysheriffok.gov, 1 lincolncountytn.gov, 1 lincolncountywy.gov, 1 +lincolnfinewines.com, 1 lincolnil.gov, 1 lincolnimps.tk, 1 lincolnmoneyman.com, 1 @@ -88132,6 +88089,7 @@ linkthisstatus.ml, 1 linkto.cf, 1 linku.com, 1 +linkupcareer.id, 1 linkurio.us, 1 linkurious.com, 1 linkuva.tk, 1 @@ -88153,6 +88111,7 @@ linncountyelections-ia.gov, 1 linncountyiowa.gov, 1 linncountyor.gov, 1 +linnemanlabs.com, 1 linngde.com, 1 linnich.de, 1 linocolombo.tk, 1 @@ -88184,7 +88143,7 @@ linpx.com, 0 linqapp.com, 1 linqhost.nl, 1 -linserto.it, 1 +linserto.it, 0 linss.com, 1 linss.com.cn, 1 linss.name, 1 @@ -88540,7 +88499,6 @@ littlesk.in, 1 littleskin.cn, 1 littlesouls.ml, 1 -littlesouthafrica.co.uk, 1 littlestars.bg, 1 littlesteve.es, 1 littletigerchinese.com, 1 @@ -88550,6 +88508,7 @@ liturkey.tk, 1 litvideoserver.de, 1 litvinenko.tech, 1 +litvinovdev.ru, 1 litwinek.pl, 1 litz.ca, 1 litzenberger.ca, 1 @@ -88684,6 +88643,7 @@ liveweddingartist.ca, 0 liveweddingpainter.ca, 1 livewirecommunications.co.uk, 1 +liveyouridea.com, 1 livezrejstejna.cz, 1 livfcshop.com, 1 livi.co.uk, 1 @@ -88760,7 +88720,6 @@ lizzythepooch.com, 1 lj-creation.com, 1 ljason.cn, 1 -ljcybersolutions.uk, 1 ljdesign.be, 1 ljekarne-plantak.hr, 1 ljesports.com, 1 @@ -88837,6 +88796,7 @@ lmrcouncil.gov, 1 lmsal.com, 1 lmsaura.com.br, 1 +lmsvisaoimoveis.com.br, 1 lmtls.me, 1 lmtravis.com, 1 lmvsci.gov, 1 @@ -89049,7 +89009,6 @@ locksmithstaffordtx.com, 1 locksmiththewoodlands.com, 1 locksport.org.nz, 1 -lockwoodonlinejournals.com, 1 loco-concepts.nl, 1 loco-creations.nl, 1 locomediagroep.nl, 1 @@ -89073,6 +89032,7 @@ lodewijkict.nl, 1 lodewillems.com, 1 lodger.cf, 1 +lodhagroup.in, 1 lodki-pvh.com, 0 lodni.site, 1 lodosswar.tk, 1 @@ -89191,7 +89151,6 @@ logoenvue.fr, 1 logoesun.com, 1 logofiyati.com, 1 -logoglo.com, 1 logolabben.cf, 1 logolando.tk, 1 logomarket.jp, 1 @@ -89229,6 +89188,7 @@ lohnsteuerhilfe.net, 1 lohocla.org, 1 lohr.me, 1 +loi25.io, 1 loic-raymond.fr, 1 loiit.ga, 1 loire-en-bateau.fr, 1 @@ -89410,7 +89370,6 @@ londonukbasedvipcloseprotectionbodyguardservices.com, 1 londonvetspecialists.vet, 1 londonwomensclinic.com, 1 -lone-gunman.be, 1 lone-wolf.tk, 1 lonecesitope.com, 1 loneline.ss, 1 @@ -89497,7 +89456,6 @@ lonniec.com, 1 lonniemason.net, 1 lonokedistrictcourtar.gov, 1 -lonsee.de, 1 lonza.ch, 1 lonza.com, 1 lonzagroup.net, 1 @@ -89544,7 +89502,6 @@ lootdog.io, 1 loothole.com, 1 lootlemon.com, 1 -lootrix.live, 1 loots.eu, 1 lootstudios.com, 0 loottitan.com, 1 @@ -89784,7 +89741,6 @@ louderfaster.co.uk, 1 loudersent.ga, 1 loudgrowth.com, 1 -loudly.com, 1 loudmouth.tk, 1 loudontn911.gov, 1 loudouncountyva.gov, 1 @@ -89851,7 +89807,6 @@ loveamber.me, 1 loveandloyalty.se, 1 loveasiangroup.com, 1 -lovebeingsexy.co.uk, 1 lovebigisland.com, 1 lovebirdhut.tk, 1 lovebo9.com, 1 @@ -90003,7 +89958,6 @@ lpm.london, 1 lpmkonji.cf, 1 lpnjobsite.com, 1 -lpnm.us, 1 lps.in.ua, 1 lpsales.ca, 1 lpsolutions.com, 1 @@ -90038,7 +89992,6 @@ 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 @@ -90064,6 +90017,7 @@ lslbc.gov, 1 lsmodamodesta.com.br, 1 lspdonline.gq, 1 +lspl.pl, 1 lsquared.com, 1 lsrm.org, 1 lstma.com, 1 @@ -90119,6 +90073,7 @@ lubar.me, 1 lubartow24.pl, 1 lubchemspecialties.com, 0 +lubenergy.com.ar, 1 lubosabo.tk, 1 lubot.net, 1 lubotodorov.com, 1 @@ -90128,6 +90083,7 @@ 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 @@ -90251,10 +90207,8 @@ ludum.pl, 1 ludunwayoo.com, 1 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 @@ -90334,6 +90288,7 @@ lukaszuk.pl, 1 lukaszwojcik.com, 1 lukaszwojcik.net, 1 +lukaszwojcik.photo, 1 luke.id, 1 luke6887.me, 1 lukeandjesse.wedding, 1 @@ -90368,6 +90323,7 @@ lulugold.ba, 1 luluwoldtravel.com, 1 lumaesthetic.co.uk, 1 +lumafestival.com, 1 lumaistore.com.br, 1 lumalux.it, 1 lumapartners.com, 1 @@ -90375,7 +90331,6 @@ lumasearch.com, 1 lumbardhi.tk, 1 lumbercartel.ca, 1 -lumberg-automationusa.com, 1 lumberjackman.tk, 1 lumbre-encendedores.com, 1 lumchan.tk, 1 @@ -90385,7 +90340,7 @@ lumer.tech, 1 lumi.com, 1 lumi.pw, 1 -lumien.net, 1 +lumidatasolutions.com, 1 lumieredesoy.com, 1 luminabh.com.br, 1 luminal-creation.com, 1 @@ -90566,6 +90521,7 @@ 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 @@ -90580,6 +90536,7 @@ luxegram.co, 1 luxehomecompany.com, 1 luxehotels.com, 1 +luxekranen.nl, 1 luxelyhome.com, 1 luxemburgsite.tk, 1 luxereside.com, 1 @@ -90600,6 +90557,7 @@ luxsat.tk, 1 luxsci.com, 1 luxstil.ga, 1 +luxtracking.com, 1 luxtransfer.am, 1 luxulyanvalley.co.uk, 1 luxur.is, 1 @@ -90641,11 +90599,10 @@ luziekurth.com, 1 luzonic.do, 1 luzsaude.pt, 1 -lv.com, 1 lv.lk, 1 lv.search.yahoo.com, 0 lv0.it, 0 -lvadviser.com, 1 +lv5.top, 1 lvcservicesplus.com.au, 0 lvcshu.com, 1 lvdgroup-innov8.com, 1 @@ -90686,10 +90643,12 @@ 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 @@ -90745,11 +90704,13 @@ 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 @@ -90808,6 +90769,7 @@ m-h-b.fr, 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 @@ -90848,6 +90810,7 @@ m2international.com, 1 m2jest1c.ml, 1 m2os.com, 1 +m2t.com, 1 m2tm.fr, 1 m3-software.com, 1 m36533.com, 1 @@ -91108,8 +91071,8 @@ madhawaweb.tk, 1 madhyrecords.com, 1 madian.tk, 1 -madil-thob.com, 1 madinahmarket.com, 1 +madinetmasr.estate, 1 madinina.tk, 1 madison.com, 1 madisoncountyalema.gov, 1 @@ -91215,6 +91178,7 @@ maestrochalet.fr, 1 maestroholzbau.de, 1 maestrotuinhuizen.nl, 1 +maestrowu.com, 1 maeva-beauty.com, 1 maeva-beauty.fr, 1 maeva.com, 1 @@ -91280,7 +91244,6 @@ magentazorg.nl, 1 magento-ecommerce.it, 1 magento2.hu, 1 -magentodevelopment.co.uk, 1 magentrix.com, 0 magepro.fr, 1 mager.org, 1 @@ -91337,7 +91300,6 @@ magicpet.com, 1 magicpill.com.au, 1 magicpin.in, 1 -magicport.ai, 1 magicsms.pl, 1 magicspaceninjapirates.de, 1 magictable.com, 1 @@ -91421,7 +91383,7 @@ magu.kz, 1 maguire.tk, 1 maguroalmare.com.br, 1 -maguspace.com, 0 +maguspace.com, 1 magutah.gov, 1 maguy-energies.com, 1 magwin.co.uk, 1 @@ -91451,7 +91413,6 @@ mahbobmax.tk, 1 mahboobi.tk, 1 mahdafweb.tk, 1 -mahdiyar.id.ir, 1 mahealthsurveys.gov, 1 maherhost.uk, 1 maheshbabuphotography.tk, 1 @@ -91493,7 +91454,6 @@ maidoty.net, 1 maie.ro, 1 maiebanatulfruncea.com, 1 -maierteamre.com, 1 maigesellschaft-lammersdorf.de, 1 maijia800.com, 1 maikendener.com, 0 @@ -91645,7 +91605,6 @@ maison-coutin.com, 1 maison-du-mineur.com, 1 maison-eureka.fr, 1 -maison2com-event.fr, 1 maisondelafigue.com, 1 maisondepax.com, 1 maisondidon.com, 1 @@ -91679,12 +91638,12 @@ 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 @@ -91725,13 +91684,13 @@ 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 makelindazi.com, 1 -makellos-kosmetik.de, 1 makelpunt.nl, 1 makemejob.com, 1 makemillion.tk, 1 @@ -91815,6 +91774,8 @@ malahov.tk, 1 malakye.com, 1 malami.gr, 1 +malamin.org, 1 +malamujercomunicacion.com, 0 malamutedoalasca.com.br, 1 malardalenvvs.se, 1 malariaadvice.gq, 1 @@ -92038,7 +91999,6 @@ manawithtea.com, 1 manbetx1998.live, 1 manboy.tk, 1 -mancaverevolution.com, 1 manchester.enf.br, 1 manchestermn.gov, 1 manchestermoneyman.com, 1 @@ -92118,11 +92078,9 @@ 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 @@ -92197,7 +92155,6 @@ manningtreetilesandflooring.co.uk, 1 mannnen.nl, 1 mannservrice.cf, 1 -manny.lk, 1 mano.tours, 1 manoa.ar, 1 manobankas.lt, 1 @@ -92253,7 +92210,7 @@ manual-pdf.com, 1 manual-user-guide.com, 1 manualcert.ie, 1 -manualdousuario.net, 0 +manualeusoemanutenzione.com, 1 manualowl.com, 1 manualredeye.com, 1 manualscollection.com, 1 @@ -92374,6 +92331,7 @@ mapstack.org, 1 maptician.com, 1 mapuut.net, 1 +mapy.com, 1 maqcampo.com.br, 1 maqnelson.com.br, 1 maqnelsonagricola.com.br, 1 @@ -92390,6 +92348,7 @@ maquinasperfectas.tk, 1 maquinasquepiensan.tk, 1 mar-eco.no, 1 +mar-zyg.pl, 1 mar.pt, 1 marabook.fr, 1 maracarlinicourses.com, 1 @@ -92480,6 +92439,7 @@ marcil-lavallee.ca, 1 marcillacetfils.fr, 1 marcinkurek.online, 1 +marcipanovedorty.cz, 1 marclange.net, 1 marco-burmeister.de, 1 marco-hegenberg.net, 1 @@ -92731,6 +92691,7 @@ markenzapatent.com, 1 markermatic.com, 1 market-garden.tk, 1 +market-money.ru, 1 market.android.com, 1 market.us, 1 marketbar.ie, 1 @@ -92738,6 +92699,7 @@ marketcalls.in, 1 marketcavalli.it, 1 marketcrypto.id, 1 +marketdocs.io, 1 marketforce.com, 1 marketgarden.tk, 1 marketgrid.ml, 1 @@ -92749,7 +92711,6 @@ marketing1-0-1.com, 1 marketing4trends.com, 1 marketinganalytics.africa, 1 -marketingautomationplan.nl, 1 marketingbab.com, 1 marketingbrandingnews.com, 1 marketingbrandingnews.net, 1 @@ -92811,11 +92772,12 @@ markmccluretoday.com, 1 markmet.fi, 0 markmetcalfe.io, 1 -markmorris.com.au, 1 +markmorris.com.au, 0 marknewtonband.com, 1 markocloud.com, 1 markoglou.com.gr, 1 markoheijnen.com, 1 +markopool.ru, 1 markov.com.ru, 1 markovonline.ru, 1 markovowest.bg, 1 @@ -92924,9 +92886,11 @@ marrakechairporttransfer.com, 1 marrakechauxiliaire.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 @@ -92961,6 +92925,7 @@ marshmaloo.ir, 1 marshop.tk, 1 marsicano.tk, 1 +marsico.org, 1 marsikelektro.cz, 1 marsilioblack.tk, 1 marsmediavideo.com, 1 @@ -93011,6 +92976,7 @@ martinbrandt.de, 1 martinbrower.us, 1 martinbuildingservices.co.uk, 1 +martinbykov.eu, 1 martincernac.cz, 1 martincornelissen.tk, 1 martindales.ltd.uk, 1 @@ -93020,6 +92986,7 @@ martineric.tk, 1 martineve.com, 0 martinfresow.de, 1 +martingura.sk, 1 martinhal.cn, 1 martinhal.com, 1 martinhalfamilyblog.com, 1 @@ -93036,7 +93003,6 @@ martinlabs.me, 1 martinlukes.cz, 1 martinmaze.com, 1 -martinmuc.de, 1 martino.ga, 1 martinploug.dk, 1 martinpohl.cz, 1 @@ -93061,7 +93027,6 @@ martinvillalba.net, 1 martinvillalba.org, 1 martinvotes.gov, 1 -martnlab.com, 1 martonvaro.com, 1 martonveronika.tk, 1 martosaranda.com, 1 @@ -93192,7 +93157,6 @@ masiniunelte.store.ro, 1 masinky.tk, 1 masiorama.it, 1 -masjidalbayyinah.org, 1 masjidalnoorwairarapa.co.nz, 1 mask-skin.tk, 1 maskamuse.com, 1 @@ -93202,7 +93166,6 @@ maskim.fr, 1 masking.my.id, 1 maskinkultur.com, 1 -maskmail.co, 1 maskmy.id, 1 maskstyle.tk, 1 maslenka.tk, 1 @@ -93259,14 +93222,12 @@ 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 @@ -93337,7 +93298,6 @@ mastersofscale.com, 1 mastersplace.tk, 1 masterstation.net, 1 -mastersthesiswriting.com, 1 masterstouch.co.za, 1 masterstruckingacademy.com, 1 mastertent.com, 1 @@ -93375,6 +93335,7 @@ matafonov.tk, 1 mataharischoolsurf.com, 1 mataharitimoer.tk, 1 +matahub.de, 1 matanz.de, 1 matapacoin.org, 1 matarbyte.se, 1 @@ -93391,7 +93352,7 @@ matchflix.ch, 1 matchimmo.fr, 1 matchlive.ga, 1 -matchmove.com, 1 +matchmove.com, 0 matchmycourse.com, 1 matchory.com, 1 matchpointusa.com, 1 @@ -93460,6 +93421,7 @@ mathesonsteplock.ca, 1 matheusmacedo.ddns.net, 1 mathewlane.com, 1 +mathfilm.dk, 1 mathias.re, 0 mathiasbynens.be, 1 mathiasgarbe.de, 1 @@ -93528,9 +93490,7 @@ 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 @@ -93552,6 +93512,7 @@ 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 @@ -93562,7 +93523,7 @@ mattab.xyz, 1 mattadams.info, 1 mattajones.com, 1 -mattandreko.com, 1 +mattandreko.com, 0 mattandyana.com, 1 mattaponi.gov, 1 mattari-app.com, 1 @@ -93587,7 +93548,6 @@ matteosaturn.com, 1 matteozinnia.it, 1 mattersource.com, 1 -mattes.cc, 1 mattessons.co.uk, 1 mattferderer.com, 1 mattfin.ch, 1 @@ -93615,7 +93575,7 @@ matthewoliver.com, 1 matthewoshea.tk, 1 matthewprenger.com, 1 -matthewrochow.com, 1 +matthewrochow.com, 0 matthewsaeger.com, 1 matthewtester.com, 1 matthewthode.com, 1 @@ -93643,6 +93603,7 @@ matthijssen.info, 1 matthijsvos.com, 1 matthijsvos.org, 1 +mattholihan.design, 1 matthrkac.com.au, 1 mattiash.se, 1 mattilsynet.no, 1 @@ -93715,7 +93676,6 @@ mau.lu, 1 mau.photos, 1 maubot.xyz, 1 -mauboussin.ma, 1 maudfourier.com, 0 mauditeboisson.tk, 1 maudok.gov, 1 @@ -93729,6 +93689,7 @@ maunayogastudio.com, 1 maunder.ru, 1 maunium.net, 1 +maurice-brant.uk, 1 maurice-walker.com, 0 mauricechavez.tk, 1 mauricedb.nl, 1 @@ -93782,6 +93743,7 @@ mawtinii.com, 1 max-anime.tk, 1 max-apk.com, 0 +max-it.tech, 1 max-moeglich.de, 1 max-went.pl, 1 max.com, 1 @@ -93844,7 +93806,6 @@ maximababy.de, 1 maximalsparen.com, 0 maximanet.tk, 1 -maximbaz.com, 1 maximdeboiserie.be, 1 maximdens.be, 1 maximeferon.fr, 1 @@ -93891,7 +93852,6 @@ maxnews.mn, 1 maxogles.com, 0 maxopen.cf, 1 -maxopolyworldnews.com, 1 maxostapenko.com, 1 maxp.info, 0 maxpapildai.lt, 1 @@ -93902,7 +93862,6 @@ maxrickettsuy.com, 1 maxrider.tk, 1 maxroganov.tk, 1 -maxs.com, 1 maxschleiffer.com, 1 maxthoene.de, 1 maxtire.com, 1 @@ -93946,6 +93905,7 @@ mayersoncreative.com, 1 mayfairlakes.org, 1 mayfairlimo.eu, 1 +mayfairwecare.com, 1 mayfieldheightsohio.gov, 1 mayflowerbocawina.tk, 1 mayflowercreative.com, 0 @@ -93965,7 +93925,6 @@ mayrivermontessori.com, 0 maysalward.com, 1 maysambotros.tk, 1 -mayslandingcornholeleague.com, 1 maythai.eu, 1 maythai.pl, 1 mayuraakitchens.com, 1 @@ -94003,7 +93962,6 @@ mb300sd.com, 1 mbabullshit.com, 1 mbaestlein.de, 1 -mbainflatables.co.uk, 1 mbakaro.in, 1 mbalaw.pl, 1 mbank.kg, 1 @@ -94081,8 +94039,9 @@ mccabes.com.au, 1 mccallkulak.org, 1 mccannhealth.com, 1 +mccarthyhire.co.uk, 1 mccarthyprestige.com.au, 1 -mccinc.ca, 1 +mccinc.ca, 0 mcclaincountyok.gov, 1 mccn.pp.ua, 1 mccom.at, 1 @@ -94163,7 +94122,6 @@ mcideas.tk, 1 mcimotorcoach.com, 1 mcipoc.com, 1 -mcirculo.com.br, 1 mcivor.me, 1 mcjackk77.me, 1 mcjars.com, 1 @@ -94207,6 +94165,7 @@ mcnext.net, 1 mcnicolls.com, 1 mcnoobs.pro, 1 +mcnsrl.it, 1 mcochris.com, 1 mcon.se, 1 mconline.sg, 1 @@ -94267,7 +94226,6 @@ 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 @@ -94352,6 +94310,7 @@ mealnuzzle.com, 1 mealpedant.com, 1 meals.lv, 1 +mealthinker.com, 1 meamod.com, 1 meandliora.com, 1 meandmyemotions.org, 1 @@ -94363,7 +94322,6 @@ meao.market, 1 meao.online, 1 meao.pictures, 1 -meao.ru, 1 meapbot.com, 1 meapbot.net, 1 meapbot.org, 1 @@ -94387,7 +94345,6 @@ mebeliside.bg, 1 mebelisk.com.br, 1 mebelizori.com, 1 -mebelok.com, 1 mebelshik.tk, 1 mebin.me, 1 mebin.studio, 1 @@ -94505,6 +94462,7 @@ mec760.com, 1 mec825.com, 1 mec888.net, 1 +meca.vision, 1 mecafresa.pt, 1 mecalac.com, 1 mecalux.com, 1 @@ -94548,14 +94506,16 @@ med-nagoya-neurosurgery.jp, 1 med-spravca.ml, 1 med.aid.pl, 1 -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 @@ -94671,7 +94631,6 @@ mediastroke.com, 1 mediataput.ga, 1 mediathekview.de, 0 -mediation-mv.de, 1 mediationculturelleclp.ch, 0 mediationwithmeg.com, 1 mediatrust.org, 1 @@ -94755,7 +94714,6 @@ medifoto.tk, 1 medify.id, 1 medigap-quote.net, 1 -medigo.at, 1 medihost.com.au, 1 medihostsolutions.com.au, 1 medikalsepetim.org, 1 @@ -94767,10 +94725,6 @@ medinc.tk, 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 @@ -94795,7 +94749,6 @@ medivisionsc.com, 1 medivox.tk, 1 mediweed.tk, 1 -mediwish.com, 1 medizin18.at, 1 mediziner-goettingen.tk, 1 medja.net, 1 @@ -94819,7 +94772,7 @@ medovea.ru, 1 medovoe.ml, 1 medpatches.com, 1 -medpeer.co.jp, 1 +medpeer.co.jp, 0 medpeer.jp, 1 medportalmd.tk, 1 medpost.com, 1 @@ -94849,6 +94802,7 @@ meduna.org, 1 medunovi.com, 1 meduza.io, 1 +medva1997.tech, 1 medvedikorenka.cz, 1 medvedivka.tk, 1 medvedka-nasekomoe.tk, 1 @@ -94893,7 +94847,6 @@ meetfriends.tk, 1 meetgeek.ai, 0 meeting-server.ml, 1 -meetingvotes.com, 1 meetjeslandsetriathlon.tk, 1 meetmaps.com, 1 meetmarlo.com, 1 @@ -95078,8 +95031,8 @@ 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 @@ -95182,6 +95135,7 @@ 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 @@ -95221,10 +95175,10 @@ 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 @@ -95264,6 +95218,7 @@ melo-verse.com, 1 melodee.de, 1 melodict.com, 1 +melodify.cn, 1 melodija.tk, 1 melodiouscode.co.uk, 1 melodiouscode.com, 1 @@ -95348,7 +95303,7 @@ memorylines.ml, 1 memoryofyou.eu, 1 memoryplex.com, 1 -memphisrap.com, 1 +memphisrap.com, 0 mempoo.space, 1 mempool.chat, 1 mempool.de, 1 @@ -95654,7 +95609,6 @@ merrickcountyne.gov, 1 merrillanwi.gov, 1 merrimacwi.gov, 1 -merry-christmas.co.in, 1 merrychristmas.ml, 1 merryxmas2015.tk, 1 merson.tv, 1 @@ -95687,6 +95641,7 @@ mescaline.wiki, 1 mesdagh.be, 1 mesec.cz, 1 +mesele.com.tr, 1 mesh.gov, 1 meshcore.forum, 1 meshdigital.io, 1 @@ -95701,6 +95656,7 @@ meslekkursu.com, 1 mesmer.tk, 1 mesmerus.net, 1 +mesnumeriques.fr, 1 mesologie-soesterberg.nl, 1 mesomeds.com, 1 mesonandino.tk, 1 @@ -95744,7 +95700,6 @@ 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 @@ -95837,7 +95792,6 @@ metarhia.com, 1 metaskil.com, 1 metasolutions.se, 1 -metasophi.com, 1 metastasys.net, 1 metastitch.in, 1 metasurfaces.com, 1 @@ -95859,6 +95813,7 @@ meteoabegondo.tk, 1 meteoben.com, 1 meteobox.co, 1 +meteobox.com, 1 meteobox.cz, 1 meteobox.de, 1 meteobox.es, 1 @@ -95981,7 +95936,7 @@ metu.social, 1 metver.tk, 1 metyweb.ga, 0 -meu-amor.com, 1 +metzlerweb.org, 1 meu.re, 0 meubairro360.com.br, 1 meubanco7.com.br, 1 @@ -95995,7 +95950,6 @@ meulivro.biz, 1 meulocal.ml, 1 meuneneoficial.com.br, 1 -meupix.ai, 1 meuprimeirosite.rio.br, 1 meurisse.org, 1 meusagendamentos.com.br, 1 @@ -96058,11 +96012,11 @@ 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 @@ -96075,7 +96029,6 @@ mforum.com.au, 1 mfrepair.com, 1 mft.global, 1 -mfxbe.de, 0 mfxer.com, 1 mfxm.fr, 1 mfyy123.com, 1 @@ -96122,7 +96075,6 @@ mgsdb.com, 1 mgsisk.com, 1 mgtbaas.eu, 1 -mgtc.shop, 1 mh-cdn.de, 1 mh-hannover.de, 0 mh-lg.de, 1 @@ -96139,7 +96091,6 @@ mhdit.de, 1 mhealthspot.com, 1 mheistermann.de, 1 -mhermans.nl, 1 mhf.gc.ca, 1 mhf.rs, 1 mhforce.com, 1 @@ -96159,7 +96110,6 @@ mhonline.fr, 1 mhp.net, 1 mhparena-stuttgart.de, 1 -mhshokuhi.ir, 1 mhtdesign.net, 1 mhuig.top, 1 mhurologytriad.org, 1 @@ -96179,7 +96129,6 @@ mi-beratung.de, 1 mi-magia.com, 1 mi-ras.ru, 1 -mi-soul.com, 1 mi.ras.ru, 1 mi1k.cn, 1 mia-manager.dk, 1 @@ -96253,6 +96202,7 @@ 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 @@ -96279,7 +96229,6 @@ michaeldjoseph.com, 1 michaeldundas.com, 1 michaeleisen.org, 1 -michaelfoods.com, 1 michaelgehrman.com, 0 michaelglaser.de, 1 michaelgroves.tk, 1 @@ -96414,7 +96363,6 @@ microcert.cn, 1 microcomploja.com.br, 1 microcosm.com, 1 -microdata.es, 1 microdesic.com, 1 microdesk.com, 1 microdon.org, 1 @@ -96422,7 +96370,6 @@ microdots.de, 1 microdrive.pt, 1 microferma.site, 1 -microfinance-crimea.ru, 0 microgates.net, 1 microgroove.jp, 1 microhydrony.org, 1 @@ -96477,7 +96424,6 @@ middletowndelcopa.gov, 1 middletownny.gov, 1 middletownri.gov, 1 -mide.gob.do, 1 midea.kg, 1 mideo.tk, 1 midesa.eu, 1 @@ -96511,7 +96457,6 @@ midrandsolarsystems.co.za, 1 midrange.com, 1 midress.club, 1 -midrocket.com, 1 midspace.co.uk, 1 midspss.lt, 1 midterm.us, 1 @@ -96521,6 +96466,7 @@ midville-ga.gov, 1 midwaycitysanitaryca.gov, 1 midwest-hidta.gov, 1 +midwest-material.com, 1 midwest737simulations.com, 1 midwestapologetics.org, 1 midwestbloggers.org, 1 @@ -96537,7 +96483,6 @@ miegl.com, 1 miegl.cz, 1 mielboreal.com, 0 -mielehybla.it, 1 mielelpinsapar.com, 0 mielenosoitukset.fi, 1 mielkan.com, 1 @@ -96736,7 +96681,6 @@ 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 @@ -96773,6 +96717,7 @@ mikeybot.com, 1 mikeylab.com, 1 mikeyroxtravels.com, 1 +mikezak.music, 1 mikhail-youzhny.tk, 1 mikhailkolesnikov.tk, 1 mikhalt.tk, 1 @@ -96807,6 +96752,7 @@ 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 @@ -96958,7 +96904,6 @@ milliarden-liste.de, 1 millibirlik.tk, 1 millibitcoin.jp, 1 -millida.net, 1 milliegrace.org, 1 millikart.az, 1 millionaireclub.tk, 1 @@ -97003,7 +96948,6 @@ mim.am, 1 mim.properties, 1 mimamau.de, 1 -mimarchi.nl, 1 mimavision.ddns.net, 1 mimemo.io, 1 mimeo.digital, 1 @@ -97029,6 +96973,7 @@ mimundodxn.com, 1 mimura.com.br, 1 mimusic.cf, 1 +mimyoi.com, 1 min-forsyning.dk, 1 min.kiwi, 0 min2.ru, 1 @@ -97119,7 +97064,6 @@ mine-pixl.de, 1 mine-temoin.fr, 1 mine260309.me, 0 -minebbs.com, 0 minebitcoin.tk, 1 minecity.fun, 1 minecraft-game.ga, 1 @@ -97135,7 +97079,6 @@ minecraften.net, 0 minecraftforever.tk, 1 minecraftforum.de, 1 -minecraftforum.fun, 1 minecraftforum.ovh, 1 minecraftgoldwar.tk, 1 minecraftgta5.ml, 1 @@ -97252,7 +97195,6 @@ minimonies.tk, 1 minimoon.nl, 1 minimotogp.tk, 1 -minimundo3d.com, 1 minin.tk, 1 mining-club.tk, 1 mining-technology.com, 1 @@ -97290,7 +97232,6 @@ minka.net.bo, 1 minkafighter.eu, 1 minkatilmancoaching.nl, 1 -minkymoon.jp, 1 minload.com, 1 minly.com, 1 minmaxgame.com, 1 @@ -97373,6 +97314,7 @@ miobt.eu.org, 0 miodun.pl, 1 miodysudnik.pl, 1 +mioffice.ai, 1 miomiojoyeria.com, 0 miomiorun.com, 0 miorganics.ro, 1 @@ -97470,6 +97412,7 @@ mirotakampus.com, 1 mirprav.tk, 1 mirri.net, 1 +mirrordata.net, 1 mirrordream.net, 1 mirrormirror.tk, 1 mirrormirrorhairstyles.com, 1 @@ -97495,7 +97438,6 @@ mis1042.top, 1 misagarcia.com, 1 misaka.me, 1 -misakaloli.com, 0 misaki0.jp, 1 misakiya.co.jp, 1 misalacuna.cl, 1 @@ -97568,7 +97510,6 @@ missouricity-airductcleaning.com, 1 missouriheatingcoolingadvice.com, 1 missourititlesearch.com, 1 -missoy.me, 1 misspoliticsaustralia.cf, 1 misspoliticsaustralia.ga, 1 misspoliticsaustralia.gq, 1 @@ -97674,12 +97615,10 @@ mitokashi.ml, 1 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 @@ -97786,6 +97725,7 @@ miyavru.com, 1 miyazakian.com, 1 miyohiro.net, 1 +miyokoofficial.com, 1 miyokosamurai.com, 1 miyoshi-kikaku.co.jp, 1 miyoshi-kikaku.com, 0 @@ -97819,6 +97759,8 @@ mjpromotions.nl, 1 mjpronk.nl, 1 mjrlegends.com, 1 +mjs.art, 1 +mjs.social, 1 mjsdefenceacademy.com, 1 mjsports.bet, 1 mjstudios.tk, 1 @@ -97959,7 +97901,6 @@ mlstav.sk, 1 mlstverse.org, 1 mltrade.ml, 1 -mlukas.xyz, 1 mlv-psychosomatik.de, 1 mlv.me, 1 mlytics.com, 1 @@ -98016,7 +97957,6 @@ mmprojects.nl, 1 mmquality.com, 1 mmr.ua, 1 -mmrproperty.co.za, 1 mms.is, 1 mmsindustries.com, 1 mmsl.cz, 1 @@ -98042,6 +97982,7 @@ mnciitbhu.me, 1 mncloud.de, 1 mnd.sc, 1 +mndaily.com, 1 mndeveloper.com, 1 mne.moe, 1 mnec.io, 1 @@ -98055,7 +97996,6 @@ mniopenresearch.org, 1 mnium.de, 1 mnjg123.de, 1 -mnml.blog, 1 mnmt.no, 1 mnnknz.de, 1 mno.family, 1 @@ -98078,6 +98018,7 @@ 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 @@ -98120,7 +98061,7 @@ mobildingser.com, 1 mobile-discothek.at, 1 mobile-holzofenpizza.de, 1 -mobile-industrial-robots.com, 1 +mobile-industrial-robots.com, 0 mobile-ivr.tk, 1 mobile-news.tk, 1 mobile-retter.de, 1 @@ -98141,6 +98082,7 @@ mobilelaby.com, 1 mobilelobbyers.ga, 1 mobilemechanicdenver.org, 1 +mobileminds.se, 1 mobileone.com.my, 1 mobilepartner.tk, 1 mobilepricepk.com, 1 @@ -98215,6 +98157,7 @@ mocasa.com, 1 mocdltraining.com, 1 mocent.de, 1 +mochi.lol, 1 mochilerostailandia.com, 1 mochiyuki.net, 1 mochizuki.moe, 0 @@ -98238,7 +98181,6 @@ modafinil.wiki, 1 modafinilyes.com, 1 modafo.com, 1 -modahaber.com, 1 modalogi.com, 1 modaltraining.co.uk, 1 modamia.pl, 1 @@ -98285,6 +98227,7 @@ modellbahnshop.de, 1 modellbahnverwaltung.de, 1 modellismo.roma.it, 1 +modelmyretirement.com, 1 models-resource.com, 1 modelspoor-projecten.nl, 1 modelverse.online, 1 @@ -98335,7 +98278,7 @@ modlimit.cf, 1 modperl.pl, 1 modpop.se, 1 -modrynstudio.com, 1 +modrynstudio.com, 0 modscrew.com, 1 modsecurity.net, 1 modszombies.com, 1 @@ -98372,7 +98315,6 @@ moefactory.com, 1 moefire.tech, 1 moegi.ml, 1 -moego.me, 1 moego.pet, 1 moehlerinstitut.de, 1 moehrke.cc, 1 @@ -98468,6 +98410,7 @@ mojapeticia.sk, 1 mojartech.ml, 1 mojavenissanofbarstowparts.com, 1 +mojaveresearchinc.com, 1 mojavibe.com, 1 mojdrvar.tk, 1 moje-communication.de, 1 @@ -98533,7 +98476,6 @@ molexces.com, 1 molezzo.com, 1 molinillo.tk, 1 -molise.store, 1 molkerei-ammerland.com, 1 molleron.net, 1 molletjesveer.tk, 1 @@ -98660,6 +98602,7 @@ moneoci.com.br, 1 monese.com, 0 moneshaq.fr, 1 +monespaceallianztrade.fr, 1 moneta-rossii.ru, 1 monetag.com, 0 monetenfuchs.de, 1 @@ -98737,7 +98680,6 @@ monidenum.fr, 1 monific.com, 1 monika.tk, 1 -monikacheangphotography.com, 1 monikadesign.uk, 1 monikapierzchala.com, 1 monin.net, 1 @@ -98770,6 +98712,8 @@ monjardin.tk, 1 monjo.io, 1 monjob.tk, 1 +monkaru.com, 1 +monkel.lu, 1 monkey-donkey.es, 1 monkey47.com, 1 monkey47.events, 1 @@ -98804,6 +98748,7 @@ monorail.gq, 1 monorthopedagogue.ca, 1 monosecurity.se, 1 +monoseis-monotica.gr, 1 monosis.net, 1 monoskop.org, 1 monospazzole.roma.it, 1 @@ -98824,7 +98769,7 @@ monroetn.gov, 1 monroeut.gov, 1 monroviaca.gov, 1 -monsalvat.no, 1 +monsalvat.no, 0 monsbah.com, 1 monscierge.com, 1 monshoppingcestcalais.fr, 1 @@ -98862,6 +98807,7 @@ montanabiack.de, 1 montanacreativitymovement.tk, 1 montanaguard.gov, 1 +montanaitservices.com, 1 montanaonlinedivorce.com, 1 montanarenewables.org, 1 montanatitlesearch.com, 1 @@ -98911,7 +98857,6 @@ monticelloky.gov, 1 monticellomn.gov, 1 montillafarm.com, 1 -montmeyran.fr, 1 montoneros.tk, 1 montop.tk, 1 montourcounty.gov, 1 @@ -99021,6 +98966,7 @@ mooretownrancheria-nsn.gov, 1 moorfunevents.co.uk, 1 moorheadmn.gov, 1 +mooring.social, 1 moormiles.com, 1 moorparkelectrical.com, 1 moorparkexteriorlighting.com, 1 @@ -99110,7 +99056,6 @@ moretti.camp, 1 morevesi.cf, 1 morewithcore.com, 1 -morfide.com, 1 morgan-insurance.com, 1 morganappliancerepair.com, 1 morgancounty-al.gov, 1 @@ -99171,6 +99116,7 @@ morosystems.cloud, 1 morox.top, 1 morozko.gq, 1 +morozovsreinigung.ch, 1 morozstudio.tk, 1 morozyaka.tk, 1 morph3d.tk, 1 @@ -99247,7 +99193,6 @@ moshaver-tahsili.com, 1 moshcore.tk, 1 moshegropper.com, 1 -moshiach.ru, 1 moshwire.com, 1 mosin.org, 1 mosio.com, 1 @@ -99259,7 +99204,7 @@ moskvayigit.com, 1 moskvitch.org, 1 mosnews.tk, 1 -moso.io, 0 +moso.io, 1 mosobl.tk, 1 mosostore.nl, 1 mosquito-code.com, 1 @@ -99269,18 +99214,17 @@ 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 @@ -99340,7 +99284,6 @@ motivation.cc, 1 motivational-babes.com, 1 motivationalliance.com, 1 -motivemm.com, 1 motivness.com, 1 motivo.nl, 0 motiweb.fr, 1 @@ -99409,6 +99352,7 @@ motoselfservices.fr, 1 motospaya.com, 0 motostorie.blog, 1 +motostyle.ua, 1 mototax.ch, 0 mototeam.tk, 1 mototsi.com, 1 @@ -99426,7 +99370,6 @@ motte.tattoo, 1 motto-iikoto.com, 1 motum.no, 1 -motum.se, 1 motumblekinge.se, 1 motumport.se, 1 motumskane.se, 1 @@ -99435,7 +99378,6 @@ 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 @@ -99498,6 +99440,7 @@ moussa-ibrahim.ml, 1 moussasolutions.com, 1 mousseacoustique.com, 1 +mouthtogut.com, 1 moutiezhaller.com, 1 mov, 1 movabletype.net, 1 @@ -99544,6 +99487,7 @@ movieeveningest.ga, 1 moviefreeze.com, 1 movieglot.ml, 1 +moviego.st, 1 movieguys.org, 1 moviejack.org, 0 moviemadness.uk, 1 @@ -99577,6 +99521,7 @@ movingoklahoma.org, 1 movingservice-houston.com, 1 movingtohttps.com, 1 +movingtoiceland.com, 1 movingtonewcastle.com, 1 movingtonewcastle.com.au, 1 movio.ga, 1 @@ -99599,6 +99544,7 @@ moylen.eu, 1 moyminsk.tk, 1 moyobi.com, 0 +moyos.net, 1 moyu.host, 0 moyufangge.com, 1 moyure.com, 1 @@ -99610,6 +99556,7 @@ mozfr.org, 1 mozgb.ru, 1 mozgovoy.tk, 1 +mozhiyodu.com, 1 mozilla-russia.org, 1 mozilla.cz, 1 moztopup.com, 1 @@ -99688,7 +99635,6 @@ mpu-vorbereitung.com.de, 1 mputra.com, 1 mpy.ovh, 1 -mqacg.com, 1 mqas.net, 1 mqbeauty.com.tw, 1 mqbx.nl, 1 @@ -99729,6 +99675,7 @@ 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 @@ -99784,6 +99731,7 @@ mrjunior.ml, 1 mrkapowski.com, 0 mrknee.gr, 1 +mrkzalamana.com, 1 mrlc.gov, 1 mrliu.me, 1 mrlove.tk, 1 @@ -99791,6 +99739,7 @@ mrmanson.tk, 1 mrmarcie.com, 1 mrmasaleh.com, 1 +mrmatt.io, 1 mrmave.work, 1 mrmeeb.co.uk, 1 mrmemory.co.uk, 1 @@ -99834,7 +99783,6 @@ mrstext.com, 1 mrston.ml, 1 mrstuudio.ee, 1 -mrsurething.com, 1 mrtechmelbourne.com, 1 mrtg.com, 1 mrtieungao.tk, 1 @@ -99906,8 +99854,8 @@ msklawyer.com, 1 msl.org, 0 mslegalsupport.com, 1 -mslinkpc.com, 1 -mslinkphoneqr.com, 1 +mslinkpc.com, 0 +mslinkphoneqr.com, 0 mslivros.com.br, 1 msm.ai, 1 msmadlemon.com, 1 @@ -99943,6 +99891,7 @@ msquared.id.au, 1 msr-schaltanlagen.de, 1 msrf.de, 1 +msrl.com, 1 msrmotorsports.com, 1 msroot.de, 1 msrumon.com, 1 @@ -100090,7 +100039,6 @@ muafakatmalaysia.gq, 1 muafakatmalaysia.ml, 1 muarstabyggmarknad.tk, 1 -mubarak-card.com, 1 mubase.dk, 1 muble.tk, 1 muc.space, 1 @@ -100126,6 +100074,7 @@ mudrc.net, 1 mudrex.com, 1 mudrockrentals.com, 1 +mue.com, 1 mueblum.com, 1 muehlbauers.com, 1 muelhau.pt, 1 @@ -100191,6 +100140,7 @@ mukli.hu, 1 muku-flooring.com, 1 mukurtu.org, 1 +mukuru.com, 1 mukwa.gov, 1 mula.solutions, 1 mula.tk, 1 @@ -100240,7 +100190,6 @@ multikemasplastindo.com, 1 multilevelmarketing.cf, 1 multiline.ge, 1 -multilingualpress.org, 1 multilogik.com, 1 multilogin.com, 1 multimalin.ovh, 1 @@ -100333,7 +100282,6 @@ mundoscrapbooking.online, 1 mundoseth.tk, 1 mundosteampunk.club, 1 -mundosuiri.info, 1 mundosuiri.ml, 1 mundowanderlust.com, 1 mundschenk.at, 1 @@ -100380,7 +100328,6 @@ muratcileli.tk, 1 muratoff.pp.ua, 1 muratore-roma.it, 1 -murbaut.web.id, 1 murciacobras.tk, 1 murciaprocuradores.tk, 1 murderbysound.servebeer.com, 1 @@ -100421,7 +100368,6 @@ mursu.directory, 1 murtazamustafahirani.tk, 1 murz.tv, 1 -murzallawfirm.com, 1 murzik.space, 1 mus-tech.info, 1 musacomo.com, 1 @@ -100456,7 +100402,6 @@ museodefutbol.online, 1 museodeinsectos.tk, 1 museodelistmo.tk, 1 -museoebraicobo.it, 1 museorisorgimentotorino.it, 1 museoscala.org, 1 muserver.io, 1 @@ -100476,7 +100421,6 @@ 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 @@ -100494,6 +100438,7 @@ musicarenagh.com, 1 musicbox.party, 1 musicboxx.cz, 1 +musicbreeze.be, 1 musicbymelanie.dk, 1 musicc.net, 1 musicchris.de, 1 @@ -100545,6 +100490,7 @@ musikhaus-korn.de, 1 musikholics.com, 1 musikidersi.tk, 1 +musikkapelle-beuren.de, 1 musikkfondene.no, 1 musiktag2020.ch, 1 musiktest24.de, 1 @@ -100635,7 +100581,6 @@ muusikoiden.net, 1 muv.ac, 1 muv.co.uk, 1 -muvy.tube, 1 muwi.tk, 1 muxidream.cn, 1 muxup.com, 1 @@ -100650,6 +100595,7 @@ muzi.cz, 1 muzicamp3.org, 1 muzicamp3.top, 1 +muzicanoua.org, 1 muzicari.tk, 1 muziekluisteren.eu, 1 muziekschatten.nl, 1 @@ -100661,7 +100607,6 @@ muzike.tk, 1 muzline.ua, 1 muzmo.ga, 1 -muzotakt.pl, 1 muzprosvet.tk, 1 muzykanawesele.info, 1 mv-schnuppertage.de, 0 @@ -100681,6 +100626,7 @@ mviess.de, 0 mvisioncorp.com, 1 mvistatic.com, 1 +mvkpop.com, 1 mvmcorps.com, 1 mvmm.fr, 1 mvn.lu, 1 @@ -100724,7 +100670,7 @@ mwpromotion.fr, 1 mwr.team, 1 mwscouts.org, 1 -mwskwong.com, 0 +mwskwong.com, 1 mwstportal.li, 1 mwstrategicservices.com, 0 mwswire.com, 1 @@ -100733,7 +100679,6 @@ mwu.dk, 1 mww.moe, 1 mwxjacg.com, 1 -mx-moto.fr, 0 mx-qr.com, 1 mx-quad.fr, 0 mx-server.uk, 1 @@ -100784,12 +100729,10 @@ my-lightning.com, 1 my-meal.nl, 1 my-mediahome.ru, 1 -my-message.co, 1 my-meteo.net, 1 my-monobank-card.com.ua, 1 my-montenegro.tk, 1 my-msg.ai, 1 -my-msg.co, 1 my-nextcloud.at, 1 my-pawnshop.com.ua, 0 my-pharmacie.com, 1 @@ -100816,7 +100759,6 @@ my-web.xyz, 1 my-webcloud.at, 1 my-website.top, 1 -my-wishes.co, 1 my-woodcraft.com, 1 my.cat, 1 my.com.my, 1 @@ -100873,7 +100815,6 @@ mybamoza.com, 1 mybaran.tk, 1 mybarcelona.tk, 1 -mybaseballmovie.com, 1 mybasepay.com, 1 mybathroom.tk, 1 mybaticloud.com, 1 @@ -100886,6 +100827,7 @@ mybestbook.tk, 1 mybestbooks.gq, 1 mybestteam.tk, 1 +mybeti.ai, 1 mybetterlife.blog, 1 mybicc.org, 1 mybieo.com, 1 @@ -100927,7 +100869,6 @@ mycandylove.com, 1 mycardplace.com, 1 mycarecorner.net, 1 -mycarinsurance123.com, 0 mycarwashers.com, 1 mycase.com, 0 mycase.com.ua, 1 @@ -100997,7 +100938,6 @@ mycreditcardcenter.com, 1 mycreditjunkie.com, 1 mycreditunion.gov, 1 -mycrm.coach, 0 mycrowdstack.com, 1 mycrypnet.io, 1 mycts.org, 1 @@ -101023,7 +100963,6 @@ mydestiny.tk, 1 mydetailbox.com, 1 mydigitalexperience.fr, 1 -mydigitalhealthwallet.com, 1 mydigitalmarketingempire.com, 1 mydigitalpublication.com, 1 mydirectsys.com, 1 @@ -101082,6 +101021,7 @@ myepass.bg, 1 myepass.de, 1 myepidoma.gr, 1 +myer.com.au, 1 myers.house, 1 myersaggregates.co.uk, 1 myersbuildingsupplies.co.uk, 1 @@ -101164,6 +101104,7 @@ mygeek911.com, 1 mygenderation.com, 1 mygeneral.org, 1 +mygeorges.fr, 1 mygeorgia.org, 1 mygermanuniversity.com, 1 mygest.me, 1 @@ -101172,7 +101113,6 @@ mygignation.com, 1 mygilehery.tk, 1 mygimp.tk, 1 -mygirlfriendshouse.com, 1 myglobalnews.net, 1 myglobalopti.nl, 1 mygnmr.com, 0 @@ -101197,7 +101137,6 @@ myhealthcheckup.ca, 1 myhealthsquad.ca, 1 myhealthyday.com, 1 -myhelcim.com, 1 myhell-anonim.tk, 1 myhelo.com, 1 myheritage.com, 1 @@ -101232,6 +101171,8 @@ myinsitu.com, 1 myinstapy.ru, 0 myinsurancesource.com, 1 +myinternetreputation.com, 1 +myinternetreputation.org, 1 myinternist.com, 1 myinterrail.co.uk, 1 myinvestinglife.com, 1 @@ -101264,7 +101205,6 @@ mykvb.com, 1 mylabaih.com, 1 mylacera.gov, 1 -myladychat.com, 1 mylastchapter.tk, 1 mylatestnews.org, 1 mylawer.ga, 1 @@ -101347,6 +101287,7 @@ mymusiclist.alwaysdata.net, 1 mymusique.tk, 1 mymx.lu, 0 +myna.me, 1 mynak.se, 1 mynameisivan.ru, 1 mynameistavis.com, 1 @@ -101377,7 +101318,6 @@ mynewspaper.net, 1 mynext.events, 1 mynextmove.org, 1 -mynextstep.id, 1 mynic.my, 1 mynimo.com, 1 mynissan.ml, 1 @@ -101536,6 +101476,7 @@ myrina.com, 1 myrom.tk, 1 myrotvorets.center, 1 +myroyaa.com, 1 myrunningcalendar.com, 1 myruststats.com, 1 myrvang.org, 1 @@ -101570,7 +101511,6 @@ myserviceportal.de, 1 myservices.digital, 1 myservik.ml, 1 -mysexpedition.com, 1 mysexvids.net, 1 mysexycard.com, 1 myshenwang.tk, 1 @@ -101582,7 +101522,7 @@ mysidekick.io, 1 mysignal.com, 1 mysill.gr, 1 -mysimsem.com, 0 +mysimsem.com, 1 mysisterandi.co.za, 1 myslc.gov, 1 mysmallbusinesssidekick.com, 1 @@ -101615,7 +101555,6 @@ mysteryshow.site, 1 mysterytag.com, 1 mystgames.tk, 1 -mystia.org, 1 mystic-falls.tk, 1 mystic-welten.de, 1 mysticalroseschoolofcaloocan.com, 1 @@ -101713,6 +101652,7 @@ myvi.gov, 1 myviewboard.com, 1 myvirtualserver.com, 0 +myvitalspro.com, 1 myvologda.tk, 1 myvotect.gov, 1 myvoucher.ie, 1 @@ -101721,6 +101661,7 @@ mywaffles.org, 1 mywalletcrypto.cf, 1 mywapforum.ga, 1 +mywatch.ru, 1 myweb360.de, 1 mywebcloud.at, 1 mywebexperience.gq, 1 @@ -101770,7 +101711,6 @@ mz2033.cc, 1 mza.com, 1 mzademiryolu.com, 1 -mzadqatar.com, 1 mzak.pro, 1 mzakariya.com, 1 mzback.cc, 1 @@ -101809,16 +101749,14 @@ 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, 0 +n2canada.ca, 1 n2diving.net, 1 n2o.io, 1 n2oclub.com, 1 @@ -101832,9 +101770,11 @@ n4zm.com, 1 n5197.co, 1 n61roscommon.ie, 1 +n64.cc, 1 n6729.co, 1 n6957.co, 1 n7.education, 0 +n7186c.com, 1 n8.gay, 1 n854.com, 1 n87pedia.tk, 1 @@ -101918,7 +101858,7 @@ nacsonline.tk, 1 nacu.com.np, 1 nacua.org, 1 -nacudeck.com, 1 +nacudeck.com, 0 naculus.com, 1 nacyklo.cz, 1 nad-r.com, 1 @@ -101969,7 +101909,6 @@ nagb.gov, 1 nagb.org, 1 nagel-dentaltechnik.de, 1 -nageler.org, 1 nagelideeen.ml, 1 naggie.net, 1 nagoonline.com, 1 @@ -101990,8 +101929,6 @@ naheulcraft.be, 1 nahfe.xyz, 1 nahman.tk, 1 -nahmii.dj, 1 -nahmii.dog, 1 nahouw.net, 1 nahrag.tk, 1 nahs-classof1972.com, 1 @@ -102045,7 +101982,6 @@ nakalabo.jp, 1 nakamastudios.com, 1 nakameguro-ekimae-shika.com, 1 -nakamuramudancas.com.br, 1 nakayama.industries, 1 nakayamaresearch.com, 1 nakazanie.ga, 1 @@ -102064,6 +102000,7 @@ nakenmodell.tk, 1 nakhonchaitour.com, 1 nakib4tech.com, 1 +nakiba.com, 1 nakim.cf, 1 nakin.tk, 1 nakisa.com, 1 @@ -102074,14 +102011,13 @@ 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.top, 1 nalapadglobal.com, 1 nalapadtransport.com, 1 nalchik-news.net, 1 @@ -102105,7 +102041,6 @@ namazon.org, 1 namazvakitleri.com.tr, 0 namdu.uz, 0 -name.am, 1 name.ax, 1 nameabusiness.com, 1 nameabusiness.pro, 1 @@ -102143,7 +102078,7 @@ namplan.pl, 1 namsbaekur.is, 1 namskra.is, 1 -namspi.uz, 1 +namspi.uz, 0 namu.la, 1 namu.live, 1 namu.moe, 1 @@ -102220,7 +102155,7 @@ nanubo.de, 1 nanxin.xyz, 1 nao-news.net, 1 -nao.sh, 1 +nao.sh, 0 naocan.cf, 1 naocan.ml, 1 naotron.com, 1 @@ -102245,7 +102180,6 @@ napkins-wholesale.uk, 1 naplata.mk, 1 naples.tk, 1 -naplestotalgarage.com, 1 napo.tk, 1 napoleonoutlawed.tk, 1 napolict.com, 1 @@ -102437,7 +102371,6 @@ natchezss.com, 1 nate.sh, 1 nateandxtina.wedding, 1 -natedoss.com, 1 nateev.fr, 1 nategreen.org, 0 natelefon.tk, 1 @@ -102472,7 +102405,6 @@ nathanieltammer.com, 1 nathankonopinski.com, 1 nathanmfarrugia.com, 1 -nathanphoenix.com, 1 nathansmetana.com, 1 nathenmaxwell.tk, 1 nathumarket.com.br, 1 @@ -102504,6 +102436,7 @@ nationalfuse.com, 1 nationalgangcenter.gov, 1 nationalhomequotes.com, 1 +nationalinjuryadvocates.com, 1 nationalmall.gov, 1 nationalmap.gov, 1 nationalmattressday.com, 1 @@ -102530,6 +102463,7 @@ nationalwellness.org, 1 nationandfreedom.tk, 1 nationdivergente.com, 1 +nationofleaders.org, 1 nationslending.com, 1 nationsreportcard.gov, 1 nationwide.com, 1 @@ -102611,7 +102545,10 @@ 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 @@ -102685,7 +102622,6 @@ navigay.me, 1 navigo-inc.com, 1 navigo.cc, 1 -navigo.global, 1 navigyurci.hu, 1 navinmolecular.com, 1 naviteq.eu, 1 @@ -102801,7 +102737,7 @@ nbri.ru, 1 nbriresearch.com, 1 nbrown.us, 1 -nbx.com, 0 +nbx.com, 1 nc-beautypro.fr, 1 nc-formation.fr, 1 nc-network.io, 1 @@ -102880,7 +102816,6 @@ ncsa.gov.qa, 1 ncsbadvisors.gov, 1 ncsbe-apps.gov, 1 -ncsc.gov.uk, 1 ncsccs.com, 1 ncshp.gov, 1 ncsis.gov, 1 @@ -102933,6 +102868,7 @@ ndrew.me, 1 nds-online.ru, 1 ndscreening.com, 1 +ndtproject.com, 1 ndum.ch, 1 ndvlaw.com, 1 ndvr.com, 1 @@ -102960,7 +102896,7 @@ neartothesky.com, 1 neatful.eu.org, 1 neath-afan-gymnastics.com, 1 -neatlife.co.uk, 1 +neatlife.co.uk, 0 neatous.cz, 1 neatous.net, 1 neauviachannel.com, 1 @@ -102968,13 +102904,13 @@ 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 @@ -103267,7 +103203,6 @@ neoedresources.org, 1 neoeliteconsulting.com, 1 neofinancial.com, 1 -neogames.com.co, 1 neohu.com, 0 neojo.org, 1 neoko.fr, 1 @@ -103403,7 +103338,6 @@ neroninvestment.org, 1 neropiceno.tk, 1 nerot.eu, 1 -neroteknik.com.tr, 1 nerpa-club.ru, 1 nerss.ca, 1 nertus.ua, 1 @@ -103432,9 +103366,11 @@ 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 @@ -103498,6 +103434,7 @@ netdiode.org, 1 netdir.tk, 1 netdnstrace1.com, 1 +netdoktor.dk, 1 netdox.de, 1 netducks.com, 1 netducks.space, 1 @@ -103578,13 +103515,13 @@ 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 @@ -103621,9 +103558,10 @@ netsearch.ga, 1 netsec.cloud, 1 netsecma.com, 1 +netsends.com, 1 netsensai.pl, 1 netsensor.com.br, 1 -netservice.co.uk, 1 +netservice.co.uk, 0 netshopgarden.com.br, 1 netsite.dk, 1 netslum.tk, 1 @@ -103679,6 +103617,7 @@ netwatch.me, 1 netwave.pl, 1 netwerkstoom.nl, 1 +netwerkwaterenklimaat.nl, 1 netwidow.com, 1 netwings.com, 1 netwire-solutions.com, 1 @@ -103709,6 +103648,7 @@ networkmidlands.uk, 1 networkmon.net, 1 networkperformancemonitoring.net, 1 +networks365.ca, 1 networksec.info, 1 networksecuritysolutions.info, 1 networksolutionsconsultant.com, 1 @@ -103718,7 +103658,7 @@ networktrafficanalyzer.net, 1 networktrafficmonitoring.net, 1 networld.to, 1 -networthpal.com, 1 +networthpal.com, 0 networx-online.de, 1 netz-blog.de, 1 netz-noe.at, 1 @@ -103875,6 +103815,7 @@ newag.org.au, 1 newage.bg, 1 newagehoops.com, 1 +newageshutters.com, 1 newalbanyohio.gov, 1 newalive.net, 1 newamericanagent.com, 1 @@ -104004,12 +103945,12 @@ 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 newledger.io, 1 -newledger.sg, 1 newlegalsteroid.com, 1 newlifefund.org, 1 newlondonhospital.org, 1 @@ -104062,7 +104003,6 @@ newprairiepress.org, 1 newpress24.tk, 1 newquilters.com, 1 -newreality.nl, 0 newreleases.io, 1 newrelic.com, 1 newreligiousmovements.org, 1 @@ -104109,6 +104049,7 @@ news89.cf, 1 news89.ga, 1 news89.gq, 1 +news8plus.com, 1 newsadvance.com, 1 newsarmenia.tk, 1 newsarticle.ml, 1 @@ -104145,6 +104086,7 @@ newsignature.com, 1 newsinformer.ga, 1 newsinkansas.ml, 1 +newsinnovationmarket.com, 1 newsinpenn.ml, 1 newsinpolitics.ga, 1 newsireland.tk, 1 @@ -104207,6 +104149,7 @@ newusatoday.ga, 1 newvehicle.com, 1 newvisionhealing.com, 1 +newvistudio.com, 1 newwaterford-oh.gov, 1 newway.ie, 0 newwind.tk, 1 @@ -104221,7 +104164,7 @@ newyorkpub.com.br, 1 newyorkreporting.com, 1 newyorkrp.tk, 1 -newyorkschools.us, 0 +newyorkschools.us, 1 newyorktitlesearch.com, 1 newyorktoutsimplement.com, 0 newzashitnik.tk, 1 @@ -104248,7 +104191,6 @@ nexiam.net, 1 nexicafiles.com, 1 nexinal.net, 1 -nexinformatique.com, 1 nexiodev.com, 1 nexiodevopslocal.com, 1 nexiopay.com, 1 @@ -104313,6 +104255,7 @@ nextintegrations.nl, 1 nextiot.de, 1 nextiva.com, 1 +nextjs.org, 1 nextlegends.gov, 1 nextlevel-forum.de, 1 nextlevel-it.co.uk, 1 @@ -104321,7 +104264,6 @@ nextmed.ro, 1 nextmuseum.io, 1 nextos.com, 1 -nextperimeter.com, 1 nextpower-kepco.jp, 1 nextrasp.it, 1 nextrec.site, 1 @@ -104355,7 +104297,7 @@ nezkakukec.si, 1 nezrouge-est-vaudois.ch, 1 nezsultan.tk, 1 -nf-tel.com, 1 +nf-tel.com, 0 nf9q.com, 1 nfam.de, 1 nfb-ec.co.za, 1 @@ -104389,6 +104331,7 @@ nfl.zapto.org, 1 nflbox.me, 1 nflchan.org, 1 +nflo.pl, 1 nfls.io, 1 nfmhof.com, 1 nfo.co.il, 1 @@ -104454,7 +104397,6 @@ ngoresan.tk, 1 ngorod.tk, 1 ngorongorocratertanzania.org, 1 -ngplus.name, 1 ngroupllc.com, 1 ngsmedicare.com, 1 ngtdevel.com, 1 @@ -104486,7 +104428,6 @@ nhbp-nsn.gov, 1 nhbp.gov, 1 nhccnews.org, 1 -nhcps.com, 1 nhdecoration.fr, 1 nhdsilentheroes.org, 1 nhg.nl, 1 @@ -104588,6 +104529,7 @@ niceguyit.biz, 1 nicelanaliz.com, 1 nicenipovoleno.cz, 1 +niceo.org, 1 nicepussypics.com, 1 nicesco.re, 1 nicestudio.co.il, 1 @@ -104700,7 +104642,6 @@ nicolaszambetti.ch, 1 nicolaus.sk, 1 nicolausbank.pl, 1 -nicolaw.uk, 1 nicolawealth.com, 1 nicoldev.es, 1 nicole-4-u.de, 1 @@ -104801,6 +104742,7 @@ nigelfreake.eu, 1 nigelpentland.co.uk, 1 nigelpentland.net, 1 +nigelsnotebook.com, 1 nigelwright.com, 1 nigelwrightgroup.com, 1 nigeriaimagefoundation.org, 1 @@ -104907,7 +104849,6 @@ nikitagukov.ru, 1 nikitenko.tk, 1 nikitina.ml, 1 -nikitovka.com, 1 nikka.systems, 0 nikkasystems.com, 1 nikkasystems.se, 1 @@ -104975,6 +104916,7 @@ nilupul.org, 1 nimahoda.net, 1 nimb.com.np, 1 +nimber.pt, 1 nimbl.nz, 1 nimble.com.br, 1 nimblefins.co.uk, 1 @@ -105148,7 +105090,6 @@ nixxes.com, 1 nixxin.tk, 1 niyawe.de, 1 -niyazpoyilan.com, 0 niyen.com, 1 niyen.eu, 1 niyen.net, 1 @@ -105158,6 +105099,7 @@ nizamialemdernegi.org.tr, 1 nizarvoiceover.tk, 1 nizhaoheng.com, 1 +nizmaar.com, 1 nizozemsku.nl, 1 nja.au, 1 nja.id.au, 1 @@ -105312,7 +105254,6 @@ no-andishan.ir, 1 no-b.kiev.ua, 1 no-bet.ru, 1 -no-cookies.net, 1 no-data.tk, 1 no-dev.de, 1 no-eye-deer.tk, 1 @@ -105332,7 +105273,6 @@ 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 @@ -105419,6 +105359,7 @@ nodejs.com.au, 1 nodejs.org, 1 nodelab-it.de, 1 +nodelulu.ai, 1 nodepoet.com, 1 noderunners.network, 1 nodespin.com, 1 @@ -105487,6 +105428,7 @@ nokarateinthepit.com, 1 nokchon.tk, 1 nokia.la, 1 +nokillingday.com, 1 nokomiswi.gov, 1 nokono.com, 1 nokoshop.fr, 1 @@ -105538,7 +105480,6 @@ nomee6.xyz, 1 nomek.it, 1 nomercy.tv, 1 -nomerel.com, 0 nomesbiblicos.com, 1 nomial.co.uk, 1 nomifensine.com, 1 @@ -105547,6 +105488,7 @@ nomo.com, 1 nomorephish.ru, 1 nomorepizzaparties.com, 1 +nomoslabs.io, 1 nomsing.tk, 1 nomtechbytes.com, 1 non-www.org, 1 @@ -105568,6 +105510,7 @@ nonprofitdrupal.org, 1 nonqmloans.com, 1 nonsa.pl, 1 +nonsensebrand.es, 1 nonstopairductcleaning.com, 1 nonstopairductcleaninghoustontx.com, 1 nonstopjob.ga, 1 @@ -105652,20 +105595,22 @@ 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 @@ -105683,7 +105628,6 @@ nordlichter-brv.de, 1 nordmark-pharma.de, 1 nordmoregatebilklubb.com, 1 -nordpass.asia, 1 nordpass.com, 1 nordsec.com, 1 nordseeblicke.de, 1 @@ -105884,6 +105828,7 @@ nosetup.tk, 1 noseware-apps.de, 1 nosfermiers.com, 1 +nosial.net, 1 nosinmiperro.tk, 1 nosite.co.za, 1 nosleepforrobots.com, 1 @@ -105918,9 +105863,7 @@ 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 @@ -105949,6 +105892,7 @@ notarypublic.co.nz, 1 notbot.es, 1 notby.net, 1 +notcanadianlabour.ca, 1 notcompletelycorrect.com, 1 notcurses.com, 1 notdankmemer.lol, 1 @@ -105970,10 +105914,10 @@ notenarchiv.eu, 1 notengosuelto.com, 1 noteonline.org, 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 @@ -106032,6 +105976,7 @@ notora.tech, 1 notoriousdev.com, 1 notre-planete.info, 1 +notrecinema.com, 1 notrefuse.tk, 1 notresiteduvercors.tk, 1 notrid.com, 1 @@ -106053,7 +105998,6 @@ noudjalink.nl, 1 nougat-anduze.fr, 1 noumeet.com, 1 -noumezon.net, 1 nouragha.com, 1 nourishandnestle.com, 1 nourishbyfrida.com, 1 @@ -106077,6 +106021,7 @@ novadir.com, 1 novagym.berlin, 1 novak.cf, 1 +novakdizajn.sk, 1 novakola.bg, 0 novalevante.info, 1 novalite.rs, 0 @@ -106094,13 +106039,13 @@ novaquark.com, 1 novaratoday.it, 1 novarock.tk, 1 +novasentinel.pt, 1 novashare.io, 1 novasmilecr.net, 1 novasprint.tk, 1 -novatech.net, 0 novautomoveisusados.pt, 1 novavax.com, 0 -novavistawindows.com, 1 +novavistawindows.com, 0 novaway.ca, 1 novaya.media, 1 novaya.no, 1 @@ -106243,6 +106188,7 @@ noxx.solutions, 1 noxx.uk, 1 noy.asia, 1 +noyada.cz, 1 noyax.com, 1 noyoga.at, 1 noyweb.tools, 1 @@ -106281,10 +106227,7 @@ 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 @@ -106294,7 +106237,6 @@ nrc-gateway.gov, 1 nrc.gov, 1 nrchealth.com, 1 -nrclitchi.org, 1 nrd.gov, 1 nrdstd.io, 1 nreihofer.de, 1 @@ -106390,7 +106332,6 @@ nssfchile.tk, 1 nssquad.tk, 1 nstatic.xyz, 1 -nstd.net, 1 nstnet.org, 1 nsu.pw, 1 nsv.ee, 1 @@ -106406,7 +106347,6 @@ ntcoss.org.au, 1 ntcp.ph, 1 ntcrmezon.ru, 1 -ntdf.co.uk, 1 ntdse.org, 1 nte.email, 1 nte.no, 0 @@ -106423,7 +106363,6 @@ 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 @@ -106503,6 +106442,7 @@ nuevapublicidad.tk, 1 nuevarepublica.cr, 1 nuevarepublicacr.com, 1 +nuevasolutions.com, 1 nuevatrend.co, 1 nuffield.nl, 1 nuffieldtrust.org.uk, 1 @@ -106537,6 +106477,7 @@ nulle-part.org, 1 nulledme.ga, 1 nulleds.tk, 1 +nullgender.com, 1 nullificatr.tk, 1 nullonerror.org, 1 nullprozentshop.de, 1 @@ -106549,7 +106490,6 @@ nullvoid.me, 1 nullxsec.net, 1 nully.xyz, 1 -nulook.co.id, 1 nulsc.biz, 1 nulsc.net, 1 numancia.tk, 1 @@ -106622,7 +106562,6 @@ nurkamol.com, 1 nurmio.fi, 1 nurnabi.ml, 1 -nurolyn.store, 1 nurrobin.de, 1 nurseactioners.ga, 1 nurseactionest.ga, 1 @@ -106703,6 +106642,7 @@ nuzhenkredit.tk, 1 nuzpost.com, 1 nv-art.ru, 1 +nv.tj.cn, 1 nvbw.de, 1 nvcmaine.gov, 1 nvcogct.gov, 1 @@ -106756,7 +106696,6 @@ nwfem.com, 1 nwh.nz, 1 nwhf.no, 1 -nwimports.com, 1 nwitt.us, 1 nwmpcllc.com, 1 nwn.fi, 1 @@ -106780,6 +106719,7 @@ nxedge.com, 1 nxit.ca, 1 nxnt.link, 1 +nxo.it, 1 nxplinc.com, 1 nxstudios.tk, 1 nxth.io, 1 @@ -106809,7 +106749,6 @@ nyaone-object-storage.com, 1 nyap.org, 0 nyatane.com, 1 -nyau.me, 1 nyawau.ch, 1 nyawork.com, 1 nyb.agency, 1 @@ -106818,7 +106757,6 @@ nycdentalimplantscenter.com, 1 nyce.net, 1 nycestateest.ga, 1 -nycfpa.org, 1 nycgangland.com, 1 nycoyote.org, 1 nycpac.net, 0 @@ -106942,6 +106880,7 @@ nztcap.de, 1 nztcapital.com, 1 nztcapital.de, 1 +nztcapital.net, 1 nztcs.org.nz, 1 nztfoundation.com, 1 nztholdings.com, 1 @@ -106949,6 +106888,7 @@ nztservices.com, 1 nzttechnology.com, 1 nzttools.com, 1 +nzttools.net, 1 nztventures.com, 1 nztventures.de, 1 nztventures.net, 1 @@ -107068,12 +107008,14 @@ obereg.ml, 1 oberg.co, 1 oberg.us, 1 +oberlinreview.org, 1 obermeiers.eu, 1 oberndorf-am-lech.de, 1 oberpfalzverein.de, 1 oberrot.de, 1 obertshausen.de, 1 obery.com, 1 +oberzaun.de, 1 obet901vip.com, 1 obetz.gov, 1 obezma.com, 1 @@ -107155,7 +107097,6 @@ obsyk.ai, 1 obtainhigh.com, 1 obtima.org, 1 -obu4alka.ru, 1 obuchowicz.pl, 1 obuhov.ml, 1 obuhov.tk, 1 @@ -107176,7 +107117,6 @@ ocab.se, 1 ocabj.net, 1 ocacnews.net, 1 -ocadefusion.fr, 1 ocaladepositionreporter.com, 1 ocalafl.gov, 1 ocalapd.gov, 1 @@ -107208,6 +107148,7 @@ occultumproductions.tk, 1 occupational-therapy-colleges.com, 1 occupations.org.ru, 1 +occupros.com, 1 occupy4elephants.tk, 1 occupybakersfield.tk, 1 ocd2016.com, 1 @@ -107236,7 +107177,6 @@ oceaniahome.tk, 1 oceaniahotels.com, 1 oceanic.ws, 1 -oceanicquest.com, 1 oceanings.com, 1 oceanofapk.com, 1 oceanohost.com, 1 @@ -107268,7 +107208,6 @@ ochk.org, 1 ochki-linzi.tk, 1 ochobeatsmedia.net, 1 -ochotnicky.com, 1 ochranaprirody.cz, 1 ochrepoint.com.au, 1 ochsenfeld-fotografie.de, 1 @@ -107340,6 +107279,7 @@ octavianguzu.com, 1 octaviorojas.tk, 1 octobanana.com, 1 +october-academy.com, 1 octobered.com, 0 octocaptcha.com, 1 octod.tk, 1 @@ -107374,6 +107314,7 @@ odabilocal.com, 1 odatakao.com, 1 oday.org, 1 +odbiciadusz.pl, 1 odbierzspozywke.pl, 1 odbtomsk.ru, 1 odd17.org, 1 @@ -107402,7 +107343,7 @@ odensc.me, 1 odenvilleal.gov, 1 odeonentertainment.co.uk, 1 -odesigning.com, 1 +odesigning.com, 0 odessa-news.ru, 1 odessalove.tk, 1 odezdaotto.tk, 1 @@ -107429,7 +107370,6 @@ odontologiawilliampizarro.com, 1 odoo.co.th, 1 odoppelto.de, 1 -odoranswers.com, 1 odoru.ga, 1 odorucinema.ga, 1 odosblog.de, 1 @@ -107438,13 +107378,13 @@ 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 @@ -107529,7 +107469,6 @@ offermann-koeln.de, 1 offers.jp, 1 offgamers.com, 1 -offgames.io, 1 offgrid.hr, 1 offgridauto.com, 1 office, 1 @@ -107593,6 +107532,7 @@ offshore-technology.com, 1 offshore.hosting, 1 offshorealert.com, 1 +offshoreenergymanager.com, 1 offshoremoney.tk, 1 offshoretravelsest.ga, 1 offshorewindwatchdog.com, 1 @@ -107669,10 +107609,8 @@ ogunquit.gov, 1 ogurishun.tk, 1 ogurus.com, 1 -oguzhanozoglu.com, 1 ogyaa.jp, 0 -ogznet.com, 1 -oh14.de, 0 +oh14.de, 1 oh64.moe, 1 ohai.is, 1 ohai.social, 1 @@ -107760,6 +107698,7 @@ oitavenlife.com, 1 oiwe.info, 1 oja50.org, 1 +ojd-av.com, 1 ojdip.net, 1 ojee.nic.in, 1 ojjdp.gov, 1 @@ -107773,6 +107712,7 @@ ok.ru, 1 ok2a.org, 1 ok3on.cz, 1 +okahouse.com, 1 okaidi.es, 1 okaidi.fr, 1 okaidi.ro, 1 @@ -107794,6 +107734,7 @@ okcp.ca, 1 okdisasterhelp.org, 1 okdousho.com, 1 +oke.com.tw, 1 okea.org, 0 okeb.com, 1 okeechobeecountyfl.gov, 1 @@ -107804,7 +107745,6 @@ okemahok.gov, 1 okgun.co, 1 okhanvatansever.tk, 1 -okhelp.org, 1 okib.ca, 1 okiefrog.org, 1 okinawa-mag.net, 1 @@ -107837,6 +107777,7 @@ okna.ua, 1 oknakz-astana.kz, 1 oknavdom.tk, 1 +oknolite.ru, 1 oknopvh.ml, 1 okokorecepten.nl, 1 okosg.kr, 1 @@ -107993,6 +107934,7 @@ olfnewcastle.com, 1 olfsecane.org, 1 olfuscluster.is, 0 +olgagarlo.es, 1 olgallery.tk, 1 olgamalytcheva.com, 1 olgamilosevic.edu.rs, 1 @@ -108068,6 +108010,7 @@ ollion.com, 1 ollning.com, 1 ollo.ga, 1 +ollornog.de, 1 olltechjob.com, 1 olmari.fi, 1 olmc-nutley.org, 1 @@ -108085,7 +108028,6 @@ ololmke.org, 1 olomercy.com, 1 olopp.org, 1 -oloveoil.store, 1 olphseaside.org, 1 olqoa.org, 1 olschurch.com, 1 @@ -108123,6 +108065,7 @@ 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 @@ -108166,7 +108109,6 @@ omegaclickinsights.com, 1 omegacode.pl, 1 omegahosting.net, 1 -omegamc.ua, 1 omegathermoproducts.nl, 1 omegleporn.to, 1 omenu.co.uk, 1 @@ -108239,7 +108181,6 @@ omnirecherche.nl, 1 omniscimus.net, 0 omnisiens.se, 1 -omnisky.dk, 1 omnisphere-group.com, 1 omnissimmo.fr, 1 omnitaxhelp.com, 1 @@ -108254,6 +108195,7 @@ omoo.co, 0 omorashi.org, 1 omoteura.com, 1 +omox.co.uk, 1 omranic.com, 1 omrmz.org, 1 omro-wi.gov, 1 @@ -108323,7 +108265,6 @@ ond-inc.com, 1 ond-inc.jp, 1 ondajoven.tk, 1 -ondav.com, 1 ondcp.gov, 1 onde.xyz, 1 ondeapostar.pt, 1 @@ -108343,7 +108284,7 @@ one-acleaning.com, 1 one-clue.com, 1 one-cozmic.com, 1 -one-dot.de, 0 +one-dot.de, 1 one-host.ga, 1 one-news.net, 0 one-pass.cloud, 1 @@ -108394,7 +108335,6 @@ oneearthsacredarts.com, 1 oneem.tk, 1 oneequity.com, 1 -oneest.com, 1 onefabday.com, 1 onefamily.com, 1 onefestivalplaza.com.au, 1 @@ -108480,13 +108420,13 @@ 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 @@ -108517,7 +108457,6 @@ ong.ng, 1 ong.or.at, 1 ongao.top, 1 -ongea.io, 1 ongelukvandaag.nl, 1 ongewenstretour.nl, 1 ongiaenegogoa.com, 1 @@ -108556,6 +108495,7 @@ onkologiya.ga, 1 onkoloogiakeskus.ee, 1 onkoplus.de, 1 +onkori.ru, 1 onkvwave.ru, 1 onlanka.com, 1 onld.de, 1 @@ -108590,13 +108530,10 @@ online-store-phones.tk, 1 online-taxes.tk, 1 online-tesis.com, 1 -online-textil.com, 1 online-textil.cz, 1 -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 @@ -108678,7 +108615,6 @@ onlinepaydayloans365.tk, 1 onlineplay.ml, 1 onlinepokieau.net, 1 -onlinepokies.me, 1 onlineprojects.in, 1 onlineradio.com.pl, 1 onlineradio.pp.ua, 1 @@ -108863,8 +108799,8 @@ 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 @@ -108927,7 +108863,6 @@ 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 @@ -108958,7 +108893,6 @@ openaudio.it, 1 openbackdoor.com, 1 openbank.us, 1 -openbayes.network, 1 openbayesstatus.com, 1 openbeecloud.com, 1 openbible.com.au, 1 @@ -108968,7 +108902,6 @@ openblink.org, 1 openblox.org, 1 openbooktheatrecompany.net, 1 -openbriefing.org, 0 openbsd.cz, 1 openbsdhosting.com, 1 openbusiness.tk, 1 @@ -108981,6 +108914,7 @@ opencircuit.nl, 1 opencity.spb.ru, 1 opencl.aw, 1 +openclaw-setup.me, 1 openclima.com, 1 openclub24.ru, 1 openconf.uk, 1 @@ -109010,6 +108944,7 @@ openhandhelds.org, 1 openhisto.com, 1 openhistory.de, 1 +openhome.com.co, 1 openhousemelbourne.org, 1 openhwgroup.cn, 1 openhwgroup.org, 1 @@ -109017,6 +108952,7 @@ openinsieme.com, 1 openintel.com.br, 1 openintl.com, 1 +openinvite.biz, 1 openjawtech.com, 1 openjsf.org, 1 openjur.de, 1 @@ -109083,7 +109019,6 @@ openstandia.jp, 1 openstem.com.au, 1 openstreetmap.is, 1 -openstreetmap.org, 1 opensyria.net, 1 opentapetes.com.br, 1 opentechalliance.com, 1 @@ -109159,14 +109094,14 @@ opiskelijaradio.fi, 1 opisrael.tk, 1 opito.com, 1 -opium.io, 0 +opium.io, 1 opix.fr, 1 opko.com, 1 opl.bz, 1 oplata-mvd.ga, 1 oplata-vklike.tk, 1 oplata.uz, 1 -oplium.com, 1 +oplium.com, 0 oplop.appspot.com, 1 opm.gov, 1 opmaakonderscheidingen.nl, 1 @@ -109232,7 +109167,6 @@ opswat.com, 1 opswill.com, 1 optalysys.com, 1 -opteam.pl, 1 opteamax.de, 1 opteamax.eu, 1 optenhoefel.de, 1 @@ -109251,7 +109185,7 @@ optiekzien.nl, 0 optigear.nl, 1 optigon.no, 1 -optik-sehstern.de, 1 +optik-sehstern.de, 0 optik-tamara.de, 1 optik-trosdorff.de, 1 optikabane.com, 1 @@ -109287,6 +109221,7 @@ optimumfinancier.ca, 1 optimumfinancier.com, 1 optimumfinanciere.fr, 1 +optimumfmw.com, 1 optimumgam.ca, 1 optimumgam.com, 1 optimumgam.fr, 1 @@ -109361,6 +109296,7 @@ oracolo.tk, 1 oraculos.pt, 1 oraculosiono.net, 0 +orakelet.ai, 1 oraklinika.tk, 1 oralb.com, 1 oralchirurgie-phoenix.de, 1 @@ -109427,7 +109363,6 @@ orbitfab.com, 1 orbitfoods.ca, 1 orbitforum.ga, 1 -orbitfurnituresolutions.com, 1 orbitgoods.ca, 1 orbitmoonalpha.com, 1 orbitpro.co, 1 @@ -109443,7 +109378,6 @@ orcas.tk, 1 orcasecurity.io, 1 orchardnh.org, 1 -orchestra-ppm.io, 1 orchestra.tk, 1 orchestremetropolitain.com, 1 orchidee-mariage.com, 1 @@ -109627,6 +109561,7 @@ oriocdn.com, 1 orion-rentals.tk, 1 orion-universe.com, 1 +orion180.com, 1 orioneclipse.com, 1 orionelement.com, 1 oriongames.eu, 1 @@ -109837,6 +109772,7 @@ 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 @@ -109844,6 +109780,7 @@ osirisrp.online, 1 osirium.com, 1 osiriz.xyz, 1 +oskargajcowski.pl, 1 oskarkopra.fi, 1 oskcapital.com, 1 oskcapital.com.au, 1 @@ -109861,7 +109798,6 @@ oslo-kammerorkester.no, 1 oslofjorden.org, 1 osm.is, 1 -osm.org, 1 osmaniyehaber.tk, 1 osmanlitakilari.tk, 1 osmarks.net, 1 @@ -109885,6 +109821,7 @@ ospo-alliance.org, 1 ospo.zone, 1 ospoalliance.org, 1 +ospsuchoraczek.pl, 1 osrdmo.gov, 1 osrs.wiki, 1 osrsmap.net, 1 @@ -109928,6 +109865,7 @@ ostrovseocitra.ga, 1 ostrovseocitra.gq, 1 ostrovseocitra.ml, 1 +ostrovsky-web.de, 1 ostseebad-sellin.de, 1 osttopst.online, 1 osuarez3.com, 1 @@ -110060,14 +109998,9 @@ oujj.link, 1 ouldlamara.tk, 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 @@ -110108,7 +110041,6 @@ ouroh2.com, 1 ouronyx.com, 0 ouropal.com, 1 -ourpharmacynetwork.com, 1 ourplanetary.com, 1 oursibparksplan.com, 1 oursmartcity.au, 1 @@ -110122,10 +110054,12 @@ ouruglyfood.com, 1 ourvau.lt, 1 ourwildsavorykitchen.com, 1 +ourwisconsinlife.com, 1 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 @@ -110155,6 +110089,7 @@ outerspace.ga, 1 outetc.com, 1 outfaced-dancestudio.de, 1 +outfame.com, 1 outfit-weimar.eu, 1 outgress.com, 1 outgrow.co, 1 @@ -110163,8 +110098,6 @@ outincanberra.com.au, 1 outinnationalsecurity.org, 1 outlaw-star.tk, 1 -outlawlogistics.com, 1 -outlet-center.by, 1 outletcity.bg, 1 outletstoresmalls.com, 1 outline.vn, 1 @@ -110175,7 +110108,6 @@ outofservice.com, 1 outofthefog.net, 1 outplay.ai, 1 -outplayed.in, 1 outplayhq.com, 1 outplnr.fr, 1 outpost.network, 1 @@ -110285,7 +110217,7 @@ oviser.ml, 1 ovisy.com, 1 ovmgroup.eu, 1 -ovni-owners.org.uk, 0 +ovni-owners.org.uk, 1 ovnrain.com, 0 ovo.st, 1 ovochi.tk, 1 @@ -110337,7 +110269,6 @@ owldevelopers.tk, 1 owlhollowbakery.com, 1 owllee.com, 1 -owlmaster.org, 1 owlnull.me, 1 owlofminerva.net, 1 owlscrap.ru, 1 @@ -110347,6 +110278,7 @@ ownc.at, 1 owncloud.com, 1 ownerbusiness.org, 1 +ownerinspections.com.au, 1 ownhost.com, 1 ownhosting.cloud, 1 ownhosting.de, 1 @@ -110510,7 +110442,6 @@ ozvoip.net, 1 ozvolvo.org, 1 ozyurttesisat.com, 1 -ozzie.fr, 1 ozzyfant.de, 1 p-art.design, 1 p-e-g.org, 1 @@ -110521,7 +110452,6 @@ 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 @@ -110535,7 +110465,6 @@ p1-test.nl, 1 p10.ru, 0 p1984.nl, 0 -p1hsinc.com, 1 p1ratrulezzz.me, 1 p2000app.nl, 1 p22.co, 1 @@ -110548,7 +110477,6 @@ p333b.net, 1 p333e.net, 1 p333j.net, 0 -p35consulting.com, 1 p36533.com, 1 p4.pm, 1 p4c-admin.azurewebsites.net, 1 @@ -110567,7 +110495,6 @@ p9728.co, 1 p99perf.com, 1 p99performance.com, 1 -p9cq.com, 1 p9d1.com, 1 pa-nganjuk.go.id, 1 pa-w.de, 1 @@ -110626,7 +110553,6 @@ pabloroblesminister.com, 1 pablosaraiva.com, 1 pabpunk.tk, 1 -pabrikvideo.com, 1 pac-clad.com, 1 pacareerzone.org, 1 pacasino.com, 1 @@ -110652,7 +110578,6 @@ pachamamita.eu, 1 pachetomat.ro, 1 pachinstyle.com, 1 -pachuta.pl, 1 paciella.com, 1 pacificaent.net, 1 pacificbags.com.au, 1 @@ -110722,7 +110647,7 @@ pacteo.com, 1 pactf-flag-4boxdpa21ogonzkcrs9p.com, 1 pactf.com, 1 -pactnetwork.com.au, 1 +pactnetwork.com.au, 0 pactum.com, 1 pactumdr.com.au, 1 pacxodka.ru, 1 @@ -110735,7 +110660,7 @@ padberx-marketing-consultants.de, 1 padderne.tk, 1 paddestoelen-encyclopedie.tk, 1 -paddle.com, 1 +paddle.com, 0 paddle.net, 1 paddlethecreek.com, 1 paddy.rocks, 1 @@ -110862,7 +110787,6 @@ 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 @@ -110877,7 +110801,6 @@ paintingrepair.ga, 1 paintingtips.net, 1 paintpaina.com, 1 -paintscratch.com, 1 paintstaintt.com, 1 paio2-rec.com, 1 paipuman.jp, 1 @@ -110886,10 +110809,10 @@ 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 @@ -111058,6 +110981,7 @@ pana4ucloud.ddns.net, 1 panaceainfosec.com, 1 panaceallc.net, 1 +panama-listings.com, 1 panamacity.gov, 1 panamacitypolice.gov, 1 panamatravel.tk, 1 @@ -111135,6 +111059,7 @@ pandorarecovery.com, 1 pandorarox.com, 1 pandorawiki.org, 1 +pandorrah.nl, 1 pandorum.cf, 1 pandos.pl, 1 panduan-hamil.tk, 1 @@ -111182,7 +111107,6 @@ panjiva.com, 1 pankiewiczlaw.com, 1 pankoff.net, 1 -panlex.org, 1 panmill.xyz, 1 panmourovaty.cz, 1 panmuseum.gr, 1 @@ -111223,6 +111147,7 @@ panthenolplus.com, 1 pantherage.co.uk, 1 pantherauto.no, 1 +pantherxrare.com, 1 panthi.lk, 1 pantingly.tk, 1 pantonshire.com, 1 @@ -111283,6 +111208,7 @@ papeleo.digital, 1 papeleriayasesorias.com.co, 1 papelisimo.es, 1 +paper.aero, 1 paper.sc, 1 paper.wf, 1 paperandpage.com, 1 @@ -111303,9 +111229,8 @@ papi.com, 1 papieri.dental, 1 papierniak.net, 1 -papierniczy.eu, 1 papierowyrycerz.pl, 1 -papillegustative.com, 1 +papillomatest.com, 1 papillon-events.be, 1 papkinadochka.ru, 1 paplajsoftware.com, 1 @@ -111317,6 +111242,7 @@ pappys.kitchen, 1 papuaone.com, 0 papuzkija.pl, 1 +papygeorges.fr, 1 paqtam.com, 1 par-allel.ru, 1 parabellum-barakaldo.tk, 1 @@ -111402,7 +111328,6 @@ paras.tk, 1 parasail.co.nz, 1 parasatria.tk, 1 -parasgroupindia.com, 1 parasitologyclub.org, 1 parasomnia.tk, 1 paraspeech.com, 1 @@ -111420,7 +111345,6 @@ parcdumbravaminunata.ro, 1 parceirofinanceiro.pt, 1 parcelauditpartners.com, 1 -parcelow.com, 1 parceltrackr.com, 1 parcelup.com, 1 parckwart.de, 1 @@ -111428,6 +111352,7 @@ pardal.tk, 1 pardanaud.com, 1 pardiso-project.org, 1 +pardypanda.com, 1 parea-osterode.de, 1 paredesdecoura.pt, 1 paregion13.gov, 1 @@ -111440,7 +111365,6 @@ parenthaven.com, 1 parentingplaydough.tk, 1 parentinterview.com, 1 -parentpay.com, 1 parentpayments.com.au, 1 parents-as-allies.com, 1 parentsandzebrasunited.com, 1 @@ -111592,7 +111516,6 @@ parleur.net, 1 parliament.gov.to, 1 parliamentcamp.com, 1 -parmacityfutsal.it, 1 parmartecultura.it, 1 parmatoday.it, 1 parmatwp.gov, 1 @@ -111710,7 +111633,6 @@ partsestore.com, 1 partsgeek.com, 1 partsguysusa.com, 1 -partwerx.com, 1 party-envy.com, 1 party-kneipe-bar.com, 1 party-land.pl, 1 @@ -111735,6 +111657,7 @@ partyschnaps.com, 1 partyshop.ge, 1 partyshowlatam.com, 1 +partysoundandlighthire.co.uk, 1 partytime-uk.co.uk, 1 partytimeltd.ie, 1 partywithunicorns.com, 1 @@ -111846,6 +111769,7 @@ passwords.google.com, 1 passwordsapp.org, 1 passwordscon.com, 1 +passwordscon.org, 1 passwordsecurity.info, 1 passwordsecuritycenter.com, 1 passwordsheeters.ga, 1 @@ -111938,6 +111862,7 @@ pathwaysthroughgrief.org, 1 patient.info, 1 patientcheckin.com, 1 +patientdesk.ai, 1 patientenverfuegung.digital, 1 patientjourneyapp.com, 0 patientspaid.com, 1 @@ -111997,6 +111922,7 @@ patriksima.cz, 1 patrikx3.com, 1 patrimoine-neuwiller.fr, 0 +patrimoniumtouraine.com, 1 patriotbearingsupply.com, 1 patriotcs.tk, 1 patriotinsurancebrokers.com, 0 @@ -112062,7 +111988,6 @@ paulini.ga, 1 pauliuspiecius.com, 1 pauljackson.ga, 1 -pauljmartinez.com, 0 pauljrowland.co.uk, 1 pauljzak.com, 1 paulknulst.de, 1 @@ -112103,7 +112028,6 @@ paulsinternet.com, 1 paulsitarz.com, 1 paulsnar.lv, 1 -paulstahl.com, 1 paulstamatiou.com, 1 paulstarosta.com, 1 paulswartz.net, 1 @@ -112157,7 +112081,6 @@ pawafuru.com, 0 pawapuro.ga, 1 pawapuro.tk, 1 -pawbuddi.com, 1 pawchewgo.com, 1 pawdecor.com, 1 pawealthmanagement.com, 1 @@ -112183,6 +112106,7 @@ pawtraitcaptures.com.au, 1 paxata.com, 1 paxerahealth.com, 1 +paxhouse.net, 1 paxwinkel.nl, 1 pay.accountant, 1 pay.apartments, 1 @@ -112195,6 +112119,7 @@ pay.com.au, 1 pay.condos, 1 pay.construction, 1 +pay.consulting, 1 pay.contractors, 1 pay.dance, 1 pay.dental, 1 @@ -112264,7 +112189,6 @@ paydollar.com, 1 paye.net, 0 payeasy.tech, 1 -payexpresse.com, 0 payfacto.com, 1 payfazz.com, 1 payfin.tech, 1 @@ -112291,9 +112215,9 @@ paymentaccuracy.gov, 1 paymentap.co.uk, 1 paymentjs.com, 1 +paymentportaldevopslocal.io, 1 payments.google.com, 1 paymeservice.com, 1 -paymongo.com, 1 paymongo.help, 1 paymore.org, 1 paymyphysician.com, 0 @@ -112466,7 +112390,7 @@ pcminsk.by, 1 pcmkrembangan.or.id, 1 pcmobile.tech, 1 -pcmr.info, 0 +pcmr.info, 1 pcmscientific.com, 1 pcnaid.com, 1 pcnewsoft.tk, 1 @@ -112484,7 +112408,6 @@ pcrab.ml, 1 pcrecovery.ga, 1 pcrla.com, 1 -pcrobot.cz, 1 pcrypt.org, 1 pcsafe.cf, 1 pcsbrasil.ml, 1 @@ -112526,12 +112449,14 @@ 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 @@ -112575,6 +112500,7 @@ peacefulexperiences.com, 1 peacefulrock.com, 1 peacekeeper.tk, 1 +peacemaker-academy.com, 1 peacepiperanch.com, 1 peacetourco.cf, 1 peacewiththewild.co.uk, 1 @@ -112624,11 +112550,11 @@ 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, 1 pecasse.be, 0 pecetowicz.pl, 1 pecheneg.tk, 1 @@ -112687,7 +112613,6 @@ peene.be, 1 peenee.in.th, 1 peenor.xyz, 1 -peep.gq, 1 peeptalk.dk, 1 peer.travel, 1 peerbearing.com, 1 @@ -112751,6 +112676,7 @@ peihouston.com, 1 peippo.at, 1 peirong.me, 1 +pejetroperformance.com.br, 1 pejupiel.com, 1 pekarnasazava.cz, 1 pekarskis.com, 1 @@ -112781,13 +112707,14 @@ 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, 1 +pellerinstrategie.com, 0 pellet.pordenone.it, 1 pellet.roma.it, 1 pelletgrillreviews.com, 1 @@ -112859,7 +112786,6 @@ penholder.ga, 1 peni.tk, 1 peniarth.cymru, 1 -peninsula360.com, 1 penispumpen.se, 1 pennan.tk, 1 penncrestbank.com, 1 @@ -112894,13 +112820,14 @@ 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 -pensierolaterale.tech, 1 pensioenfonds-ey.nl, 0 pension-am-alten-waschhaus.de, 1 pension-chevaux.com, 1 @@ -112973,11 +112900,11 @@ 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 @@ -113045,7 +112972,6 @@ perd.re, 1 perdanabagus.tk, 1 perdita-capelli.tk, 1 -perditumtriumvirate.com, 1 perdolyathlendr.tk, 1 perecraft.com, 1 peredovaya.tk, 1 @@ -113067,7 +112993,6 @@ perewall.tk, 1 perezdecastro.org, 0 perf-b2b.com, 1 -perf.report, 1 perf1.com, 1 perfare.net, 1 perfect-blog.com, 1 @@ -113097,8 +113022,8 @@ 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 @@ -113123,7 +113048,6 @@ performidi.com, 1 performing-art-schools.com, 1 performingdreams.tk, 1 -performiptv.com, 1 performive.com, 1 perfumerie.tk, 1 perfumes.com.br, 1 @@ -113138,6 +113062,7 @@ peridotcapitalpartners.com, 1 periferiaegyesulet.hu, 1 perigon.ch, 1 +perimeter-scan.ru, 1 perin.name, 1 perini.com.au, 1 perinkac.cz, 1 @@ -113165,6 +113090,7 @@ 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 @@ -113197,13 +113123,11 @@ permis-apoints.fr, 1 permis.online, 1 permiscoderoute.fr, 1 -permisecole.com, 1 permistheorique.be, 1 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 @@ -113248,7 +113172,7 @@ persjrp.ca, 1 perso.pl, 1 persoform.ch, 1 -personacommunications.com.au, 1 +personacommunications.com.au, 0 personal-genome.com, 1 personal-scrum.de, 1 personal-scrum.eu, 1 @@ -113256,7 +113180,6 @@ personalaccidentsest.ga, 1 personalcourtreporters.com, 1 personalfarewells.com.au, 1 -personalglobal.com.br, 1 personalhealth.ie, 1 personalhydroponics.com, 1 personaliseyourwine.com.au, 1 @@ -113363,7 +113286,6 @@ 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 @@ -113384,6 +113306,7 @@ petcharte.ga, 1 petclassy.ga, 1 petclaw.com, 1 +petcle.com, 1 petclient.ga, 1 petco.com, 1 petcollections.ga, 1 @@ -113526,11 +113449,9 @@ 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 @@ -113603,7 +113524,6 @@ pexagontech.com, 1 peyote.org, 1 peyote.wiki, 1 -peytonwebster.com, 1 peyukoshop.com, 1 pf.dk, 1 pfa.or.jp, 1 @@ -113641,6 +113561,7 @@ pfhstheroar.com, 1 pfingstberg.de, 1 pfingstsportfest.de, 1 +pfish.zone, 1 pflanzen-shop.ch, 1 pflanzen-werkstatt.de, 1 pflege.ch, 1 @@ -113662,7 +113583,7 @@ pfwarriors.com, 1 pg-forum.at, 1 pg-forum.ch, 1 -pg-forum.de, 1 +pg-forum.de, 0 pg-it.at, 1 pg-mana.net, 1 pg-sec.com, 1 @@ -114032,6 +113953,7 @@ photoncourier.com, 1 photonics.bg, 1 photonis.com, 1 +photonmatters.com, 1 photonsensor.com, 1 photonsphere.org, 1 photopalace.tk, 1 @@ -114067,7 +113989,6 @@ php.watch, 1 phpadmin666.com, 1 phpbb-tutorials.cf, 1 -phpbbchinese.com, 0 phpcraft.de, 1 phpdevlabs.tk, 1 phpdorset.co.uk, 1 @@ -114216,6 +114137,7 @@ piatenko.ml, 1 piatika.com, 1 piatika.in, 1 +piava.ai, 1 piavonpadberg.com, 1 pib.gd, 1 pibgd.fr, 1 @@ -114259,9 +114181,9 @@ 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 picknetworkiscoming.sg, 1 picknrg.com, 1 @@ -114272,6 +114194,7 @@ picksygirl.com, 1 picktablet.com, 1 pickulsky.com, 1 +pickup-transporte.de, 1 pickupenc.ru, 1 picloudedge.com, 1 picme.tk, 1 @@ -114321,7 +114244,6 @@ piecesofmind.in.rs, 1 piecestech.com, 0 piechart.ga, 1 -pieddebiche-paris.com, 1 piedraconstruction.ma, 1 piedrahita.tk, 1 piedrasblancas.gov, 1 @@ -114347,6 +114269,7 @@ pier28.com, 1 pier2pier.org, 1 piercecountyne.gov, 1 +piercing.hu, 1 piercingnagykereskedes.hu, 1 piercingpiac.hu, 1 piercraft.com, 1 @@ -114385,6 +114308,7 @@ pig-breeding.tk, 1 pig333.com, 1 pigb.net, 1 +pigboats.com, 1 pigeonholelive.com, 1 pigeonpairstays.com, 1 pigeonracinginformation.com, 1 @@ -114435,7 +114359,6 @@ pilatesavenue.co.uk, 1 pilatesboutique.com, 1 pilatespt.nl, 1 -pilatesstation.co.th, 1 pilbaraports.com.au, 1 pilchuck.org, 1 pile.systems, 1 @@ -114446,7 +114369,6 @@ piliszek.net, 1 pillar.fi, 1 pillargrc.com, 1 -pillow.sk, 1 pillowcast.net, 1 pillowexpertsers.ga, 1 pillowexpertsest.ga, 1 @@ -114463,7 +114385,7 @@ pilotknobmo.gov, 1 pilotodianws.azurewebsites.net, 1 pilotorg.ru, 1 -pilotpen.us, 0 +pilotpen.us, 1 pilotproject.tk, 1 pilotshop.com, 1 pilsen.fun, 1 @@ -114488,6 +114410,7 @@ pimsa.com.tr, 1 pimsaautomotive.com, 1 pimylifeup.com, 1 +pin-communications.com, 1 pin.net.au, 1 pinacamauto.com, 1 pinalcourtsaz.gov, 1 @@ -114560,7 +114483,7 @@ pinkhatbeard.com, 1 pinkitalia.tk, 1 pinklecfest.org, 1 -pinklittlenotebook.com, 1 +pinklittlenotebook.com, 0 pinkmango.travel, 0 pinkoffice.com, 1 pinkoi.com, 1 @@ -114585,7 +114508,6 @@ pinmeto.com, 1 pinnacle-tex.com, 1 pinnaclecommunityservices.com.au, 1 -pinnaclefoundationrepair.com, 1 pinnacleholdings.com, 1 pinnaclelife.nz, 1 pinnacletrailers.com, 1 @@ -114737,7 +114659,7 @@ pissflaps.co.uk, 1 pissflaps.org.uk, 1 pist.is, 1 -pistacio.hr, 1 +pista73.com, 1 pistats.ddns.net, 1 pistolnz.org.nz, 1 pistonkandidatu.tk, 1 @@ -114858,6 +114780,7 @@ pixelturkey.art, 1 pixelturkey.com, 1 pixelumin3d.com, 1 +pixelunion.eu, 1 pixelurbia.com, 1 pixeluser.de, 1 pixelution.at, 1 @@ -114917,7 +114840,6 @@ pjax.xyz, 0 pjc.is, 1 pjentertainments.co.uk, 1 -pjleisure.co.uk, 1 pjo.no, 1 pjotor.tk, 1 pjshop.cf, 1 @@ -114982,13 +114904,11 @@ 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 @@ -115067,7 +114987,6 @@ planetgolf.de, 1 planetgrehen.tk, 1 planethowl.com, 1 -planeticke.com, 1 planetickettravel.com, 1 planetknauer.net, 1 planetmath.org, 1 @@ -115094,6 +115013,8 @@ planiserin.tk, 1 planisware.academy, 1 planisware.cn, 1 +planisware.io, 1 +planisware.live, 1 planisys.net, 1 planit-inc.com, 1 planitz.com, 1 @@ -115162,7 +115083,6 @@ plasmoth.org, 1 plasofficial.it, 1 plassmann.ws, 1 -plast-pallet.ru, 1 plast.bg, 1 plast.design, 1 plastdesign.com.ua, 1 @@ -115219,7 +115139,6 @@ platinumpavingnj.com, 1 platinumplumbingca.com, 1 platinumpoolsaz.com, 1 -platinumsystems.biz, 1 platinumtalkers.ga, 1 platinumtalkest.ga, 1 platitudemusic.com, 1 @@ -115254,6 +115173,7 @@ play-telochki.tk, 1 play.cash, 1 play.google.com, 1 +play21bit.com, 1 play3niu11.com, 1 play3niu33.com, 1 play3niu55.com, 1 @@ -115269,6 +115189,7 @@ playcasinos.ca, 1 playchiplet.com, 1 playcollect.net, 1 +playcooked.com, 1 playdaysparties.co.uk, 1 playdeadlock.com.cn, 1 playdlawosp.pl, 1 @@ -115316,6 +115237,7 @@ playstationplus.es, 1 playstationtrophies.org, 1 playtictactoe.org, 1 +playtinwhistle.com, 1 playtoearn.net, 1 playtop.tk, 1 playtopia.no, 1 @@ -115373,6 +115295,7 @@ plentybetter.com, 1 plentybetter.org, 1 pleo.io, 1 +plesksecuritycheck.com, 1 plesse.pl, 1 pletenkin-nn.ru, 1 pleven.bg, 1 @@ -115500,7 +115423,7 @@ plustwik.com, 1 plutiedev.com, 1 pluto5000.com, 1 -plutopia.ch, 1 +plutopia.ch, 0 pluxml.org, 1 plvsultra.com, 1 plyind.com, 1 @@ -115581,7 +115504,6 @@ 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 @@ -115751,6 +115673,7 @@ pocopizza.co.uk, 1 pocopt.com, 1 pocopt.ru, 1 +pocsaismartsystem.hu, 1 pocze.ch, 1 pocztowski.it, 1 pod-emnik.by, 1 @@ -115849,7 +115772,7 @@ pogljad-brest.tk, 1 pogodavolgograd.tk, 1 pogodok.tk, 1 -pogomate.com, 1 +pogomate.com, 0 pogotowie-komputerowe.tk, 1 pogotowiekomputeroweolsztyn.pl, 1 pogrebeniq-sofia.com, 1 @@ -115860,8 +115783,10 @@ 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 @@ -115876,7 +115801,6 @@ pointless.one, 1 pointmaquininha.com, 0 pointnull.com, 1 -pointonelab.com, 1 pointpalace.tk, 1 pointparfait.fr, 1 pointpleasantbeachnj.gov, 1 @@ -115905,6 +115829,7 @@ pokafe.com, 1 pokagontownshipmi.gov, 1 pokalsocial.de, 1 +pokedb.de, 1 pokedex.mobi, 1 pokeelektronik.com, 1 pokeelektronik.com.tr, 1 @@ -115945,7 +115870,6 @@ pokerventure.ga, 1 pokerventureers.ga, 1 pokerventureest.ga, 1 -pokeymanatee4.xyz, 1 poki.at, 1 poki.be, 1 poki.bg, 1 @@ -115971,6 +115895,7 @@ poki.se, 1 pokl.cz, 1 pokoiki.pl, 1 +pokojovkyodlucie.cz, 1 pokon548.ink, 1 pokpok.tk, 1 pokrowcecardo.pl, 1 @@ -116006,6 +115931,7 @@ pole.net.nz, 1 pole1.co.uk, 1 polebarn.com, 1 +polecamps.com, 1 polemamas.com, 1 polemik.tk, 1 polenautohuur.nl, 1 @@ -116033,6 +115959,7 @@ policymakr.com, 1 policymine.com, 1 policyreporter.us, 1 +policyrisk.com, 1 policytrusters.ga, 1 policytrustest.ga, 1 poliermachines.be, 1 @@ -116049,7 +115976,6 @@ polis812.ru, 1 polisanaraka.pl, 1 polisanarciarska.pl, 1 -polisave.co.il, 1 polish-dictionary.com, 1 polish-flag.com, 1 polish-translations.com, 1 @@ -116093,7 +116019,6 @@ 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 @@ -116137,6 +116062,7 @@ polotshirts.org, 1 polourize.com, 1 polparts.nl, 1 +polrentgen.pl, 1 polski-dentysta-birmingham.uk, 1 polskiadwokat.org, 1 polskiemalzenstwo.org, 1 @@ -116150,7 +116076,7 @@ poltek-petrokimia.ac.id, 1 poltsamaa.edu.ee, 1 poltsamaalasteaed.edu.ee, 1 -poly.se, 1 +polyatomic.ai, 1 polycoise.com, 1 polycraftual.co.uk, 0 polygamer.net, 0 @@ -116161,10 +116087,11 @@ polygraphi.ae, 1 polymaint-services.com, 1 polymake.org, 1 +polymarketwatch.info, 1 polymath.pm, 1 polymerexpert.biz, 1 polymerix.de, 1 -polymesh.network, 1 +polymesh.network, 0 polymics.com, 0 polyna.eu, 1 polynesia.tech, 1 @@ -116203,7 +116130,7 @@ pompeii.tickets, 1 pompes-funebres-girard.com, 1 pomphreyslaw.com, 1 -ponabana.com, 1 +pon.com, 1 ponavia-rezidence.cz, 1 ponca-nsn.gov, 1 poncagedemarbre.fr, 1 @@ -116229,7 +116156,6 @@ pontiwerx.com.au, 1 pontodogame.com.br, 1 pontosdevista.pt, 1 -pontosnews.gr, 1 pontotoccountyms.gov, 1 pontupagina.com, 1 ponvelab.com, 1 @@ -116303,7 +116229,6 @@ popkins.gq, 1 popkins.ml, 1 popkins.tk, 1 -popkulturysci.pl, 1 poplargrove-il.gov, 1 poplavok77.tk, 1 poplite.xyz, 1 @@ -116345,6 +116270,7 @@ 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 @@ -116353,6 +116279,7 @@ poquiloco.com, 1 poradls.cz, 1 poradludkastanka.cz, 1 +poradniarozwodowa.pl, 1 porady-wnetrzarskie.pl, 1 porady.elblag.pl, 1 porady.kalisz.pl, 1 @@ -116368,7 +116295,6 @@ porady.zgora.pl, 1 poradywnetrzarskie.pl, 1 porazarul.by, 1 -porcepastora.com.ve, 1 porchdaydreamer.com, 1 porcore.com, 1 porelcorazon.com, 1 @@ -116413,6 +116339,7 @@ pornhun.xyz, 1 pornimg.net, 1 porniwi.com, 1 +pornkaizen.com, 1 pornline.sex, 1 pornloupe.com, 1 pornmega.net, 1 @@ -116664,6 +116591,7 @@ posteo.com, 1 posteo.de, 1 posteo.net, 1 +postermaniacs.pe, 1 postermywall.com, 1 postern.net, 1 postern.nl, 1 @@ -116748,6 +116676,7 @@ potolok-brest.tk, 1 potolok.am, 1 potomac.cf, 1 +potomacexteriors.com, 1 potomania.cz, 1 potosi-bolivia.tk, 1 potosivlgwi.gov, 1 @@ -116861,7 +116790,6 @@ powerman.top, 1 powerpc.pt, 1 powerpilot.co.za, 1 -powerplan.com, 1 powerplay.xyz, 0 powerplayer.tk, 1 powerroo.com.au, 1 @@ -116894,7 +116822,6 @@ powershaper.io, 1 powershellmagic.com, 1 powersmithsolar.com, 1 -powersolusa.com, 1 powersport.lt, 1 powersrealtygrp.com, 1 powerstreet.cloud, 1 @@ -116914,6 +116841,7 @@ powerwheels.tk, 1 powerwithpeople.com, 1 powerzonewrestling.tk, 1 +powiatkrasnicki.pl, 1 powmobilegrooming.com, 1 poxiao.net, 1 poylabo.com, 1 @@ -116921,6 +116849,7 @@ pozarevac.tk, 1 pozd.tk, 1 pozdravlyalka.gq, 1 +pozharcontrol.ru, 1 pozharnyi.tk, 1 pozitiffchik.ga, 1 pozitiffchik.ml, 1 @@ -116978,16 +116907,15 @@ ppsl.nz, 1 ppsoft.es, 1 ppsoft.org, 1 -ppssh.org, 1 ppt.org, 1 ppuglobe.com, 1 ppweb.pro, 1 ppy.sh, 1 pqcrypta.com, 1 pqforce.com, 1 +pqg.capital, 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 @@ -117015,15 +116943,16 @@ practicalgrowth.life, 1 practicalhomes.com.au, 1 practicallyedible.com, 1 +practicallyunhackable.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 @@ -117099,12 +117028,14 @@ prashantcafe.tk, 1 prasinoscomputers.ml, 1 prasos.fi, 1 +prateekganguli.com, 1 prateep.io, 1 pratelloshop.tk, 1 pratemarkets.com, 1 prathambooks.org, 1 pratic.it, 1 praticienmedecinechinoise.be, 1 +praticonnect.com, 1 pratopronto.org, 1 pratorotoli.it, 1 pratosirunin.ga, 1 @@ -117127,7 +117058,10 @@ 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 @@ -117145,6 +117079,7 @@ praxis-waedicity.ch, 1 praxis.nl, 1 praxisfilms.org, 1 +praxisglobe.com, 1 praxisgroup.services, 1 praxistipp24.com, 1 praxxys.ph, 1 @@ -117166,7 +117101,6 @@ preapps.com, 1 precambridge.tk, 1 precaria.org, 1 -precaston.com, 1 precedecaritas.com.br, 1 precedencemedia.com, 1 precept.uk.com, 1 @@ -117183,7 +117117,6 @@ precisebusiness.com.au, 1 precisefuture.com, 1 precisehotels.com, 1 -precisionclan.com, 1 precisioncourt.com, 1 precisiondentalnyc.com, 1 precisiondentistrynj.com, 1 @@ -117191,7 +117124,6 @@ precisionicerinks.com, 0 precisionlender.com, 1 precisionmachineservice.com, 1 -precisionmarketdata.com, 1 precisiontrialsolutions.com, 1 precisionvaccinations.com, 1 precitaj.si, 1 @@ -117212,6 +117144,7 @@ predskazanie.ml, 1 predskazanie.tk, 1 predstavitelstvo-v-sude.tk, 1 +preea.com, 1 preecepools.co.uk, 1 preejaculation.ga, 1 preezy.de, 1 @@ -117232,7 +117165,7 @@ pregen.tk, 1 pregnancytips.tk, 1 pregnantorcrazy.com, 1 -pregun.com.au, 1 +pregun.com.au, 0 pregunteleakaren.gov, 1 preis-alarm.info, 1 preis-alarm.org, 1 @@ -117321,6 +117254,7 @@ prensarural.org, 1 prepa-benjam.fr, 1 prepa-code.com, 1 +prepagolf.fr, 1 prepagosyescortforyou.com, 1 prepaid-cards.xyz, 1 prepaidgirl.com, 1 @@ -117536,6 +117470,7 @@ 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 @@ -117570,7 +117505,6 @@ primadirectory.tk, 1 primaflorafloristaccrington.co.uk, 1 primalinea.pro, 1 -primalracing.com, 1 primalshop.dk, 1 primalsurvivor.net, 1 primananda.com, 1 @@ -117672,7 +117606,6 @@ printable-map-az.com, 1 printablemapaz.com, 1 printablemapforyou.com, 1 -printableschedule.net, 1 printandgo.fr, 1 printbase.cz, 0 printbigjournal.tk, 1 @@ -117692,9 +117625,9 @@ 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 @@ -117734,11 +117667,12 @@ 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 @@ -117806,6 +117740,7 @@ privatecapsecurity.org, 1 privatedata.tk, 1 privatedns.uk, 1 +privatedrive.co, 1 privateger.me, 1 privategiant.com, 1 privatehd.to, 1 @@ -117835,6 +117770,7 @@ privelust.nl, 1 priverify.com, 1 privilegevisa.fr, 1 +privlabs.io, 1 privo.com, 1 privod-okna.ru, 1 privorot.cf, 1 @@ -117842,7 +117778,7 @@ privw.com, 1 privy-staging.com, 1 privy.com, 0 -privylabs.com, 1 +privylabs.com, 0 prix-carburants-info.fr, 1 prix-carburants.gouv.fr, 1 prixaurorawards.ca, 1 @@ -117859,6 +117795,7 @@ prizecode.ru, 1 prizehometickets.com.au, 1 prizelink.com.au, 1 +prizelock.ca, 1 prizkod.ru, 1 prizrak-v-dospehah.ga, 1 prjktruby.com, 0 @@ -117907,9 +117844,7 @@ 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 @@ -117984,6 +117919,9 @@ proctorial.cf, 1 proctorio.com, 1 proctorio.net, 1 +proculair.nl, 1 +proculaircontent.com, 1 +proculairworkers.com, 1 procurant.com, 1 procurement.moscow, 0 procurs.us, 1 @@ -117992,6 +117930,7 @@ prod-vigl-www-master.azurewebsites.net, 1 prodapt.com, 1 prodemos.nl, 1 +prodentim101-us.com, 1 prodesigntools.com, 1 prodesk.bg, 1 prodiadigital.com, 1 @@ -118020,6 +117959,7 @@ productiveplastics.com, 1 productosquimicosrd.com, 1 productpeo.pl, 1 +productpreneurmarketing.com, 1 products-for-health.tk, 1 products4more.at, 1 productsandfeatures.com, 1 @@ -118148,7 +118088,6 @@ progettodighe.it, 1 progettograjau.com, 1 progettolegalita.it, 1 -progettonazionale.it, 0 progezi.com, 1 progg.no, 1 proggersession.com, 1 @@ -118162,6 +118101,7 @@ 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 @@ -118295,6 +118235,7 @@ prokuratura.uz, 1 prolens-lankaran.tk, 1 proletaren.se, 1 +prolificzone.com, 1 prolikewoah.com, 1 prolinehardware.ie, 1 prolocofrascarolo.tk, 1 @@ -118348,7 +118289,7 @@ 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 @@ -118406,6 +118347,7 @@ propagationtools.com, 1 propanesale.cf, 1 propbot.com, 1 +propcashflow.my, 1 propecia.ml, 1 propelate.com, 1 propeld.com.au, 1 @@ -118430,7 +118372,6 @@ propertycrawl.com, 1 propertydealer.ga, 1 propertyfindercdn.com, 1 -propertyfurniture.com, 1 propertygroup.pl, 1 propertylondon.co.uk, 1 propertymarketplace.com.ng, 1 @@ -118528,6 +118469,7 @@ prosurveillancegear.com, 1 prosvet.tk, 1 prosveta1901.tk, 1 +prosvirninvlad.me, 1 protanki.ml, 1 protanki.tk, 1 protapnews.tk, 1 @@ -118538,13 +118480,11 @@ 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 @@ -118685,7 +118625,6 @@ proyectostep.tk, 1 prozac20mg.cf, 1 prozesswunder.com, 1 -prozhedownload.com, 1 prozorlivec.tk, 1 prpbt.io, 1 prpferrara.it, 1 @@ -118722,7 +118661,6 @@ prvaboja.co.rs, 1 prvnirodinna.cz, 1 prwid.gov, 1 -pry.co, 1 pryan.org, 1 prylarprylar.se, 1 prytkov.com, 1 @@ -118811,6 +118749,7 @@ psihoterapevt1.by, 1 psihotest.tk, 1 psii.global, 0 +psikoklinik.com, 1 psikokoro.com, 1 psikoucka.cz, 1 psilly.com, 0 @@ -118866,6 +118805,7 @@ psprsaz.gov, 1 psq.com.au, 1 psreturn.com.au, 1 +pssbau.hu, 1 pssgcsim.org, 1 pssschristchurch.tk, 1 pst.moe, 1 @@ -118882,7 +118822,6 @@ psyart.tk, 1 psycenter.tk, 1 psychcare.cz, 1 -psychcaremd.com, 1 psychedelia.com, 1 psychedelia.wiki, 1 psycheteelia.com, 1 @@ -118901,6 +118840,7 @@ psycho-news.tk, 1 psycho.space, 1 psychoactive.com, 1 +psychoactive.wiki, 1 psychoco.net, 1 psychologbruksela.be, 1 psychologi.cf, 1 @@ -118943,7 +118883,6 @@ 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 @@ -118959,6 +118898,7 @@ psyh.tk, 1 psyhelp.ro, 1 psyk-patienten.tk, 1 +psykologmonica.dk, 1 psykologtidningen.cf, 1 psykologtidningen.ga, 1 psykologtidningen.gq, 1 @@ -119198,8 +119138,6 @@ punchlistprosdfw.com, 1 punctually.gq, 1 pundak.games, 1 -pundeez.com, 0 -pundix.com, 1 puneindia.tk, 1 punematka.com, 1 pungatv.ml, 1 @@ -119249,7 +119187,6 @@ puppygirl.ceo, 1 puppygirl.tokyo, 1 puppygock.ceo, 1 -puppyirl.gay, 1 puppykennel.tk, 1 puppylove.hu, 1 puppyporch.com, 1 @@ -119276,6 +119213,7 @@ 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 @@ -119283,7 +119221,6 @@ pureaudioplayer.ru, 1 pureblissdental.com.au, 1 purebuttons.com, 1 -pureceli.com, 1 purecodedigital.com, 1 puredayshop.com.tw, 1 puredigital.nl, 1 @@ -119338,7 +119275,6 @@ purplestar.mobi, 1 purpletter.tk, 1 purplez.pw, 1 -purplscientific.com, 1 purpspc.com, 1 purreview.cf, 1 purrfectboudoir.com, 0 @@ -119429,7 +119365,6 @@ puvus.org, 1 puxlit.net, 1 puyallupnissanparts.com, 1 -puyblanc.info, 1 puzi.nl, 1 puzz.gg, 1 puzzle-welt.ch, 1 @@ -119452,7 +119387,6 @@ pver.nl, 1 pvgvethospital.co.uk, 1 pvh-membrany.ru, 1 -pvhe.pl, 1 pvideo.cz, 1 pvlrmnnk.com, 1 pvp-factions.fr, 1 @@ -119581,7 +119515,6 @@ pyxisfreelance.co, 1 pyxisfreelance.com.au, 1 pyxyp.com, 1 -pzasa.pl, 1 pzc.nl, 1 pzmk.org.pl, 1 pzsearch.nl, 1 @@ -119631,7 +119564,6 @@ qabel.de, 1 qac.gov, 1 qaconstrucciones.com, 1 -qadmium.com, 1 qadmium.tk, 1 qadrishattari.tk, 1 qaina.net, 1 @@ -119654,7 +119586,7 @@ qatartimes.tk, 1 qatesol.org.au, 1 qauk.org, 1 -qaware.de, 1 +qaware.de, 0 qaz.cloud, 1 qbasic.tk, 1 qbasicsite.tk, 1 @@ -119714,6 +119646,7 @@ qfig.au, 1 qfixinfo.com, 1 qgblog.org, 0 +qgdesavenjoueurs.fr, 1 qgiv.com, 1 qgtv.com, 1 qgushi.com, 1 @@ -119737,7 +119670,7 @@ qianqiao.me, 1 qiantuwenlu.com, 1 qiber.org, 1 -qibgroup.com.au, 1 +qibgroup.com.au, 0 qicoder.com, 1 qidn.ie, 1 qifu.me, 1 @@ -119757,7 +119690,6 @@ qinglingyu.cn, 1 qingly.me, 1 qingniantuzhai.com, 1 -qingpei.me, 1 qingran.net, 1 qingshanasd.cn, 1 qinlili.bid, 1 @@ -119826,7 +119758,7 @@ qnsgmd.com, 1 qnulabs.com, 1 qofpeacechurch.org, 1 -qolab.ai, 1 +qolab.ai, 0 qombo.nl, 1 qoml.net, 1 qonaro.com, 1 @@ -119839,7 +119771,6 @@ qotw.net, 1 qover.com, 1 qoyyim.com, 1 -qozido.de, 1 qp666d.com, 0 qpai.net, 1 qpaypro.com, 1 @@ -119883,7 +119814,6 @@ qrcodes.tools, 1 qrcodewiz.com, 1 qrcontagion.com, 0 -qrish.live, 1 qristianuli.com, 0 qriveo.com, 1 qrlfinancial.com, 0 @@ -119911,6 +119841,7 @@ qt.ax, 1 qtacairsoft.com, 1 qtakehd.com, 1 +qtdrop.com, 1 qthotels.com, 1 qtn.net, 1 qto.com, 1 @@ -120070,7 +120001,7 @@ quarus.net, 1 quasar.gr, 1 quasarcr.com, 1 -quasarelectronics.co.uk, 1 +quasarelectronics.co.uk, 0 quasarhomes.com, 1 quasarnet.gr, 1 quasartech.gr, 1 @@ -120093,6 +120024,7 @@ qubit.capital, 1 qubitoss.com, 1 qubitsandbytes.co.uk, 1 +qubotondo.it, 1 qubyte.codes, 1 quchronicle.com, 1 qudini.com, 1 @@ -120131,6 +120063,7 @@ queer.pl, 1 queercinema.ch, 0 queerfest.tk, 1 +queerfotografie.nl, 1 queerlelystad.nl, 1 queerlinq.com, 1 queermerk.com, 1 @@ -120159,6 +120092,7 @@ quentin-informatique.fr, 1 quentin-sauvetre.fr, 1 quentinaurat.com, 1 +quentinb.giize.com, 1 quentinchevre.ch, 1 quentingemine.be, 1 quepourlesjuristes.fr, 1 @@ -120169,8 +120103,6 @@ quernon.fr, 0 querocalcular.com.br, 1 query-massage.com, 0 -query.gov.ps, 1 -queryguard.net, 1 quesecelebra.info, 1 quessinternational.com, 1 quest-crusaders.de, 1 @@ -120192,11 +120124,11 @@ questfororgasm.com, 1 questiii.com, 1 question.cf, 1 -question.com, 1 questionandanswer.ml, 1 questionyu.com, 0 questlawoffice.com, 1 questofaidance.tk, 1 +questofprogress.com, 1 questoj.cn, 1 questsocial.it, 1 questsys.com, 1 @@ -120244,7 +120176,7 @@ quicksell.store, 1 quickshops.ga, 1 quickstart.co.za, 1 -quicksupplies.us, 1 +quicksupplies.us, 0 quicksupply.com, 1 quicksus.com, 1 quicktapstudios.com, 1 @@ -120340,7 +120272,6 @@ quizzard.ga, 1 quizzard.tk, 1 quizzen.tk, 1 -quizzhit.com, 1 qul.link, 1 qulix.by, 1 qulix.ch, 1 @@ -120369,6 +120300,7 @@ quotev.com, 1 quotidiani.net, 1 quotidianolavoce.it, 1 +quotivo.de, 1 quovadisaustria.com, 1 quoviz.com, 1 qupom.com.br, 1 @@ -120386,6 +120318,7 @@ qussaikhuli.tk, 1 quto.ru, 1 qutrade.io, 1 +quuck.nl, 1 quuz.org, 1 qv-eherkenning.nl, 1 qvg.company, 1 @@ -120618,7 +120551,6 @@ radarcupon.com.mx, 1 radarcupon.es, 1 radarcupon.ro, 1 -radardetector.lol, 1 radarerp.net, 1 radarfirst.com, 1 radarstationery.com, 0 @@ -120646,7 +120578,6 @@ radiadoressoares.com.br, 1 radial.com, 1 radialplus.tk, 1 -radianceswimwear.com, 1 radiantenergy.tk, 1 radiantwonder.com, 1 radiationtherapy.tk, 1 @@ -120852,7 +120783,6 @@ radiovertical.tk, 1 radiovirgendelcarmen.tk, 1 radiovolmax.tk, 1 -radiovulgaris.com, 1 radiowakeup.tk, 1 radioxanadu.tk, 1 radiozetta.tk, 1 @@ -120879,6 +120809,7 @@ radopsec.org, 1 radost-crikvenica.hr, 1 radost.digital, 1 +radost.sk, 1 radpath.at, 1 radpro.ai, 1 radreisetraumtreibstoff.de, 1 @@ -120964,7 +120895,6 @@ raidentawork.lt, 1 raiderhacks.com, 1 raidertimes.com, 1 -raidkeeper.com, 1 raidstone.net, 1 raidstone.rocks, 1 raiffeisen-gv.ch, 1 @@ -120989,7 +120919,6 @@ railcarrxqa.com, 1 railclub.tk, 1 railfans.ca, 1 -railfeeding.com, 1 railgun.ac, 1 railgun.com.cn, 1 railgun.email, 1 @@ -121035,7 +120964,6 @@ rainbowheart.com, 1 rainbowinflatables.co.uk, 1 rainbowloompatterns.com, 1 -rainbowmarketing.ca, 1 rainbowmath.tk, 1 rainbowsmoothies.win, 1 rainbowstore.com.au, 0 @@ -121052,7 +120980,6 @@ raincoat.systems, 1 rainel.at, 1 rainerstoll.at, 1 -rainfall.ro, 1 rainfocus.com, 1 rainforest.engineering, 1 rainforestfoundation.org, 1 @@ -121130,7 +121057,6 @@ rakudo.org, 1 rakugokai.net, 1 rakuvisa.com, 1 -ralaoui.com, 1 ralaoui.me, 1 raleighadultmedicine.com, 1 raleighboneandjoint.com, 1 @@ -121151,6 +121077,7 @@ rallycycling.com, 0 rallyekrumlov.cz, 1 rallyfotosaswin.tk, 1 +rallynavigator.com, 1 rallytrophy.tk, 1 ralphdeal.com, 1 raltha.com, 1 @@ -121226,7 +121153,6 @@ randallwilk.com, 1 randburgplumber-247.co.za, 1 randburgplumbing.co.za, 1 -randdtaxcreditspecialists.com, 1 randmevape.net, 1 randoequipement.com, 1 randolf.ca, 1 @@ -121296,6 +121222,7 @@ ranjanbiswas.net, 1 ranjeetmehta.tk, 1 rankae.com, 1 +rankandstyle.com, 1 rankeco.com, 1 rankia.ga, 1 ranking-deli.jp, 1 @@ -121306,6 +121233,7 @@ rankingofe.com.pl, 1 rankingubezpieczeniowy.pl, 1 rankingubezpieczennazycie.pl, 1 +rankpoll.me, 1 ranksite.cf, 1 ranksite.ga, 1 ranksite.gq, 1 @@ -121328,7 +121256,6 @@ ranzbak.nl, 1 raoliveoil.ga, 1 raomed.com.ar, 1 -raonpick.com, 1 raovatsaigon.tk, 1 rap4ever.org, 1 rapala.com, 1 @@ -121451,6 +121378,7 @@ ratenkauf.com, 1 rates.ca, 1 ratespy.com, 1 +ratexindex.com, 1 ratgeber-alltag.de, 1 ratgeber-beauty.com, 1 ratgeber-massagen.com, 1 @@ -121641,6 +121569,7 @@ rbls.org, 1 rbltracker.com, 1 rbmafrica.co.za, 1 +rbmediaglobal.com, 1 rbmland.com, 1 rbprosthodontics.com, 1 rbs.ca, 1 @@ -121753,6 +121682,7 @@ rdmc.shop, 1 rdmc.site, 1 rdmc.sn, 1 +rdmc.studio, 1 rdmc.support, 1 rdmc.systems, 1 rdmc.tel, 0 @@ -121772,8 +121702,6 @@ 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 @@ -121831,7 +121759,7 @@ readup.tk, 1 ready4bf.tk, 1 ready5g.net, 1 -readycentbid.com, 1 +readycentbid.com, 0 readycentral.com, 1 readychurchsites.com, 1 readyclassroomcentral.com, 1 @@ -121859,6 +121787,7 @@ reaksi.id, 1 real-it.nl, 1 real-linux.tk, 1 +real-milk.ru, 1 real-site.tk, 1 real-srebrenica-genocide.cf, 1 real-srebrenica-genocide.ga, 1 @@ -122011,7 +121940,6 @@ rebelonline.nl, 1 rebelsi.pl, 1 rebelstudio.ml, 1 -rebelz.se, 1 rebirthlongboard.co.th, 1 rebizzield.com, 1 rebo.ai, 1 @@ -122045,6 +121973,7 @@ receitasdepesos.com.br, 1 receitasfavoritas.com, 1 recentiprogressi.it, 1 +recepsenel.com, 1 receptenwebsite.com, 1 reception247.com, 0 receptionsbook.com, 1 @@ -122104,6 +122033,8 @@ recoilbox.com, 1 recolic.cc, 1 recolic.net, 1 +recollect.co.nz, 1 +recollect.net.au, 1 recollection.fr, 1 recollective.com, 1 recolor.ml, 1 @@ -122142,7 +122073,6 @@ recruitskill.ga, 1 recruitskill.gq, 1 recruitwithclutch.com, 1 -rectale.co, 1 rectale.com, 1 rectale.xyz, 1 rectecforum.com, 1 @@ -122201,6 +122131,7 @@ redcandycane.tk, 1 redcapital.cl, 1 redcardinal.tk, 1 +redcarnationhotels.com, 1 redcarpetmonday.com, 1 redcatrampageforum.com, 1 redcedar.gov, 1 @@ -122286,6 +122217,7 @@ redid.com.au, 1 redington-bizapp.com, 1 redington-bizboard.com, 1 +redingtonconnect.com, 1 redingtongroup.com, 1 redion.me, 1 redir.me, 1 @@ -122313,6 +122245,7 @@ redlineairdefense.ai, 1 redlineairdefense.ca, 1 redlineairdefense.com, 1 +redlinecourier.com, 1 redlink.de, 1 redlink.tk, 1 redlinker.ml, 1 @@ -122326,7 +122259,7 @@ redmondoregon.gov, 1 redmore.me, 1 redneck-radio.tk, 1 -rednegocios.cl, 1 +rednegocios.cl, 0 redneragenturen.org, 1 rednex.tk, 1 rednsx.org, 0 @@ -122352,6 +122285,7 @@ redrivernm.gov, 1 redrockcontracting.com.au, 1 redrockrentalsllc.com, 1 +redroseart.com, 1 reds-dev.ga, 1 redseafire.cloud, 1 redsealine-invest.ru, 1 @@ -122360,6 +122294,7 @@ redshell.pw, 1 redshoeswalking.net, 1 redsiege.com, 1 +redsift.cloud, 1 redsift.com, 1 redsift.io, 1 redsis.com, 1 @@ -122386,7 +122321,6 @@ redtube.com, 1 redtubeplatinum.com, 1 redtubs.tk, 1 -redtune.jp, 1 reducealcoholism.com, 1 reducer.co.uk, 1 reduceritop.ro, 1 @@ -122396,7 +122330,6 @@ redunion.tk, 1 redux.show, 1 redvau.lt, 1 -redvent-decor.ru, 1 redvent.ru, 1 redware.co.uk, 1 redwater.co.uk, 1 @@ -122429,7 +122362,6 @@ reelranking.com, 1 reels.in.th, 1 reemployks.gov, 1 -reenergo.ru, 1 reenio.cz, 1 reentry.gov, 1 reerguer.pt, 1 @@ -122442,6 +122374,7 @@ reeson.org, 0 reesrichards.co.uk, 1 reevaappliances.co.uk, 1 +reeview.me, 1 reevoo.com, 1 reezocar.com, 1 refa.nl, 1 @@ -122537,6 +122470,7 @@ refreshmentshop.co.uk, 1 refriamericas.com, 1 refrigeracion2hermanos.com.mx, 1 +refstack.io, 1 refuelcollective.com, 0 refuelcreative.com.au, 0 refuelmcconnell.marketing, 1 @@ -122558,7 +122492,6 @@ regalautosport.com, 1 regalcapitalwi.com, 1 regalosuhlala.com, 1 -regalosymuestrasgratis.com, 1 regalpaintingfdl.com, 1 regalradio.net, 1 regaltheatre.com.au, 1 @@ -122605,6 +122538,7 @@ reginfo.gov, 1 regio-guide.de, 1 regio-salland.nl, 1 +regiobank.nl, 1 regiobeveland.nl, 1 regiofomento.com.br, 1 regioinfo.nl, 1 @@ -122620,6 +122554,7 @@ regionalmissouri.com, 1 regionethost.tk, 1 regionethungaria.hu, 1 +regiongl.com, 1 regionmedia.cf, 1 regionstea.net, 1 regioplanverbindt.nl, 1 @@ -122669,6 +122604,7 @@ regularlabs.com, 1 regulations.gov, 1 regulative.gq, 1 +regulatorysciencedata.eu, 1 rehab.cf, 1 rehabilitologist.ru, 1 rehabthailand.com, 1 @@ -122676,7 +122612,7 @@ rehansaeed.com, 1 rehasport-informationen.de, 1 rehasportwelt.de, 1 -rehazonaliftservice.nl, 1 +rehazonaliftservice.nl, 0 reher.pro, 1 rehive.com, 1 rehoboth-hollandscheveld.nl, 1 @@ -122710,7 +122646,6 @@ reikicrystal.com, 1 reikimaster.tk, 1 reilly.io, 1 -reimagine-education.com, 1 reimaginebelonging.org, 1 reimann.me, 1 reimers.de, 1 @@ -122743,6 +122678,7 @@ reirei.cc, 1 reisdemuthwiltgen.com, 1 reisebuero-baader.de, 1 +reiseguiden.no, 1 reisekostenabrechnung.online, 1 reisen.ga, 1 reisenbauer.ee, 0 @@ -122776,6 +122712,7 @@ rejushiiplotter.ru, 1 rejuveaesthetic.com, 1 rejuvetclinicpromotion.com, 1 +rekayasainformatika.com, 1 rekenkameroost.nl, 1 rekka-j.com, 1 rekklab.com, 1 @@ -122850,7 +122787,6 @@ reliableparts.com, 1 reliablepi.com, 1 reliableremovals-blackpool.co.uk, 1 -reliablewire.com, 1 reliahost.nl, 1 reliancecard.com, 1 reliant.com, 0 @@ -122889,14 +122825,14 @@ remambo.jp, 1 remargem.com, 1 remargen.com, 1 +remarkmart.com, 1 remateszarate.cl, 0 remax-direct.co.il, 1 remax.at, 1 remaxelite.co.il, 1 remaxtop.co.il, 1 remayah.com, 1 -remdrivet.se, 1 -remeb.de, 1 +rembish.org, 1 remedi.tokyo, 1 remediohalkiparaladiabetes.org, 1 remedionaturales.com, 1 @@ -122966,7 +122902,6 @@ remotedesktop.corp.google.com, 1 remotedxb.com, 1 remoteoffice.ga, 1 -remotepeople.com, 1 remoteroom.jp, 1 remoteshack.cf, 1 remoteshack.ml, 1 @@ -122977,7 +122912,6 @@ removalsandstoragex.com, 1 removalsmanandvan.org, 1 removedrepo.com, 1 -remowin.com, 1 remploy.co.uk, 1 remptmotors.com, 0 remsenny.gov, 1 @@ -123019,10 +122953,8 @@ renderstack.io, 1 renderworld.tk, 1 renderzone.tk, 1 -rendevio.com, 1 rendez-vous.gq, 1 rendezvous-cafe.co.uk, 1 -rendezvousstyle.com, 1 rendre-service.ch, 0 rendutowers.org.au, 1 rene-cafe.nl, 1 @@ -123030,12 +122962,12 @@ 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 @@ -123209,10 +123141,11 @@ replacebase.co.uk, 1 replacebase.com, 1 replacebase.eu, 1 -replacedbyrobot.info, 1 +replacedbyrobot.info, 0 replacementrate.ga, 1 replay.ga, 1 replaynexus.com, 1 +replenishradar.com, 1 replicacoin.ga, 1 replicagold.ml, 1 replici.net, 1 @@ -123238,7 +123171,7 @@ reportexhq.ca, 1 reportexhq.com, 1 reporting.gov, 1 -reportkey.ru, 1 +reportingonthetimes.com, 1 reportoid.tk, 1 reportoverdose.com, 1 reportquest.com, 1 @@ -123289,6 +123222,7 @@ requestr.co.uk, 1 requeteguapas.com, 1 requeue.ga, 1 +requex.me, 1 requin.tk, 1 requirements.ga, 1 reregu.cf, 1 @@ -123300,14 +123234,15 @@ 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 @@ -123366,6 +123301,7 @@ resilience.sh, 1 resiliencebox.com, 1 resilientlouisianacommission.gov, 1 +resilienzatropical.it, 1 resimevi.tk, 1 resinbondedaggregates.com, 1 resindrivewayexperts.co.uk, 1 @@ -123376,7 +123312,6 @@ resistsa.blue, 1 resize2fs.de, 0 resju21.ch, 0 -resk.fr, 1 resmigazete.gov.tr, 1 resmim.net, 1 resoauth.support, 1 @@ -123458,6 +123393,7 @@ 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 @@ -123490,13 +123426,12 @@ 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 @@ -123548,6 +123483,7 @@ reteimprese.it, 1 reteteaz.net, 1 retetop95.it, 0 +retfe.com, 1 reth.ch, 1 rethinkingchurch.net, 1 rethinkproductivity.co.uk, 1 @@ -123643,6 +123579,7 @@ revaloriza.cf, 1 revampdigital.co.nz, 0 revandtorque.com, 1 +revanops.io, 1 revapost.fr, 1 revayd.net, 1 revconnect.tk, 1 @@ -123651,6 +123588,7 @@ reveal-sound.com, 1 revealcellcamtracker.com, 1 revealdata.com, 1 +revealmarket.xyz, 1 revechat.com, 1 revellecoaching.com, 0 revellio.tk, 1 @@ -123669,7 +123607,6 @@ reversecanada.com, 1 reversedns.tk, 1 reverseengineer.net, 1 -reverseloansolutions.com, 1 reversemortgageguides.com, 1 reversemortgageguides.org, 1 reversesouthafrica.com, 1 @@ -123684,6 +123621,7 @@ reviewgeek.com, 1 reviewheaven.ml, 1 reviewku.id, 1 +reviewmi.co.uk, 1 reviews.anime.my, 0 reviewsonline.ml, 1 revijahak.hr, 1 @@ -123830,6 +123768,8 @@ 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 @@ -123976,6 +123916,7 @@ ricardoquaresma.tk, 1 ricardotaakehb.tk, 1 ricardotorres.com.pt, 1 +ricassiocosta.me, 1 ricaud.me, 1 riccardogiannetto.com, 1 ricciardoantoninotindaro.art, 1 @@ -124029,6 +123970,7 @@ richecommecresus.com, 1 richel-group.fr, 1 richerenches.fr, 1 +richeyweb.com, 1 richfieldadamscowi.gov, 1 richfieldsean.org, 1 richie.cloud, 0 @@ -124115,6 +124057,7 @@ ridewithloop-url.com, 1 ridgecrestca.gov, 1 ridgefieldct.gov, 1 +ridgelineit.com.au, 1 ridgelysradar.com, 1 ridgespringsc.gov, 1 ridgewaterlodge.com, 1 @@ -124122,6 +124065,7 @@ ridgidgear.eu, 1 ridho.id, 1 ridingoklahoma.com, 1 +ridingthemagic.uk, 1 ridingthetigerpro.com, 1 rido.ml, 1 ridsdale.ca, 1 @@ -124129,8 +124073,7 @@ riebe.eu, 1 rieboldt-service.de, 1 riechsteiner.tech, 0 -riecht-besser.de, 1 -riederle.com, 1 +riederle.com, 0 riedl-shk.de, 1 riekko-orkesteri.fi, 1 riemzac.com, 1 @@ -124182,7 +124125,6 @@ righttolife.org.uk, 1 righttrack.io, 1 rigidbuilding.com, 1 -rigidlandscapes.com.au, 1 rigly.uk, 1 rigonidiasiago-ar.com, 1 rigonidiasiago-usa.com, 1 @@ -124228,7 +124170,6 @@ rileystar.com, 1 rilish.cf, 1 rillet.com, 0 -rilretg.com, 1 rim-kardzhali.bg, 1 rim-kardzhali.org, 1 riman.tk, 1 @@ -124237,6 +124178,7 @@ rimessaggio.it, 1 rimetsu.com, 1 rimin.moe, 1 +riminghuts.com, 1 riministreet.com, 0 riminitoday.it, 1 rimo.site, 1 @@ -124420,7 +124362,6 @@ ritual.com, 1 ritual.ml, 0 rituelamour.com, 1 -ritunewasser.ch, 1 ritus.md, 1 ritzlux.com.tw, 1 riusma.com, 1 @@ -124476,7 +124417,7 @@ rivmedia.co.uk, 1 rivolta.tk, 1 rivus.net, 1 -riwaya.co.uk, 0 +riwaya.co.uk, 1 riweco.ga, 1 rix.ninja, 1 rixcloud.moe, 1 @@ -124537,7 +124478,6 @@ rmbs.org, 1 rmc-clinic.ru, 1 rmcbs.de, 1 -rmcinsuranceservices.com, 1 rmconsulting.com, 1 rmdb.tk, 1 rmdhnreza.my.id, 1 @@ -124623,6 +124563,7 @@ roastrepublic.de, 1 rob006.net, 1 robandjanine.com, 1 +robarbeauty.com, 1 robaxin750mg.ml, 1 robben.io, 1 robbertt.com, 0 @@ -124765,6 +124706,7 @@ rocabot.ddns.net, 1 rocahub.org, 1 roccasemijoias.com.br, 1 +roccoseuropeangarage.com, 1 rochcloud.cf, 1 rochediagram.com, 1 rochesterglobal.com, 1 @@ -124952,7 +124894,6 @@ rogaineforwomen.ga, 1 rogalcraigtaylor.com, 1 rogard.fr, 0 -rogarden.ro, 1 roge.pw, 1 rogeiro.net, 1 rogell.tk, 1 @@ -124976,7 +124917,6 @@ rogue-e.xyz, 1 rogue.pw, 1 roguecoder.net, 1 -roguefortgame.com, 0 roguelicious.com, 1 roguenation.space, 1 roguenetworks.me, 1 @@ -124985,7 +124925,6 @@ roguetech.ca, 1 roguevalleywinecountry.com, 1 rohal.tk, 1 -rohanbassett.com, 0 rohansingh.cf, 1 rohde.de, 0 rohedaten.de, 1 @@ -125052,6 +124991,7 @@ rollerwarehouse.com, 1 rolleyes.org, 1 rollforadventure.com.au, 1 +rolling.bike, 1 rollingbarge.com, 1 rollingcouchapp.com, 1 rollinghillsestates.gov, 1 @@ -125070,7 +125010,6 @@ rolstoelappartementen.tk, 1 roltech.ru, 1 rolzzandik.cf, 1 -roma-lindenhof.de, 0 roma-servizi.it, 1 romab.com, 1 romadiluna.band, 0 @@ -125089,6 +125028,7 @@ romandaphotography.com, 1 romanglos.de, 1 romania-film.ml, 1 +romania24.ro, 1 romaniacompany.com, 1 romanian.cam, 1 romanistaweb.it, 1 @@ -125124,7 +125064,6 @@ romatrip.it, 1 rombarte.pl, 1 romcom.info, 1 -romdrop.com, 1 rome-airport.net, 1 rome.tools, 1 romea.cz, 1 @@ -125145,7 +125084,6 @@ romo-holidays.de, 1 romo-holidays.dk, 1 romspedia.com, 1 -romtex.co.uk, 1 romun.net, 1 romy.tw, 1 ronaldcantor.com, 1 @@ -125175,6 +125113,7 @@ ronomon.com, 1 ronsamazingstories.com, 1 ronthemonkey.com, 1 +ronza.us, 1 ronzertnert.xyz, 1 roobet.com, 1 roodarvasi.ir, 1 @@ -125255,7 +125194,6 @@ rootedwellnessot.com, 1 rooter.group, 1 rootergroupinc.ca, 1 -rootie.de, 1 rootingpalace.tk, 1 rootlair.com, 1 rootless.ga, 1 @@ -125272,6 +125210,7 @@ roots.io, 1 rootsandrain.com, 1 rootsbar.fr, 0 +rootsindia.com, 1 rootsinmadrid.tk, 1 rootsland.de, 1 rootsland.net, 1 @@ -125287,6 +125226,7 @@ rop.cx, 1 ropd.info, 1 ropesmart.com, 1 +ropo.uk, 1 roquebrunesurargens-tourisme.fr, 1 roques.tk, 1 rorelseprojektet.se, 1 @@ -125297,7 +125237,6 @@ rosabrasiv.ga, 1 rosacosmos.tn, 1 rosaflorbijoux.com.br, 1 -rosakkreditatsiya-forum.ru, 1 rosalinda.cl, 1 rosalindturner.co.uk, 1 rosalopezcortes.tk, 1 @@ -125339,7 +125278,6 @@ rosesanderslaw.com, 1 roset-moebel.de, 1 rosetiger.life, 1 -rosettapeters.com, 0 rosetteromance.tk, 1 rosetwig.ca, 1 rosevalleyfolk.com, 1 @@ -125350,6 +125288,7 @@ rosewebdesignstudio.uk, 1 rosfan.by, 1 rosgenea.ru, 1 +roshanrsivakumar.com, 0 roshiya.co.in, 1 roshmed.com, 1 roshtech.co.ke, 1 @@ -125492,7 +125431,6 @@ routemates.tk, 1 router24.info, 1 routerclub.ru, 1 -routeto.com, 1 routevanverzoening.nl, 1 rouwcentrumterheide.be, 1 rouxb.in, 1 @@ -125503,7 +125441,6 @@ roverkob.dk, 1 rovetf.tk, 1 rovezzano.tk, 1 -rovian.ua, 1 rovid.link, 1 rovin.tk, 1 rovino.es, 1 @@ -125590,7 +125527,6 @@ royalgardens.no, 1 royalgdeluxe.al, 1 royalgrandpalace.th, 1 -royalgrandshades.com, 1 royalgroup.msk.ru, 1 royalhosting.ch, 1 royalkidspleven.bg, 1 @@ -125603,6 +125539,7 @@ royaloz.ma, 1 royalpainters.co, 1 royalpalmbeachfl.gov, 1 +royalpalmsdubai.com, 1 royalpanda.com, 1 royalrace.tk, 1 royalreporting.ca, 1 @@ -125623,7 +125560,6 @@ royaumesoublies.com, 1 roycampbell.tk, 1 royceandsteph.com, 1 -roycestars.com, 1 roycewilliams.net, 1 royger.tk, 1 royoy.com, 1 @@ -125645,6 +125581,11 @@ rozprodat.cz, 1 rozsvitsvet.cz, 1 roztilefona.net, 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 @@ -125708,6 +125649,8 @@ 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 @@ -125746,11 +125689,9 @@ rsml.co.uk, 1 rsng.com, 1 rspevents.ro, 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 @@ -125885,6 +125826,7 @@ rubens.cloud, 0 rubensalgado.com, 1 rubenschulz.nl, 1 +rubenshotel.com, 1 rubenshuis.be, 1 rubenslikkarchive.com, 1 rubensteinphotography.com, 1 @@ -125987,7 +125929,6 @@ rugspa.ie, 1 rugugu.jp, 1 ruha.co.in, 1 -ruhdental.com, 1 ruhi.pk, 1 ruhigehand.de, 1 ruhimustafa.tk, 1 @@ -125998,6 +125939,7 @@ ruhrpott-media.com, 1 ruhrpott.rodeo, 1 rui-vet.com, 1 +ruiandrade.pt, 1 ruihuabao.com.cn, 1 ruileal.pt, 1 ruileitao.pt, 1 @@ -126010,7 +125952,6 @@ ruiruigeblog.com, 1 ruisai.org, 1 ruitersportbak.nl, 1 -ruixin.org, 1 ruja-pass.ddnss.de, 1 rujbin.ddns.net, 1 rukhaiyar.com, 1 @@ -126047,9 +125988,9 @@ rumoclock.dk, 1 rumreader.com, 1 rumtaste.com, 1 -rumusbilangan.com, 1 run-it-direct.co.uk, 1 run.cz, 1 +runa.io, 1 runagain.ch, 0 runalyze.com, 1 runame.ml, 1 @@ -126106,6 +126047,7 @@ runrun.es, 1 runrun.sk, 0 runschrauger.com, 1 +runsli.com, 1 runteller.com, 1 runvs.io, 1 ruobiyi.com, 0 @@ -126236,6 +126178,7 @@ rustup.rs, 1 rustwood.fun, 1 rusty44.com, 1 +rustypp.com, 1 rustyrambles.com, 0 rustytub.com, 1 rusunion.org, 1 @@ -126332,8 +126275,10 @@ rxcarbon.com, 1 rxcom.net, 1 rxhill.com, 1 +rxkids.org, 1 rxperiusdata.com, 1 rxphoto.com, 1 +rxsecurestores.com, 1 rxxx.ml, 1 rya.nc, 1 ryabinushka.tk, 1 @@ -126401,6 +126346,7 @@ ryois.me, 1 ryois.net, 1 ryona.agency, 1 +ryongyon.com, 1 rys.pw, 1 rythm.es, 1 ryu-ga-gotoku-audition.com, 1 @@ -126473,8 +126419,7 @@ s1128.com, 1 s1l3nt.org, 1 s1mplescripts.de, 1 -s1ris.org, 1 -s2.coach, 1 +s2.coach, 0 s20121946.ml, 1 s26s.com, 1 s2i.ch, 0 @@ -126525,7 +126470,6 @@ s9728.co, 1 s9h.cn, 0 sa-blog.net, 1 -sa-casino.live, 0 sa-mp.me, 1 sa-mp.ro, 1 sa-stu.com, 1 @@ -126589,6 +126533,7 @@ saborcaribe.tk, 1 saboresdamontanha.com.br, 1 sabranie.com, 1 +sabriburhanoglu.com, 1 sabrina-auer.tk, 1 sabrinajoias.com, 1 sabrinajoias.com.br, 1 @@ -126629,7 +126574,6 @@ sackmesser.ch, 1 saco.tech, 1 sacodealegria.com, 1 -sacolaotriangulo.com.br, 1 sacprincesse.com, 1 sacralis.com, 1 sacralrp.com, 1 @@ -126676,6 +126620,7 @@ 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 @@ -126751,8 +126696,6 @@ safeo.fr, 1 safeocs.gov, 1 safepassvpn.com, 0 -safeplay.co, 1 -safeplayground.net, 1 safer-software.tk, 1 safera.com, 1 safercar.gov, 1 @@ -126775,6 +126718,7 @@ safestayok.gov, 1 safestreets.cf, 1 safetables.ga, 1 +safetgroup.ie, 1 safethishome.com, 1 safetica.lt, 1 safetoopen.com, 1 @@ -126853,7 +126797,6 @@ sagradamadre.hu, 1 sagradobyme.cl, 1 sagsaga.org, 1 -saguaro.care, 1 saguarocc.com, 1 sahabatnesia.com, 1 sahabatsawit.com, 1 @@ -126875,6 +126818,7 @@ sahih.nl, 1 sahilbahl.com, 1 sahilten.com, 1 +sahinlegalconsultancy.co.uk, 1 sahinozgenhukuk.com, 1 sahipleniyorum.com, 1 sahkotyot.eu, 1 @@ -126939,7 +126883,6 @@ saintanthonylakin.org, 1 saintaugustineschool.tk, 1 saintbernardpetcare.com, 1 -saintbrunofootball.fr, 1 saintefoy-tarentaise.fr, 1 saintereso.tk, 1 sainteugenechurch.net, 1 @@ -126950,6 +126893,7 @@ sainthedwig-saintmary.org, 1 sainthelena-centersquare.net, 1 sainthelenaparish.net, 1 +sainthelenas.org, 1 saintisidorecyo.com, 1 saintjamestheapostle.org, 1 saintjohn-bocaraton.com, 1 @@ -126986,13 +126930,9 @@ sairlerimiz.tk, 1 sairus.fr, 1 saisecure.net, 1 -saiserve.xyz, 1 saiserver.online, 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 @@ -127045,6 +126985,7 @@ sakuraspanj.com, 1 saladgo.id, 1 saladin.vn, 1 +salahnos.com.ar, 1 salalfoundation.ca, 0 salamanders.tk, 1 salamence.tk, 1 @@ -127209,7 +127150,7 @@ saltedfish.network, 1 saltedfishes.com, 1 saltedge.com, 1 -saltedpasta.com, 0 +saltedpasta.com, 1 saltercane.com, 0 saltlakecounty.gov, 1 saltlakehealth.gov, 1 @@ -127233,6 +127174,7 @@ saludcarbajal.com, 1 saludnutrivida.com, 1 saluels.servemp3.com, 1 +saluki.cloud, 1 salukinet.tk, 1 salunganogroup.com, 1 salus-cm.care, 1 @@ -127260,6 +127202,7 @@ salzerperu.com, 1 salzmann.solutions, 1 sam-football.fr, 1 +sam-ni.com, 1 sam-wells.be, 1 sam.gov, 1 sam66.cc, 1 @@ -127282,6 +127225,7 @@ samarthtyagi.tk, 1 samatva-yogalaya.com, 1 samba.org, 1 +sambac.net, 1 sambeso.net, 1 sambi.se, 1 sambot22.tk, 1 @@ -127432,6 +127376,7 @@ sanalikaforum.tk, 1 sanandreasstories.com, 1 sanantoniolocksmithtx.com, 1 +sanaorganizasyon.com, 1 sanapaino.fi, 1 sanasport.at, 1 sanasport.bg, 1 @@ -127479,7 +127424,6 @@ sanderpoppe.com, 1 sanderscreditrepair.com, 1 sandersgaleandrussell.com, 1 -sandersmontalto.com, 1 sandersonfarms.com, 1 sanderspies.com, 1 sandervanderstap.nl, 1 @@ -127552,8 +127496,6 @@ sandybigboobs.com, 1 sandybigboobs.net, 1 sandycreekrvpark.com, 1 -sandykeymedical.com, 1 -sandyspringadventurepark.org, 1 sandyvazquez.com, 1 sanemind.de, 1 sanetschka.tk, 1 @@ -127567,13 +127509,11 @@ 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 @@ -127730,7 +127670,6 @@ santo.fi, 1 santodelgiorno.it, 1 santong.tk, 1 -santons-fouque.fr, 1 santorinidress.com, 1 santoscarmelitas.tk, 1 santosdecordoba.tk, 1 @@ -127738,7 +127677,7 @@ santoskhoury.com, 1 santral.org.tr, 1 santsadurni.cat, 1 -santswebdesign.com, 1 +santswebdesign.com, 0 santugon.tk, 1 santv.cc, 0 sanufreshve.com, 1 @@ -127747,7 +127686,6 @@ sanweb.info, 1 sanyangwood.shop, 1 saochang.com, 1 -saojudastadeu.edu.br, 1 saolucasimagem.com.br, 1 saoneth.pl, 1 saopaulofc.com.br, 1 @@ -127783,7 +127721,7 @@ saponaria.com, 1 sapotech.de, 1 sapphi.st, 1 -sapphic.nl, 1 +sapphic.nl, 0 sapphic.site, 1 sapphirebet.com, 1 sapphireblinds.com.au, 0 @@ -127816,7 +127754,7 @@ sarah-huenten.de, 1 sarah-jane.nl, 1 sarahbaker.co.nz, 1 -sarahbowling.org, 1 +sarahbowling.org, 0 sarahgriswold.com, 1 sarahjaneethan.co.uk, 1 sarahjaneredmond.com, 1 @@ -127857,6 +127795,7 @@ saratovnews.ml, 1 saratovtime.tk, 1 sarayeketabesoti.ir, 1 +sarayruiz.es, 1 sarbarhetsskanning.se, 1 sarbash.ee, 1 sarbel.tk, 1 @@ -127937,6 +127876,7 @@ sascorp.es, 1 sasctg.com, 1 sash.pw, 1 +sasha-escort-frankfurt.com, 1 sashabognibov.tk, 1 sashaclothing.tk, 1 sashakrasnoyarsk.tk, 1 @@ -127988,6 +127928,7 @@ satimagingcorp.com, 1 satindolls.tk, 1 satinn.pl, 1 +satinwood.com.au, 1 satirelabs.com, 1 satiscation.com, 1 satisfactory-calculator.com, 1 @@ -128188,7 +128129,6 @@ saxynele.tk, 1 sayany.tk, 1 sayax.com.tr, 1 -saybecraft.ru, 1 saybrus.partners, 1 saybyebugs.com, 1 saydj.tk, 1 @@ -128216,7 +128156,7 @@ sb.sb, 1 sb0.io, 1 sba.com.au, 1 -sba4u.com, 1 +sba4u.com, 0 sba7a.loans, 1 sbabeshin.tk, 1 sbacorporation.it, 1 @@ -128230,7 +128170,6 @@ sbcountyarc.gov, 1 sbcountyatc.gov, 1 sbeech.uk, 0 -sbequineevac.org, 1 sber-solutions.kz, 1 sber-solutions.ru, 1 sber.games, 1 @@ -128352,7 +128291,6 @@ scanningpens.com, 1 scanpay.dk, 1 scanprice.us, 1 -scansec.com.br, 1 scansnus.com, 1 scantower.io, 1 scanutracker.com, 1 @@ -128421,10 +128359,11 @@ scenicbyways.info, 1 scentlab.md, 1 scentlab.space, 1 +scento.com, 1 scepticism.com, 1 scers.gov, 1 scesc.uk, 1 -scfssp.it, 1 +scfssp.it, 0 scgsustainability.com, 1 sch44r0n.de, 1 schaafenstrasse.koeln, 1 @@ -128487,7 +128426,6 @@ schenectadycountyny.gov, 1 schenkel.tk, 1 schenkes.de, 0 -schepman.org, 1 scherfke.de, 1 schermen-en.nl, 1 schertztx.gov, 1 @@ -128552,6 +128490,7 @@ 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 @@ -128604,6 +128543,7 @@ schody-rozycki.pl, 1 schoenheitsop.com, 1 schoenstatt-fathers.link, 1 +schoenstatt-fathers.us, 1 schoenstatt.link, 1 schoental.de, 1 schoepski.de, 1 @@ -128783,7 +128723,7 @@ schwerkraftlabor.de, 1 schwertkriege.de, 1 schwertshop.de, 1 -schwesterseiten.com, 0 +schwesterseiten.com, 1 schwienbacher-karl.it, 1 schwifty.cloud, 1 schwiha.de, 1 @@ -128796,7 +128736,6 @@ sci-internet.tk, 1 sci-rjb.fr, 1 sci.com, 1 -sciagebeton.net, 1 sciartel.ru, 1 scias.com, 1 scib.tk, 1 @@ -128876,6 +128815,8 @@ scn9a.com, 1 scnet.co.za, 1 scnow.com, 1 +scnsoft.com, 1 +scnsoft.de, 1 scodeno.vn, 1 scoebg.org, 1 scoffable.com, 1 @@ -128921,7 +128862,7 @@ scorpia.co.uk, 1 scorpiogroup.net, 1 scorpiomarine.co.in, 1 -scorpioncomputers.nl, 1 +scorpioncomputers.nl, 0 scorpiongames.tk, 1 scorpions-realm.tk, 1 scorpions.tk, 1 @@ -129052,6 +128993,7 @@ scrippsnews.com, 1 script-sign.com, 1 script.google.com, 1 +scriptablesolutions.com, 1 scriptamanent.org, 1 scripter.co, 1 scriptline.ga, 1 @@ -129133,10 +129075,10 @@ sdb.aero, 1 sdbc.com, 1 sdbehavioralhealth.gov, 1 +sdbidentity.nl, 1 sdc-uae.ae, 1 sdcardrecovery.de, 1 sdcargo.net, 1 -sdcitytimes.com, 1 sdeb.org, 1 sdebitati.it, 1 sdeu.fr, 1 @@ -129179,7 +129121,6 @@ sdsmanagement.me, 0 sdsmt.engineering, 1 sdstack.com, 1 -sdsucollegian.com, 1 sduconnect.nl, 0 sdut.gq, 1 sdvv.nl, 1 @@ -129297,7 +129238,6 @@ seasonsof.berlin, 1 seaspecsdals.com, 1 seat61.com, 1 -seatbeltpledge.com, 1 seating.dynv6.net, 1 seatours.co.uk, 1 seatrandiscovery.com, 1 @@ -129404,6 +129344,7 @@ secnews.gr, 1 secnode.xyz, 1 secolve.com, 1 +secom.one, 1 secomea.com, 1 second-life-partner-ichien.com, 1 secondchancejobsforfelons.com, 1 @@ -129427,6 +129368,7 @@ secret-queen.ga, 1 secret-queen.ml, 1 secret.garden, 1 +secret4.eu, 1 secretagentclub.tk, 1 secretar.is, 1 secretary-schools.com, 1 @@ -129444,6 +129386,7 @@ secretnerdsmartygames.com, 1 secretofanah.com, 1 secretosbolivia.tk, 1 +secretprovider.com, 1 secrets-marketing.tk, 1 secretsbynature.nl, 1 secretsdujeu.com, 1 @@ -129452,6 +129395,7 @@ secretworld.ml, 1 secretzone.bg, 1 secrium.io, 1 +secrt.ca, 1 secs.london, 1 secta.cf, 1 secteam.ee, 1 @@ -129480,6 +129424,7 @@ secundity.com, 1 secundity.nl, 1 secunm.org, 1 +securaa.io, 1 securai.de, 1 securapilot.com, 1 secure-automotive-cloud.com, 1 @@ -129493,7 +129438,6 @@ secure.advancepayroll.com.au, 1 secure.facebook.com, 0 secure.wang, 1 -secureacces.fr, 1 secureapplicationaccess.ca, 1 secureapplicationaccess.com, 1 secureauth.com, 1 @@ -129542,7 +129486,6 @@ securite.jp, 1 securiteincendie.fr, 1 securitelandry.com, 1 -securitepubliqueaem.com, 1 securiti.ai, 1 securitum.pl, 1 security-24-7.com, 1 @@ -129563,6 +129506,7 @@ securitybrief.co.nz, 1 securitybrief.co.uk, 1 securitybrief.com.au, 1 +securitybrief.ie, 1 securitybrief.in, 1 securitybrief.news, 1 securitydelta.nl, 1 @@ -129609,6 +129553,7 @@ sedico.mx, 1 sedicomm.com, 0 sedigit.com, 1 +sedintechnologieshq.com, 1 sedirector.net, 1 sedkisghairi.com, 0 sedky.net, 1 @@ -129618,9 +129563,7 @@ sedro-woolley.gov, 1 seduxury.com, 1 seduzironline.com.br, 1 -see-me.co, 1 see-now.co, 1 -see-you.co, 1 see.you, 1 seearmenia.tk, 1 seeaway.com.br, 1 @@ -129629,6 +129572,7 @@ seecdn.com, 1 seecdn.net, 1 seecustom.com, 1 +seedance2.live, 1 seedandleisure.co.uk, 1 seedbox.fr, 1 seedbox.hosting, 1 @@ -129682,7 +129626,6 @@ seewines.com, 1 seexw.com, 1 sef.co.za, 1 -sefan.ru, 1 sefaratvisa.com, 1 sefareshpardeh.com, 0 seferleri.net, 1 @@ -129696,6 +129639,7 @@ seg-tox.org, 1 seg.do, 1 sega-play.online, 1 +sega73.hu, 1 segamastersystem.tk, 1 segaretro.org, 1 segaskets.com.au, 1 @@ -129716,7 +129660,6 @@ segurancaresidencialbh.com.br, 1 segurdatacr.com, 1 segurico.cz, 1 -seguridad-informacion.com, 1 seguridadconsumidor.gov, 1 seguridadsistem.tech, 1 seguridadsistemtienda.tech, 1 @@ -129735,7 +129678,6 @@ segv.fi, 1 sehat-solusi-makmur.com, 1 sehati.cafe, 1 -sehatyab.com, 0 sehbasarwar.com, 1 seheyah.me, 1 sei-yu.net, 1 @@ -129752,7 +129694,6 @@ seil.de, 1 seilbahntechnik.net, 1 seiler-ds.com, 1 -seilergeodrones.com, 1 seilerinst.com, 1 seilgold.de, 1 seimo.cn, 1 @@ -129788,6 +129729,7 @@ sejambemvindosaofuturo.com.br, 1 sejfzycia.pl, 1 sejie80.com, 1 +sejutaproperti.com, 1 sek.ai, 0 seka-ru.com, 1 sekainokokki.jp, 1 @@ -129857,6 +129799,7 @@ selfdefinition.tk, 1 selfelec.be, 1 selfemployed.ga, 1 +selfguide.com, 1 selfici.com, 1 selfici.cz, 1 selfiehome.cz, 1 @@ -129877,6 +129820,7 @@ selkiemckatrick.com, 1 selkirkelementary.com, 1 sell2orbit.com, 1 +sell4service.com, 1 sellajoch.com, 1 sellbit.io, 1 sellcoins.top, 1 @@ -129901,6 +129845,7 @@ sello.com, 1 sellocdn.com, 1 selloenseco.com, 1 +selloqr.com, 1 sellorbuy.uk, 1 sellorbuy.us, 1 sellphotos.tk, 1 @@ -129971,6 +129916,7 @@ semiotical.com, 0 semiotika.tk, 1 semira.tk, 1 +semiramida-rieltor.ru, 1 semirben.de, 1 semiretire.ga, 1 semisupervised.com, 1 @@ -129981,8 +129927,8 @@ 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 @@ -130070,6 +130016,7 @@ seniorem.eu, 1 seniorhelpers.com, 1 seniorhost.net, 1 +seniorliving-northbend.com, 1 seniorlivinginvestments.eu, 1 seniormanager.cz, 1 seniornavigator.org, 1 @@ -130083,6 +130030,7 @@ sennik.tk, 1 senoctarsoft.tk, 1 senok.ml, 1 +senomix.com, 1 senooken.jp, 1 senor-cheapo.nl, 1 senork.de, 1 @@ -130213,11 +130161,9 @@ seoified.com, 1 seoinc.com, 1 seojaguar.tk, 1 -seojuice.it, 1 seokatka.tk, 1 seolabuitest.azurewebsites.net, 1 seoline.cf, 1 -seoline.ro, 1 seolinkstore.com, 1 seolister.cf, 1 seolisting.cf, 1 @@ -130226,7 +130172,6 @@ seolord.cf, 1 seomag.tk, 1 seomap.ir, 1 -seomarketing.bg, 1 seomaton.com, 1 seomaton.org, 1 seomaxion.com, 1 @@ -130269,14 +130214,12 @@ seosprint.gq, 1 seostrit.cf, 1 seostrit.tk, 1 -seosuccor.com, 1 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 @@ -130336,7 +130279,6 @@ serasa.com.br, 1 serasaexperian.com.br, 1 seratblog.ga, 1 -seratdl.ir, 1 serban.cv, 1 serban.ro, 1 serbanpaun.ro, 1 @@ -130494,7 +130436,7 @@ serverdragon.site, 1 serveretail.com, 1 serverhost.no, 1 -serverhuis.nl, 1 +serverhuis.nl, 0 serverhunter.com, 1 serverion.ga, 1 serverka.tk, 1 @@ -130573,7 +130515,7 @@ servicioskoinonia.org, 1 serviciosprevisionfuneraria.com, 1 serviciotecnicoencomputacion.com.ve, 0 -servier.com, 1 +servier.com, 0 servietten-grosshandel.at, 1 servietten-grosshandel.be, 1 servietten-grosshandel.ch, 1 @@ -130657,19 +130599,22 @@ 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 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 @@ -130743,6 +130688,7 @@ sewing-world.ru, 1 sewingtales.com, 0 seworld.ml, 1 +sewtracker.com, 1 sex-test.com, 1 sex-vergleich.com, 1 sex5.com, 1 @@ -130753,7 +130699,6 @@ sexblag.club, 1 sexcamexpert.com, 1 sexcamsbay.com, 1 -sexdel.com, 1 sexdocka.nu, 1 sexdollg.com, 1 sexedquickies.com, 1 @@ -130915,6 +130860,8 @@ sfg-net.org, 1 sfg-nordholz.de, 1 sfhp.org, 1 +sfi.org.pl, 1 +sfi.pl, 1 sfile.eu, 1 sfilm.cz, 1 sfinance.cz, 1 @@ -131003,7 +130950,6 @@ sgutranscripts.org, 1 sh-heppelmann.de, 1 sh-network.de, 1 -sh0rt.in, 1 sh0rt.zone, 1 sh0u.jp, 1 sh0uld.net, 1 @@ -131041,7 +130987,6 @@ shadowlurker.com.au, 1 shadowmas.ddns.net, 1 shadowmorph.info, 1 -shadowping.com, 1 shadowranks.com, 1 shadowsing.com, 1 shadowsocks.ac, 1 @@ -131076,7 +131021,6 @@ shag-shag.ru, 1 shahadpharma.com, 1 shahar.cc, 0 -shaharklamka.com, 1 shaheedirfani.tk, 1 shaheednawazirfani.tk, 1 shahidafkar.tk, 1 @@ -131113,6 +131057,7 @@ shakespeareans.net, 1 shakespearesolutions.com.au, 0 shakesprimer.tk, 1 +shakibul.com, 1 shakingthehabitual.com, 1 shaknews.tk, 1 shakraphix.tk, 1 @@ -131151,7 +131096,6 @@ shanghaimineral.com, 0 shangobud.com, 1 shangren.lu, 1 -shangrenlu.cn, 1 shangyu.com.tw, 1 shanhay.tk, 1 shaniainternational.tk, 1 @@ -131198,7 +131142,6 @@ shareabc.vip, 1 shareapollo.com, 1 sharebot.ga, 1 -shareby.cam, 0 sharedalbumsf.com, 1 sharedgoals.co, 1 sharedhealthmb.ca, 1 @@ -131264,7 +131207,6 @@ sharpcranehire.com.au, 1 sharpe-practice.co.uk, 1 sharpe.systems, 1 -sharpgalapagos.jp, 1 sharpiesscrubs.tk, 1 sharpletters.net, 0 sharpmetals.com, 1 @@ -131364,6 +131306,7 @@ shehata.com, 1 sheilacantone.it, 1 sheilasdrivingschool.com, 1 +sheilasign.ch, 1 shek.zone, 1 shelburnepdvt.org, 1 shelbycounty-il.gov, 1 @@ -131390,8 +131333,8 @@ shellwhite.tk, 1 shelly-forum.com, 1 shelma.tk, 1 +shelt.com, 1 shelterislandtown.gov, 1 -sheltermap.de, 1 sheltieplanet.com, 1 sheltonvirtual.com, 1 shelvacu.com, 1 @@ -131468,7 +131411,6 @@ shia.dk, 1 shiawasedo.co.jp, 1 shibahara-shika.com, 1 -shibainu.com.br, 1 shibakery.com, 1 shibayan.jp, 1 shibbydex.com, 1 @@ -131484,18 +131426,19 @@ 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 @@ -131534,6 +131477,8 @@ shimo.im, 1 shinbukan-katorishintoryu.org, 1 shindocuba.tk, 1 +shine.studio, 0 +shineads.in, 1 shineiberia.tv, 1 shineindiarktutorial.ml, 1 shineleds.ga, 1 @@ -131560,7 +131505,6 @@ shinta.ro, 1 shintoism.com, 1 shiny.gg, 1 -shinycleankitchen.com, 1 shinyhappydoggy.com, 0 shinyoko-saisyuusyou.com, 1 shinyokumiai.or.jp, 1 @@ -131569,11 +131513,11 @@ 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 @@ -131593,7 +131537,6 @@ shippingyourworld.com, 1 shipshewana.gov, 1 shipsparrot.com, 1 -shiptest.net, 1 shiptron.com, 1 shiqi.ca, 1 shiqi.lol, 1 @@ -131734,7 +131677,6 @@ 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 @@ -131760,7 +131702,6 @@ shopdullestowncenter.com, 1 shopera.ch, 1 shopfazz.com, 1 -shopforcovers.com, 1 shopforeverproducts.com, 1 shopfskmall.com, 1 shopfully.com.au, 1 @@ -131799,6 +131740,7 @@ 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 @@ -131954,7 +131896,6 @@ shoppingworth.ga, 1 shoppingyankee.ga, 1 shoppsb.com, 1 -shoppx.com, 1 shoppyad.com, 1 shopreme.com, 0 shopshap.ru, 1 @@ -132006,6 +131947,7 @@ shortr.li, 1 shortstackcustoms.com, 1 shortstream.cz, 1 +shorttandemrepeats.com, 1 shortwave.com, 1 shortwave.tk, 1 shoruihokan.com, 1 @@ -132096,6 +132038,7 @@ shrinidhiclinic.in, 1 shrinker.tk, 1 shrinkhub.com, 1 +shrinkjson.com, 1 shrinkmydoc.com, 1 shroomery.org, 1 shropshireautonomy.co.uk, 1 @@ -132142,9 +132085,9 @@ shulman.tk, 1 shulyaka.org.ru, 1 shuma.ga, 1 +shumka61.ru, 1 shumnyj-istochnik.tk, 1 shumov.tk, 1 -shunbao.com, 1 shunlian.live, 1 shunlian.video, 1 shunliancloud.cn, 1 @@ -132307,6 +132250,7 @@ siega.pl, 1 siegemund-frankfurt.de, 1 siegfried.com.pe, 1 +siegfriedandjensen.com, 1 sieglercars.ch, 1 siegprod.tk, 1 sieh.es, 0 @@ -132355,6 +132299,7 @@ sigabrt.org, 1 sigateway.com, 1 sigb.sh, 1 +sigecloud.com.br, 1 sigedtour.gov.bf, 1 sigep.org, 1 sigfridlinden.se, 1 @@ -132375,6 +132320,7 @@ sigint.pw, 0 sigio.nl, 1 sigma-apartments.com, 1 +sigma-lozenets.com, 1 sigma957.net, 1 sigmacomputers.ga, 1 sigmacomputing.com, 1 @@ -132401,6 +132347,7 @@ signage.red, 1 signal.pm, 1 signal34.com, 1 +signalbee.trade, 1 signaldc.com, 1 signaldp.com, 0 signalmaps.co.uk, 1 @@ -132436,7 +132383,6 @@ signitysolutions.com, 1 signix.net, 1 signmore.com, 1 -signmycode.com, 1 signora.gr, 1 signpath.io, 0 signrequest.com, 1 @@ -132460,6 +132406,7 @@ sigsync.com, 1 sigterm.no, 1 sigterm.sh, 1 +sigurnosnisistemi.rs, 1 sigurnost.online, 1 siguza.net, 1 sigvik.ru, 1 @@ -132528,6 +132475,7 @@ silkroad-iraq.com, 1 silkroad.com, 1 sillasdegamer.es, 1 +silleiro.com, 1 sillisalaatti.fi, 1 silly-billy.org, 1 sillysnapz.co.uk, 1 @@ -132535,10 +132483,10 @@ silodrome.com, 1 siloportem.eu, 1 siloportem.net, 1 +silosset.com, 1 silqueskineyeserum.com, 1 silsha.me, 1 silta.tk, 1 -silueta21.com, 1 silv.tk, 1 silvalli.com, 0 silver-fenrir.cn, 1 @@ -132557,7 +132505,6 @@ silvergoldbull.bg, 1 silvergoldbull.bj, 1 silvergoldbull.by, 1 -silvergoldbull.ca, 1 silvergoldbull.cl, 1 silvergoldbull.cm, 1 silvergoldbull.cn, 1 @@ -132567,7 +132514,6 @@ 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 @@ -132668,12 +132614,12 @@ sim4seed.org, 1 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 @@ -132849,13 +132795,14 @@ simply-pattinson.tk, 1 simply-pdf.de, 1 simply-premium.com, 1 +simply.com, 1 simply.scot, 1 simply2020.com, 1 simplybrave.net, 1 simplycharlottemason.com, 1 simplychocolate.com, 1 simplycloud.de, 1 -simplycodes.com, 1 +simplycodes.com, 0 simplydonelegal.com, 1 simplydonot.com, 1 simplydonut.com, 1 @@ -132880,7 +132827,6 @@ simplyup.io, 1 simplyveritext.com, 1 simplyvoting.com, 1 -simpplr.com, 1 simprosuite.com, 1 simpson.edu, 1 simpsoncountyky.gov, 1 @@ -133002,6 +132948,7 @@ singingwillow.nl, 1 singita.com, 1 single-in-stuttgart.de, 1 +single-invoice.co, 1 singlecellcourse.org, 1 singleeuropeansky.aero, 1 singlehandedsailing.tk, 1 @@ -133048,6 +132995,7 @@ sinopec.com.ua, 1 sinopx.cf, 1 sinoscandinavia.se, 1 +sinot.info, 1 sinotouch.com, 1 sinpermiso.info, 1 sinquin.eu, 1 @@ -133271,6 +133219,7 @@ sitesweb.gq, 1 sitetalk.tk, 1 sitetuners.com, 1 +siteu.nl, 1 siteviseagency.com, 1 siteweb-seo.fr, 1 sitgesbeachhouse.com, 1 @@ -133278,10 +133227,10 @@ sithijaya.tk, 1 sithmanifest.com, 1 sitinjau.com, 1 -sitisnab.kz, 1 sitiwebferrara.it, 1 sitnik.ru, 1 sitnikov.ga, 1 +sito-online.ch, 1 sitra.fi, 0 sitting.bg, 1 sittogether.club, 1 @@ -133320,7 +133269,6 @@ sixstrings.tk, 1 sixtiesgroovemachine.com, 1 sixtiesgroovemachine.nl, 1 -sixyy.com, 1 siyahiblog.com, 1 siyako.com, 1 siyanie-clean.ru, 1 @@ -133331,6 +133279,7 @@ sizeunknown.de, 1 sizeunknown.net, 1 sizeunknown.org, 1 +sizle.co, 1 sizyff.fr, 1 sj-leisure.com, 1 sj27user.ru, 1 @@ -133386,6 +133335,7 @@ skachay-knighki.gq, 1 skachay-photo.gq, 1 skagen-feriebolig.dk, 1 +skaiciuoti.lt, 1 skaiman.ga, 1 skaitliukas.tk, 1 skakun.io, 1 @@ -133469,6 +133419,7 @@ skibikers.tk, 1 skiclub-hohenlimburg.de, 1 skid.church, 1 +skiddle.com, 1 skidka.by, 1 skidki-ru.cf, 1 skidkimira.ru, 1 @@ -133497,6 +133448,7 @@ skill.tk, 1 skill8.ro, 1 skillablers.com, 1 +skillai.hk, 1 skilldnsproc.com, 1 skillfloor.com, 1 skillmoe.at, 1 @@ -133538,7 +133490,6 @@ skinmodo.com, 1 skinna.mx, 1 skinnation.tk, 1 -skinneymedspa.com, 0 skino.cz, 1 skinonline.co.za, 1 skinport.com, 1 @@ -133559,7 +133510,7 @@ skiozarts.fr, 1 skip.re, 1 skipfault.com, 1 -skipify.com, 1 +skipify.com, 0 skippy.dog, 0 skipr.co, 1 skipr.ninja, 1 @@ -133597,6 +133548,7 @@ skmedia.ga, 1 skmsport.com, 1 skoander.com, 1 +skob.no, 1 skoda-im-dialog.de, 1 skodapower.tk, 1 skodapreowned.in, 1 @@ -133693,9 +133645,7 @@ sky-live.fr, 1 sky-motion.de, 1 sky-music.tk, 1 -sky-os.ru, 1 sky-wap.cf, 1 -sky2tours.com, 0 skyarch.net, 1 skybass.nl, 1 skybirch.com, 1 @@ -133728,6 +133678,7 @@ skydrive.live.com, 0 skye.vg, 1 skyeeverest.tk, 1 +skyello.com, 1 skyem.co.uk, 0 skyeng.ru, 1 skyeto.com, 1 @@ -133736,6 +133687,7 @@ skyfall.network, 1 skyfcu.org, 1 skyfibertech.com, 1 +skyflight.hr, 1 skyfpicture.tk, 1 skygame.tk, 1 skygates.tk, 1 @@ -133756,6 +133708,7 @@ skylightcreative.com.au, 0 skylightipv.com, 1 skyline.tw, 1 +skylineattractions.com, 1 skylinehk.org, 1 skylinehouse.ca, 1 skylinemail.tw, 1 @@ -133772,7 +133725,7 @@ skyminds.net, 1 skymkmk.com, 1 skymonk.tk, 1 -skynamo.com, 1 +skynamo.com, 0 skynet-research.us, 0 skynet.edu.kg, 1 skynet233.ch, 0 @@ -133783,12 +133736,12 @@ skynotify.co, 1 skyoceanblue.com, 1 skyoy.com, 0 +skypanic.com, 1 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 @@ -133798,19 +133751,29 @@ 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 @@ -133887,11 +133850,8 @@ 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 slathering.cf, 1 @@ -133964,7 +133924,6 @@ slemen.tk, 1 slepsluzbabeograd.org, 1 sletaem.ml, 1 -sletat.ru, 1 sletmo.com, 1 slev.tk, 1 slevermann.de, 0 @@ -134000,7 +133959,7 @@ slime5.com.tw, 1 slimed.cc, 1 slimer.com, 1 -slimgrafix.cz, 0 +slimgrafix.cz, 1 slimhost.com.ua, 0 slimpay.com, 1 slimspots.com, 1 @@ -134106,6 +134065,7 @@ slt24.de, 1 slubzcharakterem.pl, 1 sluciaconstruccion.com, 1 +slucky.de, 1 sluderno.org, 1 sludge.tk, 1 slugify.online, 1 @@ -134128,7 +134088,6 @@ slycegateway.com, 1 slycepay.com, 1 slycereporting.com, 1 -slymak.com, 1 slytigers.tk, 1 slyvon.com, 0 slzr.cloud, 1 @@ -134149,6 +134108,7 @@ smadav.ml, 1 smahelova.cz, 1 smajlovic.info, 1 +smaki-wsi.pl, 1 smaksbanken.no, 1 smalandscountryclub.tk, 1 small-blog.cf, 1 @@ -134161,6 +134121,7 @@ smallcraftadvisory.tk, 1 smallcubed.com, 1 smalldeveloper.ml, 1 +smalle-voet.de, 1 smallfarmersjournal.com, 1 smallfoot.tk, 1 smallingerland.nl, 1 @@ -134209,7 +134170,6 @@ 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 @@ -134222,6 +134182,7 @@ smart-profile.ro, 1 smart-travel.tk, 1 smart-tux.de, 1 +smart-vilp.com, 1 smart-wind.ru, 1 smart-zona.tk, 1 smartacademy.ge, 1 @@ -134260,7 +134221,6 @@ smartdeal.bg, 1 smartdigital.ga, 1 smarteco.tk, 1 -smartedukasi.co.id, 1 smartenspaces.com, 1 smarters-protv.com, 1 smarterskies.gov, 1 @@ -134327,6 +134287,7 @@ smartoctopus.art, 1 smartology.net, 1 smartoneclub.com, 1 +smartools.pro, 1 smartpanelsmm.com, 1 smartpatika.hu, 1 smartpheromones.com, 1 @@ -134389,7 +134350,6 @@ smashingconf.com, 0 smashingmagazine.com, 1 smashnl.tk, 1 -smashno.ru, 1 smatzone.in, 1 smavesto.de, 0 smb-analytics.pw, 1 @@ -134415,7 +134375,6 @@ sme-gmbh.net, 1 sme.sk, 1 smedata.sk, 1 -smedix.com, 1 smeetsengraas.com, 1 smekonferencie.sk, 1 smeli.ar, 1 @@ -134427,7 +134386,6 @@ smeso.it, 1 smeta.ml, 1 smetak.cz, 1 -smetana.pro, 1 smetbuildingproducts.com, 1 smeweb.com, 1 smeys.be, 1 @@ -134545,6 +134503,7 @@ smokybay.is, 1 smokymountaingames.org, 1 smokyshores.radio, 0 +smol.cool, 1 smolbotbot.com, 1 smolensk-i.ru, 1 smolensk-news.net, 1 @@ -134571,7 +134530,6 @@ smorgasblog.ie, 1 smoser.eu, 1 smotret.tv, 1 -smotrowrelated.com, 1 smousebros.com, 1 smpelec.fr, 0 smphysio.com.au, 1 @@ -134590,7 +134548,6 @@ sms1.ro, 1 sms72.tk, 1 smsaero.ru, 1 -smsalert.mobi, 1 smsalvand.tk, 1 smsappointment.com, 0 smsben.com, 0 @@ -134646,7 +134603,6 @@ snacktakos.gr, 1 snackworks.com, 1 snacky.nl, 1 -snad.org.sa, 1 snafu.cz, 1 snagator.com, 1 snail.observer, 1 @@ -134671,6 +134627,7 @@ snapnread.com, 1 snaps.io, 1 snapshades.com, 1 +snapshotreport.org, 1 snapware.tk, 1 snapworks.net, 1 snapzfs.com, 1 @@ -134702,7 +134659,7 @@ sneakynote.com, 1 sneakypaw.com, 1 sneed.company, 1 -sneedit.com, 0 +sneedit.com, 1 sneedit.de, 1 snegozaderzhatel.ru, 1 snehasish-chakraborty.com, 1 @@ -134716,6 +134673,7 @@ snelwebshop.nl, 1 snelwegzen.nl, 1 snem.tk, 1 +snep.uk, 1 snepflix.com, 1 snerith.com, 1 snesdev.com, 1 @@ -134737,10 +134695,10 @@ sniffing.gq, 1 sniffle.eu, 1 snikket.de, 1 +snipclip.me, 1 snipdrive.com, 1 snipettemag.com, 1 snipl.io, 1 -snipp.gg, 1 snipp.lol, 1 snippet.host, 1 snippet.ml, 1 @@ -134845,7 +134803,7 @@ soaplakewa.gov, 1 soapsspoilers.com, 1 soar-npc.org, 1 -soat.fr, 0 +soat.fr, 1 soax.com, 0 sobakasite.tk, 1 sobaki.tk, 1 @@ -134947,7 +134905,6 @@ socialtournaments.com, 0 socialtranslation.ga, 1 socialtrends.pl, 1 -socialutions.io, 1 socialwave.tk, 1 socialworklicensemap.com, 1 socialworkout.net, 1 @@ -134978,6 +134935,7 @@ socioscasino.com, 1 socious.io, 1 sociusian.gq, 1 +sockscap64.com, 1 socksfromholland.com, 1 socktopus.io, 1 socomforums.tk, 1 @@ -135023,6 +134981,7 @@ soellner.info, 1 soelt.dk, 1 soelystsaebe.dk, 1 +soemanozeijlmans.eu, 1 soengen.com, 1 soenkem.ddnss.de, 1 soepvork.nl, 1 @@ -135077,6 +135036,7 @@ softenger.com, 1 softforge.co.uk, 1 softfuture.tk, 1 +softgamez.net, 1 softhints.com, 1 softios.com, 1 softizy.com, 1 @@ -135094,12 +135054,11 @@ softonic.pl, 1 softonic.ru, 1 softonic.se, 1 -softonit.ru, 0 +softonit.ru, 1 softonline.net, 1 softpark.cf, 1 softpark.ml, 1 softplay4hire.co.uk, 1 -softpractice.com, 1 softref.com, 1 softsaz.ir, 1 softsecmatheodexelle.be, 1 @@ -135128,6 +135087,7 @@ softwaresecurityandradefernando.be, 1 softwearautomation.com, 1 softweb-dev.de, 1 +softwerks.com, 1 softwing.de, 1 softwsabri.be, 1 softx.tk, 1 @@ -135149,6 +135109,7 @@ sohamroy.me, 1 sohanakhan.tk, 1 soherco.cl, 1 +sohfga.com, 1 sohka.eu, 1 soho-art.com, 1 soil-journal.net, 1 @@ -135221,7 +135182,6 @@ solarpanels.tk, 1 solarpanelscentralcoast.com, 1 solarplan-berlin.de, 1 -solarpoolheatingsa.co.za, 1 solarscan.com, 1 solarseason.ga, 1 solarstrom.net, 1 @@ -135245,6 +135205,7 @@ soldaten-genealogie.tk, 1 soldbypatrice.com, 1 soldierangels.tk, 1 +soldierer.com, 1 soldiersmg.tk, 1 sole-erdwaermetauscher.de, 1 soleanos.tk, 1 @@ -135300,7 +135261,6 @@ soliten.de, 1 soliujing.ml, 1 solium.com, 1 -soliumsolucion.com, 1 soliver.de, 1 soliver.eu, 1 solix.com, 1 @@ -135337,6 +135297,7 @@ solostocks.com, 1 solostocks.it, 1 solostocks.ma, 1 +solovault.io, 1 sols.style, 1 solsea.io, 1 solsi.ga, 1 @@ -135346,6 +135307,7 @@ solu.la, 1 solucaomadeira.com, 1 solucion.gq, 1 +solucionesmarva.com, 1 solucionesmk.online, 1 solucionesremotas.cl, 1 solucionupsperu.com, 1 @@ -135389,7 +135351,6 @@ somaini.li, 1 somaliaonline.com, 1 somalilandtalk.tk, 1 -somanao.com, 1 somautomotivobr.com.br, 1 someapi.de, 1 somedial.ch, 1 @@ -135465,6 +135426,7 @@ son-tolkovatel.tk, 1 sona-gaming.com, 1 sona.fr, 1 +sonalsrinath.com, 1 sonar.ga, 1 sonaraamat.com, 1 sonare-music.jp, 1 @@ -135561,15 +135523,16 @@ 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 @@ -135639,6 +135602,7 @@ sortiraparis.com, 1 sortirentrenous.com, 1 sortly.com, 1 +sortntrack.com, 1 sorubak.com, 1 soruly.com, 1 soruly.io, 1 @@ -135683,7 +135647,6 @@ sosns.com, 1 soso.ga, 1 soso.loan, 1 -soso.stream, 1 sosoft.tk, 1 sosoftplay.co.uk, 1 sosok.tk, 1 @@ -135695,7 +135658,7 @@ sossinistres.ca, 1 sostacancun.com, 1 soste.fi, 0 -sosteric.si, 1 +sosteric.si, 0 sosyalevin.com, 1 sosysadmin.com, 1 sosz.org, 1 @@ -135725,6 +135688,7 @@ 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 @@ -135785,7 +135749,6 @@ soundersmusic.com, 1 soundersu23.com, 1 soundexclusive4ever.tk, 1 -soundfingers.com, 1 soundfuntech.com, 1 soundgasm.net, 1 soundgo.gq, 1 @@ -135820,7 +135783,6 @@ soupleyoga.com, 1 souqfriday.com, 1 sour.is, 1 -souravbhor.com, 1 souravbhor.gq, 1 souravbhor.ml, 1 source-clan.tk, 1 @@ -135874,6 +135836,7 @@ southdakotahealth.tk, 1 southdakotanet.tk, 1 southeast-wholesale.com, 1 +southeastasianarchaeology.com, 1 southeastattacksquadron.org, 1 southeastwsf.org, 1 southelginumc.org, 1 @@ -135896,6 +135859,7 @@ southernvalve.com, 1 southfieldtownshipmi.gov, 1 southfloridaopenhousesearch.com, 1 +southforkresort.us, 1 southgatemi.gov, 1 southjacksonville-il.gov, 1 southkingstownri.gov, 1 @@ -135913,6 +135877,7 @@ southphoenixair.tk, 1 southportland.gov, 1 southridgeservices.com, 1 +southrock.com, 1 southsands.com, 1 southshoreautowash.com, 1 southside-crew.com, 1 @@ -135942,17 +135907,13 @@ sova.st, 1 sova.wiki, 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.nl, 1 -sovendus.pl, 1 -sovendus.se, 1 sovereign.bounceme.net, 1 sovereigngroup.com, 1 sovereignpcs.com, 0 @@ -135995,7 +135956,6 @@ soytusitio.com, 1 soyutwind.com, 1 soyuznik.ml, 1 -soyvigilante.com, 1 soyzvape.ru, 1 sozai-good.com, 1 sozai.tk, 1 @@ -136057,7 +136017,6 @@ spacehey.com, 1 spacehighway.ms, 1 spacehighways.net, 1 -spaceholder.cc, 1 spacehonor.com, 1 spacehost.de, 1 spaceint.fr, 1 @@ -136155,7 +136114,6 @@ spar.si, 1 sparanoid.com, 1 sparanoid.net, 1 -sparanoid.network, 1 sparanoidstatus.com, 1 sparatryggt.se, 1 sparco.com, 1 @@ -136221,6 +136179,7 @@ spassamgeraet.top, 1 spasskellner-comedykellner.ch, 1 spatialnom.com, 1 +spatio.cn, 1 spatiugratis.tk, 1 spatter.cf, 1 spatter.tk, 1 @@ -136368,6 +136327,7 @@ speedyplatypus.com, 1 speedyshopping.com.br, 1 speedzone.bg, 1 +speedzone.fi, 1 speelfabriek.tk, 1 speeli.com, 1 speeltjesvantruus.nl, 1 @@ -136415,6 +136375,7 @@ spettacolocame.ga, 1 speventos.es, 1 speww.com, 1 +speybooks.com, 1 speycaster.net, 1 speztech.ru, 1 spf.gov.sg, 1 @@ -136425,6 +136386,7 @@ spherejoias.com.br, 1 sphericalmagic.com, 1 sphericalvision.cz, 1 +sphseagleeye.com, 1 sphynx-cats.com, 1 sphynxboyz.com.au, 1 spi-ind.com, 1 @@ -136438,7 +136400,6 @@ spiceolife.ie, 1 spicerack.co.uk, 0 spicerack.uk, 1 -spicestore.hk, 1 spicevids.com, 1 spicevidsgay.com, 1 spichki.tk, 1 @@ -136514,6 +136475,7 @@ spinscity.info, 1 spinscity.net, 1 spinscity777.info, 1 +spintools.pro, 1 spintracer.de, 1 spion.su, 1 spireat.it, 1 @@ -136677,6 +136639,7 @@ sportnesia.com, 1 sportnieuws.nl, 1 sportnn.tk, 1 +sportnova.city, 1 sporto24.ml, 1 sportovni.site, 1 sportovnidum.cz, 1 @@ -136725,6 +136688,7 @@ sportucation.de, 1 sportverein-abtshagen.de, 1 sportvereine.online, 1 +sportverse.co.uk, 1 sportverzorging.tk, 1 sportvision.ml, 1 sportvissenfun.tk, 1 @@ -136830,7 +136794,6 @@ springfieldvt.gov, 1 springgrillhouse.com, 1 springgrovepa.gov, 1 -springharveststore.com, 1 springhillmaine.com, 1 springinklee.com, 1 springlakemi.gov, 1 @@ -136874,6 +136837,7 @@ sps-lehrgang.de, 1 spscommerce.com, 1 spseiostrava.cz, 1 +spserver.work, 1 spstaticfiles.com, 1 spstechnical.com, 1 spt.tf, 1 @@ -137005,7 +136969,6 @@ 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 @@ -137033,7 +136996,10 @@ 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 @@ -137042,7 +137008,6 @@ 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 @@ -137142,13 +137107,13 @@ 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 @@ -137181,7 +137146,6 @@ sslcheck.nl, 1 sslcloud.net, 1 ssld.at, 1 -ssldecoder.eu, 1 ssldev.net, 1 sslgctx.gov, 1 sslhello.com, 1 @@ -137231,12 +137195,14 @@ 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 @@ -137268,6 +137234,7 @@ stackhub.cc, 1 stacklasvegas.com, 1 stackpay.li, 1 +stackplanner.io, 1 stackradar.com, 1 stackroute.com, 1 stackroute.in, 1 @@ -137360,7 +137327,6 @@ stageirites.fr, 1 stageirites.org, 1 stagemaster.cz, 1 -stagend.com, 1 stagewalker.no, 1 staging-amag.com, 1 staging-scholar.tk, 1 @@ -137442,7 +137408,6 @@ stanandjerre.org, 1 stanbeukers.com, 1 stancer.com, 1 -stanchierifamilylaw.com, 1 stancoe.org, 0 stancounty.gov, 1 stand.earth, 1 @@ -137456,7 +137421,6 @@ standard-wohnungsbaukredit.info, 1 standard-wohnungsbaukredit.net, 1 standard-wohnungsbaukredit.org, 1 -standardizarea.ro, 1 standardlifters.com, 1 standardmetrics.io, 1 standardnotes.com, 1 @@ -137494,6 +137458,7 @@ stankingma.nl, 1 stanleyblackanddecker.com, 1 stanleychuahphotography.com, 1 +stanleyharrold.com, 1 stanleytools.ca, 1 stanleytools.com, 1 stanmed24.pl, 1 @@ -137517,7 +137482,6 @@ star-clean.it, 1 star-life.tk, 1 star-one.co.uk, 1 -star.watch, 1 starase.com, 0 starazagora.bg, 1 starb.in, 1 @@ -137571,6 +137535,7 @@ starken.com, 1 starking.net.cn, 1 starking.tk, 1 +starkinsider.com, 1 starknh.gov, 1 starkparks.gov, 1 starkstromkonsument.de, 1 @@ -137627,7 +137592,6 @@ start.stockholm, 1 start2dance.tk, 1 startablog.tv, 1 -startag.xyz, 1 startandstop.fr, 1 startaninflatablebusiness.com, 1 startaxi.com.ua, 1 @@ -137653,7 +137617,6 @@ startmail.com, 1 startner.com, 1 startnowcornwall.org.uk, 1 -startpage.com, 1 startpage.info, 1 startpage4u.tk, 1 startplats.tk, 1 @@ -137751,6 +137714,7 @@ 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 @@ -137811,6 +137775,7 @@ 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 @@ -137834,6 +137799,7 @@ stclementmatawan.org, 1 stclementreligioused.org, 1 stcloudfl.gov, 1 +stclub.de, 1 stcomcybersecurity.net, 1 stconleths.ie, 1 stcplasticsurgery.com, 1 @@ -137883,7 +137849,6 @@ steamscore.info, 1 steamsprays.tk, 1 steamstat.us, 1 -steamtrades.com, 1 steamwhirl.com, 1 steannes.com, 1 stebenkov.tk, 1 @@ -137911,6 +137876,7 @@ steeloncall.com, 1 steelpoint.com.pl, 1 steelsheds.biz, 1 +steelsoldiers.com, 1 steelvortex.tk, 1 steelzone.tk, 1 steemit.com, 1 @@ -137961,8 +137927,6 @@ 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 @@ -137981,7 +137945,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 @@ -138043,7 +138006,6 @@ stenaro.ch, 1 stencilsaustralia.com.au, 0 stendenlegal.nl, 1 -stenhojmedia.dk, 1 stening.co, 1 steno.nl, 1 stenographers.online, 1 @@ -138207,7 +138169,6 @@ stevenski.com, 0 stevensonal.gov, 1 stevensontaxservices.com, 1 -stevensonvillager.com, 1 stevenspoint.gov, 1 steventress.com, 1 stevenz.blog, 1 @@ -138347,7 +138308,6 @@ stinkintechnology.com, 1 stinkmemes.com, 1 stinter.cf, 1 -stintup.com, 0 stiphosting.nl, 1 stipic-webit.de, 1 stirblaut.de, 1 @@ -138366,7 +138326,6 @@ stjohnin.com, 0 stjohnin.gov, 1 stjohnks.gov, 1 -stjohnofgodannualreport.nz, 1 stjohnpa.org, 1 stjohnsc.com, 1 stjohnskids.com, 1 @@ -138455,6 +138414,7 @@ stockilluminati.com, 1 stockmarkettoday.news, 1 stockmeta.jp, 1 +stockntech.net, 1 stockpile.com, 1 stockportny.gov, 1 stockportspiritualistchurch.co.uk, 1 @@ -138488,11 +138448,13 @@ 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 @@ -138535,7 +138497,6 @@ stonedworms.de, 0 stoneedgeconcrete.com, 1 stonefusion.org.uk, 1 -stonegatewealth.com, 0 stonegray.ca, 1 stonehammerhead.org, 1 stonehengelabs.io, 1 @@ -138552,7 +138513,7 @@ stonexbullion.com, 1 stoneydsp.com, 1 stoningtonboroughct.gov, 1 -stonkslab.com, 1 +stonkslab.com, 0 stonnaltd.com, 1 stonnastructures.co.uk, 1 stonsil.com, 1 @@ -138618,7 +138579,6 @@ storageideas.uk, 1 storageioblog.com, 1 storagenewsletter.com, 1 -storagex.co.uk, 1 storck.com, 1 stordbatlag.no, 1 store-en-stock.com, 1 @@ -138656,6 +138616,7 @@ storiadirectory.tk, 1 storiagraph.com, 1 storiatipic.com, 1 +storiediteecaffe.com, 1 stories-pro.com, 1 storiesbysign.com, 1 storiesofglass.nl, 1 @@ -138672,7 +138633,7 @@ stormboost.cz, 1 stormchile.cl, 1 stormdamages.claims, 1 -stormenergygh.com, 1 +stormenergygh.com, 0 stormerauto.ae, 1 stormestudios.tk, 1 stormfest.tk, 1 @@ -138773,7 +138734,6 @@ straitsresearch.com, 1 straitstimes.com, 1 strajnar.si, 1 -straka.name, 1 strakertranslations.com, 0 strakh.tk, 1 strakonak.cz, 1 @@ -138849,7 +138809,6 @@ stratfordwi.gov, 1 stratforge.com, 1 strathspeycrown.com, 1 -strati.com.br, 1 stratiacyber.com, 1 stratible.com, 1 stratik.com.co, 1 @@ -138870,11 +138829,9 @@ 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 @@ -138967,7 +138924,6 @@ streetart.tk, 1 streetartcities.com, 1 streetballromania.tk, 1 -streetcheck.co.uk, 1 streetdancecenter.com, 1 streetdreamz.tk, 1 streetforceteam.tk, 1 @@ -139001,6 +138957,7 @@ stressfreeprobate.com, 1 stressfrei-marceva.de, 1 streszczenia.pl, 1 +strettonreserve.com.au, 1 strettoweb.com, 1 strgco.com, 1 striae.cf, 1 @@ -139034,6 +138991,7 @@ stripperweb.club, 1 striptizer.tk, 1 stritai.ru, 1 +strivestudio.com.mx, 1 strixmusic.com, 1 strizh.com.ua, 1 strl-tunis.tk, 1 @@ -139060,6 +139018,7 @@ strokesb.store, 1 strokesurvivor.nz, 1 strom-mit-system.de, 1 +strom-morava.cz, 1 strom.cz, 1 strom.family, 1 stroma.com, 0 @@ -139067,6 +139026,7 @@ stromberg.marketing, 1 stromectol.gq, 1 stromkomfort.cz, 1 +strommorava.cz, 1 strompraha.cz, 1 stromsparen24.at, 1 stromzivota.sk, 1 @@ -139187,7 +139147,7 @@ studentinaneta.com, 1 studentite.bg, 1 studentjournalist.ml, 1 -studentkhata.online, 1 +studentkhata.online, 0 studentklinikk.no, 1 studentloans.gov, 1 studentnep.tk, 1 @@ -139199,6 +139159,8 @@ studentscodecamp.com, 1 studentse.fr, 1 studentsfirstnb.com, 1 +studentskiservis.si, 1 +studentskodelo.si, 1 studentstc.cz, 1 studenttenant.com, 1 studenttracker.org, 1 @@ -139245,10 +139207,10 @@ studiocharloslivro.tk, 1 studioclassic.no, 1 studiodelbenessere.com, 1 -studiodentisticomasi.com, 1 +studiodentisticomasi.com, 0 studiodentisticosanmarco.it, 0 studiodoprazer.com.br, 1 -studiodpe.com, 0 +studiodpe.com, 1 studiodriban.com, 0 studioduurzaamwonen.nl, 1 studioelo.com.br, 0 @@ -139266,6 +139228,7 @@ studiolu.tk, 1 studiolupotti.it, 1 studiomarcella.com, 1 +studiomax.bg, 1 studiomenfis.com, 1 studionerisabatini.it, 1 studionorwood.com, 1 @@ -139274,6 +139237,7 @@ studiopanamaitalia.com, 1 studiopirrate.com, 1 studiopoen.com.br, 1 +studiorachunkowe.pl, 1 studioshiftup.net, 1 studiosql.ml, 1 studiostawki.com, 1 @@ -139295,6 +139259,7 @@ studius.gq, 1 studiweb.pro, 1 studlan.no, 0 +studlied.com, 1 studo.com, 1 studport.rv.ua, 1 studsovet.cf, 1 @@ -139303,6 +139268,7 @@ studujdigital.cz, 1 studujdigital.eu, 1 studwebs.ml, 1 +study-share.com, 1 studyarch.tk, 1 studybay.com, 0 studybeans.org, 1 @@ -139437,7 +139403,6 @@ suatdautu.com, 1 suaudeau.fr, 1 suaudeau.org, 1 -suayslim.com, 1 sub-net.at, 1 sub-topia.de, 1 subahankamal.tk, 1 @@ -139451,7 +139416,6 @@ subaruxv.pl, 1 subastatutraslado.com.mx, 1 subbacultcha.tk, 1 -subbdom.com, 1 subcenter.io, 1 subcollab.com, 1 subdev.org, 1 @@ -139477,9 +139441,10 @@ submelon.tech, 1 submit-link.cf, 1 submiteads.tk, 1 -submittable.com, 1 +submittable.com, 0 submityou-rlink.tk, 1 submityour-link.tk, 1 +subnet.com, 1 subnoto.com, 1 subology.co, 1 suborbital.io, 1 @@ -139494,7 +139459,7 @@ subsistencematters.net, 1 subsitude.tk, 1 subsoft.tk, 1 -subspace.institute, 0 +subspaceds9.us, 1 substanceandprogram.info, 0 substancelaw.com, 1 substances.be, 1 @@ -139587,11 +139552,11 @@ suempresa.cloud, 1 sueniosmundiales.com, 1 suenotek.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 @@ -139603,12 +139568,16 @@ 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 @@ -139651,6 +139620,7 @@ suitcompany.com, 1 suite.li, 1 suite360sel.org, 1 +suiteassured.com, 1 suitebase.org, 1 suitecrm.com, 1 suitemail.org, 1 @@ -139659,6 +139629,7 @@ suitesolutionsgroup.com, 1 suiteuser.org, 1 suitocracy.com, 1 +suitsizingtool.com, 1 sujal.com, 1 sujatadev.in, 1 sujiao.de, 1 @@ -139774,6 +139745,7 @@ summitms.gov, 1 summitoralsurgerymt.com, 1 summitviewbaptistchurch.com, 1 +summitweb.eu, 1 summitwellnessgroup.com, 1 sumner-jc-wi.gov, 1 sumochki.tk, 1 @@ -139892,6 +139864,7 @@ sunpig.sg, 1 sunplant.biz, 1 sunplay.host, 1 +sunplus.com.pl, 1 sunpool.top, 1 sunpower.id, 1 sunpsychological.com, 1 @@ -139899,7 +139872,6 @@ sunred.info, 1 sunred.org, 1 sunrichtec.com, 1 -sunrise-sunset.org, 1 sunrise.tk, 1 sunrisebeachmo.gov, 1 sunrisebeachtx.gov, 1 @@ -139940,6 +139912,7 @@ sunsunjewelry.org, 1 suntechnologies.com, 1 sunticschool.org, 1 +suntrion.com, 1 suntropez-shop.it, 1 sunwayestates.com, 1 sunwaymedical.com, 1 @@ -139949,7 +139922,6 @@ sunwolf.studio, 0 sunyanzi.cf, 1 sunyanzi.tk, 1 -suomensotilas.fi, 1 suomentilitoimistot.fi, 1 suomiheraa.com, 1 suomika.pl, 1 @@ -139988,6 +139960,7 @@ super-segment.com, 1 super-silicon.com, 1 super-trophy.de, 1 +super2d.net, 1 super60.ag, 1 super60.biz, 1 super60.de, 1 @@ -140026,6 +139999,7 @@ supercentenarian.com, 1 supercharged.co.uk, 1 superchargers.pt, 1 +superchopsticks.com, 1 supercinebattle.fr, 1 supercontent.cf, 1 supercontent.ga, 1 @@ -140052,6 +140026,7 @@ superfastpress.com, 1 superfavorite.tk, 1 superfinancial-dorsetbranch.co.uk, 1 +superfluo.hr, 1 superfluous.tk, 1 superfly.tk, 1 superfoodsexplained.com, 1 @@ -140079,6 +140054,7 @@ superiorseamlessinc.com, 1 superiorvision.com, 1 superiorwi.gov, 1 +superiptv.pro, 1 superis.eu, 1 superit.com.br, 1 superjuf.com, 1 @@ -140228,6 +140204,7 @@ suresign.au, 1 surest.com, 0 surestartblanks.com, 1 +sureststar.com, 1 surf1969.tk, 1 surfacespots.ga, 1 surfbluewave.com, 0 @@ -140318,6 +140295,7 @@ susann-kerk.de, 1 susanna-komischke.de, 0 susannaridge.com, 1 +susanyorke.ca, 1 susconam.org, 1 susdomicilios.co, 1 suseki.ga, 1 @@ -140381,7 +140359,6 @@ suurhelsinki.cf, 1 suuria.de, 1 suurimjulgus.ee, 1 -suutaripaivat.fi, 1 suv4.net, 1 suvacollections.com.br, 1 suvalor.com, 1 @@ -140403,6 +140380,7 @@ 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 @@ -140498,7 +140476,6 @@ svetrelaxu.cz, 1 svetserialov.to, 1 svev.no, 0 -svfintechja.com, 1 svfitness.ru, 1 svg-board.ml, 1 svgdesigns.com, 1 @@ -140541,7 +140518,6 @@ svsewerut.gov, 1 svsg.co, 1 svswebmarketing.com, 1 -svtemplemn.org, 1 svtl.ch, 1 svtr.de, 1 svtv.org, 1 @@ -140553,6 +140529,7 @@ sw-servers.net, 1 sw33tp34.com, 1 swa-il.gov, 1 +swaa.life, 1 swabia.com, 1 swabifoundation.tk, 1 swac.org, 1 @@ -140562,6 +140539,7 @@ swagat.tk, 1 swagger.io, 1 swagger.london, 1 +swaglab.rocks, 1 swaglookbook.com, 1 swagmoney.enterprises, 1 swahili-dictionary.com, 1 @@ -140654,7 +140632,6 @@ sweetlegs.jp, 1 sweetloaded.com, 1 sweetlycakes.com, 1 -sweetmedicinefarm.com, 0 sweetnest.com, 1 sweetparis.cf, 1 sweetpinkpussy.org, 1 @@ -140689,6 +140666,7 @@ swift-devedge.de, 1 swiftapp.uk, 1 swiftauditor.com, 1 +swiftauth.net, 1 swiftbits.com, 1 swiftbonds.com, 1 swiftcashforcars.com.au, 1 @@ -140710,7 +140688,7 @@ swiftrecharge.com, 1 swiftsensors.com, 1 swiggles.com, 1 -swilab.ch, 0 +swilab.ch, 1 swilabible.be, 0 swilagod.be, 1 swilatag.be, 1 @@ -140749,6 +140727,7 @@ 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 @@ -140770,7 +140749,6 @@ swissinternationalva.com, 1 swisslinux.org, 1 swissmakers.ch, 1 -swissmeyer.pl, 1 swissmodular.com, 1 swissneutral.net, 1 swissnoso.ch, 1 @@ -140806,6 +140784,7 @@ swktestserver.tk, 1 swmlink.com, 1 swn-nec.de, 1 +swnet.casa, 1 swocaoh.gov, 1 swoop-qa.cloud, 1 swoop-support.com, 1 @@ -140825,12 +140804,13 @@ 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 @@ -140901,7 +140881,7 @@ syllogi.xyz, 1 sylphix.cn, 1 sylvaindurand.org, 1 -sylvainkalache.com, 1 +sylvainkalache.com, 0 sylvaloir.fr, 1 sylvangarden.net, 1 sylvankohchang.com, 1 @@ -140926,6 +140906,7 @@ symbiose.com, 1 symbiosecom.ch, 0 symbiote.com.au, 1 +symbiotic.fi, 1 symbo.xyz, 1 symbolics.digital, 1 symbolnodes.org, 1 @@ -140935,10 +140916,12 @@ symeonchen.com, 1 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 symetrix.tk, 1 symetryk.tk, 1 @@ -141001,8 +140984,6 @@ synergytherm.com, 1 synergyzone.tk, 1 synerio.com, 1 -synerionagile.com, 1 -synerionenterprise.com, 1 synetiq.co.uk, 1 synfrait.com, 1 synitsa.tk, 1 @@ -141094,6 +141075,7 @@ sysmike.net, 1 sysnet.com.sg, 1 sysnet.cz, 1 +sysoons.com, 1 sysopworld.cf, 1 sysopworld.ga, 1 sysopworld.gq, 1 @@ -141192,7 +141174,6 @@ szerelem.love, 1 szerver.com, 1 szerver.hu, 1 -szhighsun.com, 1 szih.org.pl, 1 szilagyicsalad.ddns.net, 1 szili.uk, 1 @@ -141266,14 +141247,12 @@ t12u.com, 1 t1cloud.com, 1 t1f.ru, 1 -t1movie.com, 1 t2-sit-test.tk, 0 t2000headphones.com, 1 t2000laserpointers.com, 1 t22.uk, 1 t23a.eu, 1 t2informatik.de, 1 -t2tea.com, 1 t33.eu, 1 t36533.com, 1 t3concrete.my, 1 @@ -141443,6 +141422,7 @@ tadaaam.studio, 1 tadalafil-tablets.tk, 1 tadalafilindia.gq, 1 +tadashiku.jp, 1 tadaweb.com, 1 tadj-mahalat.com, 1 tadjiki.tk, 1 @@ -141488,6 +141468,7 @@ tagid.tk, 1 tagil-news.ru, 1 taginet.com, 1 +taglialegne.it, 1 tagliando.it, 1 taglioepiega.com, 1 taglioepiega.eu, 1 @@ -141562,6 +141543,7 @@ taiwantechtrek.tk, 1 taiwantour.info, 0 taiway.com, 1 +taiyo-eg.com, 1 taj-portal.tk, 1 tajbrighton.tk, 1 tajemna-mista.cz, 1 @@ -141576,7 +141558,6 @@ tajnyodtah.sk, 1 tajrobe.wiki, 1 tajtowereg.com, 1 -tak-it.nl, 1 tak.gov, 1 tak.io, 1 takada418.jp, 1 @@ -141587,6 +141568,7 @@ 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 @@ -141660,7 +141642,6 @@ taldia.es, 1 taleatherworks.com, 1 talendipank.ee, 1 -talengo.com, 1 talensahub.com, 1 talent-safari.com, 1 talentbazi.com, 1 @@ -141675,10 +141656,8 @@ talenthubmpi.com, 1 talentimpuls.de, 1 talentio.com, 1 -talentlint.com, 1 talentlms.com, 1 talentmill.co, 1 -talento.dev.br, 0 talentoday.com, 1 talentplatform.ca, 1 talentplatform.com, 1 @@ -141698,7 +141677,6 @@ talideon.com, 0 talikotang.tk, 1 talinhandmade.com, 1 -talisadesign.fi, 0 talisman-amulet.ga, 1 talk-local.com, 1 talk.google.com, 1 @@ -141716,7 +141694,6 @@ talkischeap.tk, 1 talklikeyodaday.tk, 1 talkmojang.club, 1 -talkreal.net, 0 talkscope.cf, 1 talkscope.ml, 1 talksileby.tk, 1 @@ -141751,6 +141728,7 @@ talonro.com, 1 talos-app.io, 1 talos-staging.io, 1 +talosquant.com, 1 talpurwadalions.tk, 1 taltech.ee, 1 talusan.tk, 1 @@ -141870,16 +141848,16 @@ 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 +taniawizualizacja.pl, 1 tanie-obraczki-szczecin.tk, 1 tanie-uprawnienia-sep.pl, 1 taniepaleciaki.pl, 1 -tanieserwetki.pl, 1 +tanieserwetki.pl, 0 taniguchi.jp.net, 1 taniguchi.link, 1 taniguchi.osaka.jp, 1 @@ -141898,7 +141876,6 @@ tankski.co.uk, 0 tanming.com.my, 1 tanned.tk, 1 -tannenhof-moelln.de, 1 tanner.sh, 1 tanneradvisorysolutions.com.au, 1 tannercorporation.com, 0 @@ -141975,7 +141952,6 @@ tappezziere.milano.it, 0 tappezziere.roma.it, 1 tapphosting.com, 1 -tappy.com.br, 1 tapquad.com, 1 taprix.org, 1 taproot.com, 1 @@ -142018,6 +141994,7 @@ targetlearning.com.au, 1 targetlonglife.tk, 1 targetmarc.com, 1 +targetoutsourcing.pe, 1 targetsportsworld.com, 1 targettrend.com, 1 targeturl.ru, 1 @@ -142035,6 +142012,7 @@ tarihvakti.com, 1 tarija.tk, 1 tarikigaru.ga, 1 +tarikin.com, 1 tarjaturunen.tk, 1 tarjetaolimpica.com.co, 1 tarjetasgraficas.tk, 1 @@ -142052,7 +142030,6 @@ tarot-online.fr, 1 tarot-online.it, 1 tarot-oracle.com, 0 -tarot.vn, 1 tarotcarmenruiz.com, 1 tarotreadingexplained.com, 1 tarotyvidente.es, 1 @@ -142073,7 +142050,7 @@ taruntarun.net, 1 tarus.gq, 1 tarvit.me, 1 -tarvoo.com, 1 +tarvoo.com, 0 tarzanka.ml, 1 tas.best, 1 tasarimgazetesi.com, 1 @@ -142101,7 +142078,6 @@ taskwise.cf, 0 tasmaniangaspipeline.com.au, 1 tasnomanija.rs, 1 -tasogarenoinori.net, 1 tasonoken.tk, 1 tasports.com.au, 1 tasports2043.com.au, 1 @@ -142110,8 +142086,8 @@ 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 @@ -142134,7 +142110,6 @@ tatarworld.tk, 1 tatary.cf, 1 tatary.tk, 1 -tate.com, 1 tatecountyms.gov, 1 tateesq.com, 0 tateishi-ip.com, 1 @@ -142343,7 +142318,7 @@ tbatr.tk, 1 tbcinteriorismo.com, 1 tbcloud.site, 0 -tbejos.com, 1 +tbfencing.au, 1 tbfocus.com, 1 tbi.equipment, 1 tbi.systems, 1 @@ -142419,6 +142394,8 @@ 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 @@ -142426,6 +142403,7 @@ tcptun.com, 1 tcr-ees.com, 1 tcrecord.org, 1 +tcrid.com, 1 tcspartner.eu, 1 tcttire.com, 1 tcuprs.com, 1 @@ -142484,17 +142462,17 @@ tea.in.th, 1 teablr.com, 1 teach.gq, 1 -teachbase.ru, 1 teachbiz.net, 1 teachercall.kr, 1 teachercreatedmaterials.com, 0 -teachermommylife.com, 1 +teachermommylife.com, 0 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 @@ -142527,6 +142505,7 @@ team-azerty.com, 1 team-bbd.com, 1 team-building.tirol, 1 +team-clash.com, 1 team-cut.tk, 1 team-darkness.tk, 1 team-eklund-motorsport.tk, 1 @@ -142573,7 +142552,6 @@ teamfriet.nl, 1 teamgoal1.com, 1 teamhd.org, 1 -teamhealth.com, 1 teamhinkleyc.com, 0 teamhybrid.com, 1 teamhybridforums.com, 1 @@ -142661,6 +142639,9 @@ 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 @@ -142762,7 +142743,7 @@ techarkansas.tk, 1 techask.it, 1 techbelife.com, 1 -techboostclark.com, 1 +techboi.com.br, 1 techbrawl.org, 1 techbridge.jp, 1 techbuz.net, 1 @@ -142788,6 +142769,7 @@ techday.co.uk, 1 techday.com, 1 techday.com.au, 1 +techday.ie, 1 techday.in, 1 techdayca.com, 1 techdirt.com, 1 @@ -142894,6 +142876,7 @@ technikplanet.de, 1 techniqueelevage.ddns.net, 1 techniquetechs.com, 1 +technischeserviceassen.nl, 1 techno-utopia.com, 1 technoairlines.com, 0 technoartstone.bg, 1 @@ -142955,7 +142938,7 @@ technorthdakota.tk, 1 technosafebg.com, 1 technosapien.ml, 1 -technosoftware.com, 1 +technosoftware.com, 0 technospeakco.com, 1 technospiritindia.com, 1 technostone.tk, 1 @@ -143158,6 +143141,7 @@ teekaymedia.tk, 1 teeko.cc, 1 teektalk.org, 1 +teelam.com, 1 teemill.com, 1 teemo.gg, 1 teemo.love, 1 @@ -143253,7 +143237,6 @@ tekme.pt, 1 teknashop.com, 1 teknik-sipil.tk, 1 -teknikaldomain.me, 1 teknikhjalpen.ax, 1 tekniksnack.se, 1 tekniksomine.com.tr, 1 @@ -143264,7 +143247,6 @@ teknoharekat.com, 1 teknokanguru.com.tr, 1 teknoleet.com, 1 -teknologipendidikan.id, 1 teknologipendidikan.or.id, 1 teknomarko.com, 0 teknon.tk, 1 @@ -143301,6 +143283,7 @@ telconews.co.uk, 1 telconews.com, 1 telconews.com.au, 1 +telconews.ie, 1 telconews.in, 1 teldak.pt, 1 teldoop.my.id, 0 @@ -143308,6 +143291,7 @@ tele-assistance.ch, 0 tele-points.net, 1 tele-teen.ru, 1 +tele.wiki, 1 tele2vaxel.se, 1 teleafrica.ga, 1 telealarme.ch, 0 @@ -143476,6 +143460,7 @@ temogroup.net, 1 temoinfidele.fr, 1 temonews.org, 1 +temovision.com, 1 temp-lars.army, 1 temp.pm, 1 tempa.com.ua, 1 @@ -143547,7 +143532,6 @@ tendermint.com, 1 tenderned.nl, 1 tenderwizard.com, 1 -tendiestown.com, 1 tendiris.ga, 1 tendmed.com.br, 1 tendo.com, 1 @@ -143563,6 +143547,7 @@ tenfingerscollective.tk, 1 tengdi.com, 1 tengodetodo.tk, 1 +tengoping.com, 1 tenhourguy.com, 1 tenibac.com, 1 tenibacgraphion.com, 1 @@ -143604,7 +143589,6 @@ tenshokufair.jp, 1 tensor.trade, 0 tent.io, 1 -tenta.com, 1 tentacle.monster, 1 tentacle.net, 1 tentacletank.com, 1 @@ -143626,6 +143610,7 @@ teoassessoria.com.br, 1 teoitaly.com, 1 teoletextsq.tk, 1 +teolino.eu, 1 teologia.promo, 0 teomahk.de, 1 teoria.com, 1 @@ -143653,6 +143638,7 @@ tequilamessenger.com, 1 tequilazor.com, 1 terabyte.services, 1 +terabyte.systems, 1 terabyteharddrive.net, 1 teracloud.at, 1 teradatta.ga, 1 @@ -143728,7 +143714,7 @@ terovania.com, 1 terovania.de, 1 terpelpanama.com, 1 -terpotiz.net, 0 +terpotiz.net, 1 terra-di-mezzo.it, 1 terra-med.ga, 1 terra-x.net, 1 @@ -143782,7 +143768,6 @@ terres-et-territoires.com, 1 terresmagiques.com, 0 terrimcaleerphotography.com, 1 -terriscope.com, 1 territoriesredress.gov.au, 1 territoriocuchero.tk, 1 territoriya-msk.ru, 1 @@ -143919,7 +143904,6 @@ 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 @@ -143941,7 +143925,6 @@ tethercasinos.io, 1 tetherkr.com, 1 tetherqr.com, 1 -tethys.fr, 1 tetonas.tk, 1 tetonka.ch, 1 tetorix.gq, 1 @@ -143965,7 +143948,6 @@ teufelaudio.nl, 1 teufelswerk.net, 0 teulon.eu, 1 -teungedj.de, 1 teunmulder.tk, 1 teunstuinposters.nl, 1 teusink.eu, 1 @@ -143976,6 +143958,7 @@ teva.ru, 0 teveblad.be, 1 teverzamelen.nl, 1 +tevhidmeali.com, 1 tewarilab.co.uk, 1 tewkesburyyoga.com, 1 tex-izol.ru, 1 @@ -143991,6 +143974,7 @@ texascourtreporters.com, 1 texascredit.com, 1 texasdefender.org, 1 +texasdesignstudio.com, 1 texasdivorceforall.com, 1 texasgynecomastia.com, 1 texashealthtrace.gov, 1 @@ -144003,7 +143987,7 @@ texaspaversoutdoorliving.com, 1 texasprosgaragedoors.com, 1 texasready.gov, 1 -texasschools.us, 0 +texasschools.us, 1 texasteam.tk, 1 texastitlesearch.com, 1 texasturfcourts.com, 1 @@ -144013,6 +143997,7 @@ texdot.gov, 1 texel.tk, 1 texfunding.com, 1 +texhfexlabs.de, 1 texicopolicenm.gov, 1 texier.mx, 1 texkings.com, 1 @@ -144023,14 +144008,12 @@ texosmotr.tk, 1 text-to-video.ir, 1 text.is, 1 -text2html.pro, 1 textadventure.tk, 1 textamig.se, 1 textassistant.ga, 1 textcleaner.net, 1 textcounter.tk, 1 texteditor.co, 1 -textencrypted.com, 1 texter-linz.at, 1 textil-kyoto.tk, 1 textiles.bg, 1 @@ -144063,7 +144046,6 @@ tezcam.tk, 1 tezfab.com, 1 teztarama.com, 1 -tf-amd.com.my, 1 tf-network.de, 1 tf2b.com, 1 tf2calculator.com, 1 @@ -144136,8 +144118,6 @@ 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 @@ -144196,13 +144176,12 @@ thancon.com, 1 thanhnhua.vn, 1 thanhtrungmobile.vn, 1 -thankspenny.com, 1 +thankspenny.com, 0 thantra.tk, 1 thapduoc.com, 1 tharahkardu.in, 1 tharra.sa, 1 thaserv.de, 1 -thassoc.com, 1 thassos-world-web.tk, 1 thassos.tk, 1 that.host, 1 @@ -144224,16 +144203,8 @@ 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 @@ -144347,7 +144318,9 @@ thearchimag.tk, 1 thearctichideaway.com, 1 thearkfamily.org, 1 +thearnabsen.com, 1 theartofcharm.com, 1 +theasciiway.com, 1 theasianshooters.com, 1 theastrocoach.com, 1 theataraxia.tk, 1 @@ -144392,6 +144365,7 @@ theballardpier.com, 1 thebalvenie.com, 1 thebamplayer.de, 1 +thebanksloganriver.com.au, 1 thebannekerfoundation.org, 1 thebannerstore.com, 1 thebasementdefender.com, 1 @@ -144399,7 +144373,6 @@ thebasicstudio.com, 1 thebatesstudent.com, 1 thebathroomexchange.ga, 1 -thebatt.com, 1 thebaytalland.com, 1 thebcm.co.uk, 1 thebeatyard.nl, 0 @@ -144458,7 +144431,6 @@ theblogstarter.com, 1 theblondeabroad.com, 0 theblue.tk, 1 -thebluebanner.net, 1 theblueprint.global, 1 thebluered.net, 0 theblueroofcottage.ca, 1 @@ -144474,7 +144446,7 @@ thebobcoin.io, 1 thebodylanguageguide.tk, 1 thebodyshop.bg, 1 -theboltway.com, 1 +theboltway.com, 0 thebondyapp.com, 1 thebonerking.com, 1 thebook.pro, 1 @@ -144523,13 +144495,11 @@ 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 @@ -144557,7 +144527,6 @@ thechannels.org, 1 thechatlinenumbers.com, 1 thechavs.xyz, 1 -thecheapairlinetickets.com, 1 thecheat.tk, 1 thecheese.co.nz, 1 thechels.uk, 1 @@ -144630,7 +144599,6 @@ thecup.us, 1 thecureplainsong.tk, 1 thecurvyfashionista.com, 0 -thecustomdroid.com, 1 thecustomizewindows.com, 1 thecyberwire.com, 1 thecyclistchoice.com, 1 @@ -144658,7 +144626,6 @@ thedave.photos, 1 thedawningofdarkness.tk, 1 thedayimetjesus.com, 1 -thedealerapp.co.uk, 1 thedeathmachine.tk, 1 thedeathofannakarina.tk, 1 thedebug.life, 1 @@ -144723,6 +144690,7 @@ theender.net, 1 theendpoem.com, 1 theepankar.com, 1 +theepicstorm.com, 1 theescapegame.com, 0 theestatesatstgeorge.com, 1 theesuhlmann.de, 1 @@ -144775,7 +144743,6 @@ thefoodieblogger.com, 1 thefoot.tk, 1 theforbiddenfruitbar.co.uk, 1 -thefordhamram.com, 1 theforkedspoon.com, 1 thefountain.eu, 1 thefox.com.fr, 1 @@ -144843,7 +144810,6 @@ thego2swatking.com, 1 thegoalinc.co.jp, 1 thegolden.com, 1 -thegoldengild.com, 1 thegoldenpreference.com, 1 thegoodboat.com, 1 thegoodegg.ie, 1 @@ -144906,6 +144872,7 @@ thehealinghorse.com, 1 thehealthshed.nl, 1 theheatingoilclub.co.uk, 1 +theheightsdurack.com.au, 1 thehelper.tk, 1 thehideoutrestaurant.com, 0 thehillstx.gov, 1 @@ -144914,7 +144881,6 @@ thehinhonline.com.vn, 1 thehivedesign.org, 1 thehoff.ddnss.de, 1 -thehofstrachronicle.com, 1 thehollandfam.com, 0 theholloways.tk, 1 thehomeassignment.com, 1 @@ -144968,11 +144934,9 @@ theintercept.com, 0 theinternationalgeekconspiracy.eu, 1 theinvisibleman.tk, 1 -theislandtime.com, 1 theislandwellness.com, 1 theissen.io, 1 theisthelpline.com, 1 -theithacan.org, 1 theixiangrand.gr, 1 thejacksoninstitute.com.au, 1 thejakartapost.com, 1 @@ -144987,6 +144951,7 @@ thejukebox.tk, 1 thejunkfiles.com, 1 thekalakriti.tk, 1 +thekamababa.com, 1 thekenyatimes.com, 1 thekev.in, 1 thekickassvirtualassistant.nl, 1 @@ -145153,7 +145118,6 @@ themrtaik.it, 1 themsuspokesman.com, 1 themtwashingtongroup.com, 1 -themurrayfamily.me.uk, 1 themusecollaborative.org, 1 themusicofchrisbulman.tk, 1 themusicthatnobodylikes.tk, 1 @@ -145172,6 +145136,7 @@ theneatgadgets.com, 1 thenerdshepherd.com, 1 thenest.se, 1 +thenetw.org, 1 theneverspodcast.com, 1 thenew3rs.org, 1 thenewannual.com, 1 @@ -145189,7 +145154,6 @@ thenine.info, 1 theninenine.com, 1 thenobullshit.coach, 1 -thenocman.com, 1 thenolank.com, 1 thenordly.com, 1 thenorthschool.org.uk, 1 @@ -145359,6 +145323,7 @@ theprowlernews.org, 1 thepsi.com, 1 theptclist.tk, 1 +thepuffprof.com, 1 thepulicegroup.com, 1 thepulpit.tk, 1 thepuppetdolls.tk, 1 @@ -145428,6 +145393,7 @@ thereptiles.tk, 1 theresa-mayer.eu, 1 theresapolicewi.gov, 1 +thereservetownsville.com.au, 1 theresingles.tk, 1 therestaurantstore.com, 1 theresumeapp.com, 0 @@ -145441,7 +145407,6 @@ therhetorical.ml, 0 therhodesresidences.com, 1 therichardsfamily.tk, 1 -therightmeal.nl, 1 therigy.com, 1 therigy.net, 1 theriverspecialist.com, 1 @@ -145491,9 +145456,7 @@ thesage.cf, 1 thesage.ga, 1 thesagresapartments.com, 1 -thesaltpacketguy.com, 1 -thesandb.com, 1 -thesarogroup.com, 0 +thesarogroup.com, 1 thesashcompany.com.au, 1 thesatriantoshow.tk, 1 thesaturdaypaper.com.au, 1 @@ -145533,7 +145496,6 @@ theshots.cz, 1 thesigit.tk, 1 thesignacademy.co.uk, 1 -thesignpostwsu.com, 1 thesilentfew.tk, 1 thesilentlink.org, 1 thesilentplanet.tk, 1 @@ -145554,12 +145516,14 @@ thesistraffic.com, 1 thesiterank.com, 1 theskincourse.com, 1 +theskippingbeats.com, 1 thesleepdoctor.com, 0 theslotz.com, 1 theslotz1.co, 1 theslotz1.uk, 1 thesmartconsumer.com, 1 thesmexperiences.com, 1 +thesocialcopywriter.com, 1 thesocialitefamily.com, 0 thesocialmediacentral.com, 1 thesocialsyndicate.com, 1 @@ -145580,7 +145544,6 @@ thespoiler.co.il, 1 thestandards.tk, 1 thestatementjewelry.com, 1 -thesteins.org, 0 thestellahouse.com, 1 thestockoasis.com, 1 thestonestudio.in, 1 @@ -145603,7 +145566,6 @@ thesugargirls.com, 1 thesultans.tk, 1 thesunflower.com, 1 -thesuntease.com, 1 thesupersunday.tk, 1 thesuppercircle.com, 1 thesupportplatform.org.uk, 1 @@ -145633,7 +145595,6 @@ thethymevortex.zapto.org, 1 theticker.org, 1 thetimdowling.co, 1 -thetimehotels.com, 1 thetinylife.com, 1 thetipo.eu, 1 thetipo.it.eu.org, 1 @@ -145706,7 +145667,6 @@ thevetstop.co.uk, 1 thevictorianemporium.com, 1 thevillageok.gov, 1 -thevillasatparkaire.com, 1 thevine.one, 1 thevintagenews.com, 0 theviolenceofdevelopment.com, 1 @@ -145723,7 +145683,6 @@ thewagesroom.co.uk, 1 thewalkerz.tk, 1 thewallet.today, 1 -thewarehousefellowship.org, 1 thewarwhoop.com, 1 thewatchdog.com.br, 1 thewaterfrontpoole.com, 1 @@ -145739,6 +145698,7 @@ thewebmasters.tk, 1 thewebsitemarketingagency.com, 1 theweddingfit.com, 1 +thewedgemethodai.com, 1 theweed.tk, 1 theweightlossmedics.co.uk, 1 thewellbeingarchitect.ie, 1 @@ -145763,7 +145723,6 @@ thewish.ml, 1 thewish.tk, 1 thewolfpacket.org, 1 -thewolseley.com, 1 thewomaninbloom.com, 1 thewombatsict.com.au, 1 thewomen.tk, 1 @@ -145904,7 +145863,7 @@ thirard.com, 1 thirdbearsolutions.com, 0 thirdgenphoto.co.uk, 1 -thirdman.auction, 0 +thirdman.auction, 1 thirdwave.tk, 1 thirdwaveanalytics.com, 1 thirdwaverevenue.com, 1 @@ -145937,6 +145896,7 @@ thisistina.nl, 1 thisistwice.tk, 1 thisiswhywemom.com, 1 +thisline.eu, 1 thismatter.com, 1 thismumdoesntknowbest.com, 1 thispageisup.com, 1 @@ -145944,19 +145904,23 @@ 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 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 @@ -146118,6 +146082,7 @@ threatint.zone, 1 threatlabs.eu, 1 threatlabs.nl, 1 +threatmeld.ai, 1 threatnix.io, 1 threatobserver.com, 1 threatutic.gq, 1 @@ -146152,6 +146117,7 @@ threexxx.ch, 1 threv.net, 1 thriftdiving.com, 1 +thriftstore.gr, 1 thriftywp.com, 1 thrillernyc.com, 0 thrillkill.tk, 1 @@ -146184,7 +146150,6 @@ thsecurity.cz, 1 thtcmaps.com, 1 thuban.me, 1 -thuenhapho.com, 1 thues.eu, 1 thugcityrecords.tk, 1 thuisverplegingvandermeiren.be, 1 @@ -146229,6 +146194,7 @@ 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 @@ -146238,7 +146204,6 @@ tiadolores.com.br, 1 tiagocasalribeiro.ml, 1 tiagomoraismorgado.tk, 1 -tiagomoreira.pt, 1 tiagoneves.tk, 1 tiagonunes.pt, 1 tiagosimao.com, 1 @@ -146285,6 +146250,7 @@ tiberian.tk, 1 tibetanmalashop.com, 1 tibiarock.tk, 1 +tibill.ca, 1 tibinonest.me, 1 tibipg.com, 1 tible.com, 1 @@ -146326,12 +146292,9 @@ ticketmorocco.com, 1 ticketpay.jp, 1 ticketpro.ca, 1 +ticketroster.com, 1 tickets2004.tk, 1 -ticketscheapairfare.com, 1 -ticketscheapairline.com, 1 -ticketscheapflights.com, 1 -ticketslover.com, 1 -ticketsolve.com, 1 +ticketsolve.com, 0 ticketsource.co.uk, 1 ticketsource.eu, 1 ticketsource.io, 1 @@ -146356,6 +146319,7 @@ tidal.ninja, 1 tidal.zone, 1 tidalru.sh, 1 +tidalrush.de, 1 tide-the-knot.com, 1 tide.co, 1 tide.com, 1 @@ -146457,7 +146421,6 @@ tigernewspaper.net, 1 tigernode.com, 1 tigerprop.com, 1 -tigerroofpa.com, 1 tigerspike.co.uk, 1 tigerspike.com, 1 tigerspike.com.au, 1 @@ -146567,6 +146530,7 @@ timberlinefcu.org, 1 timbertec.com, 1 timbishopartist.com, 1 +timbrica.com, 1 timbrust.de, 1 timcamara.com, 1 timco.cloud, 1 @@ -146582,7 +146546,7 @@ time-hotel.cf, 1 time-killers.tk, 1 time-pro.de, 1 -time.am, 1 +time.am, 0 time.cy, 1 time.ge, 1 time.gov, 1 @@ -146591,6 +146555,7 @@ time.sh, 1 time2060.ru, 1 time2choose.com, 1 +time2time.ru, 1 timeai.io, 1 timebomb.tk, 1 timebookings.cf, 1 @@ -146633,8 +146598,8 @@ timertomato.com, 1 timerway.com, 1 timescrypto.com, 1 -timesdelphic.com, 1 timesedlen.dk, 1 +timeseller.ru, 1 timeserver0.de, 1 timeserver1.de, 1 timeserver2.de, 1 @@ -146674,7 +146639,6 @@ timmdek.co.za, 1 timmerbedrijfpauel.nl, 1 timmermansadministratie.nl, 1 -timmistudio.com, 1 timmyrs.de, 1 timnash.co.uk, 1 timnegocia.com.br, 0 @@ -146682,12 +146646,10 @@ timniclasdemisch.de, 1 timniclasdemisch.eu, 1 timo-viveen.nl, 1 -timochan.cn, 1 timogrossenbacher.ch, 1 timonenko.cf, 1 timonline.tk, 1 timonrieger.de, 0 -timopark.com, 1 timosfoodbar.nl, 1 timotheeduran.com, 1 timotheories.gr, 1 @@ -146761,7 +146723,6 @@ tinneke.tk, 1 tinnhanhvietnam.tk, 1 tino-dtb.de, 1 -tinselandtwigllc.com, 1 tint.edu.in, 1 tintamas.tk, 1 tinte24.de, 1 @@ -146796,6 +146757,7 @@ tinylan.com, 1 tinylink.cf, 1 tinylotta.com, 1 +tinypixels-app.com, 1 tinyproxy.cf, 1 tinyproxy.ga, 1 tinyspeck.com, 1 @@ -146959,7 +146921,7 @@ tk-its.net, 1 tk-its.org, 1 tk2net.com, 1 -tkach.in.ua, 1 +tk3ka.ru, 1 tkacz.pro, 1 tkafinearts.net, 1 tkanemoto.com, 0 @@ -147046,6 +147008,7 @@ tmbergtmberg.tk, 1 tmbpublicite.com, 1 tmbservis.cz, 1 +tmc-consulting.com, 1 tmc.com.mt, 1 tmcjobs.com, 1 tmcrew.org, 1 @@ -147073,6 +147036,7 @@ tmredondela.tk, 1 tmrservices.net, 1 tmshea.com, 1 +tmslr.org, 1 tmstats.fr, 1 tmt.band, 1 tmtanalysis.com, 1 @@ -147109,6 +147073,7 @@ tnt.construction, 0 tnt2k.de, 1 tntbooks.ca, 1 +tntcars.pl, 1 tntware.com, 1 tnurocancer.com, 1 tnusedoil.gov, 1 @@ -147153,6 +147118,7 @@ tobias-sachs.de, 1 tobias-weidhase.de, 1 tobias.gr, 1 +tobias4.com.au, 1 tobiasbrunner.net, 1 tobiasconradi.com, 1 tobiase.de, 1 @@ -147233,7 +147199,6 @@ toddmissiontx.gov, 1 toddvbanks.com, 1 todeva.com, 1 -todo.is, 0 todobus.tk, 1 todobuscadores.tk, 1 todocracy.com, 1 @@ -147270,6 +147235,7 @@ tofa-koeln.de, 1 tofilmhub.com, 1 tofliving.nl, 1 +toformat.com, 1 tofu.cf, 1 tofu.kim, 1 tofuixi.com, 1 @@ -147308,6 +147274,7 @@ tokelaunso.tk, 1 token.im, 1 token2049.com, 1 +tokenfellow.com, 1 tokenizedhq.com, 1 tokenlabs.network, 1 tokenlon.im, 0 @@ -147391,6 +147358,7 @@ tollywood.ga, 1 tolmaidis.com, 1 tolnavar.hu, 1 +tologa-location.be, 1 tolplaatwerk.nl, 1 tolstoevsky.tk, 1 tolucreaciones.com, 1 @@ -147488,7 +147456,6 @@ tomm.yt, 1 tomma.tk, 1 tommasocornelio.com, 1 -tommi.space, 1 tommic.eu, 0 tommybrown.ru, 1 tommyemo.com, 1 @@ -147516,7 +147483,6 @@ tomrichards.net, 1 tomrunting.pro, 1 toms.ovh, 1 -tomschlick.com, 1 tomsdevsn.me, 1 tomsgastroguide.com, 1 tomsk-news.net, 1 @@ -147564,6 +147530,7 @@ tonegidoarchief.nl, 1 toneknowledge.com, 1 tonemadison.com, 0 +toneofchoice.se, 1 toner24.at, 1 toner24.co.uk, 1 toner24.es, 1 @@ -147578,7 +147545,6 @@ tonerkurier.de, 1 tonermaus.de, 1 tonermonster.de, 1 -tonetempo.com, 1 tonex.de, 1 tonex.nl, 1 tongdaiviettel.com.vn, 1 @@ -147669,6 +147635,7 @@ toolsu.com, 1 tooltester.com, 1 tooltot.com, 0 +toolynest.com, 1 toolzone.cz, 1 toom-baumarkt.de, 1 toom.de, 1 @@ -147817,7 +147784,6 @@ topfd.net, 1 topfivepercent.co.uk, 1 topflightwildlife.com, 1 -topfood.club, 1 topfrags.pl, 1 topfreeporn.com, 1 topfx.com, 1 @@ -147825,6 +147791,7 @@ topgallant.gq, 1 topgoogle.com, 1 topgshop.ru, 1 +topgsm.pl, 1 toph.co, 1 tophat.studio, 1 tophatpuffin.com, 0 @@ -147865,6 +147832,7 @@ topnado.tk, 1 topnec.org, 1 topnet.tk, 1 +topnetmart.com, 1 topnews.gq, 1 topnews333.cf, 1 topnews333.tk, 1 @@ -147887,7 +147855,6 @@ toppercan.es, 1 topporn.me, 1 topprice.ua, 1 -toppsnfts.com, 1 toppstugansundbyberg.se, 1 topradiosbrasil.tk, 1 toprandi.com, 1 @@ -147971,7 +147938,6 @@ torch.security, 0 torchbearer.tk, 1 torchmc.ru, 1 -torchonline.com, 1 tordenskjold.de, 1 tordo.net, 1 toreni.us, 1 @@ -148099,7 +148065,6 @@ tossitaway.tk, 1 tosteberg.se, 0 tot.money, 0 -totaku.ru, 0 total-chaos.tk, 1 total-deco.eu, 1 total-destruction.tk, 1 @@ -148152,7 +148117,6 @@ tote.co.uk, 1 totemgames.tk, 1 tothetopmentoring.com, 1 -totheweb.com, 1 totlan.tk, 1 totnastic.tk, 1 toto-realestate.com, 1 @@ -148164,7 +148128,6 @@ totositetv.net, 1 totp.fyi, 1 totsglobal.com, 1 -tottalbattle.com, 1 tottoya.com, 1 totugo.com, 1 totuus.sk, 1 @@ -148194,6 +148157,7 @@ touchweb.be, 1 touchweb.ch, 1 touchweb.fr, 1 +toufy.me, 1 tough-construction.com, 1 toughcodes.com, 1 toughcoding.net, 1 @@ -148560,7 +148524,6 @@ townofwrightstownwi.gov, 1 townofwyomingwi.gov, 1 townresults.ga, 1 -townscorereport.com, 1 townsendhotel.com, 1 townshendvt.gov, 1 townshipoflower.org, 1 @@ -148602,7 +148565,6 @@ toystory3.ga, 1 toyventure.ga, 1 tozawa.site, 1 -tozdev.com, 1 tp-genie.com, 1 tpa.or.th, 0 tpala-pg.fr, 1 @@ -148624,7 +148586,6 @@ tpetrov.com, 1 tpf.hk, 1 tpgozd.si, 1 -tpi-polytechniek.com, 1 tpiada.tk, 1 tpk-parma.ru, 1 tpkbathrooms.com.au, 1 @@ -148670,6 +148631,7 @@ trace.moe, 1 trace2race.com, 1 tracebit.com, 1 +tracecompass.com, 1 traceflix.com, 1 traceheatinguk.co.uk, 1 tracelight.io, 0 @@ -148724,7 +148686,6 @@ tracktunnel.com, 1 trackura.com, 1 trackyourlogs.com, 1 -tractareautocluj.ro, 1 tractariauto.tk, 1 tractarimvbcluj.ro, 1 tractive.com, 1 @@ -148779,7 +148740,6 @@ tradesolution.no, 1 tradesrenovations.ca, 1 tradet.fi, 1 -tradetaurex.com, 1 tradeview.eu, 1 tradeville.ro, 1 tradewindsdental.com, 1 @@ -148787,7 +148747,6 @@ tradexbank.ch, 1 tradexpress.ch, 1 tradezlist.tk, 1 -tradgardsmart.se, 1 tradik.com, 1 tradinews.com, 1 tradinews.fr, 1 @@ -148856,7 +148815,6 @@ trail-alps.ch, 1 trail-alps.com, 1 trail.pink, 1 -trailblazercommunitygroups.com, 1 trailblazers.tk, 1 trailcloud.ink, 1 trailerparty.com, 1 @@ -149016,6 +148974,7 @@ transfigurewizard.com, 1 transformaniatime.com, 1 transformation.gouv.fr, 1 +transformation.tf, 1 transformationsnetzwerk-muensterland.de, 1 transformersmmdb.tk, 1 transformyourmarketing.com, 1 @@ -149149,6 +149108,7 @@ 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 @@ -149195,7 +149155,7 @@ traveladdiction.tk, 1 traveladventure.ml, 1 travelafricamag.com, 1 -travelairtravel.com, 1 +travelaiengineer.pro, 1 travelamm.com, 1 travelanchor.ga, 1 travelandtourism.tk, 1 @@ -149212,7 +149172,6 @@ travelcenter.tk, 1 travelchannel.ml, 1 travelcharm.ga, 1 -travelcheapdeals.com, 1 travelchinawith.me, 1 travelcircus.ga, 1 travelclinic.ml, 1 @@ -149222,6 +149181,7 @@ travelcollections.ga, 1 travelcolor.ga, 1 travelcompany.tk, 1 +travelcore.io, 1 travelcrown.ga, 1 traveldir.ga, 1 traveldodge.ga, 1 @@ -149240,7 +149200,6 @@ travelfeature.ga, 1 travelfield.org, 1 travelfiesta.ga, 1 -travelflighthotel.com, 1 travelfoot.com, 1 travelfriend.tk, 1 travelfusion.com, 1 @@ -149383,6 +149342,7 @@ treasurecoastconnector.com, 1 treasureislandbeads.ga, 1 treasuretrooperguide.tk, 1 +treasuretrove.nl, 1 treasury.gov.lk, 1 treasurydirect.gov, 1 treasuryhunt.gov, 0 @@ -149392,6 +149352,7 @@ treatyoself.com.au, 1 trebilfoundationsystems.com, 1 trebnie.nl, 1 +treborintl.com, 1 trecebits.com, 1 tredegar.com, 1 tredegarsurfaceprotection.com, 0 @@ -149401,7 +149362,7 @@ tree0.xyz, 1 treebaglia.xyz, 1 treecycle.com.au, 1 -treehousemidigama.com, 0 +treehousemidigama.com, 1 treehouseresort.nl, 1 treeinspection.com, 1 treeliss.com.br, 1 @@ -149528,9 +149489,10 @@ trfmn.gov, 1 trharitasi.com, 1 trhastane.com, 1 -trhknih.cz, 1 +trhknih.cz, 0 tri.gg, 1 triad.earth, 1 +triadstop.com, 1 triage.clinic, 1 triage.md, 1 triageclinic.com, 1 @@ -149586,7 +149548,6 @@ tributh.net, 1 tributh.tk, 1 tributoconsuegra.tk, 1 -tricare.mil, 1 tricefy4.com, 1 tricherenligne.com, 1 triciaree.com, 0 @@ -149685,6 +149646,7 @@ 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 @@ -149729,7 +149691,6 @@ trippers.info, 1 trippinktattoos.com, 1 trips4foodies.com, 1 -tripstorome.com, 1 triptap.ru, 1 triptravels.tk, 1 triptych.is, 1 @@ -149760,7 +149721,6 @@ triumphgroup.com, 1 triumphmotorcycles.co.uk, 1 triventsc.com, 1 -trivid.in, 1 trividtech.in, 1 triwan.sk, 1 trixi.com, 1 @@ -149774,6 +149734,7 @@ trkmakine.com.tr, 1 trkpuls.tk, 1 trksystems.com, 1 +trkye.com, 1 trlu867459.eu.org, 1 trmgo.de, 1 tro.bar, 1 @@ -150278,7 +150239,7 @@ tst-band.tk, 1 tstr.io, 1 tstrom.net, 1 -tsu.re, 1 +tsu.re, 0 tsuda-dental-ortho.info, 1 tsudakahama.tech, 1 tsueri.cloud, 1 @@ -150338,8 +150299,8 @@ 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 @@ -150351,7 +150312,6 @@ ttr-home.com, 1 ttr3.eu, 1 ttrade.ga, 1 -tts-assessments.com, 1 ttshapn.org, 1 ttshnurses.org, 1 ttspttsp.com, 1 @@ -150393,7 +150353,6 @@ tubexxxone.com, 1 tubing.cf, 1 tublat.com, 1 -tubs4fun.co.uk, 1 tubsof.fun, 1 tubul.net, 1 tubuscador.tk, 1 @@ -150411,7 +150370,6 @@ tucsonpcrepair.com, 1 tucsonsewerscopes.com, 1 tucuatro.com, 1 -tucuxi.org, 1 tudatosantejmentesen.hu, 1 tudatosdori.hu, 1 tudinerito.tk, 1 @@ -150430,7 +150388,6 @@ tuespr.com, 1 tuestilo.nl, 1 tuev-hessen.de, 1 -tufelicitacion.info, 1 tuffdall.as, 1 tuffmail.net, 1 tuffsruffs.se, 1 @@ -150452,6 +150409,7 @@ tuinhout-compleet.nl, 1 tuinieren.tk, 1 tuinmeubelkorting.nl, 1 +tuinvogelsenzo.nl, 1 tuitle.com, 1 tuja.hu, 1 tujardin.casa, 1 @@ -150495,11 +150453,11 @@ tulisan.tk, 1 tull.tk, 1 tuller.tk, 1 +tullphone.com.mx, 1 tulocura.tk, 1 tulosleep.com, 1 tulpawiki.org, 1 tulsa.tech, 1 -tulsafathers.com, 1 tulsameetingroom.com, 1 tulsaworld.com, 1 tulumcosmeticos.com.br, 1 @@ -150568,8 +150526,10 @@ tuppennysfireplace.com, 1 tuppersexmadrid.com.es, 1 tupperwaresalamanca.com, 1 +tuprag.com.tr, 1 tupsicoayuda.com, 0 tupugoya.org, 1 +tupyia.com, 1 tur.bo, 1 tur17.com, 1 turacoz.com, 1 @@ -150687,12 +150647,11 @@ turnalikoyu.tk, 1 turnaroundinsights.com, 1 turnbacktogod.com, 1 -turncircles.com, 1 turneragsupply.com, 0 turneroregon.gov, 1 turnet.tk, 1 turnierplanung.com, 1 -turnkey-ips.com, 1 +turnkey-ips.com, 0 turnkeycybersecurityandprivacysolutions.com, 1 turnningpoint.xyz, 1 turnoffmonitor.com, 1 @@ -150711,7 +150670,6 @@ turquoise.health, 1 turquoisetassel.com, 1 turretlabs.io, 1 -tursiae.org, 1 turtle.ai, 0 turtle.ky, 1 turtlecomputers.net, 1 @@ -150786,7 +150744,6 @@ tuttoandroid.net, 1 tuttohackintoshcydiajailbreak.org, 1 tuttonotizie.eu, 1 -tuttopappagalli.it, 1 tuttoperlestetica.com, 1 tutu.green, 1 tutu.ro, 1 @@ -150797,6 +150754,7 @@ tuva-news.net, 1 tuvankinhdoanhonline.com, 1 tuvanmat.com, 1 +tuvi.es, 1 tuwaner.com, 1 tuwima48.pl, 1 tuxamca.com, 1 @@ -150868,6 +150826,7 @@ tvfr.gov, 1 tvgsc.sg, 1 tvguide.com, 1 +tview.co.uk, 1 tvindia.tk, 1 tvipper.com, 1 tvk.tirol, 1 @@ -150903,7 +150862,6 @@ tvs-autoserv.de, 1 tvs-virtual.cz, 1 tvseasons.tk, 1 -tvseries.info, 1 tvseznam.cz, 1 tvseznamcz.cz, 1 tvsheerenhoek.nl, 1 @@ -150919,7 +150877,6 @@ 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 @@ -150962,6 +150919,7 @@ twfwd.email, 1 twg2029.com, 1 twhc.org.au, 1 +twice.vn, 1 twidy.jp, 0 twidy.uk, 1 twigandolive.com, 1 @@ -151025,7 +150983,6 @@ twobitbusker.com, 1 twobridges.co.uk, 1 twobrothersbbq.com, 0 -twobrothersinn.com, 1 twocantalk.ca, 1 twoconnect.com, 0 twocornertiming.com, 1 @@ -151061,21 +151018,24 @@ twtf.org.uk, 1 twtr.email, 1 twwd.de, 1 +twzrd.xyz, 1 tx577.com, 1 txblackbeltacademy.com, 1 txbooster.com, 1 +txdesignremodel.com, 1 txferretrescue.org, 1 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 txsmartbids.gov, 1 txsmartbuy.gov, 1 txtd.io, 1 -txtdb.com, 0 +txtdb.com, 1 txtdirect.com, 1 txtdirect.dev, 1 txtdirect.io, 1 @@ -151092,7 +151052,6 @@ ty5998.com, 1 ty613.com, 1 ty637.com, 1 -ty705.com, 0 ty723.com, 0 ty736.com, 1 ty791.com, 1 @@ -151177,6 +151136,7 @@ typist.tech, 1 typosphere.fr, 1 typr.com, 1 +tyr-x.com, 1 tyr0wl.com, 1 tyrael.eu, 1 tyraga.ga, 1 @@ -151187,6 +151147,7 @@ tyresales.com.au, 1 tyrkey.tk, 1 tyrocity.com, 1 +tyrolit-abrasivegrains.com, 1 tyronega.gov, 1 tyroola.co.id, 1 tyroola.co.nz, 1 @@ -151385,7 +151346,6 @@ ubuntu18.com, 1 ubuntuproductions.fi, 1 ubutovo.ga, 1 -ubuy.ae, 1 ubwash.re, 1 ubytovanihyncice.cz, 1 ubytovnastrazske.sk, 1 @@ -151397,6 +151357,7 @@ ucb.com, 1 ucbconcierge.jp, 1 ucbostad.se, 1 +ucca.online, 1 uccbenefits.ca, 1 ucch.be, 0 uccisme.net.ua, 1 @@ -151488,6 +151449,7 @@ uel-thompson-okanagan.ca, 1 ueliexpress.ch, 1 uelzen.online, 1 +uem.org.in, 1 uerkheim.ch, 1 uesaz.com, 1 uesc.org, 1 @@ -151505,15 +151467,12 @@ 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 @@ -151612,7 +151571,7 @@ ukdefencejournal.org.uk, 1 ukdri.ac.uk, 1 ukem.co.uk, 1 -ukformify.co.uk, 1 +ukformify.co.uk, 0 ukforum.net, 1 ukhas.net, 1 ukimmigration.law, 1 @@ -151637,7 +151596,6 @@ ukozliku.cz, 0 ukpr.group, 1 ukpropertyrescue.com, 1 -ukpropertyretrofit.com, 1 ukraflora.ua, 1 ukrainci.com.ua, 1 ukraine-standart.com.ua, 1 @@ -151646,6 +151604,7 @@ 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 @@ -151737,10 +151696,12 @@ ultra.law, 1 ultrabkk.com, 1 ultrablock.org, 1 +ultrabuilds.com, 1 ultracentr.ml, 1 ultracoupon.net, 1 ultrafine.cf, 1 ultrahang-maganrendeles.hu, 1 +ultrakbd.com, 1 ultralife.cf, 1 ultraman.tk, 1 ultraonline.ml, 1 @@ -151857,7 +151818,6 @@ unbabel.com, 1 unbanked.com, 1 unbelievableplaces.de, 1 -unbelievaboat.com, 1 unbioctium.com, 1 unbl.eu.org, 1 unblockat.tk, 1 @@ -151921,6 +151881,7 @@ underwear-fashion.tk, 1 underwood.tk, 1 underwoodpatents.com, 1 +underworldechoesrecords.com, 1 underworlds.tk, 1 underwriting.ai, 1 undesk.com.br, 1 @@ -151974,7 +151935,6 @@ ungrafakta.cf, 1 ungrafakta.gq, 1 ungrafakta.tk, 1 -unhabitat.org, 1 unhappy.tk, 1 uni-arts.com, 1 uni-chem.rs, 1 @@ -152047,6 +152007,7 @@ unifashion.ro, 1 unifestal.com, 1 unifiednetwork.me, 1 +unifiedradios.com, 1 unifiedwellness.ca, 1 unifimf.com, 1 uniflow360.com, 1 @@ -152054,6 +152015,7 @@ uniformd.co.uk, 1 uniformebateriasheliar.com.br, 1 unify.id, 1 +unigamity.com, 1 unihifi.com, 1 unihostbrasil.com.br, 1 unik.bg, 1 @@ -152143,7 +152105,6 @@ 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 @@ -152155,6 +152116,7 @@ unitedbusinessbank.com, 1 unitedcall.de, 1 unitedcyberdevelopment.com, 1 +unitedearth.one, 1 unitedkingdoms-guild.com, 1 unitedliners.com, 1 unitedlisbon.school, 1 @@ -152176,7 +152138,6 @@ unitel2000.de, 0 unitencup.tk, 1 unither.com, 1 -unitil.com, 1 unitingwa.org.au, 0 unitir.gq, 1 unitizer.com, 1 @@ -152190,7 +152151,6 @@ unityfactory.io, 1 unityor.gov, 1 unitysavannah.org, 1 -unityseguros.com, 1 unitysyndicate.tk, 1 unityvox.com, 1 uniuni.info, 1 @@ -152244,7 +152204,6 @@ universityhousemates.co.uk, 1 universityhousemates.uk, 1 universityinmaryland.com, 1 -universityofbohol.edu.ph, 1 universityofedinburgh.org.uk, 1 universityofnarowal.ga, 1 universitystar.com, 1 @@ -152268,7 +152227,6 @@ unixauto.ro, 1 unixauto.sk, 1 unixer.tk, 1 -unixforum.org, 1 unixhost.ga, 1 unixteam.de, 1 unixtime.date, 1 @@ -152322,7 +152280,6 @@ unoccupyabq.org, 1 unocha.org, 1 unofficialbpb.tk, 1 -unolab.cz, 1 unomodels.com, 1 unoodostoques.tk, 1 unope.ml, 1 @@ -152335,7 +152292,6 @@ unosconotros.com, 1 unovosti.tk, 1 unp.me, 1 -unpar.ac.id, 1 unparenting.com, 1 unpi06cannes.fr, 1 unpkg.com, 1 @@ -152387,7 +152343,6 @@ unternehmensbewertung.pro, 1 unternehmerrat-hagen.de, 1 unternimmteam.de, 1 -untethereddog.com, 0 unti.me, 1 unti.tk, 1 untrading.org, 1 @@ -152431,7 +152386,6 @@ upakovka-podarkov.tk, 1 upandatom.biz, 1 upandrunningtutorials.com, 1 -upanh.org, 1 upar.org, 1 upay.uz, 1 upbad.com, 1 @@ -152480,6 +152434,7 @@ 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 @@ -152524,6 +152479,7 @@ uportal.tk, 1 uppercloud.cf, 1 upperglass.co.uk, 1 +uppergroup.co.za, 1 upperinc.com, 1 upperskagittribe-nsn.gov, 1 uppfinnarenc.tk, 1 @@ -152564,7 +152520,6 @@ upskilllearning.ml, 1 upskirtmania.tk, 1 upsocial.ga, 1 -upsocial.pp.ua, 1 upstaff.com, 1 upstairs.one, 1 upstart.com, 1 @@ -152682,6 +152637,7 @@ urbanxdevelopment.com, 0 urbest.io, 1 urbex-bretagne.fr, 1 +urbex.com.au, 1 urbex.link, 1 urbexdk.nl, 1 urbinat.eu, 1 @@ -152801,7 +152757,6 @@ usability.com.gr, 1 usability.gov, 1 usacarry.com, 1 -usacontainerllc.com, 1 usacrime.com, 1 usadba.net.ru, 1 usadepo.com, 1 @@ -152869,6 +152824,7 @@ use1.net, 1 usebosin.gq, 1 usebubbles.com, 1 +usecarscout.com, 1 used-laptop.in, 1 used255.xyz, 1 usedoilfieldhouses.com, 1 @@ -152967,6 +152923,7 @@ uspower.us, 1 uspsblog.com, 0 uspsoig.gov, 1 +uspsolutions.at, 1 usrspace.at, 1 uss-atlas.de, 1 ussee.org, 1 @@ -152985,7 +152942,6 @@ ustc.fun, 1 ustc.run, 1 ustg.net, 1 -ustoy.com, 1 ustr.gov, 1 ustreasuryetf.com, 1 ustugov.kiev.ua, 1 @@ -153152,7 +153108,6 @@ uxtly.com, 1 uy.search.yahoo.com, 0 uydutamircisiadana.com, 1 -uyghurian.com, 1 uygindir.ml, 1 uyguluyo.com, 1 uygur.org, 1 @@ -153221,7 +153176,6 @@ v2bv.win, 1 v2ex.com, 1 v2generalcontractors.com, 1 -v2x.sk, 1 v2xtls.org, 1 v36533.com, 1 v4itservices.com.au, 1 @@ -153271,11 +153225,11 @@ 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 @@ -153288,6 +153242,7 @@ vaclavambroz.eu, 1 vacorps.com, 1 vacpackmedical.net, 1 +vacs.network, 1 vacsafe.cc, 1 vacuna.gov, 1 vacunas.gov, 1 @@ -153308,6 +153263,7 @@ vadras.rs, 1 vadstudio.md, 1 vadstudio.site, 1 +vaeksthjulet.net, 1 vael.town, 1 vaerdivand.dk, 1 vaew.com, 1 @@ -153338,6 +153294,7 @@ vaidikapriya.pub, 0 vaiiya.org, 1 vail.gov, 1 +vailox.com, 1 vaindil.com, 1 vaioswolke.xyz, 0 vairuok.lt, 1 @@ -153425,7 +153382,6 @@ valiakhmetov.tk, 1 valiant.finance, 1 valiantprep.org, 1 -valianttms.com, 1 valice.com.au, 1 valid.com, 0 validateleads.com, 1 @@ -153452,6 +153408,7 @@ valkoi-konyvtar.tk, 1 valkoi-ksk.tk, 1 valkova.net, 1 +valkyrthreatintel.com, 1 valladolidlempira.tk, 1 vallansuunta.net, 1 vallartense.tk, 1 @@ -153524,6 +153481,7 @@ valueaddedonline.com, 1 valuelinksoftware.com, 1 valuemax.com.sg, 1 +valuemetric.gr, 1 valuemomentum.com, 1 valuemyhome.co.uk, 1 valuemyhome.uk, 1 @@ -153612,6 +153570,7 @@ vanderrijt.nl, 1 vanderstraeten.dynv6.net, 1 vanderzwet.net, 1 +vandeventures.net, 1 vandi.tk, 1 vandidaz.com, 1 vandiepen.com, 1 @@ -153719,7 +153678,6 @@ vapetaclope.cf, 1 vapevine.ca, 1 vapex.pl, 1 -vapify.pl, 1 vaplantatlas.org, 1 vapocial.com, 1 vapogang.cz, 1 @@ -153841,11 +153799,14 @@ 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 @@ -153860,7 +153821,6 @@ 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 @@ -153974,7 +153934,6 @@ vectorizenow.com, 1 vectorlabs.com, 1 vectortrack.com.au, 1 -vectorwish.com, 1 vectrafon.com, 1 vectrum.cf, 1 vedantalimited.com, 1 @@ -154003,7 +153962,7 @@ veg.lv, 0 vega-is.com, 1 vega-rumia.com.pl, 1 -vegaforeducation.com, 0 +vegaforeducation.com, 1 vegalanguageacademy.ca, 1 vegan-essen.tk, 1 vegan-friendly.co.il, 1 @@ -154046,7 +154005,6 @@ 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 @@ -154056,6 +154014,8 @@ veiligesmartcities.nl, 1 veiligthuistwente.nl, 1 veilletechno-it.info, 1 +veist.net, 1 +veist.org, 1 veittech.xyz, 1 vejanoticias.com.br, 1 vejaparki.lv, 1 @@ -154109,6 +154069,7 @@ velossa.gr, 1 velotours.ga, 1 velovelo.gq, 1 +veloxsuite.com, 1 velozavr.ru, 1 veloztaxi.com, 1 velpak21.com, 1 @@ -154121,6 +154082,7 @@ veluwerally2002.tk, 1 veluzian.com, 1 velvet-tarantula.tk, 1 +velvetboudoir.com, 1 velvetempire.tk, 1 velvetfishing.bg, 1 velvetia.no, 1 @@ -154129,6 +154091,7 @@ velvpay.com, 1 velyn.my.id, 1 vema-bg.com, 1 +vemm-reunion.org, 1 vemtambem.com, 1 vemviajar.pt, 1 venacifuentes.tk, 1 @@ -154263,6 +154226,7 @@ venturum.de, 1 venturum.eu, 1 venturum.net, 1 +ventuseo.com, 1 ventusnavigation.com, 1 venuescanner.com, 1 venuescanner.net, 1 @@ -154271,13 +154235,11 @@ venus-football-giveaway.co.uk, 0 venusbeautyproducts.in, 1 venusmed.clinic, 1 -venusplc.com, 1 venzeo.com, 1 veoconocimiento.com, 1 vepein.ga, 1 vepein.gq, 1 veply.com, 1 -ver-me.com, 1 ver.ma, 0 vera-1.ru, 1 verae.tk, 1 @@ -154321,7 +154283,6 @@ verdantnature.com, 1 verdensflag.dk, 1 verdeplus.net, 1 -verdesfoundation.org, 1 verdiclub.ru, 1 verdict.gg, 1 verdictfoodservice.com, 1 @@ -154411,6 +154372,7 @@ verkeersschoolrichardschut.nl, 1 verkeersschoolvanhouten.nl, 1 verkkovalmentajat.fi, 1 +verkore.com, 1 verkossa.tk, 1 verksampsykologi.com, 1 verlag-lq.at, 1 @@ -154492,6 +154454,7 @@ versus-hair.com, 1 versus-projects.com, 1 versusforum.tk, 1 +vert.website, 1 vertanex.com, 1 vertaxaccountants.co.uk, 1 vertebrates.com, 1 @@ -154550,6 +154513,7 @@ veryapt.com, 1 verybin.com, 1 veryestate.com, 1 +veryfi.com, 1 veryfinecommentary.tk, 1 verygoodwebsite.ca, 1 veryhome.com.pe, 1 @@ -154626,7 +154590,6 @@ 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 @@ -154684,7 +154647,6 @@ vfree.org, 0 vfsglobal.com, 1 vfu.cz, 1 -vfxstudy.com, 1 vg-resource.com, 1 vg43.pt, 1 vgatest.nl, 1 @@ -154702,7 +154664,6 @@ vgrd-fleet-kunden.de, 1 vgropp.de, 1 vgyse.hu, 1 -vgywm.com, 1 vhelio.org, 1 vhiweb.com, 1 vhmf.nl, 1 @@ -154720,7 +154681,6 @@ viabill.com, 1 viacdn.org, 1 viacon.io, 1 -viaconecta.co, 1 viacu.org, 1 viaelegancestore.com.br, 1 viaenginfeed.com, 1 @@ -154757,6 +154717,7 @@ vibecodescaler.com, 1 vibehire.co.uk, 1 vibeonline.tk, 1 +vibesolutions.eu, 1 vibesstudiobd.com, 1 vibgyyor.com, 1 vibioh.fr, 1 @@ -154783,7 +154744,6 @@ viciadasemesmaltes.com, 1 vician.cz, 1 vicicode.com, 1 -vicieux.art, 1 vicinityindustrial.com.au, 1 vicioanimal.pt, 1 viciousflora.com, 1 @@ -154793,6 +154753,7 @@ vickyflipfloptravels.com, 0 vickyhundt.com, 1 vickylarraz.tk, 1 +vickynoriegacoach.com, 1 vickyoliver.tk, 1 vicmatus.com, 1 vico.vn, 1 @@ -154912,7 +154873,6 @@ videomaker.it, 1 videomaniya.ml, 1 videomarketermastery.com, 1 -videonieuwsbericht.nl, 1 videonika.tk, 1 videonovinky.cz, 1 videopediablogs.tk, 1 @@ -155043,7 +155003,6 @@ viewer.ga, 1 viewflix.win, 1 viewfreescore.com, 1 -viewgardencentre.co.uk, 1 viewing.nyc, 1 viewpointsfromfacebook.com, 1 views4you.com, 1 @@ -155068,8 +155027,6 @@ vignette.eco, 1 vignobles-querre.com, 1 vignoblesdeletat.ch, 1 -vigo-krankenversicherung.de, 1 -vigo-select.de, 1 vigoinvestments.com, 1 vigordev.com, 1 vigoritout.com, 1 @@ -155086,7 +155043,7 @@ viikko.ml, 1 viilari.fi, 1 viilup.com, 1 -viio.me, 1 +viio.me, 0 viitanen.xyz, 1 vijay-international.com, 1 vijayam.ml, 1 @@ -155094,7 +155051,6 @@ vijn.io, 1 vijoe.org, 1 vijverbenodigdheden.nl, 1 -vik.im, 1 vikalbino.com, 1 vikalbino.com.br, 1 vikalpgupta.com, 0 @@ -155126,6 +155082,7 @@ viktorprevaric.eu, 1 viku.fi, 1 vikweb.hu, 1 +viky.hu, 1 vikyho.cz, 1 vila-senov.cz, 1 vila11.com.br, 1 @@ -155145,6 +155102,7 @@ vilavyhlidka.cz, 1 vilawatt.cat, 1 vilaydin.com, 1 +vilcon.dk, 1 vildlaithailand.cf, 1 vildlaithailand.gq, 1 vildlaithailand.tk, 1 @@ -155305,6 +155263,7 @@ viltsu.net, 1 vilvoordelaan.be, 1 vima.ch, 0 +vimar.ie, 1 vimbom.tk, 1 vimbowen.xyz, 1 vimeo.com, 1 @@ -155353,7 +155312,6 @@ vinciu.com, 0 vincour.info, 1 vincparca.com, 1 -vinculomartech.com.br, 1 vindafrid.com, 1 vindafrid.nu, 1 vindafrid.se, 1 @@ -155370,7 +155328,6 @@ vinesauce.info, 1 vineta.tk, 1 vinetalk.net, 1 -vineyardchurches.org.uk, 1 vineyardscartersville.com, 1 vingaardshus.dk, 1 vingahiss.se, 1 @@ -155411,6 +155368,7 @@ vintagejeeps.net, 1 vintagemakeupguide.com, 1 vintageportgifts.co.uk, 1 +vintageroadtripcollection.com, 1 vintagetoydepot.tk, 1 vintagetrailerbuyers.com, 1 vintagewedding.tk, 1 @@ -155427,6 +155385,7 @@ vinzhelmets.com, 1 vinzite.com, 1 vinzlocks.com, 1 +viointel.com, 1 violapiekut.com, 1 violarenate.com, 1 violetfairy.tk, 1 @@ -155446,6 +155405,7 @@ vip-soski.tk, 1 vip-ssl.com, 1 vip-transfer.by, 1 +vip21bit.com, 1 vip4553.com, 1 vip45bet365.com, 0 vip5414.com, 1 @@ -155497,7 +155457,6 @@ vir-tec.eu, 0 viradadrums.com, 1 virajtharinda.tk, 1 -viral-labs.com, 1 viral-loops.com, 1 viral32111.com, 1 virala.tk, 1 @@ -155520,6 +155479,7 @@ virgi.tk, 1 virgil.gg, 1 virgilsecurity.com, 1 +virginia.org, 1 virginiaabc.gov, 1 virginiabeachcoolsculpting.com, 1 virginiagardens-fl.gov, 1 @@ -155560,7 +155520,6 @@ 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 @@ -155596,10 +155555,10 @@ 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 @@ -155631,6 +155590,7 @@ visapro.me, 1 visaprolaw.com, 1 visarewardprogramplatform.com, 1 +visaright.eu, 1 visartdecor.com.ua, 1 visasofoz.com, 1 visasytrabajo.com, 1 @@ -155641,7 +155601,6 @@ visatitans.com, 1 visaxplorer.com, 1 visaya.com.co, 1 -visaynou.com, 1 visceralsound.ca, 1 viscondedemaua.com.br, 1 visdetech.com, 1 @@ -155786,6 +155745,7 @@ visunext.de, 1 visuri.de, 1 visware.com, 1 +visy.com, 1 visyeva.hu, 1 vitaalcheck.nl, 1 vitaalfitcoaching.nl, 1 @@ -155823,6 +155783,7 @@ vitallispsy.de, 1 vitallispsy.eu, 1 vitallispsy.nl, 1 +vitalmetrics.org, 1 vitalmobility.ca, 1 vitalpartnerships.com, 1 vitalpraxis-lietz.de, 1 @@ -155839,6 +155800,7 @@ vitaminmovie.ga, 1 vitamins-and-minerals.com, 1 vitamixromania.ro, 1 +vitamove.ai, 1 vitanetonline.com, 1 vitapingu.de, 1 vitario.eu, 1 @@ -155963,7 +155925,6 @@ vivirenelmundo.com, 1 vivirenelpoblado.com, 1 vivirenflorida.com, 1 -vivmoris.com, 1 vivo.cam, 1 vivoldi.com, 1 vivos.co.il, 1 @@ -155992,7 +155953,6 @@ vizyonpara.com, 1 vizzarragrup.com, 1 vjeff.com, 1 -vjeff.net, 1 vjk.dk, 1 vjn.ee, 1 vjshop.vn, 1 @@ -156046,7 +156006,6 @@ vkolledzhe.tk, 1 vkox.com, 1 vkrutilca.tk, 1 -vksportphoto.com, 1 vkst-field-trials.dk, 1 vkstaticcdn.ru, 1 vkstaticcontent.ru, 1 @@ -156113,6 +156072,7 @@ vlijmscherrup.tk, 1 vlike.ml, 1 vloeck.de, 1 +vloenhout.nl, 1 vloggerfaire.com, 1 vloggerspace.tk, 1 vlogmusic.io, 1 @@ -156127,7 +156087,6 @@ 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 @@ -156192,15 +156151,13 @@ vns6868.vip, 1 vns68722.com, 1 vns6969.com, 0 -vnsc.org, 1 +vnsc.org, 0 vntyper.org, 1 -vnumngr.com, 1 vnxf.vn, 1 vnya.loan, 1 voanaboa.pt, 1 voapt.by, 1 voatz.com, 1 -voboxcore.com, 1 vocably.de, 1 vocalcoach.com, 1 vocaloid.my, 1 @@ -156222,6 +156179,7 @@ vodicak.info, 1 vodicaknapocitac.sk, 1 voditel.ua, 1 +vodna.com.ua, 1 vodotech.sk, 1 vodpay.com, 1 vodpay.net, 1 @@ -156472,6 +156430,7 @@ volusiaelections.gov, 1 volusiasheriff.gov, 1 volusiavotes.gov, 1 +volveraslapelicula.com, 1 volvo-klub.cz, 1 volvo1800es.tk, 1 volvoklub.cz, 1 @@ -156501,13 +156460,11 @@ voodoobtc.com, 1 voodoocat.cf, 1 voodooshaman.com, 1 -vooh.in, 0 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 @@ -156703,6 +156660,7 @@ vpnalert.com, 1 vpnemail.com, 1 vpnent.com, 1 +vpngate-connector.com, 1 vpnhongkong.gq, 1 vpnhub.com, 1 vpnpro.com, 1 @@ -156731,7 +156689,6 @@ vpsou.com, 1 vpspenergy.com, 1 vpsport.ch, 1 -vpsrussia.com, 1 vpsssl.com, 1 vpstrial.net, 1 vpsvz.cloud, 1 @@ -156791,7 +156748,6 @@ 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 @@ -156842,6 +156798,7 @@ vractive.pl, 1 vragenlijstsoftware.nl, 1 vragenvanproust.nl, 1 +vrallart.com, 1 vramoni.ru, 1 vran.ga, 1 vranckaertsitsolutions.be, 1 @@ -156920,10 +156877,9 @@ vroad.org, 1 vroedvrouwella.be, 1 vron.house, 1 -vroomvroomvroom.co.nz, 0 +vroomvroomvroom.co.nz, 1 vros.co.id, 1 vrostove.tk, 1 -vrp.moe, 1 vrpornsites.xxx, 1 vrre.ag, 1 vrre.at, 1 @@ -157036,7 +156992,6 @@ vtbclub.xyz, 1 vtbs.moe, 1 vtcourts.gov, 1 -vtcynic.com, 1 vtech.com, 1 vtechda.com, 1 vtechhealthcare.com, 1 @@ -157063,11 +157018,11 @@ vtvnetwork.org, 1 vtwonen.be, 1 vtwonen.nl, 1 +vuasach.net, 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 @@ -157101,6 +157056,7 @@ vulpix.uk, 1 vultrhxl.com, 1 vulva.observer, 1 +vulva.photos, 1 vumea.top, 1 vumerity.com, 0 vunn.com, 1 @@ -157134,7 +157090,7 @@ vvelzen.com, 1 vvg-vermietung.de, 1 vvlemmer.tk, 1 -vvlen.com, 1 +vvlen.com, 0 vvoip.org.uk, 1 vvpn.loan, 1 vvs.spb.ru, 1 @@ -157225,7 +157181,6 @@ w-graj.net, 1 w-hub.ru, 1 w-o-o.nl, 1 -w-oasis.co.jp, 1 w-p-k.de, 1 w-permission.com, 1 w-spotlight.appspot.com, 1 @@ -157368,15 +157323,12 @@ 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 @@ -157457,7 +157409,6 @@ walentynki.tk, 1 walesmaine.gov, 1 walhal.la, 1 -walhello.nl, 1 waligorska.pl, 1 walk.onl, 1 walkal.com, 1 @@ -157612,7 +157563,6 @@ wangzuan168.cc, 1 wanicki.pl, 1 wanilia.pl, 1 -wanjuhui.com, 1 wank.party, 1 wannabfit.nl, 1 wannaknow.tk, 1 @@ -157700,6 +157650,7 @@ warensecurity.com, 1 wareshoalssc.gov, 1 warezbook.org, 1 +warfare.com.br, 1 warfarina.com, 1 warfield.org.uk, 1 warfighters.de, 1 @@ -157748,6 +157699,7 @@ warringtonkidsbouncycastles.co.uk, 1 warringtonsownbuses.co.uk, 1 warriorofmars.com, 1 +warrnamboolaero.club, 1 warrock-es.tk, 1 warrs.com, 1 wars.aw, 1 @@ -157756,6 +157708,7 @@ warschild.org, 1 warsh.moe, 1 warships.cn, 1 +warsisawa.gr, 1 warstories.ca, 1 warszawa-pranie-dywanow.pl, 1 warszawska285.pl, 1 @@ -157769,6 +157722,7 @@ wartung.tk, 1 warubbermate.co.th, 1 warungmini-vanwou.nl, 1 +warungsiyas.com, 1 warwick.institute, 1 warwickbucks.gov, 1 warworld.ml, 1 @@ -157853,6 +157807,7 @@ 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 @@ -157862,6 +157817,7 @@ watchdreamer.com, 1 watchersrealm.tk, 1 watches-of-switzerland.co.uk, 1 +watchexpo.ru, 1 watchfinder.ae, 1 watchfinder.at, 1 watchfinder.au, 1 @@ -157902,6 +157858,7 @@ 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 @@ -158021,6 +157978,7 @@ 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 @@ -158032,7 +157990,9 @@ 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 @@ -158053,7 +158013,7 @@ wayfairertravel.com, 0 wayfarium.com, 1 wayflyer.com, 1 -wayizi.com, 1 +wayizi.com, 0 waymobetta.com, 1 wayna-tech.com, 1 waynecochran.net, 1 @@ -158080,6 +158040,7 @@ waytogrow.com, 1 waytoowoke.com, 1 waytt.cf, 1 +wazaap.be, 1 waze.com, 1 wazefaher.tk, 1 wazuh.com, 1 @@ -158107,6 +158068,7 @@ wbnet.eu, 1 wboeijen.nl, 1 wbolt.com, 1 +wbostrom.se, 1 wbpersonalmonitor.de, 1 wbpgroup.com.au, 1 wbphed.gov.in, 1 @@ -158130,6 +158092,7 @@ wcarc.ca, 0 wcatherinekendall.co.uk, 1 wcboost.com, 1 +wccbi.org, 1 wccsports.com, 1 wccu.coop, 1 wcei.com.au, 1 @@ -158223,6 +158186,7 @@ wearemarketing.com, 1 wearemojo.com, 1 wearemoso.nl, 1 +wearemullet.com, 1 wearenh.gov, 1 wearepapermill.co, 1 wearepapermill.com, 1 @@ -158248,6 +158212,7 @@ weather25.com, 1 weatherbell.com, 1 weatherbell.net, 1 +weatherfordfumc.com, 1 weatherguard.com, 1 weathermelon.io, 1 weathernet.co.uk, 1 @@ -158339,7 +158304,6 @@ webadiccion.net, 1 webadicta.net, 1 webadicto.net, 1 -webadish.co.uk, 1 webadmit.org, 1 webagenturschmid.ch, 1 webaholic.co.in, 1 @@ -158356,7 +158320,6 @@ webapplay.com, 1 webappperformance.com, 1 webapps-conception.fr, 1 -webappsec.shop, 1 webark.hu, 1 webart-factory.de, 1 webartex.ru, 1 @@ -158464,7 +158427,6 @@ webelement.sk, 0 webemployed.com, 1 webencrypt.org, 1 -webepc.it, 1 weber-immobilienberatung.de, 1 weber.com, 1 weber911.gov, 1 @@ -158473,7 +158435,7 @@ weberbasinut.gov, 1 weberelections.gov, 1 webers-testseite.de, 1 -webers-webdesign.de, 1 +webers-webdesign.de, 0 webescucha.tk, 1 webest.pl, 1 webexample.win, 0 @@ -158564,7 +158526,7 @@ weblate.com, 1 weblate.cz, 1 weblate.org, 1 -weblax.fr, 1 +weblax.fr, 0 weblead.vip, 1 weblegion.tk, 1 weblian.ml, 1 @@ -158624,14 +158586,14 @@ weboflies.tk, 1 webofthingsmarwane.xyz, 1 weboke.nl, 1 -weboperater.rs, 0 +weboperater.rs, 1 webowell.fr, 0 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 @@ -158715,7 +158677,6 @@ websiteservice.pro, 1 websitesthatwork.biz, 1 websitestudio.fr, 1 -websktop.com, 1 websmartlink.tk, 1 websoftba.gq, 1 websofts.co.in, 1 @@ -158790,7 +158751,6 @@ webwatcher.tk, 1 webwinkelwestland.nl, 1 webwit.pro, 1 -webworksnz.co, 0 webwweb.com.pl, 1 webyazilim.biz.tr, 1 webyrychle.cz, 1 @@ -158869,7 +158829,6 @@ weedgranadagrowshop.com, 1 weedistillery.com, 1 weedlife.com, 1 -weednews.co, 0 weedworthy.com, 1 weefriendskids.com, 1 week-numbers.org, 1 @@ -158878,13 +158837,13 @@ 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 weeklydcoupgen.com, 1 -weelam.ca, 1 weelzbahamas.com, 1 weemakers.fr, 0 weepycat.com, 1 @@ -158893,7 +158852,6 @@ weerstatistieken.nl, 1 weetalksls.com, 1 weetix.fr, 1 -weexend.com, 1 weezerosos.tk, 1 weezertabs.tk, 1 wefact.nl, 1 @@ -158918,6 +158876,7 @@ wegwijzerhvb.nl, 1 wehaa-server2.com, 1 wehaaserver.com, 1 +wehatech.vn, 1 wehealasone.gov.ph, 1 weho.gov, 1 wehrmacht.org, 1 @@ -158999,7 +158958,6 @@ welcomepowayan.tk, 1 welcometoohio.gov, 1 welcoop-logistique.com, 1 -welcorp.com, 1 weld.gov, 1 weldersnet.tk, 1 weldynz.co.nz, 1 @@ -159017,7 +158975,6 @@ welldoc.com, 0 welldocinc.com, 1 welldressedwalrus.com, 0 -wellen-reiten.com, 1 wellensteyn.ru, 1 weller.pm, 1 wellesleycosmeticsurgery.com, 1 @@ -159075,7 +159032,6 @@ welteneroberer.de, 1 weltengilde.de, 1 weltenhueter.de, 1 -weltentanzer.com, 0 weltraum.gg, 1 weltumradler.tk, 1 weltverschwoerung.de, 1 @@ -159083,7 +159039,6 @@ welty.co, 1 welty.io, 1 welty.me, 1 -wemad.com.au, 1 wemadegod.tk, 1 wemake.cx, 1 wemakeadifference.com.au, 1 @@ -159216,7 +159171,6 @@ wespringforward.com, 1 wesreportportal.com, 1 wessafety.net, 1 -wesseldijk.eu, 1 wesseling.de, 1 wesselius.tk, 1 wessner.co, 0 @@ -159305,6 +159259,7 @@ westmidlandsrailway.co.uk, 1 westmifflin.gov, 1 westmilwaukeewi.gov, 1 +westminster.fashion, 1 westminsterco.gov, 1 westminsternational.com.au, 1 westmodernclinic.com, 1 @@ -159365,7 +159320,6 @@ wetryrecipes.com, 1 wettbuero.de, 1 wetter.de, 1 -wettershus.se, 1 wetthost.com, 1 wetu.com, 1 wetumpkaal.gov, 1 @@ -159382,8 +159336,8 @@ wewritestuff.com, 1 wexfordbouncycastles.ie, 1 wexilapp.com, 1 +wexller.com, 1 weyerstall1880.de, 1 -weymouthslowik.com, 1 wf-bigsky-master.appspot.com, 1 wf-demo-eu.appspot.com, 1 wf-demo-hrd.appspot.com, 1 @@ -159439,7 +159393,7 @@ wh-guide.de, 1 wh.gov, 1 wh966.com, 0 -whadda.uk, 1 +whadda.uk, 0 whakamatutu.org.nz, 1 whale-tales.org, 1 whalecrew.com, 1 @@ -159483,6 +159437,7 @@ whatisinternetsecurity.net, 1 whatisipfix.com, 1 whatisl.ovh, 1 +whatismycountry.com, 1 whatismyip.help, 1 whatismypublicip.com, 1 whatisnetflow.com, 1 @@ -159630,6 +159585,7 @@ whitecollar.net, 1 whitecollarfraud.com, 1 whitecreekny.gov, 1 +whitedragonmartialarts.org, 1 whitefieldnhpd.gov, 1 whitefishtownshipmi.gov, 1 whitefordtownshipmi.gov, 1 @@ -159663,6 +159619,7 @@ whiteoak.org, 1 whitepack.ru, 1 whitepages.ml, 1 +whitepark.com.au, 1 whitepeaks.co.uk, 1 whitepeaks.fr, 1 whitepen.io, 1 @@ -159707,7 +159664,6 @@ whitmoreac.com, 1 whitneys2go.com, 1 whittle.in, 1 -whittlesfabrics.com, 1 whitworth.nyc, 1 whitworth.org, 1 whizkidpcservices.com, 1 @@ -159753,7 +159709,7 @@ whoneedstobeprimaried.today, 1 whong.media, 1 whonix.org, 1 -whoopee.my, 1 +whoopee.my, 0 whooshkaa.com, 1 whoownswhom.co.za, 1 whop.com, 1 @@ -159778,7 +159734,6 @@ why-brexit.uk, 1 why918.com, 0 whychoosebob.id.au, 1 -whyescort.com, 1 whyinsurance.me, 1 whyleavetown.com, 1 whynohttps.com, 1 @@ -159815,7 +159770,6 @@ wickedvibes.tk, 1 wickersmith.com, 1 wickerwoman.com, 0 -wicklowcountycricket.com, 1 wickrath.com, 1 wickrath.net, 1 wicstunvetgroup.co.uk, 1 @@ -159873,10 +159827,10 @@ wifi-hack.com, 0 wifi-names.com, 1 wifi-ooe.at, 1 -wifi.com.vn, 1 wifi.id, 1 wificonnect.cc, 1 wifidjelfa.com, 1 +wifiindosathifi.id, 1 wifimb.cz, 1 wifipineapple.com, 1 wifirst.net, 1 @@ -159890,8 +159844,6 @@ 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 @@ -160156,7 +160108,6 @@ wildwind.world, 1 wildwoodpolice-fl.gov, 1 wildwoodrockers.tk, 1 -wildworldimpact.com, 1 wildzap.ml, 1 wildzoopark.co.uk, 1 wildzoopark.com, 1 @@ -160164,7 +160115,7 @@ wilf1rst.com, 1 wilfert.cc, 1 wilfert.xyz, 1 -wilfredstephenanfield.com, 0 +wilfredstephenanfield.com, 1 wilfredswholesale.com.au, 1 wilfrid-calixte.fr, 0 wilhelm-nathan.de, 1 @@ -160211,7 +160162,7 @@ williamscomposer.com, 1 williamscountyoh.gov, 1 williamsflintlocks.com, 0 -williamshomeheat.co.uk, 0 +williamshomeheat.co.uk, 1 williamsigal.com, 1 williamsrecord.com, 1 williamstonmipd.gov, 1 @@ -160263,6 +160214,7 @@ wilmingtonohio.gov, 1 wilmingtonzen.tk, 1 wilmothgroup.com, 1 +wilo.com, 1 wils.jp, 1 wilshirelawfirm.com, 1 wilson-lincoln-wi.gov, 1 @@ -160296,6 +160248,7 @@ win-tech.net, 1 win.ch, 1 win11.ren, 1 +win21bit.com, 1 win5analysis.net, 1 win7stylebuilder.com, 0 win7tips.tk, 1 @@ -160362,7 +160315,7 @@ windsorite.ca, 1 windsornc.gov, 1 windsorrslsubbranch.com.au, 1 -windstreamhosting.com, 0 +windstreamhosting.com, 1 windsurfercrs.com, 1 windturbine.tk, 1 windvanetech.com, 1 @@ -160384,7 +160337,7 @@ winek.tk, 1 winenews.it, 1 wineparis.com, 1 -winerytoursanfrancisco.com, 1 +wineriesil.com, 1 winetable.se, 1 winfieldchen.me, 1 winfieldpa.gov, 1 @@ -160395,6 +160348,7 @@ 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 @@ -160466,6 +160420,7 @@ winter-elektro.de, 1 winter-leak.ml, 1 winter.ae, 1 +winter.vg, 1 winterarbitrationcenter.com, 1 winterbergwebcams.com, 1 wintercorn.com, 1 @@ -160479,7 +160434,6 @@ wintersproducts.nl, 1 winterstudies.ga, 1 winterthur.ch, 1 -winterwind-productions.com, 1 winterzine.cf, 1 winthropma.gov, 1 winthrythsrealm.com, 1 @@ -160604,7 +160558,6 @@ wiseupcorp.com, 1 wiseuplive.com.br, 1 wisewaynutrition.com, 1 -wish2025.com, 1 wishedu.com, 1 wishing3.com, 1 wishingyou.co.uk, 1 @@ -160706,6 +160659,8 @@ 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 @@ -160788,7 +160743,6 @@ wmmalls.com, 1 wmmi.org, 1 wmmkf.com, 1 -wmmks.com, 1 wmmp.link, 1 wmnrj.com, 1 wmo.ch, 1 @@ -160917,6 +160871,7 @@ wolfwings.us, 1 wolfy.design, 1 wolfy1339.com, 1 +wolkanca.com, 1 wolke7.wtf, 1 wolkenputzer.com, 1 wolkenspeicher.org, 1 @@ -161021,6 +160976,7 @@ woodbridgefurniture.com, 1 woodbridgegrp.com, 1 woodbridgepacific.com, 1 +woodburn.au, 0 woodbury.io, 1 woodburynj.gov, 1 woodcock.cloud, 1 @@ -161033,8 +160989,8 @@ 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 @@ -161075,7 +161031,6 @@ woodysinstalaciones.com, 1 wooeffi.at, 1 woof.blue, 1 -woof.gq, 1 woofngoof.com, 1 woofsbakery.com, 1 woohoo.in, 1 @@ -161192,7 +161147,6 @@ workfromhomesites.ml, 1 workfromhometexas.tk, 1 workhandyman.com, 1 -workhorsemkt.com, 1 workin.space, 1 workindia.ml, 1 workinestonia.com, 0 @@ -161242,13 +161196,12 @@ workshopzwolle.com, 1 worksindev.com, 1 worksitevr.com, 1 -worksmile.com, 1 workspace-bibb.de, 1 workspacecleaners.com.au, 0 worksthatwork.com, 1 workstride.org, 1 worktefa.tk, 1 -workthings.de, 1 +worktrainer.com, 1 workvision.net, 1 workwithdata.com, 1 workwithusaid.gov, 1 @@ -161331,9 +161284,8 @@ worldix.tk, 1 worldjobs.tk, 1 worldjusticeproject.org, 1 -worldlandtrust.org, 1 worldlanguage.tk, 1 -worldline.com, 1 +worldline.com, 0 worldluxuryhome.tk, 1 worldmarathons.tk, 1 worldnewsinbox.ga, 1 @@ -161371,6 +161323,7 @@ worldtalk.de, 1 worldtattooevents.com, 1 worldtempus.com, 0 +worldtera.com, 1 worldtrandingnews.ml, 1 worldtravelmagazine.tk, 1 worldturkmans.tk, 1 @@ -161490,7 +161443,6 @@ 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 @@ -161523,7 +161475,6 @@ wpetri.nl, 1 wpexplainer.com, 1 wpfactory.io, 1 -wpfiles.net, 1 wpformation.com, 1 wpforum.tk, 1 wpg-verwaltungen.de, 1 @@ -161559,10 +161510,6 @@ 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 @@ -161627,7 +161574,7 @@ wrglzd.com, 1 wrgms.com, 1 wrhomedecor.com.br, 1 -wrightbrand.com, 1 +wrightbrand.com, 0 wrightcountymo911.gov, 1 wrighthassall.co.uk, 1 wrightsecurity.co, 1 @@ -161676,22 +161623,22 @@ 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 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 @@ -161733,6 +161680,7 @@ wtfast.com, 1 wtfbryan.com, 0 wtfindonesia.tk, 1 +wtfit.io, 1 wtfnope.org, 1 wth-security.nl, 1 wth.in, 1 @@ -161821,6 +161769,7 @@ wvpebd.gov, 1 wvrtboard.gov, 1 wvsdca.gov, 1 +wvsu-usc.org, 1 wvunclaimedproperty.gov, 1 wvv-8522.com, 1 wvv.de, 1 @@ -161961,7 +161910,6 @@ www.tl, 1 www.torproject.org, 0 www.tumblr.com, 0 -www.twitter.com, 1 www.united.com, 1 www.usaa.com, 0 www.vino.com, 0 @@ -161999,13 +161947,13 @@ 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 wyday.com, 1 -wydmy.com.pl, 1 wyff4.com, 1 wygibanki.pl, 1 wygodnie.pl, 1 @@ -162032,7 +161980,6 @@ wyomingvalleyjuniorspartans.org, 1 wypiska.pl, 1 wypozyczalniasamochodowkrakow.gq, 1 -wypracowania.pl, 1 wyprawywedkarskiepremium.pl, 1 wyrickstaxidermy.com, 1 wyrihaximus.net, 1 @@ -162105,7 +162052,6 @@ x52.org, 1 x58p.com, 1 x58t.com, 1 -x58v.com, 1 x5x.host, 1 x6.nl, 1 x61.sh, 1 @@ -162138,6 +162084,7 @@ xakep-slon.tk, 1 xakepctbo.tk, 1 xakiatech.com, 1 +xalamanalytics.com, 1 xalima.gq, 1 xampusolid.cat, 1 xanadu.ai, 1 @@ -162279,7 +162226,6 @@ xccc.net, 1 xcdd.sh, 1 xce.pl, 1 -xcelit.io, 1 xcelvations.com, 1 xchangehoster.de, 1 xcharge.uk, 1 @@ -162319,6 +162265,7 @@ xdty.org, 1 xduce.com, 1 xeditpro.com, 1 +xeerpa.com, 1 xeforce.com, 1 xehopdongmuine.vn, 1 xehost.com, 1 @@ -162361,6 +162308,7 @@ xerdeso.tk, 1 xerezdeportivo.tk, 1 xerownia.eu, 1 +xerownia.pl, 1 xertainty.com, 1 xertainty.de, 1 xetown.com, 1 @@ -162383,7 +162331,6 @@ xgadget.de, 1 xgameshst.com, 1 xgclan.com, 1 -xgeni.us, 1 xgn.es, 1 xgp.pl, 1 xgpu.deals, 1 @@ -162443,13 +162390,14 @@ 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 @@ -162462,6 +162410,7 @@ xilo.net, 1 xiluetmiami.com, 1 xiluo-sweet-home.tw, 1 +ximes.cloud, 1 ximes.com, 1 ximeshosted.com, 1 ximg.co, 1 @@ -162624,7 +162573,6 @@ xjpvictor.info, 1 xjr-forum.de, 1 xjtu.love, 1 -xjtu.men, 1 xkblog.xyz, 1 xkcd.pw, 1 xkq.ch, 1 @@ -162658,7 +162606,6 @@ xmdhs.com, 1 xmediabigz.tk, 1 xmediazxy.tk, 1 -xmenrevolution.com, 1 xmessy.com, 1 xmgspace.me, 1 xmisystems.com, 0 @@ -162780,7 +162727,6 @@ 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 @@ -162875,7 +162821,6 @@ xn--arelektrbunerisk-4bc73b.lv, 1 xn--aurdumeti-cmd.ro, 1 xn--autoschlssel-wesel-t6b.de, 1 -xn--avocai-timioara-kmf1a.ro, 1 xn--b1a.cc, 1 xn--b1aa9b.tk, 1 xn--b1ab6abhfh.xn--p1ai, 1 @@ -162894,6 +162839,7 @@ xn--berufsprfung-kinsthetik-b8b50d.ch, 1 xn--berwachungspaket-izb.at, 1 xn--billigbegravningsbyr-g0b.se, 1 +xn--bjugrd-lua.io, 1 xn--blusastlacotalpeas-20b.online, 1 xn--bm3bl9r.com, 1 xn--bognsroad-j3a.dk, 1 @@ -163018,6 +162964,7 @@ xn--grnderlehrstuhl-0vb.de, 1 xn--grnstrm-r1ae.nu, 1 xn--gs8h.eu.org, 1 +xn--h-1ga.net, 1 xn--h1aaahdlb4aki4h.xn--p1ai, 1 xn--h1aaakmzd.xn--p1ai, 1 xn--h1aagcjb0ajh5g.xn--p1ai, 1 @@ -163122,7 +163069,6 @@ 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 @@ -163221,6 +163167,7 @@ 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 @@ -163342,7 +163289,6 @@ xotika.tv, 1 xoue.com, 1 xoutpost.com, 1 -xoxo.news, 1 xp-ochrona.pl, 1 xp.nsupdate.info, 1 xparts.com.tr, 1 @@ -163384,6 +163330,7 @@ xpsautomation.com, 1 xpsfactory.com, 1 xpsinnovation.com, 1 +xpsnow.net, 1 xpsrobotics.com, 1 xptrack.com, 1 xptrackstaging.com, 1 @@ -163565,6 +163512,7 @@ xurl.ltd, 1 xushuai.org, 1 xusqui.com, 1 +xuvero.com, 1 xuwei.de, 1 xuxiao.click, 1 xuyh0120.win, 1 @@ -163641,7 +163589,6 @@ xylimelts.com.au, 1 xyloefarmoges.gr, 0 xylos.nl, 1 -xymaxreit.co.jp, 1 xynta.ch, 1 xynta.com, 1 xyquadrat.ch, 1 @@ -163680,7 +163627,6 @@ xyzzyyyz.com, 1 xz0.de, 1 xzclip.cn, 1 -xzib.com, 1 xzibits.com, 1 xztech.co, 1 y-erodoga.com, 1 @@ -163906,7 +163852,7 @@ yanhongming.net, 1 yanik.info, 1 yanisvaroufakis.eu, 1 -yanivboost.com, 1 +yaniv.tv, 1 yankeeinstitute.org, 1 yann.tw, 1 yannic.world, 0 @@ -163965,7 +163911,6 @@ yardstik.com, 1 yardthyme.com, 1 yardtower.com, 1 -yaremchuk.org, 1 yaren-it.de, 1 yaren.it, 1 yarlesac.com, 1 @@ -164068,6 +164013,7 @@ yc1820.com, 1 ycalculators.com, 1 ycatsh.net, 1 +ycb.fr, 1 ycbmdevelopment.com, 1 ycbmstaging.com, 1 ycdtc.org, 1 @@ -164206,6 +164152,7 @@ yesod.in, 1 yesogovinpetcare.com, 1 yesolo.tk, 1 +yesonline.me, 1 yespornfree.com, 1 yespornplease.com, 1 yessirgear.com, 0 @@ -164281,7 +164228,6 @@ yiff.rocks, 1 yiff.supply, 1 yigelangzi.com, 1 -yiguan.me, 1 yiheng.moe, 0 yihome.com.tw, 1 yihouse.tw, 1 @@ -164389,7 +164335,6 @@ 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 @@ -164408,6 +164353,7 @@ yogaworld.tk, 1 yogesh.com.au, 1 yogibear.tk, 1 +yogimotto.com, 1 yogstation.net, 1 yogularm.de, 1 yogunet.de, 1 @@ -164453,6 +164399,7 @@ yongnuo.fr, 1 yongnuorumors.com, 1 yongseovn.net, 1 +yoni-mip.com, 1 yonistap.com, 1 yonkersdentalspa.com, 1 yontu.be, 1 @@ -164492,15 +164439,18 @@ 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 @@ -164509,6 +164459,7 @@ yosida95.com, 1 yosm.net, 1 yospos.org, 1 +yotavibe.com, 1 yoti.com, 1 yoticonnections.com, 1 yotilabs.com, 1 @@ -164579,7 +164530,6 @@ youmeandjunee.com.au, 1 youmiracle.com, 1 youmonit.me, 1 -youms.de, 1 younameit.ru, 1 youneedfame.com, 1 younesclothing.com, 1 @@ -164642,10 +164592,9 @@ yourbusiness.ml, 1 yourbusinessblueprint.com, 1 yourcareerhost.com, 1 -yourcause.digital, 1 yourcheshiremerseyside.wedding, 1 -yourchoice.in.net, 1 yourchoicematters.ca, 1 +yourcoder.in, 1 yourcomputer.expert, 1 yourcomputer.tk, 1 yourconscious.life, 1 @@ -164679,7 +164628,6 @@ yourforcesupport.pro, 1 yourforcesupport.us, 1 yourforex.org, 1 -yourfriendlyrecipes.com, 1 yourfriendlytech.com, 1 yourfuntrivia.com, 1 yourgadget.ro, 1 @@ -164722,6 +164670,7 @@ yourpalstore.com, 1 yourpersonalfoodnesscoach.nl, 1 yourpersonalfrance.com, 1 +yourpersonalplumbercan.com, 1 yourphotoscanned.com, 1 yourplanet.eu.org, 1 yoursaypenrith.com.au, 1 @@ -164828,6 +164777,7 @@ yqagizev.tk, 1 yqmhz.com, 1 yr-labo.jp, 1 +yr.com.au, 1 yr.sa, 1 yr166166.com, 1 yrausquin.com, 0 @@ -164880,7 +164830,6 @@ yuanandyuan.me, 1 yuanbangwulian.com, 1 yuanben.io, 1 -yuanbenlian.com, 1 yuanbiji.net, 1 yuandan.cf, 1 yuandan.gq, 1 @@ -164982,6 +164931,7 @@ yunjishou.pro, 1 yunloc.com, 1 yunqueradehenares.tk, 1 +yunxinfoods.com, 1 yunzhu.li, 1 yuplay.com, 1 yupulse.be, 1 @@ -164989,6 +164939,7 @@ yuquepay.com, 1 yura.cf, 1 yuricarlenzoli.it, 1 +yurihi.net, 1 yurikirin.me, 1 yuriland.xyz, 1 yurimoens.be, 1 @@ -165011,7 +164962,6 @@ yuucchi.com, 1 yuuki0xff.jp, 1 yuumari.com, 1 -yuuta.moe, 1 yuvagalam.com, 1 yuvaskillfoundation.org, 1 yuweetek.com, 0 @@ -165033,6 +164983,7 @@ yuzu.tk, 1 yuzurisa.com, 1 yvabph.com, 1 +yvesgille.fr, 1 yveslegendre.fr, 0 yvesx.com, 1 yveszarkaconsultant.fr, 1 @@ -165071,7 +165022,7 @@ yy9297.co, 1 yy9728.co, 1 yya.men, 1 -yyc.city, 1 +yyc.city, 0 yycbike.info, 1 yydjtc.top, 0 yyr.im, 1 @@ -165176,7 +165127,6 @@ z8865.com, 1 z8876.com, 0 z8895.com, 1 -z8920.com, 1 z9297.co, 1 z95.jp, 1 z9728.co, 1 @@ -165223,7 +165173,6 @@ zacks.eu, 1 zackzack.at, 1 zaclys.com, 0 -zacnaoliwka.pl, 0 zad-academy.com, 1 zadania.wiki, 1 zadm.de, 1 @@ -165240,6 +165189,7 @@ zafrasa.com.ar, 1 zaftigpress.com, 1 zagadki-cosmosa.tk, 1 +zagelcast.com, 1 zageron.com, 1 zagi.net, 1 zagis.nl, 0 @@ -165303,7 +165253,7 @@ zajmy-contact.tk, 1 zajsoft.net, 1 zak.co.at, 1 -zakaacouture.com, 1 +zakaacouture.com, 0 zakachat-brauzer.gq, 1 zakachat-temi.gq, 1 zakaria.website, 1 @@ -165328,7 +165278,6 @@ zakononline.cf, 1 zakpex.com, 1 zakr.es, 1 -zakratheme.com, 1 zakrentus-ostrus.space, 1 zakspartiesandevents.com, 1 zala.ml, 1 @@ -165366,7 +165315,10 @@ 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 @@ -165399,6 +165351,7 @@ 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 @@ -165448,6 +165401,9 @@ zarja.tk, 1 zarjadnik.tk, 1 zarla.com, 1 +zarlacdn.com, 1 +zarladomains.com, 1 +zarlasites.com, 1 zarnitsa.eu, 1 zarnu.com, 1 zarobotok-forum.ga, 1 @@ -165463,7 +165419,6 @@ zaschtnik.ga, 1 zastenchivost.tk, 1 zasudili.ru, 1 -zataz.com, 1 zaterdagwelpen.tk, 1 zatey.ru, 1 zatp.com, 0 @@ -165624,8 +165579,8 @@ 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 @@ -165798,6 +165753,7 @@ zerevia.com, 1 zerg.uk, 1 zergy.net, 1 +zerionplatform.com, 1 zerium.ml, 1 zerm.eu, 1 zerm.link, 1 @@ -165836,6 +165792,7 @@ zeroscaler.io, 1 zerosector.io, 1 zeroseteatacado.com.br, 1 +zerotolerance.me, 1 zerotoleranceclan.tk, 1 zerotoone.de, 1 zerotoone.studio, 0 @@ -165883,8 +165840,8 @@ zeva-mundial.co.uk, 1 zevelev.net, 1 zevenbergenbos.tk, 1 +zevrobroker.com, 1 zewtie.com, 1 -zeynabacademy.com, 1 zeyoking.com, 1 zezov.com, 1 zf.com, 1 @@ -165980,7 +165937,6 @@ zhitanska.com, 1 zhitomir-news.ru, 1 zhivoe.tk, 1 -zhixiu.com, 1 zhiyulife.pp.ua, 1 zhl123.com, 1 zhodani.space, 1 @@ -165989,7 +165945,6 @@ zhonghongshunlian.com, 1 zhongxia.me, 1 zhongzicili.ws, 1 -zhongzilou.com, 1 zhorizon.jp, 1 zhouba.cz, 1 zhoujianghan.com, 0 @@ -166081,8 +166036,10 @@ 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 @@ -166115,10 +166072,10 @@ zipanguelike.com, 1 zipanguelike.run, 1 ziparcfhive.ga, 1 +zipe.ai, 1 ziphealthy.com, 1 zipjobs.com, 1 zipmedia.eu, 1 -zipnews.org, 1 zippie.tk, 1 zippingus.com, 1 zippo-days.me, 0 @@ -166227,6 +166184,7 @@ zlatatlapka.cz, 1 zlatograd.bg, 1 zlatom.ru, 1 +zlatyruce.cz, 1 zlavomat.sk, 1 zlhuodong.vip, 1 zlima12.com, 1 @@ -166296,7 +166254,6 @@ zodee.com.au, 1 zodgame.xyz, 1 zodiacohouses.com, 1 -zodiaconline.com, 1 zodiak.tk, 1 zodii.bg, 1 zoeamar.com, 1 @@ -166308,8 +166265,8 @@ 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 @@ -166321,7 +166278,6 @@ zofzpcb.com, 1 zogatest.tk, 1 zogevikst.nl, 1 -zohditech.com, 1 zoho.com, 1 zoho.com.au, 1 zoho.eu, 1 @@ -166475,6 +166431,7 @@ zoo-tver.ru, 1 zooforum.tk, 1 zoogbook.ml, 1 +zoohl.com, 1 zooish.net, 1 zook.pw, 1 zook.systems, 1 @@ -166506,7 +166463,6 @@ zoowiki.us, 1 zooxdata.com, 1 zopa.com, 1 -zor.com, 1 zorasvobodova.cz, 1 zorgbeurs.nl, 1 zorgclustertool.nl, 1 @@ -166634,6 +166590,7 @@ zubr.net, 1 zubro.net, 0 zuccarellostiftelsen.no, 1 +zuccolivillage.com.au, 1 zudomc.me, 1 zuefle.net, 1 zuehlcke.de, 1 @@ -166652,7 +166609,6 @@ zuivelonline.nl, 1 zuiverjegeest.nl, 1 zuiververloskundigen.nl, 1 -zuklescentras.lt, 1 zukong.party, 1 zukunft-mobilitaet.net, 1 zukunft-niederrhein.de, 1 @@ -166660,6 +166616,7 @@ zula.africa, 1 zulaoyun.ml, 1 zulfumehmet.tk, 1 +zuliette.com, 1 zulius.com, 1 zulu.ro, 1 zum-ziegenhainer.de, 1 @@ -166707,7 +166664,7 @@ zverskij-site.tk, 1 zvezdy-porno.ml, 1 zvh.io, 1 -zvo.me, 1 +zvo.me, 0 zvps.uk, 1 zvukipro.com, 0 zvvtheboys.tk, 1 @@ -166719,6 +166676,8 @@ zwemschooldezwaantjes.tk, 1 zwergenfeste.ch, 1 zwerimex.com, 1 +zwerkandsons.com, 1 +zwg.me, 1 zwhblog.xyz, 0 zwickau.de, 1 zwijndrecht.nl, 1 diff -Nru thunderbird-140.8.0esr/security/manager/tools/log_list.json thunderbird-140.9.0esr/security/manager/tools/log_list.json --- thunderbird-140.8.0esr/security/manager/tools/log_list.json 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/security/manager/tools/log_list.json 2026-03-20 19:18:39.000000000 +0000 @@ -1,6 +1,6 @@ { - "version": "84.3", - "log_list_timestamp": "2026-02-15T12:53:28Z", + "version": "85.16", + "log_list_timestamp": "2026-03-15T13:34:00Z", "operators": [ { "name": "Google", @@ -515,12 +515,8 @@ "url": "https://oak.ct.letsencrypt.org/2026h1/", "mmd": 86400, "state": { - "readonly": { - "timestamp": "2025-12-12T22:30:00Z", - "final_tree_head": { - "sha256_root_hash": "deSRNfTNPgd9wfzoXIznvi+QUTxuK0R+daC6JGKGK3Q=", - "tree_size": 598614696 - } + "retired": { + "timestamp": "2026-02-28T00:00:00Z" } }, "temporal_interval": { @@ -535,12 +531,8 @@ "url": "https://oak.ct.letsencrypt.org/2026h2/", "mmd": 86400, "state": { - "readonly": { - "timestamp": "2025-12-12T22:30:00Z", - "final_tree_head": { - "sha256_root_hash": "uTgg1k3DUbSFFdXewyyxbsQuCc9RupplMphTwtXqvf4=", - "tree_size": 130815692 - } + "retired": { + "timestamp": "2026-02-28T00:00:00Z" } }, "temporal_interval": { diff -Nru thunderbird-140.8.0esr/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp thunderbird-140.9.0esr/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp --- thunderbird-140.8.0esr/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp 2026-03-20 19:18:40.000000000 +0000 @@ -400,34 +400,34 @@ #undef WSTRING static void EnsureAppLockerAccess(sandbox::TargetPolicy* aPolicy) { - 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); - } + // 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); } } Binary files /srv/release.debian.org/tmp/ejxCm9TXkE/thunderbird-140.8.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin and /srv/release.debian.org/tmp/dwU9Rkj2sZ/thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin differ diff -Nru thunderbird-140.8.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json --- thunderbird-140.8.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json 2026-03-20 19:18:40.000000000 +0000 @@ -1 +1 @@ -{"schema":1767854190545,"attachment":{"hash":"cd8e64bf49ba15970bcc52f3a561da888b9c3240ca783a16c129c790116a26d1","size":876445,"filename":"filter.bin","location":"staging/addons-bloomfilters/318bab3e-2840-4d3f-b1a9-49c76650c0cc.bin","mimetype":"application/octet-stream"},"key_format":"{guid}:{version}","attachment_type":"bloomfilter-base","generation_time":1767875706366,"id":"2f2d5105-a59b-4d36-91bf-aba0d17dfc24","last_modified":1767875945345} \ No newline at end of file +{"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 Binary files /srv/release.debian.org/tmp/ejxCm9TXkE/thunderbird-140.8.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin and /srv/release.debian.org/tmp/dwU9Rkj2sZ/thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin differ diff -Nru thunderbird-140.8.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json --- thunderbird-140.8.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json 2026-03-20 19:18:40.000000000 +0000 @@ -1 +1 @@ -{"schema":1767875911138,"attachment":{"hash":"128e4b64d915b1ce81719dc4e069128079bdc705873ffb250b8fda1a22af5657","size":174266,"filename":"filter.bin","location":"staging/addons-bloomfilters/c6d34303-4b8e-410a-9f30-58cd15c9eeb3.bin","mimetype":"application/octet-stream"},"key_format":"{guid}:{version}","attachment_type":"softblocks-bloomfilter-base","generation_time":1767875706366,"id":"4f0e30ab-8e4f-4973-9796-92048b656347","last_modified":1767875945351} \ No newline at end of file +{"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 diff -Nru thunderbird-140.8.0esr/services/settings/dumps/blocklists/addons-bloomfilters.json thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters.json --- thunderbird-140.8.0esr/services/settings/dumps/blocklists/addons-bloomfilters.json 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/blocklists/addons-bloomfilters.json 2026-03-20 19:18:40.000000000 +0000 @@ -5,6802 +5,2384 @@ "blocked": [], "unblocked": [], "softblocked": [ - "brycekrispy-ai-typing@flowwrite:1.2.1", - "brycekrispy-ai-typing@flowwrite:1.2.2", - "brycekrispy-ai-typing@flowwrite:1.3.0", - "bookhub@d0dg3r:2.0.1", - "webmailnoads@ies-nyc.com:5.15.1.81", - "webmailnoads@ies-nyc.com:5.15.1.92", - "webmailnoads@ies-nyc.com:5.15.1.95", - "{6e173535-34c7-41eb-a534-f15a532b507d}:1.2", - "{412bc1a7-36cc-47cb-940d-ecde5e53f478}:2.1.23", - "{412bc1a7-36cc-47cb-940d-ecde5e53f478}:2.1.25", - "{412bc1a7-36cc-47cb-940d-ecde5e53f478}:2.2.7", - "{412bc1a7-36cc-47cb-940d-ecde5e53f478}:2.2.10", - "{89d19b73-3ebc-4c95-90b2-912b6fff39f5}:2.1.16", - "{89d19b73-3ebc-4c95-90b2-912b6fff39f5}:2.1.21", - "{89d19b73-3ebc-4c95-90b2-912b6fff39f5}:2.1.22", - "{89d19b73-3ebc-4c95-90b2-912b6fff39f5}:2.1.23", - "{89d19b73-3ebc-4c95-90b2-912b6fff39f5}:2.1.25", - "{89d19b73-3ebc-4c95-90b2-912b6fff39f5}:2.2.7", - "{89d19b73-3ebc-4c95-90b2-912b6fff39f5}:2.2.10", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.0.1", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.0.4", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.0.6", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.0.7", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.0.8", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.0.9", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.0.10", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.0.12", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.0", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.3", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.4", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.5", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.6", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.7", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.8", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.10", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.11", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.14", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.16", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.21", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.23", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.1.25", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.2.7", - "{7da5d9c6-3139-47ec-b635-542dbf2fe246}:2.2.10", - "avito-automation@example.com:1.0.0", - "url-gate@extension:3.0", - "url-gate@extension:3.1", - "simplemmo-tracker@example.com:0.1.0", - "gesture-for-android@example.com:1.0" - ] - }, - "schema": 1771202189350, - "key_format": "{guid}:{version}", - "stash_time": 1771223706403, - "id": "7692c0bf-09f6-4102-973d-1beeb7ead83b", - "last_modified": 1771223791639 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{24979cc7-7804-4384-98c9-b2172d26be1c}:1.0", - "instagram-focused@extension.local:1.0", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:5.8", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:5.7", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:5.6", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:5.5", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.7.3", - "{fc12cc8f-9663-4c6d-b200-2d755483e994}:1.0", - "{fc12cc8f-9663-4c6d-b200-2d755483e994}:1.1", - "{fc12cc8f-9663-4c6d-b200-2d755483e994}:1.2", - "affine-clipper-ff@yourdomain.com:0.0.7", - "affine-clipper-ff@yourdomain.com:0.0.7.1", - "{55dd8b4b-ca29-4dd5-8caf-22fb7f4bec3e}:1.0", - "{5269d88e-a67a-47dd-ab73-a2ac01562e04}:1.0", - "{c573bebb-d1f4-4f35-ba16-3998f0d4230a}:1.0" - ] - }, - "schema": 1771180591238, - "key_format": "{guid}:{version}", - "stash_time": 1771202106296, - "id": "b761652d-4f5b-4b84-82ab-763b910623cc", - "last_modified": 1771202189042 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "itznotmemail@web.de:0.1.5", - "itznotmemail@web.de:0.1.4", - "itznotmemail@web.de:0.1.3", - "itznotmemail@web.de:0.1.2", - "flaggy@jnylen.nu:1.1.2", - "@scrydan:1.0", - "speedtest@bigtify.net:1.0.0", - "speedtest@bigtify.net:1.1.0", - "speedtest@bigtify.net:2.0.0", - "{f2c0d4a2-85ae-4eb5-a5a2-f340d4de6b25}:0.0.1", - "{f2c0d4a2-85ae-4eb5-a5a2-f340d4de6b25}:0.0.2", - "{f2c0d4a2-85ae-4eb5-a5a2-f340d4de6b25}:0.0.5", - "tab-switcher@HimitsuArashi.com:1.0", - "entregas@easytech.com.br:1.0.0", - "entregas@easytech.com.br:1.0.1", - "entregas@easytech.com.br:1.0.2", - "entregas@easytech.com.br:1.0.3", - "pideva4327@manupay.com:2.1", - "warframe-market-lang-toggle@local:1.3", - "brycekrispy-ai-typing@firefox:1.2.0", - "{7f3a9c2b-2222-4f1a-b5c6-9e2d1a8f4b70}:1.0.26", - "{7f3a9c2b-2222-4f1a-b5c6-9e2d1a8f4b70}:1.0.25", - "{7f3a9c2b-2222-4f1a-b5c6-9e2d1a8f4b70}:1.0.24", - "{7f3a9c2b-2222-4f1a-b5c6-9e2d1a8f4b70}:1.0.20", - "@sc-fleet-info-v2:0.1", - "@sc-fleet-info-v2:0.2" - ] - }, - "schema": 1771158978636, - "key_format": "{guid}:{version}", - "stash_time": 1771180507091, - "id": "bfe11a34-beb0-48d6-acb2-c6a3a3c238b3", - "last_modified": 1771180591002 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "favory@sp4ce.pw:3.1.3", - "favory@sp4ce.pw:3.1.4", - "youtube-tab-sorter@local:2.5", - "pixel-art-picker@local:0.1.5", - "pixel-art-picker@local:0.1.3", - "pixel-art-picker@local:0.1.4", - "pixel-art-picker@local:0.1.6", - "pixel-art-picker@local:0.1.2", - "pixel-art-picker@local:0.1.1", - "pixel-art-picker@local:0.1.0", - "@elvenar-helper-extension:6.0.10", - "n.addon@example.com:5.2.1", - "{474c822d-da26-4dff-b0ca-fd834c018203}:1.0" - ] - }, - "schema": 1771137391587, - "key_format": "{guid}:{version}", - "stash_time": 1771158905376, - "id": "55f7a7e0-dfb6-437e-b504-c4098727aaa0", - "last_modified": 1771158978329 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "janitor@whoswhip.dev:0.1.0", - "@nosloping-fox:1.0", - "{25310851-e5bd-4dce-bb14-9876fbdb1554}:1.0", - "rx-vault@rx-studio.com:0.1.0", - "gundulagause@example.com:0.1.0", - "favory@sp4ce.pw:3.1.2", - "hurtownie-perfum@euforia.pl:1.0", - "{90483b33-2793-4aa2-9e1f-8bddce03828a}:1.0" - ] - }, - "schema": 1771115800444, - "key_format": "{guid}:{version}", - "stash_time": 1771137306682, - "id": "4dfabb90-23c7-4bf1-8151-1dc30bbd0f6f", - "last_modified": 1771137391359 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "chazvibes-ponyplug001@local:1.1", - "youtube-short-filter@mehdi.be:1.0.0", - "{913b7e4c-91ec-4ea2-800f-5077b42cd7ff}:4.8.13", - "{913b7e4c-91ec-4ea2-800f-5077b42cd7ff}:4.8.12", - "{913b7e4c-91ec-4ea2-800f-5077b42cd7ff}:4.8.11", - "{913b7e4c-91ec-4ea2-800f-5077b42cd7ff}:4.8.15", - "{7f3a9c2b-2222-4f1a-b5c6-9e2d1a8f4b70}:1.0.22" - ] - }, - "schema": 1771094187551, - "key_format": "{guid}:{version}", - "stash_time": 1771115706750, - "id": "cba135d7-0eaa-41a7-85fd-a42f50a262d2", - "last_modified": 1771115800228 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "webrtc-ip-mask@extension:10.0.0", - "webrtc-ip-mask@extension:16.0", - "chazvibes-ponyplug001@local:1.0", - "boadgeojelhgndaghljhdicfkmllpafd@chrome-store-foxified-319909815:15.1120.0.4", - "{9ffe3ac9-488d-4f04-82bf-2584917ff553}:1.0", - "{9ffe3ac9-488d-4f04-82bf-2584917ff553}:1.1", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.7.2", - "{11cfd46d-f1de-465f-85ba-a59078bf9869}:1.0", - "{11cfd46d-f1de-465f-85ba-a59078bf9869}:1.1", - "{11cfd46d-f1de-465f-85ba-a59078bf9869}:1.1.1", - "{11cfd46d-f1de-465f-85ba-a59078bf9869}:1.2.0", - "{11cfd46d-f1de-465f-85ba-a59078bf9869}:1.2.2", - "{11cfd46d-f1de-465f-85ba-a59078bf9869}:1.2.3", - "{11cfd46d-f1de-465f-85ba-a59078bf9869}:1.2.4", - "com.tuonome.calcolatore-orario@addon:1.0", - "{8cd63403-0a72-4d8f-b973-c5318f3ab87c}:1.3", - "us-tz-spoofer-pro-v1@extension:3.0.0", - "@elvenar-helper-extension:6.0.1", - "@elvenar-helper-extension:6.0.0", - "@elvenar-helper-extension:5.9.1", - "vot-extension@local:1.11.0", - "{913b7e4c-91ec-4ea2-800f-5077b42cd7ff}:4.8.14", - "@elvenar-helper-extension:6.0.9", - "{62D72314-8CAC-47A8-ABE3-34B5B1BC35CC}:1.0", - "new-resolution-gotestingspace@gmail.com:0.0.0.1", - "new-resolution-gotestingspace@gmail.com:0.0.0.2", - "new-resolution-gotestingspace@gmail.com:0.0.0.3", - "f-ocr-gotestingspace@gmail.com:0.0.0.9", - "f-ocr-gotestingspace@gmail.com:0.0.0.10", - "f-ocr-gotestingspace@gmail.com:0.0.0.11", - "f-ocr-gotestingspace@gmail.com:0.0.0.12", - "f-ocr-gotestingspace@gmail.com:0.0.0.13", - "f-ocr-gotestingspace@gmail.com:0.0.0.14", - "dhiaggccakkgdfcadnklkbljcgicpckn@chrome-store-foxified--501995561:5.12.1" - ] - }, - "schema": 1771072589213, - "key_format": "{guid}:{version}", - "stash_time": 1771094105351, - "id": "81c431cb-7635-46b5-bfc9-3fa4a975f4e0", - "last_modified": 1771094187149 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{6d4db558-659b-40f6-aa0d-dcfd3137e203}:1.0", - "{6d4db558-659b-40f6-aa0d-dcfd3137e203}:1.1.0", - "youtubeplaybackinfo@orellazri.com:1.0", - "youtubeplaybackinfo@orellazri.com:1.1.0", - "youtubeplaybackinfo@orellazri.com:1.1.1", - "youtubeplaybackinfo@orellazri.com:1.1.2", - "owa_notifications@mbahnizen:1.3", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.6.3", - "{913b7e4c-91ec-4ea2-800f-5077b42cd7ff}:4.8.10", - "{913b7e4c-91ec-4ea2-800f-5077b42cd7ff}:4.8.9", - "bmeia-direct-scheduler@baryonx:1.1", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.7.0", - "webrtc-ip-mask@extension:17.0" - ] - }, - "schema": 1771050995011, - "key_format": "{guid}:{version}", - "stash_time": 1771072505996, - "id": "b648d872-b3fc-4898-8bc9-9e6212067e8f", - "last_modified": 1771072588985 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "aws-prod-highlighter@example.com:1.0.0", - "flowtab@extension:1.0.0", - "ai-typing-assistant@brycepearson09:1.1.0", - "ai-typing-assistant@brycepearson09:1.2.0" - ] - }, - "schema": 1771029390844, - "key_format": "{guid}:{version}", - "stash_time": 1771050906163, - "id": "c4ecbbe9-a5d4-45fd-abc8-d5cda21a8e7e", - "last_modified": 1771050994653 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{956582b3-75fc-466c-b709-08851e5b2934}:1.0.0", - "{fa846719-ae52-4cee-a85b-55fadae00b94}:1.1", - "{fa846719-ae52-4cee-a85b-55fadae00b94}:1.2", - "{fa846719-ae52-4cee-a85b-55fadae00b94}:1.3", - "bookmarklet-service@wpf.digital:1.1.1", - "bookmarklet-service@wpf.digital:1.1.2", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.0", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.1", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.2", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.3", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.4", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.5", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.6", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.7", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.8", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.9", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.9.1", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.9.2", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.9.3", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.9.4", - "{68de4974-42f8-4fbc-97db-eca8125ac1f8}:1.9.5", - "@musketier:1.0", - "@musketier:2.0", - "disable-browser-home-button@vrugtehagel:0.0.1" - ] - }, - "schema": 1771007791691, - "key_format": "{guid}:{version}", - "stash_time": 1771029306050, - "id": "03aa3e7e-9228-4159-a583-26058a595213", - "last_modified": 1771029390607 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{32aadd9f-ebce-40df-9ab3-09b60781fed0}:5.0.0", - "{32aadd9f-ebce-40df-9ab3-09b60781fed0}:5.0.1", - "{32aadd9f-ebce-40df-9ab3-09b60781fed0}:5.2.0", - "{32aadd9f-ebce-40df-9ab3-09b60781fed0}:5.2.1", - "{32aadd9f-ebce-40df-9ab3-09b60781fed0}:5.3.0", - "driver-license-scraper@example.com:1.0", - "rio_wins_0_0_6_5@r10.wtf:0.0.6.5", - "rio_wins_0_0_6_5@r10.wtf:0.0.14", - "Remake-Timer@local:3.0.0", - "test55555@local:1.0.0", - "test55555@local:2.0.0", - "test55555@local:3.0.0", - "Master-timer@local:1.0.0", - "Master-timer@local:2.0.0", - "Master-timer@local:3.0.0", - "Master-timer@local:3.1.0", - "net.linkdumps@share-to.ffx-extension:0.1.3.1", - "net.linkdumps@share-to.ffx-extension:0.1.3.0", - "archive-redirector@yourname.local:1.3", - "archive-redirector@yourname.local:1.4", - "bili-kahe-undo@your-email.com:1.0.3", - "{0109989f-ae52-4b65-9f5a-527a0dbebfff}:1.0", - "{78694dc6-534c-499d-9ef3-8ea5e2d7120a}:1.0", - "{3c207078-f0fd-4621-ad77-8d34249147a7}:1.1.0.0", - "drag_to_privew@uxer:0.0.89", - "{1d63ff81-7862-4580-970c-14b499f91c76}:1.0" - ] - }, - "schema": 1770986181708, - "key_format": "{guid}:{version}", - "stash_time": 1771007706520, - "id": "97ae7d97-c913-4528-b54c-8fbedc9eee68", - "last_modified": 1771007791433 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{e702b8a6-9c2f-44d3-b797-a207ffdc65ce}:3.1.9", - "{e702b8a6-9c2f-44d3-b797-a207ffdc65ce}:3.1.8", - "{e702b8a6-9c2f-44d3-b797-a207ffdc65ce}:3.1.7", - "{e702b8a6-9c2f-44d3-b797-a207ffdc65ce}:3.1.3", - "{0f390cc4-f49c-408a-838c-877d6d9d8ca3}:4.5.11", - "{0f390cc4-f49c-408a-838c-877d6d9d8ca3}:4.5.13", - "{0f390cc4-f49c-408a-838c-877d6d9d8ca3}:4.5.9", - "{0f390cc4-f49c-408a-838c-877d6d9d8ca3}:4.5.10", - "{0f390cc4-f49c-408a-838c-877d6d9d8ca3}:4.5.8", - "vpn@protons.ch:1.2.10", - "{64a74635-e22f-4354-8728-7e748634af18}:1.0.0", - "{64a74635-e22f-4354-8728-7e748634af18}:1.0.1", - "{64a74635-e22f-4354-8728-7e748634af18}:1.2.0", - "{64a74635-e22f-4354-8728-7e748634af18}:1.3.0", - "{64a74635-e22f-4354-8728-7e748634af18}:2.0.0", - "{64a74635-e22f-4354-8728-7e748634af18}:2.0.1", - "{64a74635-e22f-4354-8728-7e748634af18}:2.0.2", - "{64a74635-e22f-4354-8728-7e748634af18}:2.0.3", - "{64a74635-e22f-4354-8728-7e748634af18}:2.1.0", - "{031e6c8e-48d2-4b36-b55b-c22f25aeac69}:1.0.0", - "gmail-text-refiner@example.com:2.4.4", - "gmail-text-refiner@example.com:2.4.3", - "gmail-text-refiner@example.com:2.4.2", - "gmail-text-refiner@example.com:2.4.1", - "0dman-geo-tool@example.org:1", - "0dman-geo-tool@example.org:1.1", - "0dman-geo-tool@example.org:1.2", - "0dman-geo-tool@example.org:1.3", - "0dman-geo-tool@example.org:1.4", - "0dman-geo-tool@example.org:1.6", - "0dman-geo-tool@example.org:1.7", - "{9af95052-429a-4056-a163-e10253a54734}:0.1", - "{9af95052-429a-4056-a163-e10253a54734}:0.2", - "{9af95052-429a-4056-a163-e10253a54734}:0.3", - "{9af95052-429a-4056-a163-e10253a54734}:0.4", - "{9af95052-429a-4056-a163-e10253a54734}:0.4.1", - "{9af95052-429a-4056-a163-e10253a54734}:0.5.0", - "{9af95052-429a-4056-a163-e10253a54734}:1.0.0", - "{9af95052-429a-4056-a163-e10253a54734}:1.0.2", - "{9af95052-429a-4056-a163-e10253a54734}:1.1.0", - "{9af95052-429a-4056-a163-e10253a54734}:1.2.0", - "{9af95052-429a-4056-a163-e10253a54734}:1.2.1", - "{9af95052-429a-4056-a163-e10253a54734}:1.3.0", - "{9af95052-429a-4056-a163-e10253a54734}:1.4.0", - "{9af95052-429a-4056-a163-e10253a54734}:1.4.1", - "{9af95052-429a-4056-a163-e10253a54734}:1.5.0", - "{9af95052-429a-4056-a163-e10253a54734}:1.5.1", - "info@streamkey.ru:1.0.10", - "info@streamkey.ru:1.0.20", - "info@streamkey.ru:1.0.19", - "info@streamkey.ru:1.0.18", - "info@streamkey.ru:1.0.17", - "info@streamkey.ru:1.0.16", - "info@streamkey.ru:1.0.15", - "info@streamkey.ru:1.0.11", - "info@streamkey.ru:1.0.14", - "info@streamkey.ru:1.0.13", - "info@streamkey.ru:1.0.12", - "info@streamkey.ru:1.0.21", - "info@streamkey.ru:1.0.22", - "info@streamkey.ru:1.0.23", - "info@streamkey.ru:1.0.24", - "info@streamkey.ru:1.0.25", - "info@streamkey.ru:1.0.26", - "info@streamkey.ru:1.0.28", - "info@streamkey.ru:1.0.30", - "info@streamkey.ru:1.0.35", - "info@streamkey.ru:1.0.37", - "info@streamkey.ru:1.0.38", - "info@streamkey.ru:1.0.43", - "info@streamkey.ru:1.0.44", - "info@streamkey.ru:1.0.56", - "mobile-remover-tuonome@example.com:1.0", - "mobile-remover-tuonome@example.com:1.1", - "mobile-remover-tuonome@example.com:1.5" - ] - }, - "schema": 1770964591769, - "key_format": "{guid}:{version}", - "stash_time": 1770986105330, - "id": "78629abd-6a73-421b-b310-dac3f41f667d", - "last_modified": 1770986181482 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "favory@sp4ce.pw:3.1.1", - "js-playground@onyxwizard.com:1.0.0", - "0dman-geo-tool@example.org:1.5" - ] - }, - "schema": 1770942981952, - "key_format": "{guid}:{version}", - "stash_time": 1770964506062, - "id": "1f60f380-cad4-4720-927a-fa9b1c8393b7", - "last_modified": 1770964591534 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "lockd@74k1.sh:1.1.2", - "extension-toggler@local:1.1", - "form-autofill@example.com:1.0.0", - "form-autofill@example.com:1.0.1", - "form-autofill@example.com:1.0.2", - "form-autofill@example.com:1.0.4", - "form-autofill@example.com:1.0.5", - "form-autofill@example.com:1.0.6", - "form-autofill@example.com:1.0.7", - "form-autofill@example.com:1.0.8", - "form-autofill@example.com:1.0.9", - "freedium@boody:1.1.0", - "info@streamkey.ru:1.0.1", - "info@streamkey.ru:1.0.9", - "{b8183014-eb61-4531-b1a0-a2fb64fb1b8e}:1.0", - "chatgpt-smooth@local:1.0.0", - "chatgpt-smooth@local:1.0.1", - "chatgpt-smooth@local:1.0.2", - "chatgpt-smooth@local:1.0.3", - "chatgpt-smooth@local:1.0.4" - ] - }, - "schema": 1770921389597, - "key_format": "{guid}:{version}", - "stash_time": 1770942905180, - "id": "7ed7b61d-922a-4ddc-b696-f97c38b22d0d", - "last_modified": 1770942981729 + "{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-firefox@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 + }, + { + "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" + ] + }, + "schema": 1773254181779, + "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", + "@firefoxvis: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@fennec-extension:1.0.0", + "open-in-regular-mode@fennec-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": [ + "firefox-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.firefox:1.0", + "volume-control@balkanflavourr.firefox:1.1", + "volume-control@balkanflavourr.firefox: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": { + "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" + ] + }, + "schema": 1772606191145, + "key_format": "{guid}:{version}", + "stash_time": 1772627706852, + "id": "9b2fc501-7b14-49de-a293-4733da8fa6c9", + "last_modified": 1772627798711 + }, + { + "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" + ] + }, + "schema": 1772584766759, + "key_format": "{guid}:{version}", + "stash_time": 1772606106521, + "id": "4a3c7058-4567-4f5b-ae9d-6fe495d8cc50", + "last_modified": 1772606190948 }, { - "stash": { - "blocked": [ - "{38420b9d-f743-48e8-b42c-1652cbe4b28a}:4.6.0", - "{38420b9d-f743-48e8-b42c-1652cbe4b28a}:4.6.1" - ], - "unblocked": [], - "softblocked": [ - "{69e456ae-8c38-45ae-ac1a-71bb614956be}:1.0", - "{a200cc4b-eb42-459d-8999-d7845b5802f7}:1.0", - "{03657171-72d0-4bd1-86e4-371a11cce9d3}:1.0", - "{03657171-72d0-4bd1-86e4-371a11cce9d3}:1.1", - "n.addon@example.com:5.1", - "{35ddc6ad-e9e9-4a97-9569-fcf92ec23adb}:1.0", - "{0b97530c-b078-4227-9d6b-40a1f39a4d68}:1.0", - "{fff57709-fd06-4d5c-a145-2e65825c7079}:1.0", - "gmail-text-refiner@example.com:2.1", - "gmail-text-refiner@example.com:1.1", - "gmail-text-refiner@example.com:2.0", - "bookmarkz@localonly.app:4.0", - "bookmarkz@localonly.app:4.0.1", - "sample-id-10@example.com:1.0", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.0", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.1", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.1.1", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.1.2", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.1.3", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.2", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.2.1", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.2.3", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.2.4", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.2.5", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.2.6", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.2.7", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.2.8", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:2.2.81", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:3", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:3.1", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:3.2", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:3.5", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:3.6", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:4.1", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:4.11", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:4.21", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:4.30", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:5", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:5.1", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:5.2", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:5.3", - "jid0-LNZz8gri2ybpbeKiJ0pKzBEqjFM@jetpack:6", - "{e1710175-9cbc-4803-a543-d993320ac645}:4.0", - "jeuner@gmail.com:1.0", - "{f5817e82-f295-41f9-b717-f9e87818203b}:1.0" - ] - }, - "schema": 1770899793300, - "key_format": "{guid}:{version}", - "stash_time": 1770921306518, - "id": "2a83ddc3-4deb-4aed-9945-747e7cd7192e", - "last_modified": 1770921389295 - }, - { - "stash": { - "blocked": [ - "sudoku-popup@example.com:1.1", - "{2ea698f4-7e54-4c02-8dfc-7a6cf3da2d52}:1.8", - "{26832ff8-dda3-4ab5-ba16-8af6cc9d3791}:1.8", - "{26832ff8-dda3-4ab5-ba16-8af6cc9d3791}:2.3", - "{26832ff8-dda3-4ab5-ba16-8af6cc9d3791}:2.4", - "{26832ff8-dda3-4ab5-ba16-8af6cc9d3791}:2.5", - "{26832ff8-dda3-4ab5-ba16-8af6cc9d3791}:2.6", - "{26832ff8-dda3-4ab5-ba16-8af6cc9d3791}:2.7", - "{26832ff8-dda3-4ab5-ba16-8af6cc9d3791}:2.8", - "{26832ff8-dda3-4ab5-ba16-8af6cc9d3791}:2.9", - "{26832ff8-dda3-4ab5-ba16-8af6cc9d3791}:3", - "{26832ff8-dda3-4ab5-ba16-8af6cc9d3791}:3.1", - "{26832ff8-dda3-4ab5-ba16-8af6cc9d3791}:3.2", - "{87e07277-55d9-405d-bd16-60264069e341}:1.0.0", - "{a1b2c3d4-1111-2222-3333-444455556666}:1.0.0", - "{c3d4e5f6-3333-4444-5555-666677778888}:1.0.0", - "{d4e5f6a7-4444-5555-6666-777788889999}:1.0.0", - "{d4e5f6a7-4444-5555-6666-777788889999}:2.9.590", - "{b2c3d4e5-2222-3333-4444-555566667777}:1.0.0", - "{b2c3d4e5-2222-3333-4444-555566667777}:2.5.63", - "{b2c3d4e5-2222-3333-4444-555566667777}:2.8.46" - ], - "unblocked": [], - "softblocked": [ - "{dd230fcb-b448-4402-9734-5f7e794f96b5}:1.2.2", - "{0cc7e650-d4e8-4563-9dc2-ad6a08f2ccb4}:1.0", - "{55334281-1803-444b-914b-731e1809fc7a}:1.6", - "{55334281-1803-444b-914b-731e1809fc7a}:1.3", - "{29729b59-145a-4d87-a37b-c41d0960215c}:1.0.2", - "schoolar-connect@schoolar:0.3.0", - "sales@hetech-me.space:1.0.3" - ] - }, - "schema": 1770878183660, - "key_format": "{guid}:{version}", - "stash_time": 1770899706636, - "id": "492fd040-e62c-4f78-8562-d4e10f29e1c5", - "last_modified": 1770899793084 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "local-password-manager@local:0.2.7.4", - "FirefoxCodeFormatter@example.org:1.9.0", - "zincmine@pv2t-kuzt.asahi-net.or.jp:1.2.1", - "okta-auto-login@example.com:1.0", - "site-spy-monitor@vkuprin.com:1.0.47", - "site-spy-monitor@vkuprin.com:1.0.43", - "site-spy-monitor@vkuprin.com:1.0.46", - "site-spy-monitor@vkuprin.com:1.0.45", - "{d26b537d-dd83-4e41-ae89-52e23d3a13cb}:1.0", - "{d26b537d-dd83-4e41-ae89-52e23d3a13cb}:2.0", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.0", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.1", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.1.1", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.1.2", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.1.3", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.1.4", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.1.5", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.1.6", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.1.7", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.1.8", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.1.9", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.2.0", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.2.1", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.2.2", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.2.3", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.2.4", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.2.5", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.2.6", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.2.7", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.2.8", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.2.9", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.3.0", - "{1510e1b2-d1ef-452a-bc63-ff6e78009da1}:1.3.1", - "sidebar-react-tailwind@example.com:1.0.0", - "sidebar-react-tailwind@example.com:1.0.1", - "sidebar-react-tailwind@example.com:1.0.2", - "sidebar-react-tailwind@example.com:1.0.3", - "sidebar-react-tailwind@example.com:1.0.5", - "sidebar-react-tailwind@example.com:1.0.6", - "sidebar-react-tailwind@example.com:1.0.7", - "sidebar-react-tailwind@example.com:1.0.8", - "sidebar-react-tailwind@example.com:1.0.9", - "sidebar-react-tailwind@example.com:1.1.0", - "sidebar-react-tailwind@example.com:1.1.1", - "sidebar-react-tailwind@example.com:1.1.3", - "sidebar-react-tailwind@example.com:1.1.4", - "sidebar-react-tailwind@example.com:1.1.5", - "{dd58c966-1c37-4119-a1ad-e935af18fbc1}:1.8.9", - "{dd58c966-1c37-4119-a1ad-e935af18fbc1}:1.8.7", - "{dd58c966-1c37-4119-a1ad-e935af18fbc1}:1.8.8", - "{b553f7ff-1fc9-4edf-b113-084b64f2d73b}:3.9.4", - "{b553f7ff-1fc9-4edf-b113-084b64f2d73b}:3.9.2", - "{b553f7ff-1fc9-4edf-b113-084b64f2d73b}:3.9.3" - ] - }, - "schema": 1770856589124, - "key_format": "{guid}:{version}", - "stash_time": 1770878105437, - "id": "89c877b0-f3a3-4350-bf57-77c57fbc4dd3", - "last_modified": 1770878183416 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "levelup-dynamics@local:4.1.3", - "levelup-dynamics@local:4.1.4", - "levelup-dynamics@local:4.1.5", - "levelup-dynamics@local:4.1.6", - "gblock@staystrongstayfocused:1.2", - "goombo@local:0.1.2", - "mindframe-test@user-extension:1.0", - "{dd280005-9170-438b-9142-b3d8c5342525}:1.0", - "{6c205256-6386-4e5b-92b4-5e141aed67f1}:1.0", - "extremeplug-extension@extremelot.addon:1.5.3", - "@idk-what-this-means:1.455", - "@idk-what-this-means:1.450" - ] - }, - "schema": 1770834997840, - "key_format": "{guid}:{version}", - "stash_time": 1770856506103, - "id": "d2ce89d8-dcb2-46e9-9592-943e1dd83ef1", - "last_modified": 1770856588817 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "multicalculo1@cronos.sgcor.com.br:1.1.9", - "{8e1c23d0-0523-4740-83c7-0793e4bb35bc}:0.3", - "@qbert-tetris:1.0", - "ip-tracker@extension.local:0.0.1", - "ip-tracker@extension.local:0.0.2", - "cryptoshieldguard@security.local:2.3", - "cryptoshieldguard@security.local:2.8.38", - "{c3d4e5f6-3333-4444-5555-666677778888}:2.5.300", - "kurohane.h@gmail.com:1.1", - "{c3d4e5f6-3333-4444-5555-666677778888}:2.5.301", - "3cx-quick-transfer@example.com:1.0.0", - "fullscreen-toggle@local:1.0" - ] - }, - "schema": 1770813390118, - "key_format": "{guid}:{version}", - "stash_time": 1770834906427, - "id": "b72243c6-82b7-4392-b0d7-aa7a5c790821", - "last_modified": 1770834997536 - }, - { - "stash": { - "blocked": [ - "{c53fafb5-58a4-4e86-b9d9-846daf41ceeb}:1.0", - "{c53fafb5-58a4-4e86-b9d9-846daf41ceeb}:1.1", - "{c53fafb5-58a4-4e86-b9d9-846daf41ceeb}:1.1.1", - "{480427c5-f3ff-4593-89a4-077aa0e1b6a9}:1.5" - ], - "unblocked": [], - "softblocked": [ - "vinted-ripubblica@firefox:7.2.0", - "vinted-ripubblica@firefox:8.2.1", - "{38420b9d-f743-48e8-b42c-1652cbe4b28a}:4.6.2", - "give-core-enhancer@npsolutions.it:1.3.1", - "nextcloud-markdown-switcher@gfz.de:1.0.2", - "nextcloud-markdown-switcher@gfz.de:1.0.3", - "nextcloud-markdown-switcher@gfz.de:1.0.4", - "nextcloud-markdown-switcher@gfz.de:1.0.5", - "nextcloud-markdown-switcher@gfz.de:1.0.6", - "nextcloud-markdown-switcher@gfz.de:1.0.7", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.1", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.2", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.3", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.11", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.10", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.9", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.8", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.7", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.6", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.5", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.4", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.12", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.13", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.14", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.15", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.16", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.17", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.18", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.19", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.20", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.21", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.22", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.23", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.24", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.25", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.26", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.27", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.28", - "{480032e9-2816-4074-997e-30ab1747acd4}:1.29", - "{99487a39-8898-4d2e-b601-dbe6ee89490a}:1.0" - ] - }, - "schema": 1770791781815, - "key_format": "{guid}:{version}", - "stash_time": 1770813305591, - "id": "9cc1a7c2-f23c-4102-b5c9-9ae58751b283", - "last_modified": 1770813389917 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "favory@sp4ce.pw:2.9.9", - "soundlift@yourdomain.com:2.2", - "soundlift@yourdomain.com:2.1", - "{c7ead27b-b8ab-48a4-99bf-1808a41d1410}:0.0.4", - "matilde-qa@bwr.mx:0.1.0" - ] - }, - "schema": 1770770200063, - "key_format": "{guid}:{version}", - "stash_time": 1770791705192, - "id": "34b74457-f59e-488f-875e-4826d925bb4a", - "last_modified": 1770791781584 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{7217156d-f495-4424-8167-9d7a26f83435}:5.6.12", - "votran-v1@mermi-eklenti.com:1.2", - "votran-v1@mermi-eklenti.com:1.1", - "votran-v1@mermi-eklenti.com:9", - "votran-v1@mermi-eklenti.com:6", - "votran-v1@mermi-eklenti.com:3", - "votran-v1@mermi-eklenti.com:2", - "votran-v1@mermi-eklenti.com:4", - "votran-v1@mermi-eklenti.com:5", - "votran-v1@mermi-eklenti.com:8", - "sgcor-multicalculo@sgcor.com.br:1.1.9", - "ac-external-image-store@local:1.0.4", - "yoday419@gmail.com:3.9.2", - "@bcv_divisas-without-data-collection:1.0", - "@bcv_divisas-without-data-collection:1.1.1", - "xray-scanner@security:1.0" - ] - }, - "schema": 1770748585207, - "key_format": "{guid}:{version}", - "stash_time": 1770770106225, - "id": "4642493e-0c5a-4a65-8684-e345fd700720", - "last_modified": 1770770199850 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{417d42eb-5298-4a47-8b5f-288d92d679b5}:1.0", - "tenea-time-tracker@example.com:1.0.9", - "tenea-time-tracker@example.com:1.0.8", - "tenea-time-tracker@example.com:1.0.7", - "tenea-time-tracker@example.com:1.0.6", - "tenea-time-tracker@example.com:1.0.0", - "tenea-time-tracker@example.com:1.0.1", - "tenea-time-tracker@example.com:1.0.2", - "tenea-time-tracker@example.com:1.0.3", - "tenea-time-tracker@example.com:1.0.4", - "tenea-time-tracker@example.com:1.0.5", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.6.2", - "{246b9a48-7b82-4970-aa48-4b9db45b0a97}:0.0.1", - "{246b9a48-7b82-4970-aa48-4b9db45b0a97}:0.0.2", - "{246b9a48-7b82-4970-aa48-4b9db45b0a97}:0.0.3", - "{246b9a48-7b82-4970-aa48-4b9db45b0a97}:0.0.4", - "{246b9a48-7b82-4970-aa48-4b9db45b0a97}:0.0.5", - "{246b9a48-7b82-4970-aa48-4b9db45b0a97}:0.0.6", - "magnolia@12.34:4.2.9.7", - "{b8f5e91a-3d72-4c8e-a165-7f2b0e4d9c13}:0.1.1", - "{b8f5e91a-3d72-4c8e-a165-7f2b0e4d9c13}:0.1.2", - "{b8f5e91a-3d72-4c8e-a165-7f2b0e4d9c13}:0.1.3", - "{b8f5e91a-3d72-4c8e-a165-7f2b0e4d9c13}:0.1.4", - "{b8f5e91a-3d72-4c8e-a165-7f2b0e4d9c13}:0.1.6", - "{b8f5e91a-3d72-4c8e-a165-7f2b0e4d9c13}:0.1.7", - "{b8f5e91a-3d72-4c8e-a165-7f2b0e4d9c13}:0.1.8", - "{b8f5e91a-3d72-4c8e-a165-7f2b0e4d9c13}:0.1.9", - "{b8f5e91a-3d72-4c8e-a165-7f2b0e4d9c13}:0.1.10", - "{b8f5e91a-3d72-4c8e-a165-7f2b0e4d9c13}:0.1.11", - "{371fcc91-6afb-4338-9b71-5428751e7b56}:3.2.6", - "{371fcc91-6afb-4338-9b71-5428751e7b56}:3.2.7", - "{25fc87fa-4d31-4fee-b5c1-c32a7844c063}:8.11.18.2631", - "{08773693-600e-4ec3-b73d-2498af52e3ed}:1.24", - "{fbe503ce-aa60-44b8-8e6a-cdadd92e796b}:1.24.1", - "{9d20134c-512a-4110-9b60-5336bd279b2b}:1.25.0", - "{9d20134c-512a-4110-9b60-5336bd279b2b}:1.25.1", - "{9d20134c-512a-4110-9b60-5336bd279b2b}:1.25.2", - "{9d20134c-512a-4110-9b60-5336bd279b2b}:1.25.4", - "{9d20134c-512a-4110-9b60-5336bd279b2b}:1.25.5", - "{9d20134c-512a-4110-9b60-5336bd279b2b}:1.25.6", - "{9d20134c-512a-4110-9b60-5336bd279b2b}:1.25.7", - "{9d20134c-512a-4110-9b60-5336bd279b2b}:1.25.8", - "{9d20134c-512a-4110-9b60-5336bd279b2b}:1.25.9", - "{9d20134c-512a-4110-9b60-5336bd279b2b}:1.25.10", - "{e2322fc1-c8ca-4ba6-b4c1-5e0f07f475c4}:1.25.1", - "{1251e6d6-048d-43ed-8955-c2552ebc8e33}:1.24.3", - "{77995411-7de1-4c45-b187-2fffcddd7dcc}:1.24", - "magnolia_limited_permissions@12.34:4.3.0.1", - "marketing_aem_dev_tool@paylocity.com:1.3.0.0", - "marketing_aem_dev_tool@paylocity.com:1.3.2", - "marketing_aem_dev_tool@paylocity.com:1.3.3", - "{ae384d8a-c26b-47e6-b34e-384d2df34c1b}:1.2.4", - "youtube-original-audio@example.com:1.0.0", - "tokyomotion-duration-filter@example.com:1.2", - "markdown-converter@md-to.com:0.0.3", - "gblock@gblock:1.2", - "contact@nikology.dev:0.1.0", - "{25fc87fa-4d31-4fee-b5c1-c32a7844c063}:8.11.18.2651", - "{22420507-d084-4cd0-8c31-21c9f1253be2}:1.3", - "{22420507-d084-4cd0-8c31-21c9f1253be2}:1.3.1", - "{22420507-d084-4cd0-8c31-21c9f1253be2}:1.3.2", - "{22420507-d084-4cd0-8c31-21c9f1253be2}:1.3.3" - ] - }, - "schema": 1770727000285, - "key_format": "{guid}:{version}", - "stash_time": 1770748505742, - "id": "0857399e-656b-474f-9be4-f1950b84c6c7", - "last_modified": 1770748584885 - }, - { - "stash": { - "blocked": [ - "{431e3425-6345-48e2-b300-258f63d3fe4b}:1.9.3", - "{6bf8eb69-4c0d-4041-8675-0cc402027be4}:1.3.6", - "{6bf8eb69-4c0d-4041-8675-0cc402027be4}:1.3.8", - "{6bf8eb69-4c0d-4041-8675-0cc402027be4}:3.137.0" - ], - "unblocked": [], - "softblocked": [ - "local-pocket-reader@example.com:1.0.4", - "local-pocket-reader@example.com:1.0.3", - "mydark-mode@example.com:2.0", - "youtube-list-view@extension.local:0.1", - "apxm@27bit.dev:0.1.1.9", - "{55334281-1803-444b-914b-731e1809fc7a}:1.4", - "smarteligibility-prod-amber@axora.ai:1.0.0", - "smarteligibility-prod-amber@axora.ai:1.0.1", - "{955e8840-7e4b-4402-9844-486131491763}:1.0", - "contact@spotchbot.com:1.0.0", - "fleets-enhanced@cheswick.dev:1.1", - "{64807ac5-de2d-4f7f-8bac-da6e1e935a1b}:2.0", - "movie-subtitles@example.com:1.10.0", - "organize-pocket-local@example.com:1.0.8" - ] - }, - "schema": 1770705381919, - "key_format": "{guid}:{version}", - "stash_time": 1770726906132, - "id": "6afda584-7730-48e6-bb8f-10fd43e69ce3", - "last_modified": 1770727000065 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "my-dark-mode@example.com:2.0" - ] - }, - "schema": 1770683791574, - "key_format": "{guid}:{version}", - "stash_time": 1770705304894, - "id": "4ba454c0-c64a-4815-a969-3a5bc0df7aca", - "last_modified": 1770705381653 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{434c771f-f8ef-4a7b-baa4-33a3e1b63763}:3.1", - "toolbar-separator-1@local:1.0", - "{b6df675f-ace3-4054-a42f-19769596543c}:1.0", - "{301ce2a8-95d9-4e5d-ab47-b22727782b78}:1.0", - "{7638d1d7-e28d-470c-af97-fdbef33e275a}:1.0", - "{97c53a6f-829c-4d34-93a4-c355d9e84e52}:1.0", - "{ae75a998-61fc-4d97-b563-963028d825fe}:1.0", - "{d1cdf025-e2ea-4aec-bd09-1f9b66c5831e}:1.0", - "{f6f5b51a-7cf6-417b-acb7-4c2a817595d9}:3.0", - "{220e6d3c-237e-4f43-b79d-bb022f16413a}:0.1.0", - "{220e6d3c-237e-4f43-b79d-bb022f16413a}:1.0.0", - "{220e6d3c-237e-4f43-b79d-bb022f16413a}:1.0.1", - "yoday419@gmail.com:3.6", - "yoday419@gmail.com:3.5", - "yoday419@gmail.com:3.9.1" - ] - }, - "schema": 1770662193469, - "key_format": "{guid}:{version}", - "stash_time": 1770683705986, - "id": "b20bd0e9-93a7-43a6-a57e-e26a75c027af", - "last_modified": 1770683791318 - }, - { - "stash": { - "blocked": [ - "juvyrobledohz24562@outlook.com:1.0" - ], - "unblocked": [], - "softblocked": [ - "shop-helper@neuffer.de:1.1", - "{22133576-7161-43a8-a89a-702f7ef55160}:0.66", - "{db1f302b-963d-4737-8027-95a810d4ba22}:1.0", - "job2cv@jbscan.local:1.2", - "gvcplugin@timhmdv.com:1.0.0", - "gvcplugin@timhmdv.com:1.1.0", - "gvcplugin@timhmdv.com:1.2.0", - "gvcplugin@timhmdv.com:1.3.0", - "gvcplugin@timhmdv.com:1.3.1", - "ai-page-translator@asychin:1.1.0", - "yttimetracker.nazarnik050406@gmail.com:2.0.1", - "yttimetracker.nazarnik050406@gmail.com:2.0.0", - "{6bf8eb69-4c0d-4041-8675-0cc402027be4}:1.3.7", - "{431e3425-6345-48e2-b300-258f63d3fe4b}:1.9.2", - "{431e3425-6345-48e2-b300-258f63d3fe4b}:1.9.1", - "CryptoPro@example.com:1.2" - ] - }, - "schema": 1770640593701, - "key_format": "{guid}:{version}", - "stash_time": 1770662106712, - "id": "a6e655bf-a6f7-4a42-9e84-4edc99fdbb1b", - "last_modified": 1770662193316 - }, - { - "stash": { - "blocked": [ - "smart-bookmarks-3ns400or@firefox.extension:3.4.5", - "smart-bookmarks-pyr72r6z@firefox.extension:2.6.7", - "smart-bookmarks-fjxm6op9@firefox.extension:2.6.5", - "secure-browse-sp5rdrz3@firefox.extension:2.7.4", - "secure-browse-re2gbt58@firefox.extension:2.1.9", - "secure-browse-39lav85a@firefox.extension:1.5.7", - "screenshot-master-sv3v71rz@firefox.extension:1.1.3", - "privacy-shield-pro-zy4dike4@firefox.extension:3.6.4", - "privacy-shield-pro-wv8j5759@firefox.extension:1.2.5", - "json-formatter-plus-i7p1phpv@firefox.extension:3.9.6", - "json-formatter-plus-c8m1htuz@firefox.extension:2.7.2", - "json-formatter-plus-bgpdnxd4@firefox.extension:2.4.0", - "image-gallery-saver-kbwz66su@firefox.extension:3.0.0", - "image-gallery-saver-cq8jzwbn@firefox.extension:2.9.3", - "image-gallery-saver-npt03ejd@firefox.extension:2.3.4", - "image-gallery-saver-crttrkmy@firefox.extension:1.6.3", - "dev-tools-pro-s4jtto87@firefox.extension:3.5.8", - "css-inspector-pro-2nqwu31o@firefox.extension:3.4.3", - "css-inspector-pro-cslm7frl@firefox.extension:3.0.2", - "css-inspector-pro-2j0x7h44@firefox.extension:2.8.8", - "css-inspector-pro-ble33a0u@firefox.extension:2.8.1", - "css-inspector-pro-owob4ik5@firefox.extension:2.8.0", - "css-inspector-pro-nauzjv6p@firefox.extension:2.0.7", - "css-inspector-pro-tjeufu3q@firefox.extension:1.8.2", - "css-inspector-pro-ckvz349f@firefox.extension:1.3.5", - "cookie-manager-plus-ztbgexi0@firefox.extension:2.6.1", - "cookie-manager-plus-2tnvnf9b@firefox.extension:2.4.0", - "cookie-manager-plus-6xbrp8u8@firefox.extension:1.7.3", - "cookie-manager-plus-tx5bmx3g@firefox.extension:1.5.4", - "video-downloader-pro-5jqm67r3@firefox.extension:3.9.7", - "video-downloader-pro-1obt1yvg@firefox.extension:2.9.4", - "smart-bookmarks-qa526zkw@firefox.extension:3.8.0", - "smart-bookmarks-cjotm5n4@firefox.extension:2.4.7", - "secure-browse-7vh8jln0@firefox.extension:2.9.6", - "secure-browse-jx7bwi2n@firefox.extension:1.7.2", - "screenshot-master-o69m0x9r@firefox.extension:3.9.3", - "screenshot-master-0cemepbm@firefox.extension:3.7.6", - "json-formatter-plus-w2vfxn9z@firefox.extension:2.2.8", - "json-formatter-plus-921tgjlh@firefox.extension:2.0.9", - "image-gallery-saver-tw7v5boz@firefox.extension:1.3.5", - "image-gallery-saver-imx7y8b8@firefox.extension:1.0.0", - "focus-timer-du2l4a30@firefox.extension:3.7.1", - "focus-timer-64jia8ok@firefox.extension:2.7.7", - "focus-timer-a7ijryrf@firefox.extension:1.6.2", - "dev-tools-pro-twp0f7ik@firefox.extension:2.8.1", - "dev-tools-pro-kh0td4ax@firefox.extension:1.4.1", - "cookie-manager-plus-uu7abzf6@firefox.extension:3.2.0", - "cookie-manager-plus-g0t3gftx@firefox.extension:2.3.6", - "cookie-manager-plus-o41wjakt@firefox.extension:2.2.4", - "cookie-manager-plus-toc5uqsc@firefox.extension:1.2.2", - "video-downloader-pro-ypeebatc@firefox.extension:2.6.7", - "video-downloader-pro-r4j5gpdf@firefox.extension:2.6.3", - "smart-bookmarks-20vfq7xe@firefox.extension:1.9.3", - "secure-browse-l4msfxeh@firefox.extension:3.8.6", - "quick-notes-dphtaks4@firefox.extension:2.8.2", - "privacy-shield-pro-o86gwkre@firefox.extension:1.8.8", - "image-gallery-saver-rncmcyvp@firefox.extension:3.9.8", - "image-gallery-saver-rrlvlg6s@firefox.extension:2.4.0", - "image-gallery-saver-uj5vl9yo@firefox.extension:1.0.7", - "cookie-manager-plus-6tu8zorg@firefox.extension:3.1.1", - "video-downloader-pro-dtr4e95e@firefox.extension:3.7.8", - "video-downloader-pro-t3riz7hu@firefox.extension:3.3.7", - "video-downloader-pro-9xvlvl64@firefox.extension:3.2.5", - "video-downloader-pro-i98xcopi@firefox.extension:3.2.4", - "video-downloader-pro-wxctoykv@firefox.extension:1.8.5", - "video-downloader-pro-f9n32gbe@firefox.extension:1.5.2", - "video-downloader-pro-fno2xy4f@firefox.extension:1.4.0", - "tab-manager-pro-cgki9ees@firefox.extension:2.8.8", - "tab-manager-pro-xgxhgc0k@firefox.extension:2.1.1", - "tab-manager-pro-i2lk9q3m@firefox.extension:1.3.4", - "tab-manager-pro-0l29w73a@firefox.extension:1.2.7", - "smart-bookmarks-u6fufvgi@firefox.extension:2.2.7", - "smart-bookmarks-ru50pimn@firefox.extension:2.1.3", - "smart-bookmarks-4r2ouj9w@firefox.extension:1.4.1", - "secure-browse-p62imqdp@firefox.extension:3.9.0", - "secure-browse-uvgvrung@firefox.extension:3.6.1", - "secure-browse-siae8wo4@firefox.extension:3.0.2", - "secure-browse-gvm4n44c@firefox.extension:2.5.7", - "secure-browse-nq90k45b@firefox.extension:2.5.5", - "screenshot-master-cqbx7yee@firefox.extension:3.3.7", - "screenshot-master-nxw6dkjv@firefox.extension:3.0.1", - "screenshot-master-qf51w93a@firefox.extension:1.4.3", - "quick-notes-vi51hxyz@firefox.extension:2.4.8", - "quick-notes-bkeldvu7@firefox.extension:1.6.6", - "quick-notes-w4hxo3yb@firefox.extension:1.6.4", - "css-inspector-pro-7nhcv5jl@firefox.extension:1.2.5", - "smartzoom-f7c6b154@firefox.extension:4.4.1", - "hidden-identity-f2-98857bc8@firefox.extension:2.9.3", - "voice-link-cce598d3@firefox.extension:5.0.3", - "video-downloader-pro-xb9zmsor@firefox.extension:1.1.8", - "screenshot-master-3ekwxtej@firefox.extension:2.6.1", - "edgevpn-f60544f6@firefox.extension:3.4.7", - "css-inspector-pro-9n9s66gk@firefox.extension:2.6.7", - "cookie-manager-plus-wd40r8m8@firefox.extension:1.2.6", - "boost-streamline-schedule-hu-14285ed4@firefox.extension:4.6.5", - "comprehensive-streamline-7658d7f8@firefox.extension:4.2.5", - "jzdownload@firefox.extension:1.0.0", - "video-downloader-pro-ebrxm82u@firefox.extension:3.6.9", - "smart-browser-master-sonfukn0@firefox.extension:3.5.7", - "turbo-tab-manager-0fbzf0c2@firefox.extension:3.7.1", - "quick-notes-72imbqfy@firefox.extension:1.6.2", - "quick-notes-1hze5jz9@firefox.extension:1.2.4", - "privacy-shield-pro-4pm6mx18@firefox.extension:3.7.3", - "privacy-shield-pro-gx6jduvq@firefox.extension:3.4.3", - "privacy-shield-pro-sy0xfvbv@firefox.extension:2.7.9", - "privacy-shield-pro-wq8aq8l3@firefox.extension:1.9.7", - "json-formatter-plus-kuyrz2d6@firefox.extension:3.9.9", - "json-formatter-plus-fqbyphig@firefox.extension:3.6.3", - "json-formatter-plus-vuaa84sg@firefox.extension:2.3.3", - "json-formatter-plus-8ynl2mu6@firefox.extension:1.6.6", - "image-gallery-saver-fcdwgr1n@firefox.extension:2.6.9", - "image-gallery-saver-jf3x1rb9@firefox.extension:2.3.8", - "image-gallery-saver-9fz3p3cm@firefox.extension:1.4.1", - "image-gallery-saver-fskuv7zh@firefox.extension:1.0.4", - "focus-timer-9bvzgqzy@firefox.extension:3.8.4", - "focus-timer-e7jexi73@firefox.extension:3.7.0", - "focus-timer-ixlzu0hp@firefox.extension:1.2.9", - "focus-timer-w8a82mm6@firefox.extension:1.1.8", - "dev-tools-pro-cq761uji@firefox.extension:3.7.0", - "dev-tools-pro-27m1im4f@firefox.extension:3.6.2", - "dev-tools-pro-mpfwktw2@firefox.extension:3.5.2", - "dev-tools-pro-1bsdobo5@firefox.extension:2.7.1", - "dev-tools-pro-vz6lg3ud@firefox.extension:1.5.3", - "css-inspector-pro-urx7ykg4@firefox.extension:2.9.2", - "css-inspector-pro-pjj1yq25@firefox.extension:2.1.3", - "cookie-manager-plus-xistptkh@firefox.extension:3.0.5", - "cookie-manager-plus-sf4orygi@firefox.extension:2.7.9", - "cookie-manager-plus-f6othijq@firefox.extension:2.5.0", - "cookie-manager-plus-juvpbq4o@firefox.extension:1.6.3", - "cookie-manager-plus-r25o5urg@firefox.extension:1.4.0", - "cookie-manager-plus-aogbda1p@firefox.extension:1.2.3", - "smartcommunity-7c7d6534@firefox.extension:1.0.1", - "smart-process-p6-fd92efcf@firefox.extension:4.4.5", - "smart-content-ee02fa77@firefox.extension:5.9.2", - "security-pad-1q-ef46c2cf@firefox.extension:5.4.6", - "reliable-amplify-30e773f2@firefox.extension:1.9.9", - "refine-screenshot-846ecb1b@firefox.extension:5.2.2", - "refine-image-de8146b4@firefox.extension:3.4.7", - "readable-font-7b323150@firefox.extension:4.4.8", - "pulsefeed-765a1f4d@firefox.extension:3.8.7", - "protected-history-193baf2c@firefox.extension:1.0.9", - "prime-search-notification-qg-cb46b569@firefox.extension:2.9.9", - "prime-identity-1b045967@firefox.extension:3.0.1", - "power-screenshot-vo-85434d71@firefox.extension:3.3.6", - "nova-content-8815fe45@firefox.extension:3.5.2", - "network-kit-ef7042e9@firefox.extension:5.3.0", - "find-screenshot-e63024ab@firefox.extension:1.7.4", - "elite-accelerate-vi-ab1f6fc0@firefox.extension:5.2.7", - "echo-navigation-e247beb3@firefox.extension:5.0.2", - "corefocus-9939168c@firefox.extension:2.8.4", - "boost-performance-107a64bc@firefox.extension:3.9.2", - "boost-debug-zn-7de80813@firefox.extension:5.4.0", - "advanced-elevate-6d66ed58@firefox.extension:1.9.7", - "prime-image-c0b89df1@firefox.extension:2.5.3", - "power-streamline-reminder-ga-7639f653@firefox.extension:1.3.7", - "peak-boost-community-9e113958@firefox.extension:3.9.1", - "peak-bookmark-a2988286@firefox.extension:4.9.1", - "note-plus-f94a62c8@firefox.extension:2.7.3", - "nexus-organize-formatter-n9-cf5d6cbf@firefox.extension:3.8.4", - "network-plus-1b84f673@firefox.extension:4.9.4", - "monitor-history-78d08ed9@firefox.extension:5.2.6", - "monitor-goal-pi-afabd89f@firefox.extension:1.1.9", - "maxdata-17-a6364b7a@firefox.extension:4.7.7", - "hyper-enhance-todo-6f512e14@firefox.extension:5.4.8", - "generate-tracker-vt-8e7b00b5@firefox.extension:3.0.7", - "flow-font-382027ca@firefox.extension:4.9.5", - "filter-voice-70e4cb45@firefox.extension:4.4.4", - "expert-boost-a6e8cd37@firefox.extension:1.6.3", - "edge-content-fdae7d1c@firefox.extension:1.8.4", - "echo-boost-keyboard-2864be54@firefox.extension:5.7.9", - "easy-text-b062dca0@firefox.extension:5.1.1", - "dash-transform-post-83d77972@firefox.extension:5.2.8", - "create-minifier-a1d02236@firefox.extension:5.3.3", - "core-build-task-45b5ec85@firefox.extension:3.2.0", - "core-boost-convert-s7-651f4197@firefox.extension:2.6.2", - "connected-message-027ac7dc@firefox.extension:4.6.6", - "clipboard-portal-2405ce11@firefox.extension:2.9.0", - "build-tab-bee5581e@firefox.extension:3.2.2", - "blazedebug-957888cc@firefox.extension:5.4.5", - "blaze-upload-c11183c7@firefox.extension:1.1.2", - "better-amplify-v2-589429b2@firefox.extension:2.5.3", - "apex-boost-todo-775f6643@firefox.extension:2.1.4", - "adaptive-voice-56-9a883dc9@firefox.extension:2.0.0", - "accelerate-share-33ad92ca@firefox.extension:1.9.8", - "zennotification-39d4bc74@firefox.extension:5.0.8", - "zen-filter-screenshot-e0821e11@firefox.extension:4.2.2", - "zen-contrast-4c6a2617@firefox.extension:3.3.3", - "vortex-refine-api-tg-3e492588@firefox.extension:1.2.6", - "unified-community-oc-c54867c7@firefox.extension:4.2.8", - "ultimate-html-63b1cd29@firefox.extension:1.8.3", - "track-voice-3l-45719ab8@firefox.extension:3.0.0", - "task-plus-c8174db5@firefox.extension:2.6.1", - "synctext-dc43b3df@firefox.extension:5.7.0", - "super-privacy-54f6fd2d@firefox.extension:5.8.9", - "sort-formatter-07f7ca27@firefox.extension:3.1.6", - "sort-css-cefda175@firefox.extension:4.4.8", - "simplify-tracker-2e82a1b2@firefox.extension:2.7.0", - "secure-profile-qm-51170b4c@firefox.extension:1.7.2", - "quick-analytics-v4-b3100e8b@firefox.extension:4.8.0", - "pulse-transform-content-56c92dbc@firefox.extension:4.7.5", - "profile-tracker-b57b4944@firefox.extension:2.1.0", - "profile-manager-ece32ccc@firefox.extension:1.3.0", - "profile-kit-fk-5e0b5713@firefox.extension:4.7.0", - "professional-find-de145db6@firefox.extension:1.3.6", - "pro-linter-4a47b277@firefox.extension:2.2.5", - "primenetwork-91eb39d0@firefox.extension:5.4.9", - "prime-upload-dc735865@firefox.extension:2.8.6", - "prime-refine-workspace-15-cb9767f6@firefox.extension:4.2.9", - "powercache-zn-01087220@firefox.extension:3.6.9", - "power-enhance-me-a8b6e604@firefox.extension:5.4.4", - "performance-wave-td-6fffbe56@firefox.extension:2.7.2", - "novascreen-263ddf64@firefox.extension:1.5.5", - "nexusupload-064c39ea@firefox.extension:1.3.1", - "nexus-reader-ced3ba65@firefox.extension:2.1.7", - "integrated-build-7cc6c9a2@firefox.extension:1.0.3", - "inclusive-track-8cb72502@firefox.extension:1.0.0", - "generate-calendar-1626b94b@firefox.extension:2.4.4", - "flow-analyze-cache-a0703b47@firefox.extension:5.9.8", - "expert-html-afdc2471@firefox.extension:2.4.4", - "craft-text-3911312e@firefox.extension:2.1.9", - "color-pro-f97530ac@firefox.extension:4.8.6", - "api-guard-2r-c26c069b@firefox.extension:3.3.4", - "optimize-debug-20a9afea@firefox.extension:5.0.8", - "maxsession-tu-047fb466@firefox.extension:3.2.7", - "max-generate-group-d9-3014320c@firefox.extension:5.2.7", - "lens-track-console-a8bbfee0@firefox.extension:5.8.2", - "instant-edit-74be23f0@firefox.extension:1.7.4", - "focus-works-e7753c52@firefox.extension:2.6.1", - "flow-screen-122a491c@firefox.extension:1.3.1", - "edge-upload-ph-5fce5138@firefox.extension:5.6.9", - "edge-monitor-share-279b86db@firefox.extension:4.8.9", - "design-community-04f0e153@firefox.extension:5.0.0", - "dashgoal-e24c1324@firefox.extension:5.0.1", - "dash-enhance-notification-pz-e7fc1adb@firefox.extension:2.2.7", - "coredownload-7497af51@firefox.extension:3.5.9", - "connection-scope-5t-caee2125@firefox.extension:4.1.8", - "build-converter-ba493157@firefox.extension:4.5.8", - "blaze-screen-5e484ba2@firefox.extension:5.2.3", - "auto-craft-62a5c15e@firefox.extension:3.5.1", - "armored-history-mu-70fef509@firefox.extension:1.1.8", - "anonymous-profile-51826e10@firefox.extension:5.3.5", - "apex-design-generator-94500d1e@firefox.extension:3.7.5", - "zenreader-685580cc@firefox.extension:2.2.6", - "wave-manage-post-87e718d5@firefox.extension:5.0.2", - "vortexcontent-3ca78bfd@firefox.extension:4.2.7", - "video-stream-zy-f057170b@firefox.extension:3.5.2", - "transform-navigation-df689529@firefox.extension:1.9.3", - "test-manager-tv-7f9d5875@firefox.extension:3.2.7", - "tab-manager-pro-szulat8x@firefox.extension:1.9.4", - "synccache-f2d362df@firefox.extension:2.3.7", - "superfocus-f46fcc0b@firefox.extension:1.9.4", - "super-track-db5b0dbd@firefox.extension:1.4.5", - "super-connection-ca3daf2c@firefox.extension:2.7.5", - "stealth-cookie-efcb4f6d@firefox.extension:3.1.7", - "spark-contrast-cr-f6abe8ca@firefox.extension:3.9.8", - "smart-session-28-8041a387@firefox.extension:2.0.2", - "smart-converter-gp-2fb195cb@firefox.extension:4.7.3", - "reliable-sort-d01dcd51@firefox.extension:4.3.3", - "readable-reader-1c797018@firefox.extension:4.5.8", - "quick-notes-ny8qol34@firefox.extension:1.5.8", - "profile-stream-f2a068d4@firefox.extension:3.0.3", - "pro-code-w1-c67f6906@firefox.extension:5.4.8", - "privacy-shield-pro-qu57t0hq@firefox.extension:2.2.1", - "primeprofile-na-f395e6dc@firefox.extension:5.8.9", - "prime-timer-ad85b6b4@firefox.extension:1.8.0", - "prime-minifier-5564ba67@firefox.extension:1.2.9", - "prime-amplify-community-ffb782d0@firefox.extension:3.4.6", - "powerperformance-f21057e4@firefox.extension:3.5.2", - "power-design-gm-5ce213ac@firefox.extension:2.5.3", - "polish-notification-b4cc42b3@firefox.extension:3.1.8", - "perfect-clipboard-421816ea@firefox.extension:5.0.3", - "peak-monitor-privacy-82-576e7df9@firefox.extension:4.2.3", - "peak-fingerprint-aa26a719@firefox.extension:1.9.7", - "monitor-identity-52f5f4a6@firefox.extension:5.8.5", - "master-elevate-notification-k7-26bf45fd@firefox.extension:5.6.9", - "master-craft-ca72baaf@firefox.extension:5.7.5", - "json-formatter-plus-bc814821@firefox.extension:1.5.4", - "instant-polish-xc-63b5cd9f@firefox.extension:2.3.6", - "inspector-master-vz-cd8955b2@firefox.extension:3.6.6", - "image-gallery-saver-xd2xf3hr@firefox.extension:1.5.8", - "hyper-sort-mouse-c112751d@firefox.extension:1.4.9", - "hyper-simplify-profile-ec12fc00@firefox.extension:4.8.9", - "hidden-privacy-1cbda2d7@firefox.extension:1.6.2", - "focus-timer-egpxxw2z@firefox.extension:2.7.5", - "expert-formatter-qc-243b198c@firefox.extension:3.9.5", - "enhanced-color-qa-ccd423a8@firefox.extension:1.9.8", - "echo-profile-e5d0d179@firefox.extension:3.4.0", - "dev-tools-pro-5tsjytah@firefox.extension:2.3.8", - "dashreader-f48519b9@firefox.extension:5.2.5", - "craft-screenshot-mv-7e3e48db@firefox.extension:4.1.8", - "core-video-c2cee302@firefox.extension:3.8.6", - "core-message-290a243a@firefox.extension:2.7.7", - "advanced-perfect-a1ed70bf@firefox.extension:3.6.9", - "accelerate-profile-2e6c2837@firefox.extension:4.9.2", - "mega-watcher-2yky6fil@firefox.extension:2.6.7", - "mega-utility-cv71dp80@firefox.extension:2.3.9", - "video-downloader-pro-k74b9xr3@firefox.extension:3.5.5", - "great-history-viewer-jtheaue4@firefox.extension:1.0.9", - "fine-web-assistant-3l3oz2hb@firefox.extension:3.7.8", - "fine-protector-mmzrxcp5@firefox.extension:2.4.9", - "edgesession-ddb0b7e2@firefox.extension:3.9.8", - "easy-convert-6v-cb8e21ec@firefox.extension:2.4.5", - "magic-cookie-controller-ugp27udk@firefox.extension:2.3.5", - "rapid-watcher-kfl5stq7@firefox.extension:3.2.1", - "master-defender-65sd2b3j@firefox.extension:1.9.4", - "turbo-page-monitor-i30hqey4@firefox.extension:3.1.8", - "bright-page-inspector-hmnvkg41@firefox.extension:3.7.3", - "awesome-web-companion-uiix1lm8@firefox.extension:1.9.3", - "ace-browser-tool-eltm8erk@firefox.extension:3.1.9", - "dev-tools-pro-git3sas3@firefox.extension:2.9.5", - "image-gallery-saver-wl3l9m7a@firefox.extension:2.5.3", - "{bcc572b2-76e3-4e46-b77e-10399aa409a0}:3.9.0", - "{bcc572b2-76e3-4e46-b77e-10399aa409a0}:3.9.1", - "{a9d17b38-6366-4c41-89ff-8481a77411ce}:1.1", - "{dc81258e-28c5-4440-a1f5-723e1ffc4a71}:1.0", - "{dc81258e-28c5-4440-a1f5-723e1ffc4a71}:1.1", - "{5844ba57-f2c2-469e-b65a-f9f2d5176087}:1.0", - "{5844ba57-f2c2-469e-b65a-f9f2d5176087}:1.1.3", - "{7587d8f0-1c25-4007-984a-a6fba8493228}:1.0", - "{7587d8f0-1c25-4007-984a-a6fba8493228}:3.15.3", - "{11dd54ea-91e9-4b08-9ca8-6dcc0c95bd42}:1.0", - "{11dd54ea-91e9-4b08-9ca8-6dcc0c95bd42}:1.1", - "{ebd1855f-ba5e-4a9b-a205-be7576ad9555}:1.0", - "{ebd1855f-ba5e-4a9b-a205-be7576ad9555}:1.1" - ], - "unblocked": [], - "softblocked": [ - "serifusagashi@example.com:1.1", - "{476cc63b-c439-4df7-8e84-3b51f3bbe907}:2.2.4", - "{6eb5bc38-8139-4589-81fb-e8abfe1bd52e}:4.7.5", - "{7b0f3937-fa9d-4250-9331-78feb7f5ec09}:1.0", - "{7b0f3937-fa9d-4250-9331-78feb7f5ec09}:2.0", - "local-pocket-reader@example.com:1.0.0", - "local-pocket-reader@example.com:1.0.2", - "local-pocket-reader@example.com:1.0.1", - "things-quick-entry@detrux11.com:1.0.0" - ] - }, - "schema": 1770618982452, - "key_format": "{guid}:{version}", - "stash_time": 1770640506882, - "id": "5bc6b635-cca7-4e0b-a943-10a80365e4d8", - "last_modified": 1770640593447 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "concentrate@localhost:0.0.1", - "chatgpt-lag-fixer@bramgiessen.com:1.0.3", - "chatgpt-lag-fixer@bramgiessen.com:1.0.4", - "favory@sp4ce.pw:2.9.6", - "favory@sp4ce.pw:2.9.7", - "favory@sp4ce.pw:2.9.8" - ] - }, - "schema": 1770597400984, - "key_format": "{guid}:{version}", - "stash_time": 1770618905328, - "id": "580ce6f3-3ac2-40f7-82ac-3b8d5d7b0ca4", - "last_modified": 1770618982226 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "map-leads-finder@softtechlab.com:1.0.0", - "copydate@example.com:1.0", - "{45d769c7-1e5e-48b1-9cfc-e75e0fce4994}:1.0", - "{be4457e6-478f-47f2-b1bb-f5a764427823}:1.4", - "query-param-stripper@example.com:1.0.0", - "{87e07277-55d9-405d-bd16-60264069e341}:5.0.0", - "gvc-alpha-private-final-fix@myself.com:1.0.0", - "contao-backend-jumper@jetpack:0.2.0", - "contao-backend-jumper@jetpack:0.2.1resigned1" - ] - }, - "schema": 1770575801733, - "key_format": "{guid}:{version}", - "stash_time": 1770597307326, - "id": "2a8b3e2c-58c9-45e0-b0aa-4dce8f2a4232", - "last_modified": 1770597400688 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.15", - "votran-v1@mermi-eklenti.com:1.0", - "votran-v1@mermi-eklenti.com:2.0", - "votran-v1@mermi-eklenti.com:3.0", - "votran-v1@mermi-eklenti.com:4.0", - "votran-v1@mermi-eklenti.com:5.0", - "votran-v1@mermi-eklenti.com:6.0", - "votran-v1@mermi-eklenti.com:7.0", - "votran-v1@mermi-eklenti.com:8.0", - "votran-v1@mermi-eklenti.com:10", - "votran-autobot-v1@mermi-eklenti.com:1.0", - "votran-autobot-v15@mermi-eklenti.com:15.0", - "votran-v1@mermi-eklenti.com:11", - "votran-v1@mermi-eklenti.com:1", - "{2bfb1ba4-23ff-4e25-b726-d506561e8078}:1.1.0", - "@MitStudieFarveSkema:1.0", - "local-pocket-reader@example.com:1.0.5", - "{f4549314-6b6b-40a9-94c9-c07fb84851a6}:1.0", - "{f4549314-6b6b-40a9-94c9-c07fb84851a6}:1.1", - "{f4549314-6b6b-40a9-94c9-c07fb84851a6}:1.2", - "{6870fa40-71b0-4626-a9cb-79fb4cd95470}:1.0", - "jerryxfu-home-island@github.io:1.0.0", - "jerryxfu-home-island@github.io:1.1.0", - "{46df126d-8745-402d-bfb6-a93d2a727a73}:1.0.83", - "vibecheck@gemini.hackathon:2.0.0" - ] - }, - "schema": 1770554197749, - "key_format": "{guid}:{version}", - "stash_time": 1770575706529, - "id": "2f47ae9b-265f-4079-8db8-1ec58a932ac0", - "last_modified": 1770575801511 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.6.0", - "iptv-pro-sidebar-2026@my-addon-service.net:1.4.0", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.6.1" - ] - }, - "schema": 1770532587470, - "key_format": "{guid}:{version}", - "stash_time": 1770554105964, - "id": "643f5474-97d7-4add-8c18-9ce580680db1", - "last_modified": 1770554197534 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{e9ebcf58-32aa-4805-bb2b-3116fbc41c75}:4.7.5.91", - "doviztakip@addon:3.2", - "doviztakip-aa@eklenti.com:5.2", - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.14", - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.12", - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.13", - "cw-copy-extension@kumatake:0.1.0" - ] - }, - "schema": 1770510998553, - "key_format": "{guid}:{version}", - "stash_time": 1770532505272, - "id": "30c29ab1-eebe-4ad4-892a-5eea2e04836b", - "last_modified": 1770532587212 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "duo_pulse_hud_v1@tewu.geek.pl:1.1", - "sosyal-metin-kontrol@uo:2.0.0", - "{9bfb56e9-405f-4ac8-96fb-a269d9344dc9}:1.0" - ] - }, - "schema": 1770489396811, - "key_format": "{guid}:{version}", - "stash_time": 1770510906575, - "id": "87938fd8-b7e0-42e7-ac87-271b488f8bed", - "last_modified": 1770510998307 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.5", - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.6", - "chatgpt-export-mdhtml-personal-e36fd2f7be@local.invalid:1.0.4", - "{6a38461c-8a46-442f-ba3f-de76a3293412}:15", - "{6a38461c-8a46-442f-ba3f-de76a3293412}:15.0.1", - "ogu.adblock@182.ooo:1.0.0", - "{e982191e-6d56-4194-8a1a-db5d36ef3c3d}:1.0", - "{e982191e-6d56-4194-8a1a-db5d36ef3c3d}:1.1", - "pitch.accent@tracker.local:1.0", - "{91a3432e-0b22-4446-b88c-e8fdf75a044d}:1.0", - "{dabf315f-9796-4a35-b254-f0450108b799}:1.0", - "{c78cb3d9-da95-4989-9c67-e47761ce928f}:1.0", - "gblock@gblock.com:1.2", - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.7", - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.8", - "watchthis@movingmillennial.de:1.0.0", - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.9", - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.10", - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.11", - "popupinspector@example.com:2.0.1", - "popupinspector@example.com:2.0.0", - "us-tz-spoofer-pro-v2@extension:3.0.0", - "poe-helper@ulbocheonsa:4.2.0", - "profile-proxy-2f7b1@local2:0.1.23" - ] - }, - "schema": 1770467781949, - "key_format": "{guid}:{version}", - "stash_time": 1770489306322, - "id": "73522cec-f24a-45ff-a88c-3df5023b9210", - "last_modified": 1770489396563 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "wb-price-tracker-unique@example.org:1.0", - "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.4", - "confluence-to-markdown.mozilla.org@nvrr.dev:1.0.0", - "oguadblock@182.ooo:1.0.0", - "rovalra-firefox@notvalra.com:2.4.7", - "mira-translator@davidbai.com:2.0.0", - "mira-translator@davidbai.com:2.5.2", - "mira-translator@davidbai.com:2.6.2", - "mira-translator@davidbai.com:2.6.3", - "mira-translator@davidbai.com:3.0.0", - "{476cc63b-c439-4df7-8e84-3b51f3bbe907}:2.2.1", - "{476cc63b-c439-4df7-8e84-3b51f3bbe907}:2.2.2", - "{476cc63b-c439-4df7-8e84-3b51f3bbe907}:2.2.3", - "binom-offer-helper@example.com:1.1.2", - "you.goto.510@gmail.com:0.0.2" - ] - }, - "schema": 1770446180565, - "key_format": "{guid}:{version}", - "stash_time": 1770467705409, - "id": "4118c736-c09a-442f-a554-27e192c4739a", - "last_modified": 1770467781635 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "drag_to_privew@uxer:0.0.85", - "drag_to_privew@uxer:0.0.84", - "drag_to_privew@uxer:0.0.83", - "favory@sp4ce.pw:2.9.2", - "{39cb94d9-87a8-421c-986b-e6bd423a01fd}:0.0.1", - "duochrome@intuitiveexplanations.com:1.3.81", - "favory@sp4ce.pw:2.9.3", - "youtube-volume-scroll@chungushub:1.0", - "favory@sp4ce.pw:2.9.4", - "favory@sp4ce.pw:2.9.5" - ] - }, - "schema": 1770424604929, - "key_format": "{guid}:{version}", - "stash_time": 1770446105299, - "id": "16ac1001-1db7-4962-8367-efd4429631f6", - "last_modified": 1770446180344 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "focuslock@manus.im:1.4.14", - "litetube-v1-release@my-addon.com:1.4.4", - "agentblame@mesa.dev:3.0.3", - "agentblame@mesa.dev:3.0.7", - "agentblame@mesa.dev:3.1.0", - "agentblame@mesa.dev:3.1.1", - "agentblame@mesa.dev:3.1.2", - "agentblame@mesa.dev:3.1.3", - "{3d9acf52-8007-4a41-ac3e-af6567709917}:1.0", - "{3d9acf52-8007-4a41-ac3e-af6567709917}:1.1", - "Test@Window:1.14", - "{e0e2cf0a-9359-464d-b77c-3a1c8aa1a394}:1.0", - "{e0e2cf0a-9359-464d-b77c-3a1c8aa1a394}:1.1", - "{6e713bc3-6af4-4c7b-953c-2fd3f8f8acd4}:1.0" - ] - }, - "schema": 1770402993806, - "key_format": "{guid}:{version}", - "stash_time": 1770424506346, - "id": "198da868-787f-4c9a-b4aa-c562a2945718", - "last_modified": 1770424604708 - }, - { - "stash": { - "blocked": [ - "{ff68a51d-37b7-42a9-81e1-dbd85e078d4b}:2.0.9", - "{ff68a51d-37b7-42a9-81e1-dbd85e078d4b}:2.0.10", - "init@addon.org:0.2.1", - "{16237e0d-7d7f-4645-9273-30e5eec92e77}:1.5.4", - "{16237e0d-7d7f-4645-9273-30e5eec92e77}:1.5.5", - "{16237e0d-7d7f-4645-9273-30e5eec92e77}:1.5.6", - "{6b182547-353c-4248-8ebb-bf98db0eaee3}:5.7.2", - "{6b182547-353c-4248-8ebb-bf98db0eaee3}:5.7.3", - "{6b182547-353c-4248-8ebb-bf98db0eaee3}:13.18.0", - "{6b182547-353c-4248-8ebb-bf98db0eaee3}:13.18.1" - ], - "unblocked": [], - "softblocked": [ - "video-downloader@ai-assistant.local:1.6", - "book-more@yourdomain.com:1.2.12", - "wpcommand@wpcommand.com:1.0.0", - "wpcommand@wpcommand.com:1.0.1", - "orgcommand-sync@orgcommand.app:1.0.2", - "orgcommand-sync@orgcommand.app:1.0.1", - "4pda-live@brantx:1.6.1.1", - "multi-scrape@example.local:1.25", - "pl-en@magnus:1.2.8", - "pl-en@magnus:1.3.0", - "{13e58ca8-b3b8-453c-8760-7206de3cd9af}:1.0", - "{6feb8625-dfba-4dbb-9422-063a329f61bd}:1.0", - "{6feb8625-dfba-4dbb-9422-063a329f61bd}:1.1", - "{6feb8625-dfba-4dbb-9422-063a329f61bd}:1.2", - "autoretry@yourproxyfix.local:1.5", - "casb-connector@iboss.com:0.0.2", - "raikey@raigaa.dev:1.0.0", - "taskflow@extension.local:1.4.2", - "{8f3c2b6e-9c4a-4b0d-9e2d-6a7f1c4e52a9}:1.2.10", - "{8f3c2b6e-9c4a-4b0d-9e2d-6a7f1c4e52a9}:1.2.10b", - "{6eb5bc38-8139-4589-81fb-e8abfe1bd52e}:4.7.3", - "{6eb5bc38-8139-4589-81fb-e8abfe1bd52e}:4.7.4", - "title@url:0.5", - "zhihu-blocker@local:1.0.0", - "nextcloud-markdown-switcher@gfz.de:1.0.1" - ] - }, - "schema": 1770381397550, - "key_format": "{guid}:{version}", - "stash_time": 1770402906807, - "id": "289eb128-760d-4e01-83c2-0e657c6a4b25", - "last_modified": 1770402993501 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "realnamewidget@apoveda:1.0", - "{c7e0b5c0-b927-4f5b-8ab2-3bcd44b879df}:1.0.1", - "{c7e0b5c0-b927-4f5b-8ab2-3bcd44b879df}:1.0.3", - "{c7e0b5c0-b927-4f5b-8ab2-3bcd44b879df}:1.0.4", - "{c7e0b5c0-b927-4f5b-8ab2-3bcd44b879df}:1.0.5", - "{c7e0b5c0-b927-4f5b-8ab2-3bcd44b879df}:1.0.54", - "{53647674-e77b-4f02-b62f-7e9cc030402b}:1.0", - "{53647674-e77b-4f02-b62f-7e9cc030402b}:1.1", - "{53647674-e77b-4f02-b62f-7e9cc030402b}:1.2", - "{53647674-e77b-4f02-b62f-7e9cc030402b}:1.4", - "better-time-cockpit@dynatrace.com:1.0.0", - "weibo-cookie-helper@example.com:1.0.1", - "weibo-cookie-helper@example.com:1.0.2", - "weibo-cookie-helper@example.com:1.0.3", - "weibo-cookie-helper@example.com:1.0.4", - "weibo-cookie-helper@troray.github.io:1.0.5" - ] - }, - "schema": 1770359792915, - "key_format": "{guid}:{version}", - "stash_time": 1770381306458, - "id": "44c12581-927c-4480-8ea4-738f8fd29eef", - "last_modified": 1770381397398 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "@webdevelopersidekick:0.0.26", - "@webdevelopersidekick:0.0.28", - "{648bdc74-94c6-4196-8789-d5947268867c}:5.1", - "{648bdc74-94c6-4196-8789-d5947268867c}:5.0", - "{648bdc74-94c6-4196-8789-d5947268867c}:4.5", - "{648bdc74-94c6-4196-8789-d5947268867c}:4.2", - "{648bdc74-94c6-4196-8789-d5947268867c}:4.1", - "{648bdc74-94c6-4196-8789-d5947268867c}:4.0", - "{648bdc74-94c6-4196-8789-d5947268867c}:3.5", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.5.2", - "{72cecf13-9c76-4c72-a670-2cf9ff77eec6}:0.1.0", - "sat-web-record@beyondsoft.com:2.1.20", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.5.3", - "favory@sp4ce.pw:2.9.1", - "company-registration-tool@yourdomain.com:1.5.0" - ] - }, - "schema": 1770338191556, - "key_format": "{guid}:{version}", - "stash_time": 1770359706124, - "id": "3bc86f61-5636-4eab-958a-c25c24680515", - "last_modified": 1770359792597 - }, - { - "stash": { - "blocked": [ - "{e58ea576-2661-4612-ae4b-1c8d3b7baac8}:2.4.8", - "{e58ea576-2661-4612-ae4b-1c8d3b7baac8}:2.4.7" - ], - "unblocked": [], - "softblocked": [ - "us-timezone-spoofer-pro@extension:3.0.0", - "media-dl@barahmand.com:2.0", - "dynamic-text-copier@example.com:1.1", - "borderify@aashay.com:1.2", - "{25fc87fa-4d31-4fee-b5c1-c32a7844c063}:8.11.18.2491", - "{25fc87fa-4d31-4fee-b5c1-c32a7844c063}:8.11.18.2501", - "add-to-notebooklm@ff.local:1.1.0", - "favory@sp4ce.pw:2.8.9" - ] - }, - "schema": 1770316591919, - "key_format": "{guid}:{version}", - "stash_time": 1770338106333, - "id": "fc1efb8d-fdde-4e04-8a96-cf1421a8c6bb", - "last_modified": 1770338191246 - }, - { - "stash": { - "blocked": [ - "comprehensive-enhance-7961f55a@firefox.extension:4.2.6", - "comprehensive-enhance-7961f55a@firefox.extension:4.2.7", - "color-flow-a1506ded@firefox.extension:2.3.4", - "color-flow-a1506ded@firefox.extension:2.3.5", - "enhanced-browser-master-b8uienik@firefox.extension:2.1.4", - "enhanced-browser-master-b8uienik@firefox.extension:2.1.5", - "build-clipboard-h1-8c9a050b@firefox.extension:3.0.5", - "{e58ea576-2661-4612-ae4b-1c8d3b7baac8}:2.4.9" - ], - "unblocked": [], - "softblocked": [ - "devfred886@gmail.com:1.0.9", - "052dacf5-2638-4086-8165-8373e9c21e4e@example.com:0.2.1", - "multi-scrape@example.local:1.23", - "tracking-lbc-extension-filler@nemesis-studio.com:1.0.0", - "tracking-lbc-extension-filler@nemesis-studio.com:1.0.1", - "{4cd11f8b-8c33-472d-a725-f8bc4469328b}:0.0.4", - "fukushima-haccp-record-only@local:1.0.0", - "fukushima-haccp-record-only_v2@local:1.0.0", - "bearerbox@bearerbox.dev:1.0", - "{670390bb-e4e6-4394-932d-1e5cb87c77c0}:1.0", - "favory@sp4ce.pw:2.8.7", - "favory@sp4ce.pw:2.8.6", - "favory@sp4ce.pw:2.8.5", - "favory@sp4ce.pw:2.8.8", - "{ff68a51d-37b7-42a9-81e1-dbd85e078d4b}:2.0.6", - "{ff68a51d-37b7-42a9-81e1-dbd85e078d4b}:2.0.5", - "{ff68a51d-37b7-42a9-81e1-dbd85e078d4b}:2.0.8" - ] - }, - "schema": 1770294989969, - "key_format": "{guid}:{version}", - "stash_time": 1770316506516, - "id": "76c453e6-6c20-4700-b049-ce6a2004dd2f", - "last_modified": 1770316591483 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "mute-cricket-ads@iShibi:0.1.0", - "mute-cricket-ads@firefox:0.1.0", - "invidious-saver@osamaserverhome.duckdns.org:1.0", - "endfield-checkin@example.com:0.3.0", - "endfield-checkin@example.com:0.2.0", - "jid1-Sr1xtqTx9MX0Aw@jetpack:4.1.0.0", - "print-robust@example.com:4.0", - "print-as-is@example.com:4.0", - "print-as-is@example.com:0.1", - "devfred886@gmail.com:1.0.8" - ] - }, - "schema": 1770273386752, - "key_format": "{guid}:{version}", - "stash_time": 1770294906343, - "id": "82c5c79f-5bcb-4135-9ebe-0f0e14708128", - "last_modified": 1770294989666 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{382d1804-eb88-4cd4-bdf2-d70df4a937d2}:4.0", - "custom-newtab@local:1.0" - ] - }, - "schema": 1770251784217, - "key_format": "{guid}:{version}", - "stash_time": 1770273305697, - "id": "11c677c5-d5d0-4d04-aae6-fd00a23931d8", - "last_modified": 1770273386464 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "endfield-checkin@example.com:0.1.0", - "portforward@polderman.it:1.0.0", - "{0108d417-b00d-4699-b264-f192a615d235}:3.0", - "{2d8139d2-21ba-4b65-93f0-7a2e9e8a51c6}:3.0", - "Test@Window:1.0", - "Test@Window:1.1", - "Test@Window:1.2", - "Test@Window:1.3", - "Test@Window:1.4", - "{e58ea576-2661-4612-ae4b-1c8d3b7baac8}:2.4.8", - "{e58ea576-2661-4612-ae4b-1c8d3b7baac8}:2.4.7", - "{25fc87fa-4d31-4fee-b5c1-c32a7844c063}:8.11.18.2421", - "{25fc87fa-4d31-4fee-b5c1-c32a7844c063}:8.11.18.2411", - "Test@Window:1.5", - "Test@Window:1.6", - "Test@Window:1.7", - "favory@sp4ce.pw:2.8.2", - "{5f8d9e2a-1b3c-4d5e-6f7a-8b9c0d1e2f3a}:2.63", - "Test@Window:1.8", - "Test@Window:1.9", - "Test@Window:1.10", - "{47299dc5-bc1a-4a7b-a84a-540335e008ad}:1.0", - "Test@Window:1.11", - "favory@sp4ce.pw:2.8.3", - "favory@sp4ce.pw:2.8.4", - "Test@Window:1.12", - "Test@Window:1.13" - ] - }, - "schema": 1770230191478, - "key_format": "{guid}:{version}", - "stash_time": 1770251705532, - "id": "83808ded-a1b4-4c8a-8be5-7cb0e3cde874", - "last_modified": 1770251784014 - }, - { - "stash": { - "blocked": [ - "super-browser-pro-j017x4xv@firefox.extension:1.8.2", - "super-browser-pro-j017x4xv@firefox.extension:1.8.5", - "quick-schedule-d13d0971@firefox.extension:5.3.5", - "quick-schedule-d13d0971@firefox.extension:5.3.6", - "quick-helper-ovlniqie@firefox.extension:3.7.3", - "quick-helper-ovlniqie@firefox.extension:3.7.5", - "pro-debug-df9e4821@firefox.extension:1.4.8", - "{a70d97a6-1b18-4fa3-bc91-17c7a796c49d}:5.9.8", - "{a70d97a6-1b18-4fa3-bc91-17c7a796c49d}:5.9.9" - ], - "unblocked": [], - "softblocked": [ - "stud-ip-teilnehmenden-addon@uni-hannover.de:1.0", - "studip-teilnehmer-abgleich@uni-hannover.de:2", - "yt-path-picker@local:1.0", - "msloginautofill@example.com:1.0.0", - "pixtab@pixtab.extension:1.8", - "jahid@doc.pro:1.0.69", - "contact@mehmetsalihk.fr:2.6", - "gblock@example.com:1.2", - "redirectlinktest@fluks1:5.7.0", - "redirectlinktest@fluks:5.7.0", - "favory@sp4ce.pw:2.8.1" - ] - }, - "schema": 1770208583232, - "key_format": "{guid}:{version}", - "stash_time": 1770230106131, - "id": "fa516345-4ef2-4e38-8055-53e6b9ebc181", - "last_modified": 1770230191230 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd6}:1.7.33", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd6}:1.7.34", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd6}:1.7.35", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd6}:1.7.36", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd6}:1.7.37", - "line@myself.com:1.1", - "yt-idm-turbo@cargan.com:1.1", - "yt-idm-turbo@cargan.com:1.2", - "octoplus@octoplushate.dev:4.0", - "pdfsigner@gov.fehd.cfs.fiecs.pdfsigner:3.0.0", - "octoplus@octoplusliv.dev:6.0", - "nextcloud-markdown-switcher@gfz.de:1.0", - "{56fb8b56-6b8a-4e0e-8313-0d0d84b959b1}:1.0", - "{6670bfd4-da4f-41c3-b52a-0dd3397f5a08}:1.0", - "{c583906d-755c-41d8-b077-454765d58ae7}:1.0", - "{ad7ae3fb-4144-48ce-84a5-a155a5097711}:1.0", - "maispje@justica.digital:2.1.2", - "auto-clicker@openclaw.extension:1.0.0", - "{fdfe0604-8e24-4e78-bef3-191c648bbbdd}:0.0.5", - "{fdfe0604-8e24-4e78-bef3-191c648bbbdd}:0.0.7", - "{fdfe0604-8e24-4e78-bef3-191c648bbbdd}:0.0.8", - "vpn-wildcard@fazee.custom:1.2.16", - "vpn-wildcard@fazee.custom:1.2.17", - "vpn-wildcard@fazee.custom:1.2.18", - "vpn-wildcard@fazee.custom:1.2.19", - "vpn-wildcard@fazee.custom:1.2.20", - "vpn-wildcard@fazee.custom:1.2.21", - "youtube-scheduler@yourdomain.com:1.5.1", - "youtube-scheduler@yourdomain.com:1.5.2", - "youtube-scheduler@yourdomain.com:1.5.3", - "youtube-scheduler@yourdomain.com:1.5.4", - "{aa2b2cb5-d290-4335-808c-560ed769018f}:1.0.3", - "video-controller@ronin-ck.com:2.0.0", - "{670b659f-089c-4fe0-928a-b8b6839b44de}:1.0.1", - "{670b659f-089c-4fe0-928a-b8b6839b44de}:1.0.2", - "{670b659f-089c-4fe0-928a-b8b6839b44de}:1.0.3", - "{670b659f-089c-4fe0-928a-b8b6839b44de}:1.0.4", - "{670b659f-089c-4fe0-928a-b8b6839b44de}:1.1.0", - "{670b659f-089c-4fe0-928a-b8b6839b44de}:1.1.1", - "{670b659f-089c-4fe0-928a-b8b6839b44de}:1.1.2", - "{670b659f-089c-4fe0-928a-b8b6839b44de}:1.1.3", - "{670b659f-089c-4fe0-928a-b8b6839b44de}:1.1.4", - "favory@sp4ce.pw:2.7.9" - ] - }, - "schema": 1770186996110, - "key_format": "{guid}:{version}", - "stash_time": 1770208505578, - "id": "067ae88d-7a17-4871-8aeb-fea346ee0895", - "last_modified": 1770208583018 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{60beab6d-17bb-411a-a55e-ed09f487ec1e}:5.6.9", - "mrm-downloader@nyt92.eu.org:1.3.4", - "mrm-downloader@nyt92.eu.org:1.3.3", - "restaurant-filter@example.com:1.0", - "support@timocom.com:0.1.4", - "vocab-collector@local:0.1.0", - "vocab-collector@local:0.1.1", - "vocab-collector@local:0.1.2", - "vocab-collector@local:1.0.0" - ] - }, - "schema": 1770165384966, - "key_format": "{guid}:{version}", - "stash_time": 1770186906659, - "id": "886769bc-6042-45d7-81df-7caeef62b66c", - "last_modified": 1770186995971 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "boost-monitor-converter-2fcac563@firefox.extension:5.8.5", - "boost-monitor-converter-2fcac563@firefox.extension:5.9.6", - "{d6f1dbe3-1238-47ff-ab3e-3451baac8e69}:2.5.0", - "{9ed2a9a5-a0fe-40d5-8836-0008249fe28b}:1.3.2.1", - "{9ed2a9a5-a0fe-40d5-8836-0008249fe28b}:2.3", - "{9ed2a9a5-a0fe-40d5-8836-0008249fe28b}:2.4.2", - "{9ed2a9a5-a0fe-40d5-8836-0008249fe28b}:2.4.3", - "{9ed2a9a5-a0fe-40d5-8836-0008249fe28b}:2.4.4", - "suspo-collector@example.com:1.0", - "suspo-collector@example.com:1.1", - "suspo-collector@example.com:1.2.1", - "{6f4156b8-4e01-4137-adad-e7aa28ce1707}:1.0", - "{6f4156b8-4e01-4137-adad-e7aa28ce1707}:1.1", - "{6f4156b8-4e01-4137-adad-e7aa28ce1707}:1.1.1", - "{6f4156b8-4e01-4137-adad-e7aa28ce1707}:1.4", - "shortkeys-custom-build@example.com:4.1.4", - "weather-buster-9000-xxx@extension.local:2.0.0", - "{f4a0e6b1-8c3a-4f2d-9e1a-7b5c2d8f3a4e}:1.0.1", - "{b2649c46-4196-42a1-bcff-da172f5bd9ec}:2.3.0", - "soft-gray-pdf-inveerter@usefull-tools:1.0" - ] - }, - "schema": 1770143792382, - "key_format": "{guid}:{version}", - "stash_time": 1770165305367, - "id": "50c4df6b-071e-4008-b2fb-997a39d77212", - "last_modified": 1770165384642 - }, - { - "stash": { - "blocked": [ - "packagetracking@livepackagetracking.com:1.0", - "packagetracking@livepackagetracking.com:1.1", - "packagetracking@livepackagetracking.com:1.2", - "maps@mapsdrivingdirections.com:1.0", - "maps@mapsdrivingdirections.com:1.1", - "maps@mapsdrivingdirections.com:1.2", - "maps@mapsdrivingdirections.com:1.3", - "earth@earthsatellite3d.com:1.0", - "earth@earthsatellite3d.com:1.1", - "earth@earthsatellite3d.com:1.2", - "earth@earthsatellite3d.com:1.3", - "earth@earthsatellite3d.com:1.4", - "{4aa8f833-0066-42e1-ba07-13e4b5fc3599}:1.0", - "{ec9cb034-58f8-4fb9-ae28-8240899a9da2}:1.0", - "{ffe1ffe4-603f-44c0-9770-06ac793366d7}:1.0", - "{89f4a5dc-9574-43d6-8eed-2a6b02df2dfe}:1.0", - "{db69bc71-48d6-4033-a6c9-dc08d3c5f880}:1.0", - "prime-watcher-kradk5oa@firefox.extension:1.1.5", - "prime-watcher-kradk5oa@firefox.extension:1.2.7" - ], - "unblocked": [], - "softblocked": [ - "techpriest@gurglorium.com:0.9.0", - "psydez@gmail.com:1.0", - "article-search@example.com:1.0.4", - "octoplus@octopluswin.dev:8.0", - "octoplus@octoplusbad.dev:3.0", - "octoplus@octoplusthree.dev:5.0", - "octoplus@octopluswell.dev:7.0", - "ai-tab-organizer@example.com:1.0.1", - "octoplus@octopluslove.dev:4.0", - "drag_to_privew@uxer:0.0.81", - "kurabu-ausweis@bremen1860.de:2.0.6", - "@minimalist-dev-build:8.7", - "@giseo-helper:1.1", - "{9fec991b-50db-4848-ad4e-beebf328c94b}:2.5.2", - "{9fec991b-50db-4848-ad4e-beebf328c94b}:2.5.4", - "{9fec991b-50db-4848-ad4e-beebf328c94b}:2.5.6", - "@giseo-helper:1.2", - "{77666993-534b-4850-bd76-63762591d6cb}:1.0", - "{1509130c-27fb-47a8-a04f-d75e3449ace9}:1.0", - "{613dc4be-da76-4e1a-9221-4e70cb5f3118}:1.0", - "drag_to_privew@uxer:0.0.82" - ] - }, - "schema": 1770122181689, - "key_format": "{guid}:{version}", - "stash_time": 1770143707307, - "id": "1297d5f2-c123-4a08-bde7-09f225b89b34", - "last_modified": 1770143792077 - }, - { - "stash": { - "blocked": [ - "john.harris26092001rz@outlook.com:1.0.8", - "{fc8e9751-4550-40e1-9bcf-1478088b9743}:3.9.4", - "secure-browse-emgwlkdx@firefox.extension:1.8.9", - "secure-browse-pqniu8vs@firefox.extension:3.2.7", - "power-cookie-master-hnye61ye@firefox.extension:3.9.0", - "power-cookie-master-hnye61ye@firefox.extension:4.1.0", - "zen-amplify-json-d7262187@firefox.extension:2.8.3", - "zen-amplify-json-d7262187@firefox.extension:2.8.5", - "smart-bookmarks-63gfz33o@firefox.extension:1.2.6", - "improved-tab-manager-2f4gskrh@firefox.extension:2.3.4", - "{cee33d67-2e65-4625-97a3-bf3496a4f1e6}:5.5.1" - ], - "unblocked": [], - "softblocked": [ - "robin.zhuang@sap.com:0.0.1", - "{fc8e9751-4550-40e1-9bcf-1478088b9743}:3.9.3", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.5.1", - "medminutes@imperialHealthtech.com:1.5.0", - "{80c8dd42-6c4a-44da-a29c-e4f54c296a50}:1.0", - "{80c8dd42-6c4a-44da-a29c-e4f54c296a50}:2.0", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.0", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.1", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.2", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.3", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.1", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.2", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.3", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.4", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.5", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.6", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.7", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.8", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.9", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.10", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.11", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.12", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.13", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.14", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.15", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.16", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.17", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.18", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.19", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.20", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.21", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.22", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.23", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.24", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.25", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.26", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.27", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.28", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.29", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.30", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.31", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.32", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.33", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.34", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.35", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.36", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.37", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.38", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.39", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.40", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.41", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.42", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.43", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.44", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.45", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.46", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.47", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.48", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.49", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.50", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.51", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.52", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.53", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.54", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.55", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.56", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.57", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.58", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.4.59", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.1", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.2", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.3", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.4", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.41", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.42", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.43", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.44", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.46", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.47", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.50", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.51", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.52", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.53", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.54", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.55", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.56", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.57", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.58", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.59", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.60", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.61", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.62", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.63", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.64", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.65", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.66", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.67", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.68", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.5.69", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.1", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.11", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.12", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.13", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.14", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.15", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.16", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.17", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.18", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.19", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.20", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.21", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.22", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.24", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.25", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.26", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.27", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.28", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.29", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.30", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.31", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.32", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.33", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.34", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.35", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.36", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.37", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.38", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.39", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.40", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.41", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.42", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.43", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.44", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.45", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.46", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.47", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.48", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.49", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.50", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.51", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.52", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.53", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.54", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.55", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.56", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.57", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.58", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.64", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.65", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.66", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.67", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.68", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.69", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.70", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.71", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.73", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.74", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.75", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.76", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.77", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.78", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.79", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.80", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.81", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.82", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.83", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.84", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.85", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.86", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.87", - "{1a1275a1-6e24-4788-8ec2-2cd5e98c9cd5}:1.6.88", - "endpoint-shield@adlibo.com:1.5.0", - "agent@blowtorch.local:1.0.0", - "octoplus@octoplusexe.dev:6.0", - "octoplus@octoplusend.dev:1.0", - "inist.users@gmail.com:3.19.3", - "inist.users@gmail.com:3.19.4", - "inist.users@gmail.com:3.19.5", - "inist.users@gmail.com:3.27.0", - "inist.users@gmail.com:3.19.6", - "inist.users@gmail.com:3.19.7", - "inist.users@gmail.com:3.19.8", - "inist.users@gmail.com:3.20.0", - "inist.users@gmail.com:3.21.0", - "inist.users@gmail.com:3.22.0", - "inist.users@gmail.com:3.22.1", - "inist.users@gmail.com:3.23.0", - "inist.users@gmail.com:3.23.1", - "vulcan-export-final@feature-adder.it:1.0.4", - "vulcan-export-final@feature-adder.it:1.0.5", - "vulcan-export-final@feature-adder.it:1.0.6", - "vulcan-export-final@feature-adder.it:1.1.0", - "my_extension_id@example.com:1.0", - "{95ccf8ff-7b52-49b6-9319-cbca4bcc7677}:1.0.1", - "{95ccf8ff-7b52-49b6-9319-cbca4bcc7677}:1.0.4", - "recipe-scraper@tailscale.local:1.0" - ] - }, - "schema": 1770100592617, - "key_format": "{guid}:{version}", - "stash_time": 1770122105209, - "id": "e94dc20f-cd74-416f-ba75-268a2a06277f", - "last_modified": 1770122181361 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "stereotweet@bjaxqq.com:1.0.0", - "{1ca57218-5c75-4941-ade2-05e1bc956cd9}:1.0", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.8.3", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.8.2", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.8.1", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.8", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.7.1", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.7", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.6", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.5", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.4", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.3", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.2", - "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:1.1", - "claude-export-tool@example.com:1.0.0", - "claude-export-tool@example.com:1.0.1", - "grok-export-tool@example.com:1.0.0", - "chatgpt-export-tool@example.com:1.0.0" - ] - }, - "schema": 1770078991811, - "key_format": "{guid}:{version}", - "stash_time": 1770100506656, - "id": "fb083e71-9608-4a67-b0e1-cc4fc70c08b3", - "last_modified": 1770100592401 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{e1f404e8-db13-4a8d-a21a-75bcf87fa619}:2.6.5", - "{e1f404e8-db13-4a8d-a21a-75bcf87fa619}:2.6.8", - "{ab2c6387-bfcd-4c64-8cbb-2514b321385d}:1.0", - "{5d686bd0-460d-48a5-b13e-eccaebe5b4c4}:4.2.4", - "hnlghhimlfidcnmaimhmmjkhmofolnpl@integralbiometrics.com:2026.2.2.16223", - "schmidts_katz@cubimon.org:1.5", - "schmidts_katz@cubimon.org:1.3", - "schmidts_katz@cubimon.org:1.1", - "schmidts_katz@cubimon.org:1.4", - "schmidts_katz@cubimon.org:1.0", - "cubimmon93@gmail.com:1.8.0", - "streamkeys@streamkeys.com:1.8.0", - "streamkeys@streamkeys.com:1.8.1", - "{21c0c650-2c28-4102-a546-5349cd4048f3}:0.0.1" - ] - }, - "schema": 1770057395832, - "key_format": "{guid}:{version}", - "stash_time": 1770078907123, - "id": "4dff0afd-1619-4a85-a3bc-7f08fec889a8", - "last_modified": 1770078991338 - }, - { - "stash": { - "blocked": [ - "{ad370ce4-47b7-4f4f-b891-25576784af1d}:5.6.6", - "{ad370ce4-47b7-4f4f-b891-25576784af1d}:5.6.7", - "{ad370ce4-47b7-4f4f-b891-25576784af1d}:5.6.8", - "tab-alarm@extension.com:1.0.0", - "tab-alarm@extension.com:1.1.0", - "ultra-utility-abnla0so@firefox.extension:2.4.6", - "turbo-browser-helper-rbmi4mdi@firefox.extension:2.9.4", - "turbo-browser-helper-rbmi4mdi@firefox.extension:2.9.5", - "smart-keeper-6i4vcsgy@firefox.extension:1.3.6", - "smart-keeper-6i4vcsgy@firefox.extension:1.3.7", - "best-tab-organizer-7fr4n7ka@firefox.extension:2.9.7", - "best-tab-organizer-7fr4n7ka@firefox.extension:13.16.1", - "{b4a5b1b6-6225-40db-977f-41c107b04f19}:1.0", - "{71070de4-6220-496b-adc5-aa1931a63f6a}:1.0", - "{71070de4-6220-496b-adc5-aa1931a63f6a}:3.15.3", - "{78962e30-ef60-45ef-ad55-9949e497c554}:1.0", - "{78962e30-ef60-45ef-ad55-9949e497c554}:1.1.3" - ], - "unblocked": [], - "softblocked": [ - "r-helper@astralinux.ru:1.3.0", - "r-helper@astralinux.ru:1.3.1", - "octoplus@octoplustry.dev:4.0", - "swift-bookmark-manager-kxkejsbl@firefox.extension:3.5.2", - "{118beff8-a383-4cbe-9e02-1623f0cb1280}:1.0.4", - "tebex-autofill@local:1.0.0", - "admin-jkfix@torata.ch:1.0", - "secure-browse-emgwlkdx@firefox.extension:1.7.9", - "contact@bulenox.codes:4.3.23", - "{8fdea742-9b86-4c1f-a79b-e8b5c6aa21e7}:7.7", - "{e35301ab-9443-4437-aedb-81b3c2f9ef76}:1.0", - "smart-justify-v3@clean-fix:1.0", - "{71d7d949-a04e-4925-aef6-3b1730982a3c}:1.0", - "{95fd1cd9-1f2d-46ce-9dbe-6a954b59a315}:1.0", - "{d9e6daa5-40e2-4210-b333-3023a8256ec3}:1.1", - "{c22b3ac9-da98-467c-9d62-cbd20d1cff65}:2.1.5", - "{c22b3ac9-da98-467c-9d62-cbd20d1cff65}:2.1.9", - "cookie-cliker-tools@local:0.5" - ] - }, - "schema": 1770035790698, - "key_format": "{guid}:{version}", - "stash_time": 1770057306508, - "id": "6154dea9-e9df-412e-94ae-fa3f614c43b8", - "last_modified": 1770057395700 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "octoplus@octoplusmultib.dev:1.0", - "visited-links-colorizer@ngothang2805.github.io:1.2.7", - "octoplus@octoplusbeggin.dev:1.0", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.5.0", - "withdrawal-extractor@paynexbot.com:1.0.2", - "endpoint-shield@adlibo.com:1.4.0", - "endpoint-shield@adlibo.com:1.3.0", - "{49d75de4-60d6-4173-bd01-e355c78c5306}:1.0.0", - "jira-copy-button@extension.local:1.0.0", - "octoplus@octoplusend.dev:2.0", - "info1@latynka.pp.ua:0.0.1", - "octoplus@octoplusreal.dev:3.0", - "nord-paper-theme@dotfiles:1.0.0", - "nord-paper-theme@dotfiles:1.0.1", - "nord-paper-theme@dotfiles:1.0.2", - "nord-paper-theme@dotfiles:1.0.3", - "nord-paper-theme@dotfiles:1.0.4", - "nord-paper-theme@dotfiles:1.0.5" - ] - }, - "schema": 1770014195563, - "key_format": "{guid}:{version}", - "stash_time": 1770035706705, - "id": "368277b4-3d4f-46fc-89c9-5fc718756a0f", - "last_modified": 1770035790495 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.3.9", - "favory@sp4ce.pw:2.7.7", - "favory@sp4ce.pw:2.7.8", - "@confluence-style-fix:1.1", - "@confluence-style-fix:1.2", - "@confluence-style-fix:1.3", - "@confluence-style-fix:1.31" - ] - }, - "schema": 1769992580511, - "key_format": "{guid}:{version}", - "stash_time": 1770014106635, - "id": "96129b93-6844-4cb3-8b29-4a2ea1b27d26", - "last_modified": 1770014195250 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "screen-res-spoofer@example.com:5.0", - "stevereis93@gmail.com:0.2.9", - "octoplus@sakhiwo.dev:1.0", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.3.8", - "octoplus@mydomain.com:1.0", - "{54be7a61-d6aa-4938-b496-c1c986fd8af3}:0.1", - "{54be7a61-d6aa-4938-b496-c1c986fd8af3}:0.1.1", - "{54be7a61-d6aa-4938-b496-c1c986fd8af3}:0.1.2", - "twoje-id-rozszerzeniav2@example.com:1.0.0", - "twoje-id-rozszerzeniav2@example.com:1.0.1", - "container-automator-dev@local.local:1.0", - "sekercancepni@hotmail.com:1.0.0", - "{9fc10399-ff0d-41c1-9e84-5df6bea8d7c9}:1.0" - ] - }, - "schema": 1769970979264, - "key_format": "{guid}:{version}", - "stash_time": 1769992505540, - "id": "f2fab369-878d-40f9-968e-46d7f858a8e4", - "last_modified": 1769992580374 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{92409c9f-a7c8-44f2-ab96-57cf56b32f1c}:2.0", - "{92409c9f-a7c8-44f2-ab96-57cf56b32f1c}:1.0", - "{92409c9f-a7c8-44f2-ab96-57cf56b32f1c}:2.1", - "{92409c9f-a7c8-44f2-ab96-57cf56b32f1c}:2.2", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:1.0", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:2.0", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:1.5", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:1.1", - "{648bdc74-94c6-4196-8789-d5947268867c}:3.2", - "{648bdc74-94c6-4196-8789-d5947268867c}:3.1", - "{648bdc74-94c6-4196-8789-d5947268867c}:2.0", - "{648bdc74-94c6-4196-8789-d5947268867c}:1.3", - "{648bdc74-94c6-4196-8789-d5947268867c}:1.4", - "{648bdc74-94c6-4196-8789-d5947268867c}:1.1", - "{d6aa6b3b-749f-4f84-855e-fa709b733b2a}:1.0", - "endpoint-shield@adlibo.com:1.2.1", - "endpoint-shield@adlibo.com:1.1.0", - "endpoint-shield@adlibo.com:1.2.0", - "@link-collector:1.0", - "cool-bookmark-master-b7xmf65w@firefox.extension:2.1.4", - "pocket-csv@iamtrazy.dev:1.0.0", - "bright-extension-pyaz9dyg@firefox.extension:2.7.8", - "ultimate-cookie-manager-vd23jzmo@firefox.extension:2.1.8", - "elite-tool-ydbvn7i8@firefox.extension:1.5.4", - "elite-tool-ydbvn7i8@firefox.extension:1.5.6", - "saver-your-tabs@firefox.extension:1.2.0", - "saver-your-tabs@firefox.extension:1.3.0", - "saver-your-tabs@firefox.extension:1.5.0", - "{662917d2-f7ef-466a-8e95-37d46e528557}:1.5.2", - "{662917d2-f7ef-466a-8e95-37d46e528557}:1.5.3" - ] - }, - "schema": 1769949390781, - "key_format": "{guid}:{version}", - "stash_time": 1769970905254, - "id": "89eadc17-3193-4bd8-89ab-b245464d7aa1", - "last_modified": 1769970979102 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{3f7a0d32-bb7d-4f4b-99c9-bb58e1a9129a}:0.5", - "{3f7a0d32-bb7d-4f4b-99c9-bb58e1a9129a}:0.4", - "image-downloader@ozler365:15.5", - "{9d1d71e5-6e31-4499-a97e-35c8daa13f1b}:1.3.3", - "arc@dobybaxter.dev:1.0.1" - ] - }, - "schema": 1769927793759, - "key_format": "{guid}:{version}", - "stash_time": 1769949306304, - "id": "f7b22f4d-c422-437f-b244-ed69dfb1dfdc", - "last_modified": 1769949390564 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "tfs-extension@indra.com:1.0.0", - "ultimate-browser-pro-zup14ejf@firefox.extension:3.1.7", - "google-account-switcher@antigravity.ai:1.3", - "ultimate-browser-pro-zup14ejf@firefox.extension:13.16.0", - "ultimate-browser-pro-zup14ejf@firefox.extension:13.16.1", - "best-history-manager-eaypj5m4@firefox.extension:1.8.5", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.3.4", - "dynamic-text-copier@example.com:1.0", - "enhanced-add-on-8x946rbl@firefox.extension:1.0.7", - "enhanced-add-on-8x946rbl@firefox.extension:1.0.8", - "enhanced-add-on-8x946rbl@firefox.extension:1.0.9", - "awesome-history-viewer-s9c279wa@firefox.extension:1.1.4", - "awesome-history-viewer-s9c279wa@firefox.extension:1.1.5", - "awesome-history-viewer-s9c279wa@firefox.extension:1.1.6", - "awesome-history-viewer-s9c279wa@firefox.extension:1.1.7", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.3.6", - "steamgifts-region-helper@example.com:1.1", - "steamgifts-region-helper@example.com:1.2", - "steamgifts-region-helper@example.com:1.3", - "steamgifts-region-helper@example.com:1.4", - "steamgifts-region-helper@example.com:1.5", - "steamgifts-region-helper@example.com:1.6" - ] - }, - "schema": 1769906196355, - "key_format": "{guid}:{version}", - "stash_time": 1769927707268, - "id": "6ba66930-dd03-4420-b0aa-18422fa94991", - "last_modified": 1769927793499 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "microslop-to-microslop@wxn0.xyz:1.0", - "auto-justify-text-v6@yourname.com:6.1", - "steamgifts-region-paster@example.com:1.0", - "{44df8213-a17e-4915-a006-187d6d34bd95}:1.1.0", - "{44df8213-a17e-4915-a006-187d6d34bd95}:1.2.0", - "amazon_such_filter@example.com:1.0", - "amazon-such-filter@example.com:1.0", - "image-downloader@ozler365:15.4", - "{55990d14-944c-4462-863c-595fbbf51dbc}:1.0", - "gemini-stats@ardaemrekececioglu.com.tr:1.0.0", - "gemini-stats@ardaemrekececioglu.com.tr:2.2.0", - "gruung-assistant@contrib.lustgoddess.com:0.7", - "gruung-assistant@contrib.lustgoddess.com:0.9", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.3.3", - "tfs-connector@indra.com:1.0.0" - ] - }, - "schema": 1769884597838, - "key_format": "{guid}:{version}", - "stash_time": 1769906107107, - "id": "6cbfa66a-6581-4e53-aa91-2c200041763c", - "last_modified": 1769906196025 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "Movie.NoAds@vxh.io:1.0", - "Movie.NoAds@vxh.io:1.1", - "Movie.NoAds@vxh.io:1.2", - "Movie.NoAds@vxh.io:1.3", - "Movie.NoAds@vxh.io:1.4", - "Movie.NoAds@vxh.io:1.5", - "Movie.NoAds@vxh.io:1.6", - "VXH.NoAds@vxh.io:2.1", - "VXH.NoAds@vxh.io:2.2", - "VXH.NoAds@vxh.io:2.3", - "VXH.NoAds@vxh.io:2.4", - "VXH.NoAds@vxh.io:2.5", - "VXH.NoAds@vxh.io:2.6", - "VXH.NoAds@vxh.io:2.7", - "VXH.NoAds@vxh.io:2.8", - "VXH.NoAds@vxh.io:2.9", - "VXH.NoAds@vxh.io:2.10", - "VXH.NoAds@vxh.io:2.11", - "VXH.NoAds@vxh.io:2.12", - "VXH.NoAds@vxh.io:4.0", - "VXH.NoAds@vxh.io:4.1", - "VXH.NoAds@vxh.io:4.2", - "VXH.NoAds@vxh.io:4.3", - "VXH.NoAds@vxh.io:4.4", - "VXH.NoAds@vxh.io:4.5", - "VXH.NoAds@vxh.io:4.6", - "VXH.NoAds@vxh.io:4.7", - "VXH.NoAds@vxh.io:4.8", - "VXH.NoAds@vxh.io:4.9", - "VXH.NoAds@vxh.io:4.10", - "VXH.NoAds@vxh.io:4.11", - "VXH.NoAds@vxh.io:4.12", - "VXH.NoAds@vxh.io:4.13", - "VXH.NoAds@vxh.io:4.14", - "VXH.NoAds@vxh.io:4.15", - "jira-kanban-exporter@local:0.1.0", - "{46ac2b73-7f98-481d-bf46-d9ea9956665e}:2026.1.31.13310", - "hls@localhost:1.2", - "hls@localhost:1.1", - "{8e60c975-8458-461a-b2fe-86ce81dd71c4}:1.0", - "justifyarticles@technology:4.0", - "justifyarticles@technology:6.1", - "hls@localhost:1.0", - "hls@localhost:1.1.1", - "alon11559@gmail.com:2.5", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:4.4", - "{22dad1ca-b26d-4dde-afb5-e7494bba6831}:1.0", - "hls@localh:1.0", - "hls@localh:1.0.1", - "hls@localh:1.0.2", - "{3f7a0d32-bb7d-4f4b-99c9-bb58e1a9129a}:0.3", - "amazon-search-filter@mo-projects.de:3.1", - "mosa.albedre1@gmail.com:2.1", - "{7930e9e1-4a45-4ea1-875c-112453bcf1af}:1.0", - "{7930e9e1-4a45-4ea1-875c-112453bcf1af}:1.1", - "video-downloader-pro-7oj22vhx@firefox.extension:2.7.0", - "video-downloader-pro-7oj22vhx@firefox.extension:2.7.1", - "amazon-search-filter@example.com:3.2", - "{9f2b2c14-240a-4918-a37b-4bf90e31469b}:241029.1", - "n-a.addon@example.com:1.4", - "web-extension-history@firefox.extension:1.1.0", - "web-extension-history@firefox.extension:1.2.0", - "web-extension-history@firefox.extension:1.3.0", - "web-extension-history@firefox.extension:1.4.0" - ] - }, - "schema": 1769862993166, - "key_format": "{guid}:{version}", - "stash_time": 1769884506957, - "id": "44931076-37f3-4fbc-b5ac-208396377aec", - "last_modified": 1769884597635 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "image-grabber@euan.dev:1.0.0", - "instadownloaderv1@euan-dev.local:1.0.2", - "instadownloaderv1@euan-dev.local:1.0.3", - "instadownloaderv1@euan-dev.local:1.0.5", - "deep-scroll@euan.dev:1.0.0", - "{9fb30f92-e12d-44f2-aeb7-2a905bd4ec09}:1.0", - "{9a0338d6-8002-4727-9422-6a22531e1bbf}:1.0", - "ticketnotifier@mustafashakir.dev:13.2.16", - "mc@209.128.213.133:3.0.2", - "ticketnotifier@mustafashakir.dev:1.0.2", - "ticketnotifier@mustafashakir.dev:10.0", - "ticketnotifier@mustafashakir.dev:12.0", - "ticketnotifier@mustafashakir.dev:13.0", - "ticketnotifier@mustafashakir.dev:13.1", - "ticketnotifier@mustafashakir.dev:13.2", - "ticketnotifier@mustafashakir.dev:13.2.13", - "ticketnotifier@mustafashakir.dev:13.2.14", - "ticketnotifier@mustafashakir.dev:17.0.0", - "ticketnotifier@mustafashakir.dev:17.1", - "ticketnotifier@mustafashakir.dev:17.2", - "onepassword4x@agilebits.com:4.7.5.90", - "onepassword4x@agilebits.com:4.7.5.91" - ] - }, - "schema": 1769841392328, - "key_format": "{guid}:{version}", - "stash_time": 1769862907057, - "id": "d89b80a4-a1d1-404c-bcf6-435bdae87c3f", - "last_modified": 1769862992967 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "simple-snip-pinboard@example.com:5.2", - "{9a11ee2d-5441-425e-b358-ed9046ce0145}:1.0", - "simple-snip-pinboard@example.com:5.7", - "simple-snip-pinboard@example.com:5.6", - "simple-snip-pinboard@example.com:5.5", - "simple-snip-pinboard@example.com:5.3", - "simple-snip-pinboard@example.com:6.0", - "simple-snip-pinboard@example.com:4.7", - "simple-snip-pinboard@example.com:7.0", - "simple-snip-pinboard@example.com:6.5", - "simple-snip-pinboard@example.com:6.3", - "simple-snip-pinboard@example.com:6.1", - "youtube-mute-skip-kuromimi@github.io:1.0.0", - "simple-snip-pinboard@example.com:7.1", - "simple-snip-pinboard@example.com:6.4", - "lilin.shao@qq.com:3.0", - "reddit-removed-posts@extension.local:1.0.0", - "pinned-tabs-manager@yourname.com:1.0", - "pinned-tabs-manager@yourname.com:1.0.1", - "keyword-tab-cleaner@local:1.1" - ] - }, - "schema": 1769819794834, - "key_format": "{guid}:{version}", - "stash_time": 1769841306347, - "id": "731d2337-1c62-4e8c-96f6-245da00c313c", - "last_modified": 1769841392102 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{48ea8e77-95af-4a41-8f4c-e451fc82116e}:1.0", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.1.3", - "test-au2tologin@luckyfurrex:1.0", - "{06d98d51-c130-4c86-9fb9-4eb8ac6f2761}:2.4.0", - "{06d98d51-c130-4c86-9fb9-4eb8ac6f2761}:2.4.1", - "{b1935acd-8857-485d-96ec-b593365bfa7b}:1.0", - "luna-adblock@sensortower.com:2.0.0", - "luna-adblock@sensortower.com:2.1.0", - "luna-adblock@sensortower.com:2.1.1", - "{6ab1a57b-2b1c-4c8f-a397-49ce2937d723}:4.64", - "TabActions@Window:1.0", - "TabActions@Window:1.1", - "TabActions@Window:1.2", - "ultra-utility-abnla0so@firefox.extension:2.4.3", - "ultra-utility-abnla0so@firefox.extension:2.4.4", - "ultra-utility-abnla0so@firefox.extension:2.4.5" - ] - }, - "schema": 1769798196676, - "key_format": "{guid}:{version}", - "stash_time": 1769819707346, - "id": "84d79d63-c2d5-47d8-b961-8f1b0e82ece2", - "last_modified": 1769819794423 - }, - { - "stash": { - "blocked": [ - "{72956991-9a16-4b5d-b251-8970567cfc72}:3.53.2" - ], - "unblocked": [], - "softblocked": [ - "futaba_log_viewer@my-local-extension:1.0.7", - "favory@sp4ce.pw:2.7.6", - "{6fcfbe86-e569-4247-be0a-2ad6cc70a59d}:11.6", - "{4a5782ca-23f4-47ee-a8a7-d34d9b1c5bba}:1.0", - "{4a5782ca-23f4-47ee-a8a7-d34d9b1c5bba}:2.0", - "news-republic-full-content@axeleroy.com:0.1.0", - "news-republic-full-content@axeleroy.com:0.1.1", - "news-republic-full-content@axeleroy.com:0.1.2", - "futaba_log_viewer@my-local-extension:1.0.6", - "futaba_log_viewer@my-local-extension:1.0.4", - "futaba_log_viewer@my-local-extension:1.0.3", - "futaba_log_viewer@my-local-extension:1.0.2", - "futaba_log_viewer@my-local-extension:1.0.1", - "futaba_log_viewer@my-local-extension:1.0.0", - "darkblank@yourname.local:2.0", - "pembina-menu@pembina.com:3.2.6", - "pembina-menu@pembina.com:2026.1.2", - "{0f605b76-4fc3-44ba-a7cb-543f561b972e}:1.0", - "futaba_log_viewer@my-local-extension:1.1.0", - "futaba_log_viewer@my-local-extension:1.0.9", - "{6255b202-0905-4a69-af48-491cf8f87f09}:1.0", - "cashbox@local:1.0.2", - "balbe@xoich:1.0", - "balbe@xoich:1.1", - "mrscrooge-local@example.com:1.0.0", - "rovalra@local:2.4.5.1" - ] - }, - "schema": 1769776592327, - "key_format": "{guid}:{version}", - "stash_time": 1769798106275, - "id": "e0790068-70ee-4821-aeee-3222cfc5f249", - "last_modified": 1769798196545 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "youtube-prefetch-local@pc:1.3", - "youtube-prefetch-local@pc:1.3.1", - "{b06bd4b5-3c6b-42ca-b66f-b368d30857ce}:2.9.0", - "@hootly-ai:0.1.0", - "@hootly-ai:0.2.0", - "@hootly-ai:0.3.0", - "@hootly-ai:0.3.1", - "@hootly-ai:0.3.2", - "totp-generator-luca@example.com:1.0.2", - "nexus-marketing@at2.me:1.0.0", - "nexus-marketing@at2.me:1.1.0", - "nexus-marketing@at2.me:1.2.0", - "nexus-marketing@at2.me:1.11.2", - "nexus-marketing@at2.me:1.11.3", - "nexus-marketing@at2.me:1.11.1", - "nexus-marketing@at2.me:1.11.0", - "nexus-marketing@at2.me:1.10.0", - "nexus-marketing@at2.me:1.8.0", - "nexus-marketing@at2.me:1.7.0", - "nexus-marketing@at2.me:1.11.5", - "nexus-marketing@at2.me:1.6.1", - "nexus-marketing@at2.me:1.4.0" - ] - }, - "schema": 1769754991626, - "key_format": "{guid}:{version}", - "stash_time": 1769776506349, - "id": "74f59786-b577-4755-94f8-ff5b80797dd6", - "last_modified": 1769776592189 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "futaba_log_refiner@my-local-extension:1.7.5", - "futaba_log_refiner@my-local-extension:1.7.6", - "futaba_log_refiner@my-local-extension:1.7.7", - "favory@sp4ce.pw:2.7.5", - "dutch-lens@yourname.com:3.0", - "{8b1c822a-085d-4db1-87e4-a067b42006a4}:1.2.5", - "{102357be-960d-477c-b84e-38715be2cbaa}:1.0", - "{a4037bdf-d553-4c38-9754-afc47b75588a}:1.6.1", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.1.2" - ] - }, - "schema": 1769733391985, - "key_format": "{guid}:{version}", - "stash_time": 1769754906570, - "id": "5ae833b0-0af6-4b69-9d6a-d6fd9faacf0a", - "last_modified": 1769754991377 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{903f7f71-117b-4a69-aa2e-9f7350e535b7}:5.7.5", - "{903f7f71-117b-4a69-aa2e-9f7350e535b7}:5.7.6", - "futaba_log_refiner@my-local-extension:1.7.2", - "futaba_log_refiner@my-local-extension:1.7.1", - "futaba_log_refiner@my-local-extension:1.7.0", - "@aspire-scripts:0.42.0", - "custom-home@personal.extension:1.7.0", - "walfox@jade.local:1.3.1", - "{325a9de5-c38a-45ce-9b57-afe269690b09}:1.2", - "{325a9de5-c38a-45ce-9b57-afe269690b09}:1.1", - "{325a9de5-c38a-45ce-9b57-afe269690b09}:1.0", - "futaba_log_refiner@my-local-extension:1.7.3" - ] - }, - "schema": 1769711792578, - "key_format": "{guid}:{version}", - "stash_time": 1769733306499, - "id": "57c4a9d3-36f4-4553-8a72-1f8bfaca89fc", - "last_modified": 1769733391843 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "container-opener@gemini.local:3.0.0", - "container-opener@gemini.local:1.0.0", - "container-opener@gemini.local:1.2.0", - "container-opener@gemini.local:1.3.0", - "container-opener@gemini.local:1.4.0", - "container-opener@gemini.local:1.5.0", - "futaba_log_refiner@my-local-extension:1.6.9", - "futaba_log_refiner@my-local-extension:1.6.8", - "futaba_log_refiner@my-local-extension:1.6.6", - "futaba_log_refiner@my-local-extension:1.6.5", - "rovalra@local:2.4.4.1", - "google-translate@nguyen-thai-nguyen:2.0.16", - "stream-check@panda-bro-use:1.2.2", - "jcpqdsad1AfrofavorityStripds@dsoteer.com:1.10", - "jcpqdsad1AfrofavorityStripds@dsoteer.com:1.8", - "{06f5465b-6db8-4a37-9c05-ed70dc04f0a4}:2.0", - "favory@sp4ce.pw:2.7.4", - "dmm-doujin-enhancer@example.com:1.4.3", - "dmm-doujin-enhancer@example.com:1.4.2", - "dmm-doujin-enhancer@example.com:1.4.1", - "{06f5465b-6db8-4a37-9c05-ed70dc04f0a4}:3.0", - "{06f5465b-6db8-4a37-9c05-ed70dc04f0a4}:1.0", - "rwhn.pvt@gmail.com:1.0", - "line@myself.com:1.0", - "{b4a5c6d7-e8f9-4a0b-1c2d-3e4f5a6b7c8d}:1.0", - "{47d74cbe-f177-43fa-b728-123c9f4a6b71}:2.8.6", - "{47d74cbe-f177-43fa-b728-123c9f4a6b71}:2.8.7", - "{5c2274dc-28f5-49f8-ad14-20230331bdfd}:1.8.6", - "{5c2274dc-28f5-49f8-ad14-20230331bdfd}:1.8.7", - "{0165b03b-e0a6-4be3-9898-e14e4937c4dc}:5.6.4" - ] - }, - "schema": 1769690195284, - "key_format": "{guid}:{version}", - "stash_time": 1769711706546, - "id": "45d01bb8-6335-4f5a-b854-281db320a856", - "last_modified": 1769711792359 - }, - { - "stash": { - "blocked": [ - "{08a9b4e3-2128-47aa-852f-a473b9aaf914}:1.7.6", - "{08a9b4e3-2128-47aa-852f-a473b9aaf914}:1.7.7", - "{08a9b4e3-2128-47aa-852f-a473b9aaf914}:1.7.8", - "{03ac4746-b69a-485d-bd67-de1cd06c564c}:1.1.0", - "{ada077d6-d256-4536-9075-d7e014a2bb7c}:1.1.0" - ], - "unblocked": [], - "softblocked": [ - "{bf1cf5c9-4773-4423-92c9-10ac63295e57}:1.0", - "Bazaar@nchoremiot.com:3.0.1", - "futaba_log_refiner@my-local-extension:1.6.0", - "futaba_log_refiner@my-local-extension:1.5.9", - "futaba_log_refiner@my-local-extension:1.5.8", - "futaba_log_refiner@my-local-extension:1.6.2", - "futaba_log_refiner@my-local-extension:1.6.3", - "IPFire_LegendFilter@example.com:0.0.16", - "fleyetrap@inimation.com:1.0", - "fleyetrap@inimation.com:1.1", - "futaba_log_refiner@my-local-extension:1.6.4", - "jira_auto@nfz-lublin.pl:0.0.2", - "tablefilters@example.com:1.2.4", - "aidenix-context-search@example.com:1.0", - "aidenix-context-search@example.com:2.0", - "dissatisfied@pronsh.dev:0.3.2", - "dissatisfied@pronsh.dev:0.3.1", - "dissatisfied@pronsh.dev:0.31", - "{269539ab-07f3-4964-ae47-7d4deb557320}:1.60", - "{269539ab-07f3-4964-ae47-7d4deb557320}:1.61" - ] - }, - "schema": 1769668579022, - "key_format": "{guid}:{version}", - "stash_time": 1769690106952, - "id": "ab34abcb-a448-4405-a442-9153c1faa8b4", - "last_modified": 1769690195153 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{caeb485e-8070-4520-8262-8ef288a3e35f}:5.1", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:5.0", - "nuhuh-blocker@example.com:1.0", - "study-timerTEST2@local:1.0.0", - "study-timer@local:1.0.0", - "study-timer@local:1.1.0", - "study-timer@local:1.3.0", - "study-timer@local:1.5.0", - "study-timer@local:2.0.0", - "study-timer@local:2.1.0", - "study-timer@local:2.6.0", - "study-timer@local:3.0.0", - "study-timer@local:5.0.0", - "study-timerTEST@local:1.0.0", - "{314d4f37-f4e3-4ab5-92f2-995d9ea435cc}:3.0.11", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:5.3", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:5.2", - "futaba_log_refiner@my-local-extension:1.5.3", - "{5384b886-08a8-11f0-9f4f-af7f4c6512f7}:1.1.29", - "{5384b886-08a8-11f0-9f4f-af7f4c6512f7}:1.1.292", - "futaba_log_refiner@my-local-extension:1.5.5", - "futaba_log_refiner@my-local-extension:1.5.4", - "futaba_log_refiner@my-local-extension:1.5.7", - "{a030c6b5-b7e8-48e8-bfc9-88fa34d2fb82}:0.0.1", - "{9c0dbafb-e204-4223-9dec-f657b857f596}:0.0.1", - "{ae23403d-1852-4ae1-be1c-a8ffb12a76d8}:1.0", - "{52a3f112-8c8d-4515-b4c7-8a489da39240}:1.0", - "{5384b886-08a8-11f0-9f4f-af7f4c6512f7}:1.1.30" - ] - }, - "schema": 1769646991834, - "key_format": "{guid}:{version}", - "stash_time": 1769668505190, - "id": "68ea8d35-95d9-4ca0-b950-bb567ebf1b0f", - "last_modified": 1769668578822 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{33aa6550-5171-482c-bb8d-676300689fad}:1.0", - "{8a2ab1ee-78de-4383-b616-4941eadbe791}:1.0", - "contact@bullshit-meter.xyz:1.0.2", - "contact@bullshit-meter.xyz:1.0.3", - "automation_toolkit@firefox:1.0.0", - "RemoveInitialTabFirstTab@Window:1.0", - "RemoveInitialTabFirstTab@Window:1.1", - "RemoveInitialTabFirstTab@Window:1.2", - "RemoveInitialTabFirstTab@Window:1.3", - "RemoveInitialTabFirstTab@Window:1.4", - "RemoveInitialTabFirstTab@Window:1.5", - "RemoveInitialTabFirstTab@Window:1.6", - "RemoveInitialTabFirstTab@Window:1.7", - "RemoveInitialTabFirstTab@Window:1.8", - "RemoveInitialTabFirstTab@Window:1.9", - "RemoveInitialTabFirstTab@Window:1.10", - "RemoveInitialTabFirstTab@Window:1.11", - "RemoveInitialTabFirstTab@Window:2.0", - "RemoveInitialTabFirstTab@Window:2.1", - "RemoveInitialTabFirstTab@Window:2.2", - "RemoveInitialTabFirstTab@Window:2.3", - "p0gy27dmo@mozmail.com:1.0.0", - "offlinenotes@philiplabs:1.1", - "offlinenotes@philiplabs:1.2", - "offlinenotes@philiplabs:1.3", - "gameurdev@gmail.com:1.0", - "favory@sp4ce.pw:2.7.3", - "fse-hours@aerofinancialfse.com:1.0", - "{c9be124c-ab87-4023-b56e-aabc041e52aa}:1.0" - ] - }, - "schema": 1769625381856, - "key_format": "{guid}:{version}", - "stash_time": 1769646906785, - "id": "bd98d496-7f31-4213-8bfd-9a9956c40184", - "last_modified": 1769646991418 - }, - { - "stash": { - "blocked": [ - "{75bfc869-8d59-4540-8056-cb29dd196987}:1.0", - "{75bfc869-8d59-4540-8056-cb29dd196987}:2.0.16", - "{cb832a40-3ea6-4fe9-8b04-79cf1b84de2b}:1.0", - "{cb832a40-3ea6-4fe9-8b04-79cf1b84de2b}:21.0.15", - "{df2a20b6-9000-4260-bd8c-de886bb90c5d}:1.0", - "{df2a20b6-9000-4260-bd8c-de886bb90c5d}:2.0.19", - "{fb4a419f-9990-4c9c-81cb-3bc33f927e40}:1.0", - "{fb4a419f-9990-4c9c-81cb-3bc33f927e40}:2.0.16", - "{9b38720e-2f3f-4436-b259-11a19506e8dc}:1.0", - "{9b38720e-2f3f-4436-b259-11a19506e8dc}:1.2.3", - "{9b38720e-2f3f-4436-b259-11a19506e8dc}:1.2.4", - "AscaleIppin8829@outlook.com:1.0.2", - "{62bc4016-fc31-442f-9057-ce514ac92bae}:3.0.9", - "{62bc4016-fc31-442f-9057-ce514ac92bae}:3.1.1", - "{62bc4016-fc31-442f-9057-ce514ac92bae}:3.1.2", - "{62bc4016-fc31-442f-9057-ce514ac92bae}:3.1.3", - "{62bc4016-fc31-442f-9057-ce514ac92bae}:3.1.4" - ], - "unblocked": [], - "softblocked": [ - "yahoo-realtime-filter@example.com:2.4.1", - "dom-diff-inspector@yourdomain.local:3.0.0", - "clipforge@paku.local:1.0.0", - "clipforge@paku.local:1.0.1", - "down-imgs@arket:1.0.5", - "down-imgs@arket:1.0.6", - "down-imgs@arket:1.0.7", - "a.roth@c10.de:1.0.6", - "favory@sp4ce.pw:2.7.2", - "favory@sp4ce.pw:2.7.1", - "mini-memo-base@example.com:0.0.0.1", - "{858d39b9-bbab-42fc-9e94-d96926989e41}:2.0.0.2", - "{858d39b9-bbab-42fc-9e94-d96926989e41}:2.0.4.0", - "rovalra@local:2.4.2", - "rovalra@local:2.4.2.4", - "rovalra@local:2.4.3.1" - ] - }, - "schema": 1769603802914, - "key_format": "{guid}:{version}", - "stash_time": 1769625305205, - "id": "92510eba-4bb3-49eb-97d3-1f62c510325e", - "last_modified": 1769625381724 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{c98ffd67-a6fc-40fd-a851-97c2a35cc3a0}:1.0", - "healthorbit-ai@healthorbit.ai:1.0.0", - "lilin.shao@qq.com:1.0", - "{c3230521-365e-4340-9831-5079493630f9}:1.8.1.1", - "agregllm@fredb34670:1.1.4", - "jira_auto@nfz-lublin.pl:0.0.1", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.23.1", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.23.2", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.26.3", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.26.4", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.26.7", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.26.10", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.26.11", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.26.12", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.26.16", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.26.17", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.31.2", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.31.3", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.31.5", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.31.8", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.31.10", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.31.11", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.31.12", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.31.13", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.31.15", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.31.16", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:1.31.17", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:2.0.0", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:2.0.1", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:2.0.2", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:2.0.3", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:2.0.4", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:2.0.5", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:2.0.6", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:2.0.7", - "{ab3fd504-7947-4c15-a7cf-10181cc021ef}:2.0.8", - "CodeHSDelte@hacker-school.de:0.1.4" - ] - }, - "schema": 1769582190676, - "key_format": "{guid}:{version}", - "stash_time": 1769603707055, - "id": "cdd92282-9db2-4204-a4d9-02a4f3e2f891", - "last_modified": 1769603802790 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "retail-sync@monarch.com:1.0.21", - "video-sharpener@harze2k.dev:1.2.6", - "video-sharpener@harze2k.dev:1.2.7", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:4.5", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:4.0", - "civitai-forge-connector@example.com:1.0.0", - "elevenlabs-worker-v3-simple@local:3.0.5", - "elevenlabs-worker-v3-simple@local:3.0.6", - "video-sharpener@harze2k.dev:1.2.8.2", - "video-sharpener@harze2k.dev:1.2.8.1" - ] - }, - "schema": 1769560592238, - "key_format": "{guid}:{version}", - "stash_time": 1769582106629, - "id": "1c39327c-01b7-4379-b4da-e3f82789d67f", - "last_modified": 1769582190364 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "valra@media.recorder:1.0.10", - "valra@media.recorder:1.0.9", - "{ff5a5f54-4019-4be6-a1e4-60a9b6741da6}:1.0", - "multi-scrape@example.local:1.22", - "{7f2dc14a-2571-4296-a5aa-2fccc2aff852}:1.1", - "cotoit-suite@extension.local:1.2.0", - "flaggy@jnylen.nu:1.0", - "{a155b033-ec33-40d1-a9e1-3474b2f77f79}:1.0", - "video-sharpener@harze2k.dev:1.1.1", - "video-sharpener@harze2k.dev:1.0.6", - "rmftime-autofill@example.com:1.0.0", - "video-sharpener@harze2k.dev:1.2.1", - "video-sharpener@harze2k.dev:1.2.2", - "video-sharpener@harze2k.dev:1.2.5", - "video-sharpener@harze2k.dev:1.2.4", - "video-sharpener@harze2k.dev:1.2.3", - "{3ae78990-6037-4e52-b4f2-cb99ff072049}:1.0" - ] - }, - "schema": 1769538981350, - "key_format": "{guid}:{version}", - "stash_time": 1769560506555, - "id": "31c535ee-7c18-45a6-ac7b-67d12e6dfaf3", - "last_modified": 1769560592034 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "@office365relogin:1.0.0", - "@office365relogin:1.1.0", - "{f3d1050f-a694-4ae2-bb17-6bf89c90afb9}:1.0", - "bga-gpor@netpigs.net:1.0", - "favory@sp4ce.pw:2.6.8", - "{bf656f3a-345b-42d7-be1d-1c1bb7947f4f}:1.0", - "{f61861e5-c5b0-46f9-bfea-0f5933fc3af8}:1.0", - "{3b14377a-198f-424b-9e54-d2653e8e4fb6}:1.0", - "eclipse-tab@encre.com:1.0.0", - "eclipse-tab@encre.com:1.0.1", - "eclipse-tab@encre.com:1.0.2", - "eclipse-tab@encre.com:1.0.3", - "eclipse-tab@encre.com:1.0.4", - "eclipse-tab@encre.com:1.0.5", - "info@medgyd.lt:1.0", - "info@medgyd.lt:1.1", - "info@medgyd.lt:1.2", - "{08c01a08-9619-44f8-8606-1080e9f521f2}:1.0", - "{08c01a08-9619-44f8-8606-1080e9f521f2}:1.1", - "{08c01a08-9619-44f8-8606-1080e9f521f2}:1.2", - "tarkov-map-arrow@my-custom-extension:1.9", - "pricegrabber@euzentra.com:1.0.4", - "proxy-by-sites@example.com:1.8", - "proxy-by-sites@example.com:1.7", - "copy-tab-urls@example.com:1.0", - "copy-tab-urls@example.com:1.1", - "copy-tab-urls@example.com:1.2", - "{d5aefdfe-c9be-41ca-a3ef-5a760871b5c3}:1.9", - "{d5aefdfe-c9be-41ca-a3ef-5a760871b5c3}:2.2", - "{d5aefdfe-c9be-41ca-a3ef-5a760871b5c3}:3.0.0", - "{d5aefdfe-c9be-41ca-a3ef-5a760871b5c3}:3.0.1", - "{d5aefdfe-c9be-41ca-a3ef-5a760871b5c3}:3.0.2", - "{d5aefdfe-c9be-41ca-a3ef-5a760871b5c3}:3.0.3" - ] - }, - "schema": 1769517390477, - "key_format": "{guid}:{version}", - "stash_time": 1769538905446, - "id": "ec54b8a4-17bb-4815-90b8-6a14421e0036", - "last_modified": 1769538981110 - }, - { - "stash": { - "blocked": [ - "sazalbep.a.ri.5.4.54@gmail.com:2.0", - "{a92b9d7e-5729-4a56-a48d-183fd6e8b950}:1.3", - "mdshamim.m.ia.j.o.b8@gmail.com:1.0.0", - "Palitra215@Palitra215.dev:0.1.1", - "Palitra214@Palitra214.dev:0.1.1", - "Palitra213@Palitra213.dev:0.1.1", - "Palitra212@Palitra212.dev:0.1.1", - "Palitra21@Palitra21.dev:0.1.1", - "Palitra21@Palitra21.dev:0.2.1", - "hashpac2k@hashpack2.dev:0.1.1" - ], - "unblocked": [], - "softblocked": [ - "yet_another_speed_dial_rebuild@dudw:3.11.4", - "{525e49c2-aacd-4e6f-a1bf-c0ba2b283a60}:1.0", - "meediateek-allalaadija@example.com:1.1", - "{059ec54f-bd0d-4160-8215-a18e90d969b7}:1.0", - "{9fe3e3a9-ca0d-4c2f-ac16-1776f13ceb50}:1.0", - "{4bf6b62c-e62d-4f8e-aa42-e6e355137ee1}:1.0", - "{d402fb4e-06c6-44a2-8193-5fcd8b5807c1}:1.0", - "{e6935f70-4183-4fbb-9bb4-4c445c066b5b}:1.0", - "{ac2bdd16-8fc4-4a05-bfbc-075aefc9fd22}:1.0", - "quotr@eas-intl.com:1.1.7", - "{81c4a327-4188-45f7-8a4a-f1790a92d3b1}:2.1", - "{81c4a327-4188-45f7-8a4a-f1790a92d3b1}:2.2", - "address-autofiller@softwebtuts.com:0.0.9", - "address-autofiller@softwebtuts.com:0.1.4", - "address-autofiller@softwebtuts.com:0.1.5", - "address-autofiller@softwebtuts.com:0.1.7" - ] - }, - "schema": 1769495790646, - "key_format": "{guid}:{version}", - "stash_time": 1769517306568, - "id": "0a51da97-4d3d-47e8-ad6f-ce7742b87aab", - "last_modified": 1769517390268 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "Eleg-Discipline@sganti.com:1.0", - "Eleg-Discipline@sganti.com:2.0", - "{3bc7cf23-ea16-4023-aae8-09ad45323285}:1.0", - "{f7e2cea3-5356-4a8f-bb91-ca372dc07b1d}:1.2", - "{f7e2cea3-5356-4a8f-bb91-ca372dc07b1d}:1.3", - "threadjumper@Luminaera.tech:1.82", - "{a5d26837-faf7-11f0-8792-98fa9b1e9040}:0.1.1" - ] - }, - "schema": 1769474190691, - "key_format": "{guid}:{version}", - "stash_time": 1769495706324, - "id": "22f3a62c-1c15-4eb7-a79e-6a101b9f072f", - "last_modified": 1769495790445 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{95f1e97f-f924-4205-8ebf-a4e1a7a04daf}:1.0.2", - "twitch-adblock-remover@example.com:1.0", - "x-disable-recommend@example.com:1.0.0", - "x-disable-recommend-tab@example.com:1.0.1", - "{febb3170-32bb-4601-a3bf-92733e29fa4f}:0.5.0", - "{febb3170-32bb-4601-a3bf-92733e29fa4f}:0.6.0", - "{febb3170-32bb-4601-a3bf-92733e29fa4f}:0.7.0", - "{febb3170-32bb-4601-a3bf-92733e29fa4f}:0.7.1", - "{febb3170-32bb-4601-a3bf-92733e29fa4f}:0.7.2", - "{febb3170-32bb-4601-a3bf-92733e29fa4f}:0.8.0", - "{febb3170-32bb-4601-a3bf-92733e29fa4f}:0.9.0", - "{febb3170-32bb-4601-a3bf-92733e29fa4f}:0.10.0", - "{febb3170-32bb-4601-a3bf-92733e29fa4f}:0.10.1", - "{febb3170-32bb-4601-a3bf-92733e29fa4f}:0.10.2", - "{2f7e526d-acb5-4a91-b074-a6c41dad43c9}:0.10.0", - "{2f7e526d-acb5-4a91-b074-a6c41dad43c9}:0.10.1", - "{2f7e526d-acb5-4a91-b074-a6c41dad43c9}:0.11.0", - "{2f7e526d-acb5-4a91-b074-a6c41dad43c9}:0.11.1", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.5.0", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.6.0", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.6.1", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.6.2", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.7.0", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.7.1", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.7.2", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.8.0", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.8.1", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.8.2", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.9.1", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.9.2", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.9.3", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.9.4", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.12.0", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.13.0", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.14.0", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.15.0", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.16.0", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.16.1", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.17.0", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.17.1", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.17.2", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.17.3", - "{1a08c7c2-4277-4f54-83e6-cc89cc796d7b}:0.17.4" - ] - }, - "schema": 1769452594932, - "key_format": "{guid}:{version}", - "stash_time": 1769474106452, - "id": "452f8f13-3533-47a9-b7c2-910ebc50f2d2", - "last_modified": 1769474190488 - }, - { - "stash": { - "blocked": [ - "@750cc9e4-526e-4a0a-a943-f91f3baff918:1.7.5", - "@750cc9e4-526e-4a0a-a943-f91f3baff918:1.7.6", - "@aa339a7c-c7e0-4a05-b3ae-7c5b6bd3726d:2.8.7", - "@06363f8a-1b28-4aa1-a22e-4f3722ca2d99:5.3.0", - "@718418f6-2fbb-448a-b22e-3c6f01af5e96:3.0.0" - ], - "unblocked": [], - "softblocked": [ - "messenger-privacy@example.com:1.0.1", - "kontenmanager@gmx.de:2025.1.2.6", - "fast-replies@mullvad.local:1.0.0", - "mosa.albedre1@gmail.com:2.0", - "mosa.allbedre0@gmail.com:1.2", - "mosa.allbedre0@gmail.com:1.3", - "mosa.allbedre0@gmail.com:1.9", - "mosa.allbedre0@gmail.com:1.8", - "mosa.allbedre0@gmail.com:1.7", - "mosa.allbedre0@gmail.com:1.5", - "mosa.allbedre0@gmail.com:2.0", - "watani-autofill@tabadul:1.2", - "watani-autofill@tabadul:1.1", - "ticket-helper@mosa.local:1.0", - "ticket-helper@mosa.local:1.1", - "ticket-helper@mosa.local:1.2", - "mosa.albedre9@gmail.com:2.3", - "tsundoku@local:0.1.0", - "tsundoku@local:0.1.1", - "tsundoku@local:0.1.2", - "tsundoku@local:0.1.3", - "tsundoku@local:0.1.4", - "tsundoku@local:0.1.5", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.1.1", - "cors-bypass-addon@nomail.com:1.0", - "cashbox@local:1.0.1", - "cashbox@local:1.0", - "cors-bypass-addon@nomail.com:1.2", - "gmail-priority-focus@steven.local:1.0.1" - ] - }, - "schema": 1769430990205, - "key_format": "{guid}:{version}", - "stash_time": 1769452506231, - "id": "42a2494e-de80-4469-b6d4-c9824e72d23c", - "last_modified": 1769452594627 - }, - { - "stash": { - "blocked": [ - "{bb27358c-66c2-436f-ad90-edf5eaea1cef}:1.0", - "{bb27358c-66c2-436f-ad90-edf5eaea1cef}:372.6", - "{3fcb96bb-b010-4bcc-95a1-a99c92ad1a99}:1.0", - "{f857e801-4271-4bc0-a75e-749551f78cfc}:1.0", - "{cd4a0b36-1340-44a1-b52d-c80dcf29644b}:1.0", - "{f129a09e-50c2-4e0e-8ef9-c57729754eec}:1.0", - "{f129a09e-50c2-4e0e-8ef9-c57729754eec}:10921.4", - "{0ec8a631-2a6f-4b7f-9a04-d4a67b557359}:1.4.0", - "{0ec8a631-2a6f-4b7f-9a04-d4a67b557359}:1.4.1", - "{0ec8a631-2a6f-4b7f-9a04-d4a67b557359}:1.4.2", - "{88424a90-ce33-4d6d-a0f9-564de03d69d0}:1.0", - "{88424a90-ce33-4d6d-a0f9-564de03d69d0}:209.4", - "{088821a7-5835-4caa-8e65-4a8ac3f526c2}:1.0", - "{088821a7-5835-4caa-8e65-4a8ac3f526c2}:1.4", - "{bdd99b28-cec9-4835-b1f6-7f257841b2ac}:1.0", - "{bdd99b28-cec9-4835-b1f6-7f257841b2ac}:114.4", - "{e375b894-17f2-46d5-bae5-96fcfe1ac956}:1.0", - "{e375b894-17f2-46d5-bae5-96fcfe1ac956}:1.1.2", - "{1627bc55-6107-4da7-b621-8a2927585a9d}:1.0", - "{1627bc55-6107-4da7-b621-8a2927585a9d}:300929.15.2" - ], - "unblocked": [ - "{46cc18f3-9054-4edd-9441-102a1021b5d0}:1.0.5" - ], - "softblocked": [ - "{5dd08328-6a7a-4be4-82df-4b470c5d5314}:2.8.2", - "{5dd08328-6a7a-4be4-82df-4b470c5d5314}:2.8.3", - "{40420f6a-3aa4-4a54-8c97-41e46158a71e}:0.1.0", - "iam-cookies@education.lu:1.0", - "janssen-tarp@jans.io:1.16.0", - "{418c0307-f6d3-448d-8c2c-51a56e8d608d}:1.0", - "@4_in_1:1.0.0.0", - "{4e610dd0-f7d5-49fb-8e0c-ac254a263d03}:1.0", - "{4e610dd0-f7d5-49fb-8e0c-ac254a263d03}:2.0", - "mystartpage@local.dev:2.3", - "mystartpage@local.dev:2.4" - ] - }, - "schema": 1769409388122, - "key_format": "{guid}:{version}", - "stash_time": 1769430906599, - "id": "cdc3a97b-d7a2-41a4-8449-f1545186e90e", - "last_modified": 1769430990006 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "wewe3r63@gmail.com:1.0.1", - "futaba_log_refiner@my-local-extension:1.2.1", - "futaba_log_refiner@my-local-extension:1.2.3", - "futaba_log_refiner@my-local-extension:1.2.4", - "web-memo@example.com:2.5", - "web-memo@example.com:2.5.1", - "{f5e07a44-b0c0-42df-8c6a-550cb17b37ad}:2.0", - "{f5e07a44-b0c0-42df-8c6a-550cb17b37ad}:2020.3.19b", - "{f5e07a44-b0c0-42df-8c6a-550cb17b37ad}:2020.3.23", - "web-memo@example.com:2.5.2", - "{ee522a47-95a1-4534-88e4-8783f692d835}:1.4", - "{27678f20-0d24-48fc-b0d0-161e0c116be7}:3.2", - "{27678f20-0d24-48fc-b0d0-161e0c116be7}:3.3", - "web-memo@example.com:2.5.3", - "next-of-end@local:1.0", - "next-of-end@local:1.1", - "futaba_log_refiner@my-local-extension:1.4.0", - "futaba_log_refiner@my-local-extension:1.2.2", - "futaba_log_refiner@my-local-extension:1.3.0", - "futaba_log_refiner@my-local-extension:1.5.0", - "futaba_log_refiner@my-local-extension:1.4.1", - "custom-field-tool@example.com:1.1", - "xdr-nonews-block@titansofindustry.com:1.0.1" - ] - }, - "schema": 1769387783143, - "key_format": "{guid}:{version}", - "stash_time": 1769409306079, - "id": "16c90a2c-132c-4627-a967-d58c71cbec9b", - "last_modified": 1769409387892 - }, - { - "stash": { - "blocked": [ - "{0b48acff-5b83-4119-85ad-2304bb821843}:1.0", - "{0b48acff-5b83-4119-85ad-2304bb821843}:3.7.1", - "{c754bba5-6224-46b9-a79b-14880b79a1b7}:1.0", - "{c754bba5-6224-46b9-a79b-14880b79a1b7}:3.7.1", - "{96e6bdb0-ce8a-45b2-9899-a4ae2d33ec8a}:1.0", - "{96e6bdb0-ce8a-45b2-9899-a4ae2d33ec8a}:3.7.1" - ], - "unblocked": [], - "softblocked": [ - "chim-chat@extension:2.18", - "chim-chat@extension:2.17", - "{ee522a47-95a1-4534-88e4-8783f692d835}:1.3", - "{9221c5ed-7a88-4cae-995e-725d98b32872}:1.3", - "{9221c5ed-7a88-4cae-995e-725d98b32872}:1.4", - "ytm-noslop@zopi.eu:1.4.0", - "{0962e2c5-da83-4b6a-9851-a3e020f3bb97}:1.7.1", - "{0962e2c5-da83-4b6a-9851-a3e020f3bb97}:1.7.2", - "{0962e2c5-da83-4b6a-9851-a3e020f3bb97}:1.7.3", - "{4314d6c1-3332-4bed-a82a-ab46f8cb4cfe}:1.0", - "{648bdc74-94c6-4196-8789-d5947268867c}:3.4", - "{648bdc74-94c6-4196-8789-d5947268867c}:3.3", - "{6eba4401-a168-44ca-a734-8a501b357822}:1.0", - "textsbert@textsbert.com:0.1.34.3", - "favory@sp4ce.pw:2.6.7" - ] - }, - "schema": 1769366189669, - "key_format": "{guid}:{version}", - "stash_time": 1769387705690, - "id": "911c4349-9a11-4f79-bc61-e5d80fa31134", - "last_modified": 1769387782930 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{5194A9E5-5EC0-410E-BA4F-62A13EDBA7CD}:1.0.1", - "{4b16f5ce-c487-4994-96db-74c05f75674c}:1.0.0", - "{13e8a587-64b3-48b6-9864-87ef688c9e51}:1.0.1", - "RemoveInitialTab@FirstTab:1.0", - "{13e8a587-64b3-48b6-9864-87ef688c9e51}:1.0.0", - "{13e8a587-64b3-48b6-9864-87ef688c9e51}:1.0.2", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.1.0", - "concealbrowse@conceal.io:1.1.0.0", - "concealbrowse@conceal.io:1.1.1.0", - "concealbrowse@conceal.io:1.1.3.0", - "concealbrowse@conceal.io:1.1.4.0", - "concealbrowse@conceal.io:1.2.0.0", - "concealbrowse@conceal.io:1.2.1.0", - "concealbrowse@conceal.io:1.2.2.0", - "reset-psw@comune.sanvincenzo.li.it:1.0", - "reset-psw@comune.sanvincenzo.li.it:1.0.1", - "reset-psw@comune.sanvincenzo.li.it:1.1.0", - "reset-psw@comune.sanvincenzo.li.it:1.1.1" - ] - }, - "schema": 1769344589568, - "key_format": "{guid}:{version}", - "stash_time": 1769366106098, - "id": "f961fda1-9949-42e7-a2d2-c912e95f837f", - "last_modified": 1769366189472 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "@jules-code-scraper:1.5.0", - "{aff461a6-bfb9-41d3-b7dd-5851530717dc}:0.1", - "futaba_log_refiner@my-local-extension:1.1.9", - "futaba_log_refiner@my-local-extension:1.2.0" - ] - }, - "schema": 1769322981415, - "key_format": "{guid}:{version}", - "stash_time": 1769344506344, - "id": "84c91561-7007-4a13-be5b-54f0bd9193ce", - "last_modified": 1769344589363 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "yt-exact-age@example.com:1.0", - "yt-exact-age@example.com:1.1", - "yt-exact-age@example.com:1.2", - "mozeidon-dev@ac.local:3.1", - "mozeidon-dev@ac.local:3.2", - "{a98b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d}:2.3", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.0.8", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.0.9", - "{a0b96cb6-2142-4aec-987c-0f3888805fdc}:1.0", - "{a0b96cb6-2142-4aec-987c-0f3888805fdc}:1.1", - "battles-replay@teambattles.gg:1.9.5", - "battles-replay@teambattles.gg:1.9.4", - "battles-replay@teambattles.gg:1.9.3", - "battles-replay@teambattles.gg:1.9.2", - "battles-replay@teambattles.gg:1.9.1", - "battles-replay@teambattles.gg:1.9.0", - "battles-replay@teambattles.gg:2.0.0" - ] - }, - "schema": 1769301390582, - "key_format": "{guid}:{version}", - "stash_time": 1769322905835, - "id": "526ad46f-9eca-45a9-8631-80d136bbd6ef", - "last_modified": 1769322981211 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "Foxden@VisorCraft:1.0.4", - "Foxden@VisorCraft:1.0.5", - "youtube-min-duration-filter@example.local:1.0.0", - "Foxden@VisorCraft:1.0.7", - "{6fcfbe86-e569-4247-be0a-2ad6cc70a59d}:11.4", - "opl@onlinepicketline.org:2.0.0", - "Foxden@VisorCraft:1.0.8", - "{563e011a-2c77-4676-a390-b4fac0ce8e62}:1.5", - "Foxden@VisorCraft:1.0.9", - "volumen@mi.propio.id:2.0.9", - "@tomo-helper:1.0", - "subtitles-downloader@subtiltee.com:1.0.0", - "subtitles-downloader@subtiltee.com:1.0.1", - "subtitles-downloader@subtiltee.com:1.1.0", - "subtitles-downloader@subtiltee.com:1.2.0", - "subtitles-downloader@subtiltee.com:1.4.0", - "subtitles-downloader@subtiltee.com:1.4.1", - "puresnorlax@gmail.com:1.0.0", - "puresnorlax@gmail.com:1.0.1", - "Foxden@VisorCraft:1.0.10", - "send-to-x4@xatpy.dev:1.0.0", - "Foxden@VisorCraft:1.0.11", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.0.7", - "Foxden@VisorCraft:1.0.12", - "{b201f767-e14a-4219-9c43-3423f66d81a5}:1.0" - ] - }, - "schema": 1769279778864, - "key_format": "{guid}:{version}", - "stash_time": 1769301306581, - "id": "2ead4b39-9723-41bb-9451-974d05217e5a", - "last_modified": 1769301390155 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "futaba_log_refiner@my-local-extension:1.1.3", - "{42e7f701-cedb-44c4-8740-fdfff2b821e0}:3.0.6", - "{42e7f701-cedb-44c4-8740-fdfff2b821e0}:3.0.5", - "{d958574a-dafd-401b-830d-057683c50354}:1.0.0", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.0", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.1", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.1.1", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.1.2", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.1.3", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.2", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.2.1", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.2.2", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.2.3", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.3.1", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.3.2", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.3.3", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.3.4", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.3.5", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.3.6", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.4.0", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.4.1", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.5.1", - "{97e2ed84-dc3b-462a-b292-a14fe59ffeef}:1.5.2", - "{7c1dc351-6f6b-4cbc-bbfe-a8a2b7c3cc0d}:1.0", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.0.0", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.0.1", - "{4356487b-75be-46bd-b8f6-44c7fae168c0}:1.0", - "futaba_log_refiner@my-local-extension:1.1.0", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.0.2", - "futaba_log_refiner@my-local-extension:1.1.4", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.0.3", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.0.4", - "futaba_log_refiner@my-local-extension:1.1.5", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.0.5", - "futaba_log_refiner@my-local-extension:1.1.6", - "{8b1c822a-085d-4db1-87e4-a067b42006a4}:1.2.2", - "{8b1c822a-085d-4db1-87e4-a067b42006a4}:1.0", - "{8b1c822a-085d-4db1-87e4-a067b42006a4}:1.2", - "{8b1c822a-085d-4db1-87e4-a067b42006a4}:1.2.1", - "futaba_log_refiner@my-local-extension:1.1.7", - "{e4760449-4d85-4039-9f97-1d67905c436e}:1.1.2", - "@tabcollectorfirefoxextension:1.1.1", - "futaba_log_refiner@my-local-extension:1.1.8", - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.0.6", - "gscoke@gmail.com:3.3.1", - "wallyxtyyensyion@ele.com:1", - "wallyxtyensyion@ele.com:1", - "michikora@agsystem.org:3.3.2", - "michikora@agsystem.org:3.3.1", - "michikora@agsystem.org:3.3.3", - "Foxden@VisorCraft:1.0.2", - "Foxden@VisorCraft:1.0.3" - ] - }, - "schema": 1769258194357, - "key_format": "{guid}:{version}", - "stash_time": 1769279705537, - "id": "7816300a-c5f5-4bd6-9c16-8b8fa82c2f95", - "last_modified": 1769279778635 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "my-switch@debian:1.1", - "yulaf-youtube-filter@vakkaskarakurt.com:1.0.7", - "yulaf-youtube-filter@vakkaskarakurt.com:2.1.3", - "my-switch@debian:1.2", - "{6b8f3647-59c7-4f5e-a768-6608555f8963}:1.0", - "my-switch@debian:1.3", - "futaba_log_refiner@my-local-extension:1.0.3", - "futaba_log_refiner@my-local-extension:1.0.4", - "futaba_log_refiner@my-local-extension:1.0.5", - "my-switch@debian:1.4", - "{6cb6cf8a-d704-4027-a87c-d33f214b1d9c}:2.0", - "{6cb6cf8a-d704-4027-a87c-d33f214b1d9c}:3.0", - "{6cb6cf8a-d704-4027-a87c-d33f214b1d9c}:4", - "{020f75df-ad0d-4318-8eab-2f25206a254d}:4", - "{b7fd5752-b38c-4e12-b83b-03880ea5d9d0}:1.0", - "{b7fd5752-b38c-4e12-b83b-03880ea5d9d0}:1.1", - "{f964e05a-34f2-41c0-9f35-c48ba0798d21}:1.0", - "{f964e05a-34f2-41c0-9f35-c48ba0798d21}:2.0", - "futaba_log_refiner@my-local-extension:1.0.6", - "futaba_log_refiner@my-local-extension:1.0.7", - "futaba_log_refiner@my-local-extension:1.0.8", - "futaba_log_refiner@my-local-extension:1.0.10", - "futaba_log_refiner@my-local-extension:1.0.11", - "futaba_log_refiner@my-local-extension:1.1.1", - "seivit@example.com:0.1.8", - "keyword-monitor@example.com:1.1", - "keyword-monitor@example.com:1.3", - "{a0e72d0d-ff22-4267-aabf-f710fb8c834c}:1.1", - "futaba_log_refiner@my-local-extension:1.1.2" - ] - }, - "schema": 1769236579225, - "key_format": "{guid}:{version}", - "stash_time": 1769258106846, - "id": "a60ab0fc-3dca-4b28-931b-d4929eb7d209", - "last_modified": 1769258194156 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "picpay-autologin@luckyfurrex:1.0", - "generated-ljvnf6187m9jg8soij74iz@chrome-store-foxified-506399689:7.8", - "generated-ljvnf6187m9jg8soij74iz@chrome-store-foxified-506399689:9.2", - "@Search-mref-field:1.0", - "{df78d414-b9a8-40d7-bc06-05f7a3ca6d09}:2.3", - "{df78d414-b9a8-40d7-bc06-05f7a3ca6d09}:2.2", - "my-switch@debian:1.0" - ] - }, - "schema": 1769214990873, - "key_format": "{guid}:{version}", - "stash_time": 1769236505303, - "id": "5a200a29-059f-4f9a-bb6f-d13dcf728cb6", - "last_modified": 1769236578987 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "ss@example.com:1.0.3", - "multi-scrape@example.local:1.21", - "@betterkick.persistent_avenger:1.0.0", - "@betterkick.persistent_avenger:1.0.2", - "{80c56608-4763-4e54-aff7-02d95c06d0fb}:0.3.0", - "{093fdd56-cac1-4d24-8fa3-7a3fbf4f71a3}:1.0", - "{093fdd56-cac1-4d24-8fa3-7a3fbf4f71a3}:1.1", - "888system888@example.com:1.1", - "888system888@example.com:1.3", - "github-contrib-graph@aaronfeledy.com:1.2.0", - "simple-snip-pinboard@example.com:4.8", - "simple-snip-pinboard@example.com:4.9", - "youtube-grabber@example.com:1.0.0", - "{f129a09e-50c2-4e0e-8ef9-c57729754eec}:300929.15.2" - ] - }, - "schema": 1769193390638, - "key_format": "{guid}:{version}", - "stash_time": 1769214906207, - "id": "55aa3144-1977-462d-857b-1b85d98a43fb", - "last_modified": 1769214990753 - }, - { - "stash": { - "blocked": [ - "{1c64caee-eabb-4bf1-bd8b-ce6e671d71e2}:4.3.11", - "{1c64caee-eabb-4bf1-bd8b-ce6e671d71e2}:4.4.11", - "{1c64caee-eabb-4bf1-bd8b-ce6e671d71e2}:4.5.11", - "{1c64caee-eabb-4bf1-bd8b-ce6e671d71e2}:4.8.13", - "{1c64caee-eabb-4bf1-bd8b-ce6e671d71e2}:4.9.13", - "{d1b40569-b0e1-4618-b6c9-adbb8b2c8393}:1.0.8", - "{d1b40569-b0e1-4618-b6c9-adbb8b2c8393}:1.8.13", - "{d1b40569-b0e1-4618-b6c9-adbb8b2c8393}:1.9.13", - "{d1b40569-b0e1-4618-b6c9-adbb8b2c8393}:1.11.15", - "{fc7a8c88-ff62-4db0-a7f8-7d6fccfdc5fd}:1.1.29", - "{fc7a8c88-ff62-4db0-a7f8-7d6fccfdc5fd}:1.2.29", - "qrcode.oren.chan@gmail.com:4.3.3", - "qrcode.oren.chan@gmail.com:4.3.5", - "{2915dd2b-ee17-44fe-a65d-a64e7b7eab8b}:1.31", - "{183cd3be-56b0-4a98-ad3a-8a168d3fe10b}:7.4.1", - "{c14b737d-dc85-4361-81da-f089551516fe}:7.4.0", - "{142ae0ee-4e38-4567-9fdc-d060e8e28948}:3.3.29", - "{8178af84-deed-498b-91fc-70054902f61c}:6.4.18.31", - "{9065c646-2cf0-4a65-9a11-0239c41df6e4}:6.4.18.31", - "{2de14ad0-1274-4fe3-9624-991c98a8a308}:7.3.5", - "{0bf67acb-f7c7-4b87-b8d2-0ff7081efb96}:6.4.19.32", - "{cce53464-fe3d-42a8-952d-cc538a5dec3f}:3.3.29", - "{03a400a3-252b-4bbd-a0a2-b5119f55e79c}:5.27.18.31", - "{2ed201a3-ce1e-49e5-9506-7502938162f8}:4.4.0", - "{eaa50fb0-b696-41bc-b098-5527ca906cf0}:2.10.0", - "{eaa50fb0-b696-41bc-b098-5527ca906cf0}:2.10.1", - "{eaa50fb0-b696-41bc-b098-5527ca906cf0}:2.10.2", - "{eaa50fb0-b696-41bc-b098-5527ca906cf0}:2.10.3", - "{79b8fbbf-bb7c-478e-b98c-4eb1577e5990}:2.1.8", - "Palitra211212@Palitra21121.dev:0.1.1", - "Palitra21122@Palitra2112.dev:0.1.1", - "Palitra2113@Palitra2113.dev:0.1.1", - "Palitra2112@Palitra2112.dev:0.1.1", - "Palitra2111@Palitra2111.dev:0.1.1", - "{6756c4b6-3200-473c-85b7-79a7950aa948}:3.7.4", - "{6756c4b6-3200-473c-85b7-79a7950aa948}:3.7.5", - "{1b647fa4-994c-47e8-8297-ec6e162d42e6}:1.2", - "{1b647fa4-994c-47e8-8297-ec6e162d42e6}:1.8", - "{1b647fa4-994c-47e8-8297-ec6e162d42e6}:2.0" - ], - "unblocked": [], - "softblocked": [ - "extension@scrapflow.com:1.0", - "{cdea0f81-9881-467e-b8d0-1446c3379306}:1.0.1", - "{cdea0f81-9881-467e-b8d0-1446c3379306}:1.0.2", - "{cdea0f81-9881-467e-b8d0-1446c3379306}:1.0.3", - "odysseus-01-21-2026@themast.com:1.2.0", - "multi-scrape@example.local:1.19", - "{c6696ffb-6755-40a5-8db3-0f5ed5bb70af}:4.2.7", - "{c6696ffb-6755-40a5-8db3-0f5ed5bb70af}:4.2.8", - "{992b29d4-693a-40da-9afa-98ddd0551336}:1.0" - ] - }, - "schema": 1769171796060, - "key_format": "{guid}:{version}", - "stash_time": 1769193306024, - "id": "9e01f2c7-23cb-4176-9ad6-2df60dfe1395", - "last_modified": 1769193390449 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "saml-cookies@yourdomain.local:1.0", - "eci-tracker@yourname.com:2.0", - "{bf468e8f-88b8-4746-94a0-2df6e71046f1}:1.0", - "extension@linkwy.com:1.0.0", - "{b5b1f950-d285-4405-ad7c-0fe10413533c}:1.0", - "{821f2f2c-0d87-41a6-b183-6d6224ee1e65}:1.0", - "{79eb3548-cb69-428f-9539-56e84836b036}:1.0", - "{79eb3548-cb69-428f-9539-56e84836b036}:1.2", - "{f85d2c36-caec-4551-85e5-038f63c9ab66}:2.0.21", - "mine-memo-base@example.com:0.1", - "mine-memo-base@example.com:0.1.1", - "mine-memo-base@example.com:0.1.1.1", - "open2ch@db3.so-net.ne.jp:0.2.3", - "open2ch@db3.so-net.ne.jp:0.2.4" - ] - }, - "schema": 1769150180099, - "key_format": "{guid}:{version}", - "stash_time": 1769171707552, - "id": "c70f1824-6484-4e9c-82bc-b255f0585d19", - "last_modified": 1769171795942 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "arc-mdn@mojokerto.id:2.5", - "arc-mdn@mojokerto.id:2.7", - "{8f999adb-bd01-4075-bb81-5d2540c2c4ac}:1.3", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:4.3", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:4.2", - "yet_another_speed_dial_rebuild@dudw:3.11.5", - "{44dd2281-c686-46e5-9aba-16534d7c14de}:1.0", - "{e7891ffd-8be5-4279-9931-0251b624bc98}:1.0", - "yahoo-realtime-filter@example.com:2.4" - ] - }, - "schema": 1769128592382, - "key_format": "{guid}:{version}", - "stash_time": 1769150105135, - "id": "c787d7b4-8883-4b18-8872-ff6ed916bca8", - "last_modified": 1769150179973 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "slowed-reverb-studio@audiothing.v3:2.0", - "{3d30d8a8-bb19-411e-9c43-3ae15067580c}:1.0", - "osiris-demo@hackathon.local:1.0", - "ztn-proxy@ztn.app:1.0", - "colorify@matus.local:1.0", - "colorify@matus.local:1.1", - "colorify@matus.local:1.2", - "{ba7188d1-65f7-4491-ba88-5ee1b334b610}:1.0", - "{e5945de4-2bc7-4900-848f-8447f9951dc4}:0.2.2", - "colorify@hello.local:1.2", - "colorify@hello.local:1.3", - "colorify@hello.local:1.4", - "simple-snip-pinboard@example.com:4.6", - "simple-snip-pinboard@example.com:4.5", - "simple-snip-pinboard@example.com:4.4", - "simple-snip-pinboard@example.com:4.3", - "simple-snip-pinboard@example.com:4.1", - "simple-snip-pinboard@example.com:4.0", - "simple-snip-pinboard@example.com:3.0", - "simple-snip-pinboard@example.com:1.18" - ] - }, - "schema": 1769106992173, - "key_format": "{guid}:{version}", - "stash_time": 1769128506378, - "id": "e75a5b7a-a7b5-451a-b5e7-7accade62523", - "last_modified": 1769128592022 - }, - { - "stash": { - "blocked": [ - "{c448872b-58f9-413e-8e3d-650fe708448e}:2.0.0", - "{c448872b-58f9-413e-8e3d-650fe708448e}:2.0.1", - "{c448872b-58f9-413e-8e3d-650fe708448e}:2.0.2", - "{c448872b-58f9-413e-8e3d-650fe708448e}:2.0.6", - "{57928fac-c9fa-44f5-be78-d185d67346c2}:4.1.5", - "{57928fac-c9fa-44f5-be78-d185d67346c2}:4.1.6", - "{57928fac-c9fa-44f5-be78-d185d67346c2}:4.1.7", - "{57928fac-c9fa-44f5-be78-d185d67346c2}:4.1.8", - "{57928fac-c9fa-44f5-be78-d185d67346c2}:4.1.9", - "{57928fac-c9fa-44f5-be78-d185d67346c2}:4.2.1", - "gemxrp-profiles@gemwallet.app:0.1.1", - "gemxrp-profiles@gemwallet.app:0.1.2", - "text-highlighter-670866@autoex.local:1.0.0", - "link-collector-687032@autoex.local:1.0.0", - "copy-all-text-428791@autoex.local:1.0.0", - "color-picker-130998@autoex.local:1.0.0", - "copy-clean-title-203840@autoex.local:1.0.0", - "url-shortener-842677@autoex.local:1.0.0", - "qr-code-generator-541750@autoex.local:1.0.0", - "color-picker-329889@autoex.local:1.0.0", - "cookie-viewer-268804@autoex.local:1.0.0", - "page-load-timer-681664@autoex.local:1.0.0", - "meta-tags-viewer-621691@autoex.local:1.0.0", - "dark-mode-toggle-493995@autoex.local:1.0.0", - "cookie-viewer-513632@autoex.local:1.0.0", - "color-picker-120336@autoex.local:1.0.0", - "toggle-sans-serif-312010@autoex.local:1.0.0", - "url-shortener-345953@autoex.local:1.0.0", - "link-collector-537783@autoex.local:1.0.0", - "copy-clean-title-454496@autoex.local:1.0.0", - "color-picker-061720@autoex.local:1.0.0", - "quick-note-saver-574754@autoex.local:1.0.0", - "quick-clip-organizer-881276@autoex.local:1.0.0", - "quick-color-picker-205805@autoex.local:1.0.0", - "quick-clip-reminder-353634@autoex.local:1.0.0", - "focus-timer-816060@autoex.local:1.0.0", - "quick-mood-tracker-657986@autoex.local:1.0.0", - "quick-notes-helper-657611@autoex.local:1.0.0", - "quick-notes-capture-853548@autoex.local:1.0.0", - "quick-access-notes-801522@autoex.local:1.0.0", - "focus-timer-803581@autoex.local:1.0.0", - "quick-color-picker-865641@autoex.local:1.0.0", - "quick-mood-tracker-589024@autoex.local:1.0.0", - "quick-note-capture-386260@autoex.local:1.0.0", - "quick-color-picker-382647@autoex.local:1.0.0", - "focus-timer-754919@autoex.local:1.0.0", - "quick-color-picker-235622@autoex.local:1.0.0", - "quick-notes-capture-524527@autoex.local:1.0.0", - "quick-note-capture-588818@autoex.local:1.0.0", - "quick-color-picker-636341@autoex.local:1.0.0", - "focus-timer-713466@autoex.local:1.0.0", - "image-extractor-787195@autoex.local:1.0.0", - "font-size-adjuster-911487@autoex.local:1.0.0", - "meta-tags-viewer-970722@autoex.local:1.0.0", - "cookie-viewer-975017@autoex.local:1.0.0", - "reading-time-estimator-027059@autoex.local:1.0.0", - "url-shortener-025853@autoex.local:1.0.0", - "toggle-sans-serif-039731@autoex.local:1.0.0", - "scroll-to-top-398943@autoex.local:1.0.0", - "table-to-csv-395819@autoex.local:1.0.0", - "copy-all-text-141342@autoex.local:1.0.0", - "qr-code-generator-544215@autoex.local:1.0.0", - "color-picker-545395@autoex.local:1.0.0", - "dark-mode-toggle-542497@autoex.local:1.0.0", - "text-highlighter-542271@autoex.local:1.0.0", - "quick-note-taker-493894@autoex.local:1.0.0", - "quick-note-saver-493615@autoex.local:1.0.0", - "quick-note-taker-481919@autoex.local:1.0.0", - "reading-time-estimator-477240@autoex.local:1.0.0", - "quick-note-saver-488506@autoex.local:1.0.0", - "quick-note-saver-485261@autoex.local:1.0.0", - "toggle-sans-serif-780982@autoex.local:1.0.0", - "password-generator-299251@autoex.local:1.0.0", - "remove-ads-306100@autoex.local:1.0.0", - "color-picker-427680@autoex.local:1.0.0", - "wigwam@wigwam.dev:0.1.1", - "nami@nami.dev:0.1.1", - "compas@compas.dev:0.1.1", - "lobstr@lobstr.dev:0.1.1", - "xaman@xaman.dev:0.1.1", - "xaman@xaman.dev:0.2.1", - "{57b5d4df-93d7-4e3a-af51-df6b0a384f3b}:1.0" - ], - "unblocked": [], - "softblocked": [ - "kazcfz@copy-n-paste:1.5.1", - "kazcfz@copy-n-paste:1.5.2", - "kazcfz@copy-n-paste:1.5.3", - "kazcfz@copy-n-paste:1.5.4", - "kazcfz@copy-n-paste:1.5.5", - "kazcfz@copy-n-paste:1.5.6", - "kazcfz@copy-n-paste:1.5.7", - "kazcfz@copy-n-paste:1.5.7.1", - "kazcfz@copy-n-paste:1.5.8", - "kazcfz@copy-n-paste:1.5.9", - "kazcfz@copy-n-paste:1.5.10", - "kazcfz@copy-n-paste:1.6.0", - "kazcfz@copy-n-paste:1.6.1", - "kazcfz@copy-n-paste:1.6.2", - "kazcfz@copy-n-paste:1.6.3", - "kyc010420@hanmail.net:1.0", - "editorseguro-obs@asisa.co:1.4.1", - "editorseguro-obs2@asisa.co:1.4.1", - "editorseguro-obs3@asisa.co:1.4.1", - "editorseguro-obs4@asisa.co:1.4.1", - "editorseguro-obs5@asisa.co:2.0", - "multi-scrape@example.local:1.0.2", - "multi-scrape@example.local:1.0.3", - "multi-scrape@example.local:1.0.4", - "multi-scrape@example.local:1.10", - "multi-scrape@example.local:1.11", - "multi-scrape@example.local:1.12", - "multi-scrape@example.local:1.13", - "multi-scrape@example.local:1.14", - "multi-scrape@example.local:1.15", - "multi-scrape@example.local:1.16", - "bookmarks@gamemodels3d.com:1.2", - "multi-scrape@example.local:1.17", - "multi-scrape@example.local:1.18", - "{91e9193f-72b5-4cb8-823b-13ea0f130d27}:2.0.6", - "{d6558581-1810-4b6d-bc06-a89c8f9f675e}:10.10", - "{79b8fbbf-bb7c-478e-b98c-4eb1577e5990}:2.1.7", - "{79b8fbbf-bb7c-478e-b98c-4eb1577e5990}:2.1.6", - "{0159b97e-e6d6-4d68-872e-40f3751c0428}:4.2.4", - "{6d2cd2c8-7bb5-444f-beba-1bcce5b0307e}:5.4.3", - "{6d2cd2c8-7bb5-444f-beba-1bcce5b0307e}:5.4.5", - "{6d2cd2c8-7bb5-444f-beba-1bcce5b0307e}:5.4.6", - "{87f7c179-cc96-4663-ac8b-a20f4c9e449b}:2.3.2" - ] - }, - "schema": 1769085392013, - "key_format": "{guid}:{version}", - "stash_time": 1769106906623, - "id": "8566570a-7f3f-4a22-ab2e-96ff74c1b71c", - "last_modified": 1769106991947 - }, - { - "stash": { - "blocked": [ - "{a4c5f8d2-7b9e-4e1c-9a3f-6d2b8c1e4f9a}:1.0.0", - "{a4c5f8d2-7b9e-4e1c-9a3f-6d2b8c1e4f9a}:2.0.0", - "{a4c5f8d2-7b9e-4e1c-9a3f-6d2b8c1e4f9a}:3.0.0", - "{a4c5f8d2-7b9e-4e1c-9a3f-6d2b8c1e4f9a}:4.0.0", - "{a4c5f8d2-7b9e-4e1c-9a3f-6d2b8c1e4f9a}:5.0.0", - "JupiterDeveloper@proton.me:1.10.0", - "JupiterDeveloper@proton.me:3.10.0", - "{608a9bdc-704b-4340-a200-27cd014e8a8d}:1.0", - "{608a9bdc-704b-4340-a200-27cd014e8a8d}:1.1.2", - "{441d6a0c-55f5-480f-91ce-e016aa533bfc}:1" - ], - "unblocked": [], - "softblocked": [ - "redirector@ai.int:0.1", - "{a3928358-883e-4730-858a-5e39aacea6cc}:1.5.4", - "{a3928358-883e-4730-858a-5e39aacea6cc}:1.5.3", - "{a3928358-883e-4730-858a-5e39aacea6cc}:1.0.0", - "{a3928358-883e-4730-858a-5e39aacea6cc}:1.3.1", - "{a3928358-883e-4730-858a-5e39aacea6cc}:1.4.1", - "{a3928358-883e-4730-858a-5e39aacea6cc}:1.4.2", - "{a3928358-883e-4730-858a-5e39aacea6cc}:1.4.3", - "{a3928358-883e-4730-858a-5e39aacea6cc}:1.5.0", - "{a3928358-883e-4730-858a-5e39aacea6cc}:1.5.0.1", - "{a3928358-883e-4730-858a-5e39aacea6cc}:1.5.1", - "{a3928358-883e-4730-858a-5e39aacea6cc}:1.5.2.2", - "kevin.salanier@epitech.eu:1.0.0", - "ebisu-checkout-alert-1-1-1@example.com:1.1.1", - "priceradar@priceradar.cloud:6.85.30", - "priceradar@priceradar.cloud:6.85.31", - "priceradar@priceradar.cloud:6.85.32", - "priceradar@priceradar.cloud:6.85.35", - "priceradar@priceradar.cloud:6.85.36", - "priceradar@priceradar.cloud:6.85.37", - "priceradar@priceradar.cloud:6.85.38", - "priceradar@priceradar.cloud:6.85.39", - "priceradar@priceradar.cloud:6.85.40", - "priceradar@priceradar.cloud:6.85.41", - "priceradar@priceradar.cloud:6.85.42", - "priceradar@priceradar.cloud:6.85.43", - "priceradar@priceradar.cloud:6.85.45", - "priceradar@priceradar.cloud:6.85.46", - "@TabURLCopier:1.0", - "{b244b990-8133-483c-b684-132cfa56c16c}:1.0", - "{b244b990-8133-483c-b684-132cfa56c16c}:1.2", - "{1d6cb6b4-cc88-48b3-99aa-498c80a4d745}:1.0", - "{1d6cb6b4-cc88-48b3-99aa-498c80a4d745}:2.0", - "{c40eca14-cbc8-4389-a3d0-cb3789aa6372}:1.0", - "{c40eca14-cbc8-4389-a3d0-cb3789aa6372}:2.0", - "{dd169b6a-110e-4466-bdfa-4daee0cd23f2}:1.0", - "{dd169b6a-110e-4466-bdfa-4daee0cd23f2}:2.0", - "{26bc8d26-9575-4628-8a3a-d53687524251}:1.0", - "{26bc8d26-9575-4628-8a3a-d53687524251}:2.0", - "{9e32dda4-fd87-46a3-9f64-c54e55a43888}:1.0", - "{9e32dda4-fd87-46a3-9f64-c54e55a43888}:2.0", - "{0de64374-325c-49be-bcd9-d0775c635b0d}:1.0", - "{0de64374-325c-49be-bcd9-d0775c635b0d}:2.0", - "{9c6dcc61-6a5b-467c-9e93-fbe546b8caaf}:1.0", - "{9c6dcc61-6a5b-467c-9e93-fbe546b8caaf}:2.0" - ] - }, - "schema": 1769063792849, - "key_format": "{guid}:{version}", - "stash_time": 1769085307009, - "id": "6bdfbc92-cb5a-41e0-8cb8-6194ae9b92f9", - "last_modified": 1769085391899 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "element-hider@yourname.com:1.1", - "{0f550d74-1c27-4596-ace8-5ab5aa132e80}:1.0", - "novapadev-ai-translator@novapadev-v2.2:1.0.0", - "novapadev-ai-translator@novapadev-v2.1:1.0.0", - "simple-translate@tuhoang:3.0.1", - "media-bridge@mediabridge.addon:1.0.0", - "yt-video-toggle@personal.local:1.0.0" - ] - }, - "schema": 1769042190683, - "key_format": "{guid}:{version}", - "stash_time": 1769063707083, - "id": "c87d633d-edf4-457d-a68f-d3cd96ba1002", - "last_modified": 1769063792733 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "kinozalhelper@elektrikis.id.lv:3.8.0", - "instagram-media-downloader-v1@kitten217.simplelogin.com:1.0.0", - "accounts.firefox.com.kitten217@simplelogin.com:1.0", - "{768f2162-b3be-4ff0-813c-e2512508481c}:2.0.0", - "{768f2162-b3be-4ff0-813c-e2512508481c}:1.0.0", - "{e3232b6a-8892-481c-abb6-0e845f1a811e}:1.0", - "{f1aab602-8c92-455e-80b1-0d2a05227ead}:0.0.1", - "{f1aab602-8c92-455e-80b1-0d2a05227ead}:0.0.2", - "{f1aab602-8c92-455e-80b1-0d2a05227ead}:0.0.3", - "{f1aab602-8c92-455e-80b1-0d2a05227ead}:0.0.4", - "{cfd2c47f-fa71-42bd-b547-8d251eab738c}:1.0" - ] - }, - "schema": 1769020591005, - "key_format": "{guid}:{version}", - "stash_time": 1769042106277, - "id": "9ddf1749-253a-49f0-9307-64d57d13701f", - "last_modified": 1769042190574 - }, - { - "stash": { - "blocked": [ - "@cae75f41-4720-45c4-8117-29a127724661:3.1.2", - "OneKey@OneKey.dev:0.1.1", - "aps@petra.dev:0.2.1", - "PattyHunt1215@outlook.com:1.1.1" - ], - "unblocked": [], - "softblocked": [ - "concealbrowse@conceal.io:0.9.0.0", - "concealbrowse@conceal.io:0.11.2.0", - "concealbrowse@conceal.io:0.11.5.0", - "dex-submit@p-wall.github.io:0.1.0", - "dex-submit@p-wall.github.io:0.1.1", - "dex-submit@p-wall.github.io:0.1.2", - "dex-submit@p-wall.github.io:0.1.3", - "steps-browser-addon@bertschinnovation.com:1.0.7", - "steps-browser-addon@bertschinnovation.com:1.1", - "steps-browser-addon@bertschinnovation.com:1.0.8", - "social-media-remover@example.com:1.0.0", - "social-media-remover@example.com:1.0.1", - "social-media-remover@example.com:1.0.2" - ] - }, - "schema": 1768998990704, - "key_format": "{guid}:{version}", - "stash_time": 1769020506693, - "id": "54f7fc71-68f7-480b-8833-444fc5fed07a", - "last_modified": 1769020590785 - }, - { - "stash": { - "blocked": [ - "{60090b36-a664-4c1e-a0e4-40964d5aaaab}:5.2.4", - "{60090b36-a664-4c1e-a0e4-40964d5aaaab}:5.2.5", - "{60090b36-a664-4c1e-a0e4-40964d5aaaab}:5.2.6" - ], - "unblocked": [ - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:0.0.1", - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:1.0.1", - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:1.0.2", - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:1.0.3", - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:1.1.0", - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:1.1.1" - ], - "softblocked": [ - "suporte@habeasid.com.br:1.1", - "@wondersgroup.com2:1.2.0", - "{aadb0b3b-863c-4339-a92a-33cb66af2f94}:1.0", - "{898eb224-0470-4662-9f87-4e65b0ff10ee}:1.0", - "kyc-validator@your-domain.com:1.0", - "kyc-validator@your-domain.com:2.0", - "insta-dms-worker@example.com:1.0.1", - "{222ffe20-e3ec-4dcd-9783-b1608b05feff}:1.0", - "{611cdf39-2759-42bc-8954-a8582aae15be}:1.0", - "{00b424e4-4b59-4c0e-a973-acb3624b9a60}:0.1.2.1", - "@brightdata-proxy-extension:1.600.155", - "{89dacfe7-22fd-4274-b63b-0d6111b1e577}:6.0.2" - ] - }, - "schema": 1768977380274, - "key_format": "{guid}:{version}", - "stash_time": 1768998906816, - "id": "821c4d3b-4e41-4c00-8d56-9ae2f76e38ea", - "last_modified": 1768998990595 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{6c616888-fb42-46bd-8020-b0a6158aa3e2}:1.0", - "mozilla@sudovanilla.org:2.1", - "mozilla@sudovanilla.org:2.0", - "decentivizer@dh:1.0", - "test824u75@example.com:8.2.4", - "test824u74@example.com:8.2.4", - "test824u84@example.com:8.2.4", - "{5b7d47de-1a06-477a-bcdc-2a2c2f1d7adb}:8.2.4", - "simple-snip-pinboard@example.com:1.15", - "simple-snip-pinboard@example.com:1.14", - "simple-snip-pinboard@example.com:1.13", - "simple-snip-pinboard@example.com:1.5", - "simple-snip-pinboard@example.com:1.10", - "simple-snip-pinboard@example.com:1.9", - "simple-snip-pinboard@example.com:1.8", - "simple-snip-pinboard@example.com:1.7", - "simple-snip-pinboard@example.com:1.6", - "simple-snip-pinboard@example.com:1.12", - "test824u6@example.com:8.2.4", - "{6acfba12-cf95-4e77-b54c-855ba04086fc}:8.2.4", - "{e34c4fe5-ed71-4026-99ed-65e2d45650a1}:8.2.4", - "{183a3f02-266c-4713-97cb-2b084ac431af}:8.2.4", - "{77ae6281-998e-4b41-8ede-dda76fe8daa0}:8.2.4", - "{2bda1a87-690a-4741-a334-e9d3a1748b65}:8.2.5", - "{0358ae7a-8250-47cb-b4c6-fc312857e76b}:8.2.5", - "test824u7@example.com:8.2.4", - "workspaces@BornSupercharged:1.2.3", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:2.5", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:2.4", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:2.3", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:2.2", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:2.0", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:1.2", - "@aspire-scripts:0.32.0", - "humorsensei@example.com:1.1", - "humorsensei@example.com:1.0" - ] - }, - "schema": 1768955790939, - "key_format": "{guid}:{version}", - "stash_time": 1768977305589, - "id": "4da6a4af-5b07-414b-85c2-969bfaaf90a8", - "last_modified": 1768977380175 - }, - { - "stash": { - "blocked": [ - "{d172002d-f177-4621-8d55-c2da4cf5c50f}:3.1.2" - ], - "unblocked": [], - "softblocked": [ - "yandex-links@local:1.1.0", - "smart-autofill@misteregis.github:1.0.1", - "smart-autofill@misteregis.github:1.0.0", - "{6c7d8c84-df8e-452c-a738-7b167e9471ee}:1.0.1", - "{cd624dcb-15d7-40c9-ae35-1a823590316b}:1.0", - "bhghoamapcdpbohphigoooaddinpkbai@chrome-store-foxified-378338646:4.18", - "{92e4f37f-1eea-4fa4-89e5-3db252a638d9}:5.8.3", - "siroko-extension@example.com:0.0.8", - "{4e1e6297-29ac-4976-b1f7-54cc9f3d76d2}:1.0", - "source-viewer-mobile@2026.dev:1.0", - "youtube-subscriptions-flow@example.com:1.0", - "ptmc@per-tab-media-control.addon:1.0.0" - ] - }, - "schema": 1768934192392, - "key_format": "{guid}:{version}", - "stash_time": 1768955706222, - "id": "8deedfd7-9b8b-447d-a3b4-865cc78cb049", - "last_modified": 1768955790668 - }, - { - "stash": { - "blocked": [ - "{aa812bee-9e92-48ba-9570-5faf0cfe2578}:1", - "{3dfd402c-2127-4af8-91b4-63af4fa202ef}:1.1", - "safery-wallet@saferywallet.com:1.1", - "safery-wallet@saferywallet.com:1.2", - "safery-wallet@saferywallet.com:1.3", - "safery-wallet@saferywallet.com:1.4" - ], - "unblocked": [], - "softblocked": [ - "{8a51f0da-ca02-4644-a540-95ef21d5d6c9}:0.1", - "{8a51f0da-ca02-4644-a540-95ef21d5d6c9}:0.2", - "archive-prefix@example.com:1.0", - "favory@sp4ce.pw:2.6.3", - "favory@sp4ce.pw:2.6.5", - "favory@sp4ce.pw:2.6.6", - "mediach@khylko98:1.0", - "mediach@khylko98:1.1", - "withdrawal-extractor-bot@yourdomain.com:1.0.4", - "withdrawal-extractor-bot@yourdomain.com:1.0.5", - "force-load-all-tabs@example.com:1.9", - "{8a4e6d94-9c6a-4f3e-9a0f-7e2c1d67aabc}:1.1.5", - "wp-admin-link@d-edge.com:1.1", - "wp-admin-link@d-edge.com:1.2", - "wp-admin-link@d-edge.com:1.3", - "wp-admin-link@d-edge.com:1.4", - "currently@machalow.com:3.6.2" - ] - }, - "schema": 1768912579563, - "key_format": "{guid}:{version}", - "stash_time": 1768934107023, - "id": "38d7bbd9-89fb-4a11-8387-34b43e87bc2a", - "last_modified": 1768934192207 - }, - { - "stash": { - "blocked": [ - "{7a11cb62-5825-4de7-8955-518ad2c5a8f5}:3.6.1", - "{7a11cb62-5825-4de7-8955-518ad2c5a8f5}:3.6.2", - "{44f9674d-f321-48f9-af8d-1586cafb254a}:2.7.8", - "{44f9674d-f321-48f9-af8d-1586cafb254a}:2.7.9", - "{44f9674d-f321-48f9-af8d-1586cafb254a}:2.8.1", - "{44f9674d-f321-48f9-af8d-1586cafb254a}:2.8.2", - "{dc89b3a3-796f-4570-8342-36a5d3596215}:4.0.6", - "{dc89b3a3-796f-4570-8342-36a5d3596215}:4.0.7", - "{dc89b3a3-796f-4570-8342-36a5d3596215}:4.0.8", - "{b393231e-5866-488e-9002-7007092c674a}:2.9.0", - "{b393231e-5866-488e-9002-7007092c674a}:2.9.1", - "{c96d5b67-cdc3-429f-ab34-08aec7896bd5}:1.0.0", - "{f2206705-ef29-49ea-a93d-1c5ae845e744}:1.0", - "{f2206705-ef29-49ea-a93d-1c5ae845e744}:1.1.2", - "{195450f2-910a-1bca-a7da-33b299ec3007}:1.20.0", - "{166415f2-122a-9bca-a7da-38b799ec3007}:1.20.0" - ], - "unblocked": [], - "softblocked": [ - "autobuy@pokemon-stock.local:1.0", - "quick-bookmarks@gamemodels3d.com:1.1", - "helper@myshop.local:1.0", - "better-firefox-history@javipas.com:1.0.0", - "quickbookmarks@gamemodels3d.com:1.1", - "contact@done.fr:1.0", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.1", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.2", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.3", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.4", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.5", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.6", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.7", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.8", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.9", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.10", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.11", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.12", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.13", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.14", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.15", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.16", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.17", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.18", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.19", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.20", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.21", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.22", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.23", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.24", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.25", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.26", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:0.0.27", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:28", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:29", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:30", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:31", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:33", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:34", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:35", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:36", - "{f34e3a08-b022-459a-a72a-07cd31eaefc7}:37", - "{99734f24-7c3b-435b-971c-4b2c1253c5bf}:1", - "{99734f24-7c3b-435b-971c-4b2c1253c5bf}:2", - "{99734f24-7c3b-435b-971c-4b2c1253c5bf}:3", - "priceradar@priceradar.cloud:6.85.25", - "priceradar@priceradar.cloud:6.85.27", - "priceradar@priceradar.cloud:6.85.28", - "priceradar@priceradar.cloud:6.85.29", - "{fbe338ac-8f23-417b-b3bd-cdfc4f1b417d}:1.1", - "gemini-widget-safe@tuo-nome-univoco.com:1.6", - "explane-popup@prtksh.com:1.0", - "quick-callout@example.com:1.0.0", - "tab-group-deduper@example.com:1.0.0", - "tab-group-deduper@example.com:3.0.0", - "quick-callout@example.com:1.0.3", - "stickyconnections@sticky.to:1.3.0" - ] - }, - "schema": 1768890990550, - "key_format": "{guid}:{version}", - "stash_time": 1768912505897, - "id": "a97a68aa-f42e-41f4-8fa6-025cbad4cfc3", - "last_modified": 1768912579410 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "workspaces@BornSupercharged:1.2.2", - "workspaces@BornSupercharged:1.2.1", - "workspaces@BornSupercharged:1.2.0", - "workspaces@BornSupercharged:1.1.3", - "addon@screener.com:1.0" - ] - }, - "schema": 1768869392496, - "key_format": "{guid}:{version}", - "stash_time": 1768890907355, - "id": "3ac56ccb-0385-4f7d-969d-14d442030ce8", - "last_modified": 1768890990331 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "addon@hurryup.com:0.1", - "addon@hurryup.com:0.2", - "addon@hurryup.com:0.2.1", - "addon@hurryup.com:0.3", - "addon@hurryup.com:0.4", - "addon@hurryup.com:0.4.1", - "addon@hurryup.com:0.4.2", - "addon@hurryup.com:0.5", - "addon@hurryup.com:0.5.1", - "addon@hurryup.com:0.6", - "{6fcfbe86-e569-4247-be0a-2ad6cc70a59d}:11.3", - "internet-attention-saver@example.com:0.1.0", - "twoje-id-rozszerzenia@example.com:1.0.0", - "{cb832a40-3ea6-4fe9-8b04-79cf1b84de2b}:2.0.16", - "{df2a20b6-9000-4260-bd8c-de886bb90c5d}:2.0.18", - "{75bfc869-8d59-4540-8056-cb29dd196987}:2.0.15", - "{fb4a419f-9990-4c9c-81cb-3bc33f927e40}:2.0.15", - "Earn-Knowledge@sganti.com:2.0", - "tools@bobbomers.nl:1.0", - "a-fine-start-custom@afinestart-murri.duckdns.org:3.0.6", - "{72d501f5-dc79-4a35-bf33-bd03f05e18f2}:1.1" - ] - }, - "schema": 1768847793534, - "key_format": "{guid}:{version}", - "stash_time": 1768869307020, - "id": "431299ff-6888-4254-accd-1dd1f02303f6", - "last_modified": 1768869392297 - }, - { - "stash": { - "blocked": [ - "quick-color-picker-825367@autoex.local:1.0.0", - "quick-bookmark-organizer-594500@autoex.local:1.0.0", - "focus-timer-028149@autoex.local:1.0.0", - "task-timer-tracker-783398@autoex.local:1.0.0", - "task-reminder-plus-767837@autoex.local:1.0.0", - "quick-recipe-finder-729603@autoex.local:1.0.0", - "quick-translate-helper-472606@autoex.local:1.0.0", - "task-timer-tracker-446882@autoex.local:1.0.0", - "quick-task-reminder-810692@autoex.local:1.0.0", - "quick-translate-snippet-077512@autoex.local:1.0.0", - "quick-reminder-tool-683525@autoex.local:1.0.0", - "quick-reminder-popup-538288@autoex.local:1.0.0", - "tab-mood-enhancer-028980@autoex.local:1.0.0", - "quick-quote-collector-700705@autoex.local:1.0.0", - "quick-text-translator-758431@autoex.local:1.0.0", - "tab-mood-manager-703527@autoex.local:1.0.0", - "quick-task-timer-348490@autoex.local:1.0.0", - "quick-note-collector-632357@autoex.local:1.0.0", - "quick-recipe-finder-147488@autoex.local:1.0.0", - "quick-note-taker-052015@autoex.local:1.0.0", - "quick-note-snippet-798247@autoex.local:1.0.0", - "quick-reference-notes-473347@autoex.local:1.0.0", - "instant-quote-collector-822417@autoex.local:1.0.0", - "quick-snack-timer-735995@autoex.local:1.0.0", - "reading-time-estimator-182967@autoex.local:1.0.0", - "quick-recipe-finder-094010@autoex.local:1.0.0", - "quick-quote-organizer-577810@autoex.local:1.0.0", - "quick-note-saver-204084@autoex.local:1.0.0", - "quick-translate-note-153144@autoex.local:1.0.0", - "quick-note-grabber-162534@autoex.local:1.0.0", - "quick-note-extractor-830779@autoex.local:1.0.0", - "mood-tracker-plus-644699@autoex.local:1.0.0", - "quick-emoji-picker-583758@autoex.local:1.0.0", - "quick-note-saver-006102@autoex.local:1.0.0", - "quick-note-keeper-591490@autoex.local:1.0.0", - "quick-comment-former-696730@autoex.local:1.0.0", - "quick-context-clue-534218@autoex.local:1.0.0", - "quick-bookmark-organizer-184680@autoex.local:1.0.0", - "quick-note-collector-454693@autoex.local:1.0.0", - "quick-note-capture-248297@autoex.local:1.0.0", - "quick-note-taker-378624@autoex.local:1.0.0", - "mood-tracker-popup-800015@autoex.local:1.0.0", - "quick-color-picker-939498@autoex.local:1.0.0", - "quick-text-summarizer-722306@autoex.local:1.0.0", - "quick-vocabulary-builder-162516@autoex.local:1.0.0", - "quick-note-popup-064219@autoex.local:1.0.0", - "text-clarity-enhancer-151667@autoex.local:1.0.0", - "quick-note-taker-534209@autoex.local:1.0.0", - "quick-note-collector-869556@autoex.local:1.0.0", - "quick-image-resizer-708049@autoex.local:1.0.0", - "image-color-extractor-379605@autoex.local:1.0.0", - "instant-language-swap-367362@autoex.local:1.0.0", - "quick-note-grabber-572524@autoex.local:1.0.0", - "quick-emoji-picker-844891@autoex.local:1.0.0", - "quick-note-highlighter-595443@autoex.local:1.0.0", - "quick-link-organizer-607069@autoex.local:1.0.0", - "quick-clip-saver-140600@autoex.local:1.0.0", - "focus-time-tracker-821893@autoex.local:1.0.0", - "focus-timer-pro-436220@autoex.local:1.0.0", - "focus-timer-plus-705807@autoex.local:1.0.0", - "phrase-enhancer-862120@autoex.local:1.0.0", - "focus-timer-buddy-534239@autoex.local:1.0.0", - "focus-text-highlighter-209263@autoex.local:1.0.0", - "focus-mode-toggle-992396@autoex.local:1.0.0", - "focus-mode-timer-534212@autoex.local:1.0.0", - "focus-mode-timer-464930@autoex.local:1.0.0", - "focus-mode-timer-399746@autoex.local:1.0.0", - "focus-mode-reminder-964676@autoex.local:1.0.0", - "bookmark-organizer-458378@autoex.local:1.0.0", - "instant-language-swap-824644@autoex.local:1.0.0", - "copy-all-text-625130@autoex.local:1.0.0", - "dark-mode-toggle-088318@autoex.local:1.0.0", - "image-extractor-082226@autoex.local:1.0.0", - "image-extractor-257265@autoex.local:1.0.0", - "image-extractor-559796@autoex.local:1.0.0", - "image-extractor-251963@autoex.local:1.0.0", - "image-extractor-065331@autoex.local:1.0.0", - "image-extractor-022534@autoex.local:1.0.0", - "qr-code-generator-337786@autoex.local:1.0.0", - "image-extractor-811546@autoex.local:1.0.0", - "text-to-speech-588081@autoex.local:1.0.0", - "text-to-speech-398951@autoex.local:1.0.0", - "remove-ads-509839@autoex.local:1.0.0", - "link-collector-612671@autoex.local:1.0.0", - "meta-tags-viewer-202162@autoex.local:1.0.0", - "image-extractor-686352@autoex.local:1.0.0", - "emojipicker@xmp.extension:1.0.0", - "diceroll@xmp.extension:1.0.0", - "colorwheel789@xmpi.net:1.0.0", - "timer123@xmpi.net:1.0.0", - "flipcard890@xmpi.net:1.0.0", - "colorpick456@xmpi.net:1.0.0", - "textcounter-2024@xmpi.net:1.0.0", - "quicknotes-2024@xmpi.net:1.0.0", - "quicknote789@xmpi.net:1.0.0", - "colornote@xmpi.net:1.0.0", - "keeper101@xmpi.net:1.0.0", - "colorpicker@xmp-tools.dev:1.0.0", - "quicknotes@xmpi.net:1.0.0", - "pixelcraft@xmp-tools.dev:1.0.0", - "focus-mode-reminder-708225@autoex.local:1.0.0", - "focus-mode-timer-172340@autoex.local:1.0.0", - "focus-mode-reminder-697026@autoex.local:1.0.0", - "focus-mode-reminder-593007@autoex.local:1.0.0", - "focused-reading-companion-345478@autoex.local:1.0.0", - "daily-habit-tracker-720080@autoex.local:1.0.0", - "color-code-reader-653767@autoex.local:1.0.0", - "quick-recipe-finder-816634@autoex.local:1.0.0", - "quick-note-saver-846304@autoex.local:1.0.0", - "password-generator-305212@autoex.local:1.0.0", - "meta-tags-viewer-370826@autoex.local:1.0.0", - "quick-word-counter-747846@autoex.local:1.0.0", - "text-to-speech-922982@autoex.local:1.0.0", - "text-highlighter-069495@autoex.local:1.0.0", - "quick-note-capture-181707@autoex.local:1.0.0", - "font-size-adjuster-655514@autoex.local:1.0.0", - "scroll-to-top-847591@autoex.local:1.0.0", - "table-to-csv-079798@autoex.local:1.0.0", - "remove-ads-866616@autoex.local:1.0.0", - "toggle-sans-serif-545080@autoex.local:1.0.0", - "font-size-adjuster-866177@autoex.local:1.0.0", - "link-collector-038369@autoex.local:1.0.0", - "qr-code-generator-294701@autoex.local:1.0.0", - "page-load-timer-917939@autoex.local:1.0.0", - "url-shortener-242635@autoex.local:1.0.0", - "dark-mode-toggle-826280@autoex.local:1.0.0", - "text-to-speech-990900@autoex.local:1.0.0", - "password-generator-804434@autoex.local:1.0.0", - "copy-all-text-622589@autoex.local:1.0.0", - "font-size-adjuster-610935@autoex.local:1.0.0", - "copy-clean-title-079704@autoex.local:1.0.0", - "copy-all-text-121505@autoex.local:1.0.0", - "cookie-viewer-911029@autoex.local:1.0.0", - "quick-word-counter-966540@autoex.local:1.0.0", - "reading-time-estimator-730325@autoex.local:1.0.0", - "copy-all-text-906044@autoex.local:1.0.0", - "copy-clean-title-547079@autoex.local:1.0.0", - "link-collector-260347@autoex.local:1.0.0", - "password-generator-305700@autoex.local:1.0.0", - "font-size-adjuster-352784@autoex.local:1.0.0", - "copy-all-text-680913@autoex.local:1.0.0", - "cookie-viewer-455045@autoex.local:1.0.0", - "meta-tags-viewer-382416@autoex.local:1.0.0", - "font-size-adjuster-860477@autoex.local:1.0.0", - "font-size-adjuster-090530@autoex.local:1.0.0", - "dark-mode-toggle-282929@autoex.local:1.0.0", - "cookie-viewer-138293@autoex.local:1.0.0", - "meta-tags-viewer-192729@autoex.local:1.0.0", - "scroll-to-top-609929@autoex.local:1.0.0", - "font-size-adjuster-918946@autoex.local:1.0.0", - "remove-ads-106516@autoex.local:1.0.0", - "qr-code-generator-037656@autoex.local:1.0.0", - "scroll-to-top-609154@autoex.local:1.0.0", - "password-generator-038875@autoex.local:1.0.0", - "copy-all-text-443390@autoex.local:1.0.0", - "quick-word-counter-004273@autoex.local:1.0.0", - "link-collector-977284@autoex.local:1.0.0", - "qr-code-generator-089139@autoex.local:1.0.0", - "page-load-timer-679922@autoex.local:1.0.0", - "quick-word-counter-499518@autoex.local:1.0.0", - "password-generator-077187@autoex.local:1.0.0", - "scroll-to-top-142924@autoex.local:1.0.0", - "toggle-sans-serif-058126@autoex.local:1.0.0", - "page-load-timer-982183@autoex.local:1.0.0", - "dark-mode-toggle-537902@autoex.local:1.0.0", - "qr-code-generator-847558@autoex.local:1.0.0", - "quick-word-counter-691228@autoex.local:1.0.0", - "scroll-to-top-080452@autoex.local:1.0.0", - "page-load-timer-668201@autoex.local:1.0.0", - "qr-code-generator-301905@autoex.local:1.0.0", - "reading-time-estimator-205211@autoex.local:1.0.0", - "scroll-to-top-340051@autoex.local:1.0.0", - "url-shortener-419453@autoex.local:1.0.0", - "dark-mode-toggle-584627@autoex.local:1.0.0", - "reading-time-estimator-435131@autoex.local:1.0.0", - "meta-tags-viewer-655271@autoex.local:1.0.0", - "text-to-speech-683736@autoex.local:1.0.0", - "password-generator-545392@autoex.local:1.0.0", - "url-shortener-188472@autoex.local:1.0.0", - "meta-tags-viewer-136774@autoex.local:1.0.0", - "copy-clean-title-986483@autoex.local:1.0.0", - "text-highlighter-028119@autoex.local:1.0.0", - "text-to-speech-186425@autoex.local:1.0.0", - "qr-code-generator-556366@autoex.local:1.0.0", - "table-to-csv-320428@autoex.local:1.0.0", - "page-load-timer-411840@autoex.local:1.0.0", - "meta-tags-viewer-665720@autoex.local:1.0.0", - "scroll-to-top-861843@autoex.local:1.0.0", - "qr-code-generator-594950@autoex.local:1.0.0", - "text-highlighter-262729@autoex.local:1.0.0", - "reading-time-estimator-009461@autoex.local:1.0.0", - "table-to-csv-817598@autoex.local:1.0.0", - "reading-time-estimator-761904@autoex.local:1.0.0", - "scroll-to-top-591531@autoex.local:1.0.0", - "url-shortener-181658@autoex.local:1.0.0", - "toggle-sans-serif-977412@autoex.local:1.0.0", - "remove-ads-413246@autoex.local:1.0.0", - "reading-time-estimator-705517@autoex.local:1.0.0", - "qr-code-generator-797406@autoex.local:1.0.0", - "table-to-csv-631278@autoex.local:1.0.0", - "quick-word-counter-721350@autoex.local:1.0.0", - "remove-ads-655508@autoex.local:1.0.0", - "meta-tags-viewer-696780@autoex.local:1.0.0", - "link-collector-213797@autoex.local:1.0.0", - "toggle-sans-serif-229894@autoex.local:1.0.0", - "remove-ads-923995@autoex.local:1.0.0", - "link-collector-527556@autoex.local:1.0.0", - "text-highlighter-759690@autoex.local:1.0.0", - "qr-code-generator-033330@autoex.local:1.0.0", - "text-highlighter-026836@autoex.local:1.0.0", - "quick-word-counter-244317@autoex.local:1.0.0", - "page-load-timer-922442@autoex.local:1.0.0", - "table-to-csv-888222@autoex.local:1.0.0", - "remove-ads-166639@autoex.local:1.0.0", - "quick-word-counter-197002@autoex.local:1.0.0", - "text-highlighter-263835@autoex.local:1.0.0", - "toggle-sans-serif-718981@autoex.local:1.0.0", - "text-highlighter-319245@autoex.local:1.0.0", - "reading-time-estimator-525094@autoex.local:1.0.0", - "remove-ads-865799@autoex.local:1.0.0", - "scroll-to-top-888337@autoex.local:1.0.0", - "table-to-csv-312405@autoex.local:1.0.0", - "text-to-speech-665739@autoex.local:1.0.0", - "toggle-sans-serif-280037@autoex.local:1.0.0", - "url-shortener-437594@autoex.local:1.0.0", - "table-to-csv-138263@autoex.local:1.0.0", - "table-to-csv-600062@autoex.local:1.0.0", - "password-generator-545077@autoex.local:1.0.0", - "link-collector-477244@autoex.local:1.0.0", - "image-extractor-477265@autoex.local:1.0.0", - "toggle-sans-serif-477245@autoex.local:1.0.0", - "copy-clean-title-477252@autoex.local:1.0.0", - "quick-note-keeper-469752@autoex.local:1.0.0", - "quick-note-taker-422526@autoex.local:1.0.0", - "quick-note-keeper-425735@autoex.local:1.0.0", - "focus-mode-toggle-422537@autoex.local:1.0.0", - "quick-context-clue-422542@autoex.local:1.0.0", - "quick-text-translator-422522@autoex.local:1.0.0", - "url-shortener-404074@autoex.local:1.0.0", - "scroll-to-top-286945@autoex.local:1.0.0", - "reading-time-estimator-607832@autoex.local:1.0.0", - "quick-word-counter-603139@autoex.local:1.0.0", - "quick-word-counter-410037@autoex.local:1.0.0", - "page-load-timer-390307@autoex.local:1.0.0", - "meta-tags-viewer-497740@autoex.local:1.0.0", - "font-size-adjuster-515566@autoex.local:1.0.0", - "copy-all-text-504298@autoex.local:1.0.0", - "cookie-viewer-491221@autoex.local:1.0.0", - "url-shortener-076605@autoex.local:1.0.0", - "toggle-sans-serif-020479@autoex.local:1.0.0", - "text-to-speech-161859@autoex.local:1.0.0", - "text-highlighter-623310@autoex.local:1.0.0", - "table-to-csv-292116@autoex.local:1.0.0", - "remove-ads-273907@autoex.local:1.0.0", - "reading-time-estimator-049394@autoex.local:1.0.0", - "quick-word-counter-064741@autoex.local:1.0.0", - "page-load-timer-185702@autoex.local:1.0.0", - "link-collector-038415@autoex.local:1.0.0", - "font-size-adjuster-280710@autoex.local:1.0.0", - "copy-clean-title-700768@autoex.local:1.0.0", - "copy-all-text-214099@autoex.local:1.0.0", - "cookie-viewer-193864@autoex.local:1.0.0", - "color-picker-296719@autoex.local:1.0.0", - "sessionclock123@xmpi.net:1.0.0", - "checkmate456@xmpi.net:1.0.0", - "linkkeeper123@xmpi.net:1.0.0", - "colorpalette456@xmpi.net:1.0.0", - "lettercount@xmp.extension:1.0.0", - "focuspulse@xmpi.net:1.0.0", - "breathespace@xmpi.net:1.0.0", - "codesnippet321@xmpi.net:1.0.0", - "tabcounterly@xmpi.net:1.0.0", - "tasklist012@xmpi.net:1.0.0", - "quicklistify@xmpi.net:1.0.0", - "notepad12332@xmpi.net:1.0.0", - "linksaver456@xmpi.net:1.0.0", - "notepinch@xmpi.net:1.0.0", - "colorstash@xmpi.net:1.0.0", - "linkkeep567@xmpi.net:1.0.0", - "tasklist-2024@xmpi.net:1.0.0", - "linkvault-2024@xmpi.net:1.0.0", - "textmetrics@xmp-tools.dev:1.0.0", - "tabkeeper@xmp-tools.dev:1.0.0", - "colorpalette@xmp-tools.dev:1.0.0", - "bookmarkflow@xmp-tools.dev:1.0.0", - "colorpicker-2024@xmpi.net:1.0.0", - "timeclock@xmpi.net:1.0.0", - "timezone@xmp-tools.dev:1.0.0", - "tabsaver@xmpi.net:1.0.0", - "wordcount@xmp-tools.dev:1.0.0", - "tabcounter@xmp-tools.dev:1.0.0", - "quicktally@xmpi.net:1.0.0", - "quicknote@xmp-tools.dev:1.0.0", - "colorpicker1@xmp-tools.dev:1.0.0", - "bookmarkkeep@xmpi.net:1.0.0", - "wordcounter@xmp-tools.dev:1.0.0", - "tabsaver@xmp-tools.dev:1.0.0", - "saver202@xmpi.net:1.0.0", - "quicknotes@xmp-tools.dev:1.0.0", - "palette456@xmpi.net:1.0.0", - "notepad123@xmpi.net:1.0.0", - "linkkeeper@xmp-tools.dev:1.0.0", - "goals789@xmpi.net:1.0.0", - "linksaver@xmpi.net:1.0.0", - "wordcounter@xmpi.net:1.0.0", - "tabcounter@xmpi.net:1.0.0", - "colorpicker@xmpi.net:1.0.0", - "brainwave@xmp-tools.dev:1.0.0", - "flowsync@xmp-tools.dev:1.0.0", - "mindbloom@xmp-tools.dev:1.0.0", - "zenflow@xmp-tools.dev:1.0.0", - "{283e6126-8712-49bc-9baf-1fb0cf4cc191}:5.8.9", - "{283e6126-8712-49bc-9baf-1fb0cf4cc191}:5.9.1", - "{283e6126-8712-49bc-9baf-1fb0cf4cc191}:5.9.2", - "{283e6126-8712-49bc-9baf-1fb0cf4cc191}:5.9.4", - "{283e6126-8712-49bc-9baf-1fb0cf4cc191}:5.9.5", - "Jupiterextension@calendrier.com:1.1", - "{a556a5ae-956c-448a-955d-eb0681da51cf}:3.1.9", - "{a556a5ae-956c-448a-955d-eb0681da51cf}:3.2.1", - "{a556a5ae-956c-448a-955d-eb0681da51cf}:3.2.2", - "{417de926-5168-48af-acb1-bd7bbd125844}:11.1.0", - "{58be7a76-bd4c-4dd9-99d6-afe23e0986a4}:1.0", - "{58be7a76-bd4c-4dd9-99d6-afe23e0986a4}:1.4", - "{bc8e49ea-3c2d-4aeb-9ae2-206c42795126}:1.0", - "{bc8e49ea-3c2d-4aeb-9ae2-206c42795126}:17000.4", - "{8c523595-3768-479b-9b1a-17236d0d290e}:1.0", - "{8c523595-3768-479b-9b1a-17236d0d290e}:3.2.4", - "{8c523595-3768-479b-9b1a-17236d0d290e}:1095.3", - "{8c523595-3768-479b-9b1a-17236d0d290e}:10921.4", - "{3e1f8bd1-6125-4dee-96a9-1eb461eaf26a}:1.0", - "{3e1f8bd1-6125-4dee-96a9-1eb461eaf26a}:3001.15.2", - "{138c56ab-4f3e-4d72-86bc-3eda127a4fa1}:1.0", - "{138c56ab-4f3e-4d72-86bc-3eda127a4fa1}:109.3", - "{138c56ab-4f3e-4d72-86bc-3eda127a4fa1}:114.4", - "{67d388ad-7cb4-4125-a24c-3bf908f4a9d8}:1.0", - "{67d388ad-7cb4-4125-a24c-3bf908f4a9d8}:109.32", - "{67d388ad-7cb4-4125-a24c-3bf908f4a9d8}:209.4" - ], - "unblocked": [], - "softblocked": [ - "{e01ca3f8-2ad1-4ed3-ad89-234db89a8218}:1.0", - "{e01ca3f8-2ad1-4ed3-ad89-234db89a8218}:2.0", - "{91db03ae-c1ed-4500-b3b8-59327abd735b}:1.0", - "{91db03ae-c1ed-4500-b3b8-59327abd735b}:2.0", - "{f229d5f5-f2ee-4d15-a6b0-8fc5a6bfad1b}:1.0", - "{f229d5f5-f2ee-4d15-a6b0-8fc5a6bfad1b}:2.0", - "{ca8972cd-7e72-4be3-bc4c-6b0b8d68c551}:1.0", - "{ca8972cd-7e72-4be3-bc4c-6b0b8d68c551}:2.0", - "{725b1b9d-91b1-497d-917d-2a10441d56f5}:1.0", - "{725b1b9d-91b1-497d-917d-2a10441d56f5}:2.0", - "{0a2f7aae-ad9d-4cbd-ad12-73bafc410a2c}:1.0", - "{0a2f7aae-ad9d-4cbd-ad12-73bafc410a2c}:2.0", - "{9a37f1d6-d790-4afb-a690-0b61a4aa36a4}:1.0", - "{9a37f1d6-d790-4afb-a690-0b61a4aa36a4}:2.0", - "{960c40a0-4080-4646-aaac-da633f16969d}:1.0", - "helper@myshop.local:1.6", - "helper@myshop.local:1.7", - "helper@myshop.local:2.0", - "smart-contact@cynetcorp.com:1.0.1", - "smart-contact@cynetcorp.com:1.0.0", - "droplink@example.local:0.1.0", - "droplink@example.local:0.1.1", - "droplink@example.local:0.1.2", - "droplink@example.local:0.1.3", - "droplink@example.local:0.1.4", - "droplink@example.local:0.1.5", - "droplink@example.local:0.1.6", - "droplink@example.local:0.1.7", - "droplink@example.local:0.1.8", - "droplink@example.local:0.1.9", - "helper@myshop.local:1.8", - "{c448872b-58f9-413e-8e3d-650fe708448e}:2.0.3", - "{06d09a41-7ecd-429e-a6fa-87b0d1b2d5cc}:299", - "{06d09a41-7ecd-429e-a6fa-87b0d1b2d5cc}:1.0.298", - "searx@search.raccoon-catfish.ts.net:1.5.1", - "searx@search.raccoon-catfish.ts.net:1.5.2", - "{74cea24b-2430-4ead-aa34-298576e1a801}:1.1.2", - "{74cea24b-2430-4ead-aa34-298576e1a801}:1.2.0", - "{c4472fe5-55e1-4efb-86a7-f25fd1062228}:4.9.1", - "{c4472fe5-55e1-4efb-86a7-f25fd1062228}:4.9.0" - ] - }, - "schema": 1768826193594, - "key_format": "{guid}:{version}", - "stash_time": 1768847707582, - "id": "395264fe-307c-4173-9e7d-dcb89c0c6889", - "last_modified": 1768847793349 - }, - { - "stash": { - "blocked": [ - "{2809f7b9-522f-433f-aefa-1e98dd1e9528}:1.8.9", - "{2809f7b9-522f-433f-aefa-1e98dd1e9528}:1.9.1", - "{2809f7b9-522f-433f-aefa-1e98dd1e9528}:1.9.2" - ], - "unblocked": [], - "softblocked": [ - "no-google-redirect@1.0.0:1.0.0", - "{f24367d3-9c5e-457e-9e91-f69b11d26776}:1.0.0", - "{46cc18f3-9054-4edd-9441-102a1021b5d0}:1.0.5", - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:0.0.1", - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:1.0.1", - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:1.0.2", - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:1.0.3", - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:1.1.0", - "{62b0eac8-bb58-4cac-8396-7d1069e5b3f3}:1.1.1", - "sidebar-react-tailwind@example.com:1.1.2", - "export-credits@trendmicro.com:2.6.0", - "juhyuklee@shiftup.co.kr:1.0.2", - "juhyuklee@shiftup.co.kr:1.0.1" - ] - }, - "schema": 1768804589937, - "key_format": "{guid}:{version}", - "stash_time": 1768826107491, - "id": "cdba519f-a10e-4079-8086-dc502bb21db4", - "last_modified": 1768826193404 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "tumblr-dashboard-bookmark-highlighter@galli.local:1.0.0", - "tumblr-dashboard-bookmark-highlighter@galli.local:1.0.1", - "tumblr-dashboard-bookmark-highlighter@galli.local:1.0.2", - "tumblr-dashboard-bookmark-highlighter@galli.local:1.0.4", - "gitlabusercount@gitlabtools.toolsfake.com:1.2.0", - "nzherald-archive-redirect@local:1.1", - "nzherald-archive-redirect@local:1.2", - "nzherald-archive-redirect@local:1.3", - "chatutils@eridius.org:1.0.0", - "redirect@highspell.wiki:1.0", - "hello@margin.at:0.1.17", - "hello@margin.at:0.1.18", - "stream-director-pro-v@scaler.extension:1.0", - "stream@vw.extension:1.0", - "stream-director-pro@scaler.extension:1.0" - ] - }, - "schema": 1768782989846, - "key_format": "{guid}:{version}", - "stash_time": 1768804506661, - "id": "60e4c41c-c61f-4403-b808-66bbe2fdfb4c", - "last_modified": 1768804589840 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "bilingual-ard@jsonzilla.me:1.0.4", - "@pistarcallsignextractor:1.0", - "new-word-tab@graydesign:2.1.2", - "cookie-analyzer@vuridev.com:1.0.1", - "bandcamp-player-enhancer@extension.local:1.2.7", - "@newtab:1.1" - ] - }, - "schema": 1768761389518, - "key_format": "{guid}:{version}", - "stash_time": 1768782906751, - "id": "9926a95d-95a4-465c-bfb0-615dfd7b5e10", - "last_modified": 1768782989749 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "@attendance-eshtu:2.0", - "withes-extension@ict.withes.tech:1.8", - "{6bbbe977-5a10-4ea9-8beb-677b46a54577}:1.0", - "{c88d0b54-4359-4b6e-aacd-70a2d5355eb7}:1.0", - "{4a6f366e-9790-4466-b973-57cd27ca74f4}:1.0", - "Firefox-Price-Tracker@exzzy22:0.1.10", - "chim-chat@extension:2.16", - "chim-chat@extension:2.15", - "{7f3a9c2b-4444-4f1a-b5c6-303d1a8f4b85}:1.0.3", - "{7f3a9c2b-4444-4f1a-b5c6-303d1a8f4b85}:1.0.1", - "{7f3a9c2b-4444-4f1a-b5c6-303d1a8f4b85}:1.0.2" - ] - }, - "schema": 1768739789407, - "key_format": "{guid}:{version}", - "stash_time": 1768761306379, - "id": "168ae4c6-ab73-4a85-b569-d6b1a55d276c", - "last_modified": 1768761389241 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{b02f02ee-6a3f-4fd3-8dfb-9e667be793d0}:1.1", - "{eed75d16-644f-4d5e-a650-69052e8ad2ca}:0.1.1", - "{eed75d16-644f-4d5e-a650-69052e8ad2ca}:0.1.2", - "lilin.shao@qq.com:2.0", - "ryno-s-firefox@example.com:1.5.2", - "hunter-tool-internal@sorint.sec:1.0", - "support@cipherlayer.io:1.0.0", - "garmin-sleep-scraper@michele.dev:1.0" - ] - }, - "schema": 1768696579585, - "key_format": "{guid}:{version}", - "stash_time": 1768739706366, - "id": "389a3f06-2f02-496a-a7b0-f53bd3ca62ca", - "last_modified": 1768739789220 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "Android@bravenhancer.com:20.5.2", - "enhancer@goldenfox.com:20.6.2", - "{5dd0277f-e6bd-46de-9242-b4c007be9da5}:1.0", - "{5dd0277f-e6bd-46de-9242-b4c007be9da5}:2.0", - "gofile-download-control@example.com:3.0", - "gofile-download-control@example.com:2.0", - "english-filter@tu-usuario.com:1.1", - "chim-chat@extension:2.14", - "chim-chat@extension:2.13" - ] - }, - "schema": 1768674990717, - "key_format": "{guid}:{version}", - "stash_time": 1768696505243, - "id": "852b74e7-cf5b-4cbd-aaae-9b97ebb9ebe7", - "last_modified": 1768696579455 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "cloud-bookmark-firefox-r1@example.com:1.0.38", - "{7705f38d-341a-4ee5-a6d6-249cd456e552}:1.9.1", - "{7705f38d-341a-4ee5-a6d6-249cd456e552}:1.9.2", - "video-controller@example.com:1.1", - "video-controller@example.com:2.0.0", - "{1e413e83-d695-419b-a0e9-8d9274959fc9}:0.1", - "{1e413e83-d695-419b-a0e9-8d9274959fc9}:0.2", - "{1e413e83-d695-419b-a0e9-8d9274959fc9}:0.3", - "{1e413e83-d695-419b-a0e9-8d9274959fc9}:0.4" - ] - }, - "schema": 1768653391899, - "key_format": "{guid}:{version}", - "stash_time": 1768674906759, - "id": "a7003179-26c8-46f9-acd3-80a05023fb70", - "last_modified": 1768674990496 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "marklight@qiuhongsuccess.com:1.1.3", - "labo-scraper@yourdomain.com:1.0", - "{c71a74d3-c265-4916-ab36-3f1a167edb0c}:1.1", - "{c71a74d3-c265-4916-ab36-3f1a167edb0c}:1.2", - "pixtab@pixtab.extension:1.2", - "cycling-tryon@example.com:1.1.0", - "duolingo-anki-extension@mori23.dev:2.0.0", - "forum-assistant@jony-sokolov.ru:2.0.8" - ] - }, - "schema": 1768631791800, - "key_format": "{guid}:{version}", - "stash_time": 1768653308131, - "id": "0f8fc1d4-bdca-466f-a180-61a0c091269f", - "last_modified": 1768653391672 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{fbe7fcfc-24f9-4854-9182-34ada0d05711}:11.1.0", - "{f0a8c005-f8c9-417b-8a8a-1efdcec7334f}:1.0", - "reimbursement-helper@concur-extension:0.0.2", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:12.10", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:11.5.6", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:12.8", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:12.2", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:11.6", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:11.5.5", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:11", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.16.2", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.16.1", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.16", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.15.2", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.15", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.11", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.10", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:12.9", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.11.2", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.9.1", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.9", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.8.2", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.8", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.7.2", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.7", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.6.3", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.6.2", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.6.1", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.6", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.5.2", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.5.1", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.5", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10.1", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:10", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:9.5.1", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:9.5", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:9.0", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:8.1", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:8.0", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:7.9.1", - "{6a38461c-8a46-442f-ba3f-de76a3293411}:7.9", - "{0c395e4c-8a1c-4df8-af80-0035bcdfe42d}:1.0", - "{b7b9ed21-9b90-4e69-a22b-f74e345c11ad}:1.0", - "study-timer@local:2.3.0" - ] - }, - "schema": 1768610192259, - "key_format": "{guid}:{version}", - "stash_time": 1768631706731, - "id": "cd5a345c-bf21-4193-9937-48022de3b493", - "last_modified": 1768631791628 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "copy-TWE-info@bi.com.gt:1.0.4", - "copy-TWE-info@bi.com.gt:1.0.5", - "cyoa-assist@psculley3.gmail.com:1.1.3", - "{023f3b0e-f94b-4185-8f28-7df2932781fa}:2.2.9", - "{023f3b0e-f94b-4185-8f28-7df2932781fa}:2.3.1", - "{048b47da-972e-4fd3-9350-727e6248cf21}:1.0", - "{6dc0f794-6210-4c18-8cf6-d410e16b2515}:1.0", - "steamForBacklogged@cowokie:2.0", - "{321f4a8d-7bc8-4af8-b789-eebc1e0f30d2}:1.7.0", - "{18ff1f27-f7a8-4ccf-a0fa-96bc55a63705}:1.3.9", - "{18ff1f27-f7a8-4ccf-a0fa-96bc55a63705}:1.4.1", - "{366f0376-344e-4ad3-ac8a-5b5a6c8d1784}:1.0", - "filtro-dropdown@exemplo.com:1.0" - ] - }, - "schema": 1768588583749, - "key_format": "{guid}:{version}", - "stash_time": 1768610107347, - "id": "26cc5795-5b17-4607-905b-cfd7b872ca33", - "last_modified": 1768610192119 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "hv-tools@rxtx.pt:1.0.12", - "hv-tools@rxtx.pt:1.0.13", - "Bazaar@nchoremiot.com:2.5.38.1", - "{0b10a168-b0f4-45f2-840a-dab27a566b81}:1.0", - "{3d3dc5a8-9cf1-4ddd-8d68-19b451986254}:1.0", - "{6fcfbe86-e569-4247-be0a-2ad6cc70a59d}:11", - "site-search-link-opener@aaaaaaa.com:1.0.0", - "{c448872b-58f9-413e-8e3d-650fe708448e}:2.0.5", - "{0b863ad5-1180-4534-9335-f348f2830485}:3001.15.2" - ] - }, - "schema": 1768566990884, - "key_format": "{guid}:{version}", - "stash_time": 1768588506092, - "id": "469d1ab7-f143-4729-a83e-44d26908bdf4", - "last_modified": 1768588583612 - }, - { - "stash": { - "blocked": [ - "easyprint@easyprintapp.net:1.2", - "easyprint@easyprintapp.net:1.3", - "easyprint@easyprintapp.net:1.4", - "easyprint@easyprintapp.net:1.5", - "easyprint@easyprintapp.net:2.0", - "streamlivesnews@streamlivenews.com:1.0", - "streamlivesnews@streamlivenews.com:1.1", - "streamlivesnews@streamlivenews.com:1.3", - "onlineweatherforecast@onlineweatherforecast.net:1.0", - "onlineweatherforecast@onlineweatherforecast.net:1.1", - "transitschedules@transitschedules.net:1.0", - "placesnearme@placesnearme.org:1.0", - "placesnearme@placesnearme.org:1.1", - "convertfile@convertfile.ai:1.2", - "convertfile@convertfile.ai:1.3", - "trackyourorders@trackyourorders.net:1.0", - "loginsafley@loginonline.co:1.0", - "viewpdf_newvers@viewpdf.org:1.1", - "viewtemplates_newvers@viewtemplates.com:1.3", - "earthview360_newvers@earthview360.org:1.0", - "earthview360_newvers@earthview360.org:1.1", - "easydrivingdirections_newvers@easydrivingdirections.com:1.1", - "easydrivingdirections_newvers@easydrivingdirections.com:1.2", - "viewmanuals_newvers@viewmanuals.com:1.1", - "viewmanuals_newvers@viewmanuals.com:1.5", - "viewmanuals_newvers@viewmanuals.com:1.7", - "viewmanuals_newvers@viewmanuals.com:1.8", - "viewrecipes_aill@viewrecipes.net:1.5", - "viewrecipes_aill@viewrecipes.net:1.7", - "{35671959-00b7-4a35-8ef7-15ccb85ae0b9}:1.0", - "{6cfaa687-2cd4-4bb5-b42a-93b337b7c19d}:1.0", - "{a7f5bd39-dc46-4a18-ba6a-f3c7d57e0033}:1.0", - "{480be3d7-ec40-439d-aff7-58b046b43c28}:1.0", - "{9ea46e89-d635-4b43-83c2-bcf6d0f51e9a}:1.0", - "{d7035b29-e3b9-4cde-8ee5-bc5b0b0868c0}:1.0", - "{d6523caa-b90b-4e43-9231-03e7f8d1aa1c}:1.0", - "{9d44f21a-6c87-4484-a110-20598c4a59b5}:1.0", - "{5f488cad-9d5b-4f45-a749-e15113e11f48}:1.0", - "{5d4fef4c-1b2c-4687-9b7c-b1a92caffa92}:1.0", - "{46023b2e-32b9-4aa3-a72f-a7343435c961}:1.0", - "{8bf215e0-4cd2-45bb-a2bd-7641a24b262a}:1.0", - "{72864172-0078-493e-b147-1ab82cd42353}:1.0", - "{99183823-7c5c-42b2-aa00-f103caa76d99}:1.0", - "{42a71991-863e-40f7-a52f-4d056a4b02ec}:1.0", - "{16dd520a-e222-4053-8d5c-07bc854f1ba2}:1.0", - "{fdbf42b0-920a-4b59-9d08-8438832357c9}:1.0", - "{773bcc96-cd34-486b-8564-b6635789e4f2}:1.0", - "{4011c399-7979-47f1-9f95-3d4f7be49f79}:1.0", - "{f3badd56-a7f8-4a48-85bc-6fd77e0aff11}:1.0", - "{1fbaca9c-3546-4002-a2d9-7d376ae94418}:1.0", - "{5015dc6f-8115-4860-82a1-6b5a66430a1d}:1.0", - "{7f7d6d48-33c0-4750-ab94-555c697dd8e9}:1.0", - "{7d4fdd8b-a6d6-46df-bd6d-e1940abd821a}:1.0", - "{f2c33023-137e-425a-9ac1-40fb0431818a}:1.0", - "{e602a689-4848-4f75-82e1-ad06597a4cf1}:1.0", - "{6eb58bc3-5bcf-47d0-9d97-ceca83a586cf}:1.0", - "{3f69b6f5-861d-4877-9e93-abbd77f8353f}:1.0", - "{7a58ff65-1fc0-43c0-a351-4b14507f1d22}:1.0", - "{7c267434-aad1-41f9-af59-6ee00f364037}:1.0", - "{b551f823-e89e-4b1d-aa3a-3d44124fef22}:1.0", - "{6005b188-4606-433b-aa4c-39ecfce9030c}:1.0", - "{168d1b59-e353-48a3-a896-9cdf3d50cd51}:1.0", - "{550ebaeb-77aa-4140-bcfb-09aae2e7b2b5}:1.0", - "{9c33bf84-095c-4656-aac7-0e5a262658f1}:1.0", - "{1bdc3431-52ad-4837-b93c-ab9f2e95ca1a}:1.0", - "{95bc9b17-cf0a-43ac-83c9-b039bdb36ad4}:1.0", - "{8539418b-5635-4b68-992f-cb049b51e900}:1.0", - "{6b522a32-8ca3-4e5d-86d1-93ebb4ef68c6}:1.0", - "{6973833b-9ca7-4c6b-b0a2-e57d0f32b143}:1.0", - "{0afcdf1b-615d-4ebf-ad11-e263c7b8b04f}:1.0", - "{4550fc63-571d-4644-ac0c-0be83bbcdd77}:1.0", - "{9f38cbdf-e2a5-4256-97be-55a5a095f84e}:1.0", - "{e5ded49b-db98-4cd2-86e6-4ccbb0f88dfa}:1.0", - "{1d8b2775-a0cc-4461-9a08-dc3505f2ac87}:1.0", - "{cd966b42-8b65-4ba9-86a3-3deb8ca20d17}:1.0", - "{1dcf2f63-dd91-4420-bee2-dce224b87b52}:1.0", - "{626b09ab-4753-4fe0-b9cd-60746045cbae}:1.0", - "{91ef689e-8ff3-4133-bf8d-5d52716a69b3}:1.0", - "{207f65fd-5fae-4777-b0d1-8fcc448fe498}:1.0", - "{fd0674dc-5cdf-4b50-ab56-0c7c7ead693d}:1.0", - "{0d7fa241-d587-4f8b-98c1-4acab76d734b}:1.0", - "{6bf99fb3-b081-449c-9f6a-c793da5c5659}:1.0", - "{7402329a-9789-4c11-97e0-9f2108a55549}:1.0", - "{1375ba21-7913-45aa-bdca-400926e2e8f4}:1.0", - "{4869b892-c4af-49d3-bf6c-97a964addc70}:1.0", - "{51818b9a-397c-447c-95cb-a0911571eabc}:1.0", - "{1414adb7-8da5-4fa1-ad67-aad98b8d5154}:1.0", - "{b958747e-1e5a-40c4-aea9-6d90a3ddaabe}:1.0", - "{94a9de8b-fe4e-4448-ac7c-39838c719d80}:1.0", - "{6ab1ba24-3944-4a9a-ab72-ab3f73b3eac4}:1.0", - "{68ead0a9-f5b5-401e-b5eb-ae5ebb81ac31}:1.0", - "{2f3ee4af-a759-47a7-a6b8-1a254f0fad68}:1.0", - "{fe1a7fe1-1974-4bb8-8cae-343fff63c7a8}:1.0", - "{8c7081eb-210c-46bb-980e-2c4976170e8d}:1.0", - "{c498814f-eb02-4ff3-83d3-51cfb2af4939}:1.0", - "{6311b224-2203-4e0c-961b-1a7b5478b71b}:1.0", - "{a96f0e80-6487-42d5-bb19-855cd7477a3a}:1.0", - "{eba420f4-27f7-4938-af75-4374e995a5de}:1.0", - "{7bdc4568-73cb-43ba-a686-ac019d17e514}:1.0", - "{e596b83b-7ae1-490e-a7b7-3e9f5b8fe152}:1.0", - "{f1ead73b-ad2c-45d1-a649-8452e3fd2566}:1.0", - "{f8474e85-3ab5-4ee9-b925-5d8e634721ec}:1.0", - "{dd0d2e8e-143d-45f3-a80b-aa550e6518aa}:1.0", - "{4f92f0d5-5c8d-4016-b9f8-4790bf4105cc}:1.0", - "{eef535d8-d5af-44bd-b940-e44d15bd3ea1}:1.0", - "{b55e2fe5-647c-4bef-baba-cb1bc5159fca}:1.0", - "{a04acbb2-5787-4a09-9609-06d01b27577d}:1.0", - "{e1b75b03-2ea1-408a-a7d2-e96677052ab3}:1.0", - "{cf05d4bd-7eca-402e-be54-6f0a0bde1a96}:1.0", - "{27451ed8-e83a-4f39-a6e5-6a20155b8dae}:1.0", - "{5216aaf2-c4c7-4eb2-b377-35fd5e0719a3}:1.0", - "{0d9b58ff-7f9b-473e-b97b-46ad450929db}:1.0", - "{ca4182ef-ba0b-403e-951c-527d9f0817d0}:1.0", - "{8012aeae-abdd-4321-9b61-49a91407b2fa}:1.0", - "{ef6873bf-73f3-4e91-93d1-5826710a2525}:1.0", - "{0414b4da-e08c-45f0-b91c-af8f09cb0ec5}:1.0", - "{9f9c7d1f-c34d-4acc-9a9f-d0377cd6a832}:1.0", - "{78bd908e-256a-4023-befb-d54ab5434faf}:1.0", - "{6837d517-4cba-4244-bed7-e67310f62ea7}:1.0", - "{9861c6ed-36b4-4e85-a5ba-e4d8b646a517}:1.0", - "{5524e67b-0a7c-45bd-815f-9dcc8f9b05f7}:1.0", - "{8c5c190c-3248-40ad-8d8a-2e470f235b36}:1.0", - "{0ab8174e-f319-423d-a636-9b021b40e8d5}:1.0", - "{1b462efe-d68a-49a3-b0e0-5c9b77fa00ec}:1.0", - "{b3325a5a-143a-4aa4-8619-f0648dbd9817}:1.0", - "{293f19e2-db0f-4e57-b6ef-f14e413b713f}:1.0", - "{46d596c5-b0ba-48d0-897d-546988f4743b}:1.0", - "{5e566c91-8594-4c2e-a6ab-a7fdfa11463a}:1.0", - "{bfb98122-435d-4502-a40f-7764f0ab1b5b}:1.0", - "{85845107-5d4e-463e-90f2-58a7230fd666}:1.0", - "{ec717289-46d9-4d01-a6da-31f2f5404452}:1.0", - "{3afd9c3e-68dc-49ea-aaa2-314fa1c09646}:1.0", - "{eb6f414c-cff0-4369-94a5-337522e9e781}:1.0", - "{324658a2-1518-4fe2-aabd-714516b2cefc}:1.0", - "{84bb1d60-103f-4319-966c-873ea8654522}:1.0", - "{37129088-e4f2-4703-a62e-32e03117b231}:1.0", - "{4d10e571-7c5d-420d-a3cd-7bb88786f252}:1.0", - "{a54792d8-8693-4077-9e18-af96a5d23bc1}:1.0", - "{ceeae327-fd59-4220-9374-3322122e6cda}:1.0", - "{b6ba6cf7-0fde-4546-8743-61744b91cb42}:1.0", - "{5d1947a5-707b-47c3-8ba8-610ef527838d}:1.0", - "{225fd693-3cdb-4649-a187-cf2d434e5610}:1.0", - "{bb96bffa-534d-42b5-b4f4-037ccb775e3f}:1.0", - "{04fe272f-78b5-4ba3-9304-d19d9607a8af}:1.0", - "{c1f425ea-89b2-47c3-9d2d-fd113e42e7b8}:1.0", - "{432583db-ff88-4ab0-8c0b-10e9652d89f4}:1.0", - "{0200f8bd-69ea-47c6-a768-73cacb388e36}:1.0", - "{e57e0cce-0bab-4518-b0a4-48fd64b4a61b}:1.0", - "{596bf04f-3061-485e-bf13-06ccea63d9aa}:1.0", - "{afacec84-4de9-44bb-a0e8-b6db8364f5fe}:1.0", - "{5f284ee6-4853-4421-a78b-6816d04c6bcb}:1.0", - "{5813b9c9-caa9-4322-8169-ea89df40689b}:1.0", - "{8ba8847d-e765-432a-a604-017d5a6e0a47}:1.0", - "{26d2a279-79c1-408f-87a6-6603cfae8b97}:1.0", - "{92932b12-1e22-4751-8d8c-916452c2b397}:1.0", - "{cb151d5f-b2b5-4e5a-8ba6-270fe7ea4393}:1.0", - "{1a689891-6236-4db9-b652-ab63a49c8042}:1.0", - "{deb4c859-e7d3-48a9-8db4-8131cbadf50e}:1.0", - "{47c7df6d-319f-4ced-9475-0a27b92f70dc}:1.0", - "{fc686991-f16b-4d54-9e67-6a889b240500}:1.0", - "{e69d4399-35cf-4364-a129-01c49b1ce3b8}:1.0", - "{ffd788fd-de47-449a-8495-5511dcac5131}:1.0", - "{310ecb07-9527-47b0-bccc-ea65da1d114d}:1.0", - "{764772d5-93fc-42b9-aada-98cb5c86c7e0}:1.0", - "{ff95ec67-0ad2-43cf-9cad-40db6bd0f10b}:1.0", - "{1bf72391-afd0-4d44-906e-06a192ecccbf}:1.0", - "{29e6fa63-7403-4831-ab42-6d5008c355d3}:1.0", - "{bb54f980-f728-451f-82dc-a971d3fc894e}:1.0", - "{a47b7119-c6fc-476c-bd10-9d11a203f8ea}:1.0", - "{d60a35cb-f16c-409d-81e9-44d4d9cab0c8}:1.0", - "{fb01dc1a-f853-4766-a2ec-a872a0619c8a}:1.0", - "{74c6a0bc-fdcb-4cca-939a-9f0e0f54e1eb}:1.0", - "{888d1e21-49af-4c01-a07c-8799a40f1f28}:1.0", - "{77d9c641-29e1-49a8-ba0a-9fc140a1abb4}:1.0", - "{3491bc97-dd60-437f-a3f3-6832c4e94cac}:1.0", - "{95474ac5-94b9-4d57-9698-5397b6bea25f}:1.0", - "{5c610a18-8ca5-46e5-9760-982d06577060}:1.0", - "{fe0357fb-b401-4385-9af6-06b667570b5c}:1.0", - "{69535402-70a7-487c-8853-c05e520bbc8d}:1.0", - "{a9253665-a983-400b-bf5b-c7ab441b8315}:1.0", - "{9b7e02bd-c612-41f2-ac0a-f0d0bbc3907e}:1.0", - "{20b1ab38-b2ce-457c-b000-6c0fa95841a7}:1.0", - "{990316cd-b787-45be-9c85-2890ffbe9cd5}:1.0", - "{950c155d-6c44-4d05-9380-ed288df1f73f}:1.0", - "{1c028efe-3c40-4551-baa3-23223fb0ff82}:1.0", - "{cc681388-95b0-45ed-9b88-48a2b876ab62}:1.0", - "{7b3bdf94-734b-42ca-9c9f-5a6d0531d3c8}:1.0", - "{24649fca-a305-4b56-a458-3343b9ac2711}:1.0", - "{6d2d7044-3a0e-48e1-8b72-bb5a135bea8c}:1.0", - "{c15e8548-38b9-4fd1-b03e-11037f7954c6}:1.0", - "{dbb27ce5-edb2-4f47-ab9a-a11b3b5551ca}:1.0", - "{d21db038-13d1-4b6e-9f33-10bdf6bced0c}:1.0", - "{a29ac4aa-da19-46a4-9dbd-37e6ce80715e}:1.0", - "{b36898e3-d2a4-46d1-bf9f-dc8c4e881374}:1.0", - "{a5e94ab6-945d-4c49-a5a7-5bd3ee789fa2}:1.0", - "{62874236-6822-4e77-8bbf-d0f8f869c641}:1.0", - "{b23a3841-0f96-4d41-a05f-ceeaf361fe15}:1.0", - "{2406950a-6ddd-4cbd-85ca-06a2b0fc44e6}:1.0", - "{720276be-5524-49de-980f-e9e858fdcf4b}:1.0", - "{807cf134-79dc-487d-9024-804a2d203f38}:1.0", - "{00ce1915-e96f-4b54-ac79-bbcb78cb5440}:1.0", - "{4474f369-ab31-43fa-998f-4be21450efdb}:1.0", - "{044961c3-a013-4959-865e-64ead16937fe}:1.0", - "{3ea25900-8edb-428b-9abf-134b5fcf5346}:1.0", - "{479ce77f-bcb4-4040-88e9-86e33f56cefb}:1.0", - "{a6398b8f-1406-4484-90d4-9ef9d707636d}:1.0", - "{c42fae61-9d6c-4d44-ba26-b72e32caf25b}:1.0", - "{0ad3016c-ec60-4794-832b-8751e26be29a}:1.0", - "{bfd7ec72-41bd-4e1c-b636-13f1266dc94a}:1.0", - "{15bb6a77-2a4d-4c19-b904-3e1e603cef70}:1.0", - "{a393ec80-f53f-4a29-be8d-95c397931061}:1.0", - "{00a933be-37f1-495c-9259-37279b3f3135}:1.0", - "{68e00ea7-ee7a-45fc-87eb-e1559536ae6c}:1.0", - "{b7e7e1e5-71f9-43e4-a2dc-fbd23f96897b}:1.0", - "{03827721-529b-4eed-8cb3-6be63ae6bb51}:1.0", - "{8aacf4fd-f0e8-4dea-8ae6-a713304bf886}:1.0", - "{dc875bd4-8436-47d6-9524-8a66e73ce1a4}:1.0", - "{733b195e-003a-4e18-92c4-92805f6ec647}:1.0", - "{927f10c5-17e0-434d-9021-81daccf54223}:1.0", - "{1364fac7-f398-4e2b-8a9a-7b1a007f403e}:1.0", - "{06be3fac-fc92-4ead-bdea-f973bf5f8e79}:1.0", - "{d8d09afb-3dfe-48b1-938f-203dfd991534}:1.0", - "{4f88473e-fdde-42b1-b288-f91254e6016d}:1.0", - "{09ff3d2d-a92e-474d-a832-38e1d66eb693}:1.0", - "{4d9d71aa-83d2-48a0-a5a6-d61989650875}:1.0", - "{6873c040-67f3-42a3-9824-9174c80c24c8}:1.0", - "{82fbdb7c-4203-4e42-b7da-5c1b7a8194bb}:1.0", - "{e24f3b8d-458f-42b1-8de3-ee7f624a8dbd}:1.0", - "{59d6defd-f78e-49cd-8af8-d36d47736011}:1.0", - "{5cbb03e9-7d19-4c08-b5cb-0d0425521aca}:1.0", - "{7120bc25-982b-423a-b0f3-8c3f31722dfa}:1.0", - "{4680dfef-5239-4365-b046-6a007a6fdd89}:1.0", - "{b71869c4-60d1-488e-8a60-bb4a9a7564fd}:1.0", - "{9d64536a-c765-434d-a29d-ea1888caecfc}:1.0", - "{7e63b5a6-def8-41b8-9921-4d2f44c969c2}:1.0", - "{f0affe03-c7dd-4eb0-81fb-4374b282e405}:1.0", - "{58f2060f-a63c-4b74-8604-f8f18b316e54}:1.0", - "{25f05348-3b73-48b2-a9ce-1c255a9c9a37}:1.0", - "{8bdc0833-299c-42f3-adf3-3aba5ed6111e}:1.0", - "{042a5835-8973-4afd-8df6-33725d91daec}:1.0", - "{d0a9b23b-7971-472f-8306-b4f3463fc9a3}:1.0", - "{0127072c-b810-49bb-bced-7593d8984562}:1.0" - ], - "unblocked": [], - "softblocked": [ - "chinagate-echo666@chinagate.online:2.0.0", - "{5443487c-f5a8-4e1f-9aeb-49a9d934aed1}:1.0", - "{65f6cb15-ea73-4675-b56d-cee79eedd1c1}:1.0.2", - "{65f6cb15-ea73-4675-b56d-cee79eedd1c1}:1.0.1", - "{65f6cb15-ea73-4675-b56d-cee79eedd1c1}:1.2", - "web@golo.vin:1.7.4", - "{2fa42d77-7f3c-429d-984b-94bfcefd1d87}:1.0", - "translate-and-save@al2718x:0.0.11", - "raic_dev@proton.me:0.1", - "tab-renamer@leaver.me:1.0.0", - "tab-renamer@leaver.me:1.0.1", - "forum-assistant@jony-sokolov.ru:2.0.7" - ] - }, - "schema": 1768545393358, - "key_format": "{guid}:{version}", - "stash_time": 1768566906288, - "id": "0b09be35-4c8e-4a75-8ba5-da8423de6f42", - "last_modified": 1768566990759 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "hv-tools@rxtx.pt:1.0.11", - "chinagate-sales@chinagate.online:1.0.7", - "chinagate-sales@chinagate.online:1.0.5", - "forum-assistant@jony-sokolov.ru:2.0.6", - "chinagate-sales-echo666@chinagate.online:1.0.9", - "chinagate-sales-echo666@chinagate.online:1.0.8", - "{59b3e264-9334-4eb1-b5e7-65c669766b11}:1.3", - "{0836ca14-dd1d-4eef-86cd-f794ba063e0d}:1.0", - "{0836ca14-dd1d-4eef-86cd-f794ba063e0d}:1.1" - ] - }, - "schema": 1768523791841, - "key_format": "{guid}:{version}", - "stash_time": 1768545307523, - "id": "12e27db5-2f16-44fd-ab88-6a0815a061ee", - "last_modified": 1768545393181 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "Bazaar@nchoremiot.com:2.5.37.1", - "Bazaar@nchoremiot.com:2.5.36", - "Bazaar@nchoremiot.com:2.5.37.2", - "SASTweaks@rci.rogers.com:0.3.0", - "{e80494f4-2ac2-416c-a720-39af282f2441}:12.82", - "{e80494f4-2ac2-416c-a720-39af282f2441}:12.83", - "{e80494f4-2ac2-416c-a720-39af282f2441}:15.404.3", - "{e80494f4-2ac2-416c-a720-39af282f2441}:15.404.5", - "{e80494f4-2ac2-416c-a720-39af282f2441}:15.404.6", - "{8fdea742-9b86-4c1f-a79b-e8b5c6aa21e7}:7.1", - "{8fdea742-9b86-4c1f-a79b-e8b5c6aa21e7}:7.2", - "{8fdea742-9b86-4c1f-a79b-e8b5c6aa21e7}:6.9", - "{8fdea742-9b86-4c1f-a79b-e8b5c6aa21e7}:6.3", - "{8fdea742-9b86-4c1f-a79b-e8b5c6aa21e7}:6.8", - "kurabu-ausweis@bremen1860.de:1.0.0", - "securecrt-launcher@autozone.com:2.0.2", - "securecrt-launcher@autozone.com:1.0.4", - "better-error-log@justbax.uz:1.0.1", - "forum-assistant@jony-sokolov.ru:2.0.2", - "forum-assistant@jony-sokolov.ru:2.0.5", - "{517c58a8-95f9-467a-9f03-2d273654cdf8}:0.14.0", - "hv-tools@rxtx.pt:1.0.9", - "hv-tools@rxtx.pt:1.0.10", - "mosa.albedre6@gmail.com:1.1" - ] - }, - "schema": 1768502189961, - "key_format": "{guid}:{version}", - "stash_time": 1768523706211, - "id": "28f240d6-1ddc-4c08-9e03-a92e04e11d87", - "last_modified": 1768523791637 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "editorseguro-observaciones2@asisa.co:1.4.1", - "editorseguro-observaciones@asisa.co:1.4.1", - "editor-safemode@example.com:1.1", - "editor-seguro-asisa-obs@asisa.internal:1.4.1", - "ai-study-assistant@deepseek.user:1.2.5", - "ai-study-assistant@deepseek.user:1.2.2", - "priceradar@priceradar.cloud:6.85.10", - "priceradar@priceradar.cloud:6.85.11", - "priceradar@priceradar.cloud:6.85.23", - "priceradar@priceradar.cloud:6.85.12", - "priceradar@priceradar.cloud:6.85.14", - "priceradar@priceradar.cloud:6.85.22", - "open2ch@db3.so-net.ne.jp:0.2.2", - "open2ch@db3.so-net.ne.jp:0.2.1", - "ai-prompt-helper@manus.ai:1.0.0", - "{cf11117a-21cb-406d-bf0b-62d37aaf2874}:1.14", - "{cf11117a-21cb-406d-bf0b-62d37aaf2874}:1.15", - "{728d4e99-b1f6-4125-8376-a1b2c3d4e5f6}:1.0", - "{728d4e99-b1f6-4125-8376-a1b2c3d4e5f6}:1.1", - "morohoschidanieli@gmail.com:1.0.1", - "space-game-debugger@diego.local:1.5", - "{32343d46-c4e4-4afe-b26c-f9f94c139437}:1.0", - "{9f5cd67c-606f-41b8-99e2-a2816dc10209}:1.0" - ] - }, - "schema": 1768480589720, - "key_format": "{guid}:{version}", - "stash_time": 1768502106998, - "id": "d3285f06-f9d3-46c8-a65b-af409881b94f", - "last_modified": 1768502189864 - }, - { - "stash": { - "blocked": [ - "{3d65ca6d-c349-4c9d-b32c-b3734861d43e}:4.8.6", - "{3d65ca6d-c349-4c9d-b32c-b3734861d43e}:4.8.7", - "{3d65ca6d-c349-4c9d-b32c-b3734861d43e}:4.8.8", - "{f0e18123-9203-4b16-abf5-81b81946155e}:5.4.2", - "{f0e18123-9203-4b16-abf5-81b81946155e}:5.4.3", - "{f0e18123-9203-4b16-abf5-81b81946155e}:5.4.5", - "initio@addon.org:0.1.5" - ], - "unblocked": [], - "softblocked": [ - "{a57096a0-5cb5-451b-b787-4140d5ba4448}:1.5.4", - "priceradar@priceradar.cloud:6.85.16", - "priceradar@priceradar.cloud:6.85.17", - "priceradar@priceradar.cloud:6.85.18", - "priceradar@priceradar.cloud:6.85.19", - "priceradar@priceradar.cloud:6.85.20", - "kick-chat-toggle@kick.com:1.0", - "Black7adder@gmail.com:1.6", - "{c466efb2-3aae-4b8d-ba13-ff210dab4bf7}:2.0.22062.1", - "{c466efb2-3aae-4b8d-ba13-ff210dab4bf7}:2.0.22144.1", - "{c466efb2-3aae-4b8d-ba13-ff210dab4bf7}:2.1.22277.1", - "sub-reader-b-voicevox@your-unique-id.com:1.0.0", - "sub-reader-c-voicevox@your-unique-id.com:1.0.0", - "sub-reader-d-voicevox@your-unique-id.com:1.0.0", - "magnolia@12.34:4.2.8.1" - ] - }, - "schema": 1768458981071, - "key_format": "{guid}:{version}", - "stash_time": 1768480506788, - "id": "1bd52fc5-9779-48fc-8323-57fe43a8538f", - "last_modified": 1768480589514 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{7c6a4b6f-4c2f-4a3d-8a9b-5c1f2b9d1e77}:2.0", - "{7c6a4b6f-4c2f-4a3d-8a9b-5c1f2b9d1e77}:1.5.3", - "{7c6a4b6f-4c2f-4a3d-8a9b-5c1f2b9d1e77}:1.5.5", - "{7c6a4b6f-4c2f-4a3d-8a9b-5c1f2b9d1e77}:1.5.2", - "eye-extensions@eye.com:1.0.0", - "eye-extensions@eye.com:1.0.1", - "eye@tianji.com:1.0.1", - "eye@tianji.com:1.0.2", - "contact@pokerayou.info:1.0.2", - "contact@pokerayou.info:1.0.1" - ] - }, - "schema": 1768437381668, - "key_format": "{guid}:{version}", - "stash_time": 1768458905457, - "id": "e05cb8ee-33b8-45cd-b921-25195bee7c5d", - "last_modified": 1768458980897 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "addon@idriss-crypto.com:0.1.2", - "addon@idriss-crypto.com:0.1.5", - "addon@idriss-crypto.com:0.3.0", - "addon@idriss-crypto.com:0.3.1", - "addon@idriss-crypto.com:1.0.2", - "addon@idriss-crypto.com:1.0.3", - "addon@idriss-crypto.com:1.0.4", - "addon@idriss-crypto.com:1.0.5", - "addon@idriss-crypto.com:1.0.6", - "addon@idriss-crypto.com:1.0.7", - "{2500983d-3c64-46ae-87cc-c95e865ad16b}:1.1", - "{39f44523-4b88-4d95-b7d0-7b7db15d62f4}:1.0", - "{39f44523-4b88-4d95-b7d0-7b7db15d62f4}:2.0", - "image-downloader@ozler365:14.9", - "youtube-perplexity-buttons@huseyinfurkankiziloglu1.gmail.com:1.0.0", - "network-support.gtus@betmakers.com:1.1", - "{a8c60439-b92d-4982-b848-b3faff490544}:1.0", - "{50114083-b404-45a6-8af8-28eae06d6d45}:1.0", - "chim-chat@extension:2.9", - "chim-chat@extension:2.11", - "pagepulse@addon.com:1.0", - "hv-tools@rxtx.pt:1.0.7", - "hv-tools@rxtx.pt:1.0.8", - "dwd-taf-monitor@schoenebeckm:1.2", - "dwd-taf-monitor@schoenebeckm:2.1", - "dwd-taf-monitor@schoenebeckm:1.3", - "dwd-taf-monitor@schoenebeckm:1.4", - "dwd-taf-monitor@schoenebeckm:1.5", - "dwd-taf-monitor@schoenebeckm:1.6", - "dwd-taf-monitor@schoenebeckm:1.7", - "dwd-taf-monitor@schoenebeckm:1.8" - ] - }, - "schema": 1768415789487, - "key_format": "{guid}:{version}", - "stash_time": 1768437305625, - "id": "3a5020e6-24e7-4888-bb12-f4ae08651e0f", - "last_modified": 1768437381496 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "buscaid@seudominio.com:2.5.1", - "viretta@truth.interface:4.2.8", - "priceradar@priceradar.cloud:6.85.9", - "priceradar@priceradar.cloud:6.85.1", - "priceradar@priceradar.cloud:6.85.2", - "priceradar@priceradar.cloud:6.85.3", - "priceradar@priceradar.cloud:6.85.5", - "priceradar@priceradar.cloud:6.85.7", - "priceradar@priceradar.cloud:6.85.8", - "{99c2c493-40f3-477a-9cf5-3368c4ed3a72}:1.0", - "Pwn@kasem545.github.io:1.2.0", - "67016c9f-14a9-4f0b-8e2b-c7b464acad3e@example.com:1.0", - "youtube-theme-pro@example.com:1.2.1.4", - "barnabas.kamilly@vodafone.com:1.0", - "2fdc6cdb-d239-410a-a23e-05a861bad635@example.com:1.0", - "admincore-vpn@admincore.org:2.0.0", - "csv-tracker-test@example.com:0.1" - ] - }, - "schema": 1768394192613, - "key_format": "{guid}:{version}", - "stash_time": 1768415706832, - "id": "a556f619-9e71-4816-bc05-7ea1a55e52cd", - "last_modified": 1768415789288 - }, - { - "stash": { - "blocked": [ - "{63ce3427-167c-404c-8c6c-602dac1f61b7}:1.0", - "{63ce3427-167c-404c-8c6c-602dac1f61b7}:109.32", - "{db1c726d-f1c9-4961-8373-47adf1a4c3b5}:1.0", - "{db1c726d-f1c9-4961-8373-47adf1a4c3b5}:3.2.4", - "{5f3696b8-80bc-4fa1-a9f7-c18b64749faa}:5.6.0", - "{5f3696b8-80bc-4fa1-a9f7-c18b64749faa}:5.6.1", - "{95106873-05bb-4cf4-bd4d-4423c3ff56aa}:5.3.7", - "{95106873-05bb-4cf4-bd4d-4423c3ff56aa}:5.3.8", - "{95106873-05bb-4cf4-bd4d-4423c3ff56aa}:5.3.9", - "{381e2858-65da-44c8-a3cf-224a3f4ef887}:2.6.4", - "{381e2858-65da-44c8-a3cf-224a3f4ef887}:2.6.5", - "{381e2858-65da-44c8-a3cf-224a3f4ef887}:2.6.6", - "{381e2858-65da-44c8-a3cf-224a3f4ef887}:2.6.7", - "{2925a488-ebaf-48d0-b059-39d2b29aa783}:1.0", - "{2925a488-ebaf-48d0-b059-39d2b29aa783}:2.0", - "{c7615d09-13b2-4a8a-b5ea-e85fcd88994f}:1.0", - "{c7615d09-13b2-4a8a-b5ea-e85fcd88994f}:2.0", - "{086496b8-5849-4286-b4fb-b6c0903105b3}:1.0", - "{086496b8-5849-4286-b4fb-b6c0903105b3}:2.0", - "{a83ca2f1-6c40-416b-952a-6a4caa814036}:1.0", - "{a83ca2f1-6c40-416b-952a-6a4caa814036}:2.0", - "{17d18343-d020-4fe3-88e8-66a6934613c7}:1.0", - "{17d18343-d020-4fe3-88e8-66a6934613c7}:2.0", - "{650d1ff8-f601-4ebf-9e68-e21aacf89b92}:1.0", - "{650d1ff8-f601-4ebf-9e68-e21aacf89b92}:2.0", - "{cfd20493-406f-4ccf-8452-c941a7dcb10f}:11.1.0", - "{06b670cb-b64b-4ab0-92cb-f918495eb044}:11.1.0", - "{024a974b-dbe5-4d4c-b141-83be0ffea8fa}:1.0", - "{024a974b-dbe5-4d4c-b141-83be0ffea8fa}:2.3", - "{024a974b-dbe5-4d4c-b141-83be0ffea8fa}:11.3", - "{024a974b-dbe5-4d4c-b141-83be0ffea8fa}:1091.3", - "{024a974b-dbe5-4d4c-b141-83be0ffea8fa}:1095.3", - "{7cdece7f-00fa-41a1-a1ac-bbef57e0c962}:1.0", - "{7cdece7f-00fa-41a1-a1ac-bbef57e0c962}:301.15.2" - ], - "unblocked": [], - "softblocked": [ - "MinYT@example.org:9.0.4", - "{8ae6475f-8082-4e86-b55a-994aad3f7c12}:1.0.20", - "{8ae6475f-8082-4e86-b55a-994aad3f7c12}:1.0.27", - "tabme-like@carat.de:0.3.3", - "darkfilter@nikitka2k11.example.com:1337.0", - "ldcnohnnlpgglecmkldelbmiokgmikno@chrome-store-foxified-297124389:4.0.7", - "addon@trashmail.com:7.2.4", - "{d7a1626d-fe85-4aef-b8f9-7b28709b4165}:2.3.0", - "{401eb9fa-c372-4686-a774-0de196215737}:2.3.4", - "{e0c04942-b9d5-4619-a0a8-19f1eed0907a}:2.0.22062.1", - "{e0c04942-b9d5-4619-a0a8-19f1eed0907a}:2.0.22144.1", - "{e0c04942-b9d5-4619-a0a8-19f1eed0907a}:2.1.22277.1", - "technopatai-ai-asistan@atakan.dev:1.0.0", - "chim-chat@extension:2.10", - "eye-extensions@tianji.com:1.0.0", - "eye-extensions@tianji.com:1.0.1", - "eye-extensions@tianji.com:1.0.2", - "download-package@tianji.com:0.0.0", - "eye-extensions1@tianji.com:1.0.0", - "{6ab1a57b-2b1c-4c8f-a397-49ce2937d723}:4.63", - "{19081191-3f2a-4a52-9944-bdc2f392e9f1}:2025.2.21" - ] - }, - "schema": 1768372592742, - "key_format": "{guid}:{version}", - "stash_time": 1768394106490, - "id": "b7a7f547-4f10-446a-873e-4bdf962f015a", - "last_modified": 1768394192458 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{7d9b7c71-2616-4f43-b08e-4afb9c81a40a}:1.0", - "kbnn-tra-cuu@mydomain.com:1.3.7", - "kbnn-tra-cuu@mydomain.com:1.3.7.1", - "kbnn-tra-cuu@mydomain.com:1.3.7.2", - "kbnn-tra-cuu@mydomain.com:1.3.7.4", - "kbnn-tra-cuu@mydomain.com:1.3.7.5", - "chim-chat@extension:2.6", - "chim-chat@extension:2.7", - "chim-chat@extension:2.8", - "{3d808b4f-3422-425d-8b40-4bf9330fd6e3}:1.0", - "{b6a47c8f-90cf-4dc0-85fa-a57b81aaa50b}:2.2.1", - "kinozalhelper@elektrikis.id.lv:3.8.1", - "kinozalhelper@elektrikis.id.lv:3.8.2", - "kinozalhelper@elektrikis.id.lv:3.8.3", - "admincore-vpn@admincore.org:1.0.0", - "yang-profile-popup@example.com:1.0.4", - "garment-checker@thiha.com:4.0.0", - "animeplanet-additions@sandelier.com:2.0.4" - ] - }, - "schema": 1768350991442, - "key_format": "{guid}:{version}", - "stash_time": 1768372506281, - "id": "5a6a40ef-34dc-4940-b7a8-692ec767d20e", - "last_modified": 1768372592491 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "eappext@rainnsoft.com:0.0.1", - "diba103@tab-pin:0.0.1", - "{c5e2fb1f-0060-4a23-ab22-9f8bf32941e8}:1.0", - "ingeniousbirds@proton.me:0.0.0.6", - "{a992c867-377e-4a14-bf66-06f61ad299fe}:1.0", - "{1c0575dc-870a-4ecc-a555-713bdeded888}:1.0", - "chim-chat@extension:2.5", - "chim-chat@extension:2.4", - "chim-chat@extension:2.3" - ] - }, - "schema": 1768329389678, - "key_format": "{guid}:{version}", - "stash_time": 1768350906155, - "id": "1f9f2cdf-0409-4005-87e9-924f62b43428", - "last_modified": 1768350991168 - }, - { - "stash": { - "blocked": [ - "{2ba4590a-e59c-49cc-b7d2-5cfa71a9df8e}:1.0", - "{37546f25-64a3-4e73-ad1e-ca60e8180e67}:1.0", - "{05f15149-2025-4135-b58e-936746cda3f1}:1.0", - "{05f15149-2025-4135-b58e-936746cda3f1}:109.3", - "{722e7e77-61e8-4c9e-b2da-6cb0e475d8dc}:1.0", - "{722e7e77-61e8-4c9e-b2da-6cb0e475d8dc}:1.3", - "{722e7e77-61e8-4c9e-b2da-6cb0e475d8dc}:32.7.1", - "{722e7e77-61e8-4c9e-b2da-6cb0e475d8dc}:1231.3", - "{722e7e77-61e8-4c9e-b2da-6cb0e475d8dc}:3333.4", - "{722e7e77-61e8-4c9e-b2da-6cb0e475d8dc}:16666.4", - "{722e7e77-61e8-4c9e-b2da-6cb0e475d8dc}:17000.4" - ], - "unblocked": [], - "softblocked": [ - "slush@slushsui2.dev:0.1.1", - "goe-attainia-integration@goenergistics.com:1.0.0", - "ai-menu@exam2222ple.com:1.0", - "{17e88b83-99ed-49ee-9395-945821ce2cda}:2.0.22062.1", - "{17e88b83-99ed-49ee-9395-945821ce2cda}:2.0.22144.1", - "{17e88b83-99ed-49ee-9395-945821ce2cda}:2.1.22277.1", - "{17e56df6-3f52-4fba-85df-3953aa715c10}:2.0.22062.1", - "{17e56df6-3f52-4fba-85df-3953aa715c10}:2.0.22144.1", - "{17e56df6-3f52-4fba-85df-3953aa715c10}:2.1.22277.1", - "{ac373c6d-36b1-45f2-a34b-65aa715e7d3c}:1.0", - "{ac373c6d-36b1-45f2-a34b-65aa715e7d3c}:2.0.0", - "{836fd847-2bda-499a-825b-7301d7d1769c}:1.0", - "{836fd847-2bda-499a-825b-7301d7d1769c}:2.0", - "{60b64c73-06da-41c4-9eb2-b4a614cd84db}:1.0", - "{60b64c73-06da-41c4-9eb2-b4a614cd84db}:2.0", - "{ed802f99-7ba2-482d-b96f-cb9dffe2b01a}:1.0", - "{ed802f99-7ba2-482d-b96f-cb9dffe2b01a}:2.0", - "{3b3619f8-5fab-4a9c-b94b-aa4b54296a4b}:1.0", - "{3b3619f8-5fab-4a9c-b94b-aa4b54296a4b}:2.0", - "{41988268-e9f3-4f5d-b5f9-31a1b7b4fbc0}:1.0", - "{41988268-e9f3-4f5d-b5f9-31a1b7b4fbc0}:2.0", - "{83014e62-7faf-4e62-a208-b943a62510d9}:1.0", - "{83014e62-7faf-4e62-a208-b943a62510d9}:2.0", - "websummarize2notion@example.com:3.5", - "amazon-takipci-v5@gemini.local:12.6", - "{70e1944c-722b-4c7f-956c-004f7e24f008}:1.0", - "{70e1944c-722b-4c7f-956c-004f7e24f008}:2.0" - ] - }, - "schema": 1768307792908, - "key_format": "{guid}:{version}", - "stash_time": 1768329307029, - "id": "07b849b3-1547-4f34-b4a8-6780d206a7c7", - "last_modified": 1768329389519 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{06825226-7d24-4ffc-8862-c4befe4f82bd}:1.0", - "office-connector-v3@birthsupportbd.xyz:1.3", - "{774584fa-54e2-437a-bf27-104f2bc04807}:1.32", - "adamas.koff@yandex.ru:3.5", - "{da0dd7de-4d69-4079-b996-5b6088b34fbb}:2.0.64", - "{2679a16c-771a-4823-a9c3-33131fbc75ee}:2.0.64", - "{b6874cb7-8ece-43ad-8180-e3f7de48416a}:2.0.64", - "cartinel@cartinel.app:1.2.0", - "cartinel@cartinel.app:1.3.1", - "cartinel@cartinel.app:1.3.3", - "SuperDrag@qiannian.com:3.8.2", - "{75f06b56-4cc5-4c20-aa5e-6ccf5b0ad6fd}:2.0.64", - "dot-extension@parity.io:0.1.0", - "SuperDrag@qiannian.com:3.8.3", - "{2a03adba-b51d-4f92-8c63-a7adf2572d98}:220260112.2" - ] - }, - "schema": 1768286191551, - "key_format": "{guid}:{version}", - "stash_time": 1768307706895, - "id": "a311be2f-43a6-45cc-96cd-97a588744c48", - "last_modified": 1768307792733 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{774584fa-54e2-437a-bf27-104f2bc04807}:1.31", - "sis-courseforum-linker@yourdomain.com:1.3", - "kbnn-tra-cuu@mydomain.com:1.3.7.3", - "youtube-volume-normalizer@murahito130.co.jp:3.0.1", - "youtube-volume-normalizer-dev@murahito130.co.jp:3.0.1", - "emailai@sitcdinhvu.vn:1.1.4", - "{a1b2c3d4-e5f6-4a5b-8c9d-e1f2a3b4c5d6}:1.6", - "{a1b2c3d4-e5f6-4a5b-8c9d-e1f2a3b4c5d6}:1.7" - ] - }, - "schema": 1768264594872, - "key_format": "{guid}:{version}", - "stash_time": 1768286106545, - "id": "a92eea01-eedd-48f1-8422-e92e9b1d4587", - "last_modified": 1768286191310 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{1cb243bb-f736-4cbd-a4d3-220396c0cc1a}:1.0", - "{ebd57e35-a0c1-4fa1-85c7-73026e8bdc15}:1.0", - "{43065e13-181a-48da-98b4-f976ca462d2f}:1.0", - "snipper@heiko.dev:0.1.0", - "socks5-switcher@dein-name.addon:1.0", - "socks5-switcher@dein-name.addon:2.0", - "socks5-switcher@dein-name.addon:2.1", - "socks5-switcher@dein-name.addon:2.3", - "chim-chat@extension:2.2", - "{97e9c08a-78aa-4351-b5d7-1ffa96674977}:1.1", - "{97e9c08a-78aa-4351-b5d7-1ffa96674977}:1.2", - "{aa7ad30d-418b-48a0-9278-785535210e05}:1.0", - "tjsdeveloper.apps@gmail.com:1.1.6", - "amazon-takipci-v5@gemini.local:12.5", - "@5729ddf7-2c4f-4e57-ba92-baa51996b33a:5.3.9", - "@5729ddf7-2c4f-4e57-ba92-baa51996b33a:5.4.1", - "@5729ddf7-2c4f-4e57-ba92-baa51996b33a:5.4.2", - "asb-calendar-updater@asb:1.0", - "asb-calendar-updater@asb:1.1" - ] - }, - "schema": 1768242995484, - "key_format": "{guid}:{version}", - "stash_time": 1768264506927, - "id": "9899db0c-ef7e-4d07-804d-9db4e66d6f2c", - "last_modified": 1768264594640 - }, - { - "stash": { - "blocked": [], - "unblocked": [ - "atomic@example.com:1.0", - "atomic@example.com:1.1", - "atomic@example.com:1.2", - "atomic@example.com:1.3", - "atomic@example.com:2.0", - "atomic@example.com:2.1", - "atomic@example.com:2.2" - ], - "softblocked": [ - "PublicPodTracker@gmail.com:1.3", - "{29206186-5a69-4bd3-98ee-f004f7ca1ec2}:1.0", - "semnaturaextensionsigned@sign.ro:1.6", - "video-previews@uivil.github:1.0.2", - "{b5e57a1e-8452-4499-b0c4-635b588c9486}:0.3.3", - "priceradar@priceradar.cloud:6.85", - "@f2418b15-0998-43fc-a47a-9546d3690226:4.9.8", - "@9a1b0c82-2f63-4fcc-bcf1-faffcd9bec5d:4.9.7", - "egnyte-cookie-manager@migration-app:1.3", - "@86deb049-c35a-4c69-b0c0-a52a14fa3186:2.5.3", - "@7e1be1f1-5454-43e2-b4aa-b802a88cab11:5.8.2", - "{67788975-7308-472b-bc17-b99e4330ed8f}:1.7", - "{67788975-7308-472b-bc17-b99e4330ed8f}:1.6", - "{67788975-7308-472b-bc17-b99e4330ed8f}:1.4", - "{67788975-7308-472b-bc17-b99e4330ed8f}:1.3", - "{67788975-7308-472b-bc17-b99e4330ed8f}:1.2", - "{67788975-7308-472b-bc17-b99e4330ed8f}:1.1", - "{67788975-7308-472b-bc17-b99e4330ed8f}:1.0", - "{ac083b82-c9ab-41ec-bda0-4c3505e8fb53}:1.0", - "{ac083b82-c9ab-41ec-bda0-4c3505e8fb53}:4.0" - ] - }, - "schema": 1768221389790, - "key_format": "{guid}:{version}", - "stash_time": 1768242907066, - "id": "6ccaa70a-2454-4ab8-83e9-11e7560ab01c", - "last_modified": 1768242995377 - }, - { - "stash": { - "blocked": [ - "{f57ae733-95d1-4fc7-b61b-09e07c7442ec}:1" - ], - "unblocked": [], - "softblocked": [ - "{5abf0ed0-d3e9-474a-a304-88e89fd03df2}:1.3", - "{c6e1bf4d-ddeb-4dfd-b4f7-d80aae009da0}:105.3", - "{5abf0ed0-d3e9-474a-a304-88e89fd03df2}:1.0", - "emailai@sitcdinhvu.vn:1.1.2.1", - "{63ce3427-167c-404c-8c6c-602dac1f61b7}:109.31", - "priceradar@priceradar.cloud:6.84.8", - "{33cab89c-026a-43e2-a6b1-ec5a01a6ae54}:5.50", - "{c6e1bf4d-ddeb-4dfd-b4f7-d80aae009da0}:1.0", - "flowplugin@mostafa.dev:1.0.1", - "priceradar@priceradar.cloud:6.84.9", - "priceradar@priceradar.cloud:6.84.10", - "priceradar@priceradar.cloud:6.84.11", - "priceradar@priceradar.cloud:6.84.13", - "priceradar@priceradar.cloud:6.84.15", - "{93809a22-01b4-47c0-ae14-7b271fbf0e67}:1.0", - "{4c6e6c67-4cbf-4fd1-a7aa-bc1e0cd5e9c0}:1.0", - "youtube-upload-date@local:1.0.0", - "youtube-upload-date@local:1.0.1", - "youtube-upload-date@local:1.0.2", - "{2b51c334-5e28-4d7f-8272-727a8f128b5f}:1.0", - "@b45953e1-178f-49c4-878f-8e0f006cb850:3.8.5", - "@b45953e1-178f-49c4-878f-8e0f006cb850:3.8.6", - "@b45953e1-178f-49c4-878f-8e0f006cb850:3.8.7", - "MinYT@example.org:9.0" - ] - }, - "schema": 1768199790098, - "key_format": "{guid}:{version}", - "stash_time": 1768221306784, - "id": "db1987e4-0968-4a47-8a05-f0caeb880f90", - "last_modified": 1768221389638 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "pixiv-templater@gabszap:2.1.0", - "{71c78d5c-25b8-4821-bda2-a7dd4c793b60}:1.0.1", - "securecrt-launcher@autozone.com:1.0.2", - "priceradar@priceradar.cloud:6.84.4", - "priceradar@priceradar.cloud:6.84.6", - "priceradar@priceradar.cloud:6.84.5", - "priceradar@priceradar.cloud:6.84.7", - "focusera@focusora.space:1.0.1", - "{63ce3427-167c-404c-8c6c-602dac1f61b7}:109.3" - ] - }, - "schema": 1768178179306, - "key_format": "{guid}:{version}", - "stash_time": 1768199706427, - "id": "6cb6863e-d9f1-44d4-af75-c953561f5b61", - "last_modified": 1768199789950 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "image-downloader@ozler365:14.1", - "image-downloader@ozler365:14.3", - "twitch-command-menu@local:1.3.38", - "prv-magnetcatcher-v1@melchio:1.0.0", - "prv-magnetcatcher-v1@melchio:2.0.0", - "@446af9a7-0b10-4766-82cd-7270e9ecd30e:2.5.0", - "priceradar@priceradar.cloud:6.78", - "priceradar@priceradar.cloud:6.79", - "priceradar@priceradar.cloud:6.80", - "priceradar@priceradar.cloud:6.81", - "priceradar@priceradar.cloud:6.82", - "priceradar@priceradar.cloud:6.83", - "priceradar@priceradar.cloud:6.84", - "priceradar@priceradar.cloud:6.84.1", - "priceradar@priceradar.cloud:6.84.2", - "chim-chat@extension:2.0", - "chim-chat@extension:1.2", - "linkding-bookmarks-sync@local:0.1.0", - "linkding-bookmarks-sync@local:0.1.1", - "linkding-bookmarks-sync@local:0.1.2", - "chim-chat@extension:2.1" - ] - }, - "schema": 1768156588768, - "key_format": "{guid}:{version}", - "stash_time": 1768178106097, - "id": "c5e0f1c4-df37-4907-ba3d-1baa5212bb70", - "last_modified": 1768178179116 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "monitoring-alarm@local:1.3", - "guardianlink@example.com:2.0.0", - "image-downloader@ozler365:14.2", - "{5f346a63-5ac8-40c5-b795-41a189d6195c}:3.0", - "price-tracker@examples.local:0.1.0", - "price-tracker@examples.local:0.1.2", - "price-tracker@examples.local:0.1.3", - "price-tracker@examples.local:0.1.4", - "price-tracker@examples.local:0.1.5", - "price-tracker@examples.local:0.1.6", - "price-tracker@examples.local:0.1.9", - "text-expander@yourdomain.com:3.2.3", - "{a8f5778b-93d9-465b-847b-d772b7f07c46}:0.1.0", - "{532db4bf-63ca-4518-bb36-7f89ce9615f7}:7.6.0", - "chim-chat@extension:1.1", - "image-downloader@ozler365:14.5" - ] - }, - "schema": 1768134982704, - "key_format": "{guid}:{version}", - "stash_time": 1768156506255, - "id": "13f8cb0f-95f8-465f-9b3e-8760361714e4", - "last_modified": 1768156588522 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "my-custom-new-tab@local:1.3.2", - "my-custom-new-tab@local:1.3.1", - "my-custom-new-tab@local:1.3", - "my-custom-new-tab@local:1.2", - "@AutodartNotificator:1.0", - "@AutodartNotificator:2.0", - "{5f346a63-5ac8-40c5-b795-41a189d6195c}:1.0", - "{5f346a63-5ac8-40c5-b795-41a189d6195c}:2.0", - "screen-time-tracker@my-local-app:2.0", - "mcr2601.mr@gmail.com:1.0", - "mcr2601.mr@gmail.com:1.1", - "chim-chat@extension:1.0", - "greencoupon-ksa@shourk.com:0.0.2", - "bookmark-tracker@yourdomain.local:3.1", - "addontest49610@testexample.com:0.0.1", - "vektori-memory@vektori.cloud:1.0.4" - ] - }, - "schema": 1768091788509, - "key_format": "{guid}:{version}", - "stash_time": 1768134905741, - "id": "c466bdef-ebac-4735-880a-c48e16589e6c", - "last_modified": 1768134982508 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "@widewine:241029.1", - "{cd27dc3b-285f-49b7-896a-e99d210326aa}:1.0", - "openwith@darktrojan.net.signed:7.2.1", - "{6fcfbe86-e569-4247-be0a-2ad6cc70a59d}:10", - "{6fcfbe86-e569-4247-be0a-2ad6cc70a59d}:3.2", - "{6fcfbe86-e569-4247-be0a-2ad6cc70a59d}:3.3", - "{6fcfbe86-e569-4247-be0a-2ad6cc70a59d}:3.4", - "image-downloader@ozler365:6.5", - "image-downloader@ozler365:13.8", - "image-downloader@ozler365:12.8", - "custom-lightbeam-android@perfecta:3.0.1" - ] - }, - "schema": 1768070189404, - "key_format": "{guid}:{version}", - "stash_time": 1768091706411, - "id": "9cc749c2-1895-48f7-bafd-91b34d1d9ae1", - "last_modified": 1768091788436 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "twitch-socks5@example.com:1.0", - "svdownloader-addon@svalex.com:1.0.0", - "svdownloader-addon@svalex.com:1.0.1", - "pogdesign-imdb@benestrabaud.gmail.com:1.0", - "{af51db4b-43f3-48ff-9035-989b7c8cf72c}:0.1.0", - "{af51db4b-43f3-48ff-9035-989b7c8cf72c}:0.2.0", - "darkfilter@nikitka2k10.example.com:1337.0" - ] - }, - "schema": 1768048589281, - "key_format": "{guid}:{version}", - "stash_time": 1768070106017, - "id": "f2f7db2f-a088-4b65-8712-1f8d5a3a41f5", - "last_modified": 1768070189320 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "bookmark-tracker@unique-id.local:1.8", - "{fd9b2498-4028-46d7-a32d-d4febc58f37a}:1.0", - "{833a3f30-a3af-4be9-ac15-14572ca88a87}:0.1.0", - "{e85a1a44-34c7-40df-a025-fccf413a35cc}:0.1.0", - "orange-visited-links@firefox.com:1.0", - "contact@bulenox.codes:4.3.20", - "contact@bulenox.codes:4.3.21", - "exmanga@djob2eotwqw1.ru:4.2.2", - "lionwheel-notes@anipet.local:0.1.0" - ] - }, - "schema": 1768026989092, - "key_format": "{guid}:{version}", - "stash_time": 1768048506622, - "id": "d7d811f6-d02a-4c8a-afd8-f9741a4f15a6", - "last_modified": 1768048589191 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{aeb8b4fb-80d9-4161-b9a8-19035114d2f3}:1.0", - "{b30839e4-b5b6-4ca6-9a61-dc5e3d5bfbfe}:1.0", - "{04b664fe-bd67-486b-9ead-76395b45f4d1}:1.0", - "{e782b69a-5b9a-4c77-ae58-c3bc7b8cce4f}:1.0", - "@your-extension-id:1.0", - "youtube-filter-my@id-for-storage:1.0.5.8", - "{db1c726d-f1c9-4961-8373-47adf1a4c3b5}:301.15.2", - "{df2a20b6-9000-4260-bd8c-de886bb90c5d}:2.0.15", - "{cb832a40-3ea6-4fe9-8b04-79cf1b84de2b}:2.0.15" - ] - }, - "schema": 1768005390958, - "key_format": "{guid}:{version}", - "stash_time": 1768026906371, - "id": "bfd0b183-d096-4b75-8763-6ba57629bcbf", - "last_modified": 1768026989011 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "tiktokuzanti@benimozeluzantim.com:4.1", - "{394ff9d5-d5c5-4bf2-8296-736a81ddf40e}:1.0", - "{649ee148-3880-4330-8efe-46defe466516}:1.0", - "{649ee148-3880-4330-8efe-46defe466516}:1.5", - "@fcfe8fbb-be30-4567-b14f-83bfb2da1f7a:2.8.9", - "extension@getv2id.site:1.0.0", - "{32a6d9ee-aafd-4ed5-a839-c922cd909dd9}:11.1.0", - "{32a6d9ee-aafd-4ed5-a839-c922cd949dc7}:11.1.0" - ] - }, - "schema": 1767983793066, - "key_format": "{guid}:{version}", - "stash_time": 1768005306244, - "id": "facd5402-666d-4978-a7cb-3247ffb18567", - "last_modified": 1768005390801 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "@gabclassic:2.0.0", - "{6ce8f366-234a-402d-93a3-452c8cab1d8b}:1.0", - "{6ce8f366-234a-402d-93a3-452c8cab1d8b}:2.0", - "{6ce8f366-234a-402d-93a3-452c8cab1d8b}:3.0", - "{6ce8f366-234a-402d-93a3-452c8cab1d8b}:4.0", - "kok@rent.net:1.6.1", - "@e1f701c7-c2e3-4fef-a247-dadf7432d758:4.3.5", - "mqtt-navigation-control@pierre-yves:1.0", - "avatar70t@gmail.com:1.21", - "avatar70t@gmail.com:1.22", - "avatar70t@gmail.com:1.24", - "avatar70t@gmail.com:1.25", - "avatar70t@gmail.com:1.26", - "avatar70t@gmail.com:1.27", - "avatar70t@gmail.com:1.28", - "avatar70t@gmail.com:1.29", - "etp@2024:1.99" - ] - }, - "schema": 1767962179598, - "key_format": "{guid}:{version}", - "stash_time": 1767983707257, - "id": "54b201af-67a5-4e28-9d90-8b414e948282", - "last_modified": 1767983792874 - }, - { - "stash": { - "blocked": [ - "{750069e2-466c-4fec-89c7-b1eb525151ae}:1.0", - "{750069e2-466c-4fec-89c7-b1eb525151ae}:1.3", - "{4d76b35c-c4dc-416a-9149-439f4c042ed3}:1.0", - "{4d76b35c-c4dc-416a-9149-439f4c042ed3}:1.3" - ], - "unblocked": [], - "softblocked": [ - "{d7a7f42e-8289-4fd4-8a7f-09ba22572f7e}:1.0", - "faster-pull-request-gotestingspace@gmail.com:0.0.0.9", - "faster-pull-request-gotestingspace@gmail.com:0.0.0.10", - "hallesche-autorefresh@unicai.de:1.0", - "hallesche-autorefresh@unicai.de:2.1", - "autoclose-superpuestos@custom.addon:0.2.6", - "estremennu@dictionaries.addons.mozilla.org:0.0.0", - "estremennu@dictionaries.addons.mozilla.org:0.0.1", - "dungeon-ui@clauds-clauds:1.0.4", - "{e3b9c2a1-7f4d-4b6e-9a8c-2d1f6a5e0c47}:2.3" - ] - }, - "schema": 1767940589186, - "key_format": "{guid}:{version}", - "stash_time": 1767962105115, - "id": "f5af38ce-9630-4254-8edc-4916d0c654c3", - "last_modified": 1767962179280 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "smartlogin@local:1.0", - "stash-pr-changes@browser-extensions:0.0.3", - "@gabclassic:1.2.4", - "@qwick_wu_by_ajmal:1.0" - ] - }, - "schema": 1767918983113, - "key_format": "{guid}:{version}", - "stash_time": 1767940506166, - "id": "feea5434-c602-4208-8516-31b469c9b60a", - "last_modified": 1767940588954 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{89240114-709b-4152-9d8e-cc993a072f5f}:0.1.0", - "{4f7aa2c1-9f2b-4ff5-b75c-2d5c3d26f266}:1.4.2", - "{4f7aa2c1-9f2b-4ff5-b75c-2d5c3d26f266}:1.4.3", - "smart-merger-v7@private-tools.local:1.7", - "webprivacyplugin_uniqueid@github.com:1.0", - "webprivacyplugin_uniqueid@github.com:1.0.2", - "webprivacyplugin_uniqueid@github.com:1.0.3", - "webprivacyplugin_uniqueid@github.com:1.0.4", - "webprivacyplugin_uniqueid@github.com:1.0.5", - "webprivacyplugin_uniqueid@github.com:1.0.6", - "webprivacyplugin_uniqueid@github.com:1.0.7", - "{bd1b8938-6545-49bf-9148-c2769f942c70}:1.0", - "{bd3dad08-035c-4cf0-970b-9183a59decda}:1.0", - "{bd3dad08-035c-4cf0-970b-9183a59decda}:2.0", - "{643b0a08-7f0a-414a-9fad-14f0ae3ec9ae}:1.0", - "{643b0a08-7f0a-414a-9fad-14f0ae3ec9ae}:2.0", - "{b6a0adbb-b239-4eef-9e6a-054061d27430}:1.0", - "{b6a0adbb-b239-4eef-9e6a-054061d27430}:2.0", - "{b61d5eaf-97bd-4c40-ae28-06eb7640fe12}:1.0", - "{b61d5eaf-97bd-4c40-ae28-06eb7640fe12}:2.0", - "{1668ac5c-bd20-4a3b-9ed7-9535d0da9f6e}:1.0", - "{1668ac5c-bd20-4a3b-9ed7-9535d0da9f6e}:2.0", - "{d4afc26d-7736-456a-b2cc-e8577af8ee67}:1.0", - "{d4afc26d-7736-456a-b2cc-e8577af8ee67}:2.0", - "{47904a1d-ce66-4e78-9f98-bcf9f7efe4bb}:1.0", - "{47904a1d-ce66-4e78-9f98-bcf9f7efe4bb}:2.0", - "{2dd0c94a-0307-4bdb-b427-3195fbaa16c3}:1.0", - "{2dd0c94a-0307-4bdb-b427-3195fbaa16c3}:2.0", - "{2c36b773-ea0d-420d-ba07-242ebbd61bb8}:1.0", - "{2c36b773-ea0d-420d-ba07-242ebbd61bb8}:2.0", - "{a6ecb1b0-ca63-4282-aca9-fd489c02f06d}:1.0", - "{a6ecb1b0-ca63-4282-aca9-fd489c02f06d}:2.0", - "{61bc0555-efdf-46fe-9a22-a1d9ddac381d}:1.0", - "{61bc0555-efdf-46fe-9a22-a1d9ddac381d}:2.0", - "{cf841ac8-c036-4b6e-85c9-296fe012a561}:1.0", - "{cf841ac8-c036-4b6e-85c9-296fe012a561}:2.0", - "{09b17d50-d0cc-4841-8281-9aa205d72b9d}:1.0", - "{09b17d50-d0cc-4841-8281-9aa205d72b9d}:2.0", - "{559ff750-3767-4883-9d0d-33a3b8dab754}:1.0", - "{559ff750-3767-4883-9d0d-33a3b8dab754}:2.0", - "{c8ef1f38-1a66-4baa-b648-2638dd0bd837}:1.0", - "{c8ef1f38-1a66-4baa-b648-2638dd0bd837}:2.0", - "{42c66ffd-71da-4c7f-8a83-ae5d5d6695d5}:1.0", - "{42c66ffd-71da-4c7f-8a83-ae5d5d6695d5}:2.0", - "{c7ec6ece-da1f-4ab5-a40a-c7e5d156c2e1}:1.0", - "{c7ec6ece-da1f-4ab5-a40a-c7e5d156c2e1}:2.0", - "{2eabc80c-4ec3-4312-bbf6-d2339d7f318f}:1.0", - "{2eabc80c-4ec3-4312-bbf6-d2339d7f318f}:2.0", - "{8ad1f6f1-de34-4fe2-a84a-9f553611ac45}:1.0", - "{8ad1f6f1-de34-4fe2-a84a-9f553611ac45}:2.0", - "{40989466-2377-4154-bc15-58d2857536fc}:1.0", - "{40989466-2377-4154-bc15-58d2857536fc}:2.0", - "{65b3e686-fa4d-4ca8-b4f5-cc516ee240eb}:1.0", - "{65b3e686-fa4d-4ca8-b4f5-cc516ee240eb}:2.0", - "{f6c81332-4695-4ae5-9650-a8c53271f1d0}:1.0", - "{f6c81332-4695-4ae5-9650-a8c53271f1d0}:2.0", - "{7dc716b8-f0f2-4f5d-a91f-0daca9ebceae}:1.0", - "{7dc716b8-f0f2-4f5d-a91f-0daca9ebceae}:2.0", - "{c7ca6075-24f8-4086-a10c-cc2dcf078aca}:1.0", - "{c7ca6075-24f8-4086-a10c-cc2dcf078aca}:2.0", - "{754cf76f-f743-4ec3-9327-7c7db60c6998}:1.0", - "{754cf76f-f743-4ec3-9327-7c7db60c6998}:2.0", - "{c177a31c-8c30-41ed-96b4-fc9fe32b91d8}:1.0", - "{c177a31c-8c30-41ed-96b4-fc9fe32b91d8}:2.0", - "{0979dc96-0686-49b4-b551-ad3c23a850dd}:1.0", - "{0979dc96-0686-49b4-b551-ad3c23a850dd}:2.0", - "{89fa6ec5-22bb-4b55-b476-68dc42773521}:1.0", - "{89fa6ec5-22bb-4b55-b476-68dc42773521}:2.0", - "{27ba81fa-7f33-4c8b-9ad7-b8091ef78fd6}:1.0", - "{27ba81fa-7f33-4c8b-9ad7-b8091ef78fd6}:2.0", - "{1e8c4650-e8b4-4fb7-a886-c65ebd935701}:1.0", - "{1e8c4650-e8b4-4fb7-a886-c65ebd935701}:2.0", - "{fdade90f-bce9-47e2-92ac-c83dc9f92651}:1.0", - "{fdade90f-bce9-47e2-92ac-c83dc9f92651}:2.0", - "{306a0e29-8e47-4a2f-a0a4-9d9dabc8b15f}:1.0", - "{306a0e29-8e47-4a2f-a0a4-9d9dabc8b15f}:2.0", - "{f1a71b59-c54a-4df5-977d-41ebb05bd3b1}:1.0", - "{f1a71b59-c54a-4df5-977d-41ebb05bd3b1}:2.0", - "{7692018b-e577-4bb1-850d-fc91b179736e}:1.0", - "{7692018b-e577-4bb1-850d-fc91b179736e}:2.0", - "{419345d6-dbd8-41a5-ba2e-36fad3068a1e}:1.0", - "{419345d6-dbd8-41a5-ba2e-36fad3068a1e}:2.0", - "{dfab43ba-f0d3-4769-b725-932bbc17b936}:1.0", - "{dfab43ba-f0d3-4769-b725-932bbc17b936}:2.0", - "{6ef6665d-fea6-4062-a072-4fa285817325}:1.0", - "{6ef6665d-fea6-4062-a072-4fa285817325}:2.0", - "{ffb983b8-1c6e-45cc-8b6c-4704fda897f0}:1.0", - "{ffb983b8-1c6e-45cc-8b6c-4704fda897f0}:2.0", - "{4b61ff73-5aee-44b2-93b4-a3fd7a8374ee}:1.0", - "{4b61ff73-5aee-44b2-93b4-a3fd7a8374ee}:2.0", - "{cebd34cc-8850-4f8d-bac2-3e67119e0362}:1.0", - "{cebd34cc-8850-4f8d-bac2-3e67119e0362}:2.0", - "{e305ce71-08ae-4a20-955b-941bc3559b7a}:1.0", - "{e305ce71-08ae-4a20-955b-941bc3559b7a}:2.0", - "{aa4bd7b1-591b-4575-af8c-53aedf6cd3dd}:1.0", - "{aa4bd7b1-591b-4575-af8c-53aedf6cd3dd}:2.0", - "{11e95c13-7398-459c-8724-42c38a9ac2e7}:1.0", - "{11e95c13-7398-459c-8724-42c38a9ac2e7}:2.0", - "{5a0e28a4-5160-4876-a458-47af6720800a}:1.0", - "{5a0e28a4-5160-4876-a458-47af6720800a}:2.0", - "{0adf8739-6bf2-4bcc-ab9b-be1909c1e709}:1.0", - "{0adf8739-6bf2-4bcc-ab9b-be1909c1e709}:2.0", - "{dc92e3a6-b385-430b-a036-ba3b1727ece4}:1.0", - "{dc92e3a6-b385-430b-a036-ba3b1727ece4}:2.0", - "{d8515790-113e-4cb4-aa6e-ba05bf0ae24c}:1.0", - "{d8515790-113e-4cb4-aa6e-ba05bf0ae24c}:2.0", - "{678bbe1a-1889-47e7-a290-8a67be1c07df}:1.0", - "{678bbe1a-1889-47e7-a290-8a67be1c07df}:2.0", - "{f225db46-7bbe-4977-94ed-e641aec7bf1f}:1.0", - "{f225db46-7bbe-4977-94ed-e641aec7bf1f}:2.0", - "{63fdc671-f40c-4da9-b98f-a74e12a3e74b}:1.0", - "{63fdc671-f40c-4da9-b98f-a74e12a3e74b}:2.0", - "{c2e57304-42d9-42e9-935f-a7ef8401fba3}:1.0", - "{c2e57304-42d9-42e9-935f-a7ef8401fba3}:2.0", - "{8db27f3c-36e6-4f16-9fe5-8b72224ed098}:1.0", - "{8db27f3c-36e6-4f16-9fe5-8b72224ed098}:2.0", - "{8027fd35-8471-4c4f-8294-557b64f209f9}:1.0", - "{8027fd35-8471-4c4f-8294-557b64f209f9}:2.0", - "{96d020f8-d253-4745-99ad-167ca69dd4ac}:1.0", - "{96d020f8-d253-4745-99ad-167ca69dd4ac}:2.0", - "{9e73fd92-615d-4157-9033-09bc0de502fb}:1.0", - "{9e73fd92-615d-4157-9033-09bc0de502fb}:2.0", - "{fe801b6a-4b43-4332-ad87-db695761d8b3}:1.0", - "{fe801b6a-4b43-4332-ad87-db695761d8b3}:2.0", - "{4c8fabd5-d00b-433f-b0f4-6b8444648179}:1.0", - "{4c8fabd5-d00b-433f-b0f4-6b8444648179}:2.0", - "{7a32b8d6-a980-4269-8326-10aeeb693abc}:1.0", - "{7a32b8d6-a980-4269-8326-10aeeb693abc}:2.0", - "{702d1262-9120-4798-90b4-3978bb318b51}:1.0", - "{702d1262-9120-4798-90b4-3978bb318b51}:2.0", - "{66c075d3-e14a-4ae3-979d-b0c7b4b6b1d8}:1.0", - "{66c075d3-e14a-4ae3-979d-b0c7b4b6b1d8}:2.0", - "{14928099-fe2d-436c-ba45-ce37d6bdf519}:1.0", - "{14928099-fe2d-436c-ba45-ce37d6bdf519}:2.0", - "{c0346e37-46ae-4c0c-bb91-c24c68233bbf}:1.0", - "{c0346e37-46ae-4c0c-bb91-c24c68233bbf}:2.0", - "{23a5b9d4-7181-4bcf-b182-0e2c5805c3eb}:1.0", - "{23a5b9d4-7181-4bcf-b182-0e2c5805c3eb}:2.0", - "{0038572c-a604-42c4-b5e4-ef3a2a01ad52}:1.0", - "{0038572c-a604-42c4-b5e4-ef3a2a01ad52}:2.0", - "{a0823100-8693-4439-8850-25380ada939b}:1.0", - "{a0823100-8693-4439-8850-25380ada939b}:2.0", - "{0fe4c032-38f3-4039-917e-7a251a4693bf}:1.0", - "{0fe4c032-38f3-4039-917e-7a251a4693bf}:2.0", - "{fcc9172a-76ba-4a21-9c94-a4f798292c7a}:1.0", - "{fcc9172a-76ba-4a21-9c94-a4f798292c7a}:2.0", - "{46d993c7-e8cd-4a0c-96ab-905b882533ca}:1.0", - "{46d993c7-e8cd-4a0c-96ab-905b882533ca}:2.0", - "{e4df79fa-1c15-4fa0-b2c8-4eee86e9054a}:1.0", - "{e4df79fa-1c15-4fa0-b2c8-4eee86e9054a}:2.0", - "{9d8514c0-72ca-45d4-8abe-324e61ac85c2}:1.0", - "{9d8514c0-72ca-45d4-8abe-324e61ac85c2}:2.0", - "{3642cb30-8229-4846-951a-c07207bce406}:1.0", - "{3642cb30-8229-4846-951a-c07207bce406}:2.0", - "{f5a91d8d-4827-4c6a-8eaf-82cffea4cf68}:1.0", - "{f5a91d8d-4827-4c6a-8eaf-82cffea4cf68}:2.0", - "{6c57f1b4-362a-4c88-bce4-f8fbce907cb5}:1.0", - "{6c57f1b4-362a-4c88-bce4-f8fbce907cb5}:2.0", - "{01e769d5-33d6-4a3c-87f0-8c88e35be541}:1.0", - "{01e769d5-33d6-4a3c-87f0-8c88e35be541}:2.0", - "{293bad88-8b7d-45a9-80aa-36ec44a0a27e}:1.0", - "{293bad88-8b7d-45a9-80aa-36ec44a0a27e}:2.0", - "{08fbfce6-aa63-43d8-86ae-18587edc4d67}:1.0", - "{08fbfce6-aa63-43d8-86ae-18587edc4d67}:2.0", - "{cfde0c8e-957c-47e4-b74f-f67569f56cb5}:1.0", - "{cfde0c8e-957c-47e4-b74f-f67569f56cb5}:2.0", - "{9dda9479-a0f3-4e7f-b5fa-557f96c0c8a3}:1.0", - "{9dda9479-a0f3-4e7f-b5fa-557f96c0c8a3}:2.0", - "{5290b95a-6451-4fdc-a68f-f102a1c60c4b}:1.0", - "{5290b95a-6451-4fdc-a68f-f102a1c60c4b}:2.0", - "{4bd7f864-2124-4576-afbe-1fd0a565081f}:1.0", - "{4bd7f864-2124-4576-afbe-1fd0a565081f}:2.0", - "{ecbb06bd-3c35-4edc-a57f-5ec454f4052c}:1.0", - "{ecbb06bd-3c35-4edc-a57f-5ec454f4052c}:2.0", - "{09efbfab-510c-45c8-9e56-92588d342907}:1.0", - "{09efbfab-510c-45c8-9e56-92588d342907}:2.0", - "{42b3ec69-8aeb-4b65-80fb-fa80f707cd82}:1.0", - "{42b3ec69-8aeb-4b65-80fb-fa80f707cd82}:2.0", - "{dd7185d3-3e4b-460e-8383-399fc4823dba}:1.0", - "{dd7185d3-3e4b-460e-8383-399fc4823dba}:2.0", - "{24c0f53c-c623-4aa1-b149-e72f31603d81}:1.0", - "{24c0f53c-c623-4aa1-b149-e72f31603d81}:2.0", - "{a602ab22-fda2-4575-a69f-0ce6fe6bba03}:1.0", - "{a602ab22-fda2-4575-a69f-0ce6fe6bba03}:2.0", - "{478b1712-062a-479e-a728-aa0366368207}:1.0", - "{478b1712-062a-479e-a728-aa0366368207}:2.0", - "{8759cd6d-f54e-4f36-886d-68f3e03dd2ce}:1.0", - "{8759cd6d-f54e-4f36-886d-68f3e03dd2ce}:2.0", - "{1fdfb195-f349-4558-85ff-5c074a1b01c4}:1.0", - "{1fdfb195-f349-4558-85ff-5c074a1b01c4}:2.0", - "{ce136c98-6660-436b-8b57-cf021d4d0e43}:1.0", - "{ce136c98-6660-436b-8b57-cf021d4d0e43}:2.0", - "{56c05f24-eefd-4b74-90fe-04a5e72d825f}:1.0", - "{56c05f24-eefd-4b74-90fe-04a5e72d825f}:2.0", - "{c5dee0cd-7958-4a22-9b1f-33be2a592e03}:1.0", - "{c5dee0cd-7958-4a22-9b1f-33be2a592e03}:2.0", - "{04207920-b1ab-405a-b8ee-4bdbcd55be11}:1.0", - "{04207920-b1ab-405a-b8ee-4bdbcd55be11}:2.0", - "{99d9fc04-c1a3-4ecb-b605-1100339c0e4c}:1.0", - "{99d9fc04-c1a3-4ecb-b605-1100339c0e4c}:2.0", - "{fd416326-684c-4482-9059-ce509d3ae4a2}:1.0", - "{fd416326-684c-4482-9059-ce509d3ae4a2}:2.0", - "{26ff120d-2b34-4c05-9b32-7f7d0afab502}:1.0", - "{26ff120d-2b34-4c05-9b32-7f7d0afab502}:2.0", - "{b22aea45-4b85-43b7-8996-533a227caec0}:1.0", - "{b22aea45-4b85-43b7-8996-533a227caec0}:2.0", - "{2be004ad-a3a6-4b39-aca1-f81e1da87e68}:1.0", - "{2be004ad-a3a6-4b39-aca1-f81e1da87e68}:2.0", - "{b8b699aa-3b4e-4a86-b43a-6b1f281b6338}:1.0", - "{b8b699aa-3b4e-4a86-b43a-6b1f281b6338}:2.0", - "{b67c8d83-036d-456e-a6a2-d6009c74c7d1}:1.0", - "{b67c8d83-036d-456e-a6a2-d6009c74c7d1}:2.0", - "{58baac43-b798-4d66-a4a1-1fd79902b701}:1.0", - "{58baac43-b798-4d66-a4a1-1fd79902b701}:2.0", - "{37aa6782-1366-4325-808d-02d81f79ec7e}:1.0", - "{37aa6782-1366-4325-808d-02d81f79ec7e}:2.0", - "{bc3fad0d-28d9-4384-ac8e-4a1461ce8433}:1.0", - "{bc3fad0d-28d9-4384-ac8e-4a1461ce8433}:2.0", - "{1b6e7244-f9cc-4db9-be84-1e6f732746b5}:1.0", - "{1b6e7244-f9cc-4db9-be84-1e6f732746b5}:2.0", - "{751fa676-b94c-4a40-a1c8-fbdd48be5ee3}:1.0", - "{751fa676-b94c-4a40-a1c8-fbdd48be5ee3}:2.0", - "{994d87e1-e75c-49d1-9709-a117e2c811f9}:1.0", - "{994d87e1-e75c-49d1-9709-a117e2c811f9}:2.0", - "{17be4119-d419-4530-a86c-fc6ea271bfe7}:1.0", - "{17be4119-d419-4530-a86c-fc6ea271bfe7}:2.0", - "{6a44b7f2-473d-4392-95fa-df92dac33ad8}:1.0", - "{6a44b7f2-473d-4392-95fa-df92dac33ad8}:2.0", - "{fcc04263-6422-4f2c-99e4-0ce9a65ffb71}:1.0", - "{fcc04263-6422-4f2c-99e4-0ce9a65ffb71}:2.0", - "{19bcf7e2-f4eb-4a4a-82da-af9ae52720a6}:1.0", - "{19bcf7e2-f4eb-4a4a-82da-af9ae52720a6}:2.0", - "{710f6d1e-675c-440b-8fa1-39a66e019a20}:1.0", - "{710f6d1e-675c-440b-8fa1-39a66e019a20}:2.0", - "{d06fdf92-9d05-4b9b-b632-f0775514a441}:1.0", - "{d06fdf92-9d05-4b9b-b632-f0775514a441}:2.0", - "{c1512e6c-9d34-44d6-b3a1-b3e22310bede}:1.0", - "{c1512e6c-9d34-44d6-b3a1-b3e22310bede}:2.0", - "{8420f538-b655-4baa-a517-1d0cd7137dc1}:1.0", - "{8420f538-b655-4baa-a517-1d0cd7137dc1}:2.0", - "{e11b19be-03b2-4429-ae23-6b13580505a4}:1.0", - "{e11b19be-03b2-4429-ae23-6b13580505a4}:2.0", - "{4b3b98e1-30fc-40c9-ac95-c5f1f9977efe}:1.0", - "{4b3b98e1-30fc-40c9-ac95-c5f1f9977efe}:2.0", - "{6c79e918-330e-44e2-b5a2-0912ba4bd43a}:1.0", - "{6c79e918-330e-44e2-b5a2-0912ba4bd43a}:2.0", - "{5e52970f-8a29-4d88-8e05-cc78f2060b82}:1.0", - "{5e52970f-8a29-4d88-8e05-cc78f2060b82}:2.0", - "{db90b08b-1827-48f6-a260-4b73c146e2f8}:1.0", - "{db90b08b-1827-48f6-a260-4b73c146e2f8}:2.0", - "{c1817685-68de-4740-9f83-654a7330e6a7}:1.0", - "{c1817685-68de-4740-9f83-654a7330e6a7}:2.0", - "{a6d84e74-d234-45b0-8a25-1a03470ed327}:1.0", - "{a6d84e74-d234-45b0-8a25-1a03470ed327}:2.0", - "{daf1e4f1-9bc9-413f-a24e-09481f356a91}:1.0", - "{daf1e4f1-9bc9-413f-a24e-09481f356a91}:2.0", - "{4a2c531b-57a7-4bc7-9d15-edc92e2b6925}:1.0", - "{4a2c531b-57a7-4bc7-9d15-edc92e2b6925}:2.0", - "{5beb8f41-0043-4e3f-b242-88ddf39119e3}:1.0", - "{5beb8f41-0043-4e3f-b242-88ddf39119e3}:2.0", - "{c4fa34f0-049c-4e31-a50f-b2c87875049a}:1.0", - "{c4fa34f0-049c-4e31-a50f-b2c87875049a}:2.0", - "{9fcba9f2-fac5-4210-9554-a55976ce1f1f}:1.0", - "{9fcba9f2-fac5-4210-9554-a55976ce1f1f}:2.0", - "{8a5b36dc-37d9-4863-93e2-c6e07be79682}:1.0", - "{8a5b36dc-37d9-4863-93e2-c6e07be79682}:2.0", - "{d2b280a0-b69e-47e1-bb6c-adf32af3beda}:1.0", - "{d2b280a0-b69e-47e1-bb6c-adf32af3beda}:2.0", - "{fdc694b0-856e-4259-9e46-bfa25cbaa38f}:1.0", - "{fdc694b0-856e-4259-9e46-bfa25cbaa38f}:2.0", - "{7a9ffa1d-74bb-4e11-a75d-cf485fcb5835}:1.0", - "{7a9ffa1d-74bb-4e11-a75d-cf485fcb5835}:2.0", - "{16dba576-8122-40e3-bebb-046d1f5e2cf9}:1.0", - "{16dba576-8122-40e3-bebb-046d1f5e2cf9}:2.0", - "{9d7539da-15f4-4aec-920d-5ea42a1dbc74}:1.0", - "{9d7539da-15f4-4aec-920d-5ea42a1dbc74}:2.0", - "{6334c983-73d4-405a-a4f7-8d3d0e9e4507}:1.0", - "{6334c983-73d4-405a-a4f7-8d3d0e9e4507}:2.0", - "{63c713f1-d599-4214-a722-f227285b7c26}:1.0", - "{63c713f1-d599-4214-a722-f227285b7c26}:2.0", - "{dbb61553-434d-413a-9862-fceb899ac9ca}:1.0", - "{dbb61553-434d-413a-9862-fceb899ac9ca}:2.0", - "{f71880b7-558e-4cf8-836c-f875385b3f57}:1.0", - "{f71880b7-558e-4cf8-836c-f875385b3f57}:2.0", - "{9c86b52e-0aa1-4098-b289-35ed76e0ae8e}:1.0", - "{9c86b52e-0aa1-4098-b289-35ed76e0ae8e}:2.0", - "{91c493d9-1b12-45a1-9836-ef1ce9a644df}:1.0", - "{91c493d9-1b12-45a1-9836-ef1ce9a644df}:2.0", - "{7fa3de45-6a20-4b76-8ff3-45e613c64c17}:1.0", - "{7fa3de45-6a20-4b76-8ff3-45e613c64c17}:2.0", - "{cdcf1396-a7cb-4038-aad2-9a26e27aac31}:1.0", - "{cdcf1396-a7cb-4038-aad2-9a26e27aac31}:2.0", - "{c1e521cd-d506-40d0-a585-f741aba00655}:1.0", - "{c1e521cd-d506-40d0-a585-f741aba00655}:2.0", - "{a392b802-c87a-4fca-a5ea-f930f4838524}:1.0", - "{a392b802-c87a-4fca-a5ea-f930f4838524}:2.0", - "{ae5b8ad1-24ad-4d74-9fc9-5cf41a212bfc}:1.0", - "{ae5b8ad1-24ad-4d74-9fc9-5cf41a212bfc}:2.0", - "{af5e466a-6499-4f6d-a82e-dec63bd6c501}:1.0", - "{af5e466a-6499-4f6d-a82e-dec63bd6c501}:2.0", - "{b5ee0088-1e85-4e9c-b3ec-48d1f820ec55}:1.0", - "{b5ee0088-1e85-4e9c-b3ec-48d1f820ec55}:2.0", - "{687354b6-b7a1-445a-8b94-d3c9a578e5af}:1.0", - "{687354b6-b7a1-445a-8b94-d3c9a578e5af}:2.0", - "{51babfde-13b6-4bb3-85e7-765e47ce2c95}:1.0", - "{51babfde-13b6-4bb3-85e7-765e47ce2c95}:2.0", - "{0bdc4201-068c-4bcd-b9cf-efc3a115be0d}:1.0", - "{0bdc4201-068c-4bcd-b9cf-efc3a115be0d}:2.0", - "{4178c5e0-c89b-4555-a19a-03b3d0984fa5}:1.0", - "{4178c5e0-c89b-4555-a19a-03b3d0984fa5}:2.0", - "{3d5ceaf5-440c-4e3c-a6fb-502c6b3940bd}:1.0", - "{3d5ceaf5-440c-4e3c-a6fb-502c6b3940bd}:2.0", - "{b335374a-4e49-4fe7-ae8a-09cabe067043}:1.0", - "{b335374a-4e49-4fe7-ae8a-09cabe067043}:2.0", - "{e0a41c39-6fdd-463d-8d36-c006deea2c11}:1.0", - "{e0a41c39-6fdd-463d-8d36-c006deea2c11}:2.0", - "{24e09631-83de-408b-aa14-3ea77c505f42}:1.0", - "{24e09631-83de-408b-aa14-3ea77c505f42}:2.0", - "{74141a8c-6885-401b-8520-31200737ba8e}:1.0", - "{74141a8c-6885-401b-8520-31200737ba8e}:2.0", - "{242005a3-14df-453a-b24e-f929ba788a55}:1.0", - "{242005a3-14df-453a-b24e-f929ba788a55}:2.0", - "{3aacdb72-da40-4346-b46d-1db94947552e}:1.0", - "{3aacdb72-da40-4346-b46d-1db94947552e}:2.0", - "{756160ea-14db-4124-9c91-03b4279d500e}:1.0", - "{756160ea-14db-4124-9c91-03b4279d500e}:2.0", - "{64981868-bef9-4ba5-b7ac-38659597fedc}:1.0", - "{64981868-bef9-4ba5-b7ac-38659597fedc}:2.0", - "{45f8c718-bc27-4951-9aad-357bb4978136}:1.0", - "{45f8c718-bc27-4951-9aad-357bb4978136}:2.0", - "{90f4de16-1f47-47ef-8a39-24eff3380c29}:1.0", - "{90f4de16-1f47-47ef-8a39-24eff3380c29}:2.0", - "{d6ae1d87-1876-4c49-b938-7eda03731c9b}:1.0", - "{d6ae1d87-1876-4c49-b938-7eda03731c9b}:2.0", - "{331bc9d5-35e9-4617-94e4-0db3dc1f5696}:1.0", - "{331bc9d5-35e9-4617-94e4-0db3dc1f5696}:2.0", - "{9e59866d-d835-4f37-a0f3-eb37649ee27c}:1.0", - "{9e59866d-d835-4f37-a0f3-eb37649ee27c}:2.0", - "{9ae356a8-0a60-4d06-b755-e664fb592a1b}:1.0", - "{9ae356a8-0a60-4d06-b755-e664fb592a1b}:2.0", - "{6515bfdd-360f-43b1-9707-51e2ea484c7f}:1.0", - "{6515bfdd-360f-43b1-9707-51e2ea484c7f}:2.0", - "{afce6fa2-0208-4936-8327-ae46b94b3fbf}:1.0", - "{afce6fa2-0208-4936-8327-ae46b94b3fbf}:2.0", - "{30696a72-44c2-4712-8668-a773b5487022}:1.0", - "{30696a72-44c2-4712-8668-a773b5487022}:2.0", - "{b4da3602-3413-4c76-880b-585d1e161f03}:1.0", - "{b4da3602-3413-4c76-880b-585d1e161f03}:2.0", - "{af75376b-c8cd-4f82-9b20-6b8134d1304a}:1.0", - "{af75376b-c8cd-4f82-9b20-6b8134d1304a}:2.0", - "{1d073038-4b4d-4d1e-bc52-a557d179adea}:1.0", - "{1d073038-4b4d-4d1e-bc52-a557d179adea}:2.0", - "{09463b95-90d1-4c66-b08d-579eedb5d392}:1.0", - "{09463b95-90d1-4c66-b08d-579eedb5d392}:2.0", - "{5c312b06-da26-440e-a01d-125c446d648b}:1.0", - "{5c312b06-da26-440e-a01d-125c446d648b}:2.0", - "{a9e39ca5-fa2c-4e42-89c7-668bd15e4952}:1.0", - "{a9e39ca5-fa2c-4e42-89c7-668bd15e4952}:2.0", - "{1ce57ba1-529c-4f8a-b23a-5cfd18825410}:1.0", - "{1ce57ba1-529c-4f8a-b23a-5cfd18825410}:2.0", - "{3a1c1160-0dc0-4b44-83e0-deaa032f7060}:1.0", - "{3a1c1160-0dc0-4b44-83e0-deaa032f7060}:2.0", - "{63976dda-febe-4987-af91-b70d19b85a97}:1.0", - "{63976dda-febe-4987-af91-b70d19b85a97}:2.0", - "{e69d3eff-77fc-48d7-93be-6dd7acdf9598}:1.0", - "{e69d3eff-77fc-48d7-93be-6dd7acdf9598}:2.0", - "{ae50a2cb-886f-4dd1-9df7-02400e74bdbf}:1.0", - "{ae50a2cb-886f-4dd1-9df7-02400e74bdbf}:2.0", - "{4b20e47b-cf99-404a-9c5f-ea12568fc792}:1.0", - "{4b20e47b-cf99-404a-9c5f-ea12568fc792}:2.0", - "{78673719-092a-470a-a8c9-b689037d2deb}:1.0", - "{78673719-092a-470a-a8c9-b689037d2deb}:2.0", - "{4e93a441-31c2-4ee7-b2e8-8c2447a066da}:1.0", - "{4e93a441-31c2-4ee7-b2e8-8c2447a066da}:2.0", - "{38a8bfd2-ffb1-4011-a8a9-07c91c210727}:1.0", - "{38a8bfd2-ffb1-4011-a8a9-07c91c210727}:2.0", - "{31f92beb-1e99-45c9-a3d3-85951f90c204}:1.0", - "{31f92beb-1e99-45c9-a3d3-85951f90c204}:2.0", - "{f7275e42-6f52-4abd-8ec7-8b140b781386}:1.0", - "{f7275e42-6f52-4abd-8ec7-8b140b781386}:2.0", - "{d37b7067-bb3e-4e81-bcd5-92cf8579e36b}:1.0", - "{d37b7067-bb3e-4e81-bcd5-92cf8579e36b}:2.0", - "{66013d92-5c03-42d5-a851-c749ed5e5479}:1.0", - "{66013d92-5c03-42d5-a851-c749ed5e5479}:2.0", - "{afbf24cc-a74a-4a21-a8a4-46607b64c9aa}:1.0", - "{afbf24cc-a74a-4a21-a8a4-46607b64c9aa}:2.0", - "{4a15d612-077c-44da-95f9-36a5caee0ac8}:1.0", - "{4a15d612-077c-44da-95f9-36a5caee0ac8}:2.0", - "{c11d9cce-5558-4eaa-91d4-acf758365ab2}:1.0", - "{c11d9cce-5558-4eaa-91d4-acf758365ab2}:2.0", - "{3ecabe9f-9b6e-4e3d-ab91-81b33f41843d}:1.0", - "{3ecabe9f-9b6e-4e3d-ab91-81b33f41843d}:2.0", - "{e0694fcf-94d2-44bf-b213-c43c8638dc44}:1.0", - "{e0694fcf-94d2-44bf-b213-c43c8638dc44}:2.0", - "{5256ff44-8502-402c-bd89-2b0691d33944}:1.0", - "{5256ff44-8502-402c-bd89-2b0691d33944}:2.0", - "{1d0ba545-9f5c-4236-8b39-ea50a8680033}:1.0", - "{1d0ba545-9f5c-4236-8b39-ea50a8680033}:2.0", - "{f600d3bc-3a08-47d8-97fc-e0cbdbe752ed}:1.0", - "{f600d3bc-3a08-47d8-97fc-e0cbdbe752ed}:2.0", - "@0d1f9958-ef5d-4312-8efc-b7d52610cdd3:5.0.9", - "@0d1f9958-ef5d-4312-8efc-b7d52610cdd3:5.1.0", - "@0d1f9958-ef5d-4312-8efc-b7d52610cdd3:5.1.1", - "{a19f9576-5f86-4ec2-afd5-b1e3294f2229}:0.1", - "{a19f9576-5f86-4ec2-afd5-b1e3294f2229}:0.2", - "{a19f9576-5f86-4ec2-afd5-b1e3294f2229}:0.3", - "{a19f9576-5f86-4ec2-afd5-b1e3294f2229}:1.0" - ] - }, - "schema": 1767897391591, - "key_format": "{guid}:{version}", - "stash_time": 1767918905992, - "id": "726964ec-1f36-4395-a68a-51412bcaddf6", - "last_modified": 1767918982674 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "lunchlist-highlighter@example.com:1.0.0", - "{da0dd7de-4d69-4079-b996-5b6088b34fbb}:2.0.62", - "{b6874cb7-8ece-43ad-8180-e3f7de48416a}:2.0.62", - "{75f06b56-4cc5-4c20-aa5e-6ccf5b0ad6fd}:2.0.62", - "{692bd1bd-a799-4b3a-8e95-378c841165b8}:2.0.63", - "{692bd1bd-a799-4b3a-8e95-378c841165b8}:2.0.62", - "assistant-ticket-support@ecritel.net:1.0", - "versetto-meteo-brescia@tuodominio.com:1.9.0", - "download-manager-selector@example.com:1.0.0", - "download-manager-selector@example.com:1.1.0", - "download-manager-selector@example.com:1.2.0", - "{ded0b69b-cbfc-4adf-bbfe-655d2f5c66a0}:2.0.0", - "{ded0b69b-cbfc-4adf-bbfe-655d2f5c66a0}:2.0.1", - "{ded0b69b-cbfc-4adf-bbfe-655d2f5c66a0}:2.1.0", - "jid1-STQ4BLHpoWoQZQ@jetpack:2.0.0", - "jid1-STQ4BLHpoWoQZQ@jetpack:2.0.1", - "jid1-STQ4BLHpoWoQZQ@jetpack:2.1.0", - "{5cdb6bb8-c24a-41cd-a299-dbc963fdd707}:1.0", - "{233348b6-f453-4a84-b169-29951063b566}:1.0", - "{8fa03c58-8dd9-4ee4-8d38-c81dc4d0f14f}:1.7", - "firefox-bex@schabi.ch:2.0.0", - "firefox-bex@schabi.ch:2.0.2", - "image-downloader@ozler365:12.7", - "{e66f6a6b-a585-460d-a2c6-c40b4ff17eab}:1.0", - "ia-news-feed@tomas2p:1.0.0", - "{474cdbcf-58c1-4ae4-a2e3-242b8dbc6020}:1.2.4", - "newtab@customurladdon:1.0", - "@b6f94157-e4e5-4425-bc9e-220783aaa10f:1.9.6", - "{b1d9d2c2-9f53-4f6c-9c92-9b8fcb7a7c31}:1.4.0", - "{4f7aa2c1-9f2b-4ff5-b75c-2d5c3d26f2a5}:1.4.2" - ] - }, - "schema": 1767875945506, - "key_format": "{guid}:{version}", - "stash_time": 1767897306589, - "id": "7c892c21-e744-4d3f-886a-5a2faa64735e", - "last_modified": 1767897391436 - }, - { - "schema": 1767875911138, + "schema": 1772584712183, "attachment": { - "hash": "128e4b64d915b1ce81719dc4e069128079bdc705873ffb250b8fda1a22af5657", - "size": 174266, + "hash": "ba518030bb058a7d14a3e1ac2218599992f3196aa6ea99199170289763e2ca84", + "size": 180796, "filename": "filter.bin", - "location": "staging/addons-bloomfilters/c6d34303-4b8e-410a-9f30-58cd15c9eeb3.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": 1767875706366, - "id": "4f0e30ab-8e4f-4973-9796-92048b656347", - "last_modified": 1767875945351 + "generation_time": 1772584506789, + "id": "9de13b9e-c148-4385-ad60-9c940536a3b2", + "last_modified": 1772584766602 }, { - "schema": 1767854190545, + "schema": 1772562997137, "attachment": { - "hash": "cd8e64bf49ba15970bcc52f3a561da888b9c3240ca783a16c129c790116a26d1", - "size": 876445, + "hash": "ee96783e3e744f929e69179eada1f1d1db54586c3ab2139198b557f06f12deca", + "size": 882382, "filename": "filter.bin", - "location": "staging/addons-bloomfilters/318bab3e-2840-4d3f-b1a9-49c76650c0cc.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": 1767875706366, - "id": "2f2d5105-a59b-4d36-91bf-aba0d17dfc24", - "last_modified": 1767875945345 + "generation_time": 1772584506789, + "id": "064d7fc5-9b6c-4ce4-81f4-9b0c74c7c32b", + "last_modified": 1772584766600 } ], - "timestamp": 1771223791639 + "timestamp": 1773642980627 } diff -Nru thunderbird-140.8.0esr/services/settings/dumps/blocklists/gfx.json thunderbird-140.9.0esr/services/settings/dumps/blocklists/gfx.json --- thunderbird-140.8.0esr/services/settings/dumps/blocklists/gfx.json 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/blocklists/gfx.json 2026-03-20 19:18:39.000000000 +0000 @@ -1,6 +1,32 @@ { "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, "vendor": "0x10de", @@ -1583,5 +1609,5 @@ "last_modified": 1480349134090 } ], - "timestamp": 1748485472559 + "timestamp": 1771613837993 } diff -Nru thunderbird-140.8.0esr/services/settings/dumps/main/devtools-compatibility-browsers.json thunderbird-140.9.0esr/services/settings/dumps/main/devtools-compatibility-browsers.json --- thunderbird-140.8.0esr/services/settings/dumps/main/devtools-compatibility-browsers.json 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/main/devtools-compatibility-browsers.json 2026-03-20 19:18:39.000000000 +0000 @@ -1,292 +1,310 @@ { "data": [ { - "name": "WebView on iOS", - "schema": 1769817904477, + "name": "WebView Android", + "schema": 1773446704289, + "status": "planned", + "version": "149", + "browserid": "webview_android", + "id": "ed3ff7b7-dfb0-4141-a35d-85d16c22ed86", + "last_modified": 1773641281301 + }, + { + "name": "Opera Android", + "schema": 1773446703952, "status": "current", - "version": "26.2", - "browserid": "webview_ios", - "id": "a04f4e37-8564-4c6c-8d2c-f47c2ebcf8b6", - "last_modified": 1770021738368 + "version": "96", + "browserid": "opera_android", + "id": "dc01df05-453f-4d2f-b7d2-337a2670e91a", + "last_modified": 1773641281298 }, { - "name": "Safari", - "schema": 1769817904187, + "name": "Quest Browser", + "schema": 1773446703816, "status": "current", - "version": "26.2", - "browserid": "safari", - "id": "050425e8-38bd-4f94-ba06-b558672f10ce", - "last_modified": 1770021738364 + "version": "42.0", + "browserid": "oculus", + "id": "77a75ca3-9282-4e9d-8789-bb7d771ea350", + "last_modified": 1773641281295 }, { - "name": "Edge", - "schema": 1769817904122, + "name": "Chrome Android", + "schema": 1773446703753, "status": "planned", - "version": "147", - "browserid": "edge", - "id": "08fe74cc-038a-4801-9f25-82fbd6468297", - "last_modified": 1770021738359 + "version": "149", + "browserid": "chrome_android", + "id": "c583ee97-ecf9-4bd8-9f22-93d626c24fa0", + "last_modified": 1773641281293 }, { - "name": "Bun", - "schema": 1769817903754, - "status": "current", - "version": "1.3.8", - "browserid": "bun", - "id": "babead5f-8df6-4b0b-8950-c1cdf60819c7", - "last_modified": 1770021738355 + "name": "Chrome", + "schema": 1773446703422, + "status": "planned", + "version": "149", + "browserid": "chrome", + "id": "dff5f94c-b1be-416a-91e6-f0fa2dbffb45", + "last_modified": 1773641281290 }, { - "name": "Safari on iOS", - "schema": 1769817904341, - "status": "current", - "version": "26.2", - "browserid": "safari_ios", - "id": "696b808e-20de-43f7-9b79-26116fb7badd", - "last_modified": 1770021738350 + "name": "WebView Android", + "schema": 1773446704224, + "status": "nightly", + "version": "148", + "browserid": "webview_android", + "id": "cbf9e9ca-4167-4f09-981c-186bfba8ed1e", + "last_modified": 1773641281285 }, { - "name": "Edge", - "schema": 1769817904049, + "name": "Chrome Android", + "schema": 1773446703690, "status": "nightly", - "version": "146", - "browserid": "edge", - "id": "71070e67-3067-4271-acef-cf0bd7a4f555", - "last_modified": 1770021738340 + "version": "148", + "browserid": "chrome_android", + "id": "1dc1d001-8ed2-43a5-b41d-589130d0ac7d", + "last_modified": 1773641281283 }, { - "name": "Edge", - "schema": 1769817903908, - "status": "current", - "version": "144", - "browserid": "edge", - "id": "64945ca2-8c7c-4d04-8a37-dd304f2e93ce", - "last_modified": 1770021738336 + "name": "Chrome", + "schema": 1773446703354, + "status": "nightly", + "version": "148", + "browserid": "chrome", + "id": "a57c427c-57e9-4856-9dae-f515117478d7", + "last_modified": 1773641281281 }, { - "name": "Safari", - "schema": 1769817904261, + "name": "Chrome", + "schema": 1773446703279, "status": "beta", - "version": "26.3", - "browserid": "safari", - "id": "f7f0e108-c839-4036-94f6-1d77b172c85a", - "last_modified": 1770021738332 + "version": "147", + "browserid": "chrome", + "id": "cddd3506-4f9c-42cf-b551-ca28c2533e9a", + "last_modified": 1773641281277 }, { - "name": "WebView on iOS", - "schema": 1769817904540, + "name": "Chrome Android", + "schema": 1773446703623, "status": "beta", - "version": "26.3", - "browserid": "webview_ios", - "id": "8ac8569d-f6dc-41e4-b448-7c54f6923a36", - "last_modified": 1770021738327 + "version": "147", + "browserid": "chrome_android", + "id": "aa7ba8b7-3135-4450-ab5f-5f8d956f1f13", + "last_modified": 1773641281275 }, { - "name": "Safari on iOS", - "schema": 1769817904409, - "status": "beta", - "version": "26.3", - "browserid": "safari_ios", - "id": "916681bd-04e0-4dbe-9c02-965181db1356", - "last_modified": 1770021738323 + "name": "WebView Android", + "schema": 1773446704085, + "status": "current", + "version": "146", + "browserid": "webview_android", + "id": "620f087d-d5c6-4b67-80f4-02358d8298e7", + "last_modified": 1773641281273 }, { - "name": "Edge", - "schema": 1769817903979, + "name": "WebView Android", + "schema": 1773446704150, "status": "beta", - "version": "145", - "browserid": "edge", - "id": "40684037-f3dc-4106-b1f7-91bd4fa18a32", - "last_modified": 1770021738318 + "version": "147", + "browserid": "webview_android", + "id": "18d9eac7-8ed6-40c8-a888-315758fbd983", + "last_modified": 1773641281264 }, { - "name": "Opera Android", - "schema": 1768521904527, + "name": "Chrome Android", + "schema": 1773446703559, "status": "current", - "version": "94", - "browserid": "opera_android", - "id": "aa1e8dcd-0f41-4a37-8690-7aa466ce4b36", - "last_modified": 1768543743687 + "version": "146", + "browserid": "chrome_android", + "id": "1b035778-10c7-4ea3-aeb4-3606fd3483e1", + "last_modified": 1773641281262 }, { - "name": "Firefox for Android", - "schema": 1768521904388, - "status": "planned", - "version": "150", - "browserid": "firefox_android", - "id": "dc9812c3-bdb8-4dcc-880f-67b25f794628", - "last_modified": 1768543743683 + "name": "Chrome", + "schema": 1773446703216, + "status": "current", + "version": "146", + "browserid": "chrome", + "id": "b9100141-3b96-44f6-89b5-2dd19d6dfba6", + "last_modified": 1773641281259 }, { "name": "Firefox", - "schema": 1768521904056, + "schema": 1772237104541, "status": "planned", - "version": "150", + "version": "151", "browserid": "firefox", - "id": "4f1039d1-5e0c-44de-9180-1f46dae6028c", - "last_modified": 1768543743679 - }, - { - "name": "WebView Android", - "schema": 1768521904868, - "status": "planned", - "version": "147", - "browserid": "webview_android", - "id": "18d9eac7-8ed6-40c8-a888-315758fbd983", - "last_modified": 1768543743674 + "id": "ca23dbaa-20c7-4027-9de8-63ec380b2f6e", + "last_modified": 1772548633069 }, { - "name": "Chrome", - "schema": 1768521903366, - "status": "planned", - "version": "147", - "browserid": "chrome", - "id": "cddd3506-4f9c-42cf-b551-ca28c2533e9a", - "last_modified": 1768543743670 + "name": "Bun", + "schema": 1772094719613, + "status": "current", + "version": "1.3.10", + "browserid": "bun", + "id": "8c8475b8-52f3-488b-857b-8b39325285d9", + "last_modified": 1772548633066 }, { - "name": "Chrome Android", - "schema": 1768521903711, + "name": "Firefox for Android", + "schema": 1772237104669, "status": "planned", - "version": "147", - "browserid": "chrome_android", - "id": "aa7ba8b7-3135-4450-ab5f-5f8d956f1f13", - "last_modified": 1768543743667 + "version": "151", + "browserid": "firefox_android", + "id": "cded3e3a-4e7e-4627-80fb-fae915ebc9a0", + "last_modified": 1772548633064 }, { - "name": "WebView Android", - "schema": 1768521904797, - "status": "nightly", - "version": "146", - "browserid": "webview_android", - "id": "620f087d-d5c6-4b67-80f4-02358d8298e7", - "last_modified": 1768543743654 + "name": "Deno", + "schema": 1772064304810, + "status": "current", + "version": "2.7", + "browserid": "deno", + "id": "34c49207-86e7-4cda-af22-c005f1dc2847", + "last_modified": 1772094719547 }, { - "name": "Chrome Android", - "schema": 1768521903645, + "name": "Firefox for Android", + "schema": 1772064305400, "status": "nightly", - "version": "146", - "browserid": "chrome_android", - "id": "1b035778-10c7-4ea3-aeb4-3606fd3483e1", - "last_modified": 1768543743647 + "version": "150", + "browserid": "firefox_android", + "id": "dc9812c3-bdb8-4dcc-880f-67b25f794628", + "last_modified": 1772094719545 }, { - "name": "Chrome", - "schema": 1768521903298, + "name": "Firefox", + "schema": 1772064305105, "status": "nightly", - "version": "146", - "browserid": "chrome", - "id": "b9100141-3b96-44f6-89b5-2dd19d6dfba6", - "last_modified": 1768543743643 + "version": "150", + "browserid": "firefox", + "id": "4f1039d1-5e0c-44de-9180-1f46dae6028c", + "last_modified": 1772094719543 }, { "name": "Firefox for Android", - "schema": 1768521904319, - "status": "nightly", + "schema": 1772064305325, + "status": "beta", "version": "149", "browserid": "firefox_android", "id": "78dc5472-36f7-465d-92c2-3d2ff5d7c323", - "last_modified": 1768543743638 + "last_modified": 1772094719541 }, { "name": "Firefox", - "schema": 1768521903991, - "status": "nightly", + "schema": 1772064305036, + "status": "beta", "version": "149", "browserid": "firefox", "id": "2154c26d-3d7d-4ddc-a6ec-de10aeaba65f", - "last_modified": 1768543743635 + "last_modified": 1772094719534 }, { "name": "Firefox", - "schema": 1768521903925, - "status": "beta", + "schema": 1772064304967, + "status": "current", "version": "148", "browserid": "firefox", "id": "4ebdb515-56c0-4aae-bf80-631df396b3c5", - "last_modified": 1768543743631 + "last_modified": 1772094719532 }, { "name": "Firefox for Android", - "schema": 1768521904254, - "status": "beta", + "schema": 1772064305258, + "status": "current", "version": "148", "browserid": "firefox_android", "id": "5e1afc2d-b301-49b8-9052-0d0ceed8d7a3", - "last_modified": 1768543743627 + "last_modified": 1772094719530 }, { - "name": "Firefox for Android", - "schema": 1768521904189, - "status": "current", - "version": "147", - "browserid": "firefox_android", - "id": "6d4ac1b5-fae6-4cf0-8966-3833c78d2d6d", - "last_modified": 1768543743623 + "name": "WebView on iOS", + "schema": 1771718703666, + "status": "beta", + "version": "26.4", + "browserid": "webview_ios", + "id": "d3803d9b-d96b-4c3b-9ed9-1ef5d4639858", + "last_modified": 1771946254834 }, { - "name": "Firefox", - "schema": 1768521903851, - "status": "current", - "version": "147", - "browserid": "firefox", - "id": "da813114-57b4-435c-831e-4fc28589a55c", - "last_modified": 1768543743619 + "name": "Safari", + "schema": 1771718703538, + "status": "beta", + "version": "26.4", + "browserid": "safari", + "id": "79285f6d-a28c-459d-8265-7044f2066d5b", + "last_modified": 1771946254829 }, { - "name": "WebView Android", - "schema": 1768521904728, - "status": "beta", - "version": "145", - "browserid": "webview_android", - "id": "51da2d32-d596-43de-8dea-bb19b07b2bf0", - "last_modified": 1768543743609 + "name": "Edge", + "schema": 1771718703469, + "status": "planned", + "version": "148", + "browserid": "edge", + "id": "25d5ebbc-8734-46b8-881c-949b2912533e", + "last_modified": 1771946254825 }, { - "name": "Chrome", - "schema": 1768521903235, + "name": "Safari on iOS", + "schema": 1771718703606, "status": "beta", - "version": "145", - "browserid": "chrome", - "id": "1bcd114b-13e9-428b-9d54-bd2d993aa5bb", - "last_modified": 1768543743604 + "version": "26.4", + "browserid": "safari_ios", + "id": "0b19a21d-8494-4a35-8875-bf1905f5893a", + "last_modified": 1771946254821 }, { - "name": "Chrome Android", - "schema": 1768521903586, + "name": "Edge", + "schema": 1771718703401, + "status": "nightly", + "version": "147", + "browserid": "edge", + "id": "08fe74cc-038a-4801-9f25-82fbd6468297", + "last_modified": 1771946254814 + }, + { + "name": "Edge", + "schema": 1771718703328, "status": "beta", + "version": "146", + "browserid": "edge", + "id": "71070e67-3067-4271-acef-cf0bd7a4f555", + "last_modified": 1771946254810 + }, + { + "name": "Edge", + "schema": 1771718703259, + "status": "current", "version": "145", - "browserid": "chrome_android", - "id": "4363f23f-12a8-40d5-aedb-9c90514c368c", - "last_modified": 1768543743599 + "browserid": "edge", + "id": "40684037-f3dc-4106-b1f7-91bd4fa18a32", + "last_modified": 1771946254801 }, { - "name": "WebView Android", - "schema": 1768521904664, + "name": "Safari", + "schema": 1771027506130, "status": "current", - "version": "144", - "browserid": "webview_android", - "id": "336a5fe9-5846-4e9d-9039-be3d1d82f97f", - "last_modified": 1768543743595 + "version": "26.3", + "browserid": "safari", + "id": "f7f0e108-c839-4036-94f6-1d77b172c85a", + "last_modified": 1771325515122 }, { - "name": "Chrome", - "schema": 1768521903164, + "name": "WebView on iOS", + "schema": 1771027506722, "status": "current", - "version": "144", - "browserid": "chrome", - "id": "445d8b56-0300-4c6b-8e1f-0d1ab3f45500", - "last_modified": 1768543743591 + "version": "26.3", + "browserid": "webview_ios", + "id": "8ac8569d-f6dc-41e4-b448-7c54f6923a36", + "last_modified": 1771325515117 }, { - "name": "Chrome Android", - "schema": 1768521903518, + "name": "Safari on iOS", + "schema": 1771027506270, "status": "current", - "version": "144", - "browserid": "chrome_android", - "id": "196eb3bc-6b04-4a4e-875f-b46ff5d5e6da", - "last_modified": 1768543743587 + "version": "26.3", + "browserid": "safari_ios", + "id": "916681bd-04e0-4dbe-9c02-965181db1356", + "last_modified": 1771325515111 }, { "name": "Samsung Internet", @@ -334,15 +352,6 @@ "last_modified": 1762424892945 }, { - "name": "Deno", - "schema": 1759363503600, - "status": "current", - "version": "2.5.0", - "browserid": "deno", - "id": "a44dce57-9592-4b86-bd9c-cdf6223e7e75", - "last_modified": 1759390855835 - }, - { "name": "Firefox for Android", "schema": 1753574703338, "status": "esr", @@ -368,16 +377,7 @@ "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": 1770021738368 + "timestamp": 1773641281301 } diff -Nru thunderbird-140.8.0esr/services/settings/dumps/main/devtools-devices.json thunderbird-140.9.0esr/services/settings/dumps/main/devtools-devices.json --- thunderbird-140.8.0esr/services/settings/dumps/main/devtools-devices.json 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/main/devtools-devices.json 2026-03-20 19:18:39.000000000 +0000 @@ -1,158 +1,349 @@ { "data": [ { - "os": "custom", - "name": "1080p Full HD Television", - "type": "televisions", - "touch": false, - "width": 1920, - "height": 1080, - "schema": 1653402055990, + "name": "iPhone 16 Pro Max", + "type": "phones", + "touch": true, + "width": 440, + "height": 956, + "schema": 1773213674077, "featured": false, - "userAgent": "", - "pixelRatio": "1", - "id": "fdc3221b-38e3-40a6-8497-6a9259a8d6b4", - "last_modified": 1653469171354 + "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 }, { - "os": "custom", - "name": "4K Ultra HD Television", - "type": "televisions", - "touch": false, - "width": 3840, - "height": 2160, - "schema": 1653402055166, + "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 (Firefox)", + "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 Firefox/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": "", - "pixelRatio": "1", - "id": "3c1e2dbc-a9c3-4302-9d14-5c01f56f8dba", - "last_modified": 1653469171351 + "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 }, { - "os": "", - "name": "Laptop with MDPI screen", - "type": "laptops", - "touch": false, - "width": 1280, - "height": 800, - "schema": 1653402054240, + "name": "iPhone Air", + "type": "phones", + "touch": true, + "width": 420, + "height": 921, + "schema": 1773213670567, "featured": false, - "userAgent": "", - "pixelRatio": "1", - "id": "77794a97-2c31-4a76-be20-897a1b91e534", - "last_modified": 1653469171347 + "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 }, { - "os": "", - "name": "Laptop with touch", - "type": "laptops", + "name": "iPhone 15 / 16 Pro", + "type": "phones", "touch": true, - "width": 1280, - "height": 950, - "schema": 1653402053431, + "width": 402, + "height": 874, + "schema": 1773213676777, "featured": false, - "userAgent": "", - "pixelRatio": "1", - "id": "9a1e862c-2cf0-493b-8755-9d8702b8cdbd", - "last_modified": 1653469171344 + "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 }, { - "os": "", - "name": "Laptop with HiDPI screen", - "type": "laptops", - "touch": false, - "width": 1440, - "height": 900, - "schema": 1653402052509, + "name": "iPhone 14 / 15 / 16 Plus", + "type": "phones", + "touch": true, + "width": 430, + "height": 932, + "schema": 1773213681352, "featured": false, - "userAgent": "", - "pixelRatio": "2", - "id": "194d32f6-88a8-451e-87a4-99e91b5426e0", - "last_modified": 1653469171341 + "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 }, { - "os": "iOS", - "name": "iPad Air", + "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": 1653402051661, - "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", + "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": "8c353425-dbdc-4497-a790-53df6c207e6e", - "last_modified": 1653469171338 + "id": "995c3d3e-de30-4694-b0ad-ae168d7748b2", + "last_modified": 1773214792503 }, { - "os": "custom", - "name": "720p HD Television", - "type": "televisions", - "touch": false, - "width": 1280, - "height": 720, - "schema": 1653402050864, + "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": "", - "pixelRatio": "1", - "id": "836e7e6c-2b2c-429c-852f-3d6659130c38", - "last_modified": 1653469171335 + "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 }, { - "os": "", - "name": "iPad Mini", + "name": "Galaxy Tab S9", "type": "tablets", "touch": true, - "width": 768, - "height": 1024, - "schema": 1653402049972, + "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 (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": "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": "0f41a7a2-6916-423a-b64a-047d0680a2a3", - "last_modified": 1653469171331 + "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", + "type": "televisions", + "touch": false, + "width": 1920, + "height": 1080, + "schema": 1773152386973, + "featured": true, + "userAgent": "", + "pixelRatio": "1", + "id": "fdc3221b-38e3-40a6-8497-6a9259a8d6b4", + "last_modified": 1773214792468 }, { "os": "iOS", - "name": "iPad Pro (11-inch)", + "name": "iPad Pro 11-inch (old)", "type": "tablets", "touch": true, "width": 834, "height": 1194, - "schema": 1653402049176, + "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": 1653469171328 + "last_modified": 1773214792466 }, { "os": "iOS", - "name": "iPad Pro (12.9-inch)", + "name": "iPad Pro 12.9-inch (old)", "type": "tablets", "touch": true, "width": 1024, "height": 1366, - "schema": 1653402048304, + "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": 1653469171325 + "last_modified": 1773214792464 + }, + { + "os": "custom", + "name": "4K Ultra HD Television", + "type": "televisions", + "touch": false, + "width": 3840, + "height": 2160, + "schema": 1773152793884, + "featured": true, + "userAgent": "", + "pixelRatio": "1", + "id": "3c1e2dbc-a9c3-4302-9d14-5c01f56f8dba", + "last_modified": 1773214792462 }, { "os": "", - "name": "Nexus 10", - "type": "tablets", + "name": "Laptop with MDPI screen", + "type": "laptops", + "touch": false, + "width": 1280, + "height": 800, + "schema": 1773152889465, + "featured": true, + "userAgent": "", + "pixelRatio": "1", + "id": "77794a97-2c31-4a76-be20-897a1b91e534", + "last_modified": 1773214792460 + }, + { + "os": "", + "name": "Laptop with touch", + "type": "laptops", "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 + "width": 1280, + "height": 950, + "schema": 1773152886133, + "featured": true, + "userAgent": "", + "pixelRatio": "1", + "id": "9a1e862c-2cf0-493b-8755-9d8702b8cdbd", + "last_modified": 1773214792456 }, { "os": "", @@ -161,12 +352,12 @@ "touch": true, "width": 810, "height": 1080, - "schema": 1653402046688, - "featured": true, + "schema": 1773152834942, + "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": "dc9416b1-958f-4711-8b13-ccc4871efba0", - "last_modified": 1653469171319 + "last_modified": 1773214792454 }, { "os": "iOS", @@ -175,26 +366,12 @@ "touch": true, "width": 375, "height": 812, - "schema": 1653402045852, - "featured": true, + "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": 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 + "last_modified": 1773214792452 }, { "os": "iOS", @@ -203,12 +380,12 @@ "touch": true, "width": 390, "height": 844, - "schema": 1653402044074, - "featured": true, + "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": 1653469171310 + "last_modified": 1773214792447 }, { "os": "iOS", @@ -217,12 +394,12 @@ "touch": true, "width": 428, "height": 926, - "schema": 1653402043230, - "featured": true, + "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": 1653469171307 + "last_modified": 1773214792445 }, { "os": "iOS", @@ -231,40 +408,26 @@ "touch": true, "width": 414, "height": 896, - "schema": 1653402042024, - "featured": true, + "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": 1653469171304 + "last_modified": 1773214792443 }, { "os": "iOS", - "name": "iPhone SE 2nd gen", + "name": "iPhone SE", "type": "phones", "touch": true, "width": 375, "height": 667, - "schema": 1653402041203, + "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": 1653469171301 - }, - { - "os": "iOS", - "name": "iPhone XS Max", - "type": "phones", - "touch": true, - "width": 414, - "height": 896, - "schema": 1653402040241, - "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": "3", - "id": "09f6a69f-7d40-469f-a052-dbee6f260889", - "last_modified": 1653469171298 + "last_modified": 1773214792441 }, { "os": "iOS", @@ -273,12 +436,12 @@ "touch": true, "width": 375, "height": 812, - "schema": 1653402039442, - "featured": true, + "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": 1653469171295 + "last_modified": 1773214792439 }, { "os": "iOS", @@ -287,40 +450,12 @@ "touch": true, "width": 414, "height": 896, - "schema": 1653402038431, - "featured": false, + "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": 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", - "type": "phones", - "touch": true, - "width": 375, - "height": 812, - "schema": 1653402036680, - "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": "3", - "id": "2375f7f9-e2b0-42d1-8a97-e5fe2dbdc8f0", - "last_modified": 1653469171285 + "last_modified": 1773214792436 }, { "os": "", @@ -329,152 +464,12 @@ "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", + "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": 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 Firefox/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 + "last_modified": 1773214792432 }, { "os": "Android", @@ -483,26 +478,26 @@ "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", + "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": 1653469171248 + "last_modified": 1773214792409 }, { "os": "Android", - "name": "Galaxy S20 Ultra", + "name": "Galaxy S9/S9+", "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 + "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", @@ -511,54 +506,26 @@ "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", + "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": 1653469171242 + "last_modified": 1773214792397 }, { "os": "Android", "name": "Galaxy S10/S10+", "type": "phones", - "touch": false, + "touch": true, "width": 360, "height": 760, - "schema": 1653402023695, + "schema": 1773152804867, "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", + "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": 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 + "last_modified": 1773214792395 }, { "os": "Android", @@ -567,69 +534,83 @@ "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", + "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": 1653469171230 + "last_modified": 1773214792388 }, { - "os": "", - "name": "Microsoft Lumia 550", - "type": "phones", + "os": "iOS", + "name": "iPad Air", + "type": "tablets", "touch": true, - "width": 360, - "height": 640, - "schema": 1653402019422, + "width": 820, + "height": 1180, + "schema": 1653402051661, "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", + "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": "b447bc92-6bef-4ac3-b56c-102a725d508c", - "last_modified": 1653469171227 + "id": "8c353425-dbdc-4497-a790-53df6c207e6e", + "last_modified": 1653469171338 }, { - "os": "Android", - "name": "Galaxy S9/S9+", - "type": "phones", + "os": "custom", + "name": "720p HD Television", + "type": "televisions", + "touch": false, + "width": 1280, + "height": 720, + "schema": 1653402050864, + "featured": false, + "userAgent": "", + "pixelRatio": "1", + "id": "836e7e6c-2b2c-429c-852f-3d6659130c38", + "last_modified": 1653469171335 + }, + { + "os": "", + "name": "iPad Mini", + "type": "tablets", "touch": true, - "width": 360, - "height": 740, - "schema": 1653402018618, + "width": 768, + "height": 1024, + "schema": 1653402049972, "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 + "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": "0f41a7a2-6916-423a-b64a-047d0680a2a3", + "last_modified": 1653469171331 }, { - "os": "Android", - "name": "Galaxy Note 20", + "os": "iOS", + "name": "iPhone XS Max", "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 + "width": 414, + "height": 896, + "schema": 1653402040241, + "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": "3", + "id": "09f6a69f-7d40-469f-a052-dbee6f260889", + "last_modified": 1653469171298 }, { - "os": "", - "name": "Nexus 7", - "type": "tablets", + "os": "iOS", + "name": "iPhone X/XS", + "type": "phones", "touch": true, - "width": 600, - "height": 960, - "schema": 1653401612907, + "width": 375, + "height": 812, + "schema": 1653402036680, "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 + "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": "3", + "id": "2375f7f9-e2b0-42d1-8a97-e5fe2dbdc8f0", + "last_modified": 1653469171285 } ], - "timestamp": 1653469171354 + "timestamp": 1773214792526 } diff -Nru thunderbird-140.8.0esr/services/settings/dumps/main/remote-permissions.json thunderbird-140.9.0esr/services/settings/dumps/main/remote-permissions.json --- thunderbird-140.8.0esr/services/settings/dumps/main/remote-permissions.json 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/main/remote-permissions.json 2026-03-20 19:18:40.000000000 +0000 @@ -1,13 +1,4 @@ { - "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 + "data": [], + "timestamp": 1771411876459 } Binary files /srv/release.debian.org/tmp/ejxCm9TXkE/thunderbird-140.8.0esr/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3 and /srv/release.debian.org/tmp/dwU9Rkj2sZ/thunderbird-140.9.0esr/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3 differ diff -Nru thunderbird-140.8.0esr/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3.meta.json thunderbird-140.9.0esr/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3.meta.json --- thunderbird-140.8.0esr/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3.meta.json 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3.meta.json 2026-03-20 19:18:39.000000000 +0000 @@ -1 +1 @@ -{"schema":1743687735700,"imageSize":16,"attachment":{"hash":"d994f806b1e4225b50be5ab681b2cecf845cc216a19a432d878cea3cb815bafd","size":2799,"filename":"ddg-16-firefox.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 +{"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 diff -Nru thunderbird-140.8.0esr/services/settings/dumps/main/search-config-icons.json thunderbird-140.9.0esr/services/settings/dumps/main/search-config-icons.json --- thunderbird-140.8.0esr/services/settings/dumps/main/search-config-icons.json 2026-02-19 21:35:11.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/main/search-config-icons.json 2026-03-20 19:18:39.000000000 +0000 @@ -1,6 +1,57 @@ { "data": [ { + "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, "attachment": { @@ -441,23 +492,6 @@ "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, "attachment": { @@ -1007,22 +1041,6 @@ "last_modified": 1744118264847 }, { - "schema": 1743687735700, - "imageSize": 16, - "attachment": { - "hash": "d994f806b1e4225b50be5ab681b2cecf845cc216a19a432d878cea3cb815bafd", - "size": 2799, - "filename": "ddg-16-firefox.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, "attachment": { @@ -1172,5 +1190,5 @@ "last_modified": 1744118264825 } ], - "timestamp": 1765918784979 + "timestamp": 1772466505212 } diff -Nru thunderbird-140.8.0esr/services/settings/dumps/main/search-config-v2.json thunderbird-140.9.0esr/services/settings/dumps/main/search-config-v2.json --- thunderbird-140.8.0esr/services/settings/dumps/main/search-config-v2.json 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/main/search-config-v2.json 2026-03-20 19:18:40.000000000 +0000 @@ -2576,7 +2576,6 @@ "default": "Google Lens" }, "excludePartnerCodeFromTelemetry": true, - "isNewUntil": "2025-12-01", "params": [ { "name": "ep", @@ -2589,9 +2588,9 @@ }, "id": "7ace4aa1-e762-4f4b-87b9-b23b3c3a930b", "identifier": "google", - "last_modified": 1761573989454, + "last_modified": 1772114960790, "recordType": "engine", - "schema": 1761358547622, + "schema": 1772064008248, "variants": [ { "environment": { @@ -3431,9 +3430,9 @@ }, "id": "bb836721-7be9-4de6-ac18-520189a69076", "identifier": "perplexity", - "last_modified": 1763654608996, + "last_modified": 1772114960787, "recordType": "engine", - "schema": 1763604941875, + "schema": 1772067581442, "variants": [ { "environment": { @@ -3442,29 +3441,7 @@ "firefox", "firefox-ios" ] - }, - "isNewUntil": "2025-10-21", - "subVariants": [ - { - "environment": { - "applications": [ - "firefox" - ], - "minVersion": "143.0a1" - }, - "urls": { - "trending": { - "base": "https://www.perplexity.ai/rest/autosuggest/list-trending-suggest", - "params": [ - { - "name": "lang", - "value": "{acceptLanguages}" - } - ] - } - } - } - ] + } }, { "environment": { @@ -8409,5 +8386,5 @@ "schema": 1707824831520 } ], - "timestamp": 1764082724032 + "timestamp": 1772114960790 } diff -Nru thunderbird-140.8.0esr/services/settings/dumps/main/search-telemetry-v2.json thunderbird-140.9.0esr/services/settings/dumps/main/search-telemetry-v2.json --- thunderbird-140.8.0esr/services/settings/dumps/main/search-telemetry-v2.json 2026-02-19 21:35:11.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/main/search-telemetry-v2.json 2026-03-20 19:18:39.000000000 +0000 @@ -1,138 +1,7 @@ { "data": [ { - "isSPA": true, - "schema": 1756952145762, - "subframes": [], - "components": [ - { - "type": "ad_image_row", - "included": { - "parent": { - "selector": "[data-testid='pam.container']" - }, - "children": [ - { - "selector": "[data-slide-index]", - "countChildren": true - } - ] - } - }, - { - "type": "ad_link", - "included": { - "parent": { - "selector": "[data-testid='adResult']" - } - } - }, - { - "type": "incontent_searchbox", - "topDown": true, - "included": { - "parent": { - "selector": "._1zdrb._1cR1n" - }, - "related": { - "selector": "#search-suggestions" - }, - "children": [ - { - "selector": "input[type='search']" - } - ] - } - }, - { - "type": "ad_link", - "default": true - } - ], - "shoppingTab": { - "regexp": "t=shopping", - "selector": "[data-testid='shoppingNavItem']", - "inspectRegexpInSERP": true - }, - "taggedCodes": [ - "ff_android", - "ff_ios", - "brz-moz", - "firefoxqwant" - ], - "telemetryId": "qwant", - "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 - }, - "queryParamName": "q", - "queryParamNames": [ - "q" - ], - "searchPageRegexp": "^https://www\\.qwant\\.com/", - "filter_expression": "env.version|versionCompare(\"124.0a1\")>=0", - "searchPageMatches": [ - "https://www.qwant.com/*" - ], - "followOnParamNames": [], - "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/" - ], - "id": "19c434a3-d173-4871-9743-290ac92a3f6b", - "last_modified": 1757010621729 - }, - { - "schema": 1754878540963, + "schema": 1771804812409, "subframes": [], "components": [ { @@ -202,6 +71,15 @@ } }, { + "type": "refined_search_buttons", + "topDown": true, + "included": { + "parent": { + "selector": "a.nPDzT" + } + } + }, + { "type": "ad_link", "excluded": { "parent": { @@ -433,7 +311,138 @@ "url" ], "id": "635a3325-1995-42d6-be09-dbe4b2a95453", - "last_modified": 1754960964129 + "last_modified": 1772656186787 + }, + { + "isSPA": true, + "schema": 1756952145762, + "subframes": [], + "components": [ + { + "type": "ad_image_row", + "included": { + "parent": { + "selector": "[data-testid='pam.container']" + }, + "children": [ + { + "selector": "[data-slide-index]", + "countChildren": true + } + ] + } + }, + { + "type": "ad_link", + "included": { + "parent": { + "selector": "[data-testid='adResult']" + } + } + }, + { + "type": "incontent_searchbox", + "topDown": true, + "included": { + "parent": { + "selector": "._1zdrb._1cR1n" + }, + "related": { + "selector": "#search-suggestions" + }, + "children": [ + { + "selector": "input[type='search']" + } + ] + } + }, + { + "type": "ad_link", + "default": true + } + ], + "shoppingTab": { + "regexp": "t=shopping", + "selector": "[data-testid='shoppingNavItem']", + "inspectRegexpInSERP": true + }, + "taggedCodes": [ + "ff_android", + "ff_ios", + "brz-moz", + "firefoxqwant" + ], + "telemetryId": "qwant", + "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 + }, + "queryParamName": "q", + "queryParamNames": [ + "q" + ], + "searchPageRegexp": "^https://www\\.qwant\\.com/", + "filter_expression": "env.version|versionCompare(\"124.0a1\")>=0", + "searchPageMatches": [ + "https://www.qwant.com/*" + ], + "followOnParamNames": [], + "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/" + ], + "id": "19c434a3-d173-4871-9743-290ac92a3f6b", + "last_modified": 1757010621729 }, { "schema": 1753236937989, @@ -976,5 +985,5 @@ "last_modified": 1741781945955 } ], - "timestamp": 1757010621729 + "timestamp": 1772656186787 } diff -Nru thunderbird-140.8.0esr/services/settings/dumps/security-state/intermediates.json thunderbird-140.9.0esr/services/settings/dumps/security-state/intermediates.json --- thunderbird-140.8.0esr/services/settings/dumps/security-state/intermediates.json 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/security-state/intermediates.json 2026-03-20 19:18:40.000000000 +0000 @@ -1,6 +1,1696 @@ { "data": [ { + "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": 1771509557311, + "derHash": "wAO4yz8Ey2gNnidXfUl+PG/r4+KkALepKwml6zjJ+sc=", + "attachment": { + "hash": "bba6fee9c638fc0bb66f0aca6a04feb22f2437cc8810caafa472b61983865cc8", + "size": 2300, + "filename": "qEARbagEM4uxwIMf9T4As1lIb5Nh6EAgvw2YzeHYK7w=.pem", + "location": "security-state-staging/intermediates/cfc4f010-7021-4f72-bae1-e536cb9563a3.pem", + "mimetype": "application/x-pem-file" + }, + "id": "0dac995c-5c6c-4a1f-af61-1fa908290896", + "last_modified": 1771513022842 + }, + { + "schema": 1771509556805, + "derHash": "CDNRe9bX7gEhcyLLqHM8ETRoh/BlNATyTe0fjkhcK2s=", + "attachment": { + "hash": "0c4094f2c3726037de2909d5d0a0383023b486a974d1d9e84dabff44540c8754", + "size": 1772, + "filename": "9aRZ9FaploJqrFZWXeqoWgPs7XVI3lOweGuCzG9fKGQ=.pem", + "location": "security-state-staging/intermediates/ae47ea83-973b-4d3b-ab78-6537f2989259.pem", + "mimetype": "application/x-pem-file" + }, + "id": "276adda4-a8c0-4dd4-932d-9428d05875f5", + "last_modified": 1771513022838 + }, + { + "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": 1771379992866, + "derHash": "48hVL2s5Nmtartt2CKc+P9aNEAwTCcsVcYFD6oaD8lQ=", + "attachment": { + "hash": "20e9f9718ba6acec1bbe1e8b095d4b53b35c79efe52994dec2244c04b49fc187", + "size": 1366, + "filename": "xC5Mppf2n30ntcbkf0_mu7qM2c8gkAWweKnBTAo1aZw=.pem", + "location": "security-state-staging/intermediates/b412deb9-2345-420d-9286-e781b68cbf1a.pem", + "mimetype": "application/x-pem-file" + }, + "id": "3fd60854-54de-441c-ba8a-5d145fb317e7", + "last_modified": 1771383422825 + }, + { + "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": 1771379971011, + "derHash": "kV1miBHRlcx8lhTcP4KN87KRs15hCrsua0SThi9N43k=", + "attachment": { + "hash": "d1dfcd3b3f42e41a05f041c27d4909d19c9a46c54f7fc371e001a9d7bd0d47d3", + "size": 2463, + "filename": "PXOyA0uXo2z7W15EJ48em_wITc8eGkDuyCeMIUj31FA=.pem", + "location": "security-state-staging/intermediates/598d4331-9fed-442a-8685-ac3f0326bc29.pem", + "mimetype": "application/x-pem-file" + }, + "id": "37a059d7-c2b2-4bbf-80d3-41162a374908", + "last_modified": 1771383422632 + }, + { + "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": { @@ -4187,32 +5877,6 @@ "last_modified": 1748789822362 }, { - "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": 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": 1748570266149, "derHash": "QYuXFAxxBYoJ6TOwidDVaD4xM81fclSPbBWhdXm6J9s=", "attachment": { @@ -5630,175 +7294,6 @@ "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=", "attachment": { @@ -7831,24 +9326,6 @@ "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=", "subject": "CN=emSign Root TLS CA - G3,O=eMudhra Technologies Limited,C=IN", @@ -8389,24 +9866,6 @@ "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=", "subject": "CN=JoySSL DV TLS G2 R33 CA,O=JoySSL Limited,C=CN", @@ -15031,24 +16490,6 @@ "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=", "subject": "CN=Entrust Certification Authority - L1J,OU=See www.entrust.net/legal-terms+OU=(c) 2016 Entrust\\, Inc. - for authorized use only,O=Entrust\\, Inc.,C=US", @@ -17335,24 +18776,6 @@ "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=", "subject": "CN=e-Szigno Class3 SSL CA 2017,O=Microsec Ltd.,L=Budapest,C=HU", @@ -17569,24 +18992,6 @@ "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=", "subject": "CN=certSIGN Web CA,O=CERTSIGN SA,C=RO", @@ -18307,24 +19712,6 @@ "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=", "subject": "CN=DigiCert Global G2 TLS RSA SHA256 2020 CA1,O=DigiCert Inc,C=US", @@ -24391,24 +25778,6 @@ "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=", "subject": "CN=WebNIC ECC Extended Validation Secure Site CA,OU=Controlled by Sectigo exclusively for WebNIC,O=WebNIC (Web Commerce Communications (Singapore) Pte. Ltd.),L=Singapore,C=SG", @@ -27199,60 +28568,6 @@ "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=", "subject": "CN=ZwTrus ECC DV SSL CA,O=北京中万网络科技有限责任公司,C=CN", @@ -27379,24 +28694,6 @@ "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=", "subject": "CN=TrustAsia ECC DV TLS CA G3,O=TrustAsia Technologies\\, Inc.,C=CN", @@ -27595,24 +28892,6 @@ "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=", "subject": "CN=Amazon Root CA 4,O=Amazon,C=US", @@ -27991,24 +29270,6 @@ "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=", "subject": "CN=University of the Aegean TLS RSA SubCA R1,O=Hellenic Academic and Research Institutions CA,C=GR", @@ -28045,24 +29306,6 @@ "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=", "subject": "CN=Trusted Root TLS CA SHA256 G3,O=GlobalSign nv-sa,C=BE", @@ -28081,24 +29324,6 @@ "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=", "subject": "CN=AlpiroSSL ECC DV CA,O=Alpiro s.r.o.,C=CZ", @@ -28135,60 +29360,6 @@ "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=", "subject": "CN=GlobalSign Atlas E46 EV TLS CA 2020,O=GlobalSign nv-sa,C=BE", @@ -28225,24 +29396,6 @@ "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=", "subject": "CN=CertCloud RSA TLS CA,O=CertCloud Pte. Ltd.,C=SG", @@ -28477,24 +29630,6 @@ "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=", "subject": "CN=HARICA TLS ECC Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR", @@ -28513,24 +29648,6 @@ "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=", "subject": "CN=PSW GROUP (RSA) DV CA,O=PSW GROUP GmbH & Co. KG,C=DE", @@ -28603,24 +29720,6 @@ "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=", "subject": "CN=e-Szigno Qualified Organization CA 2017,O=Microsec Ltd.,L=Budapest,C=HU", @@ -30349,24 +31448,6 @@ "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=", "subject": "CN=eMudhra ECC Domain Validation Secure Server CA,O=eMudhra Technologies Limited,L=Bengaluru,ST=Karnataka,C=IN", @@ -31087,24 +32168,6 @@ "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=", "subject": "CN=Sectigo ECC Domain Validation Secure Server CA 2,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB", @@ -31159,42 +32222,6 @@ "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=", "subject": "CN=emSign ECC Device CA - C3,OU=emSign PKI,O=eMudhra Inc,C=US", @@ -31249,5 +32276,5 @@ "last_modified": 1559865884636 } ], - "timestamp": 1770955022893 + "timestamp": 1773460622721 } diff -Nru thunderbird-140.8.0esr/services/settings/dumps/security-state/onecrl.json thunderbird-140.9.0esr/services/settings/dumps/security-state/onecrl.json --- thunderbird-140.8.0esr/services/settings/dumps/security-state/onecrl.json 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/services/settings/dumps/security-state/onecrl.json 2026-03-20 19:18:40.000000000 +0000 @@ -1,6 +1,666 @@ { "data": [ { + "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", @@ -26234,5 +26894,5 @@ "last_modified": 1480349158647 } ], - "timestamp": 1765387587348 + "timestamp": 1773176482130 } diff -Nru thunderbird-140.8.0esr/sourcestamp.txt thunderbird-140.9.0esr/sourcestamp.txt --- thunderbird-140.8.0esr/sourcestamp.txt 2026-02-19 21:35:54.000000000 +0000 +++ thunderbird-140.9.0esr/sourcestamp.txt 2026-03-20 19:19:25.000000000 +0000 @@ -1,3 +1,3 @@ -20260219185030 -https://hg.mozilla.org/releases/comm-esr140/rev/aa377fbf351e6b10b053e6afa421755c82d5fcf7 -https://hg-edge.mozilla.org/releases/mozilla-esr140/rev/b23aff4bbac16e44f2a9d3127c18616acfef6166 +20260320073352 +https://hg.mozilla.org/releases/comm-esr140/rev/8be9f2d3072c225a1e5f153745a18984c2babf8f +https://hg.mozilla.org/releases/mozilla-esr140/rev/ad4a5ceb5516151b4014e2af6c1565c68ab330cc diff -Nru thunderbird-140.8.0esr/taskcluster/gecko_taskgraph/transforms/mark_as_merged.py thunderbird-140.9.0esr/taskcluster/gecko_taskgraph/transforms/mark_as_merged.py --- thunderbird-140.8.0esr/taskcluster/gecko_taskgraph/transforms/mark_as_merged.py 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/taskcluster/gecko_taskgraph/transforms/mark_as_merged.py 2026-03-20 19:18:39.000000000 +0000 @@ -23,7 +23,7 @@ job, "scopes", item_name=job["name"], - **{"release-level": release_level(config.params)}, + **{"release-level": release_level(config.params["project"])}, ) job["worker"]["merge-automation-id"] = merge_automation_id diff -Nru thunderbird-140.8.0esr/taskcluster/gecko_taskgraph/util/bugbug.py thunderbird-140.9.0esr/taskcluster/gecko_taskgraph/util/bugbug.py --- thunderbird-140.8.0esr/taskcluster/gecko_taskgraph/util/bugbug.py 2026-02-19 21:35:11.000000000 +0000 +++ thunderbird-140.9.0esr/taskcluster/gecko_taskgraph/util/bugbug.py 2026-03-20 19:18:39.000000000 +0000 @@ -19,7 +19,7 @@ except ImportError: from time import time as monotonic -BUGBUG_BASE_URL = "https://bugbug.herokuapp.com" +BUGBUG_BASE_URL = "https://bugbug.moz.tools" RETRY_TIMEOUT = 9 * 60 # seconds RETRY_INTERVAL = 10 # seconds diff -Nru thunderbird-140.8.0esr/taskcluster/kinds/fetch/toolchains.yml thunderbird-140.9.0esr/taskcluster/kinds/fetch/toolchains.yml --- thunderbird-140.8.0esr/taskcluster/kinds/fetch/toolchains.yml 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/taskcluster/kinds/fetch/toolchains.yml 2026-03-20 19:18:39.000000000 +0000 @@ -173,13 +173,13 @@ sha256: 13f067f38969faf163d93a804b48ea0576790a202c8f10291f2000f0e356e934 size: 41282726 -zlib-1.3.1: - description: zlib 1.3.1 source code +zlib-1.3.2: + description: zlib 1.3.2 source code fetch: type: static-url - url: https://zlib.net/fossils/zlib-1.3.1.tar.gz - sha256: 9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23 - size: 1512791 + url: https://github.com/madler/zlib/releases/download/v1.3.2/zlib-1.3.2.tar.xz + sha256: d7a0654783a4da529d1bb793b7ad9c3318020af77667bcae35f95d0e42a792f3 + size: 1320064 nsis-3.07: description: nsis 3.07 source code diff -Nru thunderbird-140.8.0esr/taskcluster/kinds/mark-as-merged/kind.yml thunderbird-140.9.0esr/taskcluster/kinds/mark-as-merged/kind.yml --- thunderbird-140.8.0esr/taskcluster/kinds/mark-as-merged/kind.yml 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/taskcluster/kinds/mark-as-merged/kind.yml 2026-03-20 19:18:40.000000000 +0000 @@ -13,7 +13,6 @@ - merge-automation task-defaults: - run-on-repo-type: [hg] description: mark merge automation as completed in shipit worker-type: shipit from-deps: diff -Nru thunderbird-140.8.0esr/taskcluster/kinds/toolchain/mingw.yml thunderbird-140.9.0esr/taskcluster/kinds/toolchain/mingw.yml --- thunderbird-140.8.0esr/taskcluster/kinds/toolchain/mingw.yml 2026-02-19 21:35:10.000000000 +0000 +++ thunderbird-140.9.0esr/taskcluster/kinds/toolchain/mingw.yml 2026-03-20 19:18:40.000000000 +0000 @@ -19,7 +19,7 @@ fetches: fetch: - nsis-3.07 - - zlib-1.3.1 + - zlib-1.3.2 toolchain: - linux64-binutils - linux64-clang-mingw-x86 diff -Nru thunderbird-140.8.0esr/taskcluster/scripts/misc/build-mingw32-nsis.sh thunderbird-140.9.0esr/taskcluster/scripts/misc/build-mingw32-nsis.sh --- thunderbird-140.8.0esr/taskcluster/scripts/misc/build-mingw32-nsis.sh 2026-02-19 21:35:09.000000000 +0000 +++ thunderbird-140.9.0esr/taskcluster/scripts/misc/build-mingw32-nsis.sh 2026-03-20 19:18:39.000000000 +0000 @@ -28,7 +28,7 @@ # -------------- -cd zlib-1.3.1 +cd zlib-1.3.2 make -f win32/Makefile.gcc PREFIX=i686-w64-mingw32- cd ../nsis-3.07-src @@ -54,7 +54,7 @@ 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.1 \ + ZLIB_W32=../zlib-1.3.2 \ SKIPUTILS="NSIS Menu,Makensisw" \ PREFIX_DEST=$INSTALL_DIR/ \ PREFIX_BIN=bin \ diff -Nru thunderbird-140.8.0esr/testing/web-platform/meta/fetch/content-type/response.window.js.ini thunderbird-140.9.0esr/testing/web-platform/meta/fetch/content-type/response.window.js.ini --- thunderbird-140.8.0esr/testing/web-platform/meta/fetch/content-type/response.window.js.ini 2026-02-19 21:35:11.000000000 +0000 +++ thunderbird-140.9.0esr/testing/web-platform/meta/fetch/content-type/response.window.js.ini 2026-03-20 19:18:41.000000000 +0000 @@ -35,9 +35,6 @@ [fetch(): combined response Content-Type: text/html;x=" text/plain] expected: FAIL - [