(Truly) revert code formatting

This commit is contained in:
Kazevic 2024-07-06 01:09:55 -03:00
parent 486ff81bc8
commit ee8e2b06ec
3 changed files with 633 additions and 633 deletions

View file

@ -1,144 +1,144 @@
/*** /***
This will reset the preferences that since FF91 have been This will reset the preferences that since FF91 have been
- removed from the arkenfox user.js - removed from the arkenfox user.js
- deprecated by Mozilla but listed in the arkenfox user.js in the past - deprecated by Mozilla but listed in the arkenfox user.js in the past
There is an archived version at https://github.com/arkenfox/user.js/issues/123 There is an archived version at https://github.com/arkenfox/user.js/issues/123
if you want the full list since jesus if you want the full list since jesus
Last updated: 23-June-2024 Last updated: 23-June-2024
Instructions: Instructions:
- [optional] close Firefox and backup your profile - [optional] close Firefox and backup your profile
- [optional] disable your network connection [1] - [optional] disable your network connection [1]
- start Firefox - start Firefox
- load about:config and press Ctrl+Shift+K to open the Web Console for about:config - load about:config and press Ctrl+Shift+K to open the Web Console for about:config
- using about:config is important, so the script has the right permissions - using about:config is important, so the script has the right permissions
- paste this script - paste this script
- if you edited the list of prefs in the script, make sure the last pref does not have a trailing comma - if you edited the list of prefs in the script, make sure the last pref does not have a trailing comma
- hit enter - hit enter
- check the Info output to see which prefs were reset - check the Info output to see which prefs were reset
- restart - restart
- some prefs require a restart - some prefs require a restart
- a restart will reapply your user.js - a restart will reapply your user.js
- [optional] re-enable your network connection - [optional] re-enable your network connection
[1] Blocking Firefox from the internet ensures it can't act on your reset preferences in the [1] Blocking Firefox from the internet ensures it cannot act on your reset preferences in the
period before you restart it, such as app and extension auto-updating, or downloading unwanted period before you restart it, such as app and extension auto-updating, or downloading unwanted
components (GMP etc.). It depends on what you're resetting and how long before you restart. components (GMP etc). It depends on what you're resetting and how long before you restart.
***/ ***/
(() => { (() => {
if ('undefined' === typeof (Services)) return alert('about:config needs to be the active tab!'); if ('undefined' === typeof(Services)) return alert('about:config needs to be the active tab!');
const aPREFS = [ const aPREFS = [
/* DEPRECATED */ /* DEPRECATED */
/* 116-128 */ /* 116-128 */
'browser.contentanalysis.default_allow', // 127 'browser.contentanalysis.default_allow', // 127
'browser.messaging-system.whatsNewPanel.enabled', // 126 'browser.messaging-system.whatsNewPanel.enabled', // 126
'browser.ping-centre.telemetry', // 123 'browser.ping-centre.telemetry', // 123
'dom.webnotifications.serviceworker.enabled', // 117 'dom.webnotifications.serviceworker.enabled', // 117
'javascript.use_us_english_locale', // 119 'javascript.use_us_english_locale', // 119
'layout.css.font-visibility.private', // 118 'layout.css.font-visibility.private', // 118
'layout.css.font-visibility.resistFingerprinting', // 116 'layout.css.font-visibility.resistFingerprinting', // 116
'layout.css.font-visibility.standard', // 118 'layout.css.font-visibility.standard', // 118
'layout.css.font-visibility.trackingprotection', // 118 'layout.css.font-visibility.trackingprotection', // 118
'network.dns.skipTRR-when-parental-control-enabled', // 119 'network.dns.skipTRR-when-parental-control-enabled', // 119
'permissions.delegation.enabled', // 118 'permissions.delegation.enabled', // 118
'security.family_safety.mode', // 117 'security.family_safety.mode', // 117
'widget.non-native-theme.enabled', // 127 'widget.non-native-theme.enabled', // 127
/* 103-115 */ /* 103-115 */
'browser.cache.offline.enable', // 115 'browser.cache.offline.enable', // 115
'extensions.formautofill.heuristics.enabled', // 114 'extensions.formautofill.heuristics.enabled', // 114
'network.cookie.lifetimePolicy', // 103 [technically removed in 104] 'network.cookie.lifetimePolicy', // 103 [technically removed in 104]
'privacy.clearsitedata.cache.enabled', // 114 'privacy.clearsitedata.cache.enabled', // 114
'privacy.resistFingerprinting.testGranularityMask', // 114 'privacy.resistFingerprinting.testGranularityMask', // 114
'security.pki.sha1_enforcement_level', // 103 'security.pki.sha1_enforcement_level', // 103
/* 92-102 */ /* 92-102 */
'browser.urlbar.suggest.quicksuggest', // 95 'browser.urlbar.suggest.quicksuggest', // 95
'dom.securecontext.whitelist_onions', // 97 'dom.securecontext.whitelist_onions', // 97
'dom.storage.next_gen', // 102 'dom.storage.next_gen', // 102
'network.http.spdy.enabled', // 100 'network.http.spdy.enabled', // 100
'network.http.spdy.enabled.deps', 'network.http.spdy.enabled.deps',
'network.http.spdy.enabled.http2', 'network.http.spdy.enabled.http2',
'network.http.spdy.websockets', 'network.http.spdy.websockets',
'layout.css.font-visibility.level', // 94 'layout.css.font-visibility.level', // 94
'security.ask_for_password', // 102 'security.ask_for_password', // 102
'security.csp.enable', // 99 'security.csp.enable', // 99
'security.password_lifetime', // 102 'security.password_lifetime', // 102
'security.ssl3.rsa_des_ede3_sha', // 93 'security.ssl3.rsa_des_ede3_sha', // 93
/* REMOVED */ /* REMOVED */
/* 116-128 */ /* 116-128 */
'browser.fixup.alternate.enabled', 'browser.fixup.alternate.enabled',
'browser.taskbar.previews.enable', 'browser.taskbar.previews.enable',
'browser.urlbar.dnsResolveSingleWordsAfterSearch', 'browser.urlbar.dnsResolveSingleWordsAfterSearch',
'media.gmp-widevinecdm.enabled', 'media.gmp-widevinecdm.enabled',
'network.protocol-handler.external.ms-windows-store', 'network.protocol-handler.external.ms-windows-store',
'privacy.partition.always_partition_third_party_non_cookie_storage', 'privacy.partition.always_partition_third_party_non_cookie_storage',
'privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage', 'privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage',
'privacy.partition.serviceWorkers', 'privacy.partition.serviceWorkers',
/* 103-115 */ /* 103-115 */
'beacon.enabled', 'beacon.enabled',
'browser.startup.blankWindow', 'browser.startup.blankWindow',
'browser.newtab.preload', 'browser.newtab.preload',
'browser.newtabpage.activity-stream.feeds.discoverystreamfeed', 'browser.newtabpage.activity-stream.feeds.discoverystreamfeed',
'browser.newtabpage.activity-stream.feeds.snippets', 'browser.newtabpage.activity-stream.feeds.snippets',
'browser.region.network.url', 'browser.region.network.url',
'browser.region.update.enabled', 'browser.region.update.enabled',
'browser.search.region', 'browser.search.region',
'browser.ssl_override_behavior', 'browser.ssl_override_behavior',
'browser.tabs.warnOnClose', 'browser.tabs.warnOnClose',
'devtools.chrome.enabled', 'devtools.chrome.enabled',
'dom.disable_beforeunload', 'dom.disable_beforeunload',
'dom.disable_open_during_load', 'dom.disable_open_during_load',
'dom.netinfo.enabled', 'dom.netinfo.enabled',
'dom.vr.enabled', 'dom.vr.enabled',
'extensions.formautofill.addresses.supported', 'extensions.formautofill.addresses.supported',
'extensions.formautofill.available', 'extensions.formautofill.available',
'extensions.formautofill.creditCards.available', 'extensions.formautofill.creditCards.available',
'extensions.formautofill.creditCards.supported', 'extensions.formautofill.creditCards.supported',
'middlemouse.contentLoadURL', 'middlemouse.contentLoadURL',
'network.http.altsvc.oe', 'network.http.altsvc.oe',
/* 92-102 */ /* 92-102 */
'browser.urlbar.trimURLs', 'browser.urlbar.trimURLs',
'dom.caches.enabled', 'dom.caches.enabled',
'dom.storageManager.enabled', 'dom.storageManager.enabled',
'dom.storage_access.enabled', 'dom.storage_access.enabled',
'dom.targetBlankNoOpener.enabled', 'dom.targetBlankNoOpener.enabled',
'network.cookie.thirdparty.sessionOnly', 'network.cookie.thirdparty.sessionOnly',
'network.cookie.thirdparty.nonsecureSessionOnly', 'network.cookie.thirdparty.nonsecureSessionOnly',
'privacy.firstparty.isolate.block_post_message', 'privacy.firstparty.isolate.block_post_message',
'privacy.firstparty.isolate.restrict_opener_access', 'privacy.firstparty.isolate.restrict_opener_access',
'privacy.firstparty.isolate.use_site', 'privacy.firstparty.isolate.use_site',
'privacy.window.name.update.enabled', 'privacy.window.name.update.enabled',
'security.insecure_connection_text.enabled', 'security.insecure_connection_text.enabled',
/* IMPORTANT: last active pref must not have a trailing comma */ /* IMPORTANT: last active pref must not have a trailing comma */
/* reset parrot: check your open about:config after running the script */ /* reset parrot: check your open about:config after running the script */
'_user.js.parrot' '_user.js.parrot'
]; ];
console.clear(); console.clear();
let c = 0; let c = 0;
for (const sPname of aPREFS) { for (const sPname of aPREFS) {
if (Services.prefs.prefHasUserValue(sPname)) { if (Services.prefs.prefHasUserValue(sPname)) {
Services.prefs.clearUserPref(sPname); Services.prefs.clearUserPref(sPname);
if (!Services.prefs.prefHasUserValue(sPname)) { if (!Services.prefs.prefHasUserValue(sPname)) {
console.info('reset', sPname); console.info('reset', sPname);
c++; c++;
} else console.warn('failed to reset', sPname); } else console.warn('failed to reset', sPname);
}
} }
}
focus(); focus();
const d = (c == 1) ? ' pref' : ' prefs'; const d = (c==1) ? ' pref' : ' prefs';
alert(c ? 'successfully reset ' + c + d + "\n\nfor details check the console" : 'nothing to reset'); alert(c ? 'successfully reset ' + c + d + "\n\nfor details check the console" : 'nothing to reset');
return 'all done'; return 'all done';
})(); })();

View file

@ -1,210 +1,210 @@
/*** arkenfox user.js troubleshooter.js v1.6.3 ***/ /*** arkenfox user.js troubleshooter.js v1.6.3 ***/
(function () { (function() {
if ("undefined" === typeof (Services)) return alert('about:config needs to be the active tab!'); if ("undefined" === typeof(Services)) return alert('about:config needs to be the active tab!');
const aPREFS = [ const aPREFS = [
/* known culprits */ /* known culprits */
'network.cookie.cookieBehavior', 'network.cookie.cookieBehavior',
'network.http.referer.XOriginPolicy', 'network.http.referer.XOriginPolicy',
'privacy.firstparty.isolate', 'privacy.firstparty.isolate',
'privacy.resistFingerprinting', 'privacy.resistFingerprinting',
'security.mixed_content.block_display_content', 'security.mixed_content.block_display_content',
'svg.disabled', 'svg.disabled',
/* Storage + Cache */ /* Storage + Cache */
'browser.cache.offline.enable', 'browser.cache.offline.enable',
'dom.storage.enabled', 'dom.storage.enabled',
'dom.storageManager.enabled', 'dom.storageManager.enabled',
/* Workers, Web + Push Notifications */ /* Workers, Web + Push Notifications */
'dom.caches.enabled', 'dom.caches.enabled',
'dom.push.connection.enabled', 'dom.push.connection.enabled',
'dom.push.enabled', 'dom.push.enabled',
'dom.push.serverURL', 'dom.push.serverURL',
'dom.serviceWorkers.enabled', 'dom.serviceWorkers.enabled',
'dom.webnotifications.enabled', 'dom.webnotifications.enabled',
'dom.webnotifications.serviceworker.enabled', 'dom.webnotifications.serviceworker.enabled',
/* Fonts */ /* Fonts */
'browser.display.use_document_fonts', 'browser.display.use_document_fonts',
'font.blacklist.underline_offset', 'font.blacklist.underline_offset',
'gfx.font_rendering.graphite.enabled', 'gfx.font_rendering.graphite.enabled',
'gfx.font_rendering.opentype_svg.enabled', 'gfx.font_rendering.opentype_svg.enabled',
'layout.css.font-loading-api.enabled', 'layout.css.font-loading-api.enabled',
/* Misc */ /* Misc */
'browser.link.open_newwindow.restriction', 'browser.link.open_newwindow.restriction',
'canvas.capturestream.enabled', 'canvas.capturestream.enabled',
'dom.event.clipboardevents.enabled', 'dom.event.clipboardevents.enabled',
'dom.event.contextmenu.enabled', 'dom.event.contextmenu.enabled',
'dom.IntersectionObserver.enabled', 'dom.IntersectionObserver.enabled',
'dom.popup_allowed_events', 'dom.popup_allowed_events',
'full-screen-api.enabled', 'full-screen-api.enabled',
'intl.accept_languages', 'intl.accept_languages',
'javascript.options.asmjs', 'javascript.options.asmjs',
'javascript.options.wasm', 'javascript.options.wasm',
'permissions.default.shortcuts', 'permissions.default.shortcuts',
/* Hardware */ /* Hardware */
'dom.vr.enabled', 'dom.vr.enabled',
'media.ondevicechange.enabled', 'media.ondevicechange.enabled',
/* Audio + Video */ /* Audio + Video */
'dom.webaudio.enabled', 'dom.webaudio.enabled',
'media.autoplay.default', // FF63+ 'media.autoplay.default', // FF63+
'media.autoplay.blocking_policy', // FF78+ 'media.autoplay.blocking_policy', // FF78+
/* Forms */ /* Forms */
'browser.formfill.enable', 'browser.formfill.enable',
'signon.autofillForms', 'signon.autofillForms',
'signon.formlessCapture.enabled', 'signon.formlessCapture.enabled',
/* HTTPS */ /* HTTPS */
'security.cert_pinning.enforcement_level', 'security.cert_pinning.enforcement_level',
'security.family_safety.mode', 'security.family_safety.mode',
'security.OCSP.require', 'security.OCSP.require',
'security.pki.sha1_enforcement_level', 'security.pki.sha1_enforcement_level',
'security.ssl.require_safe_negotiation', 'security.ssl.require_safe_negotiation',
'security.ssl.treat_unsafe_negotiation_as_broken', 'security.ssl.treat_unsafe_negotiation_as_broken',
'security.ssl3.dhe_rsa_aes_128_sha', 'security.ssl3.dhe_rsa_aes_128_sha',
'security.ssl3.dhe_rsa_aes_256_sha', 'security.ssl3.dhe_rsa_aes_256_sha',
'security.ssl3.ecdhe_ecdsa_aes_128_sha', 'security.ssl3.ecdhe_ecdsa_aes_128_sha',
'security.ssl3.ecdhe_rsa_aes_128_sha', 'security.ssl3.ecdhe_rsa_aes_128_sha',
'security.ssl3.rsa_aes_128_sha', 'security.ssl3.rsa_aes_128_sha',
'security.ssl3.rsa_aes_256_sha', 'security.ssl3.rsa_aes_256_sha',
'security.ssl3.rsa_des_ede3_sha', 'security.ssl3.rsa_des_ede3_sha',
'security.tls.enable_0rtt_data', 'security.tls.enable_0rtt_data',
'security.tls.version.max', 'security.tls.version.max',
'security.tls.version.min', 'security.tls.version.min',
/* Plugins + Flash */ /* Plugins + Flash */
'plugin.default.state', 'plugin.default.state',
'plugin.state.flash', 'plugin.state.flash',
/* unlikely to cause problems */ /* unlikely to cause problems */
'dom.popup_maximum', 'dom.popup_maximum',
'geo.provider.network.url', 'geo.provider.network.url',
'layout.css.visited_links_enabled', 'layout.css.visited_links_enabled',
'mathml.disabled', 'mathml.disabled',
'network.auth.subresource-http-auth-allow', 'network.auth.subresource-http-auth-allow',
'network.http.redirection-limit', 'network.http.redirection-limit',
'network.protocol-handler.external.ms-windows-store', 'network.protocol-handler.external.ms-windows-store',
'privacy.trackingprotection.enabled', 'privacy.trackingprotection.enabled',
'security.data_uri.block_toplevel_data_uri_navigations', 'security.data_uri.block_toplevel_data_uri_navigations',
'privacy.window.name.update.enabled', // FF82+ 'privacy.window.name.update.enabled', // FF82+
'last.one.without.comma' 'last.one.without.comma'
] ]
// any runtime-set pref that everyone will have and that can be safely reset // any runtime-set pref that everyone will have and that can be safely reset
const oFILLER = {type: 64, name: 'app.update.lastUpdateTime.browser-cleanup-thumbnails', value: 1580000000}; const oFILLER = { type: 64, name: 'app.update.lastUpdateTime.browser-cleanup-thumbnails', value: 1580000000 };
function getMyList(arr) { function getMyList(arr) {
const aRet = []; const aRet = [];
for (const sPname of arr) { for (const sPname of arr) {
if (Services.prefs.prefHasUserValue(sPname)) { if (Services.prefs.prefHasUserValue(sPname)) {
const ptype = Services.prefs.getPrefType(sPname); const ptype = Services.prefs.getPrefType(sPname);
switch (ptype) { switch (ptype) {
case 32: // string (see https://dxr.mozilla.org/mozilla-central/source/modules/libpref/nsIPrefBranch.idl#31) case 32: // string (see https://dxr.mozilla.org/mozilla-central/source/modules/libpref/nsIPrefBranch.idl#31)
aRet.push({'type': ptype, 'name': sPname, 'value': Services.prefs.getCharPref(sPname)}); aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getCharPref(sPname)});
break; break;
case 64: // int case 64: // int
aRet.push({'type': ptype, 'name': sPname, 'value': Services.prefs.getIntPref(sPname)}); aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getIntPref(sPname)});
break; break;
case 128: // boolean case 128: // boolean
aRet.push({'type': ptype, 'name': sPname, 'value': Services.prefs.getBoolPref(sPname)}); aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getBoolPref(sPname)});
break; break;
default: default:
console.log("error detecting pref-type for '" + sPname + "' !"); console.log("error detecting pref-type for '"+sPname+"' !");
}
}
} }
return aRet; }
}
return aRet;
}
function reapply(arr) {
for (const oPref of arr) {
switch (oPref.type) {
case 32: // string
Services.prefs.setCharPref(oPref.name, oPref.value);
break;
case 64: // int
Services.prefs.setIntPref(oPref.name, oPref.value);
break;
case 128: // boolean
Services.prefs.setBoolPref(oPref.name, oPref.value);
break;
default:
console.log("error re-appyling value for '"+oPref.name+"' !"); // should never happen
}
}
}
function myreset(arr) {
for (const oPref of arr) Services.prefs.clearUserPref(oPref.name);
}
function resetAllMatchingDefault(arr) {
const aTmp = getMyList(arr);
myreset(aTmp);
reapply(aTmp);
}
function _main(aALL) {
const _h = (arr) => Math.ceil(arr.length/2);
let aTmp = aALL, aDbg = aALL;
reapply(aALL);
myreset(aTmp.slice(0, _h(aTmp)));
while (aTmp.length) {
alert('NOW TEST AGAIN !');
if (confirm('if the problem still exists click OK, otherwise click Cancel.')) {
aTmp = aTmp.slice(_h(aTmp));
} else {
aTmp = aTmp.slice(0, _h(aTmp));
aDbg = aTmp; // update narrowed down list
if (aDbg.length == 1) break;
}
reapply(aALL);
myreset(aTmp.slice(0, _h(aTmp))); // reset half of the remaining prefs
}
reapply(aALL);
if (aDbg.length == 1) return alert("narrowed it down to:\n\n"+aDbg[0].name+"\n");
if (aDbg.length == aALL.length) {
const msg = "Failed to narrow it down beyond the initial "+aALL.length+" prefs. The problem is most likely caused by at least 2 prefs!\n\n" +
"Either those prefs are too far apart in the list or there are exactly 2 culprits and they just happen to be at the wrong place.\n\n" +
"In case it's the latter, the script can add a dummy pref and you can try again - Try again?";
if (confirm(msg)) return _main([...aALL, oFILLER]);
} else if (aDbg.length > 10 && confirm("Narrowed it down to "+aDbg.length+" prefs. Try narrowing it down further?")) {
return _main(aDbg.reverse());
} }
function reapply(arr) { alert("Narrowed it down to "+ aDbg.length.toString() +" prefs, check the console ...");
for (const oPref of arr) { console.log('The problem is caused by 2 or more of these prefs:');
switch (oPref.type) { for (const oPref of aDbg) console.log(oPref.name);
case 32: // string }
Services.prefs.setCharPref(oPref.name, oPref.value);
break;
case 64: // int
Services.prefs.setIntPref(oPref.name, oPref.value);
break;
case 128: // boolean
Services.prefs.setBoolPref(oPref.name, oPref.value);
break;
default:
console.log("error re-appyling value for '" + oPref.name + "' !"); // should never happen
}
}
}
function myreset(arr) {
for (const oPref of arr) Services.prefs.clearUserPref(oPref.name);
}
function resetAllMatchingDefault(arr) {
const aTmp = getMyList(arr);
myreset(aTmp);
reapply(aTmp);
}
function _main(aALL) {
const _h = (arr) => Math.ceil(arr.length / 2);
let aTmp = aALL, aDbg = aALL;
reapply(aALL);
myreset(aTmp.slice(0, _h(aTmp)));
while (aTmp.length) {
alert('NOW TEST AGAIN !');
if (confirm('if the problem still exists click OK, otherwise click Cancel.')) {
aTmp = aTmp.slice(_h(aTmp));
} else {
aTmp = aTmp.slice(0, _h(aTmp));
aDbg = aTmp; // update narrowed down list
if (aDbg.length == 1) break;
}
reapply(aALL);
myreset(aTmp.slice(0, _h(aTmp))); // reset half of the remaining prefs
}
reapply(aALL);
if (aDbg.length == 1) return alert("narrowed it down to:\n\n" + aDbg[0].name + "\n");
if (aDbg.length == aALL.length) {
const msg = "Failed to narrow it down beyond the initial " + aALL.length + " prefs. The problem is most likely caused by at least 2 prefs!\n\n" +
"Either those prefs are too far apart in the list or there are exactly 2 culprits and they just happen to be at the wrong place.\n\n" +
"In case it's the latter, the script can add a dummy pref and you can try again - Try again?";
if (confirm(msg)) return _main([...aALL, oFILLER]);
} else if (aDbg.length > 10 && confirm("Narrowed it down to " + aDbg.length + " prefs. Try narrowing it down further?")) {
return _main(aDbg.reverse());
}
alert("Narrowed it down to " + aDbg.length.toString() + " prefs, check the console ...");
console.log('The problem is caused by 2 or more of these prefs:');
for (const oPref of aDbg) console.log(oPref.name);
}
resetAllMatchingDefault(aPREFS); // reset user-set prefs matching FFs default value resetAllMatchingDefault(aPREFS); // reset user-set prefs matching FFs default value
const aBAK = getMyList(aPREFS); const aBAK = getMyList(aPREFS);
//console.log(aBAK.length, "user-set prefs from our list detected and their values stored."); //console.log(aBAK.length, "user-set prefs from our list detected and their values stored.");
const sMsg = "all detected prefs reset.\n\n" + const sMsg = "all detected prefs reset.\n\n" +
"!! KEEP THIS PROMPT OPEN AND TEST THE SITE IN ANOTHER TAB !!\n\n" + "!! KEEP THIS PROMPT OPEN AND TEST THE SITE IN ANOTHER TAB !!\n\n" +
"IF the problem still exists, this script can't help you - click Cancel to re-apply your values and exit.\n\n" + "IF the problem still exists, this script can't help you - click Cancel to re-apply your values and exit.\n\n" +
"Click OK if your problem is fixed."; "Click OK if your problem is fixed.";
focus(); focus();
myreset(aBAK); myreset(aBAK);
if (!confirm(sMsg)) { if (!confirm(sMsg)) {
reapply(aBAK); reapply(aBAK);
return; return;
} }
_main(aBAK); _main(aBAK);
})(); })();

658
user.js

File diff suppressed because it is too large Load diff