Wikipedia
test2wiki
https://test2.wikipedia.org/wiki/Main_Page
MediaWiki 1.47.0-wmf.13
first-letter
Media
Special
Talk
User
User talk
Wikipedia
Wikipedia talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Thread
Thread talk
Summary
Summary talk
Portal
Portal talk
Author
Author talk
Page
Page talk
Index
Index talk
Schema
Schema talk
TimedText
TimedText talk
Module
Module talk
Event
Event talk
Topic
User:Revi C.
2
9739
619593
569668
2026-08-01T23:37:07Z
Pathoschild
148
global user pages ([[m:Synchbot|requested by Revi C.]])
619593
wikitext
text/x-wiki
__NOINDEX__<div class="mw-content-ltr" lang="en" dir="ltr">{{#babel:ko|en-3|}} [[File:Revi wikimedia image.jpg|thumb|center|middle|If you are here to talk about CommonsDelinker removing a deleted image, please [[:c:User talk:Revi C.|go here]].]]
Hello! I am [[:m:User:Revi C.|revi]]. I edit to [[m:SWMT|revert vandals]], do Wikidata stuff<!--(I am a Wikidata Admin! <small>([{{fullurl:wikidata:Special:ListUsers/Revi C.|limit=1}} Verify])</small>)-->, or do [[:c:COM:FR|Commons Filemoving stuff]] (I am Commons Admin too! <small>([{{fullurl:c:Special:ListUsers/Revi C.|limit=1}} Verify])</small>). Come to [[:m:User:Revi C.|my Meta userpage]] or [[:c:User:Revi C.|my Commons userpage]] for more information. Thank you.</div>
s7l31vm7btg9p7hwj4hy4wj4v6hxgyh
User talk:Revi C.
3
12026
619592
569669
2026-08-01T23:01:55Z
Pathoschild
148
global user pages ([[m:Synchbot|requested by Revi C.]])
619592
wikitext
text/x-wiki
__NOINDEX__<div class="mw-content-ltr" lang="en" dir="ltr">[[File:Revi logo (pink).png|thumb|center|<span style="color:red">PLEASE DO NOT LEAVE MESSAGE HERE!</span>]]
''' <span style="color:red"> BEFORE YOU BLOCK MY ACCOUNT: IF MY EDIT SUMMARY INCLUDE PREFIX </span>''(Script)''<span style="color:red">, DON'T BLOCK ME, JUST TELL ME TO SLOW DOWN AT COMMONS' TALK PAGE. IT IS AN AUTOMATED SCRIPT BEING USED ON COMMONS TO MOVE FILES.</span>
Instead, please leave your message following site:
<br />
[[File:Wikidata-logo-en.svg|45px|link=d:User talk:Revi C.]] [[d:User talk:Revi C.]] for Wikidata (Interwiki links) stuff <!--(I am {{int:Group-sysop}} there)-->
<br />
[[File:Commons-logo.svg|45px|link=commons:User talk:Revi C.]] [[commons:User talk:Revi C.]] for renaming stuff or [[User:CommonsDelinker|CommonsDelinker]] action (I am {{int:Group-sysop}} there)
<br />
[[File:Wikimedia Community Logo optimized.svg|45px|link=m:User talk:Revi C.]] [[meta:User talk:Revi C.]] for other stuff (User right notification, revert message, etc...)
Messages left on this page may be reverted or moved without any response.</div>
esxe13mcstpjlux1bt2hqwxr2v8t8mn
User talk:Doc Taxon
3
63277
619539
619534
2026-08-01T12:33:49Z
TaxonBot
4700
Log: AdT2
619539
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
snhem8ku7wypqovnoyjpxrf44qmzbyh
619540
619539
2026-08-01T12:35:56Z
TaxonBot
4700
Log: MB1
619540
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
svvajr3ps8v0a0n6vs7vf94dnn5pwla
619541
619540
2026-08-01T12:36:11Z
TaxonBot
4700
Log: MB1
619541
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
sx5cgvcoggmz43razhsrxsmzub1b5p5
619542
619541
2026-08-01T12:36:20Z
TaxonBot
4700
Log: AdT2
619542
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
8xsrb9v7tr8aed4cgq6y8n34kfg8rqa
619543
619542
2026-08-01T13:00:04Z
TaxonBot
4700
Log: AA
619543
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
ahmyenzbhe0a7d2j6s8u9dfw1gpm1pr
619544
619543
2026-08-01T13:02:28Z
TaxonBot
4700
Log: AdT3
619544
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
9dk6z0ztzxdknz6glhybom8evczhutd
619545
619544
2026-08-01T15:45:17Z
TaxonBot
4700
Log: Bots
619545
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
tsxqirqek6c8qk7nyeesjv0y09p5buk
619546
619545
2026-08-01T15:47:52Z
TaxonBot
4700
Log: Bots
619546
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
r2c7xsz214e0wqzbg1gl0ur6o67phde
619548
619546
2026-08-01T16:55:45Z
TaxonBot
4700
Log: AdT2
619548
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
fao5xr0ocqwwp2kj7fqcmilm4g4y6y5
619549
619548
2026-08-01T16:57:44Z
TaxonBot
4700
Log: AdT2
619549
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
l0mfv2zituxbx6nby8kirz9gy010qvv
619550
619549
2026-08-01T16:58:16Z
TaxonBot
4700
Log: AdT2
619550
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
dl9lwa49l801djfqazjiin4xrnruygk
619551
619550
2026-08-01T17:00:18Z
TaxonBot
4700
Log: AdT2
619551
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
lj8tukvjpqv3wmz4f7p0z1kywxtnjr4
619552
619551
2026-08-01T17:05:08Z
TaxonBot
4700
Log: AdT2
619552
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
h56jnh4jqnt62owkxzkxf365uh33ns7
619553
619552
2026-08-01T17:07:48Z
TaxonBot
4700
Log: AdT2
619553
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
pz4jow0ga48ru5xsw4tl124vx28eqxj
619554
619553
2026-08-01T17:17:24Z
TaxonBot
4700
Log: AA
619554
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
t3jhdu6wkj10j68ym3v328iql1fwek1
619555
619554
2026-08-01T17:22:32Z
TaxonBot
4700
Log: AdT2
619555
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
itzhhzqst2n4cgyggecc7puj00l116b
619556
619555
2026-08-01T17:22:40Z
TaxonBot
4700
Log: AdT2
619556
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
omwfr08py5mbkzkgumr64tyvtl3nqh5
619557
619556
2026-08-01T17:23:21Z
TaxonBot
4700
Log: AdT2
619557
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
hotdrgzim5d1ajqdb8oh7ae5cpy390j
619558
619557
2026-08-01T17:24:33Z
TaxonBot
4700
Log: AdT3
619558
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
hyi1a84v4dlof8kci43p8cmo5u81oy3
619559
619558
2026-08-01T17:25:04Z
TaxonBot
4700
Log: AdT2
619559
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
hz83t4a6ho231zcx7n3kyot54o34ob9
619560
619559
2026-08-01T17:25:13Z
TaxonBot
4700
Log: AdT2
619560
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
dpb1k5p63hluid0p0xx7dvqvp1vlero
619561
619560
2026-08-01T17:25:52Z
TaxonBot
4700
Log: AdT2
619561
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
biq0sg8pnmqz0pedcrr0h6v53n4rfuv
619562
619561
2026-08-01T17:28:29Z
TaxonBot
4700
Log: IMP
619562
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
t90ec691mn7laz22f6sxydkgisdwixk
619563
619562
2026-08-01T17:32:51Z
TaxonBot
4700
Log: IMP
619563
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
3ppvakqrkib1vxb2odw3ali1zmzfbrw
619564
619563
2026-08-01T17:53:37Z
TaxonBot
4700
Log: AdT3
619564
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
jgc2gw1mrwyxeyp2o6toq2zly59b8d7
619567
619564
2026-08-01T20:25:34Z
TaxonBot
4700
Log: MediaWiki
619567
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
qyik9fwbo8oawsqnw0tywfro6dsr98t
619568
619567
2026-08-01T21:01:06Z
TaxonBot
4700
Log: IMP
619568
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
dvnxaag6r2efq06ete6rlvjx2cx8yg5
619570
619568
2026-08-01T21:55:09Z
TaxonBot
4700
Log: HS
619570
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
5jt91nsuv7v8k8lqqeo41a1ivis37mm
619572
619570
2026-08-01T22:00:11Z
TaxonBot
4700
Log: Review
619572
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
klkvbudwk40e56dm3x50anph6762wrf
619573
619572
2026-08-01T22:00:14Z
TaxonBot
4700
Log: AA
619573
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
ere3lr14fwv4qvx5fbjskmsy0i0cw3w
619574
619573
2026-08-01T22:00:20Z
TaxonBot
4700
Log: AA
619574
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
inpbk56yqkuukg32sg3uco205rxkrb2
619575
619574
2026-08-01T22:00:22Z
TaxonBot
4700
Log: LKU
619575
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
eh93l6yzuw69oy0k3phiwu3pn6txkt8
619577
619575
2026-08-01T22:00:45Z
TaxonBot
4700
Log: AA
619577
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
kib9726nrvd7u2fplqhh7pi43oysqzn
619578
619577
2026-08-01T22:01:31Z
TaxonBot
4700
Log: AdT-Archive
619578
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
iw71r8wlkp4t907dc3qbaulmd1kzeh0
619579
619578
2026-08-01T22:01:51Z
TaxonBot
4700
Log: AdT2
619579
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
hr94jez4k7kbi5t8nxc1p5pvrm0a19c
619580
619579
2026-08-01T22:03:57Z
TaxonBot
4700
Log: AdT2
619580
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
m77trfufuhzea99zyyw4pi3h68lm1ko
619581
619580
2026-08-01T22:03:59Z
TaxonBot
4700
Log: AdT2
619581
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
ch5ubw4fqeg8n7gr2tbixsupn15gmq0
619582
619581
2026-08-01T22:04:06Z
TaxonBot
4700
Log: AdTneu
619582
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
cagawvzah51fa4e95ccdgkakwsvai83
619583
619582
2026-08-01T22:05:07Z
TaxonBot
4700
Log: HS
619583
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
9k8e9smy9dsxp51dao2qu3ka1gavk8l
619584
619583
2026-08-01T22:06:32Z
TaxonBot
4700
Log: AdT2
619584
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
qa9eedasx4ur1fn81oly48meytqo91a
619585
619584
2026-08-01T22:06:35Z
TaxonBot
4700
Log: AdT2
619585
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
hzs75t4ydu3zdbi4d1aygzb95dxnp6z
619591
619585
2026-08-01T22:31:20Z
TaxonBot
4700
Log: AdT3
619591
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-28 ==
* '''2026-07-28T00:40:10Z Review: Task finished!'''
* '''2026-07-28T01:41:51Z NeueArtikel3: Task finished!'''
* 2026-07-28T03:08:01Z '''[[:de:Special:Diff/prev/269153146|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Law360|Law360]]) - letzte Bearbeitung: [[:User:FordPrefect42|FordPrefect42]], 2026-07-28 00:46''
* '''2026-07-28T06:19:28Z -- <span style="color:red;">110</span>'''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156430|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:36Z '''[[:de:Special:Diff/prev/269156431|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-28T06:20:37Z '''[[:de:Special:Diff/prev/269156432|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-28T06:20:58Z -- <span style="color:red;">110</span>'''
* 2026-07-28T07:37:00Z '''[[:de:Special:Diff/prev/269157652|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T08:25:42Z [[:de:Special:Diff/prev/269158532|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Maimaid|Maimaid]] -- ''[[:de:Wikipedia:Augsburg#Absagen|→]]<span class="autocomment">Absagen: </span> diesmal nicht'''''
* '''2026-07-28T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-28T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-28T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T11:05:31Z AdT2: Task finished!'''
* '''2026-07-28T11:07:58Z AdT2: Task finished!'''
* '''2026-07-28T11:29:21Z AdT2: Task finished!'''
* '''2026-07-28T11:31:50Z AdT2: Task finished!'''
* '''2026-07-28T11:34:29Z AdT3: Task finished!'''
* '''2026-07-28T11:50:31Z AdT2: Task finished!'''
* '''2026-07-28T11:53:03Z AdT2: Task finished!'''
* '''2026-07-28T11:56:07Z AdT2: Task finished!'''
* '''2026-07-28T11:58:37Z AdT2: Task finished!'''
* '''2026-07-28T12:18:01Z AdT2: Task finished!'''
* '''2026-07-28T12:20:13Z AdT3: Task finished!'''
* '''2026-07-28T12:20:51Z AdT2: Task finished!'''
* '''2026-07-28T12:34:07Z NeueArtikel: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''
* <span style="color:red">'''2026-07-28T12:34:13Z MerlBot: Fehler in [[:w:de:Benutzer:Wartungsstube/Petition]]!'''</span>
* '''2026-07-28T12:50:12Z AdT3: Task finished!'''
* 2026-07-28T12:57:24Z '''[[:de:Special:Diff/prev/269164571|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-28T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-28T13:11:33Z '''[[:de:Special:Diff/prev/269164872|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:4959204th User|4959204th User]] -- ''[[:de:Wikipedia:Bots/Anfragen#Wikipedia:Hauptseite/Artikel des Tages/Fundus|→]]<span class="autocomment">Wikipedia:Hauptseite/Artikel des Tages/Fundus: </span> Antwort''
* 2026-07-28T16:02:50Z '''[[:de:Special:Diff/prev/269168840|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wheeke|Wheeke]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span>''
* 2026-07-28T16:08:19Z '''[[:de:Special:Diff/prev/269168932|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Elya|Elya]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-28T16:37:56Z '''[[:de:Special:Diff/prev/269169634|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span> Antwort''
* 2026-07-28T16:42:45Z '''[[:de:Special:Diff/prev/269169745|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* 2026-07-28T17:13:01Z '''[[:de:Special:Diff/prev/269170359|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span>''
* '''2026-07-28T17:14:50Z MerlBot: Task finished!'''
* '''2026-07-28T17:15:04Z MerlBot1a: Task finished!'''
* '''2026-07-28T19:54:16Z [[:de:Special:Diff/prev/269173971|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span> +1'''''
* '''2026-07-28T19:55:38Z [[:de:Special:Diff/prev/269174020|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Tobias ToMar Maier|Tobias ToMar Maier]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-28T20:52:41Z '''[[:de:Special:Diff/prev/269178171|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-28T21:06:48Z '''[[:de:Special:Diff/prev/269178427|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:HH58|HH58]] -- ''[[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung#Architektur|→]]<span class="autocomment">Architektur: </span> wikilinkfix nach Verschiebung''
* '''2026-07-28T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-28T22:00:11Z '''[[:de:Special:Diff/prev/269179402|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-28T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-28T22:00:33Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-28T22:01:26Z AdT-Archive: Task finished!'''
* '''2026-07-28T22:01:44Z AdT2: Task finished!'''
* '''2026-07-28T22:03:35Z AdT2: Task finished!'''
* '''2026-07-28T22:03:52Z AdT2: Task finished!'''
* '''2026-07-28T22:03:57Z AdTneu: Task finished!'''
* '''2026-07-28T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-28T22:05:59Z AdT2: Task finished!'''
* '''2026-07-28T22:06:16Z AdT2: Task finished!'''
* '''2026-07-28T22:10:07Z Review: Task finished!'''
* 2026-07-28T22:13:01Z '''[[:de:Special:Diff/prev/269179678|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-28T22:29:58Z AdT3: Task finished!'''
* 2026-07-28T23:23:11Z '''[[:de:Special:Diff/prev/269180349|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''Neuer Abschnitt [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter|→]]<span class="autocomment">Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter: </span>''
* 2026-07-28T23:27:27Z '''[[:de:Special:Diff/prev/269180399|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:Perrak|Perrak]] -- ''+ Unterkategorien''
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
9r50kgqw6lm227zd640vm0q1zmsl3w2
619594
619591
2026-08-02T00:00:02Z
TaxonBot
4700
/* TaxonBot: Protokoll 2026-08-02 */ new section
619594
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
alw02aebre9aum2vn26o4x67ez0xy3w
619602
619594
2026-08-02T01:43:29Z
TaxonBot
4700
Log: MB3
619602
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
mwi5rlwovgov4opfbz86pccgp0wfcc7
619603
619602
2026-08-02T03:07:54Z
TaxonBot
4700
Log: Bots
619603
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
r2vrlgvqwgxuibgitn37w2qxhpv2ftr
619604
619603
2026-08-02T05:33:19Z
TaxonBot
4700
Log: AA
619604
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
hyfab6rs31vscsuhovns7lknrrokba8
619605
619604
2026-08-02T08:27:18Z
TaxonBot
4700
Log: AdT2
619605
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
r49ekgz9r7bffub184ulmz4ms783jxt
619606
619605
2026-08-02T08:30:06Z
TaxonBot
4700
Log: AdT2
619606
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
19od5tuowik87xgj9vlisp4ayxf14vt
619607
619606
2026-08-02T08:30:35Z
TaxonBot
4700
Log: AdT2
619607
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
oaluzx1hm0xlaeur0o5vckvobjx42ie
619608
619607
2026-08-02T08:33:21Z
TaxonBot
4700
Log: AdT2
619608
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
f8sqsc93e3rclb5zwp4xux50cnqbc8k
619609
619608
2026-08-02T08:33:31Z
TaxonBot
4700
Log: AdT2
619609
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
ixj6usqex9wg626ulz4v8vgeobdh4gr
619610
619609
2026-08-02T08:36:07Z
TaxonBot
4700
Log: AdT2
619610
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
hwey0p0yy2y89q0c6410gvlq4hc6cn4
619611
619610
2026-08-02T08:57:58Z
TaxonBot
4700
Log: AdT3
619611
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
nqtzydt51zues0lgrnhglt31ajab3in
619612
619611
2026-08-02T09:55:08Z
TaxonBot
4700
Log: HS
619612
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
tg7qzk82e9td57z6ktly10i60jenwa7
619613
619612
2026-08-02T10:00:14Z
TaxonBot
4700
Log: AA
619613
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
6e4xzhelafqu4necpk5dn2vj67mcb4b
619614
619613
2026-08-02T10:00:20Z
TaxonBot
4700
Log: AA
619614
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
ihsk6tv0k3jxi1248ud6ok9q3vym8o5
619615
619614
2026-08-02T10:00:35Z
TaxonBot
4700
Log: AA
619615
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
6rsoxidvxusp8jg4nht1dprwppcim5x
619616
619615
2026-08-02T10:22:31Z
TaxonBot
4700
Log: AdT2
619616
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
k09n47qv2xxca4uhdwrth0ztbv3j4aj
619617
619616
2026-08-02T10:25:05Z
TaxonBot
4700
Log: AdT2
619617
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
et862gvcxqp82k13a236z8mkadgll6x
619618
619617
2026-08-02T10:37:08Z
TaxonBot
4700
Log: AdT2
619618
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
s709fv3412kdhqtyeedb6spp432je6u
619619
619618
2026-08-02T10:39:44Z
TaxonBot
4700
Log: AdT2
619619
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
3jqscjswpwojcus6vve0ge3ije84577
619620
619619
2026-08-02T10:40:07Z
TaxonBot
4700
Log: AdT2
619620
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
* '''2026-08-02T10:40:07Z AdT2: Task finished!'''
ljqtz0q7ufar1jkk3294bl7c2uk8n7j
619621
619620
2026-08-02T10:41:02Z
TaxonBot
4700
Log: AdT2
619621
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
* '''2026-08-02T10:40:07Z AdT2: Task finished!'''
* '''2026-08-02T10:41:02Z AdT2: Task finished!'''
7knau6kur3v94if001q1il1oa7uqlel
619622
619621
2026-08-02T10:42:46Z
TaxonBot
4700
Log: AdT2
619622
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
* '''2026-08-02T10:40:07Z AdT2: Task finished!'''
* '''2026-08-02T10:41:02Z AdT2: Task finished!'''
* '''2026-08-02T10:42:46Z AdT2: Task finished!'''
8k2xi5vzzlc1m1tnvn4fucjvui6upax
619623
619622
2026-08-02T10:43:40Z
TaxonBot
4700
Log: AdT2
619623
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
* '''2026-08-02T10:40:07Z AdT2: Task finished!'''
* '''2026-08-02T10:41:02Z AdT2: Task finished!'''
* '''2026-08-02T10:42:46Z AdT2: Task finished!'''
* '''2026-08-02T10:43:40Z AdT2: Task finished!'''
qlyqamnsbx7n5qsn9mf9u5lyv4ga718
619624
619623
2026-08-02T10:52:02Z
TaxonBot
4700
Log: AdT3
619624
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
* '''2026-08-02T10:40:07Z AdT2: Task finished!'''
* '''2026-08-02T10:41:02Z AdT2: Task finished!'''
* '''2026-08-02T10:42:46Z AdT2: Task finished!'''
* '''2026-08-02T10:43:40Z AdT2: Task finished!'''
* '''2026-08-02T10:52:02Z AdT3: Task finished!'''
s18q6603wrwta4lran7llt93zuime92
619625
619624
2026-08-02T10:59:37Z
TaxonBot
4700
Log: AdT2
619625
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
* '''2026-08-02T10:40:07Z AdT2: Task finished!'''
* '''2026-08-02T10:41:02Z AdT2: Task finished!'''
* '''2026-08-02T10:42:46Z AdT2: Task finished!'''
* '''2026-08-02T10:43:40Z AdT2: Task finished!'''
* '''2026-08-02T10:52:02Z AdT3: Task finished!'''
* '''2026-08-02T10:59:37Z AdT2: Task finished!'''
duoq7gpv7h77srkf1cddcztupth3t59
619626
619625
2026-08-02T11:02:13Z
TaxonBot
4700
Log: AdT2
619626
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
* '''2026-08-02T10:40:07Z AdT2: Task finished!'''
* '''2026-08-02T10:41:02Z AdT2: Task finished!'''
* '''2026-08-02T10:42:46Z AdT2: Task finished!'''
* '''2026-08-02T10:43:40Z AdT2: Task finished!'''
* '''2026-08-02T10:52:02Z AdT3: Task finished!'''
* '''2026-08-02T10:59:37Z AdT2: Task finished!'''
* '''2026-08-02T11:02:13Z AdT2: Task finished!'''
sqadp8ozumpp6g2y2h8217nmybugbb6
619627
619626
2026-08-02T11:13:15Z
TaxonBot
4700
Log: AdT2
619627
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
* '''2026-08-02T10:40:07Z AdT2: Task finished!'''
* '''2026-08-02T10:41:02Z AdT2: Task finished!'''
* '''2026-08-02T10:42:46Z AdT2: Task finished!'''
* '''2026-08-02T10:43:40Z AdT2: Task finished!'''
* '''2026-08-02T10:52:02Z AdT3: Task finished!'''
* '''2026-08-02T10:59:37Z AdT2: Task finished!'''
* '''2026-08-02T11:02:13Z AdT2: Task finished!'''
* '''2026-08-02T11:13:14Z AdT2: Task finished!'''
2dbq7ju67vj8vrfucpc0vrfjrfkq77c
619628
619627
2026-08-02T11:15:58Z
TaxonBot
4700
Log: AdT2
619628
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
* '''2026-08-02T10:40:07Z AdT2: Task finished!'''
* '''2026-08-02T10:41:02Z AdT2: Task finished!'''
* '''2026-08-02T10:42:46Z AdT2: Task finished!'''
* '''2026-08-02T10:43:40Z AdT2: Task finished!'''
* '''2026-08-02T10:52:02Z AdT3: Task finished!'''
* '''2026-08-02T10:59:37Z AdT2: Task finished!'''
* '''2026-08-02T11:02:13Z AdT2: Task finished!'''
* '''2026-08-02T11:13:14Z AdT2: Task finished!'''
* '''2026-08-02T11:15:58Z AdT2: Task finished!'''
571xk3etj9vb5ncgwm89yo6oxiirrbh
619629
619628
2026-08-02T11:28:35Z
TaxonBot
4700
Log: AdT3
619629
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
* '''2026-08-02T10:40:07Z AdT2: Task finished!'''
* '''2026-08-02T10:41:02Z AdT2: Task finished!'''
* '''2026-08-02T10:42:46Z AdT2: Task finished!'''
* '''2026-08-02T10:43:40Z AdT2: Task finished!'''
* '''2026-08-02T10:52:02Z AdT3: Task finished!'''
* '''2026-08-02T10:59:37Z AdT2: Task finished!'''
* '''2026-08-02T11:02:13Z AdT2: Task finished!'''
* '''2026-08-02T11:13:14Z AdT2: Task finished!'''
* '''2026-08-02T11:15:58Z AdT2: Task finished!'''
* '''2026-08-02T11:28:35Z AdT3: Task finished!'''
q1gbdg3daj7fbd7qxc1ifznmmv08ha1
619630
619629
2026-08-02T11:50:13Z
TaxonBot
4700
Log: BIBR
619630
wikitext
text/x-wiki
== TaxonBot: Protokoll 2026-07-29 ==
* '''2026-07-29T01:41:33Z NeueArtikel3: Task finished!'''
* 2026-07-29T03:07:41Z '''[[:de:Special:Diff/prev/269181504|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Zootaxa|Zootaxa]]) - letzte Bearbeitung: [[:User:Melly42|Melly42]], 2026-07-28 22:52''
* 2026-07-29T05:00:51Z '''[[:de:Special:Diff/prev/269183325|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain]] nach [[:Kategorie:Bahrainischer Botschafter]]: erledigt''
* 2026-07-29T05:01:10Z '''[[:de:Special:Diff/prev/269183339|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Deutschland]] nach [[:Kategorie:Bahrainischer Botschafter in Deutschland]]: erledigt''
* 2026-07-29T05:01:29Z '''[[:de:Special:Diff/prev/269183356|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Frankreich]] nach [[:Kategorie:Bahrainischer Botschafter in Frankreich]]: erledigt''
* 2026-07-29T05:01:48Z '''[[:de:Special:Diff/prev/269183372|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain in Schweden]] nach [[:Kategorie:Bahrainischer Botschafter in Schweden]]: erledigt''
* 2026-07-29T05:02:14Z '''[[:de:Special:Diff/prev/269183388|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonKatBot|TaxonKatBot]] -- ''Bot: [[:Kategorie:Botschafter für Bahrain im Vereinigten Königreich]] nach [[:Kategorie:Bahrainischer Botschafter im Vereinigten Königreich]]: erledigt''
* '''2026-07-29T07:48:37Z AdT2: Task finished!'''
* '''2026-07-29T07:51:06Z AdT2: Task finished!'''
* 2026-07-29T08:00:12Z '''[[:de:Special:Diff/prev/269186687|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T08:16:41Z AdT3: Task finished!'''
* 2026-07-29T08:39:13Z '''[[:de:Special:Diff/prev/269187967|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T08:40:47Z AdT2: Task finished!'''
* '''2026-07-29T08:42:51Z AdT2: Task finished!'''
* '''2026-07-29T08:43:10Z AdT2: Task finished!'''
* '''2026-07-29T08:45:17Z AdT2: Task finished!'''
* '''2026-07-29T08:45:48Z AdT2: Task finished!'''
* '''2026-07-29T08:47:17Z AdT2: Task finished!'''
* '''2026-07-29T08:48:18Z AdT2: Task finished!'''
* '''2026-07-29T08:49:45Z AdT2: Task finished!'''
* '''2026-07-29T09:00:24Z AdT2: Task finished!'''
* '''2026-07-29T09:02:12Z AdT2: Task finished!'''
* '''2026-07-29T09:02:52Z AdT2: Task finished!'''
* '''2026-07-29T09:05:09Z AdT2: Task finished!'''
* '''2026-07-29T09:08:40Z AdT3: Task finished!'''
* '''2026-07-29T09:16:40Z AdT2: Task finished!'''
* '''2026-07-29T09:19:04Z AdT2: Task finished!'''
* '''2026-07-29T09:19:10Z AdT2: Task finished!'''
* '''2026-07-29T09:21:28Z AdT2: Task finished!'''
* '''2026-07-29T09:22:33Z AdT2: Task finished!'''
* '''2026-07-29T09:25:01Z AdT2: Task finished!'''
* '''2026-07-29T09:30:30Z AdT2: Task finished!'''
* '''2026-07-29T09:32:56Z AdT2: Task finished!'''
* '''2026-07-29T09:44:34Z AdT3: Task finished!'''
* '''2026-07-29T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-29T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-29T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T10:20:31Z AdT2: Task finished!'''
* '''2026-07-29T10:23:03Z AdT2: Task finished!'''
* '''2026-07-29T10:33:04Z AdT2: Task finished!'''
* '''2026-07-29T10:35:35Z AdT2: Task finished!'''
* '''2026-07-29T10:41:54Z AdT2: Task finished!'''
* '''2026-07-29T10:44:20Z AdT2: Task finished!'''
* '''2026-07-29T10:48:17Z AdT3: Task finished!'''
* '''2026-07-29T10:51:09Z AdT2: Task finished!'''
* '''2026-07-29T10:52:44Z AdT2: Task finished!'''
* '''2026-07-29T10:53:39Z AdT2: Task finished!'''
* '''2026-07-29T10:55:26Z AdT2: Task finished!'''
* '''2026-07-29T10:57:02Z AdT2: Task finished!'''
* '''2026-07-29T10:59:34Z AdT2: Task finished!'''
* 2026-07-29T11:06:28Z '''[[:de:Special:Diff/prev/269191311|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#noch mal Zootaxa|→]]<span class="autocomment">noch mal Zootaxa: </span>''
* '''2026-07-29T11:09:37Z AdT2: Task finished!'''
* '''2026-07-29T11:11:12Z AdT2: Task finished!'''
* '''2026-07-29T11:12:08Z AdT2: Task finished!'''
* '''2026-07-29T11:13:38Z AdT2: Task finished!'''
* '''2026-07-29T11:19:50Z AdT3: Task finished!'''
* '''2026-07-29T11:24:44Z AdT2: Task finished!'''
* '''2026-07-29T11:27:18Z AdT2: Task finished!'''
* '''2026-07-29T11:30:00Z AdT2: Task finished!'''
* '''2026-07-29T11:32:28Z AdT2: Task finished!'''
* '''2026-07-29T11:52:57Z AdT3: Task finished!'''
* 2026-07-29T11:55:40Z '''[[:de:Special:Diff/prev/269192261|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> Antwort''
* '''2026-07-29T12:01:02Z MerlBot: Task finished!'''
* '''2026-07-29T12:01:12Z MerlBot1a: Task finished!'''
* 2026-07-29T12:05:20Z '''[[:de:Special:Diff/prev/269192458|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span> Antwort''
* 2026-07-29T12:21:49Z '''[[:de:Special:Diff/prev/269192887|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> Antwort''
* 2026-07-29T12:57:05Z '''[[:de:Special:Diff/prev/269194023|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bots/Anfragen#Arkaden -> Arkade?|→]]<span class="autocomment">Arkaden -> Arkade?: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-29T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* 2026-07-29T13:00:33Z '''[[:de:Special:Diff/prev/269194101|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Melly42|Melly42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
* 2026-07-29T13:04:57Z '''[[:de:Special:Diff/prev/269194191|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T13:14:30Z '''[[:de:Special:Diff/prev/269194454|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:FordPrefect42|FordPrefect42]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> Antwort''
* 2026-07-29T14:24:58Z '''[[:de:Special:Diff/prev/269196016|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-29T19:25:14Z '''[[:de:Special:Diff/prev/269201472|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:25:30Z '''[[:de:Special:Diff/prev/269201481|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T19:35:14Z '''[[:de:Special:Diff/prev/269201683|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#8. April 2026|→]]<span class="autocomment">8. April 2026: </span> erl.''
* 2026-07-29T19:49:08Z '''[[:de:Special:Diff/prev/269202012|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Ra'ike|Ra'ike]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#29. April 2026|→]]<span class="autocomment">29. April 2026: </span> erl.''
* 2026-07-29T19:53:40Z '''[[:de:Special:Diff/prev/269202088|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* 2026-07-29T20:48:58Z '''[[:de:Special:Diff/prev/269203028|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-29T20:55:18Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-29T21:28:04Z '''[[:de:Special:Diff/prev/269203685|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span> Antwort''
* '''2026-07-29T21:55:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:00:07Z Review: Task finished!'''
* '''2026-07-29T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-29T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-07-29T22:00:24Z '''[[:de:Special:Diff/prev/269204378|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-29T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-29T22:01:28Z AdT-Archive: Task finished!'''
* '''2026-07-29T22:01:42Z AdT2: Task finished!'''
* '''2026-07-29T22:03:39Z AdT2: Task finished!'''
* '''2026-07-29T22:03:44Z AdT2: Task finished!'''
* '''2026-07-29T22:04:05Z AdTneu: Task finished!'''
* '''2026-07-29T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-29T22:06:09Z AdT2: Task finished!'''
* '''2026-07-29T22:06:13Z AdT2: Task finished!'''
* 2026-07-29T22:13:03Z '''[[:de:Special:Diff/prev/269204669|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-29T22:29:40Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-30 ==
* '''2026-07-30T01:42:55Z NeueArtikel3: Task finished!'''
* 2026-07-30T03:07:10Z '''[[:de:Special:Diff/prev/269206740|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#denkmalplatz.de|denkmalplatz.de]]) - letzte Bearbeitung: [[:User:Doc Taxon|Doc Taxon]], 2026-07-29 14:57''
* '''2026-07-30T06:02:29Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T08:41:01Z AdT2: Task finished!'''
* '''2026-07-30T08:43:33Z AdT2: Task finished!'''
* '''2026-07-30T09:09:02Z AdT3: Task finished!'''
* 2026-07-30T09:11:59Z '''[[:de:Special:Diff/prev/269213896|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa again|→]]<span class="autocomment">Zootaxa again: </span>''
* '''2026-07-30T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T10:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-30T10:00:19Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T10:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T12:08:46Z MerlBot: Task finished!'''
* '''2026-07-30T12:09:01Z MerlBot1a: Task finished!'''
* 2026-07-30T12:18:57Z '''[[:de:Special:Diff/prev/269218074|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:XenonX3|XenonX3]] -- ''+[[Benutzer:Dirk Bühler/Artikelentwurf]]''
* 2026-07-30T12:38:46Z '''[[:de:Special:Diff/prev/269218477|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Oreste|→]]<span class="autocomment">Oreste: </span> als erledigt markiert ([[:de:Benutzer:TenWhile6/SchnellErl|SchnellErl]] v1.5b)''
* '''2026-07-30T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-30T13:30:22Z AdT2: Task finished!'''
* '''2026-07-30T13:33:02Z AdT2: Task finished!'''
* '''2026-07-30T14:03:24Z AdT3: Task finished!'''
* 2026-07-30T14:18:11Z '''[[:de:Special:Diff/prev/269220996|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Eiragorn|Eiragorn]] -- ''[[:de:Wikipedia:Bots/Anfragen#Tote Links im Filmbereich|→]]<span class="autocomment">Tote Links im Filmbereich: </span> Antwort''
* 2026-07-30T16:17:49Z '''[[:de:Special:Diff/prev/269223395|••]] Kat:''' [[:de:Wikipedia:WikiProjekt Kategorien/Warteschlange|Wikipedia:WikiProjekt Kategorien/Warteschlange]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 5 Abschnitte nach [[Wikipedia:WikiProjekt Kategorien/Warteschlange/Archiv/2026 III#Bot: Kategorie:Botschafter für Bahrain nach Kategorie:Bahrainischer Botschafter (erledigt)]] archiviert – letzte Bearbeitung: [[user:TaxonKatBot|TaxonKatBot]] (29.07.2026 07:02:14)''
* '''2026-07-30T16:57:56Z AdT2: Task finished!'''
* '''2026-07-30T17:00:25Z AdT2: Task finished!'''
* '''2026-07-30T17:22:01Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-07-30T17:24:29Z AdT2: Task finished!'''
* '''2026-07-30T17:24:35Z AdT2: Task finished!'''
* '''2026-07-30T17:25:36Z AdT3: Task finished!'''
* '''2026-07-30T17:26:55Z AdT2: Task finished!'''
* '''2026-07-30T17:27:02Z AdT2: Task finished!'''
* '''2026-07-30T17:40:29Z AdT2: Task finished!'''
* '''2026-07-30T17:43:01Z AdT2: Task finished!'''
* 2026-07-30T17:48:38Z '''[[:de:Special:Diff/prev/269224962|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Psittacuso|Psittacuso]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-add-self-no-reason:Psittacuso|: </span>''
* '''2026-07-30T17:54:34Z AdT3: Task finished!'''
* 2026-07-30T19:26:31Z '''[[:de:Special:Diff/prev/269226538|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Timk70|Timk70]] -- ''[[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Niederländische Kunstgeschichte u.a.|→]]<span class="autocomment">Niederländische Kunstgeschichte u.a.: </span> mail''
* 2026-07-30T21:15:08Z '''[[:de:Special:Diff/prev/269228113|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Hellenyck|Hellenyck]] --
* 2026-07-30T21:17:42Z '''[[:de:Special:Diff/prev/269228148|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-30T21:18:46Z '''[[:de:Special:Diff/prev/269228164|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* '''2026-07-30T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:00:07Z Review: Task finished!'''
* '''2026-07-30T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-30T22:00:13Z '''[[:de:Special:Diff/prev/269229145|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-30T22:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-30T22:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-30T22:01:37Z AdT-Archive: Task finished!'''
* '''2026-07-30T22:01:45Z AdT2: Task finished!'''
* 2026-07-30T22:01:51Z '''[[:de:Special:Diff/prev/269229189|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Lustiger seth|Lustiger seth]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> besser [[WP:FILT]]''
* '''2026-07-30T22:04:01Z AdT2: Task finished!'''
* '''2026-07-30T22:04:05Z AdT2: Task finished!'''
* '''2026-07-30T22:04:15Z AdTneu: Task finished!'''
* '''2026-07-30T22:05:08Z HS-Snapshot: Task finished!'''
* '''2026-07-30T22:06:31Z AdT2: Task finished!'''
* '''2026-07-30T22:06:35Z AdT2: Task finished!'''
* 2026-07-30T22:13:34Z '''[[:de:Special:Diff/prev/269229351|••]] AdT-V:''' [[:de:Wikipedia:Hauptseite/Artikel des Tages/Verwaltung|Wikipedia:Hauptseite/Artikel des Tages/Verwaltung]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Aktualisierung''
* '''2026-07-30T22:30:58Z AdT3: Task finished!'''
* '''2026-07-30T22:31:58Z AdT2: Task finished!'''
* '''2026-07-30T22:34:04Z AdT2: Task finished!'''
* '''2026-07-30T22:34:32Z AdT2: Task finished!'''
* '''2026-07-30T22:36:39Z AdT2: Task finished!'''
* '''2026-07-30T23:00:22Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-07-31 ==
* '''2026-07-31T01:44:13Z NeueArtikel3: Task finished!'''
* 2026-07-31T03:08:11Z '''[[:de:Special:Diff/prev/269231035|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 2 Abschnitte: 2 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#noch_mal_Zootaxa|noch_mal_Zootaxa]]) - letzte Bearbeitung: [[:User:Hellenyck|Hellenyck]], 2026-07-30 23:15''
* '''2026-07-31T05:39:07Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234422|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:34Z '''[[:de:Special:Diff/prev/269234423|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-07-31T06:20:35Z '''[[:de:Special:Diff/prev/269234424|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-07-31T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-07-31T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T10:00:39Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T12:17:05Z MerlBot: Task finished!'''
* '''2026-07-31T12:17:20Z MerlBot1a: Task finished!'''
* '''2026-07-31T13:00:03Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-07-31T17:31:56Z AutoArchiv Wikipedia: Task finished!'''
* 2026-07-31T19:59:25Z '''[[:de:Special:Diff/prev/269251100|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Sarcelles|Sarcelles]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span> Antwort''
* '''2026-07-31T20:43:35Z [[:de:Special:Diff/prev/269251865|••]] Augsburg: [[:de:Wikipedia:Augsburg|Wikipedia:Augsburg]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Augsburg#Ich bin dabei!|→]]<span class="autocomment">Ich bin dabei!: </span>'''''
* 2026-07-31T21:16:16Z '''[[:de:Special:Diff/prev/269252322|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Vlaemink|Vlaemink]] -- ''[[:de:Wikipedia:Bots/Anfragen#Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen|→]]<span class="autocomment">Bot zum automatischen Zurücksetzen typischer Osnatel-Troll-Formulierungen: </span>''
* 2026-07-31T21:21:07Z '''[[:de:Special:Diff/prev/269252359|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> @ Wurgl''
* 2026-07-31T21:51:41Z '''[[:de:Special:Diff/prev/269252855|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:~2026-42315-24|~2026-42315-24]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#31. Juli 2026|→]]<span class="autocomment">31. Juli 2026: </span>''
* '''2026-07-31T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:00:12Z Review: Task finished!'''
* '''2026-07-31T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* 2026-07-31T22:00:18Z '''[[:de:Special:Diff/prev/269253116|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-07-31T22:00:34Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-07-31T22:00:46Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-07-31T22:01:30Z AdT-Archive: Task finished!'''
* '''2026-07-31T22:01:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:38Z AdTneu: Task finished!'''
* '''2026-07-31T22:03:43Z AdT2: Task finished!'''
* '''2026-07-31T22:03:53Z AdT2: Task finished!'''
* '''2026-07-31T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-07-31T22:06:20Z AdT2: Task finished!'''
* '''2026-07-31T22:06:26Z AdT2: Task finished!'''
* '''2026-07-31T22:30:20Z AdT3: Task finished!'''
* 2026-07-31T23:22:44Z '''[[:de:Special:Diff/prev/269254187|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Perrak|Perrak]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak||→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-self-no-reason:Perrak|: </span>''
== TaxonBot: Protokoll 2026-08-01 ==
* '''2026-08-01T01:46:06Z NeueArtikel3: Task finished!'''
* '''2026-08-01T02:30:03Z NeueArtikel: Fehler in [[:w:de:Portal:Technik/Arbeitslisten/QS]]!'''
* 2026-08-01T03:07:49Z '''[[:de:Special:Diff/prev/269255821|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 3 Abschnitte: 3 nach [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III]] (ab Abschnitt [[Wikipedia:Bibliotheksrecherche/Anfragen/Archiv/2026/III#Niederländische_Kunstgeschichte_u.a.|Niederländische_Kunstgeschichte_u.a.]]) - letzte Bearbeitung: [[:User:SpBot|SpBot]], 2026-07-31 05:08''
* '''2026-08-01T03:31:49Z [[:de:Special:Diff/prev/269256041|••]] Augsburg: [[:de:Wikipedia Diskussion:Augsburg|Wikipedia Diskussion:Augsburg]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: 1 Abschnitt nach [[Wikipedia Diskussion:Augsburg/Archiv002#Orte der lokalen Demokratiegeschichte]] archiviert – letzte Bearbeitung: [[user:LGB-ler|LGB-ler]] (25.07.2026 13:58:34)'''''
* '''2026-08-01T06:07:54Z AutoArchiv Wikipedia: Task finished!'''
* 2026-08-01T06:20:37Z '''[[:de:Special:Diff/prev/269258441|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Emha|Kennzeichnung von Lotse Emha als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258442|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:Renamed user 2e233d074791c0e6ac153f38829154f0|Kennzeichnung von Lotse Renamed user 2e233d074791c0e6ac153f38829154f0 als abwesend, inaktiv seit 14 Tagen: </span>''
* 2026-08-01T06:20:38Z '''[[:de:Special:Diff/prev/269258444|••]] MediaWiki:''' [[:de:MediaWiki:GrowthMentors.json|MediaWiki:GrowthMentors.json]] -- [[:de:user:Maintenance script|Maintenance script]] -- ''[[:de:MediaWiki:GrowthMentors.json#growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen|→]]<span class="autocomment">growthexperiments-manage-mentors-summary-change-admin-with-reason:IvaBerlin|Kennzeichnung von Lotse IvaBerlin als abwesend, inaktiv seit 14 Tagen: </span>''
* '''2026-08-01T07:35:53Z AdT2: Task finished!'''
* '''2026-08-01T07:38:20Z AdT2: Task finished!'''
* 2026-08-01T07:58:24Z '''[[:de:Special:Diff/prev/269260412|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Marie Adelaide|Marie Adelaide]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T08:03:51Z AdT3: Task finished!'''
* 2026-08-01T09:36:37Z '''[[:de:Special:Diff/prev/269265558|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Rodomonte|Rodomonte]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T09:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T10:00:21Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-01T10:00:37Z AutoArchiv Wikiversity: Task finished!'''
* 2026-08-01T10:01:30Z '''[[:de:Special:Diff/prev/269266273|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:Doc Taxon|Doc Taxon]] -- ''[[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen#Altfälle mit offenen Fragen oder Problemen|→]]<span class="autocomment">Altfälle mit offenen Fragen oder Problemen: </span>''
* '''2026-08-01T12:33:49Z AdT2: Task finished!'''
* '''2026-08-01T12:35:56Z MerlBot: Task finished!'''
* '''2026-08-01T12:36:11Z MerlBot1a: Task finished!'''
* '''2026-08-01T12:36:19Z AdT2: Task finished!'''
* '''2026-08-01T13:00:04Z AutoArchiv-Maimaid: Task finished!'''
* '''2026-08-01T13:02:28Z AdT3: Task finished!'''
* 2026-08-01T15:45:08Z '''[[:de:Special:Diff/prev/269273207|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:PerfektesChaos|PerfektesChaos]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span> aw''
* 2026-08-01T15:47:34Z '''[[:de:Special:Diff/prev/269273256|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:Wurgl|Wurgl]] -- ''[[:de:Wikipedia:Bots/Anfragen#Fünfter Streich|→]]<span class="autocomment">Fünfter Streich: </span>''
* '''2026-08-01T16:55:45Z AdT2: Task finished!'''
* '''2026-08-01T16:57:44Z AdT2: Task finished!'''
* '''2026-08-01T16:58:16Z AdT2: Task finished!'''
* '''2026-08-01T17:00:17Z AdT2: Task finished!'''
* '''2026-08-01T17:05:08Z AdT2: Task finished!'''
* '''2026-08-01T17:07:48Z AdT2: Task finished!'''
* '''2026-08-01T17:17:24Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-01T17:22:32Z AdT2: Task finished!'''
* '''2026-08-01T17:22:39Z AdT2: Task finished!'''
* '''2026-08-01T17:23:21Z AdT2: Task finished!'''
* '''2026-08-01T17:24:32Z AdT3: Task finished!'''
* '''2026-08-01T17:25:03Z AdT2: Task finished!'''
* '''2026-08-01T17:25:12Z AdT2: Task finished!'''
* '''2026-08-01T17:25:52Z AdT2: Task finished!'''
* 2026-08-01T17:28:26Z '''[[:de:Special:Diff/prev/269279381|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''Neuer Abschnitt [[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span>''
* 2026-08-01T17:32:47Z '''[[:de:Special:Diff/prev/269279452|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> typos''
* '''2026-08-01T17:53:37Z AdT3: Task finished!'''
* 2026-08-01T20:25:32Z '''[[:de:Special:Diff/prev/269294552|••]] MediaWiki:''' [[:de:MediaWiki:BlockedExternalDomains.json|MediaWiki:BlockedExternalDomains.json]] -- [[:de:user:Nolispanmo|Nolispanmo]] -- ''Gesperrte externe Domäne broadpeak.at mit Notizen hinzugefügt: 2026-08-01 20:24Z: [[WP:Weblinks/Block/broadpeak.at]]''
* 2026-08-01T21:01:04Z '''[[:de:Special:Diff/prev/269295685|••]] IMP:''' [[:de:Wikipedia Diskussion:Importwünsche|Wikipedia Diskussion:Importwünsche]] -- [[:de:user:M.ottenbruch|M.ottenbruch]] -- ''[[:de:Wikipedia Diskussion:Importwünsche#Fragen zum Import-Tool|→]]<span class="autocomment">Fragen zum Import-Tool: </span> Nachtrag''
* '''2026-08-01T21:55:09Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:00:10Z Review: Task finished!'''
* '''2026-08-01T22:00:13Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-01T22:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* 2026-08-01T22:00:17Z '''[[:de:Special:Diff/prev/269297117|••]] LKU:''' [[:de:Wikipedia:Löschkandidaten/Urheberrechtsverletzungen|Wikipedia:Löschkandidaten/Urheberrechtsverletzungen]] -- [[:de:user:TaxonBot|TaxonBot]] -- ''Bot: Archivierung''
* '''2026-08-01T22:00:45Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-01T22:01:31Z AdT-Archive: Task finished!'''
* '''2026-08-01T22:01:50Z AdT2: Task finished!'''
* '''2026-08-01T22:03:57Z AdT2: Task finished!'''
* '''2026-08-01T22:03:59Z AdT2: Task finished!'''
* '''2026-08-01T22:04:05Z AdTneu: Task finished!'''
* '''2026-08-01T22:05:07Z HS-Snapshot: Task finished!'''
* '''2026-08-01T22:06:32Z AdT2: Task finished!'''
* '''2026-08-01T22:06:35Z AdT2: Task finished!'''
* '''2026-08-01T22:31:20Z AdT3: Task finished!'''
== TaxonBot: Protokoll 2026-08-02 ==
* '''2026-08-02T01:43:29Z NeueArtikel3: Task finished!'''
* 2026-08-02T03:07:44Z '''[[:de:Special:Diff/prev/269299918|••]] Bots:''' [[:de:Wikipedia:Bots/Anfragen|Wikipedia:Bots/Anfragen]] -- [[:de:user:SpBot|SpBot]] -- ''Archiviere 1 Abschnitt: 1 nach [[Wikipedia:Bots/Anfragen/Archiv/2026-2]] (ab Abschnitt [[Wikipedia:Bots/Anfragen/Archiv/2026-2#Arkaden_->_Arkade?|Arkaden_->_Arkade?]]) - letzte Bearbeitung: [[:User:Wurgl|Wurgl]], 2026-08-01 17:47''
* '''2026-08-02T05:33:19Z AutoArchiv Wikipedia: Task finished!'''
* '''2026-08-02T08:27:18Z AdT2: Task finished!'''
* '''2026-08-02T08:30:06Z AdT2: Task finished!'''
* '''2026-08-02T08:30:35Z AdT2: Task finished!'''
* '''2026-08-02T08:33:21Z AdT2: Task finished!'''
* '''2026-08-02T08:33:31Z AdT2: Task finished!'''
* '''2026-08-02T08:36:07Z AdT2: Task finished!'''
* '''2026-08-02T08:57:58Z AdT3: Task finished!'''
* '''2026-08-02T09:55:08Z HS-Snapshot: Task finished!'''
* '''2026-08-02T10:00:14Z AutoArchiv Wiktionary: Task finished!'''
* '''2026-08-02T10:00:20Z AutoArchiv Wikivoyage: Task finished!'''
* '''2026-08-02T10:00:35Z AutoArchiv Wikiversity: Task finished!'''
* '''2026-08-02T10:22:31Z AdT2: Task finished!'''
* '''2026-08-02T10:25:04Z AdT2: Task finished!'''
* '''2026-08-02T10:37:08Z AdT2: Task finished!'''
* '''2026-08-02T10:39:44Z AdT2: Task finished!'''
* '''2026-08-02T10:40:07Z AdT2: Task finished!'''
* '''2026-08-02T10:41:02Z AdT2: Task finished!'''
* '''2026-08-02T10:42:46Z AdT2: Task finished!'''
* '''2026-08-02T10:43:40Z AdT2: Task finished!'''
* '''2026-08-02T10:52:02Z AdT3: Task finished!'''
* '''2026-08-02T10:59:37Z AdT2: Task finished!'''
* '''2026-08-02T11:02:13Z AdT2: Task finished!'''
* '''2026-08-02T11:13:14Z AdT2: Task finished!'''
* '''2026-08-02T11:15:58Z AdT2: Task finished!'''
* '''2026-08-02T11:28:35Z AdT3: Task finished!'''
* 2026-08-02T11:50:10Z '''[[:de:Special:Diff/prev/269310320|••]] BIBR:''' [[:de:Wikipedia:Bibliotheksrecherche/Anfragen|Wikipedia:Bibliotheksrecherche/Anfragen]] -- [[:de:user:Uwe Gille|Uwe Gille]] -- ''Neuer Abschnitt [[:de:Wikipedia:Bibliotheksrecherche/Anfragen#Zootaxa|→]]<span class="autocomment">Zootaxa: </span>''
642t6uj8q4mez4qdqtmdr40zqh82gb0
User:LuniZunie/scripts/WikiShield.js
2
124099
619547
613760
2026-08-01T16:31:01Z
LuniZunie
25284
update for testing
619547
javascript
text/javascript
// Code is available at https://github.com/LuniZunie/WikiShield-App
/*<nowiki>*/!function(){"use strict";var e={4279(e){e.exports="@import url('https://fonts.googleapis.com/css2?family=Varela+Round&display=swap');\r\n\r\n:root {\r\n\t--max-z-index: 2147483647;\r\n\r\n --body-color: rgba(241, 245, 255, 1);\r\n --body-background: rgba(20, 20, 30, 1);\r\n\r\n font-family: 'Inter', sans-serif;\r\n \tfont-optical-sizing: auto;\r\n -webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n* {\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n::-webkit-scrollbar {\r\n\twidth: 10px;\r\n\theight: 10px;\r\n}\r\n\r\n::-webkit-scrollbar-track {\r\n\tbackground: transparent;\r\n}\r\n\r\n::-webkit-scrollbar-thumb {\r\n\tborder: 2px solid transparent;\r\n border-radius: 10px;\r\n\r\n\t/* Theme dependent */\r\n\tbackground: rgba(255, 255, 255, .1);\r\n\tbackground-clip: content-box;\r\n\r\n\t&:hover {\r\n\t\tborder: 2px solid transparent;\r\n\t\tborder-radius: 10px;\r\n\r\n\t\t/* Theme dependent */\r\n\t\tbackground: rgba(255, 255, 255, .2);\r\n\t\tbackground-clip: content-box;\r\n\t}\r\n}\r\n\r\nhtml, body {\r\n width: 100%;\r\n\theight: 100%;\r\n\r\n\toverflow: hidden;\r\n\r\n /* Theme dependent */\r\n background: linear-gradient(135deg,\r\n\t\trgba(20, 30, 48, 1),\r\n\t\trgba(36, 59, 85, 1)\r\n\t);\r\n}\r\n\r\n@keyframes loading-dots {\r\n\t0%, 100% {\r\n\t\tcontent: '';\r\n\t}\r\n\t25% {\r\n\t\tcontent: '.';\r\n\t}\r\n\t50% {\r\n\t\tcontent: '..';\r\n\t}\r\n\t75% {\r\n\t\tcontent: '...';\r\n\t}\r\n}\r\n\r\n.animate-loading-dots::after {\r\n\tcontent: '';\r\n\r\n\tdisplay: inline-block;\r\n\r\n\tanimation: loading-dots 1.5s steps(3, start) infinite;\r\n}\r\n\r\n.auto-scroll {\r\n white-space: nowrap;\r\n overflow: auto hidden;\r\n\r\n scrollbar-width: none;\r\n -ms-overflow-style: none;\r\n\r\n\t&::-webkit-scrollbar { display: none; }\r\n\r\n & > .auto-scroll-item {\r\n display: inline-block;\r\n\r\n\t\t&:not(:last-child) {\r\n\t\t\tmargin-right: 20px;\r\n\t\t}\r\n }\r\n &:not(:has(> .auto-scroll-item)) {\r\n opacity: 0;\r\n }\r\n}"},5540(e){e.exports='<!DOCTYPE html>\r\n<html lang="en">\r\n <head>\r\n <meta charset="UTF-8">\r\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\r\n <meta http-equiv="Content-Security-Policy">\r\n\r\n <title>WikiShield</title>\r\n <link rel="icon" href="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" type="image/png">\r\n\r\n <link rel="stylesheet" href="https://fonts.cdnfonts.com/css/open-dyslexic">\r\n <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.0/css/all.min.css">\r\n\r\n <link rel="stylesheet" href="../common/style.css">\r\n <link rel="stylesheet" href="style.css">\r\n\r\n <script type="module" src="script.js"><\/script>\r\n </head>\r\n <body>\r\n <div id="loading">\r\n <img class="icon" src="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" alt="WikiShield Logo">\r\n </div>\r\n <div id="initial" class="hidden">\r\n\t\t\t<canvas id="dots-canvas"></canvas>\r\n\t\t\t<div id="welcome-container" class="shimmer shimmer-border">\r\n\t\t\t\t<div class="shield-container">\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="shield-icon">\r\n\t\t\t\t\t\t<img src="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" alt="WikiShield Logo">\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<h1>Welcome to <span id="wikishield-sikiwhield">WikiShield</span></h1>\r\n\t\t\t\t<div class="about-links">\r\n\t\t\t\t\t<a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="about-link">About</a>\r\n\t\t\t\t\t<a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia talk:WikiShield" target="_blank" class="about-link">Discuss</a>\r\n\t\t\t\t\t<span class="about-link">v<span class="VERSION"></span></span>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div id="rollback-needed" class="hidden">\r\n\t\t\t\t\t<p><span class="fa fa-exclamation-triangle"></span> You must have rollback or admin rights to use this script.</p>\r\n\t\t\t\t\t<p>You can apply for rollback rights <a rel="noopener" class="request-link" href="https://www.wikidata.org/wiki/Q7765871" target="_blank">here</a>.</p>\r\n\t\t\t\t</div>\r\n\t\t\t\t<button type="button" id="start-button">\r\n\t\t\t\t\tStart WikiShield <i class="fas fa-arrow-right"></i>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n <div id="app" class="hidden">\r\n <div id="container">\r\n <div id="queue">\r\n <div id="queue-top">\r\n <div id="queue-top-left" class="queue-button-cluster" data-zen-show="alerts,messages">\r\n <span class="fa fa-bell" id="alerts-icon" data-tooltip="Alerts" data-zen-show="alerts">\r\n <span id="alerts-count" class="icon-count hidden red" data-zen-show="badges"></span>\r\n </span>\r\n <span class="fa fa-inbox" id="messages-icon" data-tooltip="Messages" data-zen-show="messages">\r\n <span id="messages-count" class="icon-count hidden blue" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="DEFCON">\r\n <div class="dot"></div>\r\n <span><span class="DEFCON-RPM">0</span> RPM</span>\r\n </div>\r\n <div id="queue-top-right" class="queue-button-cluster">\r\n <span class="fa fa-envelope" id="email-button" data-tooltip="Email Emergency, ArbCom, or Oversight" data-multiple-hrefs="email" href></span>\r\n <span class="fa fa-gear" id="settings-icon" data-tooltip="Settings"></span>\r\n </div>\r\n </div>\r\n <div id="queue-tabs">\r\n <div id="queue-tab-recent" class="queue-tab selected" data-tooltip="Recent edits">\r\n <span class="fas fa-stopwatch">\r\n <span class="icon-count hidden gray" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-pending" class="queue-tab" data-tooltip="Pending edits">\r\n <span class="fas fa-flag">\r\n <span class="icon-count hidden orange" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-users" class="queue-tab" data-tooltip="User creation logs">\r\n <span class="fas fa-user">\r\n <span class="icon-count hidden green" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-watchlist" class="queue-tab" data-tooltip="Watchlist edits">\r\n <span class="fas fa-book-bookmark">\r\n <span class="icon-count hidden blue" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-abuselog" class="queue-tab" data-tooltip="Abuse logs">\r\n <span class="fas fa-filter-circle-xmark">\r\n <span class="icon-count hidden red" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n </div>\r\n <div id="queue-items" class="queue-list">\r\n <div class="queue-empty">\r\n No edits in queue.\r\n </div>\r\n </div>\r\n <div class="width-adjust" id="queue-width-adjust"></div>\r\n <div id="clear-queue">\r\n <span class="fa fa-trash"></span>\r\n </div>\r\n </div>\r\n <div id="alerts-panel" class="notification-panel">\r\n <div id="alerts-header" class="notification-header">\r\n <span>Alerts</span>\r\n <span id="mark-all-alerts-read" class="mark-all-read">Mark all as read</span>\r\n </div>\r\n <div id="alerts-list" class="notification-list"></div>\r\n </div>\r\n <div id="messages-panel" class="notification-panel">\r\n <div id="messages-header" class="notification-header">\r\n <span>Messages</span>\r\n <span id="mark-all-messages-read" class="mark-all-read">Mark all as read</span>\r\n </div>\r\n <div id="messages-list" class="notification-list"></div>\r\n </div>\r\n <div id="right-container">\r\n <div id="right-content">\r\n <div id="main-container">\r\n <div id="edit-details">\r\n <div class="central">Nothing selected</div>\r\n </div>\r\n <div id="previous-item-button" class="nav-item-button">\r\n <i class="fas fa-chevron-left"></i>\r\n </div>\r\n <div id="next-item-button" class="nav-item-button">\r\n <i class="fas fa-chevron-right"></i>\r\n </div>\r\n <div id="ai-analysis-container" class="hidden shimmer shimmer-border">\r\n <div class="header">\r\n <i class="fas fa-robot"></i>\r\n <span class="title">AI Analysis</span>\r\n <span class="assessment"></span>\r\n <span class="confidence"></span>\r\n </div>\r\n <div class="explanation"></div>\r\n <div class="issues"></div>\r\n </div>\r\n <div id="diff-scroll-up" class="diff-scroll-button hidden">\r\n <i class="fas fa-chevron-up"></i>\r\n </div>\r\n <div id="diff-container"></div>\r\n <div id="diff-scroll-down" class="diff-scroll-button hidden">\r\n <i class="fas fa-chevron-down"></i>\r\n </div>\r\n <div id="pending-changes-container" class="hidden">\r\n <div class="accept">Accept</div>\r\n <div class="reject">Reject</div>\r\n </div>\r\n <div id="progress-bar-container"></div>\r\n <div id="bottom-tools" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-item" data-menu="revert" data-queue-type="edit">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-undo"></i>\r\n <span>Revert</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="warn" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-exclamation-triangle"></i>\r\n <span>Warn</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="user" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-user"></i>\r\n <span>User</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="page" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-file-lines"></i>\r\n <span>Page</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="edit" data-queue-type="edit">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-pen-to-square"></i>\r\n <span>Edit</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div id="copy-link" data-tooltip="Copy link" data-queue-type="edit,logevent,abuselog">\r\n <div>\r\n <i class="fas fa-link"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div id="right-details">\r\n <div id="right-top">\r\n <div class="tabs">\r\n <div id="latest-edits-tab" class="tab hidden selected" data-tooltip="Latest edit">\r\n <i class="fas fa-user"></i>\r\n </div>\r\n <div id="consecutive-edits-tab" class="tab hidden" data-tooltip="Consecutive edits">\r\n <i class="fas fa-users"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="icons"></div>\r\n </div>\r\n\r\n <div id="user-contributions" class="section" data-queue-type="edit,logevent,abuselog">\r\n <div class="header">\r\n <div class="title"><i id="refresh-user-contributions" class="fas fa-rotate"></i> Contributions</div>\r\n <div class="pills">\r\n\r\n </div>\r\n </div>\r\n <div class="queue-list">\r\n\r\n </div>\r\n <div class="footer">\r\n <span>View all contributions</span>\r\n <i class="fas fa-arrow-right"></i>\r\n </div>\r\n </div>\r\n\r\n <div id="page-history" class="section" data-queue-type="edit,abuselog">\r\n <div class="header">\r\n <div class="title"><i id="refresh-page-history" class="fas fa-rotate"></i> Page History</div>\r\n <div class="pills">\r\n\r\n </div>\r\n </div>\r\n <div class="queue-list">\r\n\r\n </div>\r\n <div class="footer">\r\n <span>View full page history</span>\r\n <i class="fas fa-arrow-right"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="width-adjust" id="details-width-adjust"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-menu" id="revert-menu"></div>\r\n <div class="bottom-tool-menu" id="warn-menu"></div>\r\n <div class="bottom-tool-menu" id="user-menu">\r\n <div id="user-open-user-page" class="menu-option">\r\n <i class="fas fa-user-circle"></i>\r\n <span>Open user page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-open-user-talk" class="menu-option">\r\n <i class="fas fa-comments"></i>\r\n <span>Open user talk</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-view-contribs" class="menu-option">\r\n <i class="fas fa-list"></i>\r\n <span>View contributions</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-view-filter-log" class="menu-option">\r\n <i class="fas fa-filter"></i>\r\n <span>View filter log</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-whitelist" class="menu-option">\r\n <i class="fas fa-check"></i>\r\n <span>Whitelist user</span>\r\n </div>\r\n <div id="user-unwhitelist" class="menu-option hidden">\r\n <i class="fas fa-xmark"></i>\r\n <span>Unwhitelist user</span>\r\n </div>\r\n <div id="user-highlight" class="menu-option">\r\n <i class="fas fa-star"></i>\r\n <span>Highlight user</span>\r\n </div>\r\n <div id="user-unhighlight" class="menu-option hidden">\r\n <i class="fas fa-star"></i>\r\n <span>Unhighlight user</span>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-welcome" class="menu-option submenu-trigger">\r\n <i class="fas fa-paper-plane"></i>\r\n <span>Welcome</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-report-aiv" class="menu-option submenu-trigger">\r\n <i class="fas fa-flag"></i>\r\n <span>Report (AIV)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-report-uaa" class="menu-option submenu-trigger">\r\n <i class="fas fa-user-slash"></i>\r\n <span>Report (UAA)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-request-global-block" class="menu-option submenu-trigger">\r\n <i class="fas fa-ban"></i>\r\n <span>Request global block</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-request-global-lock" class="menu-option submenu-trigger">\r\n <i class="fas fa-lock"></i>\r\n <span>Request global lock</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-new-talk-topic" class="menu-option submenu-trigger">\r\n <i class="fas fa-envelope"></i>\r\n <span>Message user</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n <div class="bottom-tool-menu" id="page-menu">\r\n <div id="page-open-page" class="menu-option">\r\n <i class="fas fa-file"></i>\r\n <span>Open page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="page-open-talk" class="menu-option">\r\n <i class="fas fa-comments"></i>\r\n <span>Open talk page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="page-view-history" class="menu-option">\r\n <i class="fas fa-clock-rotate-left"></i>\r\n <span>View page history</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-watch" class="menu-option">\r\n <i class="fas fa-eye"></i>\r\n <span>Watch page</span>\r\n </div>\r\n <div id="page-unwatch" class="menu-option">\r\n <i class="fas fa-eye-slash"></i>\r\n <span>Unwatch page</span>\r\n </div>\r\n <div id="page-whitelist" class="menu-option">\r\n <i class="fas fa-check"></i>\r\n <span>Whitelist page</span>\r\n </div>\r\n <div id="page-unwhitelist" class="menu-option hidden">\r\n <i class="fas fa-xmark"></i>\r\n <span>Unwhitelist page</span>\r\n </div>\r\n <div id="page-highlight" class="menu-option">\r\n <i class="fas fa-star"></i>\r\n <span>Highlight page</span>\r\n </div>\r\n <div id="page-unhighlight" class="menu-option hidden">\r\n <i class="fas fa-star"></i>\r\n <span>Unhighlight page</span>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-request-protection" class="menu-option submenu-trigger">\r\n <i class="fas fa-shield-halved"></i>\r\n <span>Request protection</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-new-talk-topic" class="menu-option submenu-trigger">\r\n <i class="fas fa-envelope"></i>\r\n <span>New talk page topic</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n <div class="bottom-tool-menu" id="edit-menu">\r\n <div id="edit-view-revision" class="menu-option">\r\n <i class="fas fa-eye"></i>\r\n <span>View revision</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="edit-view-diff" class="menu-option">\r\n <i class="fas fa-code-compare"></i>\r\n <span>View diff</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="edit-thank-user" class="menu-option">\r\n <i class="fas fa-heart"></i>\r\n <span>Thank user</span>\r\n </div>\r\n <div id="edit-rollback" class="menu-option submenu-trigger">\r\n <i class="fas fa-rotate-left"></i>\r\n <span>Rollback</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="edit-rollback-goodfaith" class="menu-option submenu-trigger">\r\n <i class="fas fa-handshake"></i>\r\n <span>Rollback (good faith)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="edit-undo" class="menu-option submenu-trigger">\r\n <i class="fas fa-arrow-rotate-left"></i>\r\n <span>Undo</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n\r\n <div id="settings-container">\r\n <div class="settings">\r\n <div class="settings-left">\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>CORE</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-general-button">\r\n <span><i class="fas fa-gear"></i>General</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-audio-button">\r\n <span><i class="fas fa-volume-high"></i>Audio</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-controls-button">\r\n <span><i class="fas fa-keyboard"></i>Controls</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-zen-button">\r\n <span><i class="fas fa-spa"></i>Zen Mode</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>APPEARANCE</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-app-button">\r\n <span><i class="fas fa-palette"></i>App</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-queue-button">\r\n <span><i class="fas fa-list"></i>Queue</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-accessibility-button">\r\n <span><i class="fas fa-universal-access"></i>Accessibility</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>TOOLS</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-auto-reporting-button">\r\n <span><i class="fas fa-flag"></i>Auto Reporting</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-gadgets-button">\r\n <span><i class="fas fa-toolbox"></i>Gadgets</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-AI-button">\r\n <span><i class="fas fa-robot"></i>AI Analysis</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>WHITELIST</span>\r\n </div>\r\n <div class="settings-left-menu-compact">\r\n <div class="settings-left-menu-item" id="settings-whitelist-users-button">\r\n <i class="fas fa-user" title="Users"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-whitelist-pages-button">\r\n <i class="fas fa-file" title="Pages"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-whitelist-tags-button">\r\n <i class="fas fa-tag" title="Tags"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>HIGHLIGHT</span>\r\n </div>\r\n <div class="settings-left-menu-compact">\r\n <div class="settings-left-menu-item" id="settings-highlight-users-button">\r\n <i class="fas fa-user" title="Users"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-highlight-pages-button">\r\n <i class="fas fa-file" title="Pages"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-highlight-tags-button">\r\n <i class="fas fa-tag" title="Tags"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>DATA</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-statistics-button">\r\n <span><i class="fas fa-chart-area"></i>Statistics</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-save-button">\r\n <span><i class="fas fa-floppy-disk"></i>Save</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>WIKISHIELD</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-changelog-button">\r\n <span><i class="fas fa-file-alt"></i>Changelog</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-about-button">\r\n <span><i class="fas fa-info"></i>About</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="settings-right">\r\n <div class="general hidden">\r\n <div class="settings-section" data-electron="false">\r\n <div class="settings-section-title">Launch behavior</div>\r\n <div class="settings-section-desc">Choose whether WikiShield should open in the current tab or a new tab when launched.</div>\r\n <div id="settings-launch-behavior" class="settings-radio-group">\r\n <div class="settings-radio-option selected" data-value="current_page">Run on current page</div>\r\n <div class="settings-radio-option" data-value="new_page">Run on <a href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield/run">/Run</a> page</div>\r\n </div>\r\n </div>\r\n <div class="settings-compact-grid">\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Maximum edit count</div>\r\n <div class="settings-section-desc">Edits from users with more than this number of total edits will not be shown unless that user is highlighted.</div>\r\n <numeric-input id="settings-maximum-edit-count" step="5" min="0" value="50"></numeric-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Maximum queue size</div>\r\n <div class="settings-section-desc">Maximum number of edits to keep in the queue for review. Higher values may impact performance.</div>\r\n <numeric-input id="settings-maximum-queue-size" step="10" min="0" value="100"></numeric-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Minimum ORES score</div>\r\n <div class="settings-section-desc">Minimum ORES score required for an edit to appear in the recent changes queue.</div>\r\n <numeric-input id="settings-minimum-ores-score" step="0.05" min="0" max="1" value="0"></numeric-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">ORES bias</div>\r\n <div class="settings-section-desc">\r\n Select how ORES scores are calculated for edits in the recent changes queue. "Badfaith" is how likely an edit is to be made in bad faith, "Damaging" is how likely an edit is to be damaging.\r\n </div>\r\n <div id="settings-ores-bias" class="settings-slider">\r\n <div class="settings-slider-labels">\r\n <div class="settings-slider-label-left active">Badfaith<span class="percent">50%</span></div>\r\n <div class="settings-slider-label-right active">Damaging<span class="percent">50%</span></div>\r\n </div>\r\n <div class="settings-slider-track">\r\n <div class="settings-slider-thumb"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Watchlist expiry</div>\r\n <div class="settings-section-desc">Amount of time to leave warned user\'s talk pages on your watchlist.</div>\r\n <duration-input id="settings-watchlist-expiry"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Namespaces to monitor</div>\r\n <div class="settings-section-desc">Select which namespaces WikiShield should monitor for recent changes and pending changes.</div>\r\n <div id="settings-namespaces-container" class="checkbox-container">\r\n \x3c!-- Namespace checkboxes will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="audio hidden">\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-header">\r\n <span class="settings-section-header-icon">ORES</span>\r\n <span>ORES Alerts</span>\r\n </div>\r\n <div class="settings-section compact inline" id="sound-alert-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Sound alerts for high ORES scores</div>\r\n <div class="settings-section-desc">Play a sound when an edit above the threshold is added to the queue</div>\r\n </div>\r\n <toggle-input id="settings-ORES-alert-toggle" value="false"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="sound-alert-ores-score">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">ORES score threshold</div>\r\n <div class="settings-section-desc">Play a sound alert when an edit with an ORES score above this value is added</div>\r\n </div>\r\n <numeric-input id="settings-ORES-alert-threshold" step="0.05" min="0" max="1" value="0.9"></numeric-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Volume</div>\r\n <volume-control\r\n id="settings-master-volume"\r\n title="Master Volume"\r\n description="Controls the overall volume of all sounds"\r\n value="1"\r\n ></volume-control>\r\n <div id="settings-sounds-container" class="settings-section">\r\n \x3c!-- Individual sound settings will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="controls hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Keyboard shortcuts</div>\r\n <div class="settings-section-desc">Customize keyboard shortcuts for various actions in WikiShield.</div>\r\n <div class="settings-section compact inline" id="repeat-control-scripts">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Repeat control scripts</div>\r\n <div class="settings-section-desc">Allow control scripts to be triggered repeatedly when holding down keys</div>\r\n </div>\r\n <toggle-input id="repeat-control-scripts-toggle" value="true"></toggle-input>\r\n </div>\r\n <button type="button" id="settings-new-control-script" class="add-action-button new-control-script"><span class="fa fa-plus"></span> Add new action</button>\r\n </div>\r\n </div>\r\n <div class="zen hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Zen Mode</div>\r\n <div class="settings-section-desc">Your distraction-free editing experience.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable Zen Mode</div>\r\n <div class="settings-section-desc">Reduce on-screen distractions while reviewing edits.</div>\r\n </div>\r\n <toggle-input id="settings-zen-mode" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Customize Zen Mode</div>\r\n <div class="settings-compact-grid">\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Sound</div>\r\n <div class="settings-section-desc">Play sound in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-sound" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact" data-electron="true">\r\n <div class="settings-section-title">Music</div>\r\n <div class="settings-section-desc">Play background music in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-music" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Alerts</div>\r\n <div class="settings-section-desc">Show alerts in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-alerts" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Messages</div>\r\n <div class="settings-section-desc">Show messages in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-messages" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Toasts</div>\r\n <div class="settings-section-desc">Show toasts in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-toasts" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Badges</div>\r\n <div class="settings-section-desc">Show badges in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-badges" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="app hidden">\r\n \x3c!-- <div class="settings-section">\r\n <div class="settings-section-title">App theme</div>\r\n <div class="settings-section-desc">Choose between light mode, dark mode, or automatic switching based on system settings.</div>\r\n <div id="settings-app-theme" class="settings-radio-group">\r\n <div class="settings-radio-option" data-value="light">Light mode</div>\r\n <div class="settings-radio-option selected" data-value="auto">Auto</div>\r\n <div class="settings-radio-option" data-value="dark">Dark mode</div>\r\n </div>\r\n </div> --\x3e\r\n <div class="settings-section">\r\n <div class="settings-section-title">Startup animation</div>\r\n <div class="settings-section-desc">Enable or disable the startup animation when launching WikiShield.</div>\r\n <div id="settings-startup-performance" class="settings-radio-group">\r\n <div class="settings-radio-option" data-value="always_off">Always off</div>\r\n <div class="settings-radio-option selected" data-value="adaptive">Adaptive (recommended)</div>\r\n <div class="settings-radio-option" data-value="always_on">Always on</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="queue hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Queues</div>\r\n <div class="settings-section-desc">Enable or disable different edit queues, and customize their order.</div>\r\n <draggable-order-list id="settings-queues">\r\n \x3c!-- Queue items will be populated here --\x3e\r\n </draggable-order-list>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Color palette</div>\r\n <div class="settings-section-desc">Select the color palette used for highlighting users and pages.</div>\r\n <div id="settings-palette-selector" class="palette-selector">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class="accessibility hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Accessibility Options</div>\r\n <div class="settings-section-desc">Customize accessibility features for better usability.</div>\r\n <div class="settings-compact-grid">\r\n \x3c!-- <div class="settings-section compact">\r\n <div class="settings-section-title">Colorblind Mode</div>\r\n <div class="settings-section-desc">Add indicators to help distinguish colors for colorblind users.</div>\r\n <toggle-input id="settings-colorblind-mode" value="false"></toggle-input>\r\n </div> --\x3e\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Dyslexia Friendly Font</div>\r\n <div class="settings-section-desc">Use a font that is easier to read for users with dyslexia.</div>\r\n <toggle-input id="settings-dyslexia-font" value="false"></toggle-input>\r\n </div>\r\n \x3c!-- <div class="settings-section compact">\r\n <div class="settings-section-title">High Contrast Mode</div>\r\n <div class="settings-section-desc">Increase contrast for better visibility.</div>\r\n <toggle-input id="settings-high-contrast-mode" value="false"></toggle-input>\r\n </div> --\x3e\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Reduce Motion</div>\r\n <div class="settings-section-desc">Minimize motion effects for users sensitive to motion.</div>\r\n <toggle-input id="settings-reduce-motion" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="auto-reporting hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Enable Auto Reporting</div>\r\n <div class="settings-section-desc">Automatically report edits that receive certain warnings.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Auto Reporting</div>\r\n <div class="settings-section-desc">When enabled, edits that trigger selected warnings will be automatically reported.</div>\r\n </div>\r\n <toggle-input id="settings-auto-reporting-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Auto Reporting Warnings</div>\r\n <div class="settings-section-desc">Select which warnings should trigger automatic reporting.</div>\r\n <div id="settings-auto-reporting-warnings-container" class="checkbox-container">\r\n \x3c!-- Checkboxes will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="gadgets hidden">\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Gadgets</div>\r\n <div class="settings-section-desc">Toggle various Wikishield features.</div>\r\n <div class="settings-section compact inline" id="auto-welcome-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Automatic welcoming of new users</div>\r\n <div class="settings-section-desc">Automatically welcome new users with empty talk pages when moving past their constructive edits</div>\r\n </div>\r\n <toggle-input id="settings-auto-welcome-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="wikipedia-popups-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Popups</div>\r\n <div class="settings-section-desc">When enabled, links will be opened in a new window. Otherwise, they will be opened in your default browser. (Not supported by Opera or Safari browsers)</div>\r\n </div>\r\n <toggle-input id="settings-wikipedia-popups-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="talk-page-thanks-for-temporary-users-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Send talk page thanks for temporary users</div>\r\n <div class="settings-section-desc">If enabled, when you thank a temporary user with an empty talk page, WikiShield will send them a welcoming thank you message in addition to the standard thank you message.</div>\r\n </div>\r\n <toggle-input id="settings-edit-summaries-toggle" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Username Highlighting</div>\r\n <div class="settings-section compact inline" id="username-highlighting-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable username highlighting</div>\r\n <div class="settings-section-desc">Highlights usernames in edit summaries, edit diffs, and user creation logs.</div>\r\n </div>\r\n <toggle-input id="settings-username-highlighting-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="username-highlighting-mode-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Toggle fuzzy matching mode</div>\r\n <div class="settings-section-desc">\r\n When enabled, highlights similar usernames. Not recommended for users with short usernames.<br/>\r\n <strong>NOTE:</strong> This may cause performance issues for those with long usernames, or users on weaker devices.\r\n </div>\r\n </div>\r\n <toggle-input id="settings-username-highlighting-fuzzy-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="AI hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">AI Analysis</div>\r\n <div class="settings-section-desc">Configure AI-powered analysis features.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable Ollama AI Analysis (<a href="https://ollama.com">ollama.com</a>)</div>\r\n <div class="settings-section-desc">Use local AI models with complete privacy.</div>\r\n </div>\r\n <toggle-input id="settings-AI-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-header">\r\n <span class="settings-section-header-icon">Tools</span>\r\n </div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Edit Analysis</div>\r\n <div class="settings-section-desc">Suggests actions to take on edits.</div>\r\n </div>\r\n <toggle-input id="settings-AI-edit-analysis-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Username Analysis</div>\r\n <div class="settings-section-desc">Flags potentially problematic usernames and prompts you to report them to UAA</div>\r\n </div>\r\n <toggle-input id="settings-AI-username-analysis-toggle" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-server-url">\r\n <div class="settings-section-title">Server URL</div>\r\n <div class="settings-section-desc">The URL of your local Ollama server</div>\r\n <div class="text-input-container">\r\n <input title="Ollama URL" type="text" id="ollama-url-input" autoComplete="off">\r\n <button type="button" id="settings-ollama-test-connection">Test Connection</button>\r\n </div>\r\n <div class="settings-section compact connection-status-container">\r\n <p id="settings-ollama-connection-status"></p>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-model-select">\r\n <div class="settings-section-title">\r\n Model Selection\r\n <button type="button" id="settings-ollama-refresh-models">\r\n <span class="fa fa-sync"></span> Refresh Models\r\n </button>\r\n </div>\r\n <div class="settings-section-desc">Select which Ollama model to use for edit analysis</div>\r\n <div class="settings-section compact models-container">\r\n <p id="settings-ollama-models-status">Click "Refresh Models" to load available models</p>\r\n <div id="settings-ollama-models"></div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-setup">\r\n <div class="settings-section-title">Setup required</div>\r\n <div class="settings-section-desc">\r\n <details>\r\n <summary><strong>Windows (Permanent)</strong></summary>\r\n <ol class="pad-list">\r\n <li>Press <code>Win + R</code>, type <code>sysdm.cpl</code>, and press Enter</li>\r\n <li>Go to the "Advanced" tab and click on "Environment Variables"</li>\r\n <li>Create a new variable under "System variables"</li>\r\n <li>Set the name to <code>OLLAMA_HOST</code> and the value to <code>http://127.0.0.11434</code>\r\n <ul class="pad-list">\r\n <li><strong>NOTE:</strong> You can change the port (11434) if that port is already in use, but make sure to update the "Server URL" setting in WikiShield accordingly</li>\r\n </ul>\r\n </li>\r\n <li>Click "OK" to save the variable</li>\r\n <li>Create another variable under "System variables"</li>\r\n <li>Set the name to <code>OLLAMA_ORIGINS</code> and the value to <code>https://*.wikipedia.org</code></li>\r\n <li>Click "OK" to save the variable, you can now close the Environment Variables and System Properties windows</li>\r\n <li>Restart Ollama</li>\r\n </ol>\r\n </details>\r\n\r\n <details>\r\n <summary><strong>Windows (Temporary)</strong></summary>\r\n <pre>\r\n$env:OLLAMA_HOST="http://127.0.0.11434"\r\n$env:OLLAMA_ORIGINS="https://*.wikipedia.org"\r\nollama serve</pre>\r\n </details>\r\n\r\n <details>\r\n <summary><strong>macOS / Linux</strong></summary>\r\n Add the following to <code>~/.bashrc</code> or <code>~/.zshrc</code>:\r\n <pre>\r\nexport OLLAMA_HOST="http://127.0.0.11434"\r\nexport OLLAMA_ORIGINS="https://*.wikipedia.org"</pre>\r\n Then run:\r\n <pre>source ~/.bashrc && ollama serve</pre>\r\n </details>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="whitelist users hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted users</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted user is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-users-expiry" label="Default expiry for whitelisted users"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Users</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted users.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-users-input" placeholder="Add user to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-users-add-button">Add user</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-users-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted users will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="whitelist pages hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted pages</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted page is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-pages-expiry" label="Default expiry for whitelisted pages"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Pages</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted pages.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-pages-input" placeholder="Add page to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-pages-add-button">Add page</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-pages-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted pages will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="whitelist tags hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted tags</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted tag is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-tags-expiry" label="Default expiry for whitelisted tags"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Tags</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted tags.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-tags-input" placeholder="Add tag to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-tags-add-button">Add tag</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-tags-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted tags will be populated here --\x3e\r\n </div>\r\n </div>\r\n\r\n <div class="highlight users hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted users</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted user is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-users-expiry" label="Default expiry for highlighted users"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Users</div>\r\n <div class="settings-section-desc">Manage your list of highlighted users.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-users-input" placeholder="Add user to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-users-add-button">Add user</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-users-list" class="settings-section list-container">\r\n \x3c!-- Highlighted users will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="highlight pages hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted pages</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted page is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-pages-expiry" label="Default expiry for highlighted pages"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Pages</div>\r\n <div class="settings-section-desc">Manage your list of highlighted pages.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-pages-input" placeholder="Add page to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-pages-add-button">Add page</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-pages-list" class="settings-section list-container">\r\n \x3c!-- Highlighted pages will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="highlight tags hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted tags</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted tag is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-tags-expiry" label="Default expiry for highlighted tags"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Tags</div>\r\n <div class="settings-section-desc">Manage your list of highlighted tags.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-tags-input" placeholder="Add tag to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-tags-add-button">Add tag</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-tags-list" class="settings-section list-container">\r\n \x3c!-- Highlighted tags will be populated here --\x3e\r\n </div>\r\n </div>\r\n\r\n <div class="statistics hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">\r\n Statistics Overview\r\n <button type="button" id="reset-statistics-button">Reset Statistics</button>\r\n </div>\r\n <div class="stats-grid">\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-total-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Edits Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n You have thanked <span id="stats-thanks-percentage"></span>% of the edits you reviewed\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-recent-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Recent Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n Recent changes make up <span id="stats-recent-changes-percentage"></span>% of your reviewed edits\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-pending-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Pending Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n You have accepted <span id="stats-pending-changes-accepted"></span> (\r\n <span id="stats-pending-changes-accepted-percentage"></span>%\r\n ) pending changes\r\n </div>\r\n <div class="stat-sublabel">\r\n You have rejected <span id="stats-pending-changes-rejected"></span> (\r\n <span id="stats-pending-changes-rejected-percentage"></span>%\r\n ) pending changes from entering the public eye\r\n </div>\r\n <div class="stat-sublabel">\r\n Out of all the edits you’ve reviewed, <span id="stats-pending-changes-percentage"></span>% of them were pending review\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-user-creations-reviewed" class="stat-value"></div>\r\n <div class="stat-label">User Creations Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-user-creations-percentage"></span>% of your reviews came from user creations\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-watchlist-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Watchlist Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-watchlist-changes-percentage"></span>% of your reviews came from your watchlist\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-abuselog-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Abuse Log Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-abuselog-changes-percentage"></span>% of your reviews came from your abuse log\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-reverts-made" class="stat-value"></div>\r\n <div class="stat-label">Reverts Made</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-reverts-percentage"></span>% of edits that cross your path are reverted by you\r\n </div>\r\n <div class="stat-sublabel">\r\n You assumed good faith <span id="stats-goodfaith-reverts-percentage"></span>% of the time\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-recent-reverts-percentage"></span>% of your reverts were from recent changes\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pending-reverts-percentage"></span>% of your reverts were pending\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-watchlist-reverts-percentage"></span>% of your reverts were from your watchlist\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-abuselog-reverts-percentage"></span>% of your reverts were from your abuse log\r\n </div>\r\n <div class="stat-sublabel">\r\n …and the last <span id="stats-other-reverts-percentage"></span>% weren’t even in your queue!\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-users-welcomed" class="stat-value"></div>\r\n <div class="stat-label">Users Welcomed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-welcomed-message"></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-warnings" class="stat-value"></div>\r\n <div class="stat-label">Warnings Issued</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-1-percentage"></span>% were level 1\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-2-percentage"></span>% were level 2\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-3-percentage"></span>% were level 3\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-4-percentage"></span>% were level 4\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-4im-percentage"></span>% were level 4im\r\n </div>\r\n <div class="stat-sublabel">\r\n …and the rest we were too lazy to track =)\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-reports" class="stat-value"></div>\r\n <div class="stat-label">Reports Filed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n AIV accounted for <span id="stats-AIV-reports-percentage"></span>% of your reports\r\n </div>\r\n <div class="stat-sublabel">\r\n another <span id="stats-UAA-reports-percentage"></span>% were for UAA\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-global-block-reports-percentage"></span>% were for global block requests\r\n </div>\r\n <div class="stat-sublabel">\r\n while <span id="stats-global-lock-reports-percentage"></span>% were for global lock requests\r\n </div>\r\n <div class="stat-sublabel">\r\n finally, <span id="stats-RFPP-reports-percentage"></span>% were posted at RFPP\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-pages-watched" class="stat-value"></div>\r\n <div class="stat-label">Pages Watched</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-unwatched"></span> pages were annoying enough to be unwatched\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-items-whitelisted" class="stat-value"></div>\r\n <div class="stat-label">Items Whitelisted</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-whitelisted"></span> (\r\n <span id="stats-users-whitelisted-percentage"></span>%\r\n ) were users\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-whitelisted"></span> (\r\n <span id="stats-pages-whitelisted-percentage"></span>%\r\n ) were pages\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-tags-whitelisted"></span> (\r\n <span id="stats-tags-whitelisted-percentage"></span>%\r\n ) were tags\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-items-highlighted" class="stat-value"></div>\r\n <div class="stat-label">Items Highlighted</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-highlighted"></span> (\r\n <span id="stats-users-highlighted-percentage"></span>%\r\n ) were users\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-highlighted"></span> (\r\n <span id="stats-pages-highlighted-percentage"></span>%\r\n ) were pages\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-tags-highlighted"></span> (\r\n <span id="stats-tags-highlighted-percentage"></span>%\r\n ) were tags\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-session-time" class="stat-value"></div>\r\n <div class="stat-label">Session Time</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-reports-per-day"></span> reports per day\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-reverts-per-hour"></span> reverts per hour\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-reviews-per-minute"></span> reviews per minute\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="save hidden">\r\n <div class="save settings-section">\r\n <div class="save-settings-header">\r\n <div class="settings-section-title">Save Settings</div>\r\n <div class="settings-section-desc">Manage how and where your WikiShield settings are stored.</div>\r\n </div>\r\n\r\n <div class="save-settings-content">\r\n <div class="save-settings-card data-management-card">\r\n <div class="card-header">\r\n <div class="card-icon">\r\n <i class="fa fa-database"></i>\r\n </div>\r\n <div class="card-header-content">\r\n <div class="card-title">Data Management</div>\r\n <div class="card-desc">Import, export, or reset your WikiShield settings. Settings are encoded as base64 for easy sharing.</div>\r\n </div>\r\n </div>\r\n\r\n <div class="card-body">\r\n <div class="action-buttons-grid">\r\n <button type="button" id="settings-export-button" class="action-card export-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-download"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Export Settings</div>\r\n <div class="action-card-desc">Save your configuration</div>\r\n </div>\r\n </button>\r\n\r\n <button type="button" id="settings-import-button" class="action-card import-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-upload"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Import Settings</div>\r\n <div class="action-card-desc">Load saved configuration</div>\r\n </div>\r\n </button>\r\n\r\n <button type="button" id="settings-reset-button" class="action-card reset-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-undo"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Reset Settings</div>\r\n <div class="action-card-desc">Restore to defaults</div>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div id="settings-save-status" class="status-message hidden"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="changelog hidden">\r\n <div class="settings-section">\r\n <div class="changelog-content">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class="about hidden">\r\n <div class="settings-section">\r\n <div class="about-content">\r\n <div class="about-version">\r\n <span class="fa fa-shield-alt"></span>\r\n <span>WikiShield v<span id="settings-about-version"></span></span>\r\n </div>\r\n\r\n <div class="about-tagline">\r\n <p>A powerful, real-time patrolling tool for Wikipedia editors</p>\r\n </div>\r\n\r\n <div class="about-links">\r\n <a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="link-card docs">\r\n <div class="link-card-icon">\r\n <span class="fa fa-book"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Documentation</div>\r\n <div class="link-card-desc">Learn how to use WikiShield</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n <a rel="noopener" href="https://github.com/LuniZunie/WikiShield-App" target="_blank" class="link-card source">\r\n <div class="link-card-icon">\r\n <span class="fa fa-code-branch"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Source Code</div>\r\n <div class="link-card-desc">View on GitHub</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n <a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia_talk:WikiShield" target="_blank" class="link-card feedback">\r\n <div class="link-card-icon">\r\n <span class="fa fa-comments"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Feedback</div>\r\n <div class="link-card-desc">Share your thoughts</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n </div>\r\n\r\n <div class="about-footer">\r\n <div class="footer-divider"></div>\r\n <div class="about-credits">\r\n <div>\r\n <div class="credit-card" data-link="https://about.luni.me">\r\n <div class="credit-icon">\r\n <span class="fa fa-code"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name auto-scroll">LuniZunie</div>\r\n <div class="credit-role auto-scroll">Lead Developer</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:Ingenuity">\r\n <div class="credit-icon">\r\n <span class="fa fa-lightbulb"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name auto-scroll">Ingenuity</div>\r\n <div class="credit-role auto-scroll">Original Creator</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:Monkeysmashingkeyboards">\r\n <div class="credit-icon">\r\n <span class="fa fa-database"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name auto-scroll">Monkeysmashingkeyboards</div>\r\n <div class="credit-role auto-scroll">Backend</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:pro-anti-air">\r\n <div class="credit-icon">\r\n <span class="fa fa-book"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name auto-scroll">Pro-anti-air</div>\r\n <div class="credit-role auto-scroll">Documentation</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:Chaotic_Enby">\r\n <div class="credit-icon">\r\n <span class="fa fa-paint-brush"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name auto-scroll">Chaotic Enby</div>\r\n <div class="credit-role auto-scroll">Logo Design</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:HurricaneZeta">\r\n <div class="credit-icon">\r\n <span class="fa fa-paint-brush"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name auto-scroll">HurricaneZeta</div>\r\n <div class="credit-role auto-scroll">Logo Design</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="copyright-card" data-link="https://sound-effects.bbcrewind.co.uk">\r\n <div class="copyright-title auto-scroll">Nature sounds</div>\r\n <div class="copyright-desc auto-scroll">bbc.co.uk – © copyright 2026 BBC</div>\r\n </div>\r\n <div class="copyright-card" data-link="https://pixabay.com/sound-effects">\r\n <div class="copyright-title auto-scroll">Sound effects</div>\r\n <div class="copyright-desc auto-scroll">pixabay.com – CC0 License</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </body>\r\n</html>'},2459(e){e.exports="@keyframes startup {\n\tfrom {\n\t\topacity: 0;\n\t}\n\tto {\n\t\topacity: 1;\n\t}\n}\n\n@keyframes particles {\n\t0%, 100% {\n\t\ttransform: translate(0, 0) rotate(0deg);\n\t}\n\t33% {\n\t\ttransform: translate(30px, -30px) rotate(120deg);\n\t}\n\t66% {\n\t\ttransform: translate(-20px, 20px) rotate(240deg);\n\t}\n}\n\n@keyframes container-fade-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(30px) scale(.95);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0) scale(1);\n\t}\n}\n\n@keyframes border-glow {\n\t0%, 100% {\n\t\tbox-shadow:\n\t\t\t0 20px 60px rgba(0, 0, 0, .5),\n\t\t\t0 0 40px rgba(102, 126, 234, .4),\n\t\t\t0 0 80px rgba(240, 147, 251, .3),\n\t\t\tinset 0 0 60px rgba(102, 126, 234, .15),\n\t\t\tinset 0 1px 0 rgba(255, 255, 255, .2);\n\t}\n\t50% {\n\t\tbox-shadow:\n\t\t\t0 20px 60px rgba(0, 0, 0, .5),\n\t\t\t0 0 60px rgba(240, 147, 251, .6),\n\t\t\t0 0 120px rgba(102, 126, 234, .4),\n\t\t\tinset 0 0 80px rgba(240, 147, 251, .2),\n\t\t\tinset 0 1px 0 rgba(255, 255, 255, .3);\n\t}\n}\n\n@keyframes shield-entrance {\n\t0% {\n\t\topacity: 0;\n\t\ttransform: scale(0) rotate(-180deg);\n\t}\n\t60% {\n\t\topacity: 1;\n\t\ttransform: scale(1.15) rotate(10deg);\n\t}\n\t100% {\n\t\topacity: 1;\n\t\ttransform: scale(1) rotate(0deg);\n\t}\n}\n\n@keyframes shield-float {\n\t0%, 100% {\n\t\ttransform: translate(-50%, -50%) translateY(0px);\n\t}\n\t50% {\n\t\ttransform: translate(-50%, -50%) translateY(-10px);\n\t}\n}\n\n@keyframes pulse {\n\t0% {\n\t\ttransform: translate(-50%, -50%) scale(.8);\n\t\topacity: 0;\n\t}\n\t50% {\n\t\ttransform: translate(-50%, -50%) scale(1);\n\t\topacity: 0.8;\n\t}\n\t100% {\n\t\ttransform: translate(-50%, -50%) scale(1.5);\n\t\topacity: 0;\n\t}\n}\n\n@keyframes sparkle {\n\t0%, 100% {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n\t50% {\n\t\ttransform: scale(1.5);\n\t\topacity: 1;\n\t}\n}\n\n@keyframes title-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(-20px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes links-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(-10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes warning-fade-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: scale(.95);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: scale(1);\n\t}\n}\n\n@keyframes button-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(40px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes fade-in {\n\tfrom {\n\t\topacity: 0;\n\t}\n\tto {\n\t\topacity: 1;\n\t}\n}\n@keyframes fade-out {\n\tfrom {\n\t\topacity: 1;\n\t}\n\tto {\n\t\topacity: 0;\n\t}\n}\n\n@keyframes scale-in {\n\tfrom {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n\tto {\n\t\ttransform: scale(1);\n\t\topacity: 1;\n\t}\n}\n@keyframes scale-out {\n\tfrom {\n\t\ttransform: scale(1);\n\t\topacity: 1;\n\t}\n\tto {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n}\n\n@keyframes scale-x {\n from {\n transform: scaleX(0);\n }\n to {\n transform: scaleX(1);\n }\n}\n\n@keyframes bottom-tool-menu-enter {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n@keyframes bottom-tool-submenu-enter {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateX(-10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateX(0);\n\t}\n}\n\n@keyframes toast-alert-enter {\n\t0% {\n\t\topacity: 0;\n\t\ttransform: translateX(100%) scale(.8);\n\t}\n\t60% {\n\t\topacity: 1;\n\t\ttransform: translateX(-10px) scale(1.05);\n\t}\n\t100% {\n\t\topacity: 1;\n\t\ttransform: translateX(0) scale(1);\n\t}\n}\n@keyframes toast-alert-leave {\n\t0% {\n\t\topacity: 1;\n\t\ttransform: translateX(0) scale(1);\n\t}\n\t100% {\n\t\topacity: 0;\n\t\ttransform: translateX(150%) scale(.7);\n\t}\n}\n\n@keyframes music-toast-enter {\n from {\n opacity: 0;\n transform: translateX(150%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n@keyframes music-toast-leave {\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(150%);\n }\n}\n\n@keyframes tooltip-enter {\n from {\n\t\ttransform: scale(.8);\n\t}\n\tto {\n\t\ttransform: scale(1);\n\t}\n}\n\n@keyframes star-spin {\n 0% {\n transform: rotate(0deg) scale(1);\n }\n 50% {\n transform: rotate(180deg) scale(1.3);\n }\n 100% {\n transform: rotate(360deg) scale(1);\n }\n}\n\n@keyframes flash-highlight {\n 0%, 100% {\n filter: brightness(1);\n }\n 50% {\n filter: brightness(.5);\n }\n}\n\n@keyframes logo-loader {\n 0%, 100% {\n transform: scale(1);\n\n /* Theme dependent */\n filter: drop-shadow(0 0 10px rgba(102, 126, 234, .4));\n }\n 50% {\n transform: scale(1.5);\n\n /* Theme dependent */\n filter: drop-shadow(0 0 20px rgba(102, 126, 234, .6));\n }\n}\n\n@keyframes refresh-rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse-DEFCON {\n 0% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.15);\n }\n 100% {\n transform: scale(1);\n }\n}\n\nbody {\n --transparency: 1;\n\n font-size: clamp(10px, 3vw, 16px);\n\n /* Theme dependent */\n color: rgba(241, 245, 255, 1);\n background: rgba(20, 20, 30, 1);\n\n &.dyslexia-font {\n font-family: \"Open-Dyslexic\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n\n *:not(.fa):not(.fas):not(.far):not(.fal):not(.fab) {\n font-family: \"Open-Dyslexic\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n }\n }\n\n &.reduce-motion * {\n animation-duration: 0.001s !important;\n transition-duration: 0.001s !important;\n }\n\n & a {\n text-decoration: none;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 0.9);\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n &:active {\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n }\n }\n\n & > #popup-blocker {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 1);\n\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n animation: fade-in .2s ease;\n }\n\n & > #loading {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 2);\n\n opacity: 1;\n\n transition: opacity .5s ease;\n\n /* Theme dependent */\n background: rgba(20, 20, 30, 1);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n\n & > .icon {\n width: 100vmin;\n }\n }\n\n & > .icon {\n aspect-ratio: 1 / 1;\n width: 12.5vmin;\n\n animation: logo-loader 2s ease-in-out infinite;\n\n transition: width .5s cubic-bezier(0.6, -0.28, 0.735, 0.045);\n }\n }\n\n & > #initial {\n display: flex;\n align-items: center;\n\t justify-content: center;\n\n width: 100%;\n height: 100%;\n\n position: relative;\n\n overflow: hidden;\n\n /* Theme dependent */\n background: rgba(20, 20, 30, 1);\n\n &.hidden {\n display: none;\n }\n\n &:before {\n content: '';\n position: absolute;\n inset: 0;\n z-index: 0;\n background:\n radial-gradient(circle at 20% 50%, rgba(102, 126, 234, .08) 0%, transparent 50%),\n radial-gradient(circle at 80% 80%, rgba(118, 75, 162, .06) 0%, transparent 50%);\n pointer-events: none;\n }\n\n &:not(.hidden) {\n animation: startup 1.2s ease-out;\n\n & > #welcome-container {\n animation: container-fade-in 1.2s ease-out;\n\n & > .shield-container {\n animation: shield-entrance 1.5s ease 2s forwards;\n }\n\n & > h1 {\n animation: title-fade-in 0.8s ease-out 0.5s both;\n }\n\n & > .about-links {\n animation: link-slide-in 0.8s ease-out 0.7s both;\n }\n\n & > #rollback-needed {\n animation: warning-fade-in 1s ease-out 0.7s both;\n }\n\n & > button {\n animation: button-slide-in 2s ease-out 1s both;\n }\n }\n }\n\n & > #dots-canvas {\n width: 100%;\n height: 100%;\n\n position: absolute;\n z-index: 0;\n left: 0;\n top: 0;\n }\n\n & > #welcome-container {\n padding: 48px;\n\n border-radius: 16px;\n\n max-width: 480px;\n\n position: relative;\n z-index: 2;\n\n text-align: center;\n\n overflow: hidden;\n\n /* Theme dependent */\n border: 1px solid rgba(143, 163, 255, .15);\n box-shadow:\n 0 12px 40px rgba(0, 0, 0, .4),\n inset 0 1px 0px rgba(255, 255, 255, .08),\n inset 0 -1px 0px rgba(0, 0, 0, .2);\n\n background: linear-gradient(135deg,\n rgba(30, 34, 45, .7),\n rgba(25, 25, 36, .5)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n & * {\n position: relative;\n z-index: 1;\n }\n\n & > .shield-container {\n width: 100px;\n height: 100px;\n\n position: relative;\n\n margin: 0 auto 24px;\n\n opacity: 0;\n\n & > .glow-ring {\n width: 240px;\n height: 240px;\n\n position: absolute;\n left: 50%;\n top: 50%;\n\n border: 2px solid;\n border-radius: 50%;\n\n transform: translate(-50%, -50%);\n\n animation: pulse 2.5s ease-in-out infinite;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n\n &:nth-child(2) {\n animation-delay: 0.4s;\n border-color: rgba(118, 75, 162, .25);\n }\n &:nth-child(3) {\n animation-delay: 0.8s;\n border-color: rgba(143, 163, 255, .2);\n }\n }\n\n & > .sparkle {\n width: 5px;\n height: 5px;\n\n position: absolute;\n\n border-radius: 50%;\n\n animation: sparkle 2s ease-in-out infinite;\n\n &:nth-child(4) {\n top: 15%;\n left: 25%;\n\n animation-delay: 0s;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .6);\n box-shadow: 0 0 8px rgba(143, 163, 255, .6);\n }\n &:nth-child(5) {\n top: 25%;\n left: 18%;\n\n animation-delay: 0.4s;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .6);\n box-shadow: 0 0 8px rgba(102, 126, 234, .6);\n }\n &:nth-child(6) {\n bottom: 20%;\n\t left: 30%;\n\n animation-delay: 0.8s;\n\n /* Theme dependent */\n background: rgba(118, 75, 162, .5);\n box-shadow: 0 0 8px rgba(118, 75, 162, .5);\n }\n &:nth-child(7) {\n bottom: 25%;\n right: 25%;\n\n animation-delay: 1.2s;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .5);\n box-shadow: 0 0 8px rgba(143, 163, 255, .5);\n }\n }\n\n & > .shield-icon {\n width: 100px;\n\n position: absolute;\n z-index: 2;\n left: 50%;\n top: 50%;\n\n transform: translate(-50%, -50%);\n\n animation: shield-float 3s ease-in-out infinite;\n\n /* Theme dependent */\n filter: drop-shadow(0 0 8px rgba(102, 126, 234, .3));\n\n & > img {\n width: 100%;\n height: 100%;\n }\n }\n }\n\n & > h1 {\n margin: 0 0 8px 0;\n\n font-size: 2.2em;\n font-weight: 700;\n line-height: 1.2;\n\n /* Theme dependent */\n color: rgba(241, 245, 255, 1);\n }\n\n & > .subtitle {\n margin: 0 0 24px 0;\n\n font-size: 0.95em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(160, 170, 200, 0.8);\n }\n\n & > .about-links {\n display: flex;\n justify-content: center;\n gap: 12px;\n flex-wrap: wrap;\n\n margin: 24px 0;\n\n & > .about-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n\n padding: 8px 14px;\n\n border: 1px solid;\n border-radius: 8px;\n\n font-size: 0.85em;\n font-weight: 500;\n text-decoration: none;\n\n transition: background .2s ease,\n transform .2s ease,\n color .2s ease,\n border-color .2s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, 0.9);\n background: rgba(102, 126, 234, .1);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n border-color: rgba(102, 126, 234, .4);\n background: rgba(102, 126, 234, .2);\n }\n }\n }\n\n & > #rollback-needed {\n margin: 20px 0;\n padding: 16px;\n\n border: 1px solid;\n border-radius: 12px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(247, 76, 60, .3);\n box-shadow:\n 0 4px 12px rgba(0, 0, 0, .2),\n\t\t inset 0 1px 0 rgba(255, 255, 255, .05);\n background: rgba(247, 76, 60, .08);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n display: none;\n }\n\n & p {\n margin: 6px 0;\n\n font-weight: 400;\n font-size: 0.9em;\n\n /* Theme dependent */\n color: rgba(247, 76, 60, 0.95);\n }\n & a {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n &:hover {\n text-decoration: underline;\n }\n }\n }\n\n & > button {\n cursor: pointer;\n\n width: 100%;\n\n padding: 12px 24px;\n\n border: 2px solid transparent;\n border-radius: 10px;\n\n position: relative;\n\n font-size: 1em;\n font-weight: 700;\n color: rgba(143, 163, 255, 1);\n letter-spacing: 0.5px;\n\n overflow: hidden;\n\n opacity: 1;\n\n transition: all .25s ease;\n\n /* Theme dependent */\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 0.8), rgba(118, 75, 162, 0.8)) border-box;\n box-shadow:\n 0 0 10px rgba(102, 126, 234, .6),\n 0 0 20px rgba(118, 75, 162, .3),\n inset 0 0 10px rgba(102, 126, 234, .1);\n\n &.hidden {\n display: none;\n }\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(160, 180, 255, 1);\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 75, 162, 1)) border-box;\n box-shadow:\n 0 0 15px rgba(102, 126, 234, .8),\n 0 0 30px rgba(118, 75, 162, .5),\n inset 0 0 15px rgba(102, 126, 234, .2);\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 0.7), rgba(118, 75, 162, 0.7)) border-box;\n box-shadow:\n 0 0 8px rgba(102, 126, 234, .5),\n 0 0 16px rgba(118, 75, 162, .3),\n inset 0 0 8px rgba(102, 126, 234, .1);\n }\n\n &::before {\n content: \"\";\n\n width: 100%;\n height: 100%;\n\n position: absolute;\n left: -100%;\n top: 0;\n\n transition: left .4s ease;\n\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1),\n transparent\n );\n }\n\n & > i {\n margin-right: 6px;\n font-size: 14px;\n transition: transform 0.3s ease;\n }\n\n &:hover > i {\n transform: translateX(2px);\n }\n }\n }\n }\n\n & > #app {\n width: 100%;\n height: 100%;\n\n line-height: 1.5;\n color: var(--body-color);\n\n overflow: hidden;\n\n background: var(--body-background);\n\n &.hidden {\n display: none;\n }\n\n & > #container {\n display: flex;\n width: 100%;\n height: 100%;\n\n margin: 0;\n\n overflow: hidden;\n\n & > #queue {\n width: 15vw;\n height: 100%;\n\n position: relative;\n\n border-right: 1px solid;\n\n /* Theme dependent */\n border-right-color: rgba(58, 61, 74, 1);\n\n & > #queue-top {\n -webkit-user-select: none;\n user-select: none;\n\n container-type: inline-size;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 69px;\n\n position: relative;\n z-index: 2;\n\n overflow: auto hidden;\n\n border-bottom: 2px solid;\n border-right: 1px solid;\n border-bottom-right-radius: 8px;\n\n padding: 10px;\n\n /* Theme dependent */\n border-color: rgba(54, 62, 81, 1);\n\n background: rgba(41, 47, 60, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .queue-button-cluster {\n display: flex;\n align-items: center;\n gap: 20px;\n\n padding: 10px 14px;\n\n border: 1px solid;\n border-radius: 14px;\n\n font-size: 1.2em;\n\n /* Theme dependent */\n border-color: rgba(143, 143, 255, .2);\n background: rgba(143, 143, 255, .1);\n\n & > .fa {\n position: relative;\n }\n\n & > span {\n cursor: pointer;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > #DEFCON {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n padding: 4px 14px;\n\n border: 1px solid;\n border-radius: 14px;\n\n /* Theme dependent */\n border-color: rgba(143, 143, 255, .2);\n background: rgba(143, 143, 255, .1);\n\n & > .dot {\n flex: 0 0 auto;\n\n width: 10px;\n height: 10px;\n\n border-radius: 50%;\n\n animation: pulse-DEFCON 2s ease-in-out infinite;\n\n /* Theme dependent */\n background: rgba(100, 100, 100, 1);\n box-shadow: 0 0 0 4px rgba(100, 100, 100, .15);\n\n &.DEFCON-1 {\n background: rgba(255, 75, 75, 1);\n box-shadow: 0 0 0 4px rgba(255, 75, 75, .3);\n }\n &.DEFCON-2 {\n background: rgba(255, 165, 0, 1);\n box-shadow: 0 0 0 4px rgba(255, 165, 0, .3);\n }\n &.DEFCON-3 {\n background: rgba(255, 255, 0, 1);\n box-shadow: 0 0 0 4px rgba(255, 255, 0, .3);\n }\n &.DEFCON-4 {\n background: rgba(75, 255, 75, 1);\n box-shadow: 0 0 0 4px rgba(75, 255, 75, .3);\n }\n &.DEFCON-5 {\n background: rgba(75, 255, 255, 1);\n box-shadow: 0 0 0 4px rgba(75, 255, 255, .3);\n }\n }\n\n & > span {\n overflow: auto hidden;\n\n white-space: nowrap;\n font-size: 13px;\n font-weight: 500;\n }\n }\n }\n\n & > #queue-tabs {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-around;\n gap: 8px;\n\n position: relative;\n z-index: 2;\n\n border-radius: 0 0 12px 12px;\n padding: 10px 12px;\n\n overflow: hidden;\n\n /* Theme dependent */\n background: transparent;\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .queue-tab {\n cursor: pointer;\n\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n\n position: relative;\n\n border-radius: 50%;\n padding: 8px 14px;\n\n font-size: 1.4em;\n\n transition: transform .18s ease,\n color .18s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .85);\n\n &::after {\n content: \"\";\n\n height: 3px;\n\n position: absolute;\n left: 10px;\n right: 10px;\n bottom: 0;\n\n border-radius: 2px;\n\n transform: scaleX(0);\n\n transition: transform .22s cubic-bezier(.2, .9, .27, 1);\n\n /* Theme dependent */\n opacity: .95;\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, 1),\n rgba(118, 75, 162, 1)\n );\n }\n\n &:hover, &:focus-visible {\n transform: translateY(-2px);\n }\n\n &:not(.selected).mentions-me::after {\n animation: scale-x 1s ease-in-out infinite;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(244, 196, 32, 1),\n rgba(255, 107, 107, 1)\n );\n }\n\n &.selected {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n\n &::after {\n transform: scaleX(1);\n }\n }\n\n &.hidden {\n display: none;\n }\n\n & > .fas {\n position: relative;\n }\n }\n }\n\n & > .queue-list {\n height: calc(100% - 60px);\n\n position: relative;\n top: -60px;\n\n padding-top: 60px;\n padding-bottom: 10px;\n }\n\n & > .width-adjust {\n touch-action: none;\n cursor: col-resize;\n\n width: 10px;\n height: 100%;\n\n position: absolute;\n right: -5px;\n top: 0;\n z-index: 3;\n }\n\n & > #clear-queue {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 8px;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n left: 8px;\n bottom: 8px;\n z-index: 2;\n\n border: 1px solid;\n border-radius: 50%;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease,\n color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > div {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n }\n }\n }\n\n & > #right-container {\n display: flex;\n flex-wrap: wrap;\n width: calc(100% - 15vw);\n\n & > #right-content {\n display: flex;\n width: 100%;\n height: 100%;\n\n & > #main-container {\n display: flex;\n flex-direction: column;\n gap: 0px;\n width: calc(100% - 15vw);\n height: 100%;\n\n padding-top: 69px;\n\n position: relative;\n\n & > #edit-details {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 4px;\n\n width: calc(100% - 20vmin);\n height: 69px;\n\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n z-index: 2;\n\n margin-inline: auto;\n\n border: 1px solid;\n border-top: none;\n border-radius: 8px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n\n padding: 8px;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease;\n\n /* Theme dependent */\n background: rgba(30, 34, 45, 1);\n border-color: rgba(143, 163, 255, .2);\n box-shadow:\n 0 4px 12px rgba(0, 0, 0, .2),\n inset 0 1px 0px rgba(255, 255, 255, .05);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > .central {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n flex: 1;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: .75rem;\n\n width: 100%;\n\n font-size: 1em;\n\n & > .page-title {\n display: flex;\n align-items: center;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n /* Theme dependent */\n color: rgba(119, 166, 215, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > i {\n font-size: .9em;\n\n line-height: inherit;\n }\n\n & > a {\n color: inherit;\n\n white-space: nowrap;\n text-overflow: ellipsis;\n\n overflow: hidden;\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .75rem;\n\n & > .user-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n\n &.blocked {\n font-style: italic;\n text-decoration: line-through;\n\n opacity: .7;\n }\n &.empty-talk {\n /* Theme dependent */\n color: rgba(221, 105, 116, 1);\n }\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > a {\n color: inherit;\n }\n }\n\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px 8px;\n\n border: 1px solid;\n border-radius: calc(1rem + 4px);\n\n font-size: .8em;\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--diff-color);\n border-color: color-mix(in srgb, var(--diff-color) 20%, transparent);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n\n & > .subheader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: .75rem;\n\n width: 100%;\n\n font-size: .9em;\n\n & > .item-comment {\n display: flex;\n align-items: center;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n\n &.none {\n opacity: .6;\n }\n\n & > i {\n flex-shrink: 0;\n\n opacity: .6;\n }\n\n & > .text {\n white-space: nowrap;\n\n overflow: auto hidden;\n\n &.none {\n opacity: .6;\n }\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 4px;\n\n & > .minor-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 5px .5rem;\n\n border-radius: .375rem;\n\n font-size: .85rem;\n\n /* Theme dependent */\n color: rgba(175, 175, 175, 1);\n background: rgba(175, 175, 175, .15);\n }\n\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px 8px;\n\n border: 1px solid;\n border-radius: .375rem;\n\n font-size: .8em;\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--diff-color);\n border-color: color-mix(in srgb, var(--diff-color) 20%, transparent);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n }\n\n & > .nav-item-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 41px;\n height: 41px;\n\n position: absolute;\n top: 14px;\n z-index: 2;\n\n border-radius: 50%;\n border: 1px solid;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.disabled {\n pointer-events: none;\n\n opacity: 0;\n }\n\n &#previous-item-button {\n left: calc(5vmin - calc(41px / 2));\n }\n &#next-item-button {\n right: calc(5vmin - calc(41px / 2));\n }\n\n & > i {\n font-size: 16px;\n }\n }\n\n & > #ai-analysis-container {\n flex-shrink: 0;\n\n border: 1px solid;\n\n border-radius: 12px;\n margin: 12px;\n margin-bottom: 0;\n padding: 10px;\n\n overflow: none;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .2);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3),\n inset 0 1px 0px rgba(255, 255, 255, .08),\n inset 0 -1px 0px rgba(0, 0, 0, .3);\n\n background: linear-gradient(135deg,\n rgba(30, 34, 45, .7),\n rgba(25, 25, 36, .5)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.hidden {\n display: none;\n }\n\n & > .header {\n display: flex;\n align-items: center;\n gap: 6px;\n\n margin-bottom: 8px;\n\n & > .fa {\n font-size: 1.1em;\n }\n\n & > .title {\n font-size: .95em;\n letter-spacing: .3px;\n }\n\n & > .assessment {\n border-radius: 6px;\n padding: 3px 8px;\n\n font-size: .8em;\n font-weight: 700;\n\n &.low {\n /* Theme dependent */\n background: rgba(76, 175, 80, .25);\n }\n &.review {\n /* Theme dependent */\n background: rgba(255, 193, 7, .25);\n }\n &.suspicious {\n /* Theme dependent */\n background: rgba(244, 67, 54, .25);\n }\n &.bad {\n /* Theme dependent */\n background: rgba(211, 47, 47, .25);\n }\n &.error {\n /* Theme dependent */\n background: rgba(158, 158, 158, .25);\n }\n }\n\n & > .confidence {\n border-radius: 6px;\n padding: 3px 8px;\n\n font-size: .75em;\n font-weight: 600;\n }\n }\n\n & > .explanation {\n border-left: 3px solid;\n\n border-radius: 4px;\n margin-bottom: 6px;\n padding: 6px 8px;\n\n font-size: .8em;\n line-height: 1.3;\n\n /* Theme dependent */\n border-left-color: rgba(143, 163, 255, .4);\n }\n\n & > .issues {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n\n & > .issue {\n border-radius: 6px;\n padding: 4px 10px;\n\n font-size: .75em;\n font-weight: 600;\n\n &.low {\n /* Theme dependent */\n background: rgba(76, 175, 80, .25);\n }\n &.medium {\n /* Theme dependent */\n background: rgba(255, 193, 7, .25);\n }\n &.high {\n /* Theme dependent */\n background: rgba(244, 67, 54, .25);\n }\n &.critical {\n /* Theme dependent */\n background: rgba(211, 47, 47, .25);\n }\n }\n }\n }\n\n & > .notice {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: 8px;\n\n border-left: 4px solid;\n border-radius: 4px;\n\n margin: 10px;\n padding: 8px 12px;\n\n font-size: .9em;\n\n &.edit-war {\n /* Theme dependent */\n color: rgba(120, 27, 20, 1);\n border-left-color: rgba(247, 50, 20, 1);\n background: rgba(255, 205, 199, 1);\n }\n\n &.outdated {\n /* Theme dependent */\n color: rgba(102, 77, 3, 1);\n border-left-color: rgba(255, 193, 7, 1);\n background: rgba(255, 243, 205, 1);\n\n &.pending {\n /* Theme dependent */\n color: rgba(12, 84, 96, 1);\n border-left-color: rgba(23, 162, 184, 1);\n background: rgba(209, 236, 241, 1);\n }\n }\n\n & > .text {\n flex: 1;\n }\n\n & > .button {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n gap: 8px;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 6px 14px;\n\n font-size: .85em;\n font-weight: 600;\n white-space: nowrap;\n text-decoration: none;\n\n transition: color .2s ease,\n border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n color: rgba(102, 77, 3, 1);\n border-color: rgba(255, 193, 7, .35);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .1);\n\n background: rgba(255, 235, 159, .45);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > i {\n font-size: 14px;\n\n transition: transform .3s ease;\n }\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n color: rgba(80, 60, 0, 1);\n border-color: rgba(255, 193, 7, .6);\n box-shadow: 0 4px 16px rgba(255, 193, 7, .25);\n\n background: rgba(255, 235, 159, .65);\n\n & > i {\n transform: translateX(3px);\n\n &.restore {\n transform: rotateZ(180deg);\n }\n }\n }\n }\n }\n\n & > .diff-scroll-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n left: 8px;\n z-index: 2;\n\n border-radius: 50%;\n border: 1px solid;\n\n opacity: 1;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > i {\n font-size: 16px;\n }\n\n &#diff-scroll-up {\n top: 77px;\n }\n &#diff-scroll-down {\n bottom: 8px;\n }\n }\n\n & > #diff-container {\n flex: 1;\n\n padding: 12px;\n\n scroll-behavior: smooth;\n overflow: hidden auto;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(20, 22, 28, .3),\n transparent\n );\n\n & > .loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n height: 100%;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n\n & > .loading-spinner {\n margin-bottom: 24px;\n\n font-size: 56px;\n\n animation: logo-loader 2s ease-in-out infinite;\n }\n\n & > .loading-text {\n margin-bottom: 12px;\n\n font-size: 1.1em;\n text-align: center;\n font-weight: 500;\n letter-spacing: .3px;\n\n /* Theme dependent */\n color: rgba(160, 170, 200, 1);\n }\n }\n\n & > table {\n width: 100%;\n\n border: 1px solid;\n border-collapse: separate;\n border-spacing: 0;\n\n border-radius: 14px;\n margin-bottom: 24px;\n\n overflow: hidden;\n\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: .8em;\n line-height: 1.6;\n vertical-align: baseline;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .15);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .4),\n inset 0 1px 0px rgba(255, 255, 255, .1),\n inset 0 -1px 0px rgba(0, 0, 0, .2),\n 0 0 0 1px rgba(143, 163, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(35, 40, 52, .5),\n rgba(30, 35, 48, .4)\n );\n -webkit-backdrop-filter: blur(16px) saturate(110%);\n backdrop-filter: blur(16px) saturate(110%);\n\n & > tbody {\n .mw-diff-movedpara-left, .mw-diff-movedpara-right {\n text-decoration: none;\n }\n\n & > tr {\n border: none;\n\n overflow-wrap: anywhere;\n\n transition: background .25s ease;\n\n &:hover {\n & > td {\n /* Theme dependent */\n background: rgba(143, 163, 255, .12);\n }\n }\n\n &:not(.diff-addedline, .diff-deletedline) {\n & > td {\n /* Theme dependent */\n background: rgba(255, 255, 255, .02);\n }\n }\n\n .flash-highlight {\n animation: flash-highlight 1s ease-out infinite;\n }\n\n & > td {\n border: none;\n\n overflow-wrap: anywhere;\n\n transition: background .25s ease,\n color .25s ease;\n\n &:not(.diff-marker) {\n width: 50%;\n\n padding: 10px 14px;\n\n transition: background .25s ease;\n\n /* Theme dependent */\n color: rgba(200, 210, 230, 1);\n }\n\n &.diff-lineno {\n -webkit-user-select: none;\n user-select: none;\n\n border-bottom: 1px solid;\n\n padding: 10px 12px;\n\n font-size: .85em;\n font-weight: 600;\n text-align: center;\n letter-spacing: .6px;\n\n /* Theme dependent */\n border-bottom-color: rgba(143, 163, 255, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .12),\n rgba(158, 115, 212, .08)\n );\n }\n\n &.diff-marker {\n -webkit-user-select: none;\n user-select: none;\n\n width: 40px;\n\n border-right: 1px solid;\n\n padding: 10px 8px;\n\n font-weight: 700;\n text-align: center;\n\n /* Theme dependent */\n border-right-color: rgba(143, 163, 255, .15);\n\n color: rgba(160, 170, 200, .9);\n\n background: linear-gradient(90deg,\n rgba(40, 45, 60, .3),\n rgba(35, 40, 52, .2)\n );\n\n &::before {\n content: attr(data-marker);\n }\n }\n\n &.diff-empty {\n /* Theme dependent */\n background: rgba(20, 25, 35, .3);\n }\n\n &:is(.diff-addedline, .diff-deletedline) {\n position: relative;\n\n border-left: 4px solid;\n\n transition: background .25s ease,\n border-left-color .25s ease,\n box-shadow .25s ease;\n\n &.diff-addedline {\n /* Theme dependent */\n border-left-color: rgba(76, 175, 80, .9);\n\n background: rgba(76, 175, 80, .12);\n\n transition: background .25s ease;\n\n &:hover {\n /* Theme dependent */\n border-left-color: rgba(129, 199, 132, 1);\n background: rgba(129, 199, 132, .18);\n box-shadow: inset 0 0 12px rgba(76, 175, 80, .15);\n }\n }\n &.diff-deletedline {\n /* Theme dependent */\n border-left-color: rgba(244, 67, 54, .9);\n\n background: rgba(244, 67, 54, .12);\n\n transition: background .25s ease;\n\n &:hover {\n /* Theme dependent */\n border-left-color: rgba(255, 112, 97, 1);\n background: rgba(255, 112, 97, .18);\n box-shadow: inset 0 0 12px rgba(244, 67, 54, .15);\n }\n }\n }\n\n & > div {\n & > :is(ins, del) {\n border-radius: 6px;\n padding: 2px 6px;\n\n font-weight: 600;\n text-decoration: none;\n\n transition: background .25s ease,\n transform .15s ease;\n }\n\n & > ins {\n /* Theme dependent */\n background: rgba(130, 169, 26, .55);\n\n &:hover {\n /* Theme dependent */\n background: rgba(139, 195, 74, .6);\n\n transform: scale(1.08);\n }\n }\n & > del {\n /* Theme dependent */\n background: rgba(244, 67, 54, .55);\n\n &:hover {\n /* Theme dependent */\n background: rgba(255, 112, 97, .6);\n\n transform: scale(1.08);\n }\n }\n }\n\n a {\n text-decoration: none;\n\n /* Theme dependent */\n color: rgba(107, 163, 216, 1);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n text-decoration: underline;\n }\n }\n }\n }\n }\n }\n }\n\n & > #pending-changes-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n position: fixed;\n z-index: 2;\n\n transform: translateX(-50%);\n\n &.hidden {\n display: none;\n }\n\n & > :is(.accept, .reject) {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n gap: 8px;\n\n border: 1px solid;\n\n border-radius: 10px 10px 0 0;\n padding: 8px 12px;\n\n font-size: .95em;\n font-weight: 600;\n line-height: 1;\n text-decoration: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease,\n border-color .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.accept {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .14);\n box-shadow: 0 10px 26px rgba(46, 125, 50, .12),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .25),\n rgba(56, 142, 60, .15)\n );\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n box-shadow: 0 14px 30px rgba(46, 125, 50, .2),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n }\n &:active {\n /* Theme dependent */\n box-shadow: 0 6px 20px rgba(46, 125, 50, .1),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n }\n }\n &.reject {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, .14);\n box-shadow: 0 10px 26px rgba(155, 40, 34, .12),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n background: linear-gradient(135deg,\n rgba(244, 67, 54, .25),\n rgba(211, 47, 47, .15)\n );\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n box-shadow: 0 14px 30px rgba(155, 40, 34, .2),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n }\n &:active {\n /* Theme dependent */\n box-shadow: 0 6px 20px rgba(155, 40, 34, .1),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n }\n }\n }\n }\n\n & > #progress-bar-container {\n pointer-events: none;\n\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-direction: column;\n\n position: absolute;\n top: 0px;\n bottom: 56px;\n right: 0px;\n\n padding: 0;\n\n overflow: hidden;\n\n & > .progress-bar {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 180px;\n height: 32px;\n\n position: relative;\n\n border: 1px solid;\n\n border-radius: 16px;\n margin-bottom: 10px;\n margin-right: 10px;\n\n overflow: hidden;\n\n font-size: .85em;\n font-weight: 400;\n\n opacity: 1;\n\n transition: width .3s ease,\n opacity .3s ease,\n border-color .3s ease,\n box-shadow .4s cubic-bezier(.4, 0, .2, 1),\n background .4s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .15),\n 0 2px 4px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .1),\n rgba(158, 115, 212, .1)\n );\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.error {\n /* Theme dependent */\n border-color: rgba(239, 68, 68, .8);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .15),\n 0 2px 4px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(255, 68, 68, .1),\n rgba(220, 38, 38, .1)\n );\n\n & > .progress-bar-overlay {\n /* Theme dependent */\n box-shadow: inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(255, 68, 68, .6),\n rgba(220, 38, 38, .6)\n );\n }\n }\n\n & > .progress-bar-overlay {\n width: 0;\n height: 100%;\n\n position: absolute;\n left: 0;\n top: 0;\n\n border-radius: 16px;\n\n transition: width .4s cubic-bezier(.4, 0, .2, 1),\n box-shadow .4s cubic-bezier(.4, 0, .2, 1),\n background .4s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n box-shadow: inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .6),\n rgba(158, 115, 212, .6)\n );\n }\n\n & > .progress-bar-text {\n max-width: 100%;\n\n position: relative;\n\n padding: 0 12px;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n white-space: nowrap;\n\n /* Theme dependent */\n text-shadow: 0 1px 2px rgba(0, 0, 0, .2);\n\n color: rgba(255, 255, 255, 1);\n }\n }\n }\n\n & > #bottom-tools {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n\n max-width: calc(100% - 20vmin);\n width: fit-content;\n\n position: absolute;\n left: 0;\n right: 0;\n bottom: 8px;\n z-index: 2;\n\n margin-inline: auto;\n\n border: 1px solid;\n border-radius: 16px;\n\n padding: 8px;\n\n overflow: auto hidden;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > .bottom-tool-item {\n position: relative;\n\n white-space: nowrap;\n\n transition: opacity .2s ease;\n\n &.hidden {\n pointer-events: none;\n\n opacity: .2;\n }\n\n & > .bottom-tool-trigger {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-size: .9em;\n font-weight: 400;\n\n background: transparent;\n\n transition: color .2s ease,\n background .2s ease;\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(255, 255, 255, .08);\n }\n\n &.active {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n\n & > .bottom-tool-chevron {\n transform: rotate(180deg);\n }\n }\n\n & > .bottom-tool-chevron {\n font-size: .75em;\n\n transition: transform .2s ease;\n }\n }\n }\n\n & > .bottom-tool-action {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n\n transition: color .2s ease,\n background .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .9);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(255, 255, 255, .08);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: .2;\n }\n }\n }\n\n & > #copy-link {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 8px;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n right: 8px;\n bottom: 8px;\n z-index: 2;\n\n border: 1px solid;\n border-radius: 50%;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease,\n color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > div {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n }\n }\n }\n\n & > #right-details {\n width: 15vw;\n\n position: relative;\n\n border-left: 1px solid;\n\n /* Theme dependent */\n border-left-color: rgba(54, 62, 81, 1);\n\n & > #right-top {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n align-content: center;\n justify-content: center;\n\n width: 100%;\n height: 69px;\n\n border-bottom: 2px solid;\n border-left: 1px solid;\n border-bottom-left-radius: 8px;\n\n padding: 8px 15px;\n\n /* Theme dependent */\n border-color: rgba(54, 62, 81, 1);\n\n background: rgba(41, 47, 60, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .tabs {\n display: flex;\n justify-content: center;\n width: 100%;\n\n & > .tab {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border: 2px solid;\n\n padding: 10px;\n\n opacity: .75;\n\n transition: background .35s cubic-bezier(.4, 0, .2, 1),\n opacity .35s cubic-bezier(.4, 0, .2, 1),\n box-shadow .35s cubic-bezier(.4, 0, .2, 1),\n border-color .35s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: inset 0 2px 6px rgba(0, 0, 0, .4);\n\n background: rgba(60, 63, 75, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n &:hover, &:focus-visible {\n opacity: 1;\n }\n\n &.selected {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5),\n inset 0 1px 2px rgba(0, 0, 0, .2);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25),\n rgba(118, 75, 162, .25)\n );\n }\n\n &.hidden {\n display: none;\n }\n\n &:first-child {\n border-radius: 10px 0 0 10px;\n }\n &:last-child {\n border-radius: 0 10px 10px 0;\n }\n }\n }\n\n & > .icons {\n display: flex;\n justify-content: center;\n width: 100%;\n\n font-size: 1.4em;\n\n & > .hidden {\n display: none;\n }\n }\n }\n\n & > .section {\n display: flex;\n flex-direction: column;\n height: calc(50% - calc(69px / 2) - 15px);\n\n margin: 10px 10px 0 10px;\n\n border: 1px solid;\n border-radius: 16px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n background: rgba(30, 35, 45, .8);\n\n &.hidden {\n display: none;\n }\n\n & > .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n\n padding: 14px 14px 12px;\n\n border-bottom: 1px solid;\n\n /* Theme dependent */\n border-bottom-color: rgba(143, 163, 255, .2);\n background: rgba(30, 35, 45, .8);\n\n & > .title {\n font-weight: 600;\n font-size: .85em;\n text-transform: uppercase;\n letter-spacing: .07em;\n white-space: nowrap;\n\n & > i {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n cursor: pointer;\n\n margin-right: 4px;\n\n font-size: .9em;\n\n transition: transform .5s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n transform: rotate(180deg);\n }\n }\n }\n\n & > .pills {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-shrink: 0;\n\n & > .pill {\n border: 1px solid;\n border-radius: 10px;\n padding: 4px 8px;\n\n font-size: .75em;\n font-weight: 500;\n\n white-space: nowrap;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(224, 228, 240, 1);\n background: rgba(140, 132, 255, .1);\n\n &.uw-1 {\n /* Theme dependent */\n border-color: rgba(107, 163, 216, .8);\n background: rgba(107, 163, 216, .1);\n color: rgba(107, 163, 216, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .8);\n background: rgba(143, 163, 255, .15);\n color: rgba(143, 163, 255, 1);\n }\n }\n &.uw-2 {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .8);\n background: rgba(255, 193, 7, .1);\n color: rgba(255, 193, 7, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n color: rgba(255, 193, 7, 1);\n }\n }\n &.uw-3 {\n /* Theme dependent */\n border-color: rgba(255, 87, 34, .8);\n background: rgba(255, 87, 34, .1);\n color: rgba(255, 87, 34, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 87, 34, 1);\n background: rgba(255, 87, 34, .15);\n color: rgba(255, 87, 34, 1);\n }\n }\n &.uw-4 {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, .8);\n background: rgba(244, 67, 54, .1);\n color: rgba(244, 67, 54, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, 1);\n background: rgba(244, 67, 54, .15);\n color: rgba(244, 67, 54, 1);\n }\n }\n &.uw-4im {\n /* Theme dependent */\n border-color: rgba(178, 34, 34, .8);\n background: rgba(178, 34, 34, .1);\n color: rgba(178, 34, 34, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(178, 34, 34, 1);\n background: rgba(178, 34, 34, .15);\n color: rgba(178, 34, 34, 1);\n }\n }\n\n &.ub {\n /* Theme dependent */\n border-color: rgba(255, 99, 132, .8);\n background: rgba(255, 99, 132, .1);\n color: rgba(255, 99, 132, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 99, 132, 1);\n background: rgba(255, 99, 132, .15);\n color: rgba(255, 99, 132, 1);\n }\n }\n }\n }\n }\n\n & > .queue-list {\n flex: 1;\n height: 100%;\n\n padding: 4px;\n\n /* Theme dependent */\n background: rgba(20, 22, 28, .3);\n }\n\n & > .footer {\n cursor: pointer;\n\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n\n padding: 10px 14px;\n\n border-top: 1px solid;\n\n font-size: .85em;\n\n transition: background .2s ease;\n\n /* Theme dependent */\n background: rgba(30, 35, 45, .8);\n border-top-color: rgba(143, 163, 255, .2);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n background: rgba(255, 255, 255, .08);\n\n & > i {\n transform: translateX(3px);\n }\n }\n\n & > i {\n transition: transform .2s ease;\n }\n }\n }\n\n &:has(#user-contributions.hidden) {\n & > #page-history {\n height: calc(100% - 89px);\n }\n }\n &:has(#page-history.hidden) {\n & > #user-contributions {\n height: calc(100% - 89px);\n }\n }\n\n & > .width-adjust {\n touch-action: none;\n cursor: col-resize;\n\n width: 10px;\n height: 100%;\n\n position: absolute;\n left: -5px;\n top: 0;\n z-index: 3;\n }\n\n & > .height-adjust {\n touch-action: none;\n cursor: row-resize;\n\n height: 10px;\n width: 100%;\n\n position: absolute;\n left: 0;\n top: calc(50% - 5px);\n z-index: 3;\n }\n }\n }\n }\n }\n\n & > .bottom-tool-menu {\n display: none;\n max-width: calc(100vw - 40px);\n min-width: 200px;\n\n position: absolute;\n left: 0;\n bottom: calc(100% + 8px);\n z-index: 3;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 6px;\n\n overflow-y: visible;\n\n animation: bottom-tool-menu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5);\n\n background: rgba(35, 38, 48, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.show {\n display: block;\n }\n\n & > .menu-option {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border-radius: 8px;\n padding: 10px 12px;\n\n font-size: .9em;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.hidden {\n display: none;\n }\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n\n & > i:first-child {\n opacity: 1;\n }\n\n & > :is(.menu-option-icon, .menu-option-chevron) {\n opacity: 1;\n }\n }\n\n & > i:first-child {\n width: 18px;\n\n font-size: 1.1em;\n text-align: center;\n\n opacity: .8;\n\n transition: opacity .2s ease;\n }\n\n & > span {\n flex: 1;\n }\n\n & > :is(.menu-option-icon, .menu-option-chevron) {\n margin-left: auto;\n\n font-size: .85em;\n\n opacity: .5;\n\n transition: opacity .2s ease;\n }\n\n & > .submenu {\n cursor: default;\n\n display: none;\n min-width: 240px;\n\n position: absolute;\n left: calc(100% + 4px);\n top: -6px;\n z-index: 4;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 6px;\n\n color: var(--body-color);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5);\n\n background: rgba(35, 38, 48, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.show {\n display: block;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n }\n\n & > .bottom-subcontent-title {\n border-bottom: 1px solid;\n\n margin-bottom: 12px;\n padding-bottom: 8px;\n\n font-size: .95em;\n font-weight: 600;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .1);\n }\n\n & > .bottom-subcontent-input-title {\n margin: 10px 0 2px 0;\n\n font-size: .9em;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n\n & > :is(select, input[type=\"text\"]) {\n width: 100%;\n\n font-size: .9em;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n }\n\n & > .bottom-subcontent-button {\n --background: 123, 143, 245;\n\n display: block;\n width: 100%;\n\n margin: 10px 0 2px 0;\n\n font-size: .9em;\n font-weight: 600;\n }\n }\n }\n\n &:is(#revert-menu, #warn-menu) {\n max-height: calc(100vh - 120px);\n\n overflow: hidden auto;\n\n & > .warning-menu {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 280px;\n\n position: relative;\n\n border-radius: 12px;\n padding: 8px;\n\n & > .warning-menu-no-items {\n text-align: center;\n padding: 20px;\n\n font-size: .9em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .7);\n }\n\n & > .favorites-section {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 4px;\n\n & > .favorites-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n\n font-size: .85em;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n\n /* Theme dependent */\n color: rgba(255, 193, 7, .9);\n\n & > .icon {\n font-size: 1.1em;\n }\n }\n\n & > .favorites-container {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n }\n\n & > .favorites-separator {\n height: 1px;\n margin: 8px 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1) 20%,\n rgba(255, 255, 255, .1) 80%,\n transparent\n );\n }\n\n & > .favorites-section:not(:has(.warning-menu-item)) {\n display: none;\n\n & ~ .favorites-separator {\n display: none;\n }\n }\n\n & > .menu-option {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n font-size: .95em;\n\n transition: border-color .2s ease,\n background .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n color: rgba(224, 228, 240, 1);\n background: rgba(40, 43, 52, .4);\n\n &:hover, &.focus-visible {\n transform: translateX(3px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n color: rgba(143, 163, 255, 1);\n background: rgba(102, 126, 234, .12);\n\n & > .icon {\n opacity: 1;\n transform: scale(1.1);\n }\n\n & > .submenu-arrow {\n opacity: 1;\n transform: translateX(2px);\n }\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n background: rgba(102, 126, 234, .15);\n }\n\n & > .icon {\n flex-shrink: 0;\n width: 20px;\n\n text-align: center;\n font-size: 1.1em;\n\n opacity: .85;\n\n transition: opacity .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n\n & > span:not(.icon):not(.submenu-arrow) {\n flex: 1;\n\n font-weight: 500;\n }\n\n & > .submenu-arrow {\n flex-shrink: 0;\n\n font-size: .8em;\n\n opacity: .5;\n\n transition: opacity .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .8);\n }\n }\n }\n }\n }\n\n & > .warning-submenu {\n display: none;\n max-width: calc(100vw - 60px);\n min-width: 420px;\n max-height: calc(100vh - 120px);\n\n position: absolute;\n z-index: 5;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 8px;\n\n overflow-y: auto;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 12px 48px rgba(0, 0, 0, .6),\n 0 0 0 1px rgba(255, 255, 255, .05);\n\n background: rgba(30, 33, 42, .98);\n -webkit-backdrop-filter: blur(25px);\n backdrop-filter: blur(25px);\n\n &.show {\n display: flex;\n flex-direction: column;\n gap: 3px;\n }\n }\n\n .warning-menu-item {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n font-size: .95em;\n\n transition: border-color .2s ease,\n background .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n background: rgba(40, 43, 52, .4);\n\n &:hover, &.focus-visible {\n transform: translateX(3px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n background: rgba(102, 126, 234, .12);\n }\n\n &.favorite-item {\n cursor: grab;\n\n &:active {\n cursor: grabbing;\n }\n\n &.dragging {\n opacity: 0.5;\n transform: scale(0.95);\n }\n }\n\n & > .favorite-star {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border-radius: 4px;\n\n font-size: 1.2em;\n line-height: 1;\n\n transition: transform .2s cubic-bezier(.4, 0, .2, 1),\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .4);\n\n &:hover {\n transform: scale(1.2);\n\n /* Theme dependent */\n color: rgba(255, 193, 7, .8);\n }\n\n &.favorited {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n\n &:hover {\n /* Theme dependent */\n color: rgba(255, 152, 0, 1);\n }\n }\n\n &.spin {\n animation: star-spin 0.5s cubic-bezier(.4, 0, .2, 1);\n }\n }\n\n & > .icon {\n flex-shrink: 0;\n width: 20px;\n\n text-align: center;\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n\n & > .warning-menu-title {\n flex: 1;\n\n font-size: .92em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 228, 240, 1);\n }\n\n & > .fa-circle-question {\n flex-shrink: 0;\n\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .6);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .warning-menu-buttons {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n\n margin-left: 8px;\n }\n\n & > .warning-menu-buttons > .warning-menu-button {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 7px 14px;\n\n font-size: .82em;\n font-weight: 500;\n text-transform: capitalize;\n\n transition: border-color .2s ease,\n background .2s ease,\n color .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, .95);\n background: rgba(102, 126, 234, .1);\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n color: rgba(143, 163, 255, 1);\n background: rgba(102, 126, 234, .22);\n }\n\n &:active {\n transform: translateY(0);\n }\n\n &.warning-menu-no-warn-button {\n /* Theme dependent */\n border-color: rgba(255, 152, 0, .2);\n color: rgba(255, 193, 7, .95);\n background: rgba(255, 152, 0, .1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 152, 0, .4);\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 152, 0, .22);\n }\n }\n }\n }\n\n & > .levels-menu {\n display: none;\n min-width: 0px;\n\n position: fixed;\n z-index: 5;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 8px;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .6),\n 0 0 0 1px rgba(255, 255, 255, .05);\n\n background: rgba(28, 30, 38, .98);\n -webkit-backdrop-filter: blur(24px);\n backdrop-filter: blur(24px);\n\n &.show {\n display: flex;\n gap: 6px;\n }\n\n & > .levels-menu-item {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n border-radius: 8px;\n padding: 6px 14px;\n\n font-size: .95em;\n font-weight: 600;\n text-align: center;\n white-space: nowrap;\n\n transition: all .2s cubic-bezier(.4, 0, .2, 1);\n\n background: rgba(255, 255, 255, .05);\n border: 1px solid rgba(255, 255, 255, .1);\n\n &:hover {\n transform: translateY(-2px);\n background: rgba(255, 255, 255, .08);\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n\n &:active {\n transform: translateY(0);\n }\n }\n }\n\n .queue-list {\n overflow: hidden auto;\n\n &:is(#user-contributions-content, #page-history-content) {\n & > .queue-item {\n margin: 4px 0;\n }\n }\n\n & > .queue-empty {\n text-align: center;\n padding: 40px 20px;\n font-size: 1em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n }\n\n & > .historical-bar {\n height: 4px;\n width: 100%;\n\n position: relative;\n\n margin: 8px 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1) 20%,\n rgba(255, 255, 255, .1) 80%,\n transparent\n );\n\n & > .label {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n font-size: 1em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .8);\n }\n }\n\n & > .queue-item {\n cursor: pointer;\n\n display: flex;\n\n position: relative;\n\n border: 1px solid;\n border-radius: .75rem;\n\n margin: 4px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .4);\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n background .2s ease;\n\n &:hover, &:focus-within {\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 4px 12px oklch(0 0 0 / 0.3);\n\n background: rgba(40, 43, 52, .6);\n }\n\n &.current {\n /* Theme dependent */\n border-color: linear-gradient(90deg,\n rgba(40, 43, 52, .4),\n rgba(40, 43, 82, .6)\n );\n box-shadow: 0 0 0 1px rgba(60, 63, 122, 1) inset;\n\n background: rgba(40, 43, 82, .6);\n\n & > .item-body {\n & > .item-tags {\n & > .tag {\n /* Theme dependent */\n color: rgba(145, 145, 165, 1);\n background: rgba(60, 63, 122, .4);\n border-color: rgba(60, 63, 122, .6);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .4);\n border-color: rgba(255, 193, 7, .6);\n }\n }\n }\n }\n }\n\n &.mentions-me {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n box-shadow: 0 0 0 1px rgba(255, 193, 7, 1) inset;\n\n background: rgba(40, 43, 52, .6);\n }\n\n & > .item-color {\n --ores-color: rgba(128, 128, 128, 1);\n\n flex-shrink: 0;\n width: 4px;\n\n position: relative;\n\n opacity: .85;\n\n /* Theme dependent */\n background: var(--ores-color);\n }\n\n & > .item-body {\n --ores-color: rgba(128, 128, 128, 1);\n --diff-color: rgba(128, 128, 128, 1);\n\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: .5rem;\n\n min-width: 0;\n\n padding: .75rem 1rem;\n\n & > .header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: .75rem;\n\n & > .page-title {\n display: flex;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n font-size: clamp(.825rem, .85rem + .35vw, .95rem);\n font-weight: 600;\n\n word-wrap: break-word;\n word-break: break-word;\n\n line-height: 1.35;\n\n /* Theme dependent */\n color: rgba(205, 204, 202, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > i {\n font-size: .9em;\n\n line-height: inherit;\n }\n }\n\n & > .timestamp {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: 4px;\n\n min-width: 3ex;\n\n padding-top: 1px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n white-space: nowrap;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .75rem;\n\n width: 100%;\n\n & > .user-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n font-weight: 500;\n\n hyphens: auto;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n\n &.blocked {\n font-style: italic;\n text-decoration: line-through;\n\n opacity: .7;\n }\n &.empty-talk {\n /* Theme dependent */\n color: rgba(221, 105, 116, 1);\n }\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n }\n\n & > .chips {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-grow: 1;\n gap: 4px;\n\n & > .ores-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--ores-color);\n background: color-mix(in srgb, var(--ores-color) 15%, transparent);\n }\n\n & > .diff-chips {\n display: flex;\n align-items: center;\n gap: 4px;\n\n & > .minor-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 5px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n /* Theme dependent */\n color: rgba(175, 175, 175, 1);\n background: rgba(175, 175, 175, .15);\n }\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n /* Theme dependent */\n color: var(--diff-color);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n }\n\n & > .item-comment {\n display: flex;\n align-items: center;\n gap: 4px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n overflow: hidden;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n\n & > i {\n flex-shrink: 0;\n\n opacity: .6;\n }\n\n & > .text {\n font-style: italic;\n white-space: nowrap;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n &.none {\n opacity: .6;\n }\n }\n }\n\n & > .item-tags {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .5rem;\n\n & > .tag {\n display: flex;\n align-items: center;\n gap: 2px;\n\n padding: 1px .5rem;\n\n border: 1px solid;\n border-radius: .375rem;\n\n font-size: .7rem;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(135, 135, 135, 1);\n background: rgba(45, 44, 51, 1);\n border-color: rgba(38, 37, 35, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n border-color: rgba(255, 193, 7, .4);\n }\n }\n }\n }\n\n & > .remove-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 32px;\n height: 32px;\n\n position: absolute;\n right: 0px;\n bottom: 0px;\n\n border-top-left-radius: 8px;\n\n line-height: 1;\n\n transition: color .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .7);\n background: rgba(255, 255, 255, 0);\n\n &:hover {\n /* Theme dependent */\n color: rgba(255, 70, 0, 1);\n background: rgba(255, 70, 0, .15);\n }\n }\n }\n }\n\n .tooltip {\n min-width: 0;\n max-height: 80vh;\n\n position: fixed;\n left: 0;\n top: 0;\n z-index: calc(var(--max-z-index) - 3);\n\n border: 2px solid;\n\n border-radius: 8px;\n padding: 4px 6px;\n\n overflow-wrap: break-word;\n overflow: hidden auto;\n\n font-size: .95em;\n line-height: 1.45;\n word-wrap: break-word;\n white-space: normal;\n\n animation: tooltip-enter .1s ease-out forwards;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n box-shadow: 0 10px 30px rgba(6, 12, 24, .6),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n color: rgba(234, 240, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .03),\n rgba(255, 255, 255, .01)\n );\n -webkit-backdrop-filter: blur(14px) brightness(.7);\n backdrop-filter: blur(14px) brightness(.7);\n\n &:not(.buttons) {\n pointer-events: none;\n\n max-width: 460px;\n }\n\n &.buttons {\n display: flex;\n flex-direction: row;\n gap: 8px;\n\n z-index: calc(var(--max-z-index) - 2);\n\n white-space: nowrap;\n\n & > .button {\n cursor: pointer;\n\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 4px 8px;\n\n font-size: .95em;\n font-weight: 500;\n letter-spacing: .3px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(255, 255, 255, .05);\n\n color: rgba(240, 245, 255, .92);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .08),\n rgba(255, 255, 255, .02)\n );\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .4),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .14),\n rgba(255, 255, 255, .06)\n );\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n box-shadow: 0 1px 4px rgba(0, 0, 0, .3),\n inset 0 1px 2px rgba(0, 0, 0, .2);\n }\n }\n }\n\n & > .tooltip-title {\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-bottom: 1px solid;\n\n border-radius: 6px;\n margin-bottom: 12px;\n padding: 8px 10px;\n\n font-size: 1.04em;\n font-weight: 700;\n letter-spacing: .25px;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .05);\n\n color: rgba(255, 255, 255, .92);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .02),\n rgba(0, 0, 0, .04)\n );\n -webkit-backdrop-filter: blur(6px);\n backdrop-filter: blur(6px);\n }\n\n & > .tooltip-item {\n display: flex;\n flex-direction: column;\n\n position: relative;\n\n border: 1px solid;\n\n border-radius: 10px;\n margin: 10px 0;\n padding: 10px 12px;\n\n overflow: hidden;\n overflow-wrap: anywhere;\n\n word-wrap: break-word;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .04);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .075),\n rgba(0, 0, 0, .25)\n );\n\n &:is(.user-warnings, .user-blocks) {\n & > .tooltip-item-level {\n display: block;\n width: 100%;\n\n border-bottom: 1px solid;\n\n border-radius: 6px 6px 0 0;\n padding: 6px 10px;\n\n font-size: .95em;\n font-weight: 700;\n letter-spacing: .3px;\n\n /* Theme dependent */\n border-bottom: 1px solid rgba(255, 255, 120, .25);\n\n color: rgba(255, 255, 120, .95);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 120 .22),\n rgba(255, 255, 120, .08)\n );\n }\n\n & > .tooltip-item-details {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n\n & > :is(.tooltip-item-user, .tooltip-item-time) {\n font-size: .82em;\n font-weight: 400;\n\n opacity: .8;\n\n &.tooltip-item-user {\n /* Theme dependent */\n color: rgba(150, 210, 255, .9);\n }\n &.tooltip-item-time {\n /* Theme dependent */\n color: rgba(220, 225, 235, .9);\n\n & > span:not(:first-of-type) {\n margin-left: 1ex;\n }\n }\n }\n }\n }\n\n & > .tooltip-more {\n border-top: 1px solid;\n\n border-radius: 8px;\n margin-top: 14px;\n padding-top: 10px;\n\n font-size: .92em;\n font-style: italic;\n text-align: center;\n\n opacity: .95;\n\n /* Theme dependent */\n border-top-color: rgba(255, 255, 255, .04);\n\n color: rgba(240, 240, 255, .75);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .015),\n rgba(0, 0, 0, .03)\n );\n -webkit-backdrop-filter: blur(4px);\n backdrop-filter: blur(4px);\n }\n }\n }\n\n .confirmation-modal-overlay {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 6);\n\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n animation: fade-in .2s ease-out;\n\n &.closing {\n animation: fade-out .2s ease-out forwards;\n }\n\n & > .confirmation-modal {\n max-width: 500px;\n min-width: 400px;\n\n border: 1px solid;\n\n border-radius: 16px;\n\n word-wrap: break-word;\n\n animation: scale-in .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 12px 48px rgba(0, 0, 0, .7),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: rgba(41, 47, 60, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.closing {\n animation: scale-out .2s ease-out forwards;\n }\n\n & > .confirmation-modal-header {\n border-bottom: 1px solid;\n\n padding: 20px 24px;\n\n /* Theme dependent */\n border-bottom-color: rgba(54, 62, 81, 1);\n\n & > .confirmation-modal-title {\n font-size: 1.2em;\n font-weight: 700;\n }\n }\n\n & > .confirmation-modal-body {\n max-height: 70vh;\n\n padding: 24px;\n\n line-height: 1.5;\n\n overflow: hidden auto;\n\n /* Theme dependent */\n color: rgba(187, 187, 187, 1);\n\n & > .confirmation-modal-username {\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(91, 154, 255, 1);\n }\n\n & > .confirmation-modal-input {\n width: 100%;\n\n border: 1px solid;\n border-radius: 4px;\n\n margin-top: 10px;\n padding: 8px;\n\n /* Theme dependent */\n color: white;\n border-color: rgba(255, 255, 255, .2);\n background: rgba(0, 0, 0, .3);\n }\n }\n\n & > .confirmation-modal-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n\n border-top: 1px solid;\n\n padding: 16px 24px;\n\n /* Theme dependent */\n border-top-color: rgba(54, 62, 81, 1);\n\n & > .confirmation-modal-footer-right {\n display: flex;\n gap: 12px;\n }\n\n &.confirmation-modal-footer-vertical {\n flex-direction: column;\n align-items: stretch;\n\n & > .confirmation-modal-button {\n width: 100%;\n }\n }\n }\n\n .confirmation-modal-button {\n font-size: .95em;\n font-weight: 500;\n }\n }\n }\n\n .notification-panel {\n pointer-events: none;\n\n display: flex;\n flex-direction: column;\n width: 480px;\n max-height: 600px;\n\n position: absolute;\n left: 15px;\n top: 55px;\n z-index: calc(var(--max-z-index) - 9);\n\n border: 1px solid;\n border-radius: 18px;\n\n overflow: hidden;\n\n opacity: 0;\n\n transform: translateY(-20px) scale(.95);\n\n transition: opacity .3s ease,\n transform .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 20px 60px rgba(0, 0, 0, .8),\n 0 0 0 1px rgba(255, 255, 255, .08),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n\n background: rgba(25, 27, 36, .96);\n -webkit-backdrop-filter: blur(25px) brightness(0.95);\n backdrop-filter: blur(25px) brightness(0.95);\n\n a {\n /* Theme dependent */\n color: rgba(120, 170, 255, 1);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(160, 195, 255, 1);\n }\n\n &:visited {\n /* Theme dependent */\n color: rgba(150, 185, 255, 1);\n }\n }\n\n &.show {\n pointer-events: auto;\n\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n & > .notification-header {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n border-bottom: 1px solid;\n\n padding: 18px 22px;\n\n font-size: 1.12em;\n font-weight: 700;\n letter-spacing: 0.3px;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .08);\n\n color: rgba(245, 245, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(120, 145, 255, .12),\n rgba(140, 100, 200, .08)\n );\n\n & > .mark-all-read {\n cursor: pointer;\n\n font-size: 0.78em;\n font-weight: 500;\n letter-spacing: 0.2px;\n\n padding: 6px 12px;\n border-radius: 6px;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(120, 170, 255, 1);\n background: rgba(120, 170, 255, .08);\n\n &:hover {\n /* Theme dependent */\n background: rgba(120, 170, 255, .15);\n color: rgba(160, 200, 255, 1);\n }\n\n &:active {\n opacity: .85;\n }\n }\n }\n\n & > .notification-list {\n max-height: 520px;\n\n overflow: hidden auto;\n\n padding: 8px;\n\n & > .notifications-empty {\n padding: 40px 20px;\n\n text-align: center;\n\n font-size: 0.95em;\n\n /* Theme dependent */\n color: rgba(120, 125, 145, 1);\n\n & strong {\n /* Theme dependent */\n color: rgba(150, 155, 175, 1);\n }\n }\n\n & > .notification {\n cursor: pointer;\n\n display: flex;\n align-items: flex-start;\n gap: 14px;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 14px 18px;\n margin-bottom: 8px;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n\n background: linear-gradient(135deg,\n rgba(50, 55, 75, .4),\n rgba(40, 45, 65, .3)\n );\n\n &:hover {\n opacity: 1;\n\n /* Theme dependent */\n border-color: rgba(120, 170, 255, .3);\n box-shadow: 0 8px 24px rgba(120, 170, 255, .15),\n inset 0 1px 0 rgba(255, 255, 255, .04);\n\n background: linear-gradient(135deg,\n rgba(80, 100, 160, .15),\n rgba(70, 85, 145, .1)\n );\n\n transform: translateY(-2px);\n }\n\n &.unread {\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(120, 170, 255, .5);\n box-shadow: 0 0 20px rgba(120, 170, 255, .2),\n inset 0 1px 0 rgba(255, 255, 255, .06);\n\n background: linear-gradient(135deg,\n rgba(120, 170, 255, .1),\n rgba(100, 145, 255, .05)\n );\n }\n\n &.read {\n opacity: .72;\n\n border-color: rgba(255, 255, 255, .04);\n }\n\n & > .notification-icon {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n\n border-radius: 10px;\n\n overflow: hidden;\n\n background: rgba(60, 75, 120, .5);\n\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n\n & > .notification-content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 5px;\n\n & > .notification-header {\n margin: 0;\n\n font-size: .95rem;\n font-weight: 600;\n letter-spacing: 0.2px;\n\n /* Theme dependent */\n color: rgba(235, 240, 255, 1);\n }\n\n & > .notification-body {\n font-size: .82rem;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 180, 205, 1);\n }\n\n & > .notification-links {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n\n margin-top: 6px;\n\n & > a {\n border: none;\n\n padding: 4px 8px;\n border-radius: 5px;\n\n font-size: .8rem;\n font-weight: 500;\n text-decoration: none;\n\n background: rgba(120, 170, 255, .12);\n opacity: 1;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n color: rgba(140, 185, 255, 1);\n\n &:hover {\n opacity: 1;\n\n background: rgba(120, 170, 255, .22);\n\n /* Theme dependent */\n color: rgba(180, 210, 255, 1);\n }\n\n &:active {\n opacity: .85;\n\n transform: scale(0.98);\n }\n }\n }\n }\n\n & > .notification-right {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n height: 100%;\n gap: 10px;\n\n & > .notification-unread-indicator {\n cursor: pointer;\n\n position: relative;\n\n width: 12px;\n height: 12px;\n\n border-radius: 50%;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n background: rgba(120, 170, 255, 1);\n box-shadow: 0 0 8px rgba(120, 170, 255, .5);\n\n &:hover, &:focus {\n transform: scale(1.35);\n\n /* Theme dependent */\n box-shadow: 0 0 16px rgba(120, 170, 255, .8);\n }\n\n &::after {\n content: '';\n\n cursor: pointer;\n\n position: absolute;\n\n top: -5px;\n left: -5px;\n bottom: -5px;\n right: -5px;\n }\n }\n\n & > .notification-timestamp {\n font-size: .72rem;\n font-weight: 500;\n\n opacity: .8;\n\n white-space: nowrap;\n\n /* Theme dependent */\n color: rgba(140, 150, 175, 1);\n }\n }\n }\n }\n }\n\n .icon-count {\n --color: 255, 255, 255;\n --background: 255, 255, 255;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n\n position: absolute;\n right: -11px;\n top: -11px;\n z-index: 3;\n\n border: 1px solid;\n\n border-radius: 50%;\n padding: 0 8px;\n\n font-family: sans-serif;\n font-size: 12px;\n font-weight: 600;\n line-height: 1;\n\n transition: transform .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(var(--background), .3);\n box-shadow: 0 8px 24px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(var(--background), .15);\n\n color: rgba(--color, 1);\n text-shadow: 0 1px 0 rgba(0, 0, 0, .35);\n\n background: linear-gradient(135deg,\n rgba(var(--background), .7),\n rgba(var(--background), .5)\n );\n -webkit-backdrop-filter: blur(6px) brightness(0%);\n backdrop-filter: blur(6px) brightness(0%);\n\n &.red {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 255, 60, 60;\n }\n &.green {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 60, 205, 80;\n }\n &.blue {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 60, 120, 255;\n }\n &.yellow {\n /* Theme dependent */\n --color: 30, 30, 30;\n --background: 255, 215, 60;\n }\n &.orange {\n /* Theme dependent */\n --color: 30, 30, 30;\n --background: 255, 165, 60;\n }\n &:is(.gray, .grey) {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 150, 150, 150;\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n\n transform: scale(0);\n }\n }\n\n .toast-alert {\n display: flex;\n align-items: center;\n gap: 14px;\n max-width: 500px;\n min-width: 320px;\n\n position: fixed;\n right: 20px;\n bottom: 20px;\n z-index: calc(var(--max-z-index) - 4);\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 14px 20px;\n\n opacity: 0;\n\n transform: translateX(100%) scale(.8);\n\n animation: toast-alert-enter .5s cubic-bezier(.68, -.55, .265, 1.55);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 12px 40px rgba(0, 0, 0, .2),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n color: rgba(255, 255, 255, 1);\n\n -webkit-backdrop-filter: blur(25px) saturate(180%);\n backdrop-filter: blur(25px) saturate(180%);\n\n &.success {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(76, 175, 80, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .25),\n rgba(56, 142, 60, .25)\n );\n }\n &.warning {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(255, 152, 0, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(255, 152, 0, .25),\n rgba(245, 124, 0, .25)\n );\n }\n &.error {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(244, 67, 54, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(244, 67, 54, .25),\n rgba(211, 47, 47, .25)\n );\n }\n &.dev {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(156, 39, 176, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(156, 39, 176, .25),\n rgba(123, 31, 162, .25)\n );\n }\n\n &.show {\n opacity: 1;\n\n transform: translateX(0) scale(1);\n }\n\n &.hidden {\n animation: toast-alert-leave .4s cubic-bezier(.6, -.28, .735, .045) forwards;\n }\n\n & > .toast-icon {\n flex-shrink: 0;\n\n font-size: 1.8em;\n\n /* Theme dependent */\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .3));\n }\n\n & > .toast-content {\n flex: 1;\n\n & > .toast-title {\n margin-bottom: 4px;\n\n font-size: 1.05em;\n font-weight: 700;\n letter-spacing: .3px;\n }\n\n & > .toast-message {\n font-size: .9em;\n line-height: 1.4;\n\n opacity: .95;\n }\n }\n\n & > .toast-close {\n cursor: pointer;\n\n flex-shrink: 0;\n\n border-radius: 6px;\n padding: 4px;\n\n font-size: 1.3em;\n\n background: transparent;\n opacity: .8;\n\n transition: opacity .2s ease,\n transform .2s ease,\n background .2s ease;\n\n &:hover {\n opacity: 1;\n\n transform: scale(1.1);\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .15);\n }\n }\n }\n\n .minor-indicator {\n border: 1px solid;\n\n border-radius: 4px;\n margin-right: 4px;\n padding: 0 4px;\n\n font-size: .9em;\n font-weight: 700;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n color: rgba(153, 153, 153, 1);\n\n background: rgba(60, 64, 76, .9);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n\n .menu-divider {\n height: 1px;\n\n margin: 6px 8px;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n }\n\n .profanity {\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n margin: 20px;\n padding: 20px;\n\n border-radius: 12px;\n border: 1px solid;\n\n /* Theme dependent */\n background: rgba(35, 38, 48, .8);\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .3);\n\n & > .profanity-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n\n padding-bottom: 16px;\n border-bottom: 1px solid;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .1);\n\n & > .profanity-score {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n & > .score-label {\n font-size: .85em;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: .5px;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n }\n\n & > .score-value {\n font-size: 2em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(255, 200, 100, 1);\n }\n }\n\n & > .profanity-risk {\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 10px 16px;\n\n font-size: .95em;\n font-weight: 600;\n\n /* Theme dependent */\n background: rgba(60, 64, 76, .6);\n\n &.risk-high {\n /* Theme dependent */\n color: rgba(255, 100, 100, 1);\n background: rgba(211, 47, 47, .2);\n border: 1px solid rgba(211, 47, 47, .4);\n }\n\n &.risk-medium {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n border: 1px solid rgba(255, 193, 7, .3);\n }\n\n &.risk-low {\n /* Theme dependent */\n color: rgba(100, 200, 255, 1);\n background: rgba(66, 165, 245, .15);\n border: 1px solid rgba(66, 165, 245, .3);\n }\n }\n }\n\n & > .profanity-matches-header {\n display: flex;\n align-items: center;\n gap: 8px;\n\n font-size: 1.05em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n }\n\n & > .profanity-matches-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n & > .profanity-match {\n display: flex;\n flex-direction: column;\n gap: 10px;\n\n border-radius: 8px;\n padding: 12px 14px;\n border-left: 3px solid;\n\n transition: background .2s ease,\n border-color .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n background: rgba(45, 50, 62, .7);\n border-left-color: rgba(255, 150, 150, .5);\n\n &:hover {\n transform: translateX(4px);\n\n /* Theme dependent */\n background: rgba(50, 56, 70, .85);\n border-left-color: rgba(255, 150, 150, .8);\n }\n\n & > .match-header {\n display: flex;\n align-items: center;\n gap: 8px;\n\n font-size: .95em;\n\n & > .match-text {\n font-family: 'Courier New', monospace;\n font-weight: 600;\n\n border-radius: 4px;\n padding: 4px 8px;\n\n /* Theme dependent */\n color: rgba(255, 180, 180, 1);\n background: rgba(211, 47, 47, .2);\n }\n\n & > .match-arrow {\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .match-name {\n font-family: 'Courier New', monospace;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n }\n\n & > .match-details {\n display: flex;\n gap: 16px;\n\n & > .match-stat {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n & > .stat-label {\n font-size: .75em;\n text-transform: uppercase;\n letter-spacing: .5px;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .stat-value {\n font-size: .9em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n\n &.severity-critical {\n /* Theme dependent */\n color: rgba(255, 100, 100, 1);\n }\n &.severity-high {\n /* Theme dependent */\n color: rgba(255, 150, 100, 1);\n }\n\n &.severity-medium {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n &.severity-low {\n /* Theme dependent */\n color: rgba(100, 200, 255, 1);\n }\n }\n }\n }\n\n & > .match-note {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n\n margin-top: 6px;\n padding: 10px 12px;\n border-radius: 6px;\n\n font-size: .85em;\n line-height: 1.5;\n\n /* Theme dependent */\n background: rgba(30, 33, 43, .6);\n border: 1px solid rgba(100, 150, 255, .2);\n\n & > .fa {\n margin-top: 2px;\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(100, 150, 255, .8);\n }\n\n & > .note-text {\n flex: 1;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(180, 190, 210, 1);\n }\n }\n }\n }\n\n & > .profanity-no-matches {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n\n padding: 20px;\n\n font-size: 1em;\n\n /* Theme dependent */\n color: rgba(100, 200, 100, 1);\n }\n }\n\n & > #settings-container {\n z-index: calc(var(--max-z-index) - 7);\n\n pointer-events: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n\n opacity: 0;\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.show {\n pointer-events: auto;\n\n opacity: 1;\n\n & > .settings {\n transform: scale(1);\n }\n }\n\n & > .settings {\n display: flex;\n max-width: 1100px;\n width: 90vw;\n\n border: 1px solid;\n\n border-radius: 20px;\n\n overflow: hidden;\n\n transform: scale(.75);\n\n transition: transform .1s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(30, 33, 42, .95);\n -webkit-backdrop-filter: blur(30px);\n backdrop-filter: blur(30px);\n\n & > div {\n height: 80vh;\n\n &.settings-left {\n width: 250px;\n\n border-right: 1px solid;\n\n padding: 20px 0;\n\n overflow-y: auto;\n\n /* Theme dependent */\n border-right-color: rgba(255, 255, 255, .1);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .02),\n rgba(255, 255, 255, .05)\n );\n\n & > .settings-category {\n &:not(:last-child) {\n margin-bottom: 20px;\n }\n\n & > .settings-category-header {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n margin-bottom: 4px;\n padding: 12px 20px;\n\n font-size: .7em;\n font-weight: 800;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n }\n\n & > .settings-left-menu-compact {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n\n padding: 0 12px;\n\n & > .settings-left-menu-item {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n border-radius: 10px;\n padding: 12px;\n\n font-size: 1.2em;\n font-weight: 500;\n\n transition: background .2s ease,\n color .2s ease,\n box-shadow .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n\n &:first-child {\n margin-left: 12px;\n }\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n }\n\n &.selected {\n font-weight: 600;\n\n /* Theme dependent */\n box-shadow: 0 0 20px rgba(102, 126, 234, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n }\n }\n\n & > .settings-left-menu-item {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n border-radius: 10px;\n margin: 2px 12px;\n padding: 12px 20px;\n\n font-size: .95em;\n font-weight: 500;\n\n transition: background .2s ease,\n color .2s ease,\n box-shadow .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n }\n\n &.selected {\n font-weight: 600;\n\n /* Theme dependent */\n box-shadow: 0 0 20px rgba(102, 126, 234, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n\n & > span > i {\n height: 1em;\n aspect-ratio: 1 / 1;\n\n margin-right: 12px;\n\n text-align: center;\n }\n }\n }\n }\n\n &.settings-right {\n flex: 1;\n\n padding: 20px 30px;\n\n overflow-y: auto;\n\n /* Theme dependent */\n background: rgba(20, 22, 28, .5);\n\n & > .hidden {\n display: none;\n }\n\n a {\n color: rgba(143, 163, 255, 1);\n\n &:hover {\n color: rgba(176, 192, 255, 1);\n }\n }\n\n pre, code {\n border-radius: 4px;\n padding: 2px 4px;\n\n font-size: .95em;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .15);\n }\n\n .settings-compact-grid {\n & > .compact {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n & > .numeric-input-container {\n & > .numeric-input {\n width: calc(100% - 70px);\n }\n }\n\n & > select {\n width: 100%;\n }\n }\n }\n\n .settings-section, .settings-toggles-section {\n display: block;\n\n border: 1px solid;\n\n border-radius: 16px;\n padding: 25px;\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3);\n\n background: rgba(35, 38, 48, .8);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n\n .settings-section-title {\n margin-bottom: 5px;\n\n font-size: 1em;\n font-weight: 700;\n letter-spacing: -.5px;\n\n &.collapse-title {\n margin-bottom: 0;\n }\n }\n\n .settings-section-desc {\n margin-bottom: 0;\n\n font-size: .85em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n .pad-list {\n margin: 8px 0;\n padding-left: 20px;\n }\n\n &:not(:last-child) {\n margin-bottom: 30px;\n }\n\n &.compact {\n margin-bottom: 0;\n padding: 18px;\n\n & > .settings-section-title {\n font-size: 1.05em;\n\n &.collapse-title {\n margin-bottom: 15px;\n }\n }\n\n & > .settings-section-desc {\n margin-bottom: 12px;\n\n font-size: .85em;\n }\n }\n\n &.inline {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n padding: 14px 16px;\n\n /* Theme dependent */\n background: rgba(35, 38, 48, .6);\n\n &:not(:last-child) {\n margin-bottom: 12px;\n }\n\n & > .settings-section-content {\n flex: 1;\n }\n }\n\n &.collapsed {\n & > .collapse-title::after {\n transform: rotate(-180deg);\n }\n }\n\n & > .collapse-title {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n &::after{\n content: \"\\f077\";\n\n float: right;\n\n font-family: \"Font Awesome 6 Free\";\n font-weight: 900;\n\n transition: transform .2s ease;\n }\n }\n\n & > .collapsible-content {\n padding: initial;\n\n overflow: hidden;\n\n transition: padding .2s ease;\n\n &.collapsed {\n padding: 0;\n }\n }\n\n & > .settings-section-title {\n margin-bottom: 15px;\n\n font-size: 1.4em;\n font-weight: 700;\n letter-spacing: -.5px;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.collapse-title {\n margin-bottom: 8px;\n }\n }\n\n & > .settings-section-header {\n display: flex;\n align-items: center;\n gap: 10px;\n\n margin-bottom: 15px;\n\n font-size: 1.2em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.collapse-title {\n margin-bottom: 0;\n }\n\n & > .settings-section-header-icon {\n font-size: 1.3em;\n\n /* Theme dependent */\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .2));\n }\n }\n\n & > .settings-section-desc {\n margin-bottom: 20px;\n\n font-size: .95em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n .checkbox-container {\n display: flex;\n flex-wrap: wrap;\n\n & > div {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 200px;\n\n margin-bottom: 8px;\n\n &:hover {\n & > .checkbox-box {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .checkbox-box {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: block;\n\n position: relative;\n\n border-radius: 5px;\n\n font-size: .95em;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(213, 213, 213, 1);\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n position: absolute;\n width: 0;\n height: 0;\n\n border-radius: 5px;\n\n opacity: 0;\n\n &:checked ~ .checkmark {\n /* Theme dependent */\n background: linear-gradient(45deg,\n rgba(100, 61, 219, 1),\n rgba(217, 21, 239, 1)\n );\n\n &::after {\n opacity: 1;\n }\n }\n }\n\n & > .checkmark {\n width: 1.3em;\n height: 1.3em;\n\n position: relative;\n left: 0;\n top: 0;\n\n border-radius: 5px;\n\n transition: background .2s ease;\n\n /* Theme dependent */\n background: rgba(204, 204, 204, 1);\n\n &::after {\n content: \"\";\n\n width: .25em;\n height: .5em;\n\n position: absolute;\n left: .45em;\n top: .25em;\n\n border-width: 0 .15em .15em 0;\n border-style: solid;\n\n opacity: 0;\n\n transform: rotate(45deg);\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, 1);\n }\n }\n }\n }\n }\n\n .numeric-input-container {\n display: flex;\n\n & > .numeric-input-button {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 35px;\n height: 35px;\n\n border: 1px solid;\n\n border-radius: 8px;\n\n font-size: 1.3em;\n\n transition: background .2s ease,\n border-color .2s ease,\n color .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n color: rgba(192, 192, 192, 1);\n\n background: rgba(50, 54, 66, .8);\n\n &:hover {\n transform: scale(1.05);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n }\n\n & > .numeric-input {\n width: 100px;\n\n border-radius: 8px;\n margin: 0 5px;\n padding: 6px 12px;\n\n font-size: 1.1em;\n }\n }\n\n .volume-control {\n display: block;\n\n border: 1px solid;\n\n border-radius: 12px;\n margin: 20px 0;\n padding: 20px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n & > .volume-control-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 20px;\n\n margin-bottom: 16px;\n\n & > .volume-control-info {\n flex: 1;\n\n & > .volume-control-title {\n margin-bottom: 6px;\n\n font-size: 1.05em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .volume-control-desc {\n font-size: .9em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n & > .volume-control-preview {\n --background: 123, 143, 245;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 10px 18px;\n\n font-size: .9em;\n font-weight: 500;\n }\n }\n\n & > .volume-control-slider-container {\n display: flex;\n align-items: center;\n gap: 16px;\n\n & > .volume-control-slider {\n flex: 1;\n height: 6px;\n\n outline: none;\n\n border-radius: 3px;\n\n -webkit-appearance: none;\n appearance: none;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n\n &::-webkit-slider-thumb {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n\n border-radius: 50%;\n\n -webkit-appearance: none;\n appearance: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 6px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 10px rgba(102, 126, 234, .5);\n }\n }\n\n &::-moz-range-thumb {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n\n border: none;\n\n border-radius: 50%;\n\n -webkit-appearance: none;\n appearance: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 6px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 10px rgba(102, 126, 234, .5);\n }\n }\n }\n\n & > .volume-control-input {\n width: 70px;\n\n border-radius: 8px;\n padding: 8px 12px;\n\n font-size: .95em;\n text-align: center;\n }\n }\n }\n\n .settings-toggle {\n cursor: pointer;\n\n flex-shrink: 0;\n width: 60px;\n height: 32px;\n\n position: relative;\n\n &:hover {\n & > .toggle-switch {\n transform: scale(1.02);\n }\n }\n\n &.active {\n & > .toggle-switch {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5),\n inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n & > .toggle-slider {\n left: 30px;\n\n /* Theme dependent */\n box-shadow: 0 4px 10px rgba(0, 0, 0, .3),\n 0 2px 4px rgba(0, 0, 0, .2);\n }\n }\n }\n\n & > .toggle-switch {\n width: 100%;\n height: 100%;\n\n position: relative;\n\n border: 2px solid;\n\n border-radius: 16px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: inset 0 2px 6px rgba(0, 0, 0, .4);\n\n background: rgba(60, 63, 75, .8);\n\n & > .toggle-slider {\n width: 24px;\n height: 24px;\n\n position: absolute;\n left: 2px;\n top: 2px;\n\n border-radius: 50%;\n\n transition: left .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 3px 8px rgba(0, 0, 0, .25),\n 0 1px 2px rgba(0, 0, 0, .15);\n\n background: rgba(255, 255, 255, 1);\n }\n }\n }\n\n .settings-radio-group {\n display: flex;\n flex-direction: row;\n gap: 12px;\n\n border-radius: 100vh;\n padding: 8px;\n\n /* Theme dependent */\n background: rgba(40, 43, 52, .7);\n\n & > .settings-radio-option {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n flex: 1;\n\n text-align: center;\n\n border-radius: 100vh;\n padding: 10px 16px;\n\n font-size: .9em;\n font-weight: 600;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &:hover {\n /* Theme dependent */\n background: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, 1);\n }\n\n &.selected {\n /* Theme dependent */\n background: rgba(102, 126, 234, .3);\n color: rgba(224, 224, 224, 1);\n }\n }\n }\n\n .settings-slider {\n display: flex;\n flex-direction: column;\n gap: 14px;\n\n border-radius: 14px;\n padding: 16px 20px;\n\n /* Theme dependent */\n background: rgba(40, 43, 52, .7);\n\n & > .settings-slider-labels {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n }\n\n & > .settings-slider-labels > .settings-slider-label-left,\n & > .settings-slider-labels > .settings-slider-label-right {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n font-size: .9em;\n font-weight: 600;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &.active {\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .percent {\n font-size: .85em;\n font-weight: 500;\n font-variant-numeric: tabular-nums;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n }\n\n & > .settings-slider-labels > .settings-slider-label-right {\n text-align: right;\n }\n\n & > .settings-slider-track {\n cursor: pointer;\n\n height: 8px;\n\n position: relative;\n\n border-radius: 100vh;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .08);\n\n &::before {\n content: '';\n\n width: var(--fill, 50%);\n height: 100%;\n\n position: absolute;\n left: 0;\n top: 0;\n\n border-radius: 100vh;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(102, 126, 234, .6),\n rgba(118, 75, 162, .6)\n );\n }\n\n & > .settings-slider-thumb {\n cursor: grab;\n\n width: 22px;\n height: 22px;\n\n position: absolute;\n top: 50%;\n\n border: 2px solid;\n\n border-radius: 50%;\n\n transform: translate(-50%, -50%);\n\n transition: transform .15s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .4),\n 0 0 12px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: translate(-50%, -50%) scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 12px rgba(0, 0, 0, .5),\n 0 0 20px rgba(102, 126, 234, .5);\n }\n\n &:active, &.dragging {\n cursor: grabbing;\n\n transform: translate(-50%, -50%) scale(1.2);\n\n /* Theme dependent */\n box-shadow: 0 4px 16px rgba(0, 0, 0, .5),\n 0 0 24px rgba(102, 126, 234, .6);\n }\n }\n }\n }\n\n .palette-selector {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n\n margin-top: 20px;\n\n & > .palette-option {\n cursor: pointer;\n\n border: 2px solid;\n\n border-radius: 12px;\n padding: 12px;\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 20px rgba(20, 20, 30, .4);\n }\n\n &.selected {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, 1);\n box-shadow: 0 0 20px rgba(102, 126, 234, .4);\n }\n\n & > .palette-name {\n pointer-events: none;\n\n font-size: .9em;\n font-weight: 600;\n text-align: center;\n }\n\n & > .palette-preview {\n pointer-events: none;\n\n display: flex;\n gap: 4px;\n height: 40px;\n\n border-radius: 8px;\n margin-bottom: 12px;\n\n overflow: hidden;\n\n & > canvas {\n flex: 1;\n width: 100%;\n height: 100%;\n }\n }\n }\n }\n\n .tracklist {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n\n & > .track {\n position: relative;\n\n border-radius: 8px;\n\n overflow: hidden;\n\n & > .thumbnail {\n display: block;\n width: 100%;\n aspect-ratio: 1 / 1;\n\n overflow: hidden;\n\n & > img {\n display: block;\n width: 100%;\n height: 100%;\n\n overflow: hidden;\n }\n }\n\n & > .info {\n display: flex;\n flex-direction: column;\n gap: 3px;\n\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n\n padding: 10px 12px;\n\n /* Theme dependent */\n background: linear-gradient(180deg,\n rgba(0, 0, 0, 0),\n rgba(0, 0, 0, .35),\n rgba(0, 0, 0, .65)\n );\n\n & > .title {\n font-size: .95em;\n font-weight: 600;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n white-space: nowrap;\n\n /* Theme dependent */\n text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n\n color: rgba(255, 255, 255, 1);\n }\n\n & > :is(.artist, .length) {\n font-size: .8em;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .9);\n }\n }\n\n & > .preview-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n width: 40px;\n height: 40px;\n\n position: absolute;\n right: 8px;\n top: 8px;\n\n border-radius: 50%;\n padding: 0;\n }\n }\n }\n\n .control-container {\n border: 1px solid;\n\n border-radius: 12px;\n margin-bottom: 15px;\n padding: 18px 22px;\n\n font-size: .9em;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n & > .control-container-title {\n margin-bottom: 12px;\n\n font-size: 1.1em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.margin-top {\n margin-top: 10px;\n }\n }\n\n & > .control-keys {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n\n & > div {\n display: flex;\n align-items: center;\n width: max-content;\n\n border: 1px solid;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-weight: 500;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .3);\n\n color: rgba(192, 192, 192, 1);\n\n background: rgba(50, 54, 66, .9);\n\n &:not(.key-select):hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 12px rgba(20, 20, 30, .4);\n\n background: rgba(60, 64, 78, .95);\n }\n\n &.key-select {\n border: 2px dashed;\n\n font-style: italic;\n\n /* Theme dependent */\n border-color: rgba(192, 192, 192, .6);\n box-shadow: 0 0 10px rgba(192, 192, 192, .4);\n\n background: rgba(192, 192, 192, .1);\n }\n\n &.duplicate {\n border: 2px dashed;\n\n /* Theme dependent */\n border-color: rgba(255, 87, 34, 1);\n box-shadow: 0 0 10px rgba(255, 87, 34, .5);\n\n background: rgba(255, 87, 34, .1);\n }\n\n & > .key-elem-title {\n margin-right: 10px;\n }\n\n &.add, & > .remove {\n cursor: pointer;\n }\n }\n }\n\n & > .control-actions {\n .control-action {\n border-left: 2px solid;\n\n margin-top: 12px;\n padding-left: 16px;\n\n /* Theme dependent */\n border-left-color: rgba(102, 126, 234, .5);\n\n & > .control-action-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n margin-bottom: 8px;\n\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n span {\n margin-right: 5px;\n }\n\n & > .control-action-title-left {\n white-space: nowrap;\n\n overflow-x: auto;\n\n & > span {\n width: 17px;\n }\n\n & > select {\n border-radius: 6px;\n margin: 0 5px;\n padding: 6px 10px;\n }\n\n & > .params {\n font-size: .85em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n\n & > .condition-parameter {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n\n margin: 0 4px;\n\n & > select,\n & > input:not([type=checkbox]) {\n border-radius: 6px;\n padding: 6px 10px;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n }\n }\n }\n }\n\n & > .control-action-title-right {\n display: flex;\n\n & > span {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display:flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n\n border-radius: 5px;\n margin-right: 0;\n\n font-size: 1.2em;\n\n transition: background .1s ease;\n\n &:hover {\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n }\n }\n }\n }\n\n & > .action-parameter {\n border: 1px solid;\n\n border-radius: 8px;\n margin-top: 10px;\n padding: 12px 14px;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(40, 43, 52, .3);\n\n & > .parameter-title {\n margin-bottom: 8px;\n\n font-size: .9em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(180, 190, 210, 1);\n }\n\n & > select,\n & > input:not([type=checkbox]),\n & > duration-input {\n width: 100%;\n\n border-radius: 6px;\n padding: 8px 12px;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 20px;\n height: 20px;\n }\n }\n }\n\n & > .control-bottom-container {\n display: flex;\n justify-content: space-between;\n\n margin-top: 10px;\n\n & > div {\n display: flex;\n\n & > .add-action-button {\n width: max-content;\n\n border-radius: 8px;\n padding: 8px 16px;\n\n font-weight: 500;\n }\n }\n }\n }\n }\n\n .text-input-container {\n display: flex;\n gap: 12px;\n\n border-style: 2px dashed;\n\n border-radius: 12px;\n margin-top: 18px;\n padding: 16px;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .35);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 0.15),\n rgba(118, 75, 162, 0.15)\n );\n\n & > input[type=\"text\"] {\n flex: 1;\n\n border-style: dashed;\n\n border-radius: 10px;\n padding: 10px 16px;\n\n font-size: .95em;\n\n &:focus {\n border-style: solid;\n }\n }\n }\n\n .stats-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n\n margin-top: 20px;\n\n & > .stat-card {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n width: 100%;\n height: 150px;\n\n background-color: transparent;\n\n perspective: 1000px;\n\n transition: transform .3s ease;\n\n &:hover, &:active {\n transform: scale(1.05);\n\n & > .inside {\n transform: rotateY(180deg);\n\n &::before {\n opacity: 1;\n }\n }\n }\n\n & > .inside {\n width: 100%;\n height: 100%;\n\n position: relative;\n\n transform-style: preserve-3d;\n\n transition: transform 0.8s linear(\n 0, 0.005, 0.02 2.2%, 0.046 4.5%, 0.182 11.5%,\n 0.318 16.3%, 0.459 20.6%, 0.601 24.6%, 0.738 28.6%,\n 0.863 32.7%, 0.954 37%, 1.015 41.8%, 1.049 47.4%,\n 1.059, 1.047 57.3%, 1.03 63.5%, 1.012 70.9%,\n 1.002 79.5%, 1\n );\n\n &::before {\n inset: -2px;\n\n border-radius: 14px;\n padding: 2px;\n\n opacity: 0;\n\n transition: opacity .3s ease;\n }\n\n & > :is(.front, .back) {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n\n position: absolute;\n\n border: 2px solid;\n\n border-radius: 12px;\n padding: 20px;\n\n text-align: center;\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .25);\n\n &.front {\n justify-content: center;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .15),\n rgba(118, 75, 162, .15)\n );\n }\n &.back {\n transform: rotateY(180deg);\n\n overflow: hidden auto;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(118, 75, 162, .15),\n rgba(102, 126, 234, .15)\n );\n\n &::-webkit-scrollbar {\n width: 8px;\n }\n &::-webkit-scrollbar-thumb {\n border-radius: 4px;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .4);\n }\n &::-webkit-scrollbar-track {\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n }\n }\n\n & > .stat-value {\n margin-bottom: 8px;\n\n font-size: 2.2em;\n font-weight: 700;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n /* Theme independent */\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n\n & > .stat-label {\n margin-bottom: 4px;\n\n font-size: .95em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .stat-sublabel {\n font-size: .8em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n\n &:not(:last-child) {\n margin-bottom: 8px;\n }\n }\n }\n }\n }\n }\n\n .changelog-content {\n & > .changelog-header {\n border-bottom: 2px solid;\n\n padding-bottom: 24px;\n margin-bottom: 8px;\n\n text-align: center;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n\n & > h1 {\n margin: 0 0 10px 0;\n\n font-size: 2.5em;\n font-weight: 800;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n\n & > i {\n margin-right: 12px;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n }\n\n & > .changelog-subtitle {\n margin: 0 0 20px 0;\n\n font-size: 1.1em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .9);\n }\n\n & > .changelog-nav {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n gap: 8px;\n\n & > .changelog-nav-item {\n cursor: pointer;\n\n border: 1px solid;\n border-radius: 20px;\n padding: 6px 16px;\n\n font-size: .85em;\n font-weight: 600;\n text-decoration: none;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n color: rgba(200, 200, 200, .9);\n background: rgba(102, 126, 234, .08);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .6);\n color: rgba(255, 255, 255, 1);\n background: rgba(102, 126, 234, .2);\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .8);\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .3),\n rgba(118, 168, 255, .3)\n );\n box-shadow: 0 0 12px rgba(102, 126, 234, .3);\n }\n }\n }\n }\n\n & > .changelog-divider {\n height: 2px;\n\n margin: 48px auto 8px;\n\n border-radius: 1px;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(102, 126, 234, .4) 20%,\n rgba(118, 168, 255, .4) 50%,\n rgba(102, 126, 234, .4) 80%,\n transparent\n );\n }\n\n & > .changelog-version {\n margin-top: 32px;\n padding: 24px;\n\n border: 1px solid;\n border-radius: 16px;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n background: rgba(30, 33, 42, .4);\n\n & > .changelog-version-header {\n margin-bottom: 24px;\n padding-bottom: 16px;\n\n border-bottom: 1px solid;\n\n text-align: center;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n\n & > .version-badge-row {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n\n margin-bottom: 12px;\n\n & > .version-badge {\n display: inline-block;\n\n border: 1px solid;\n border-radius: 20px;\n padding: 4px 16px;\n\n font-size: .8em;\n font-weight: 700;\n font-family: 'Courier New', monospace;\n letter-spacing: .5px;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n color: rgba(118, 168, 255, 1);\n background: rgba(102, 126, 234, .12);\n }\n\n & > .version-tag {\n display: inline-block;\n\n border-radius: 20px;\n padding: 4px 12px;\n\n font-size: .7em;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 1px;\n\n &.latest {\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .8),\n rgba(118, 168, 255, .8)\n );\n box-shadow: 0 2px 8px rgba(102, 126, 234, .4);\n }\n }\n }\n\n & > h1 {\n margin: 0 0 8px 0;\n\n font-size: 1.6em;\n font-weight: 800;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n\n & > .changelog-version-subtitle {\n margin: 0;\n\n font-size: .9em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .7);\n\n & > i {\n margin-right: 4px;\n }\n }\n }\n\n & > .changelog-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 24px;\n\n margin: 0 auto;\n padding: 0;\n\n & > .card {\n position: relative;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 20px;\n\n overflow: hidden;\n\n transition: border-color .3s ease,\n box-shadow .3s ease,\n background .3s ease,\n transform .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n\n background: rgba(40, 43, 52, .6);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n\n &::before {\n content: '';\n\n height: 3px;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n\n opacity: 0;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(102, 126, 234, .8),\n rgba(118, 168, 255, .8)\n );\n }\n\n &:hover {\n transform: translateY(-4px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5),\n 0 0 0 1px rgba(102, 126, 234, .2);\n\n background: rgba(40, 43, 52, .85);\n\n &::before {\n opacity: 1;\n }\n\n & > .card-icon {\n transform: scale(1.1) rotate(5deg);\n }\n }\n\n &.featured {\n grid-column: 1 / -1;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n background: linear-gradient(135deg,\n rgba(40, 43, 52, .8),\n rgba(50, 53, 62, .8)\n );\n\n &::before {\n opacity: 1;\n }\n\n & > .card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25),\n rgba(118, 168, 255, .25)\n );\n }\n }\n\n & > .card-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n\n border-radius: 12px;\n margin-bottom: 16px;\n\n transition: transform .3s ease;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .15);\n\n & > i {\n font-size: 24px;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 168, 255, 1)\n );\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n }\n\n & > h2 {\n margin: 0 0 12px 0;\n\n font-size: 1.35em;\n font-weight: 700;\n letter-spacing: -0.02em;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .95);\n }\n\n & > p {\n margin: 0 0 16px 0;\n\n font-size: .95em;\n line-height: 1.6em;\n\n /* Theme dependent */\n color: rgba(118, 168, 255, .9);\n }\n\n & > ul {\n margin: 0;\n padding-left: 24px;\n\n font-size: .9em;\n line-height: 1.7em;\n\n /* Theme dependent */\n color: rgba(229, 229, 229, .9);\n\n & > li {\n margin-bottom: 8px;\n padding-left: 4px;\n\n &::marker {\n /* Theme dependent */\n color: rgba(102, 126, 234, .8);\n }\n\n &:last-child {\n margin-bottom: 0;\n }\n\n & > strong {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n }\n\n & > code {\n border-radius: 4px;\n padding: 2px 6px;\n\n font-family: 'Courier New', monospace;\n font-size: .9em;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .15);\n color: rgba(118, 168, 255, 1);\n }\n\n & > ul {\n margin-top: 6px;\n padding-left: 20px;\n\n & > li {\n font-size: .95em;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .85);\n }\n }\n }\n }\n }\n }\n }\n }\n\n .about-content {\n display: flex;\n flex-direction: column;\n gap: 0;\n\n border: 1px solid;\n\n border-radius: 16px;\n padding: 0;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .25);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .4),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n background: linear-gradient(135deg,\n rgba(30, 33, 42, .95),\n rgba(25, 28, 36, .9)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n & > .about-version {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n\n padding: 32px;\n\n font-size: 1.3em;\n font-weight: 700;\n letter-spacing: .5px;\n\n /* Theme dependent */\n box-shadow: 0 4px 20px rgba(143, 163, 255, .25),\n inset 0 1px 0 rgba(255, 255, 255, .15),\n inset 0 -1px 0 rgba(0, 0, 0, .3);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .25),\n rgba(118, 75, 162, .2)\n );\n\n & > .fa {\n font-size: 1.5em;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n filter: drop-shadow(0 2px 8px rgba(143, 163, 255, .6));\n }\n }\n\n & > .about-tagline {\n padding: 24px 32px;\n\n text-align: center;\n\n /* Theme dependent */\n border-bottom: 1px solid rgba(255, 255, 255, .08);\n\n & > p {\n margin: 0;\n\n font-size: 1.05em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(180, 185, 200, 1);\n }\n }\n\n & > .about-links {\n display: flex;\n flex-direction: column;\n gap: 0;\n\n padding: 16px;\n\n & > .link-card {\n display: flex;\n align-items: center;\n gap: 16px;\n\n border: 1px solid;\n border-radius: 12px;\n margin-bottom: 12px;\n padding: 16px 20px;\n\n text-decoration: none;\n\n transition:\n border-color .3s ease,\n box-shadow .3s ease,\n background .3s ease,\n transform .3s ease,\n border-left-color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n border-left: 3px solid rgba(143, 163, 255, .35);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, .06),\n rgba(40, 43, 52, .6) 40%\n );\n\n &:last-child {\n margin-bottom: 0;\n }\n\n &:hover {\n transform: translateX(6px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .5);\n border-left-color: rgba(143, 163, 255, .8);\n box-shadow: 0 6px 24px rgba(143, 163, 255, .2),\n 0 2px 12px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(255, 255, 255, .1);\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, .15),\n rgba(118, 75, 162, .08) 50%\n );\n\n & > .link-card-icon {\n transform: scale(1.1);\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .25);\n }\n\n & > .link-card-arrow {\n transform: translateX(4px);\n\n opacity: 1;\n }\n }\n\n & > .link-card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n\n border-radius: 10px;\n\n font-size: 1.3em;\n\n transition:\n transform .3s ease,\n background .3s ease;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .15);\n\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .link-card-content {\n flex: 1;\n text-align: left;\n\n & > .link-card-title {\n margin-bottom: 4px;\n\n font-size: 1em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n }\n\n & > .link-card-desc {\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(160, 160, 160, 1);\n }\n }\n\n & > .link-card-arrow {\n font-size: 1.2em;\n\n opacity: .5;\n\n transition:\n transform .3s ease,\n opacity .3s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > .about-footer {\n padding: 0;\n\n & > .footer-divider {\n height: 1px;\n\n margin: 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(143, 163, 255, .3) 20%,\n rgba(143, 163, 255, .3) 80%,\n transparent\n );\n }\n\n & > .about-credits {\n padding: 24px;\n\n & > div {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(max(280px, calc(50% - 6px)), 1fr));\n gap: 12px;\n\n &:not(:last-child) {\n margin-bottom: 12px;\n }\n\n & > .credit-card {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 14px;\n\n border: 1px solid;\n border-radius: 14px;\n padding: 14px 16px;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n border-top: 2px solid rgba(143, 163, 255, .18);\n\n background: linear-gradient(180deg,\n rgba(143, 163, 255, .06),\n rgba(40, 43, 52, .4) 30%\n );\n\n &:hover {\n transform: translateY(-3px) scale(1.01);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .3);\n border-top-color: rgba(143, 163, 255, .5);\n box-shadow: 0 6px 20px rgba(143, 163, 255, .18),\n 0 2px 8px rgba(0, 0, 0, .25);\n\n background: linear-gradient(180deg,\n rgba(143, 163, 255, .1),\n rgba(40, 43, 52, .6) 40%\n );\n }\n\n & > .credit-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 42px;\n height: 42px;\n\n border-radius: 50%;\n\n font-size: 1.1em;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .15)\n );\n\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .credit-info {\n flex: 1;\n min-width: 0;\n text-align: left;\n\n & > .credit-name {\n position: relative;\n overflow: hidden;\n\n margin-bottom: 2px;\n\n font-size: .95em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n\n & > span {\n display: inline-block;\n white-space: nowrap;\n }\n }\n\n & > .credit-role {\n font-size: .8em;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n /* Theme dependent */\n color: rgba(160, 160, 160, 1);\n }\n }\n\n &:hover {\n & > .credit-info {\n & > .credit-name > span {\n animation: scroll-text 3s linear infinite;\n }\n }\n }\n }\n\n & > .copyright-card {\n cursor: pointer;\n\n display: flex;\n flex-direction: column;\n gap: 4px;\n flex: 1;\n\n border: 1px solid;\n border-radius: 12px;\n padding: 16px;\n\n text-align: center;\n overflow: hidden;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .04);\n\n background: rgba(35, 38, 46, .3);\n\n & > .copyright-title {\n margin-bottom: 2px;\n\n font-size: .9em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n\n & > .copyright-desc {\n font-size: .75em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(140, 140, 140, 1);\n }\n }\n }\n }\n }\n }\n\n &#ollama-server-url {\n & > .connection-status-container {\n border: 1px solid;\n\n margin-top: 10px;\n\n transition: border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n &:has(#settings-ollama-connection-status:empty) {\n display: none;\n }\n\n &.testing {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .7);\n box-shadow: 0 2px 8px rgba(255, 193, 7, .4);\n\n background: rgba(255, 193, 7, .1);\n }\n &.connected {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .7);\n box-shadow: 0 2px 8px rgba(76, 175, 80, .4);\n\n background: rgba(76, 175, 80, .1);\n }\n &.failed {\n /* Theme dependent */\n border-color: rgba(211, 47, 47, .7);\n box-shadow: 0 2px 8px rgba(211, 47, 47, .4);\n\n background: rgba(211, 47, 47, .1);\n }\n\n & > #settings-connection-status {\n font-size: .9em;\n }\n }\n }\n\n &#ollama-model-select {\n .models-container {\n border: 1px solid;\n\n margin-top: 10px;\n\n text-align: center;\n\n transition: border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n &.searching {\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .7);\n box-shadow: 0 2px 8px rgba(143, 163, 255, .4);\n\n background: rgba(143, 163, 255, .1);\n }\n &.none {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .7);\n box-shadow: 0 2px 8px rgba(255, 193, 7, .4);\n\n background: rgba(255, 193, 7, .1);\n }\n &.error {\n /* Theme dependent */\n border-color: rgba(211, 47, 47, .7);\n box-shadow: 0 2px 8px rgba(211, 47, 47, .4);\n\n background: rgba(211, 47, 47, .1);\n }\n\n & > p {\n font-size: .9em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n & > #settings-ollama-models {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 8px;\n\n &:not(:empty) {\n margin-top: 8px;\n }\n\n & > .model {\n cursor: pointer;\n\n border: 2px solid;\n\n border-radius: 8px;\n padding: 12px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, 1);\n box-shadow: 0 4px 12px rgba(20, 20, 30, .4);\n\n background: rgba(50, 54, 66, .9);\n }\n\n &.selected {\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 0 15px rgba(143, 163, 255, .5);\n\n background: rgba(143, 163, 255, .1);\n\n & > .model-top {\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > .model-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n\n & > .fa {\n /* Theme dependent */\n color: rgba(128, 128, 128, .5);\n }\n\n & > .model-name {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .pseudo-indicator {\n pointer-events: none;\n\n opacity: 0;\n }\n }\n\n & > .model-bottom {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n }\n }\n }\n\n &#ollama-setup {\n & > .settings-section-title {\n /* Theme dependent */\n color: rgba(255, 54, 34, 1);\n }\n & > .settings-section-desc {\n border-left: 4px solid;\n\n border-radius: 6px;\n padding: 10px;\n\n /* Theme dependent */\n border-left-color: rgba(255, 193, 7, 1);\n\n background: rgba(255, 193, 7, .125);\n\n color: rgba(225, 225, 225, 1);\n }\n }\n\n &.save {\n & > .save-settings-header {\n margin-bottom: 16px;\n }\n\n & > .save-settings-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .save-settings-card {\n border: 1px solid;\n border-radius: 12px;\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(40, 43, 52, .5);\n box-shadow: 0 2px 12px rgba(0, 0, 0, .2);\n\n transition: border-color .3s ease, box-shadow .3s ease;\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3);\n }\n\n & > .card-header {\n display: flex;\n align-items: center;\n gap: 12px;\n\n padding: 14px 16px;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(50, 54, 66, .6),\n rgba(40, 43, 52, .6)\n );\n border-bottom: 1px solid rgba(255, 255, 255, .06);\n\n & > .card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n\n border-radius: 10px;\n\n font-size: 1.25em;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .2)\n );\n color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 12px rgba(143, 163, 255, .15);\n }\n\n & > .card-header-content {\n flex: 1;\n\n & > .card-title {\n font-size: 1.1em;\n font-weight: 700;\n margin-bottom: 2px;\n\n /* Theme dependent */\n color: rgba(232, 232, 232, 1);\n }\n\n & > .card-desc {\n font-size: .9em;\n line-height: 1.5;\n\n /* Theme dependent */\n color: rgba(187, 187, 187, 1);\n }\n }\n\n & > .card-toggle {\n flex-shrink: 0;\n }\n }\n\n & > .card-body {\n padding: 12px;\n\n & > .action-buttons-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 10px;\n\n & > .action-card {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(46, 52, 66, .6);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .15);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 8px 24px rgba(0, 0, 0, .25);\n background: rgba(56, 62, 76, .7);\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n box-shadow: 0 2px 8px rgba(0, 0, 0, .15);\n }\n\n & > .action-card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n\n border-radius: 8px;\n\n font-size: 1.15em;\n flex-shrink: 0;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n }\n\n & > .action-card-content {\n flex: 1;\n\n & > .action-card-title {\n font-size: .95em;\n font-weight: 600;\n margin-bottom: 1px;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .action-card-desc {\n font-size: .85em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n &.export-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .2),\n rgba(56, 142, 60, .2)\n );\n color: rgba(76, 175, 80, 1);\n }\n }\n\n &.import-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .2)\n );\n color: rgba(143, 163, 255, 1);\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .5);\n background: rgba(76, 175, 80, .1);\n\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .3),\n rgba(56, 142, 60, .3)\n );\n color: rgba(76, 175, 80, 1);\n }\n }\n }\n\n &.reset-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(211, 47, 47, .2),\n rgba(183, 28, 28, .2)\n );\n color: rgba(211, 47, 47, 1);\n }\n }\n }\n }\n\n & > .status-message {\n border-radius: 10px;\n margin-top: 12px;\n padding: 12px 14px;\n\n animation: scale-in .3s ease;\n\n &.hidden {\n display: none;\n }\n\n & > .status-content {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n\n & > .status-icon {\n font-size: 1.25em;\n flex-shrink: 0;\n margin-top: 1px;\n }\n\n & > .status-text {\n flex: 1;\n\n & > .status-title {\n font-size: .95em;\n font-weight: 700;\n margin-bottom: 2px;\n\n /* Theme dependent */\n color: rgba(240, 240, 240, 1);\n }\n\n & > .status-desc {\n font-size: .9em;\n line-height: 1.5;\n\n /* Theme dependent */\n color: rgba(210, 210, 210, 1);\n }\n }\n }\n\n &.success {\n /* Theme dependent */\n border: 1px solid rgba(76, 175, 80, .4);\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .15),\n rgba(56, 142, 60, .1)\n );\n box-shadow: 0 4px 16px rgba(76, 175, 80, .2);\n\n & > .status-content > .status-icon {\n color: rgba(76, 175, 80, 1);\n }\n }\n\n &.error {\n /* Theme dependent */\n border: 1px solid rgba(211, 47, 47, .4);\n background: linear-gradient(135deg,\n rgba(211, 47, 47, .15),\n rgba(183, 28, 28, .1)\n );\n box-shadow: 0 4px 16px rgba(211, 47, 47, .2);\n\n & > .status-content > .status-icon {\n color: rgba(211, 47, 47, 1);\n }\n }\n\n &.info {\n /* Theme dependent */\n border: 1px solid rgba(255, 193, 7, .4);\n background: linear-gradient(135deg,\n rgba(255, 193, 7, .15),\n rgba(255, 152, 0, .1)\n );\n box-shadow: 0 4px 16px rgba(255, 193, 7, .2);\n\n & > .status-content > .status-icon {\n color: rgba(255, 193, 7, 1);\n }\n }\n }\n\n & > .import-textarea {\n width: 100%;\n min-height: 140px;\n\n border: 2px solid;\n\n border-radius: 10px;\n margin-top: 12px;\n padding: 12px 14px;\n\n font-family: 'Courier New', Consolas, monospace;\n font-size: .88em;\n line-height: 1.6;\n\n resize: vertical;\n\n animation: scale-in .3s ease;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .3);\n background: rgba(20, 23, 32, .8);\n color: rgba(220, 220, 220, 1);\n box-shadow: inset 0 2px 8px rgba(0, 0, 0, .3);\n\n &:focus {\n outline: none;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .6);\n box-shadow: inset 0 2px 8px rgba(0, 0, 0, .3),\n 0 0 0 3px rgba(143, 163, 255, .15);\n }\n\n &.hidden {\n display: none;\n }\n\n &::placeholder {\n /* Theme dependent */\n color: rgba(130, 130, 130, 1);\n }\n }\n }\n }\n }\n }\n\n .list-container {\n & > div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n border: 1px solid;\n\n border-radius: 8px;\n margin-bottom: 8px;\n padding: 8px;\n padding-left: 15px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n &.empty {\n padding: 20px;\n\n text-align: center;\n\n opacity: .6;\n }\n\n & > div {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n a > {\n font-weight: 600;\n word-break: break-all;\n }\n\n & > span {\n font-size: .85em;\n\n opacity: .7;\n }\n\n & > .add-action-button {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n\n border-radius: 6px;\n\n font-size: 1em;\n\n transition: background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n\n &:hover {\n /* Theme dependent */\n background: rgba(102, 126, 234, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n &:active {\n /* Theme dependent */\n background: rgba(102, 126, 234, .3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n }\n\n &.remove-button {\n /* Theme dependent */\n background: rgba(211, 47, 47, .1);\n\n &:hover {\n /* Theme dependent */\n background: rgba(211, 47, 47, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n &:active {\n /* Theme dependent */\n background: rgba(211, 47, 47, .3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n }\n }\n }\n }\n }\n }\n\n .settings-compact-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 18px;\n\n margin-bottom: 25px;\n }\n\n .draggable-order-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n &.is-dragging .draggable-order-item {\n pointer-events: none;\n\n &:hover {\n transform: none;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: none;\n\n background: rgba(40, 43, 52, .8);\n\n &::before {\n opacity: .5;\n\n color: inherit;\n }\n }\n }\n\n & > .draggable-order-item-wrapper {\n position: relative;\n\n transition: transform .2s cubic-bezier(0.2, 0, 0, 1);\n\n &.dragging {\n z-index: 4;\n\n &::after {\n content: '';\n\n width: 100%;\n height: 100%;\n\n border: 2px dashed;\n\n border-radius: 10px;\n\n position: absolute;\n top: 0;\n left: 0;\n\n pointer-events: none;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .8);\n box-shadow: 0 0 20px rgba(102, 126, 234, .4),\n inset 0 0 20px rgba(102, 126, 234, .15);\n\n background: rgba(102, 126, 234, .1);\n }\n\n & > .draggable-order-item {\n visibility: hidden;\n }\n }\n }\n\n .draggable-order-item {\n cursor: grab;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 14px;\n\n border: 1px solid;\n\n border-radius: 10px;\n padding: 14px 18px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .8);\n\n &::before {\n content: '\\f0c9';\n\n font-family: 'Font Awesome 6 Free';\n font-size: .9em;\n font-weight: 900;\n\n opacity: .5;\n\n transition: opacity .2s ease,\n color .2s ease;\n }\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 6px 24px rgba(0, 0, 0, .4);\n\n background: rgba(50, 54, 66, .9);\n\n &::before {\n opacity: .8;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n &:active {\n cursor: grabbing;\n\n transform: scale(1.02);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .6);\n box-shadow: 0 8px 32px rgba(102, 126, 234, .3);\n\n background: rgba(60, 65, 80, .95);\n }\n\n &.disabled {\n opacity: .5;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .05);\n\n background: rgba(30, 32, 38, .6);\n\n & > .draggable-order-item-name {\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .draggable-order-item-toggle {\n /* Theme dependent */\n background: rgba(80, 80, 80, .5);\n\n &::before {\n transform: translateX(0);\n\n /* Theme dependent */\n background: rgba(120, 120, 120, 1);\n }\n }\n\n &:hover {\n opacity: .7;\n\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n }\n }\n\n & > .draggable-order-item-name {\n flex: 1;\n\n font-size: .95em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(230, 230, 230, 1);\n }\n\n & > .draggable-order-item-toggle {\n cursor: pointer;\n\n flex-shrink: 0;\n width: 44px;\n height: 24px;\n\n border-radius: 100vh;\n\n position: relative;\n\n transition: background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .8),\n rgba(118, 75, 162, .8)\n );\n box-shadow: 0 2px 8px rgba(102, 126, 234, .3);\n\n &::before {\n content: '';\n\n width: 18px;\n height: 18px;\n\n border-radius: 50%;\n\n position: absolute;\n top: 3px;\n left: 3px;\n\n transform: translateX(20px);\n\n transition: transform .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, 1);\n box-shadow: 0 2px 4px rgba(0, 0, 0, .2);\n }\n\n &:hover {\n /* Theme dependent */\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5);\n }\n }\n }\n }\n }\n }\n }\n }\n\n select, input:not([type=range]), textarea, button {\n border: 1px solid transparent;\n\n border-radius: 8px;\n padding: 8px 12px;\n\n font-family: inherit;\n font-size: inherit;\n color: var(--color, inherit);\n\n transition: border .2s ease,\n background .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 8px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .3), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), .9);\n\n &:hover {\n /* Theme dependent */\n box-shadow: 0 4px 12px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .4), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), 1);\n }\n &:not(input, textarea):active {\n /* Theme dependent */\n box-shadow: 0 1px 4px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .2), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), .95);\n }\n\n &[type=number] {\n -moz-appearance: textfield;\n appearance: textfield;\n\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n appearance: none;\n\n margin: 0;\n }\n }\n }\n\n button {\n cursor: pointer !important;\n\n &:hover {\n transform: translateY(-2px);\n }\n &:active {\n transform: translateY(0);\n }\n }\n\n duration-input {\n display: flex;\n flex-direction: column;\n gap: 12px;\n width: 100%;\n\n border: 1px solid;\n border-radius: 12px;\n padding: 16px;\n\n font-family: inherit;\n font-size: .9em;\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n background: rgba(40, 43, 52, .7);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n background: rgba(40, 43, 52, .85);\n }\n\n & > .infinity-label {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 10px 14px;\n\n font-weight: 500;\n font-size: .95em;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(220, 220, 220, 1);\n background: rgba(35, 38, 48, .6);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .2);\n\n &::after {\n content: '\\f00c';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n\n position: absolute;\n top: 50%;\n right: 12px;\n\n font-size: 13px;\n line-height: 1;\n\n opacity: 0;\n transform: translateY(-50%) scale(0);\n\n transition: all .2s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n & > span {\n flex: 1;\n letter-spacing: .3px;\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n background: rgba(45, 48, 58, .8);\n box-shadow: 0 3px 10px rgba(0, 0, 0, .3);\n }\n\n &.selected {\n border-color: rgba(102, 126, 234, .5);\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .2) 0%,\n rgba(118, 75, 162, .2) 100%\n );\n box-shadow: 0 3px 12px rgba(102, 126, 234, .25),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n &::after {\n opacity: 1;\n transform: translateY(-50%) scale(1);\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .6);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25) 0%,\n rgba(118, 75, 162, .25) 100%\n );\n box-shadow: 0 4px 16px rgba(102, 126, 234, .35),\n inset 0 1px 0 rgba(255, 255, 255, .1);\n }\n }\n }\n\n & > .duration-inputs {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 10px;\n\n opacity: 1;\n transform: scale(1);\n\n transition: opacity .2s ease,\n transform .2s cubic-bezier(.4, 0, .2, 1);\n\n & > label {\n display: flex;\n flex-direction: column;\n gap: 6px;\n\n & > span {\n font-size: .75em;\n font-weight: 600;\n letter-spacing: .5px;\n text-align: center;\n text-transform: uppercase;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .85);\n }\n\n & > input {\n cursor: text;\n\n width: 100%;\n\n border: 1px solid;\n border-radius: 6px;\n padding: 8px 10px;\n\n font-family: 'Segoe UI', system-ui, sans-serif;\n font-size: .95em;\n font-weight: 500;\n text-align: center;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(230, 230, 230, 1);\n background: rgba(30, 33, 42, .9);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .2),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n\n &::placeholder {\n color: rgba(150, 154, 170, .6);\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n background: rgba(35, 38, 48, 1);\n box-shadow: 0 3px 8px rgba(0, 0, 0, .25),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n }\n\n &:focus {\n outline: none;\n border-color: rgba(102, 126, 234, .6);\n background: rgba(40, 43, 52, 1);\n box-shadow: 0 0 0 2px rgba(102, 126, 234, .2),\n 0 2px 10px rgba(102, 126, 234, .15),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n }\n\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n }\n }\n\n &:has(.infinity-label.selected) > .duration-inputs {\n opacity: .4;\n transform: scale(.98);\n pointer-events: none;\n }\n }\n\n #reset-statistics-button {\n float: right;\n\n font-size: 1rem;\n\n /* Theme dependent */\n --background: 211, 51, 51;\n }\n\n #settings-ollama-refresh-models {\n float: right;\n\n font-size: 1rem;\n }\n }\n\n .ws-username-highlight {\n position: relative;\n\n &::before {\n content: \"\";\n\n pointer-events: none;\n\n position: absolute;\n inset: 0;\n\n border-radius: 10px;\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n }\n }\n\n &.mobile {\n #queue {\n display: none !important;\n }\n\n #right-details {\n display: none !important;\n }\n\n #right-container {\n width: 100% !important;\n\n #main-container {\n width: 100% !important;\n }\n }\n }\n}\n\n@container (max-width: 300px) {\n #DEFCON {\n padding: 8px 14px !important;\n\n & > span {\n display: none;\n }\n }\n}\n\n@container (max-width: 225px) {\n #DEFCON {\n display: none !important;\n }\n}"},4192(e,t){function n(){return crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}Object.defineProperty(t,"__esModule",{value:!0}),t.generateRandomUUID=function(){return 0===s.length?n():s.pop()};const s=[];"function"==typeof requestIdleCallback&&requestIdleCallback(function e(){s.length<256&&s.push(n()),requestIdleCallback(e)})},4041(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.CreateDOMElement=function(e,t={}){const n=document.createElement(e);"id"in t&&(n.id=t.id);"class"in t&&(n.className=t.class);"text"in t&&(n.textContent=t.text);"html"in t&&(n.innerHTML=t.html);"content"in t&&n.append(t.content);"value"in t&&(n.value=t.value);if("attributes"in t)for(const[e,s]of Object.entries(t.attributes||{}))n.setAttribute(e,s);if("dataset"in t)for(const[e,s]of Object.entries(t.dataset||{}))n.dataset[e]=s;if("style"in t)for(const[e,s]of Object.entries(t.style||{}))n.style.setProperty(e,s);return n}},5643(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.fullTrim=void 0;t.fullTrim=e=>{const t=e.split("\n"),n=t.length;let s=!0,i=1/0,a=[],r=[];for(let e=0;e<n;e++){const n=t[e];if(""===n.trim()){if(s)continue;a.push("")}else{s?s=!1:(r=r.concat(a),a=[]);const e=n.match(/^(\s*)/)[0].length;i=Math.min(i,e),r.push(n)}}const o=r.length;if(0===o)return"";const l=[];for(let e=0;e<o;e++){const t=r[e].trimEnd();""===t?l.push(""):l.push(t.slice(i))}return l.join("\n")}},2852(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Memory=void 0;t.Memory=class{constructor(e={}){this.order=[],this.store=new Map,this.timeouts=new Map,"timeout"in e&&(this.timeout=e.timeout),"size"in e&&(this.maxSize=e.size)}clear(){this.order=[],this.store.clear(),this.timeouts.clear()}has(e){return this.store.has(e)}get(e){return this.store.get(e)}set(e,t){const n=this.order.indexOf(e);-1!==n&&this.order.splice(n,1),this.order.push(e),this.store.set(e,t),this.timeouts.has(e)&&clearTimeout(this.timeouts.get(e)),void 0!==this.timeout&&this.timeouts.set(e,setTimeout(()=>{this.delete(e)},this.timeout)),void 0!==this.maxSize&&this.store.size>this.maxSize&&this.delete(this.order.shift())}add(e){this.store.has(e)||this.set(e,!0)}delete(e){const t=this.order.indexOf(e);-1!==t&&this.order.splice(t,1),this.store.delete(e),clearTimeout(this.timeouts.get(e)),this.timeouts.delete(e)}size(){return this.store.size}}},2595(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Stack=void 0;t.Stack=class{constructor(e=50){this.items=[],this.maxSize=e}push(e){this.items.push(e),this.items.length>this.maxSize&&this.items.shift()}pop(){return this.items.pop()}unshift(e){this.items.unshift(e),this.items.length>this.maxSize&&this.items.pop()}shift(){return this.items.shift()}peek(){return this.items[this.items.length-1]}clear(){this.items=[]}get length(){return this.items.length}set length(e){this.items.length=Math.min(e,this.maxSize)}}},6873(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Trie=void 0;var s=n(4192);function i(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function a(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var r=new WeakSet;function o(e){var t;this.timeouts.has(e)&&clearTimeout(this.timeouts.get(e)),this.timeouts.delete(e);const n=this.order[e];delete this.order[e];const s=[{children:this.store}];let i=this.store;for(const e of n){const t=i.get(e);s.push(t),i=t.children}const a=s.pop();if(a.defined=!1,delete a.value,!((null===(t=a.children)||void 0===t?void 0:t.size)>0))for(let e=s.length-1;e>=0;e--){const t=s[e],i=n.pop();if(t.children.delete(i),t.children.size>0||t.defined)break;t.terminal=!0,delete t.children}}t.Trie=class{constructor(e={}){i(this,r),this.order={},this.store=new Map,this.timeouts=new Map,"timeout"in e&&(this.timeout=e.timeout),"size"in e&&(this.maxSize=e.size)}clear(){this.order={},this.store.clear(),this.timeouts.clear()}has(...e){var t;const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return!1;const e=s.get(t);if(e.terminal)return!1;s=e.children}return!0===(null===(t=s.get(n))||void 0===t?void 0:t.defined)}get(...e){var t;const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.value}set(...e){var t;const n=e.pop();let i=((e,t)=>{const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.UUID})(e);delete this.order[i],void 0===i&&(i=(0,s.generateRandomUUID)());const l=e.pop();let d=this.store;for(const t of e)if(d.has(t)){var c;const e=d.get(t);e.terminal=!1,null!==(c=e.children)&&void 0!==c||(e.children=new Map),d=e.children}else{const e={defined:!1,terminal:!1,children:new Map};d.set(t,e),d=e.children}const u=null!==(t=d.get(l))&&void 0!==t?t:{terminal:!0};u.UUID=i,u.defined=!0,u.value=n,d.set(l,u),this.order[i]=e.concat([l]),this.timeouts.has(i)&&clearTimeout(this.timeouts.get(i)),void 0!==this.timeout&&this.timeouts.set(i,setTimeout(()=>{a(r,this,o).call(this,i)},this.timeout)),void 0!==this.maxSize&&Object.keys(this.order).length>this.maxSize&&a(r,this,o).call(this,this.order.shift())}add(e){this.store.has(e)||this.set(e,!0)}delete(...e){const t=((e,t)=>{const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.UUID})(e);void 0!==t&&a(r,this,o).call(this,t)}size(){return Object.keys(this.order).length}}},4551(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.truncate=function(e,t){return e.length>t?`${e.substring(0,t-3).trimEnd()}...`:e}},1289(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.convertToUTCString=void 0;t.convertToUTCString=e=>`${e.getUTCFullYear().toString().padStart(4,"0")}-${(e.getUTCMonth()+1).toString().padStart(2,"0")}-${e.getUTCDate().toString().padStart(2,"0")}T${e.getUTCHours().toString().padStart(2,"0")}:${e.getUTCMinutes().toString().padStart(2,"0")}:${e.getUTCSeconds().toString().padStart(2,"0")}`},8678(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Ollama=t.AI=void 0;var s=n(4018),i=n(5643);function a(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function r(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=new WeakSet;class l{static registerProvider(e,t){l.providers[e]=t}setup(e,t){if(this.analysis[e].has(t.id)){const n=this.analysis[e].get(t.id);return n.count++,n.request}const n=new AbortController,s=this.fetch(e,t,n.signal);return this.analysis[e].set(t.id,{request:s,abortController:n,count:1}),s.finally(()=>{this.analysis[e].delete(t.id)}),s}async fetch(e,t,n){return{error:"No service has been selected"}}constructor(e,t){a(this,o),r(this,"analysis",{edit:new Map,username:new Map}),r(this,"cache",{username:new Set}),r(this,"analyze",{edit:e=>this.setup("edit",e),username:e=>this.cache.username.has(e.user.name)?Promise.resolve({flag:!1,confidence:1,issues:[],explanation:"Username previously analyzed."}):(this.cache.username.add(e.user.name),this.setup("username",e))}),r(this,"cancel",{all:(e=!0)=>{if(!0===e)for(const e of Object.keys(this.analysis))for(const n of null===(t=this.analysis[e])||void 0===t?void 0:t.keys()){var t;this.cancel[e](n)}else for(const t of null===(n=this.analysis[e])||void 0===n?void 0:n.keys()){var n;this.cancel[e](t)}},edit:e=>{const t=this.analysis.edit.get(e);t&&(t.count--,t.count<=0&&(t.abortController.abort("Edit analysis canceled by user"),this.analysis.edit.delete(e)))},username:e=>{const t=this.analysis.username.get(e);t&&(t.count--,t.count<=0&&(t.abortController.abort("Username analysis canceled by user"),this.analysis.username.delete(e)))}}),r(this,"prompt",{edit:async e=>{var t,n;const a=function(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}(o,this,d).call(this,e.diff),r=null!==(t=s.namespaces.find(t=>t.id===e.ns))&&void 0!==t?t:s.namespaces[0];let l="registered";e.user.temp?l="temporary (unregistered)":e.user.ip&&(l="IP (unregistered)");const c=e.page.categories.join(", ")||"(none)",u=e.page.categories.some(e=>/living people/i.test(e));return(0,i.fullTrim)(`\nYou are an automated Wikipedia item reviewer. Analyze the following item and determine whether the CHANGES INTRODUCED violate Wikipedia policy.\n\nCRITICAL: You are evaluating what this item CHANGED, not the page content before it. The diff shows removed lines (prefixed "-") and added lines (prefixed "+"). Only ADDED content can be a new violation. Removing bad content is a GOOD item. Adding references, citations, and sources is GOOD — it improves verifiability, not the opposite.\n\nitem CONTEXT:\n- Page: "${e.page.title}" (${r.name} namespace)\n- Categories: ${c}${u?"\n- ⚠ BLP: This page is about a living person. Unsourced negative claims are a serious concern.":""}\n- User: "${e.user.name}" (${l}, warning level: ${e.user.warning}/4)\n- ORES vandalism probability: ${(100*e.ores).toFixed(0)}%\n- Size change: ${e.sizediff>0?"+":""}${e.sizediff} bytes\n- Flagged minor: ${e.minor?"yes":"no"}\n- Summary: ${e.comment||"(empty)"}\n- Tags: ${(null===(n=e.tags)||void 0===n?void 0:n.join(", "))||"(none)"}\n\nWHAT TO CHECK:\n1. VANDALISM: Does the item add nonsense, profanity as attacks, hoaxes, blanking, or deliberate misinformation? (WP:VANDALISM)\n2. NPOV: Does the item add clearly biased or one-sided language that is not presented neutrally? (WP:NPOV)\n3. VERIFIABILITY: Does the item add claims that are extraordinary or contentious WITHOUT any sourcing? Note: adding "<ref>" tags, URLs, or citation templates is adding sources — this is the OPPOSITE of a verifiability problem. (WP:V)\n4. ORIGINAL RESEARCH: Does the item add novel analysis, synthesis, or unpublished interpretation not attributable to any source? Simply adding text IS NOT original research if it restates commonly known facts or is sourced. Adding citations is NEVER original research. (WP:NOR)\n5. BLP: If this is a BLP article, does the item add unsourced or poorly-sourced negative material about the subject? (WP:BLP)\n\nWHAT IS NOT A VIOLATION:\n- Adding references, citations, "<ref>" tags, or URLs (this IMPROVES the article)\n- Removing vandalism or bad content\n- Fixing grammar, spelling, formatting, or wikilinks\n- Content about controversial topics written in a neutral, encyclopedic tone\n- Wikipedia is NOT censored — explicit content on appropriate pages is allowed (WP:NOTCENSORED)\n- Absent or auto-generated item summaries (e.g. "/* Section name */") are normal, not violations\n- ORES scores and warning levels are hints — do NOT treat them as evidence by themselves\n\nASSESSMENT SCALE:\n- "Good": No policy issues. Normal constructive item.\n- "Review": Minor concerns; a human should glance at it.\n- "Suspicious": Likely problematic; warrants close scrutiny.\n- "Bad": Clear policy violation.\n\nWhen in doubt between two ratings, choose the LESS severe one. Most items on Wikipedia are constructive — reflect that in your assessments.\n\nFor issues, use short policy codes (e.g. "WP:VANDALISM", "WP:NPOV", "WP:BLP"). Keep your explanation to 1-3 sentences.\n\nFORMATTING: Write your explanation as inline HTML with properly opened AND closed tags. Never use self-closing tags like <code/> or <b/> — always use an opening and closing pair.\nExample: <b>Clear vandalism</b> — added <code>lol hacked</code> which violates <i>WP:VANDALISM</i>.\nAllowed tags: <b>...</b>, <i>...</i>, <code>...</code>. No markdown, no block tags.\n\nDIFF:\n${a}\n`)},username:async e=>{var t;return(0,i.fullTrim)(`\nYou are an automated Wikipedia username policy reviewer. Determine whether the username below violates Wikipedia's username policy.\n\nUSERNAME: ${e.user.name}\nPAGE CONTEXT: ${(null===(t=e.page)||void 0===t?void 0:t.title)||"(unknown)"}\n\nThe page context is provided ONLY to check for potential conflict-of-interest (e.g. a user named "AcmeCorp" iteming the Acme Corporation article). A controversial page topic does NOT make the username problematic.\n\nVIOLATION CATEGORIES (flag ONLY if the username clearly and unambiguously fits one):\n\n1. Offensive — The name is unambiguously profane, threatening, sexually explicit, or promotes vandalism. Merely edgy, weird, or humorous names do NOT qualify. (WP:U#OFFENSIVE)\n2. Disruptive — The name clearly declares intent to disrupt or vandalize (e.g. "I Will Vandalize"). (WP:U#DISRUPTIVE)\n3. Libelous — The name makes a clearly false or disparaging claim about a specific real person, or reveals private personal information. (WP:U#LIBEL)\n4. Misleading — The name impersonates a specific real person, or falsely claims special permissions by including terms like "admin", "sysop", "bureaucrat", "checkuser". (WP:U#MISLEADING)\n5. Promotional — The name is a URL or email address whose clear purpose is advertising or revenue. Containing a brand name alone is NOT enough. (WP:U#PROMO)\n6. Shared — The name unambiguously represents a company, organization, or role rather than an individual (e.g. "XYZ Foundation", "Secretary of ABC"). Names like "JohnAtAcme" or "AcmeFan123" are fine — they clearly identify an individual. (WP:U#SHARED)\n\nDECISION RULES:\n- Flag ONLY clear, unambiguous violations. Borderline = no flag.\n- Numbers at the end of a username (e.g. "itemor2847", "WikiFan99") are completely normal and NOT a violation of any kind.\n- Creative, odd, humorous, or meaningless usernames are NOT violations.\n- Containing a real word that could be offensive in some context is NOT enough — the name must be clearly and intentionally offensive.\n- When in doubt: do NOT flag. Set flag to false.\n- If not flagging, set explanation to "No violation."\n\nFORMATTING: Write your explanation as inline HTML with properly opened AND closed tags. Never use self-closing tags like <code/> or <b/> — always use an opening and closing pair.\nExample: Username contains <code>sysop</code> which falsely implies <i>WP:U#MISLEADING</i> permissions.\nAllowed tags: <b>...</b>, <i>...</i>, <code>...</code>. No markdown, no block tags.\n`)}}),this.ws=e,this.settings=e.store.settings.AI,this.config=t}async test(){return!1}async models(){return[]}}function d(e){var t;const n=document.createElement("div");n.innerHTML=e;const s=[];for(const e of n.querySelectorAll("tr")){const t=e.querySelector(".diff-deletedline"),n=e.querySelector(".diff-addedline"),i=e.querySelector(".diff-context");t&&s.push(`- ${t.textContent.trim()}`),n?s.push(`+ ${n.textContent.trim()}`):i&&s.push(` ${i.textContent.trim()}`)}return s.length>0?s.join("\n"):(null===(t=n.textContent)||void 0===t?void 0:t.trim())||""}t.AI=l,r(l,"providers",{});const c={type:"object",properties:{issues:{type:"array",items:{type:"object",properties:{policy:{type:"string"},severity:{type:"string",enum:["Low","Medium","High","Critical"]}},required:["policy","severity"]}},explanation:{type:"string"},assessment:{type:"string",enum:["Good","Review","Suspicious","Bad"]},confidence:{type:"number",minimum:0,maximum:1}},required:["assessment","confidence","issues","explanation"]},u={type:"object",properties:{issues:{type:"array",items:{type:"object",properties:{policy:{type:"string",enum:["Offensive","Disruptive","Libelous","Misleading","Promotional","Shared"]},severity:{type:"string",enum:["Low","Medium","High","Critical"]}},required:["policy","severity"]}},explanation:{type:"string"},flag:{type:"boolean"},confidence:{type:"number",minimum:0,maximum:1}},required:["flag","confidence","issues","explanation"]};class p extends l{async test(){try{return(await fetch(`${this.config.server}/api/version`,{method:"GET"})).ok}catch(e){return!1}}async models(){try{const e=await fetch(`${this.config.server}/api/tags`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!e.ok)throw new Error(`Ollama API error: ${e.status} ${e.statusText}`);return(await e.json()).models||[]}catch(e){throw e}}async fetch(e,t,n=null){try{const s=this.prompt[e](t),i={method:"POST",headers:{"Content-Type":"application/json"}},a={model:this.config.model,prompt:await s,stream:!1,options:{temperature:.1,top_p:.9,num_predict:1024},format:"edit"===e?c:u};let r;i.body=JSON.stringify(a),n&&(i.signal=n);try{if(r=await fetch(`${this.config.server}/api/generate`,i),!r.ok)throw new Error(`Ollama API error: ${r.status} ${r.statusText}`);const e=await r.json();if(!e.response)throw new Error("Empty response from Ollama");return JSON.parse(e.response)}catch(e){return{error:e.message||"Ollama request failed"}}}catch(e){return{error:e.message||"Ollama request failed"}}}}t.Ollama=p,l.registerProvider("Ollama",p)},8169(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.AudioManager=void 0;var s=n(4192),i=n(1258);const a={startup:{type:"sound",title:"Startup Sound",description:"Sound played when WikiShield starts up.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/startup.wav"},music:{type:"category",title:"Music",description:"Background music tracks.",volume:1,properties:{zen_mode:{type:"sound",title:"Zen Mode",description:"Background audio played in Zen mode.",volume:1,data:"custom://zen_mode",preview:!1}}},ui:{type:"category",title:"User Interface Sounds",description:"Sounds used for user interface interactions.",volume:1,properties:{click:{type:"sound",title:"Click Sound",description:"Sound played when clicking on interface elements.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/click.wav"}}},queue:{type:"category",title:"Queue Sounds",description:"Sounds played for queue events.",volume:1,properties:{ores:{type:"sound",title:"ORES Alert",description:"Sound played due to a high ORES score.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/ores.wav"},mention:{type:"sound",title:"Mention Alert",description:"Sound played when your username is mentioned in an edit.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/mention.wav"}}},notification:{type:"category",title:"Notification Sounds",description:"Sounds played for various notifications.",volume:1,properties:{alert:{type:"sound",title:"Alert Sound",description:"Sound played for alerts.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/alert.wav"},message:{type:"sound",title:"Message Sound",description:"Sound played for messages.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/message.wav"},toast:{type:"sound",title:"Toast Sound",description:"Sound played for toast notifications.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/toast.wav"}}},action:{type:"category",title:"Action Sounds",description:"Sounds played for various user actions.",volume:1,properties:{default:{type:"sound",title:"Default Action Sound",description:"Sound played for default actions.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/action.wav"},failed:{type:"sound",title:"Failed Action Sound",description:"Sound played when an action fails.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/failed.wav"},report:{type:"sound",title:"Report Action Sound",description:"Sound played for report actions.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/report.wav"}}}};t.AudioManager=class{constructor(e){this.ws=e,this.audio=a,this.soundEffects=new Map,this.previews=new Map,this.previewing=!1}async init(){this.zengine=new i.Zengine,this.zengine.debug=this.ws.__DEV__,await this.zengine.init(),this.zengine.setMasterVolume(this.ws.store.settings.audio.volume["master.music.zen_mode"])}async playSound(e,t,n=!1,i){if(!n){const e=this.ws.store.settings.zen_mode;if(e.enabled&&!e.sound.enabled)return}const a=this.getSound(e);if(!a||!a.data)return;const r=this.getVolume(e),o=new Audio(a.data);o.volume=!n&&this.previewing?0:r,"mediaSession"in navigator&&(navigator.mediaSession.setActionHandler("play",()=>{}),navigator.mediaSession.setActionHandler("pause",()=>{}),navigator.mediaSession.setActionHandler("previoustrack",()=>{}),navigator.mediaSession.setActionHandler("nexttrack",()=>{}));const l=(0,s.generateRandomUUID)();n&&(this.muteId=l,this.previewing=!0,this.stopPreviews(),this._muteAll(),this.previews.set(o,e)),this.soundEffects.set(o,e);const d=new Promise((e,t)=>{o.resolve=e,o.reject=t});o.onended=()=>{o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))},o.onerror=()=>{o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))};let c=!1;return o.onplay=()=>{c||(c=!0,i&&i())},null==t||t.addEventListener("abort",()=>{o.pause(),o.src="",o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))}),window.ineractedWithPage?await o.play():null==i||i(),d}async previewSound(e){const t=this.getSound(e);if(!t||!t.data)return;this._muteAll();const n=new Audio(t.data);n.volume=this.getVolume(e),this.previews.set(n,e);const s=()=>{this.previews.delete(n),0===this.previews.size&&this._unmuteAll()};n.onended=s,n.onerror=s,window.ineractedWithPage&&await n.play()}stopPreviews(){for(const e of this.previews.keys())e.resolve(),e.pause(),e.onended=null,e.onerror=null,e.src="";this.previews.clear(),this._unmuteAll()}onvolumechanged(){if(this.zengine.setMasterVolume(this.ws.store.settings.audio.volume["master.music.zen_mode"]),this.previewing)for(const[e,t]of this.previews.entries()){const n=this.getVolume(t);e.volume=n}else for(const[e,t]of this.soundEffects.entries()){const n=this.getVolume(t);e.volume=n}}_muteAll(){for(const e of this.soundEffects.keys())e.volume=0}_unmuteAll(){for(const[e,t]of this.soundEffects.entries())e.volume=this.getVolume(t)}getSound(e){let t={type:"category",properties:this.audio};for(const n of e){if("category"!==t.type)return null;if(t=t.properties[n],!t)return null}return t}getVolume(e){const t=this.ws.store.settings.audio.volume;let n=t.master,s={type:"category",properties:this.audio};const i=["master"];for(const a of e){if(i.push(a),"category"!==s.type)return n;if(s=s.properties[a],!s)break;const e=t[i.join(".")];void 0!==e&&(n*=e)}return n}}},1258(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Zengine=void 0;class n{constructor(){this.audioContext=null,this.masterGain=null,this.isPlaying=!1,this.debug=!1,this.layers={bass:{oscillators:[],gains:[],compressor:null},pad:{oscillators:[],gains:[],filter:null,reverb:null}},this.nextChordTimeout=null,this.baseFrequency=65.41,this.currentKey=0,this.chordLibrary={maj7:{bass:[0],pad:[0,7,11,16,19],tension:.1},min7:{bass:[0],pad:[0,7,10,15,19],tension:.15},maj9:{bass:[0],pad:[0,7,11,14,19],tension:.12},min9:{bass:[0],pad:[0,7,10,14,19],tension:.18},sus2:{bass:[0],pad:[0,7,12,14,19],tension:.25},sus4:{bass:[0],pad:[0,7,12,17,19],tension:.28},add9:{bass:[0],pad:[0,7,14,16,21],tension:.15},madd9:{bass:[0],pad:[0,7,14,15,21],tension:.2},openvoice:{bass:[0],pad:[0,7,12,19,24],tension:.08},"6add9":{bass:[0],pad:[0,7,9,14,19],tension:.18}},this.chordCompatibility={maj7:["maj9","min7","sus2","add9","openvoice","6add9"],min7:["maj7","min9","sus4","madd9","openvoice"],maj9:["maj7","add9","sus2","6add9","openvoice"],min9:["min7","madd9","sus2","maj9"],sus2:["maj7","maj9","add9","openvoice","sus4"],sus4:["maj7","sus2","min7","openvoice"],add9:["maj9","sus2","maj7","openvoice","6add9"],madd9:["min9","min7","add9","sus2"],openvoice:["sus2","maj7","add9","maj9"],"6add9":["maj7","maj9","add9","sus2"]},this.currentChordName="maj7",this.currentTension=.1}init(){this.audioContext||(this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.masterGain=this.audioContext.createGain(),this.masterGain.connect(this.audioContext.destination),this.masterGain.gain.value=.2,this.setupLayerEffects())}async start(){this.isPlaying||(this.init(),"suspended"===this.audioContext.state&&await this.audioContext.resume(),this.isPlaying=!0,this.currentKey=Math.floor(12*Math.random()),this.playNextChord())}setupLayerEffects(){const e=this.audioContext.createDynamicsCompressor();e.threshold.value=-30,e.knee.value=40,e.ratio.value=12,e.attack.value=.003,e.release.value=.25,e.connect(this.masterGain),this.layers.bass.compressor=e;const t=this.audioContext.createBiquadFilter();t.type="lowpass",t.frequency.value=1200,t.Q.value=.5;const n=this.audioContext.createDelay(2);n.delayTime.value=.4;const s=this.audioContext.createGain();s.gain.value=.3,t.connect(n),n.connect(s),s.connect(t),t.connect(this.masterGain),this.layers.pad.filter=t,this.layers.pad.reverb={delay:n,gain:s}}playNextChord(){if(!this.isPlaying)return;const e=this.chooseNextChord(),t=this.currentChordName;if(this.currentChordName=e,this.currentTension=this.chordLibrary[e].tension,this.debug&&console.log("[MusicEngine] Chord changed",{from:t,to:e,tension:this.currentTension,key:this.currentKey,timestamp:this.audioContext.currentTime}),Math.random()<.08){const e=this.currentKey;this.currentKey=(this.currentKey+[2,5,7][Math.floor(3*Math.random())])%12,this.debug&&console.log("[MusicEngine] Key changed",{from:e,to:this.currentKey})}this.transitionToChord(e);const n=12e3+1e4*Math.random();this.nextChordTimeout=setTimeout(()=>this.playNextChord(),n)}chooseNextChord(){const e=this.chordCompatibility[this.currentChordName]||Object.keys(this.chordLibrary),t=e.map(e=>({name:e,weight:this.chordLibrary[e].tension<.2?2:1})),n=t.reduce((e,t)=>e+t.weight,0);let s=Math.random()*n;for(const e of t)if(s-=e.weight,s<=0)return e.name;return e[0]}transitionToChord(e){const t=this.chordLibrary[e];if(!t)return;const n=6+3*Math.random();["bass","pad"].forEach(e=>this.createLayer(e,t[e],n))}createLayer(e,t,n){if(null==t||!t.length)return;const s=this.audioContext.currentTime,i=this.layers[e];if(i.gains&&i.gains.length>0){const e=[...i.oscillators],t=[...i.gains];t.forEach(e=>{try{e.gain.cancelScheduledValues(s),e.gain.setValueAtTime(e.gain.value,s),e.gain.linearRampToValueAtTime(0,s+n)}catch(e){}}),setTimeout(()=>{e.forEach(e=>{try{e.stop(),e.disconnect()}catch(e){}}),t.forEach(e=>{try{e.disconnect()}catch(e){}})},1e3*n+100)}const a=[],r=[],o=[];t.forEach((t,l)=>{const d=this.baseFrequency*Math.pow(2,(this.currentKey+t)/12);o.push(d);const c=this.audioContext.createOscillator();c.type="bass"===e?"sine":"triangle",c.frequency.value=d,c.detune.value=6*(Math.random()-.5);const u=this.audioContext.createGain();u.gain.value=0,c.connect(u),"bass"===e&&i.compressor?u.connect(i.compressor):i.filter&&u.connect(i.filter),c.start(s),a.push(c),r.push(u);const p="bass"===e?.15:.08-.01*l;u.gain.setValueAtTime(0,s),u.gain.linearRampToValueAtTime(p,s+n)}),this.debug&&console.log("[MusicEngine] Layer created",{layer:e,frequencies:o,volumes:r.map(e=>e.gain.value),fadeDuration:n}),i.oscillators=a,i.gains=r}stop(){this.isPlaying=!1,this.nextChordTimeout&&clearTimeout(this.nextChordTimeout),this.debug&&console.log("[MusicEngine] Stopping music engine",{timestamp:this.audioContext.currentTime});const e=this.audioContext.currentTime;if(Object.values(this.layers).forEach(t=>{t.gains&&t.gains.forEach(t=>{try{t.gain.setValueAtTime(t.gain.value,e),t.gain.linearRampToValueAtTime(0,e+.5)}catch(e){}}),t.oscillators&&setTimeout(()=>{t.oscillators.forEach(e=>{try{e.stop(),e.disconnect()}catch(e){}}),t.oscillators=[],t.gains&&(t.gains.forEach(e=>{try{e.disconnect()}catch(e){}}),t.gains=[])},550)}),this.masterGain)try{this.masterGain.gain.setValueAtTime(this.masterGain.gain.value,e),this.masterGain.gain.linearRampToValueAtTime(0,e+.5)}catch(e){}}setMasterVolume(e){if(this.masterGain){const t=this.masterGain.gain.value;this.masterGain.gain.value=e,this.debug&&console.log("[MusicEngine] Master volume changed",{from:t,to:e})}}}t.Zengine=class{constructor(){this.audioContext=null,this.sounds=[],this.activeSounds=new Map,this.masterGainNode=null,this.isRunning=!1,this.currentEnvironment=null,this.eventLoopInterval=null,this.activityLevel=4,this.musicEngine=null,this.debug=!1}async init(){this.musicEngine=new n,this.musicEngine.init(),this.musicEngine.debug=this.debug;const e=await fetch("https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/bbc-sounds.json"),t=await e.json();return this.sounds=this.categorizeSounds(t),this.debug&&console.log("[Zengine] Initialized",{soundCount:this.sounds.length,categories:[...new Set(this.sounds.map(e=>e.category))]}),this.sounds.length}categorizeSounds(e){return e.map(e=>{var t;const n=(e.tags||[]).map(e=>e.toLowerCase()),s=(e.description||"").toLowerCase(),i=parseFloat((null===(t=e.technicalMetadata)||void 0===t?void 0:t.duration)||e.duration)||0,a=this.detectCategory(n,s),r=i>60?"ambient":i>15?"feature":"event";return{id:e.id,duration:i,description:e.description,category:a,role:r}})}detectCategory(e,t){const n=[...e,t].join(" ");return/rain|drizzle/i.test(n)?"rain":/ocean|sea|wave/i.test(n)?"ocean":/stream|river|water/i.test(n)?"water-flow":/wind|breeze/i.test(n)?"wind":/bird/i.test(n)?"bird":/cricket|insect/i.test(n)?"insect":"other"}generateEnvironment(){const e=[{name:"Gentle Rain",requiredAmbient:["rain"],commonCategories:["bird"],weather:"rain"},{name:"Ocean Shore",requiredAmbient:["ocean"],commonCategories:["bird","wind"],weather:"clear"},{name:"Forest Stream",requiredAmbient:["water-flow"],commonCategories:["bird","insect"],weather:"clear"}],t=e[Math.floor(Math.random()*e.length)];return this.debug&&console.log("[Zengine] Environment generated",{name:t.name,weather:t.weather,ambientRequirements:t.requiredAmbient,commonSounds:t.commonCategories}),t}getEnvironmentSounds(e){return{ambient:this.sounds.filter(t=>"ambient"===t.role&&e.requiredAmbient.includes(t.category)),events:this.sounds.filter(t=>"event"===t.role&&e.commonCategories.includes(t.category))}}async start(){this.isRunning||(0===this.sounds.length&&await this.init(),this.musicEngine.isPlaying||await this.musicEngine.start(),this.audioContext||(this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.masterGainNode=this.audioContext.createGain(),this.masterGainNode.connect(this.audioContext.destination),this.masterGainNode.gain.value=.3),"suspended"===this.audioContext.state&&await this.audioContext.resume(),this.isRunning=!0,this.currentEnvironment=this.generateEnvironment(),this.debug&&console.log("[Zengine] Engine started",{environment:this.currentEnvironment.name,audioContextState:this.audioContext.state}),await this.startAmbientLayers(),this.startEventLoop())}async startAmbientLayers(){const e=this.getEnvironmentSounds(this.currentEnvironment),t=Math.min(e.ambient.length,2);for(let n=0;n<t;n++){const t=e.ambient[Math.floor(Math.random()*e.ambient.length)];this.activeSounds.has(t.id)||await this.playSound(t,"ambient",.35+.1*Math.random())}}startEventLoop(){this.eventLoopInterval=setInterval(()=>this.processEvents(),3e3),this.debug&&console.log("[Zengine] Event loop started")}async processEvents(){if(!this.isRunning)return;const e=this.getEnvironmentSounds(this.currentEnvironment);if(Array.from(this.activeSounds.values()).filter(e=>"ambient"!==e.role).length<this.activityLevel&&e.events.length>0&&Math.random()<.5){const t=e.events[Math.floor(Math.random()*e.events.length)];await this.playSound(t,"event",.12+.08*Math.random())}}async playSound(e,t,n){if(!this.activeSounds.has(e.id))try{const s=e.url||`https://sound-effects-media.bbcrewind.co.uk/mp3/${e.id}.mp3`,i=new Audio;i.crossOrigin="anonymous",i.src=s,i.preload="auto";const a=this.audioContext.createMediaElementSource(i),r=this.audioContext.createGain();r.gain.value=n,a.connect(r),r.connect(this.masterGainNode),this.activeSounds.set(e.id,{sound:e,audio:i,source:a,gainNode:r,role:t,volume:n}),this.debug&&console.log("[Zengine] Sound started playing",{soundId:e.id,description:e.description,role:t,volume:n,category:e.category,duration:e.duration,activeCount:this.activeSounds.size}),i.addEventListener("ended",()=>{this.removeSound(e.id),"ambient"===t&&this.isRunning&&setTimeout(()=>this.playSound(e,t,n),1e3)}),i.addEventListener("error",()=>this.removeSound(e.id)),await i.play()}catch(t){console.error("[Zengine] Sound error:",e.id,t)}}removeSound(e){const t=this.activeSounds.get(e);if(t){try{t.audio.pause(),t.gainNode.disconnect(),t.source.disconnect()}catch(e){}this.debug&&console.log("[Zengine] Sound removed",{soundId:e,description:t.sound.description,activeCount:this.activeSounds.size-1}),this.activeSounds.delete(e)}}stop(){this.musicEngine.isPlaying&&this.musicEngine.stop(),this.isRunning=!1,this.eventLoopInterval&&(clearInterval(this.eventLoopInterval),this.eventLoopInterval=null),this.debug&&console.log("[Zengine] Engine stopping",{activeSounds:this.activeSounds.size}),this.activeSounds.forEach((e,t)=>{try{e.audio.pause(),e.audio.currentTime=0}catch(e){}const n=this.audioContext.currentTime;e.gainNode.gain.cancelScheduledValues(n),e.gainNode.gain.setValueAtTime(e.gainNode.gain.value,n),e.gainNode.gain.linearRampToValueAtTime(0,n+.5),setTimeout(()=>this.removeSound(t),500)}),this.audioContext&&"running"===this.audioContext.state&&this.audioContext.suspend(),this.debug&&console.log("[Zengine] Engine stopped")}setMasterVolume(e){if(this.masterGainNode){const t=this.masterGainNode.gain.value;this.masterGainNode.gain.value=e,this.debug&&console.log("[Zengine] Master volume changed",{from:t,to:e,musicEngineVolume:.25*e})}this.musicEngine.setMasterVolume(.25*e)}}},870(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.conditions=void 0;var s=n(372);t.conditions={true:{title:"True",check:(e,t,n)=>!0},false:{title:"False",check:(e,t,n)=>!1},"account-admin":{title:"You are an admin",check:(e,t,n)=>!0===e.groups.sysop},"item-selected":{title:"An item is selected",check:(e,t,n)=>null!==t},"edit-selected":{title:"An edit is selected",check:(e,t,n)=>"edit"===s.Queue.groups[null==t?void 0:t.type]},"logevent-selected":{title:"A logentry is selected",check:(e,t,n)=>"logevent"===s.Queue.groups[null==t?void 0:t.type]},revertable:{title:"Current item is revertable",check:(e,t,n)=>{let i=null==t?void 0:t.type;return"abuselog"===i&&null!=t&&t.revid&&(i="edit"),"edit"===s.Queue.groups[i]}},pending:{title:"Current item is pending review",check:(e,t,n)=>!!e.queue.pending.has(null==t?void 0:t.id)},"user-registered":{title:"Selected user is registered",check:(e,t,n)=>{var s;return!1===(null==t||null===(s=t.user)||void 0===s?void 0:s.anon)}},"user-ip":{title:"Selected user is an IP address",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.ip)}},"user-temp":{title:"Selected user is a temporary account",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.temp)}},"user-empty-talk":{title:"Selected user's talk page is empty",check:(e,t,n)=>{var s;return void 0===(null==t||null===(s=t.user)||void 0===s?void 0:s.talk)}},"user-blocked":{title:"Selected user is blocked",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.blocked)}},"user-edit-count":{title:"Selected user's edit count is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"count",title:"Edit count",type:"number",default:0}],check:(e,t,n)=>{var s,i;const a=-1===(null==t||null===(s=t.user)||void 0===s?void 0:s.editcount)?1/0:(null==t||null===(i=t.user)||void 0===i?void 0:i.editcount)||0,r=Number(n.count);switch(n.condition){case"<":return a<r;case"≤":return a<=r;case"=":return a===r;case"≥":return a>=r;case">":return a>r;default:return!1}}},"user-final-warning":{title:"Selected user at final warning level",check:(e,t,n)=>{var s,i;return"4"===(null==t||null===(s=t.user)||void 0===s?void 0:s.warning)||"4im"===(null==t||null===(i=t.user)||void 0===i?void 0:i.warning)}},"user-has-warnings":{title:"Selected user has no warnings",check:(e,t,n)=>{var s;return"0"!==(null==t||null===(s=t.user)||void 0===s?void 0:s.warning)}},"edit-pending":{title:"Edit is pending",check:(e,t,n)=>e.queue.pending.has(null==t?void 0:t.id)},"edit-minor":{title:"Edit is marked as minor",check:(e,t,n)=>!0===(null==t?void 0:t.minor)},"edit-size":{title:"Edit size is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"size",title:"Size",type:"number",default:0}],check:(e,t,n)=>{const s=(null==t?void 0:t.sizediff)||0,i=Number(n.size);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"abs-edit-size":{title:"Absolute edit size is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"size",title:"Size",type:"number",min:0,default:0}],check:(e,t,n)=>{const s=Math.abs((null==t?void 0:t.sizediff)||0),i=Number(n.size);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"edit-ores-score":{title:"Edit ORES score is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"score",title:"Score",type:"number",min:0,max:1,default:0}],check:(e,t,n)=>{const s=(null==t?void 0:t.ores_score)||0,i=Number(n.score);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"user-highlighted":{title:"Selected user is highlighted",check:(e,t,n)=>{var s;return e.store.highlight.users.has(null==t||null===(s=t.user)||void 0===s?void 0:s.name)}},"user-whitelisted":{title:"Selected user is whitelisted",check:(e,t,n)=>{var s;return e.store.whitelist.users.has(null==t||null===(s=t.user)||void 0===s?void 0:s.name)}},"page-highlighted":{title:"Selected page is highlighted",check:(e,t,n)=>{var s;return e.store.highlight.pages.has(null==t||null===(s=t.page)||void 0===s?void 0:s.title)}},"page-whitelisted":{title:"Selected page is whitelisted",check:(e,t,n)=>{var s;return e.store.whitelist.pages.has(null==t||null===(s=t.page)||void 0===s?void 0:s.title)}},"page-watched":{title:"Selected page is watched",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.page)||void 0===s?void 0:s.watched)}},"tag-highlighted":{title:"Selected edit has a highlighted tag",check:(e,t,n)=>{for(const n of(null==t?void 0:t.tags)||[])if(e.store.highlight.tags.has(n))return!0;return!1}},"tag-whitelisted":{title:"Selected edit has a whitelisted tag",check:(e,t,n)=>{for(const n of t.tags||[])if(e.store.whitelist.tags.has(n))return!0;return!1}},"in-recent-queue":{title:"In recent changes queue",check:(e,t,n)=>"recent"===e.queue.current.type},"in-pending-queue":{title:"In pending changes queue",check:(e,t,n)=>"pending"===e.queue.current.type},"in-user-queue":{title:"In user creations queue",check:(e,t,n)=>"users"===e.queue.current.type},"in-watchlist-queue":{title:"In watchlist queue",check:(e,t,n)=>"watchlist"===e.queue.current.type}}},9808(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.validateShortcut=t.controls=t.buildShortcut=void 0;const n=t.controls=new Set(["!","@","#","$","%","^","&","*","(",")","1","2","3","4","5","6","7","8","9","0","q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m","-","=","[","]","\\",";","'",",",".","/","_","+","{","}","|",":",'"',"<",">","?"," ","arrowleft","arrowup","arrowdown","arrowright"]);t.buildShortcut=e=>{const t=[];["ctrl","shift","alt","meta"].forEach(n=>{e[`${n}Key`]&&t.push(n)});const s=e.key.toLowerCase();return n.has(s)&&t.push(s),t.join("+")};t.validateShortcut=e=>{const t=e.toLowerCase().split("+");if(0===t.length)return!1;const s=new Set;for(const e of t){if(s.has(e))return!1;if(s.add(e),"ctrl"!==e&&"shift"!==e&&"alt"!==e&&!n.has(e))return!1}return t.some(e=>"ctrl"!==e&&"shift"!==e&&"alt"!==e)}},985(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.events=void 0;var s=n(372),i=n(7054),a=n(955),r=n(863),o=n(5643);t.events={"next-item":{title:"Go to next item",icon:"fas fa-arrow-right",script:(e,t,n)=>(e.queue.next(),{valid:!0})},"previous-item":{title:"Go to previous item",icon:"fas fa-arrow-left",script:(e,t,n)=>(e.queue.previous(),{valid:!0})},"clear-queue":{title:"Clear queue",icon:"fas fa-trash-can",valid:(e,t,n)=>"pending"===e.queue.current.type?{valid:!1,reason:"Pending edits queue cannot be cleared."}:{valid:!0},script:(e,t,n)=>(e.queue.clear(e.queue.current.type),{valid:!0})},"next-queue":{title:"Go to next queue",icon:"fas fa-forward",script:(e,t,n)=>{const i=s.Queue.types.map(t=>({name:t,...e.store.settings.queue[t]}));i.sort((e,t)=>e.order-t.order);const a=i.filter(e=>e.enabled);if(0===a.length)return{valid:!1,reason:"No queues are enabled."};const r=a.findIndex(t=>t.name===e.queue.current.type);return e.queue.switch(a[(r+1)%a.length].name),{valid:!0}}},"previous-queue":{title:"Go to previous queue",icon:"fas fa-forward",script:(e,t,n)=>{const i=s.Queue.types.map(t=>({name:t,...e.store.settings.queue[t]}));i.sort((e,t)=>e.order-t.order);const a=i.filter(e=>e.enabled);if(0===a.length)return{valid:!1,reason:"No queues are enabled."};const r=a.findIndex(t=>t.name===e.queue.current.type);return e.queue.switch(a[(r-1+a.length)%a.length].name),{valid:!0}}},"accept-pending-edit":{title:"Accept pending edit",icon:"fas fa-check",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Accepting pending edit",valid:(e,t,n)=>e.rights.review?e.queue.pending.has(t.id)?{valid:!0}:{valid:!1,reason:"Pending edit can only be accepted when a pending edit is selected."}:{valid:!1,reason:"You do not have permission to review pending changes."},script:async(e,t,n)=>{const s=e.queue.pending.get(t.id);if(!s)return{valid:!1,reason:"Pending edit not found."};const i=`${s.count||""} pending revision${1===s.count?"":"s"}`,a=Object.entries(s.users||{}).map(t=>[e.api.user(t[0]),t[1]]);a.sort((e,t)=>t[1]-e[1]);const r=Math.max(a.reduce((e,t)=>{const n=t[0].length;return e[0]+n<=250?[e[0]+n,e[1]+1]:e},[0,0])[1],1);let o="";const l=a.length;if(l>r){const e=a.slice(0,r).map(e=>e[0]),t=l-e.length;o=`${e.join(", ")}, and ${t} other${1===t?"":"s"}`}else o=(e=>{switch(e.length){case 0:case 1:return e[0]||"";case 2:return`${e[0]} and ${e[1]}`;default:return`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}})(a.map(e=>e[0]));return await e.api.acceptPendingEdit(t.pending.revid,e.api.summary(`Accepted ${i} by ${o}`,n.summary))},successful:(e,t,n)=>{e.store.statistics.pending_changes_reviewed.accepted++}},"reject-pending-edit":{title:"Reject pending edit",icon:"fas fa-xmark",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Rejecting pending edit",valid:(e,t,n)=>e.rights.review?e.queue.pending.has(t.id)?{valid:!0}:{valid:!1,reason:"Pending edit can only be rejected when a pending edit is selected."}:{valid:!1,reason:"You do not have permission to review pending changes."},script:async(e,t,n)=>{const s=e.queue.pending.get(t.id);if(!s)return{valid:!1,reason:"Pending edit not found."};const i=`${s.count||""} pending revision${1===s.count?"":"s"}`,a=Object.entries(s.users||{}).map(t=>[e.api.user(t[0]),t[1]]);a.sort((e,t)=>t[1]-e[1]);const r=Math.max(a.reduce((e,t)=>{const n=t[0].length;return e[0]+n<=250?[e[0]+n,e[1]+1]:e},[0,0])[1],1);let o="";const l=a.length;if(l>r){const e=a.slice(0,r).map(e=>e[0]),t=l-e.length;o=`${e.join(", ")}, and ${t} other${1===t?"":"s"}`}else o=(e=>{switch(e.length){case 0:case 1:return e[0]||"";case 2:return`${e[0]} and ${e[1]}`;default:return`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}})(a.map(e=>e[0]));return await e.api.rejectPendingEdit(t.id,s.prior,t.page.title,e.api.summary(`Rejected ${i} by ${o} to [[Special:Diff/${s.prior}|last stable revision]]`,n.summary))},successful:(e,t,n)=>{e.store.statistics.pending_changes_reviewed.rejected++}},revert:{title:"Revert and auto warn/report",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]}],progress:"Reverting edit",valid:(e,t,n)=>{let i=t.type;if("abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i])return{valid:!1,reason:"Edit can only be reverted when an edit is selected."};return"summary"in(0,a.getWarningFromLookup)(n.warning)?{valid:!0}:{valid:!1,reason:"Selected warning template does not support reverting."}},script:async(e,t,n)=>{var r;const l=(0,a.getWarningFromLookup)(n.warning);if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Reverting yourself","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to revert their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to revert the edit on it?`)||null!==(r=t.tags)&&void 0!==r&&r.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to revert it?"))return{valid:!1,reason:"Revert cancelled by user."};const d=await(async()=>await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted edits by ${e.api.user(t.user.name)}`,l.summary)))();if(!d.valid)return d;switch(e.store.statistics.reverts_made.total++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}let c,u;const p=await(async()=>{const n=`User talk:${t.user.name}`,i=e.util.monthSectionName(),a=(await e.api.getPagesContent([n]))[n]||"",r=e.util.getPageSections(a);c=e.queue.getWarningHistory(a).map(e=>e.template);let o="new";const d=r.length;for(let e=0;e<d;e++)r[e].title===i&&(o=e+1);let p;u=e.queue.getWarningLevel(a),p="string"==typeof l.auto?l.auto:"function"==typeof l.auto?l.auto(t,u):l.auto[u];const g=l.templates.find(e=>e.name===p.toString());if(!g)return{valid:!0};c.push(g.template);let h="Message about ";"edit"===s.Queue.groups[t.type]?h+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?h+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:h+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:h+=`[[${t.page.title}]]`;let m="";m="new"===o?`{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`:`${r[o-1].heading}\n${r[o-1].content}\n\n{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`;const v=await e.api.editSection(n,o,i,m,e.api.summary(h,`${l.name} (${g.name})`));if(v.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(p)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,p),e.store.statistics.warnings_issued.total++,p){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return v})();if(!p.valid)return p;if(("4"===u||"4im"===u)&&l.reportable&&e.store.settings.auto_report.enabled&&e.store.settings.auto_report.for.has(n.warning)){if(!(await(async()=>{if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const n=c.some(e=>"uw-attempt"===e.toLowerCase());return await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – Vandalism past final warning. ${n?`See also {{subst:filter log|username=${t.user.name}}}.`:""}~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})})()).valid)return{valid:!0};e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}return{valid:!0}}},"warn-and-report":{title:"Auto warn/report",icon:"fas fa-exclamation-triangle",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]}],progress:"Warning user",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"User can only be warned when an item is selected."},script:async(e,t,n)=>{var r;const l=(0,a.getWarningFromLookup)(n.warning);if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Warning yourself","You are about to warn yourself. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to warn them?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to warn the user about the edit on it?`)||null!==(r=t.tags)&&void 0!==r&&r.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to warn the user about it?"))return{valid:!1,reason:"Warn cancelled by user."};let d,c;const u=await(async()=>{const n=`User talk:${t.user.name}`,i=e.util.monthSectionName(),a=(await e.api.getPagesContent([n]))[n]||"",r=e.util.getPageSections(a);d=e.queue.getWarningHistory(a).map(e=>e.template);let o="new";const u=r.length;for(let e=0;e<u;e++)r[e].title===i&&(o=e+1);let p;c=e.queue.getWarningLevel(a),p="string"==typeof l.auto?l.auto:"function"==typeof l.auto?l.auto(t,c):l.auto[c];const g=l.templates.find(e=>e.name===p.toString());if(!g)return{valid:!0};d.push(g.template);let h="Message about ";"edit"===s.Queue.groups[t.type]?h+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?h+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:h+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:h+=`[[${t.page.title}]]`;let m="";m="new"===o?`{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`:`${r[o-1].heading}\n${r[o-1].content}\n\n{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`;const v=await e.api.editSection(n,o,i,m,e.api.summary(h,`${l.name} (${g.name})`));if(v.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(p)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,p),e.store.statistics.warnings_issued.total++,p){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return v})();if(!u.valid)return u;if(("4"===c||"4im"===c)&&l.reportable&&e.store.settings.auto_report.enabled&&e.store.settings.auto_report.for.has(n.warning)){if(!(await(async()=>{if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const n=d.some(e=>"uw-attempt"===e.toLowerCase());return await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – Vandalism past final warning. ${n?`See also {{subst:filter log|username=${t.user.name}}}.`:""}~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})})()).valid)return{valid:!0};e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}return{valid:!0}}},"warn-user":{title:"Warn user",icon:"fas fa-exclamation-triangle",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]},{dependencies:["warning"],id:"level",title:"Warning level",type:"choice",options:e=>["auto",...a.warningsLookup[e.warning].templates.filter(e=>void 0===e.generic).map(e=>e.name)],default:"auto"}],continuity:!0,progress:"Issuing warning to user",valid:(e,t,n)=>{var s;return t?"auto"!==n.level&&null===(null===(s=(0,a.getWarningFromLookup)(n.warning))||void 0===s?void 0:s.templates[n.level])?{valid:!1,reason:"Selected warning template does not support automatic level selection."}:{valid:!0}:{valid:!1,reason:"User can only be warned when an item is selected."}},script:async(e,t,n)=>{var i;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Warning yourself","You are about to warn yourself. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to warn them?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to warn the user about the edit on it?`)||null!==(i=t.tags)&&void 0!==i&&i.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to warn the user about it?"))return{valid:!1,reason:"Warning cancelled by user."};const r=(0,a.getWarningFromLookup)(n.warning),o=`User talk:${t.user.name}`,l=e.util.monthSectionName(),d=(await e.api.getPagesContent([o]))[o]||"",c=e.util.getPageSections(d);let u="new";const p=c.length;for(let e=0;e<p;e++)c[e].title===l&&(u=e+1);let g;g="auto"===n.level?"string"==typeof r.auto?r.auto:"function"==typeof r.auto?r.auto(t,e.queue.getWarningLevel(d)):r.auto[e.queue.getWarningLevel(d)]:n.level;const h=r.templates.find(e=>e.name===g.toString());if(!h)return"auto"!==n.level?{valid:!1,reason:"Selected warning template does not support the specified level."}:{valid:!0};let m="Message about ";"edit"===s.Queue.groups[t.type]?m+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?m+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:m+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:m+=`[[${t.page.title}]]`;let v="";v="new"===u?`{{subst:${h.template}|${t.page.title}|${h.generic||""}}} ~~~~`:`${c[u-1].heading}\n${c[u-1].content}\n\n{{subst:${h.template}|${t.page.title}|${h.generic||""}}} ~~~~`;const f=await e.api.editSection(o,u,l,v,e.api.summary(m,`${r.name} (${h.name})`));if(f.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(g)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,g),e.store.statistics.warnings_issued.total++,g){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return f}},"rollback-edit":{title:"Rollback edit",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Rolling back edit",valid:(e,t,n)=>{let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be rolled back when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Rollbacking own edit","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to rollback their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to rollback the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to rollback it?"))return{valid:!1,reason:"Rollback cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted edits${i}`,n.summary))},successful:(e,t,n)=>{switch(e.store.statistics.reverts_made.total++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}}},"rollback-goodfaith-edit":{title:"Rollback good faith edit",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Rolling back good faith edit",valid:(e,t,n)=>{let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be rolled back when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Rollbacking own edit","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to rollback their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to rollback the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to rollback it?"))return{valid:!1,reason:"Rollback cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted [[Wp:AGF|Good faith]] edits${i}`,n.summary))},successful:(e,t,n)=>{switch(e.store.statistics.reverts_made.total++,e.store.statistics.reverts_made.good_faith++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}}},"undo-edit":{title:"Undo edit",icon:"fas fa-undo",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Undoing edit",valid:(e,t,n)=>{let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be undone when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Undoing own edit","You are about to undo your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to undo their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to undo the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to undo it?"))return{valid:!1,reason:"Undo cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.undoEdit(t.page.title,t.id,e.api.summary(`Undid revision ${e.api.revision(t.id)}${i}`,n.summary))}},"restore-edit":{title:"Restore edit",icon:"fas fa-redo",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Restoring edit",valid:(e,t,n)=>{let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be restored when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>await e.api.restoreEdit(t.page.title,t.id,e.api.summary(`Restored revision ${e.api.revision(t.id)} by ${e.api.user(t.user.name)}`,n.summary))},"send-message-to-user-talk":{title:"Send message to user talk page",icon:"fas fa-comment",parameters:(e,t)=>[{id:"heading",title:"Section heading",type:"text"},{id:"message",title:"Message (sign with ~~~~)",type:"text"}],progress:"Sending message to user talk page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Message can only be sent when an item is selected."},script:async(e,t,n)=>await e.api.editSection(`User talk:${t.user.name}`,"new",n.heading,n.message,e.api.summary(`Message from ${e.api.username}: ${n.heading}`))},"send-message-to-page-talk":{title:"Send message to page talk page",icon:"fas fa-comment",parameters:(e,t)=>[{id:"heading",title:"Section heading",type:"text"},{id:"message",title:"Message (sign with ~~~~)",type:"text"}],progress:"Sending message to page talk page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Message can only be sent when an item is selected."},script:async(e,t,n)=>{const s=t.page.title.split(":");let i="Talk";s.length>1&&(i=s[0].toLowerCase().includes("talk")?s[0]:`${s[0]} talk`);const a=`${i}:${1===s.length?s[0]:s.slice(1).join(":")}`;return await e.api.editSection(a,"new",n.heading,n.message,e.api.summary(`Message from ${e.api.username}: ${n.heading}`))}},"report-user-to-aiv":{title:"Report user to AIV",icon:"fas fa-flag",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Vandalism past final warning","Vandalism-only account","Vandalism after recent release of block","Spambot or compromised account","Long-term abuse"],default:"Vandalism past final warning"},{id:"summary",title:"Summary (optional)",type:"text"}],continuity:!0,progress:"Reporting user to AIV",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"User can only be reported when an item is selected."},script:async(e,t,n)=>t.user.name===e.api.username?{valid:!1,reason:"You cannot report yourself, silly!"}:(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to report them?`)?{valid:!1,reason:"User report cancelled by user."}:await e.api.areUsersBlocked([t.user.name])[t.user.name]?{valid:!1,reason:"User cannot be reported because they are blocked."}:await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – ${n.reason}${n.summary?`: ${n.summary}`:"."} ~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})),successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}},"report-user-to-uaa":{title:"Report user to UAA",icon:"fas fa-user-slash",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Disruptive username","Offensive username","Promotional username","Misleading username"],default:"Disruptive username"},{id:"summary",title:"Summary (optional)",type:"text"}],continuity:!0,progress:"Reporting user to UAA",valid:(e,t,n)=>t?t.user.anon?{valid:!1,reason:"User cannot be reported because they are anonymous."}:{valid:!0}:{valid:!1,reason:"User can only be reported when an item is selected."},script:async(e,t,n)=>{if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot report yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to report them?`))return{valid:!1,reason:"User report cancelled by user."};if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const s="Offensive username"===n.reason?"offensive username":e.api.user(t.user.name);return await e.api.append(i.WikiShield.config.pages.UAA,null,(0,o.fullTrim)(`\n * {{user-uaa|${t.user.name}}} – ${n.reason}${n.summary?`: ${n.summary}`:"."} ~~~~\n `),e.api.summary(`Reporting ${s}`),n=>{var s;return{valid:!(null!==(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))&&void 0!==s&&s.content.includes(`{{user-uaa|${t.user.name}}`)),reason:"User has already been reported to UAA."}})},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.UAA++}},"request-page-protection":{title:"Request page protection",icon:"fas fa-shield-alt",parameters:(e,t)=>[{id:"level",title:"Protection level",type:"choice",options:[...e.api.hasPendingChanges?["Pending changes protection"]:[],"Semi-protection","Extended-confirmed protection","Full protection","Move protection","Template protection"],default:"Semi-protection"},{id:"reason",title:"Reason",type:"choice",options:["Generic","Persistent vandalism","Disruptive editing","Edit warring","BLP violations","Sockpuppetry","Arbitration enforcement"],default:"Generic"},{id:"duration",title:"Duration",type:"choice",options:["Temporary","Indefinite"],default:"Temporary"},{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Requesting page protection",valid:(e,t,n)=>{let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Page protection can only be requested for edits."}:{valid:!0}},script:async(e,t,n)=>{if(await e.gui.settings.waitForClose(),e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to request protection for it?`))return{valid:!1,reason:"Page protection request cancelled by user."};const s="Generic"===n.reason?n.summary:`${n.reason} – ${n.summary}`;return await e.api.append(i.WikiShield.config.pages.RFPP,null,`\n${(0,o.fullTrim)(`\n === [[${t.page.title}]] ===\n * {{pagelinks|${t.page.title}}}\n '''${n.duration} ${n.level.toLowerCase()}'''${s?`: ${s}`:""} ~~~~\n `)}`,e.api.summary(`Requesting ${n.level} protection for [[${t.page.title}]]`),n=>({valid:!e.util.getPageSections(n).some(e=>e.title===`[[${t.page.title}]]`),reason:"Page protection has already been requested for this page."}))},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.RFPP++}},"request-global-block":{title:"Request global block",icon:"fas fa-ban",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Generic","Long-term abuse","Cross-wiki abuse","Spam / spambot","Compromised account"],default:"Generic"},{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Requesting global block",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Global block can only be requested when an item is selected."},script:async(e,t,n)=>{var s;if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot request a global block for yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to request a global block for them?`))return{valid:!1,reason:"Global block request cancelled by user."};if(await e.api.isUserGloballyLocked(t.user.name))return{valid:!1,reason:"User is globally locked."};const a="Generic"===n.reason?n.summary:`${n.reason}. ${n.summary}`,r=(await e.api.getPagesContent([i.WikiShield.config.pages.SRG],!0,"meta.wikimedia.org"))[i.WikiShield.config.pages.SRG]||"",l=e.util.getPageSections(r);return await e.api.append(i.WikiShield.config.pages.SRG,Number(null===(s=Object.entries(l).find(([,e])=>2===e.level&&"Requests for global (un)block"===e.title))||void 0===s?void 0:s[0])+1||void 0,`\n${(0,o.fullTrim)(`\n === Global block for ${t.user.name} ===\n {{Status}} \x3c!-- Do not remove this template --\x3e\n * {{Luxotool|${t.user.name}}}\n ${a?`${a} `:""} <small>([[:en:WP:WikiShield|WikiShield]])</small> ~~~~\n `)}`,e.api.summary(`Requesting global block for ${e.api.user(t.user.name)}`),n=>{let s=!1,i=[];for(const t of e.util.getPageSections(n))if(2===t.level){if("Requests for global (un)block"===t.title)s=!0;else if(s)break}else s&&3===t.level&&i.push(t);return i=i.filter(e=>!e.content.match(/^{{Status\|not done}}/i)),{valid:!i.some(n=>{const s=n.content;return!!s.match(new RegExp(`{{Luxotool\\|(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}}}`,"i"))||!!s.match(new RegExp(`{{MultiLock\\|(?:[^|}]*\\|)*(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(?:\\|hidename=1)?(?:\\||})`,"i"))}),reason:"User has already been requested for global block."}},!1,"meta.wikimedia.org")},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.global_block++}},"request-global-lock":{title:"Request global lock",icon:"fas fa-lock",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Generic","Long-term abuse","Cross-wiki abuse","Abusive-username","Spam / spambot","Compromised account"],default:"Generic"},{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Requesting global lock",valid:(e,t,n)=>t?t.user.anon?{valid:!1,reason:"Global lock cannot be requested for anonymous users."}:{valid:!0}:{valid:!1,reason:"Global lock can only be requested when an item is selected."},script:async(e,t,n)=>{var s;if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot request a global lock for yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to request a global lock for them?`))return{valid:!1,reason:"Global lock request cancelled by user."};if(await e.api.isUserGloballyLocked(t.user.name))return{valid:!1,reason:"User is already globally locked."};const a="Generic"===n.reason?n.summary:`${n.reason}. ${n.summary}`,r="Yes"===n.hide_username?"":` for ${e.api.centralAuthUser(t.user.name)}`,l=(await e.api.getPagesContent([i.WikiShield.config.pages.SRG],!0,"meta.wikimedia.org"))[i.WikiShield.config.pages.SRG]||"",d=e.util.getPageSections(l);return await e.api.append(i.WikiShield.config.pages.SRG,Number(null===(s=Object.entries(d).find(([,e])=>2===e.level&&"Requests for global (un)lock and (un)hiding"===e.title))||void 0===s?void 0:s[0])+1||void 0,`\n${(0,o.fullTrim)(`\n === Global lock${r} ===\n {{Status}} \x3c!-- Do not remove this template --\x3e\n * {{LockHide|${t.user.name}${"Yes"===n.hide_username?"|hidename=1":""}}}\n ${a?`${a} `:""} <small>([[:en:WP:WikiShield|WikiShield]])</small> ~~~~\n `)}`,e.api.summary(`Requesting global lock${r}`),n=>{let s=!1,i=[];for(const t of e.util.getPageSections(n))if(2===t.level){if("Requests for global (un)lock and (un)hiding"===t.title)s=!0;else if(s)break}else s&&3===t.level&&i.push(t);return i=i.filter(e=>!e.content.match(/^{{Status\|not done}}/i)),{valid:!i.some(n=>{const s=n.content;return!!s.match(new RegExp(`{{LockHide\\|(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(\\|hidename=1)?}}`,"i"))||!!s.match(new RegExp(`{{MultiLock\\|(?:[^|}]*\\|)*(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(?:\\|hidename=1)?(?:\\||})`,"i"))}),reason:"User has already been requested for global lock."}},!1,"meta.wikimedia.org")},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.global_lock++}},"thank-user":{title:"Thank user",icon:"fas fa-handshake",progress:"Thanking user",valid:(e,t,n)=>{let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"User can only be thanked when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{const s=e.api.summary(`Thank you for [[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`),i=`User talk:${t.user.name}`;if(t.user.temp){const n=await e.api.thankRevision(t.id);return(n.valid||e.store.settings.talk_page_thanks_for_temporary_users.enabled)&&void 0===(await e.api.pagesExist(i))[i]&&await e.api.editSection(i,"new","Thank you!","{{subst:Thanks-autosign}}",s),n}return t.user.ip?await e.api.editSection(i,"new","Thank you!","{{subst:Thanks-autosign}}",s):await e.api.thankRevision(t.id)},successful:(e,t,n)=>{e.store.statistics.edits_reviewed.thanked++}},"welcome-user":{title:"Welcome user",icon:"fas fa-paper-plane",parameters:(e,t)=>[{id:"template",title:"Template",type:"choice",options:Object.keys(r.welcomes),default:Object.keys(r.welcomes)[0]}],progress:"Welcoming user",valid:(e,t,n)=>{var s;return t?void 0!==(null===(s=t.user)||void 0===s?void 0:s.talk)?{valid:!1,reason:"User cannot be welcomed because their talk page is not empty."}:{valid:!0}:{valid:!1,reason:"User can only be welcomed when an item is selected."}},script:async(e,t,n)=>await(async()=>{const s=`User talk:${t.user.name}`;if(void 0!==(await e.api.pagesExist([s]))[s])return{valid:!1,reason:"User cannot be welcomed because their talk page is not empty."};let i=r.welcomes[n.template];if(!i)return{valid:!1,reason:"Selected welcome template does not exist."};const a=new Set([i]);for(;"function"==typeof(null===(o=i)||void 0===o?void 0:o.template);){var o,l;if(i=r.welcomes[i.template(e,t)],a.has(i))return null!==(l=void e.gui.dialog.toast("REPORT TO DEVELOPER","Uh oh! Something has gone <i>cat</i>astrophically wrong. Please report this to a developer, and include the error code below:<br><br><code>WELCOME_TEMPLATE_LOOP</code>","dev",-1))&&void 0!==l?l:{valid:!1};if(!i)return{valid:!1,reason:"Selected welcome template does not exist."};a.add(i)}const d=`{{subst:${i.template}}}${i.sign?" ~~~~":""}`;return await e.api.append(s,null,d,e.api.summary("Welcome to Wikipedia!"))})(),successful:(e,t,n)=>{e.store.statistics.users_welcomed.total++,e.queue.talks.set(t.user.name,!0),e.gui.renderQueue()}},"watch-page":{title:"Watch page",icon:"fas fa-eye",progress:"Watching page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Page can only be watched when an item is selected."},script:async(e,t,n)=>await e.api.watchPage(t.page.title,e.util.utcString(e.util.expiryToDate(e.store.settings.expiry.watchlist))),successful:(e,t,n)=>{e.store.statistics.watchlist.watched++,e.queue.watchlist.set(t.page.title,!0)}},"unwatch-page":{title:"Unwatch page",icon:"fas fa-eye-slash",progress:"Unwatching page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Page can only be unwatched when an item is selected."},script:async(e,t,n)=>await e.api.unwatchPage(t.page.title),successful:(e,t,n)=>{e.store.statistics.watchlist.unwatched++,e.queue.watchlist.set(t.page.title,!1)}},"whitelist-user":{title:"Add user to whitelist",icon:"fas fa-user-check",progress:"Adding user to whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"User can only be added to whitelist when an item is selected."},script:(e,t,n)=>(e.store.whitelist.users.set(t.user.name,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.whitelist.users).valueOf()]),e.store.statistics.items_whitelisted.total++,e.store.statistics.items_whitelisted.users++,e.gui.renderQueue(),{valid:!0})},"unwhitelist-user":{title:"Remove user from whitelist",icon:"fas fa-user-minus",progress:"Removing user from whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"User can only be removed from whitelist when an item is selected."},script:(e,t,n)=>(e.store.whitelist.users.delete(t.user.name),e.gui.renderQueue(),{valid:!0})},"whitelist-page":{title:"Add page to whitelist",icon:"fas fa-check",progress:"Adding page to whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Page can only be added to whitelist when an item is selected."},script:(e,t,n)=>(e.store.whitelist.pages.set(t.page.title,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.whitelist.pages).valueOf()]),e.store.statistics.items_whitelisted.total++,e.store.statistics.items_whitelisted.pages++,e.gui.renderQueue(),{valid:!0})},"unwhitelist-page":{title:"Remove page from whitelist",icon:"fas fa-minus",progress:"Removing page from whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Page can only be removed from whitelist when an item is selected."},script:(e,t,n)=>(e.store.whitelist.pages.delete(t.page.title),e.gui.renderQueue(),{valid:!0})},"highlight-user":{title:"Add user to highlighted users",icon:"fas fa-star",progress:"Adding user to highlighted users",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"User can only be added to highlighted users when an item is selected."},script:(e,t,n)=>(e.store.highlight.users.set(t.user.name,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.highlight.users).valueOf()]),e.store.statistics.items_highlighted.total++,e.store.statistics.items_highlighted.users++,e.gui.renderQueue(),{valid:!0})},"unhighlight-user":{title:"Remove user from highlighted users",icon:"fas fa-user-minus",progress:"Removing user from highlighted users",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"User can only be removed from highlighted users when an item is selected."},script:(e,t,n)=>(e.store.highlight.users.delete(t.user.name),e.gui.renderQueue(),{valid:!0})},"highlight-page":{title:"Add page to highlighted pages",icon:"fas fa-star",progress:"Adding page to highlighted pages",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Page can only be added to highlighted pages when an item is selected."},script:(e,t,n)=>(e.store.highlight.pages.set(t.page.title,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.highlight.pages).valueOf()]),e.store.statistics.items_highlighted.total++,e.store.statistics.items_highlighted.pages++,e.gui.renderQueue(),{valid:!0})},"unhighlight-page":{title:"Remove page from highlighted pages",icon:"fas fa-minus",progress:"Removing page from highlighted pages",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Page can only be removed from highlighted pages when an item is selected."},script:(e,t,n)=>(e.store.highlight.pages.delete(t.page.title),e.gui.renderQueue(),{valid:!0})},"refresh-user-contributions":{title:"Refresh user contributions",icon:"fas fa-rotate",progress:"Refreshing user contributions",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"User contributions can only be refreshed when an item is selected."},script:async(e,t,n)=>{try{var s;document.querySelector("#refresh-page-history").classList.add("refreshing");const n=(await e.api.parseUsers([t.user.name]))[0].user;return e.queue.talks.set(t.user.name,n.talk),e.queue.contributions.set(t.user.name,n.contributions),e.queue.blocked.set(t.user.name,n.blocked),e.queue.blocks.set(t.user.name,n.blocks),t.user.edits=Math.max(n.edits,(null===(s=n.contributions)||void 0===s?void 0:s.length)||0),t.user.warning=e.queue.getWarningLevel(n.talk||""),t.user.warnings=e.queue.getWarningHistory(n.talk||""),delete t.user.cached_contributions,e.gui.renderQueue(),e.queue.current.item===t&&e.gui.newCurrentItem(t),{valid:!0}}catch(e){return console.error(e),{valid:!1,reason:"An error occurred while fetching user contributions."}}}},"refresh-page-history":{title:"Refresh page history",icon:"fas fa-rotate",progress:"Refreshing page history",valid:(e,t,n)=>t?"users"===t.type?{valid:!1,reason:"Page history cannot be refreshed for user creations."}:{valid:!0}:{valid:!1,reason:"Page history can only be refreshed when an item is selected."},script:async(e,t,n)=>{try{document.querySelector("#refresh-page-history").classList.add("refreshing");const[n,s]=await Promise.all([e.api.getHistory(t.page.title),e.api.getPagesDetails(t.page.title)]),i=s[t.page.title];return e.queue.histories.set(t.page.title,n),t.page.metadata=i.metadata,t.page.categories=i.categories,t.page.protection=i.protection,delete t.page.cached_history,e.gui.renderQueue(),e.queue.current.item===t&&e.gui.newCurrentItem(t),{valid:!0}}catch(e){return console.error(e),{valid:!1,reason:"An error occurred while fetching page history."}}}},"open-user-page":{title:"Open user page",icon:"fas fa-circle-user",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"User page can only be opened when an item is selected."},script:(e,t,n)=>(e.open(e.page(`User:${t.user.name}`)),{valid:!0})},"open-user-talk":{title:"Open user talk page",icon:"fas fa-comment",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"User talk page can only be opened when an item is selected."},script:(e,t,n)=>(e.open(e.page(`User talk:${t.user.name}`)),{valid:!0})},"open-user-contributions":{title:"Open user contributions",icon:"fas fa-list",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"User contributions can only be opened when an item is selected."},script:(e,t,n)=>(e.open(e.page(`Special:Contributions/${t.user.name}`)),{valid:!0})},"open-user-filter-log":{title:"Open user filter log",icon:"fas fa-filter",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"User filter log can only be opened when an item is selected."},script:(e,t,n)=>(e.open(e.page(`?title=Special:AbuseLog&wpSearchUser=${encodeURIComponent(t.user.name)}`,!0)),{valid:!0})},"open-page":{title:"Open page",icon:"fas fa-file",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Page can only be opened when an item is selected."},script:(e,t,n)=>(e.open(e.page(t.page.title)),{valid:!0})},"open-page-talk":{title:"Open page talk",icon:"fas fa-comments",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Page talk can only be opened when an item is selected."},script:(e,t,n)=>{const s=t.page.title.split(":");let i="Talk";s.length>1&&(i=s[0].toLowerCase().includes("talk")?s[0]:`${s[0]} talk`);const a=e.page(`${i}:${1===s.length?s[0]:s.slice(1).join(":")}`);return e.open(a),{valid:!0}}},"open-page-history":{title:"Open page history",icon:"fas fa-clock-rotate-left",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Page history can only be opened when an item is selected."},script:(e,t,n)=>(e.open(e.page(`Special:PageHistory/${t.page.title}`)),{valid:!0})},"open-revision":{title:"Open revision",icon:"fas fa-file-lines",valid:(e,t,n)=>{let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Revision can only be opened for edits."}:{valid:!0}},script:(e,t,n)=>(e.open(e.page(`Special:Permalink/${t.id}`)),{valid:!0})},"open-diff":{title:"Open diff",icon:"fas fa-code-compare",valid:(e,t,n)=>{let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Diff can only be opened for edits."}:{valid:!0}},script:(e,t,n)=>(e.open(e.page(`Special:Diff/${t.id}`)),{valid:!0})},"copy-link":{title:"Copy link",icon:"fas fa-link",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Link can only be copied when an item is selected."},script:(e,t,n)=>{if("edit"===t.group)navigator.clipboard.writeText(e.page(`?diff=${t.id}`,!0));else if("logevent"===t.group)navigator.clipboard.writeText(e.page(`?title=Special:Log&logid=${t.id}`,!0));else{if("abuselog"!==t.group)return e.gui.dialog.toast("Cannot copy link","Please report this issue to a developer, including the error code below:<br><br><code>UNKNOWN_ITEM_GROUP_FOR_LINK_COPY</code>","error",3e3),{valid:!1};t.revid?navigator.clipboard.writeText(e.page(`?diff=${t.revid}`,!0)):navigator.clipboard.writeText(e.page(`?title=Special:AbuseLog/${t.id}`,!0))}return e.gui.dialog.toast("Link copied","The link has been copied to your clipboard.","success",3e3),{valid:!0}}},"open-revert-menu":{title:"Open revert menu",icon:"fas fa-undo",valid:(e,t,n)=>{let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Revert menu is only available for edits."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector('[data-menu="revert"]'),i=document.querySelector("#revert-menu");if(i.innerHTML="",e.gui.createWarnMenu("reverts",i,t),s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-warn-menu":{title:"Open warn menu",icon:"fas fa-exclamation-triangle",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"Warning menu is only available when an item is selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="warn"]'),i=document.querySelector("#warn-menu");if(i.innerHTML="",e.gui.createWarnMenu("warnings",i,t),s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-user-menu":{title:"Open user menu",icon:"fas fa-flag",valid:(e,t,n)=>e.queue.current.item?{valid:!0}:{valid:!1,reason:"User menu is only available when an item is selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="user"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-page-menu":{title:"Open page menu",icon:"fas fa-flag",valid:(e,t,n)=>e.queue.current.item?{valid:!0}:{valid:!1,reason:"Page menu is only available when an item is selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="page"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-edit-menu":{title:"Open edit menu",icon:"fas fa-flag",valid:(e,t,n)=>{let i=e.queue.current.item.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit menu is only available for edits."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector('[data-menu="edit"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"switch-to-recent-queue":{title:"Switch to recent changes queue",icon:"fas fa-stopwatch",valid:(e,t,n)=>e.store.settings.queue.recent.enabled?{valid:!0}:{valid:!1,reason:"Recent changes queue is not enabled."},script:(e,t,n)=>(e.queue.switch("recent"),{valid:!0})},"switch-to-pending-queue":{title:"Switch to pending changes queue",icon:"fas fa-flag",valid:(e,t,n)=>e.store.settings.queue.pending.enabled?e.rights.review?e.api.hasPendingChanges?{valid:!0}:{valid:!1,reason:"The pending changes extension is not enabled on this wiki."}:{valid:!1,reason:"You do not have permission to review pending changes."}:{valid:!1,reason:"Pending changes queue is not enabled."},script:(e,t,n)=>(e.queue.switch("pending"),{valid:!0})},"switch-to-watchlist-queue":{title:"Switch to watchlist queue",icon:"fas fa-book-bookmark",valid:(e,t,n)=>e.store.settings.queue.watchlist.enabled?{valid:!0}:{valid:!1,reason:"Watchlist queue is not enabled."},script:(e,t,n)=>(e.queue.switch("watchlist"),{valid:!0})},"switch-to-users-queue":{title:"Switch to user creation logs queue",icon:"fas fa-user-plus",valid:(e,t,n)=>e.store.settings.queue.users.enabled?{valid:!0}:{valid:!1,reason:"User creation logs queue is not enabled."},script:(e,t,n)=>(e.queue.switch("users"),{valid:!0})},"switch-to-abuselog-queue":{title:"Switch to abuse log queue",icon:"fas fa-filter-circle-xmark",valid:(e,t,n)=>e.store.settings.queue.abuselog.enabled?{valid:!0}:{valid:!1,reason:"Abuse log queue is not enabled."},script:(e,t,n)=>(e.queue.switch("abuselog"),{valid:!0})},"toggle-zen-mode":{title:"Toggle zen mode",icon:"fas fa-spa",script:(e,t,n)=>{var s;return e.store.settings.zen_mode.enabled=!e.store.settings.zen_mode.enabled,null===(s=document.querySelector("#zen-mode-enable"))||void 0===s||s.classList.toggle("active",e.store.settings.zen_mode.enabled),e.gui.updateZenMode(),{valid:!0}}},"toggle-consecutive-edits":{title:"Toggle consecutive edits",icon:"fas fa-users",valid:(e,t,n)=>{const s=e.queue.current.type;return"recent"!==s&&"watchlist"!==s?{valid:!1,reason:"Consecutive edits can only be viewed in the recent changes or watchlist queues."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector("#consecutive-edits-tab");return s.classList.contains("hidden")||(s.classList.contains("selected")?document.querySelector("#latest-edits-tab").click():s.click()),{valid:!0}}}}},8921(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.EventManager=void 0;var s=n(985),i=n(870),a=n(5564);t.EventManager=class{constructor(e){this.ws=e,this.events=s.events,this.conditions=i.conditions}button(e,t){const n=this.ws;e.addEventListener("click",e=>(e=>{n.gui.selectedMenu=null;const s=n.queue.current.item,i={};for(const o of(null===(a=(r=n.gui.events.events[t]).parameters)||void 0===a?void 0:a.call(r,n,s))||[]){var a,r;"external"===o.id&&(i[o.id]=(null==e?void 0:e.altKey)||!1)}n.execute({actions:[{name:t,params:i}]})})(e))}submenu(e,t){var n,s;const i=this.events[t];e.dataset.eventName=t;const r=this.ws.queue.current,o=`${r.type}:${null===(n=r.item)||void 0===n?void 0:n.id}`,l={};if(e.dataset.eventId===o)for(const t of(null===(d=i.parameters)||void 0===d?void 0:d.call(i,this.ws,this.ws.queue.current.item))||[]){var d;const n=e.querySelector(`[data-paramid="${t.id}"]`);l[t.id]="checkbox"===n.type?n.checked:n.value}else e.dataset.eventId=o;e.innerHTML="";const c=document.createElement("div");c.classList.add("bottom-subcontent-title"),c.textContent=i.title,e.appendChild(c);const u=new Map,p={},g=(0,a.sortDependencies)((null===(s=i.parameters)||void 0===s?void 0:s.call(i,this.ws,this.ws.queue.current.item))||[]);for(const t of g){const n=document.createElement("div");n.classList.add("bottom-subcontent-input-title"),n.textContent=t.title,e.appendChild(n);const s={};for(const e of null!==(h=t.dependencies)&&void 0!==h?h:[]){var h;s[e]=p[e]}const i="function"==typeof t.default?t.default(s):t.default;let a=null;switch(t.type){case"choice":{const n=document.createElement("select");n.dataset.paramid=t.id,e.appendChild(n);const r="function"==typeof t.options?t.options(s):t.options;for(const e of null!=r?r:[]){const t=document.createElement("option");t.value=e,t.textContent=e,n.appendChild(t)}void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),a=()=>{const e={};for(const n of null!==(s=t.dependencies)&&void 0!==s?s:[]){var s;e[n]=p[n]}const i=n.value,a="function"==typeof t.options?t.options(e):t.options;n.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,n.appendChild(t)}if(a.includes(i))n.value=i;else{const s="function"==typeof t.default?t.default(e):t.default;n.value=s,p[t.id]=s}},n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}break;case"text":{const n=document.createElement("input");n.type="text",n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}break;case"boolean":{const n=document.createElement("input");n.type="checkbox",n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.checked=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.checked=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.checked;for(const e of u.get(t.id)||[])e()})}break;case"duration":{const n=document.createElement("duration-input");n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}}if("function"==typeof a)for(const e of null!==(m=t.dependencies)&&void 0!==m?m:[]){var m;u.has(e)||u.set(e,[]),u.get(e).push(a)}}const v=document.createElement("button");v.classList.add("bottom-subcontent-button"),v.textContent="Submit",e.appendChild(v),v.addEventListener("click",()=>{const n={};for(const t of g){const s=e.querySelector(`[data-paramid="${t.id}"]`);n[t.id]=s.value}this.ws.execute({actions:[{name:t,params:n}]}),this.ws.gui.closeMenus()})}}},372(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Queue=void 0;var s=n(2852),i=n(2595),a=n(6400);function r(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return e.get(d(e,t))}function d(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var c=new WeakMap,u=new WeakSet;class p{static areSameGroup(e,t){return this.groups[e]===this.groups[t]}constructor(e){var t,n;r(t=this,n=u),n.add(t),function(e,t,n){r(e,t),t.set(e,n)}(this,c,Promise.resolve()),this.ws=e,this.queues=Object.fromEntries(["void",...p.types].map(t=>[t,{type:t,item:null,previous:null,queue:[],hold:[],repeats:{},history:new i.Stack(100),memory:new s.Memory({size:1e3}),last:{timestamp:e.util.utcString(new Date),id:0}}])),this.cache={simple:new s.Memory({size:1e3}),full:new s.Memory({size:250})},this.current=this.queues[p.types[0]],this.pending=new Map,this.watchlist=new s.Memory({size:1e3}),this.talks=new s.Memory({size:500}),this.warnings=new s.Memory({size:1e3,timeout:864e5}),this.noWelcome=new s.Memory({timeout:36e5}),this.histories=new s.Memory({size:1e3}),this.contributions=new s.Memory({size:1e3}),this.blocks=new s.Memory({size:1e3}),this.blocked=new s.Memory({size:1e4}),this.playedSound={mention:new s.Memory({timeout:6e4})},this.bypass=new s.Memory({timeout:36e5,size:1e4}),this.backoff=2e3}switch(e){var t;this.current.type!==e&&("pending"===this.current.type&&(this.queues.pending.queue=this.queues.pending.queue.filter(e=>this.pending.has(e.id))),document.querySelector("#clear-queue").classList.toggle("hidden","pending"===e),this.current=this.queues[e],this.current.queue.some(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)})||(this.current.item=this.current.queue[0]||null),this.ws.gui.renderQueue(),this.ws.gui.newCurrentItem(this.current.item),document.querySelectorAll("#queue-tabs > .queue-tab.selected").forEach(e=>e.classList.remove("selected")),null===(t=document.querySelector(`#queue-tab-${e}`))||void 0===t||t.classList.add("selected"))}async fetch(){try{const i=this.ws.store.settings.queue;if(i.pending.enabled&&this.ws.rights.review){const e=(await this.ws.api.feeds(null,{ns:"*",full:!0})).pending;this.pending.clear(),Object.values(e).forEach(e=>this.pending.set(e.revid,e)),await this.outdated("pending")}const a=await this.ws.api.feeds(i.recent.enabled?{ns:this.ws.store.settings.namespaces.join("|"),since:this.queues.recent.last.timestamp}:null,i.pending.enabled&&this.ws.rights.review?{ns:"*",full:!1}:null,i.users.enabled?{ns:"*",since:this.queues.users.last.timestamp}:null,i.watchlist.enabled?{ns:"*",since:this.queues.watchlist.last.timestamp}:null,i.abuselog.enabled?{ns:this.ws.store.settings.namespaces.join("|"),since:this.queues.abuselog.last.timestamp}:null),r=this.ws.store.whitelist;for(const i of p.types){var e;const o=this.queues[i].last.id;let l=null!==(e=a[i])&&void 0!==e?e:[];const d=l.reduce((e,t)=>Math.max(e,t.timestamp),0);switch(d&&(this.queues[i].last.timestamp=this.ws.util.utcString(new Date(d))),p.groups[i]){case"edit":{const e=e=>e.revid>o;l="recent"===i?l.filter(t=>e(t)&&!r.pages.has(t.title)):l.filter(e)}break;case"abuselog":l=l.filter(e=>e.id>o);break;case"logevent":l=l.filter(e=>e.logid>o)}l=l.concat(this.queues[i].hold),l.length>25?this.queues[i].hold=l.splice(25).reverse():this.queues[i].hold=[];let c=!1;switch(i){case"recent":{const e=new Set;for(const n of l)for(const s of this.queues[i].queue){var t;e.has(s)||s.id!==(null===(t=this.current.item)||void 0===t?void 0:t.id)&&n.title===s.page.title&&s.id<n.revid&&e.add(s)}for(const t of e){const e=this.queues[i].queue.indexOf(t);e>-1&&(this.queues[i].queue.splice(e,1),this.ws.gui.removeQueueItem(i,t.id))}c=e.size>0}break;case"pending":for(const e of this.queues[i].queue){var n;if((null===(n=this.current.item)||void 0===n?void 0:n.id)!==e.id&&!this.pending.has(e.id)){const t=this.queues[i].queue.indexOf(e);t>-1&&(this.queues[i].queue.splice(t,1),this.ws.gui.removeQueueItem(i,e.id),c=!0)}}break;case"users":l=l.filter(e=>!e.temp);break;case"watchlist":{const e=new Set;for(const t of l)for(const n of this.queues[i].queue){var s;e.has(n)||n.id!==(null===(s=this.current.item)||void 0===s?void 0:s.id)&&(t.title===n.page.title&&n.id<t.revid?e.add(n):n.page.watched||e.add(n))}if(0===l.length)for(const t of this.queues[i].queue)t.page.watched||e.add(t);for(const t of e){const e=this.queues[i].queue.indexOf(t);e>-1&&(this.queues[i].queue.splice(e,1),this.ws.gui.removeQueueItem(i,t.id))}c=e.size>0}}if(0!==l.length)switch(p.groups[i]){case"edit":{this.queues[i].last.id=l.reduce((e,t)=>Math.max(e,t.revid),0);const e=this.ws.store.highlight,t=t=>{var n;return e.users.has(t.user)||e.pages.has(t.title)||(null===(n=t.tags)||void 0===n?void 0:n.some(t=>e.tags.has(t)))};l=l.filter(e=>{var n;return!r.users.has(e.user)&&!(null!==(n=e.tags)&&void 0!==n&&n.some(e=>r.tags.has(e)))&&(!this.bypass.has(e.user)||t(e))});const n={};let[s,a]=await Promise.allSettled(["recent"===i?this.ws.api.getEditCounts(l.map(e=>e.user).filter(e=>!this.bypass.has(e))):Promise.resolve([]),this.ws.api.getORES(l.filter(e=>{var t;if(null===(t=e.oresscores)||void 0===t||!t.length)return!0;n[e.revid]=e.oresscores},this.ws.store.settings.queue.ores_bias).map(e=>e.revid))]);"rejected"===s.status&&console.error("Edit counts failed:",s.reason),s="fulfilled"===s.status?s.value:{},"rejected"===a.status&&console.error("ORES failed:",a.reason),a="fulfilled"===a.status?a.value:{};for(const[e,t]of Object.entries(await this.ws.api.extractORES(n,this.ws.store.settings.queue.ores_bias)))a[e]=t;const o=this.queues[i].repeats,d=[];if("recent"===i){const e=this.ws.store.settings.queue.min_ores,n=this.ws.store.settings.queue.max_edits;l.forEach(r=>{var l,c;if(isNaN(a[r.revid])&&(o[r.revid]||0)<3)return o[r.revid]=(o[r.revid]||0)+1,this.queues[i].hold.push(r);if(delete o[r.revid],this.ws.__DEV__&&"test2.wikipedia.org"===this.ws.server)return d.push(r);const u=null!==(l=null!==(c=s[r.user])&&void 0!==c?c:this.bypass.get(r.user))&&void 0!==l?l:0;u>n?(this.bypass.set(r.user,u),t(r)&&d.push(r)):((a[r.revid]||0)>=e||t(r))&&d.push(r)})}else l.forEach(e=>{if(isNaN(a[e.revid])&&(o[e.revid]||0)<3)return o[e.revid]=(o[e.revid]||0)+1,this.queues[i].hold.push(e);delete o[e.revid],d.push(e)});await this.add(i,d)}break;case"logevent":{let e=0;const t=new Set,n=[];l.forEach(s=>{t.has(s.logid)||(t.add(s.logid),s.logid>e&&(e=s.logid),n.push(s))}),this.queues[i].last.id=e,await this.add(i,n)}break;case"abuselog":{const e=l.filter(e=>null===e.editcount);let t={};e.length>0&&(t=await this.ws.api.getEditCounts(e.map(e=>e.user)));const n=this.ws.store.settings.queue.max_edits;let s=0;const a=[];l.forEach(e=>{var i;((null!==(i=e.editcount)&&void 0!==i?i:t[e.user])||0)>n||(e.id>s&&(s=e.id),a.push(e))}),this.queues[i].last.id=s,await this.add(i,a)}}else c&&this.ws.gui.renderQueue(this.queues[i].queue,this.current.edit,i)}await this.outdated(),this.backoff=p.refresh}catch(e){console.error(e),this.backoff=Math.min(2*this.backoff,12e4)}setTimeout(()=>this.fetch(),this.backoff)}async outdated(){{const e=[];for(const t of this.queues.pending.queue)t!==this.current.item&&(this.pending.has(t.id)||e.push(t));if(e.length>0)for(const t of e){const e=this.queues.pending.queue.indexOf(t);e>-1&&(this.queues.pending.queue.splice(e,1),this.ws.gui.removeQueueItem("pending",t.id))}}const e=new Set,t=["recent","watchlist","abuselog"];for(const n of t)this.queues[n].queue.forEach(t=>{("abuselog"!==n||t.revid)&&e.add(t.page.title)});const n=await this.ws.api.getLatestIds([...e]);for(const e of t){const t=[];for(const s of this.queues[e].queue){let i=s.id;if("abuselog"===e){if(!s.revid)continue;i=s.revid}const a=n[s.page.title];a&&a>i&&t.push([s.id,i])}if(t.length>0)for(const[n,i]of t){var s;const t="abuselog"===e?"revid":"id";if(i===(null===(s=this.queues[e].item)||void 0===s?void 0:s[t]))continue;const a=this.queues[e].queue.findIndex(e=>e[t]===i);a>-1&&(this.queues[e].queue.splice(a,1),this.ws.gui.removeQueueItem(e,n))}}this.ws.gui.renderQueue()}async add(e,t){const n={edit:"revid",logevent:"logid",abuselog:"id"}[p.groups[e]];(t=t.filter(t=>!this.queues[e].memory.has(t[n]))).forEach(t=>this.queues[e].memory.add(t[n]));const s=t.length;if(0===s)return;const i={ores:!1,mention:!1},a=await this.generate(e,t,!1);switch(p.groups[e]){case"edit":{const n=this.ws.store.settings.audio.ores_alert.threshold;for(let r=0;r<s;r++){t[r];const s=a[r];this.queues[e].queue.push(s),"recent"===e&&s.ores>=n&&(i.ores=!0),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}}break;case"logevent":for(let n=0;n<s;n++){t[n];const s=a[n];this.queues[e].queue.push(s),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}break;case"abuselog":for(let n=0;n<s;n++){t[n];const s=a[n];this.queues[e].queue.push(s),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}}this.sort(e),i.ores&&this.ws.store.settings.audio.ores_alert.enabled&&this.ws.audio.playSound(["queue","ores"]),i.mention&&this.ws.store.settings.username_highlighting.enabled&&this.ws.audio.playSound(["queue","mention"]),this.ws.gui.renderQueue(this.queues[e].queue,this.queues[e].item,e)}sort(e){var t;let n=-1;this.queues[e].item&&(n=this.queues[e].queue.findIndex(t=>t===this.queues[e].item));let s=this.queues[e].queue;n>=0&&(s=s.slice(0,n).concat(s.slice(n+1)));const i=this.ws.store.highlight,a=this.ws.store.settings.username_highlighting.enabled;switch(p.groups[e]){case"edit":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return-1;if(t.history)return 1;let n=e.ores;a&&e.mentions.has&&(n+=200),i.users.has(e.user.name)&&(n+=100),i.pages.has(e.page.title)&&(n+=75),n+=50*e.tags.filter(e=>i.tags.has(e)).length;let s=t.ores;return a&&t.mentions.has&&(s+=200),i.users.has(t.user.name)&&(s+=100),i.pages.has(t.page.title)&&(s+=75),s+=50*t.tags.filter(e=>i.tags.has(e)).length,n===s?t.id-e.id:s-n});break;case"logevent":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return 1;if(t.history)return-1;let n=100*(e.user.profanity.clamped||0);a&&e.mentions.has&&(n+=200);let s=100*(t.user.profanity.clamped||0);return a&&t.mentions.has&&(s+=200),n===s?t.id-e.id:s-n});break;case"abuselog":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return 1;if(t.history)return-1;let n=0;i.users.has(e.user.name)&&(n+=100),i.pages.has(e.page.title)&&(n+=75),a&&e.mentions.has&&(n+=200);let s=0;return i.users.has(t.user.name)&&(s+=100),i.pages.has(t.page.title)&&(s+=75),a&&t.mentions.has&&(s+=200),n===s?t.id-e.id:s-n})}const r=new Set(null!==(t=this.queues[e].item)&&void 0!==t&&t.id?[this.queues[e].item.id]:[]);s=s.filter(e=>!r.has(e.id)&&(r.add(e.id),!0)),n>=0&&s.splice(n,0,this.queues[e].item),this.queues[e].queue=[...s.slice(0,this.ws.store.settings.queue.max_size)],this.queues[e].item||(this.queues[e].item=this.queues[e].queue[0])}async generate(e,t,n,s={}){var i;if(0===t.length)return[];const r=null!==(i=null==s?void 0:s.bypass)&&void 0!==i&&i,o=this.ws,l=o.api.username,d=[];switch(p.groups[e]){case"edit":{t=(t=t.filter(e=>{const t=(e=>{if(n){if(this.cache.simple.has(e))return this.cache.simple.get(e);if(this.cache.full.has(e))return this.cache.full.get(e)}else if(this.cache.full.has(e))return this.cache.full.get(e);return null})(e.revid);var s;return!t||(e.pending&&!t.pending&&(t.pending=e.pending),null!==(s=void d.push(t))&&void 0!==s&&s)})).map(e=>{var t;let n=null;return e.pending&&(n=null===(t=this.pending.get(e.revid))||void 0===t?void 0:t.prior),null!=n||(n=e.old_revid||e.parentid),{item:e,prior:n}});const s=await o.api.parseEdits(t,n,this.ws.store.settings.queue.ores_bias,r);for(const t of s){var c;const{item:s,prior:i,data:a}=t,r={comment:!1,diff:!1};if(l&&a.edit.diff){const e=document.createElement("div");e.innerHTML=a.edit.diff,e.textContent&&(r.diff=o.util.match(l,e.textContent))}this.watchlist.set(s.title,a.page.watched),this.histories.set(s.title,a.page.history),this.contributions.set(s.user,a.user.contributions),this.blocks.set(s.user,a.user.blocks),this.blocked.set(s.user,a.user.blocked);const u=["0","1","2","3","4","4im"],g=this.getWarningLevel(a.user.talk||"");u.indexOf(g)>u.indexOf(this.warnings.get(s.user)||"0")&&this.warnings.set(s.user,g);const h={page:{namespace:s.ns,title:s.title,get history(){var e;return null!==(e=o.queue.histories.get(s.title))&&void 0!==e?e:a.page.history},get watched(){var e;return null!==(e=o.queue.watchlist.get(s.title))&&void 0!==e?e:a.page.watched},metadata:a.page.metadata,categories:a.page.categories,protection:a.page.protection},user:{name:s.user,ip:o.util.isIPAddress(s.user),temp:o.util.isTempAccount(s.user),anon:o.util.isIPAddress(s.user)||o.util.isTempAccount(s.user),edits:Math.max(a.user.edits,(null===(c=a.user.contributions)||void 0===c?void 0:c.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(s.user))&&void 0!==e?e:a.user.contributions},warning:this.getWarningLevel(a.user.talk||""),warnings:this.getWarningHistory(a.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(s.user))&&void 0!==e?e:a.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(s.user))&&void 0!==e?e:a.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(s.user))&&void 0!==e?e:a.user.talk}},mentions:r,AI:{edit:null,username:null},id:s.revid,prior:i,timestamp:s.timestamp,comment:s.parsedcomment,minor:s.minor||!1,diff:a.edit.diff,sizediff:("sizediff"in s?s.sizediff:s.newlen-s.oldlen)||0,ores:a.edit.ores,tags:s.tags||[],reverts:a.page.reverts,consecutive:a.page.consecutive,propagating:!1,reviewed:!1,history:!1,pending:s.pending||!1,group:p.groups[e],type:e,simple:n,origin:s};!n&&o.AI&&(o.store.settings.AI.edit_analysis.enabled&&o.AI.analyze.edit(h).then(e=>h.AI.edit=e).catch(e=>h.AI.edit={error:e.message}).finally(()=>{var e;h.id===(null===(e=this.current.item)||void 0===e?void 0:e.id)&&o.gui.updateAIAnalysisDisplay(h.AI.edit)}),h.user.anon||o.store.whitelist.users.has(h.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(h).then(e=>{h.AI.username=e,e.flag&&this.promptUAA(h,e)}).catch(e=>h.AI.username={error:e.message})),d.push(h),n?this.cache.simple.set(s.revid,h):(this.cache.full.set(s.revid,h),this.cache.simple.has(s.revid)&&this.cache.simple.delete(s.revid))}}break;case"logevent":{const s=await o.api.parseUsers(t.map(e=>e.title.replace(/^(User|User talk):/,"")),n,r),i=await o.api.parseUsers(t.map(e=>e.user),n,r);for(let r=0;r<t.length;r++){var u,g;const c=t[r],h=s[r],m=i[r],v=c.title.replace(/^(User|User talk):/,""),f={username:!1,comment:!1};l&&v&&(f.username=o.util.match(l,v)),this.contributions.set(v,h.user.contributions),this.contributions.set(c.user,m.user.contributions),this.blocks.set(v,h.user.blocks),this.blocks.set(c.user,m.user.blocks),this.blocked.set(v,h.user.blocked),this.blocked.set(c.user,m.user.blocked);const b=["0","1","2","3","4","4im"],w=this.getWarningLevel(h.user.talk||"");b.indexOf(w)>b.indexOf(this.warnings.get(v)||"0")&&this.warnings.set(v,w);const y=this.getWarningLevel(m.user.talk||"");b.indexOf(y)>b.indexOf(this.warnings.get(c.user)||"0")&&this.warnings.set(c.user,y);const x=a.profanity.evaluate(v),k={page:{namespace:c.ns,title:c.title,history:[],get watched(){return!1},metadata:[],categories:[],protection:{}},user:{name:v,ip:o.util.isIPAddress(v),temp:o.util.isTempAccount(v),anon:o.util.isIPAddress(v)||o.util.isTempAccount(v),edits:Math.max(h.user.edits,(null===(u=h.user.contributions)||void 0===u?void 0:u.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(v))&&void 0!==e?e:h.user.contributions},warning:this.getWarningLevel(h.user.talk||""),warnings:this.getWarningHistory(h.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(v))&&void 0!==e?e:h.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(v))&&void 0!==e?e:h.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(v))&&void 0!==e?e:h.user.talk},profanity:x},performer:{name:c.user,ip:o.util.isIPAddress(c.user),temp:o.util.isTempAccount(c.user),anon:o.util.isIPAddress(c.user)||o.util.isTempAccount(c.user),edits:Math.max(m.user.edits,(null===(g=m.user.contributions)||void 0===g?void 0:g.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(c.user))&&void 0!==e?e:m.user.contributions},warning:this.getWarningLevel(m.user.talk||""),warnings:this.getWarningHistory(m.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(c.user))&&void 0!==e?e:m.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(c.user))&&void 0!==e?e:m.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(c.user))&&void 0!==e?e:m.user.talk}},mentions:f,AI:{username:null},id:c.logid,timestamp:c.timestamp,comment:c.parsedcomment,ores:x.clamped||0,filters:x.matches.map(e=>({filter:e.name,id:e.match})),propagating:!1,reviewed:!1,history:!1,group:p.groups[e],type:e,simple:n,origin:c};!n&&o.AI&&(k.user.anon||o.store.whitelist.users.has(k.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(k).then(e=>{k.AI.username=e,e.flag&&this.promptUAA(k,e)}).catch(e=>k.AI.username={error:e.message})),d.push(k)}}break;case"abuselog":{const s=await o.api.parseAbuselogs(t,n,r);for(const t of s){var h,m;const{item:s,data:i}=t,a={comment:!1,diff:!1};if(l&&i.edit.diff){const e=document.createElement("div");e.innerHTML=i.edit.diff,e.textContent&&(a.diff=o.util.match(l,e.textContent))}this.watchlist.set(s.title,i.page.watched),this.histories.set(s.title,i.page.history),this.contributions.set(s.user,i.user.contributions),this.blocks.set(s.user,i.user.blocks),this.blocked.set(s.user,i.user.blocked);const r=["0","1","2","3","4","4im"],c=this.getWarningLevel(i.user.talk||"");r.indexOf(c)>r.indexOf(this.warnings.get(s.user)||"0")&&this.warnings.set(s.user,c);const u=["disallow","warn","showcaptcha","tag","none"],g=u.length;let v=g-1;for(let e=0;e<g;e++)if(s.result.has(u[e])){v=e;break}const f={page:{namespace:s.ns,title:s.title,get history(){var e;return null!==(e=o.queue.histories.get(s.title))&&void 0!==e?e:i.page.history},get watched(){var e;return null!==(e=o.queue.watchlist.get(s.title))&&void 0!==e?e:i.page.watched},metadata:i.page.metadata,categories:i.page.categories,protection:i.page.protection},user:{name:s.user,ip:o.util.isIPAddress(s.user),temp:o.util.isTempAccount(s.user),anon:o.util.isIPAddress(s.user)||o.util.isTempAccount(s.user),edits:Math.max(i.user.edits,(null===(h=i.user.contributions)||void 0===h?void 0:h.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(s.user))&&void 0!==e?e:i.user.contributions},warning:this.getWarningLevel(i.user.talk||""),warnings:this.getWarningHistory(i.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(s.user))&&void 0!==e?e:i.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(s.user))&&void 0!==e?e:i.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(s.user))&&void 0!==e?e:i.user.talk}},mentions:a,AI:{edit:null,username:null},id:s.id,revid:s.revid,timestamp:s.timestamp,comment:i.parsedcomment,minor:!1,diff:i.edit.diff,sizediff:null===(m=s.diff)||void 0===m?void 0:m.size,ores:+(1-v/(g-1)).toFixed(2),filters:s.entries.map(e=>({id:(null==e?void 0:e.filter_id)||"-1",filter:null==e?void 0:e.filter}))||[],reverts:i.page.reverts,propagating:!1,reviewed:!1,history:!1,group:p.groups[e],type:e,simple:n,origin:s};!n&&o.AI&&(o.store.settings.AI.edit_analysis.enabled&&i.edit.diff&&o.AI.analyze.edit(f).then(e=>f.AI.edit=e).catch(e=>f.AI.edit={error:e.message}).finally(()=>{var e;f.id===(null===(e=this.current.item)||void 0===e?void 0:e.id)&&o.gui.updateAIAnalysisDisplay(f.AI.edit)}),f.user.anon||o.store.whitelist.users.has(f.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(f).then(e=>{f.AI.username=e,e.flag&&this.promptUAA(f,e)}).catch(e=>f.AI.username={error:e.message})),d.push(f)}}}return d.forEach(e=>{if(e.comment){const t=(new DOMParser).parseFromString(e.comment,"text/html").body;t.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,n]=e.trim().split(/\s+/,2),s=new URL(t,`https://${this.ws.server}`).href;return n?`${s} ${n}`:s}).join(", ");e.setAttribute("srcset",t)}),e.comment=t.innerHTML;const n=(t.textContent||"").trim();e.has_comment=Boolean(n),!1===e.mentions.comment&&(e.mentions.comment=o.util.match(l,n)),e.mentions&&(e.mentions.has=Object.values(e.mentions).some(e=>e))}else e.has_comment=!1}),d}previous(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});if("pending"===this.current.type)return this.current.item=this.current.queue[Math.max(e-1,0)],this.ws.gui.renderQueue();if(e<=0){if(0===this.current.history.length)return;return this.current.queue.unshift(this.current.history.pop()),this.current.item=this.current.queue[0],this.ws.gui.renderQueue()}this.current.item=this.current.queue[e-1],this.ws.gui.renderQueue()}next(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});if(-1===e)return this.current.item=this.current.queue[0],this.ws.gui.renderQueue();if("pending"===this.current.type)return this.current.item=this.current.queue[Math.min(e+1,this.current.queue.length-1)],this.ws.gui.renderQueue();const t=this.current.item,n=p.groups[t.type];if(!t.reviewed&&("edit"===n||"abuselog"===n&&t.revid)){"watchlist"===t.type&&this.ws.api.markWatchlistSeen(t.page.title,t.id);const e="abuselog"===t.type?t.revid:t.id;if(["recent","watchlist","abuselog"].filter(e=>e!==t.type).forEach(t=>{this.queues[t].queue="abuselog"===t?this.queues[t].queue.filter(n=>n.revid!==e||(this.queues[t].history.push({...n,history:performance.now()}),!1)):this.queues[t].queue.filter(n=>n.id!==e||(this.queues[t].history.push({...n,history:performance.now()}),"watchlist"===t&&this.ws.api.markWatchlistSeen(n.page.title,n.id),!1))}),"abuselog"!==n){let e=this.queues.abuselog.queue.filter(e=>t.user.name===e.user.name&&t.page.title===e.page.title&&Math.abs(new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())<1e4);e.length>0&&Promise.allSettled(e.map(async e=>{let t=e.revid;return t||(t=await this.ws.api.getAbuseLogRevid(e.id)),t?(e.revid=t,{id:e.id,revid:t}):null})).then(e=>{const t=e.map(e=>"fulfilled"===e.status?e.value:null).filter(e=>e);this.queues.abuselog.queue=this.queues.abuselog.queue.filter(e=>!t.some(t=>t.revid===e.revid)),"abuselog"===this.current.type&&(t.forEach(e=>this.ws.gui.removeQueueItem("abuselog",e.id)),this.ws.gui.renderQueue(this.queues.abuselog.queue,this.queues.abuselog.item,"abuselog"))}).catch(()=>{})}}t.reviewed=!0,t&&this.ws.AI&&this.ws.AI.cancel.edit(t.id),this.current.queue.splice(e,1),this.ws.gui.removeQueueItem(this.current.type,t.id),0===this.current.queue.length?this.current.item=null:e<this.current.queue.length?this.current.item=this.current.queue[e]:this.current.item=this.current.queue[this.current.queue.length-1],t&&"edit"===p.groups[this.current.type]&&this.promptWelcome(t),this.current.history.push({...t,history:performance.now()}),this.ws.gui.renderQueue()}canGoPrevious(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});return-1===e?this.current.history.length>0:"pending"===this.current.type?e>0:0!==e||this.current.history.length>0}canGoNext(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});return-1===e?Boolean(this.current.queue[0]):"pending"!==this.current.type||e<this.current.queue.length-1}clear(e){"pending"!==e&&(this.queues[e].item=null,this.queues[e].queue=[],this.current.type===e&&(this.ws.gui.newCurrentItem(null),this.ws.gui.clearQueueItems()))}async promptWelcome(e){var t,n,s,i;if(!this.ws.store.settings.auto_welcome.enabled&&null!==(t=e.user)&&void 0!==t&&t.anon&&0!==((null===(n=e.user)||void 0===n?void 0:n.edits)||0)&&void 0!==(null===(s=e.user)||void 0===s?void 0:s.talk)&&!this.noWelcome.has(null===(i=e.user)||void 0===i?void 0:i.name))try{var a;const t=`User talk:${e.user.name}`,n=await this.ws.api.pagesExist([t]);if(void 0!==n[t])return null!==(a=void this.talks.set(e.user.name,n[t]))&&void 0!==a?a:n[t];await this.ws.gui.settings.waitForClose();const s=await this.ws.gui.dialog.confirm("Auto-Welcome User",`Would you like to welcome <span class="confirmation-modal-username">${this.ws.util.escape(e.user.name)}</span>?<br><br>\n\t\t\t\t\t<span style="font-size: 0.9em; color: #888;">Editing: <strong>${this.ws.util.escape(e.page.title)}</strong></span>`,{username:e.user.name,hideUAA:!1});this.noWelcome.add(e.user.name),s&&this.ws.execute({actions:[{name:"welcome-user",params:{template:"Auto"}}]},void 0,void 0,e)}catch(e){console.error("Error during auto-welcome check:",e)}}promptUAA(e,t){var n,s,i;return n=c,s=this,i=l(c,this).then(()=>d(u,this,g).call(this,e,t)).catch(()=>{}),n.set(d(n,s),i),l(c,this)}async propagate(e,t){if(e.propagating)return await e.propagating;if(e.simple){let n;e.propagating=new Promise(e=>n=e);const[s]=await this.generate(e.type,[e.origin],!1,{bypass:t});s.history=e.history,Object.assign(e,s),n(),e.propagating=!1}else this.generate(e.type,[e.origin],!1,{bypass:t}).then(([t])=>{const n=e.revid;t.history=e.history,Object.assign(e,t),e.revid=n})}loadFromItem(e){const t=this.current.type;if(p.areSameGroup(t,"edit")&&("pending"!==t||"edit"!==e.type)){this.queues[t].queue=this.queues[t].queue.filter(t=>t.id!==e.id);const n=this.queues[t].queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});n>-1&&(this.queues[t].queue[n]=e)}this.queues[t].item=this.queues[t].queue.find(t=>t.id===e.id)||e,this.ws.gui.renderQueue()}async loadFromRevision(e,t){try{let n;if(this.ws.gui.updateDiffDisplay("loading"),this.cache.full.has(t))n=this.cache.full.get(t);else{let s;if(this.cache.simple.has(t)){const e=this.cache.simple.get(t);s={revid:e.id,parentid:e.prior,ns:e.page.namespace,title:e.page.title,user:e.user.name,timestamp:e.timestamp,parsedcomment:e.comment,tags:e.origin.tags,sizediff:e.sizediff,minor:e.minor}}else{const n=await this.ws.api.getRevision(e,t,!0);if(!n)throw new Error("Revision not found");s={revid:n.revid,parentid:n.parentid,ns:n.ns,title:e,user:n.user,timestamp:n.timestamp,parsedcomment:n.parsedcomment,tags:n.tags,size:n.size,oldlen:n.oldlen||0,newlen:n.size,minor:n.minor}}[n]=await this.generate("edit",[s],!1,{bypass:!0})}const s=this.current.type;if(p.areSameGroup(s,"edit")&&"pending"!==s&&"abuselog"!==s){this.queues[s].queue=this.queues[s].queue.filter(e=>e.id!==n.id);const e=this.queues[s].queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});e>-1&&(this.queues[s].queue[e]=n)}this.queues[s].item=n,this.ws.gui.renderQueue()}catch(e){console.error("Error loading from revision:",e),document.querySelector("#diff-container").innerHTML=`<div class="error">Failed to load revision: ${this.ws.util.escape(e.message)}</div>`}}getWarningLevel(e){const t=["0","1","2","3","4","4im"];let n="0";const s=this.ws.util.monthSectionName(),i=this.ws.util.getPageSections(e);for(const e of i)if(e.title===s){const s=e.content.match(/<!-- Template:[\w-]+?(\d(?:i?m)?) -->/g);if(null===s)break;const i=[...s.map(e=>{const t=e.match(/<!-- Template:[\w-]+?(\d(?:i?m)?) -->/);return t?t[1].toString():"0"}),n].map(e=>[e,t.indexOf(e)]);n=i.sort((e,t)=>t[1]-e[1])[0][0]}return n}getWarningHistory(e){const t=[],n=this.ws.util.monthSectionName(),s=this.ws.util.getPageSections(e);for(const e of s)if(e.title===n){const n=e.content.matchAll(/<!-- Template:([\w-]+?)(\d(?:i?m)?) -->([^]+?)(?=<!-- Template:|$)/g);for(let s of n){const n=s[1],i=s[2],a=s[3],r=a.match(/(\d{2}:\d{2}.*?\d{4} \(UTC\))/);let o=r?r[1]:null;if(o&&(o=o.replace(/<[^>]*>/g,"")),o){const[,e,t,n,s]=o.match(/(\d{2}:\d{2}), (\d{1,2}) ([A-Za-z]+) (\d{4})/),i=["January","February","March","April","May","June","July","August","September","October","November","December"].indexOf(n);o=new Date(Date.UTC(s,i,t,...e.split(":"))).toUTCString()}else o=null;let l=null;const d=a.match(/\[\[User(?:[ _]talk)?:([^\]|]+)/i);d&&(l=d[1].trim());const c=a.match(/\[\[([^\]]+?)\]\]/),u=c?c[1]:null;t.push({template:n,level:i,timestamp:o,username:l,article:u,section:e.title})}}return t}}async function g(e,t){if(e.user.anon)return;if(this.ws.store.whitelist.users.has(e.user.name))return;if(!t.issues||0===t.issues.length)return;if(!t.explanation)return;const n=t.issues.map(e=>`${e.severity} ${e.policy} violation`).join(", "),s=Math.round(100*t.confidence),i=e.user.name;await this.ws.gui.settings.waitForClose();if(await this.ws.gui.dialog.confirm("Report Username to UAA",`\n\t\t\t\tThe username <span class="confirmation-modal-username">${this.ws.util.escape(i)}</span> for ${n}.<br><br>\n\t\t\t\t<strong>AI Confidence:</strong> ${s}%<br>\n\t\t\t\t<strong>Reasoning:</strong> ${t.explanation}<br>\n\t\t\t`,i)){await this.ws.gui.settings.waitForClose();const t=await this.ws.gui.dialog.UAA(e.user.name);t&&this.ws.execute({actions:[{name:"report-user-to-uaa",params:{reason:t}}]},void 0,void 0,e)}}t.Queue=p,o(p,"refresh",1e3),o(p,"types",["recent","pending","watchlist","abuselog","users"]),o(p,"groups",{void:"void",recent:"edit",pending:"edit",watchlist:"edit",edit:"edit",abuselog:"abuselog",users:"logevent"})},7054(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.WikiShield=void 0;var s=n(7852),i=n(3241),a=n(8169),r=n(2535),o=n(4674),l=n(6151),d=n(372),c=n(8469),u=n(8678),p=n(9501),g=n(9808);function h(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function m(e,t){return e.get(v(e,t))}function v(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var f,b,w,y=new WeakMap,x=new WeakSet;class k{constructor(e,t,n,s,l){var u,g;h(u=this,g=x),g.add(u),function(e,t,n){h(e,t),t.set(e,n)}(this,y,{ready:[]}),this.mobile=e,this.__DEV__=l,this.started=!1,this.server=t,this.storage=new p.StorageManager,this.defaultStorage=new p.StorageManager,this.defaultStorage.load(),this.util=new i.Utility(this),this.api=new r.API(this,t,n,s),this.notifications=new o.Notifications(this),this.rights={},this.groups={},this.api.account().then(async e=>{this.rights=e.rights.reduce((e,t)=>({...e,[t]:!0}),{}),this.groups=e.groups.reduce((e,t)=>({...e,[t]:!0}),{});{const e=this.rights.review&&this.api.hasPendingChanges;document.querySelector("#queue-tab-pending").classList.toggle("hidden",!e),e||"pending"!==this.queue.current.type||this.queue.switch("recent")}await v(x,this,S).call(this),this.cleanup(),setInterval(()=>this.cleanup(),1e4),v(x,this,_).call(this,"ready")}),this.gui=new c.GUI(this),this.queue=new d.Queue(this),this.audio=new a.AudioManager(this),this.time={load:null,save:null}}get store(){return this.storage.data}disable(e,t){electron.disable(e,t)}on(e,t,n={}){return m(y,this)[e]&&m(y,this)[e].push({callback:t,options:n}),this}async init(e=null){return this.gui.build(),await this.audio.init(),await v(x,this,S).call(this,e)}async noinit(e=null){var t;const n=await v(x,this,S).call(this,e);if(null===(t=this.AI)||void 0===t||t.cancel.all(),this.store.settings.AI.enabled)if("Ollama"===this.store.settings.AI.provider)this.AI=new u.AI.providers.Ollama(this,this.store.settings.AI.Ollama);else this.AI=null;else this.AI=null;{const e=this.store.UI.queue.width;document.body.querySelector("#queue").style.width=e,document.body.querySelector("#right-container").style.width=`calc(100% - ${e})`}{const e=this.store.UI.details.width;document.body.querySelector("#right-details").style.width=e,document.body.querySelector("#right-top").style.width=e,document.body.querySelector("#main-container").style.width=`calc(100% - ${e})`}return this.gui.settings.update(),n}async start(){this.gui.start(),this.update(),this.queue.fetch(),this.started=!0}async update(){const e=performance.now();try{await this.api.account().then(e=>{this.rights=e.rights.reduce((e,t)=>({...e,[t]:!0}),{}),this.groups=e.groups.reduce((e,t)=>({...e,[t]:!0}),{})}),await this.api.getGlobalUserInfo(this.api.username).then(e=>{var t;(t=this.rights).rollback||(t.rollback=e.rights.includes("rollback"))}),this.rights.rollback||"LuniZunie"===this.api.username||this.disable("Rollback required","Your account no longer has rollback rights, which are required to use WikiShield.");{const e=this.rights.review&&this.api.hasPendingChanges;document.querySelector("#queue-tab-pending").classList.toggle("hidden",!e),e||"pending"!==this.queue.current.type||this.queue.switch("recent")}this.save()}catch(e){console.error("Update error:",e)}setTimeout(()=>this.update(),Math.max(0,2500-(performance.now()-e)))}cleanup(){const e=Date.now();let t=!1;for(const[,n]of Object.entries(this.store.highlight))for(const[s,i]of n.entries())e>=i[1]&&(n.delete(s),t=!0);for(const[,n]of Object.entries(this.store.whitelist))for(const[s,i]of n.entries())e>=i[1]&&(n.delete(s),t=!0);t&&this.queue.current.item&&this.gui&&this.gui.renderQueue(this.queue.current.queue,this.queue.current.item)}controller(e){var t,n,s;if(this.started){if(this.gui.dialog.dialogs.active)return this.gui.dialog.controller(e);if(this.gui.settings.active)return this.gui.settings.controller(e);if(!("INPUT"===(null===(t=e.target)||void 0===t?void 0:t.tagName)||"TEXTAREA"===(null===(n=e.target)||void 0===n?void 0:n.tagName)||null!==(s=e.target)&&void 0!==s&&s.isContentEditable)&&"keydown"===e.type){if(e.repeat&&!this.store.settings.repeat_control_scripts)return;const t=(0,g.buildShortcut)(e);for(const n of this.store.control_scripts)n.keys.every(e=>e===t)&&(e.preventDefault(),this.execute(n))}}}async execute(e,t=!0,n=null,s=null){const i=(e,t)=>!e.name||("if"===e.name?this.gui.events.conditions[e.condition.name].check(this,t,e.condition.params):"if not"===e.name&&!this.gui.events.conditions[e.condition.name].check(this,t,e.condition.params));if(null===n){null!=s||(s=this.queue.current.item||1);const t=[e];let a=0;for(;t.length>0;){const e=t[0];if(i(e,s)){if(!e.actions){t.splice(0,1);continue}t.push(...e.actions)}e.name&&"if"!==e.name&&"if not"!==e.name&&this.gui.events.events[e.name].progress&&a++,t.splice(0,1)}if(a>0){let e=0;const t=new l.ProgressBar;n=(n,s)=>{const i="Done"===n?1:e/a;t.set(n,i,s),e++}}else n=e=>{}}if(i(e,s))for(const i of e.actions){if(!("name"in i))continue;const e={...i.params};for(const t of(null===(a=this.gui.events.events[i.name])||void 0===a||null===(r=a.parameters)||void 0===r?void 0:r.call(a,this,s))||[]){var a,r;t.id&&!(t.id in e)&&"default"in t&&(e[t.id]=t.default)}if("if"===i.name||"if not"===i.name)t=await this.execute(i,t,n,s);else{const a=this.gui.events.events[i.name],r=()=>{t=!1,this.audio.playSound(["action","failed"]),a.progress&&n(a.progress,!0)};try{if(t||!a.continuity){var o,d;const t=null!==(o=null===(d=a.valid)||void 0===d?void 0:d.call(a,this,s,e))&&void 0!==o?o:{valid:!0};if(t.valid){a.progress&&(n(a.progress,!1),this.audio.playSound(["action","default"])),this.store.statistics.actions_executed.total++;const t=await a.script(this,s,e);var c;if(!1===t.valid)r(),"reason"in t&&this.gui.dialog.toast("Action failed",t.reason,"error");else this.store.statistics.actions_executed.successful++,null===(c=a.successful)||void 0===c||c.call(a,this,s,e)}else r(),"reason"in t&&this.gui.dialog.toast("Action skipped",t.reason,"error")}}catch(e){r(),this.gui.dialog.toast("Please report to developer",`An error occurred while executing action "${i.name}". Check the console for details.`,"error"),console.error(`Error executing action "${i.name}":`,e.message||String(e))}}}return e.name||n("Done",!t),t}async getDEFCON(){const e="User:EnterpriseyBot/defcon",t=(await this.api.getPagesContent([e]))[e],n=t.match(/level\s*=\s*(\d+)/),s=t.match(/info\s*=\s*([\d.]+)/);return{level:n?Number(n[1]).toLocaleString():null,info:s?Number(s[1]).toLocaleString():null}}export(e=!0){this.time.save=performance.now(),this.store.statistics.session_time+=this.time.save-this.time.load;const{string:t,logs:n}=this.storage.encode();return e&&p.StorageManager.output(n),t}backup(){return this.time.save=performance.now(),this.store.statistics.session_time+=this.time.save-this.time.load,this.time.load=this.time.save,electron.localStorage.set(`WikiShield:BackupStorage-${this.api.username}`,`${Date.now()};${this.export(!1)}`),!0}async save(){this.backup();const e=`${Date.now()};${this.export(!1)}`,t=this.api.username;if(window.isFinite)electron.saveAccount(t,e);else try{const n=await this.api.postWithToken({action:"options",optionname:"userjs-wikishield-storage",optionvalue:e});"success"===(null==n?void 0:n.options)||console.error(`[WikiShield] Failed to save account data for ${t}:`,n)}catch(e){console.error(`[WikiShield] Failed to save account data for ${t}:`,e)}}async load(){try{var e,t;return null!==(e=null===(t=[electron.localStorage.get(`WikiShield:BackupStorage-${this.api.username}`),(await this.api.post({action:"query",meta:"userinfo",uiprop:"options",format:"json"})).query.userinfo.options["userjs-wikishield-storage"]].reduce((e,t)=>{var n,s;null!=t||(t="0;e30=");let i=0,a=t;return t.includes(";")&&([i,a]=t.split(";",2),i=parseInt(i,10)),new Date(i).toLocaleString(),new Date(null!==(n=null==e?void 0:e.timestamp)&&void 0!==n?n:0).toLocaleString(),i>0&&i>(null!==(s=null==e?void 0:e.timestamp)&&void 0!==s?s:0)?{timestamp:i,data:a}:e},null))||void 0===t?void 0:t.data)&&void 0!==e?e:"e30="}catch(e){var n;return null!==(n=void console.error("Failed to load storage from wiki:",e))&&void 0!==n?n:"e30="}}page(e,t,n=!0){return`https://${this.server}/${t?`w/index.php${e}`:`wiki/${n?encodeURIComponent(e):e}`}`}open(e,t){"force"===t?t=!1:t||(t=!this.store.settings.wikipedia_popups.enabled),t?electron.openExternal(e):electron.openInBrowser(e).then(e=>{e&&requestAnimationFrame(()=>{if(this.gui.dialog.popups.push(e),!document.getElementById("popup-blocker")){const e=document.createElement("div");e.id="popup-blocker",e.innerText="Please close the popup or click anywhere on this page to continue using WikiShield.",document.body.appendChild(e),this.gui.dialog.check()}})})}}function _(e){if(m(y,this)[e])for(const n of m(y,this)[e])try{n.callback()}catch(e){}finally{var t;!0===(null===(t=n.options)||void 0===t?void 0:t.once)&&(m(y,this)[e]=m(y,this)[e].filter(e=>e!==n))}return this}async function S(e=null){const t=this.storage.decode(null!=e?e:await this.load()).logs;var n,s,i;(this.time.load=performance.now(),this.store.settings.AI.enabled)?"Ollama"===this.store.settings.AI.provider?"function"==typeof(null===(n=u.AI.providers)||void 0===n?void 0:n.Ollama)?this.AI=new u.AI.providers.Ollama(this,this.store.settings.AI.Ollama):(console.error("AI.providers.Ollama is not available. Falling back to null."),this.AI=null):(null===(s=this.AI)||void 0===s||s.cancel.all(),this.AI=null):(null===(i=this.AI)||void 0===i||i.cancel.all(),this.AI=null);return t}t.WikiShield=k,f=k,b="config",w={version:s.VERSION,changelog:{version:"6",HTML:fetch("https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/CHANGELOG.html").then(e=>e.text()).catch(()=>"<em>Could not fetch changelog.</em>")},pages:{AIV:"Wikipedia:Administrator intervention against vandalism",UAA:"Wikipedia:Usernames for administrator attention",RFPP:"Wikipedia:Requests for page protection/Increase",SRG:"Steward requests/Global"},config:{refresh:{recent:2e3,pending:2e3,watchlist:2e3,users:2e3},historyCount:10}},(b=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(b))in f?Object.defineProperty(f,b,{value:w,enumerable:!0,configurable:!0,writable:!0}):f[b]=w},4018(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.namespaces=void 0;t.namespaces=[{name:"Main",id:0,analysis_description:{edit:"",username:""}},{name:"Talk",id:1,analysis_description:{edit:"",username:""}},{name:"User",id:2,analysis_description:{edit:"Flag content unrelated to Wikipedia, such as self-promotion. If the page looks like a Wikipedia article, check that it isn't an obvious hoax, and that it is a subpage. Do not follow strict standards for these pages.",username:"Check whether the username matches the base page title. Most often, a user page should only be edited by that user. Consider alternative accounts, like User:Example creating User:Example (alt)."}},{name:"User talk",id:3,analysis_description:{edit:"",username:""}},{name:"Project",id:4,analysis_description:{edit:"",username:""}},{name:"Project talk",id:5,analysis_description:{edit:"",username:""}},{name:"File",id:6,analysis_description:{edit:"",username:""}},{name:"File talk",id:7,analysis_description:{edit:"",username:""}},{name:"MediaWiki",id:8,analysis_description:{edit:"",username:""}},{name:"MediaWiki talk",id:9,analysis_description:{edit:"",username:""}},{name:"Template",id:10,analysis_description:{edit:"",username:""}},{name:"Template talk",id:11,analysis_description:{edit:"",username:""}},{name:"Help",id:12,analysis_description:{edit:"",username:""}},{name:"Help talk",id:13,analysis_description:{edit:"",username:""}},{name:"Category",id:14,analysis_description:{edit:"",username:""}},{name:"Category talk",id:15,analysis_description:{edit:"",username:""}},{name:"Portal",id:100,analysis_description:{edit:"",username:""}},{name:"Portal talk",id:101,analysis_description:{edit:"",username:""}},{name:"Draft",id:118,analysis_description:{edit:"",username:""}},{name:"Draft talk",id:119,analysis_description:{edit:"",username:""}},{name:"MOS",id:126,analysis_description:{edit:"",username:""}},{name:"MOS talk",id:127,analysis_description:{edit:"",username:""}},{name:"TimedText",id:710,analysis_description:{edit:"",username:""}},{name:"TimedText talk",id:711,analysis_description:{edit:"",username:""}},{name:"Module",id:828,analysis_description:{edit:"Check whether the edit is meaningful Lua code. In this namespace, anything that isn't written in Lua can be safely assumed to be vandalism. Be careful about multi-line strings, as they might contain non-Lua code: check the context of the edit to make sure. Additionally, check if the edit introduces any obvious Lua syntax errors.",username:""}},{name:"Module talk",id:829,analysis_description:{edit:"",username:""}},{name:"Event",id:1728,analysis_description:{edit:"",username:""}},{name:"Event talk",id:1729,analysis_description:{edit:"",username:""}}]},6400(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.profanity=void 0;const n="\\*#\\-",s=`[${n}a4]`,i=`[${n}b6]`,a=`[${n}ck]`,r=`[${n}h]`,o=`[${n}i1y]`,l=`[${n}o0]`,d=`[${n}t7]`,c={a:s,b:i,c:a,d:`[${n}d6]`,e:`[${n}e3]`,f:`[${n}f]`,g:`[${n}g9]`,h:r,i:o,j:`[${n}j]`,k:`[${n}k]`,l:`[${n}l1]`,m:`[${n}m]`,n:`[${n}n]`,o:l,p:`[${n}p9]`,q:`[${n}q9]`,r:`[${n}r]`,s:`[${n}sz526]`,t:d,u:`[${n}uv]`,v:`[${n}vu]`,w:`[${n}w]`,x:`[${n}x]`,y:`[${n}y]`,z:`[${n}zs25]`,0:`[${n}0]`,1:`[${n}1]`,2:`[${n}2]`,3:`[${n}3]`,4:`[${n}4]`,5:`[${n}5]`,6:`[${n}6]`,7:`[${n}7]`,8:`[${n}8]`,9:`[${n}9]`};class u{constructor(e={}){this.conversion={};for(const[t,n]of Object.entries(e))for(const e of n)this.conversion[e]&&console.warn(`Profanity lookalike collision: ${e} is already mapped to ${this.conversion[e]}, remapping to ${t}`),this.conversion[e]=t}removeAccents(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}obscureReplacements(e){return e.replace(/(\/[|\\]\/|\\[|\\]\\)/g,"n").replace(/&/g,"and").replace(/zero/g,"0").replace(/one/g,"1").replace(/two/g,"2").replace(/three/g,"3").replace(/four/g,"4").replace(/five/g,"5").replace(/six/g,"6").replace(/seven/g,"7").replace(/eight/g,"8").replace(/nine/g,"9")}parseString(e,t=!1){e=t?e.replace(/[._,;:|]/g," ").replace(/\s+/g," ").toLowerCase():e.replace(/[\s._,;:|]/g,"").toLowerCase(),e=this.removeAccents(e);let n="";for(const t of e)this.conversion[t]?n+=this.conversion[t]:n+=t;return e=this.obscureReplacements(n)}analyzeObfuscation(e,t,n,s,i=!1){const a=e.substring(t,n);let r=0;if(/\s/.test(a)&&!i)return-.95;const o=this.countCaseChanges(a);if(o>0){o/Math.max(1,a.length-1)>.3&&(r+=.3)}if(/[._,;:|]/.test(a)){const e=(a.match(/[._,;:|]/g)||[]).length,t=(a.match(/[a-zA-Z0-9]/g)||[]).length;if(t>0){const n=e/t;n>.3&&(r+=Math.min(.5,.7*n))}}const l=this.checkWordBoundaries(e,t,n,s,i);r+=l;const d=this.checkSubstitution(a,s);if(d>0&&(r+=d),l<0){if(!this.isStandaloneWord(e,t,n)){this.isCamelCaseBoundary(e,t,n)?r+=.2:r-=.2}}return Math.max(-1,Math.min(1,r))}countCaseChanges(e){let t=0;for(let n=1;n<e.length;n++){const s=e[n-1],i=e[n];if(/[a-zA-Z]/.test(s)&&/[a-zA-Z]/.test(i)){s===s.toUpperCase()!==(i===i.toUpperCase())&&t++}}return t}checkWordBoundaries(e,t,n,s,i=!1){const a=t>0?e[t-1]:"",r=n<e.length?e[n]:"",o=e.substring(Math.max(0,t-8),Math.min(e.length,n+8)).toLowerCase(),l=[/WMF/,/pass(word|phrase|port|enger|ion|ive|ed|ing|es|key|code|over|by|able)/i,/class(room|mate|ified|es|ic|y|ification)/i,/grass(land|hopper|y|es)/i,/bass(ist|oon|line|es)/i,/mass(ive|acre|age|es|achusetts)/i,/assign(ment|ed|ing|s|ee|or)/i,/assess(ment|ed|ing|or|s)/i,/assemble|assembly|assertion|asset|assist|assume|assure|associate|association/i,/brass|crass|harass|morass|surpass|trespass|compass|embassy|embarrass/i,/cock(pit|tail|roach|ade|atoo|le|ney)/i,/scunthorpe|penistone|shitterton|lightwater|middlesex|sussex|essex|wessex/i,/dick(ens|inson|son|ey|ie)/i,/analyst|analytics|analyze|canal|banal/i,/therapist|therapeutic|therapy/i,/cumul(ative|us|at)|circum(stance|ference|cise|vent|navigate|scribe)/i,/butter(cup|fly|milk|scotch|fingers|nut)|buttress|button|rebuttal/i,/count(ry|er|ess|down|ing|ed|able|enance|erfeit|erpart)/i,/grape|drape|scrape|landscape|escapade/i,/shell(fish|fire|ter|ed)|eggshell|nutshell|bombshell|seashell/i,/whole(sale|some|hearted)/i,/exchange|exchequer/i,/title|titled|subtitle|entitle/i,/sextant|sextet|bisect|insect|intersect|section|sector/i,/cocktail|peacock|hancock|hitchcock|babcock|woodcock/i,/niger(ia|ian)|montenegro/i,/penisten|penetrat|penal(ty|ize|ise)|penchant|pencil|pendant|penguin|peninsula/i,/manslaughter|slaughterhouse/i,/shitake|shiitake/i,/arsenic|arsenal/i,/cummings|scumble/i,/smother|another|mother(board|land|hood)/i,/wanton|wanting|wanted|warrant/i,/trigger|bigger|digger|jigger|rigger|vigor|figure/i,/ballad|ball(room|park|istic|oon|et|ot|ard|ast)/i,/grape(fruit|vine|shot)/i,/raptor|rapport|rapid|rapier|rapture/i,/killed|killer|skill(ed|ful|s)|killjoy|kiln|kilo(gram|meter|byte|watt)/i,/bomb(ard|astic|shell|er|ing|ay)/i,/hellenic|hello|shell|othello/i,/crack(down|le|ed|ing|erjack)|firecracker/i,/jewel{1,2}/i,/skill/i];for(const e of l)if(e.test(o))return-.8;const d=/[a-zA-Z]/.test(a),c=/[a-zA-Z]/.test(r);if(d&&c){const i=e.substring(Math.max(0,t-8),t).toLowerCase(),a=e.substring(n,Math.min(e.length,n+8)).toLowerCase(),r=e.substring(Math.max(0,t-8),Math.min(e.length,n+8)).toLowerCase();return this.analyzePaddingLikelihood(i,a,s)>=.4||r.length>15&&r===r.toLowerCase()&&!/\s/.test(r)?0:-.5}if(d||c){const i=e.substring(Math.max(0,t-8),t).toLowerCase(),a=e.substring(n,Math.min(e.length,n+8)).toLowerCase();this.analyzePaddingLikelihood(i,a,s);return 0}const u=e.substring(t,n);return/\s/.test(u)&&!i?-.9:0}analyzePaddingLikelihood(e,t,n){let s=0;const i=/[bcdfghjklmnpqrstvwxyz]{3,}/i;(i.test(e)||i.test(t))&&(s+=.4);const a=t.match(/([a-z])\1{1,}/i);if(a&&a[0].length>=2){if(t.indexOf(a[0])>=t.length-3){(!/\b(ll|ss|tt|nn|mm|pp|dd|bb|gg|ff)$/i.test(a[0])||t.length<=3)&&(s+=.35)}}if(e.length<=2&&e.length>0&&(s+=.25),t.length<=3&&t.length>0){/^(er|ed|ing|ion|ly|al|ful|less|ness|ment|s)$/i.test(t)||(s+=.2)}/([qx][^u]|[jqxz]{2}|[bcdfghjklmnpqrstvwxz]{4,})/i.test(e+t)&&(s+=.3);const r=e+t;if(r.length>0){(r.match(/[aeiou]/gi)||[]).length/r.length<.2&&(s+=.3)}return Math.min(1,s)}checkSubstitution(e,t){const n=/[0-9@$!]/;if(!n.test(e))return 0;let s=0;for(const t of e)n.test(t)&&s++;const i=s/e.length;return Math.min(.3,.6*i)}isStandaloneWord(e,t,n){const s=t>0?e[t-1]:" ",i=n<e.length?e[n]:" ",a=/[\s.,;:!?()[\]{}"'`~\-_]/;return a.test(s)&&a.test(i)}isCamelCaseBoundary(e,t,n){if(0===t||n===e.length)return!1;const s=e[t-1],i=e[t],a=e[n-1],r=e[n],o=/[A-Z]/.test(i),l=/[a-z]/.test(s),d=(/[a-z]/.test(r),/[a-z]/.test(a));return!!(l&&o||d&&/[A-Z]/.test(r))}findMatchPosition(e,t,n,s){const i=e.toLowerCase();let a=-1,r=-1,o=-1;for(let n=0;n<=i.length-t.length;n++){const i=this.parseString(e.substring(n,n+t.length+10));if(i.includes(s)){const e=this.calculateSimilarity(s,i.substring(0,s.length));e>o&&(o=e,a=n,r=n+t.length)}}return{start:a,end:r}}calculateSimilarity(e,t){const n=Math.min(e.length,t.length);let s=0;for(let i=0;i<n;i++)e[i]===t[i]&&s++;return s/Math.max(e.length,t.length)}match(e){const t=this.parseString(e),n=[];for(const s of u.hits)if(s.term){const i=s.term,a=s.severity||.5,r=s.note||null,o=s.multiWord||!1;if(1===i.length&&/[^\x00-\x7F]/.test(i))continue;const l=o?this.parseString(e,!0):t,d=i.split("").reduce((e,t)=>{var n;if(o&&" "===t)return e+" *";return e+(null!==(n=c[t])&&void 0!==n?n:t)},""),u=new RegExp(d,"gi");let p;const g=this.buildPositionMap(e,o);for(;null!==(p=u.exec(l));){const t=p[0],l=p.index,d=l+t.length,c=g[l]||l,u=void 0!==g[d-1]?g[d-1]+1:d,h=this.analyzeObfuscation(e,c,u,i,o);let m=this.calculateMatchConfidence(t,i);h<-.5?m*=Math.max(.01,1+4*h):h<-.2?m*=Math.max(.05,1+2.5*h):h>.5&&(m=Math.min(1,m+.08*h));if(m>=Math.max(.05,.2-.015*i.length)){const o=e.substring(c,u);if(s.ignore&&Array.isArray(s.ignore)&&s.ignore.includes(o))continue;n.push({name:i,match:t,confidence:m,obfuscation:h,severity:a,note:r,originalSegment:o})}}}else if(s.regex){const t=e.match(new RegExp(s.regex.source,"g"));if(t)for(const e of t)n.push({name:s.name,match:e,confidence:1,obfuscation:.5,severity:s.severity||.5,note:s.note||"Pattern-based detection with high confidence. Obfuscation is moderate for formatted data.",originalSegment:e})}else s.test&&s.test(e)&&n.push({name:s.name,match:e,confidence:1,obfuscation:.5,severity:s.severity||.5,note:s.note||"Test-based detection with high confidence.",originalSegment:e});return n}buildPositionMap(e,t=!1){const n={};let s=0;for(let i=0;i<e.length;i++){const a=e[i];t?/[\s._,;:|]/.test(a)&&0!==i&&/[\s._,;:|]/.test(e[i-1])||(n[s]=i,s++):/[\s._,;:|]/.test(a)||(n[s]=i,s++)}return n}findOriginalPosition(e,t){let n=0;for(let s=0;s<e.length;s++){const i=e[s];if(!/\s/.test(i)){if(n===t)return s;n++}}return t}calculateMatchConfidence(e,t){const n=/[\*#_\-]/;let s=0,i=0,a=0,r=0;for(const t of e)n.test(t)?(i++,a++,r=Math.max(r,a)):(s++,a=0);const o=s+i;if(0===o)return 0;const l=s/o;if(l<.3)return 0;if(l<.5)return.1*l;const d=r>1?Math.max(.2,1-.2*r):1,c={};for(const t of e)n.test(t)||(c[t]=(c[t]||0)+1);let u=1;for(const e of Object.values(c))e>2&&(u*=Math.max(.4,1-.15*(e-2)));const p=o/t.length,g=p>1.5?Math.max(.2,1-.4*(p-1)):1;return Math.max(0,Math.min(1,l*d*u*g))}score(e){const t=this.match(e);let n=0;for(const e of t)n+=e.confidence;return n}evaluate(e){const t=this.match(e),n=this.parseString(e);if(0===t.length)return{finalScore:0,risk:"No",matches:[],details:{baseScore:0,weightedScore:0,severityScore:0,matchCount:0,averageConfidence:0,averageObfuscation:0,averageSeverity:0,textLength:e.length,densityPenalty:0,repetitionPenalty:0,diversityBonus:0,lengthModifier:1,highConfidenceMatches:0,mediumConfidenceMatches:0,lowConfidenceMatches:0}};let s=0,i=0,a=0,r=0,o=0,l=0;const d=new Set;for(const e of t){const t=e.severity||.5,n=e.confidence;r+=n,l+=Math.pow(n,1.5)*t,o+=e.obfuscation||0,d.add(e.name),n>=.7?s++:n>=.4?i++:a++}const c=r/t.length,u=o/t.length,p=r>0?l/r:0,g=1*s+.35*i+.08*a,h=n.length,m=t.length/Math.max(h/5,1),v=.6*Math.tanh(.3*m),f={};for(const e of n)/[a-z0-9]/.test(e)&&(f[e]=(f[e]||0)+1);let b=0;const w=Object.values(f).reduce((e,t)=>e+t,0);for(const e of Object.values(f))e>3&&(b+=Math.pow((e-3)/w,1.5));const y=Math.min(.8,2*b),x=d.size/t.length,k=x>.6?1*(x-.6):0,_=Math.max(.5,Math.min(1.5,1+Math.log10(Math.max(10,h))/10)),S=u>.4?.5*(u-.4):u<-.2?.4*Math.abs(u):0,q=t.filter(e=>e.severity>=1&&e.confidence>=.5||e.confidence>=.9).length,E=g*p*_;let L=E+.5*l+k+.8*q-(v+y+S);c<.5&&(L*=Math.max(.1,1.5*c)),L>3?L=3+1.5*Math.log10(L-2):L>1.5&&(L=1.5+.8*Math.sqrt(L-1.5)),L=Math.max(0,L);let A="No";return L>=4||q>=2?A="Critical":L>=2.5?A="High":L>=1.5?A="Medium":L>=.5&&(A="Low"),{clamped:Math.max(0,Math.min(1,L/5)),finalScore:Math.round(100*L)/100,risk:A,matches:t,details:{baseScore:Math.round(100*g)/100,weightedScore:Math.round(100*E)/100,severityScore:Math.round(100*l)/100,matchCount:t.length,uniqueMatches:d.size,averageConfidence:Math.round(100*c)/100,averageObfuscation:Math.round(100*u)/100,averageSeverity:Math.round(100*p)/100,textLength:e.length,densityPenalty:Math.round(100*v)/100,repetitionPenalty:Math.round(100*y)/100,diversityBonus:Math.round(100*k)/100,lengthModifier:Math.round(100*_)/100,obfuscationPenalty:Math.round(100*S)/100,criticalPatterns:q,highConfidenceMatches:s,mediumConfidenceMatches:i,lowConfidenceMatches:a}}}}!function(e,t,n){(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(u,"hits",[{name:"URL",regex:/(?:https?:\/\/(?:www\.)?[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*(?:\/[^\s]*)?|(?:www\.)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?:\/[^\s]*)?|[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.(?:com|org|net|edu|gov|mil|int|co|io|ai|app|dev|info|biz|name|pro|museum|aero|coop|jobs|mobi|travel|xxx|ac|ad|ae|af|ag|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)(?:\/[^\s]*)?)/i,severity:.1,note:"URLs in usernames may indicate spam or advertising."},{name:"Phone number",regex:/(\+?\d{1,3}[-.\s]?|\(\+?\d{1,3}\)\s?)?(\d{3}[-.\s]?\d{3}[-.\s]?\d{4}|\d{4}[-.\s]?\d{3}[-.\s]?\d{3})/,severity:.3,note:"The pattern of numbers in this username resemble a phone number. Usernames containing personal information may be considered disruptive."},{name:"Email address",regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/,severity:.3,note:"Email addresses in usernames can indicate spam or contact sharing."},{term:"base64",severity:.2,note:"Base64 encoding may be used to obfuscate content to bypass filters."},{term:"fromhex",severity:.2,note:"Hex encoding may be used to obfuscate content to bypass filters."},{term:"1488",severity:.5,note:"Well-known Neo-Nazi symbol, however the number itself can appear in innocent contexts."},{term:"nazi",severity:1},{term:"swastika",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"卍",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"卐",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿕",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿖",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿗",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿘",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"aryan",severity:.7,note:"Associated with white supremacist ideology, though it can also be in reference to the self-designation of Indo-Iranian peoples."},{term:"fascism",severity:.5},{term:"fascist",severity:.5},{term:"facist",severity:.5},{term:"☭",severity:.5,note:"Hammer and sickle symbol, politically charged but context-dependent."},{term:"✡",severity:.4,note:"Star of David, can be used respectfully or in antisemitic contexts."},{term:"44",severity:.1,note:"Obfuscated symbol of the Nazi SS division. If appears as 'ᛋᛋ' or similar, indicates intent to reference the SS."},{term:"imbo wales",severity:.2,multiWord:!0,note:"Play on 'Jimbo Wales' name, may indicate mockery or impersonation."},{term:"sock",severity:.3,note:"May reference sockpuppet accounts but has innocent meanings."},{term:"puppet",severity:.3,note:"May reference sockpuppet accounts but has innocent meanings."},{term:"sock puppet",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"return",severity:.2,note:"Often used in usernames by sockpuppeteers."},{term:"is back",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"are back",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"timelash",severity:1,note:'Well-known sockpuppeteer ("Timelash") on Wikipedia.'},{term:"my little",severity:.8,multiWord:!0,note:"If related to 'my little pony', indicates sockpuppeteer."},{term:"my little pony",severity:1,multiWord:!0,note:"Well-known sockpuppeteer on Wikipedia."},{term:"friendship is magic",severity:1,multiWord:!0,note:"Well-known sockpuppeteer on Wikipedia."},{term:"anal",severity:.7},{term:"anus",severity:.5},{term:"sex",severity:.3},{term:"secs",severity:.05,note:"Obfuscated form of 'sex'."},{term:"seggs",severity:.2,note:"Obfuscated form of 'sex'."},{term:"willy",severity:.2,note:"Slang for penis."},{term:"wank",severity:.6,note:"British sexual slang for masturbation."},{term:"barf",severity:.3},{term:"bastard",severity:.5},{term:"batty boy",severity:.7,multiWord:!0,note:"Homophobic slur in British/Caribbean English."},{name:"bitch",regex:new RegExp(`${i+o}(${l}|${s})?${d}?${a+r}`),severity:.7},{term:"blow job",severity:.8,multiWord:!0},{term:"blowing",severity:.2,note:"Sexual innuendo but common verb."},{term:"boner",severity:.4},{term:"boob",severity:.4},{term:"booty",severity:.3},{term:"breast",severity:.4,note:"Anatomical term, but can be used inappropriately."},{term:"butt",severity:.2},{term:"bite me",severity:.5,multiWord:!0,note:"Often has defiant or provocative connotation."},{term:"butt plug",severity:.7,multiWord:!0},{term:"bollock",severity:.5,note:"British slang for testicles."},{term:"bollox",severity:.5,note:"Variant spelling of 'bollocks'."},{term:"bollix",severity:.5,note:"Variant spelling of 'bollocks'."},{term:"clit",severity:.7},{term:"cock",severity:.7},{term:"cum",severity:.7},{term:"brain dead",severity:.5,multiWord:!0,note:"Derogatory medical reference."},{term:"bukake",severity:.7},{term:"bully",severity:.5,note:"Indicates harassment behavior."},{term:"bullies",severity:.5,note:"Indicates harassment behavior."},{term:"bullied",severity:.3,note:"May indicate victimhood or boasting."},{term:"versus",severity:.4,note:"Combat/conflict framing, but legitimate word."},{term:"bumming",severity:.5,note:"British slang for anal sex or begging."},{term:"bunghole",severity:.5},{term:"cesspool",severity:.3,note:"Derogatory term for filthy place."},{term:"cesspit",severity:.3,note:"Variant of cesspool."},{term:"dick",severity:.7},{term:"prick",severity:.7},{term:"dildo",severity:.7},{term:"censor",severity:.1,note:"May indicate anti-censorship stance."},{term:"ching",severity:.8,note:"Part of racial slur against Asians."},{term:"ching chong",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"ching chang",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"wing wong",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"bot",severity:.4,note:"May indicate automated account claim."},{term:"ox long",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'cock's long'."},{term:"douche",severity:.5},{term:"cunt",severity:.7},{term:"cuck",severity:.4,note:"Derogatory term from manosphere."},{term:"curry munch",severity:.9,multiWord:!0,note:"Racist slur against South Asians."},{term:"crime",severity:.3,note:"Negative connotation but legitimate word."},{term:"pussy",severity:.7},{term:"deeznuts",severity:.3,note:"Crude joke phrase."},{term:"destroy",severity:.3,note:"Aggressive language."},{term:"destruction",severity:.3,note:"Aggressive language."},{term:"diaper",severity:.3,note:"Infantilization or fetish reference."},{term:"diarrhea",severity:.3},{term:"throbbing",severity:.5,note:"Sexual innuendo term."},{term:"dimwit",severity:.3},{term:"doo doo",severity:.3,multiWord:!0},{term:"dookie",severity:.3},{term:"fart",severity:.3},{term:"ejaculat",severity:.7},{term:"erect",severity:.5,note:"Sexual context or legitimate word."},{term:"erotic",severity:.5},{term:"fuck",severity:.8},{term:"phuck",severity:.8,note:'Alternative spelling of "fuck" to bypass detection.'},{term:"orgasm",severity:.7},{term:"rape",severity:1},{term:"lawsuit",severity:.3,note:"Legal threat implication."},{term:"fraud",severity:.5,note:"Accusation of criminal behavior."},{term:"tard",severity:.5,note:"Ableist slur suffix."},{term:"terror",severity:.7,note:"Violence/terrorism reference."},{term:"mike hunt",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'my cunt'."},{term:"mike ox",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'my cock's'."},{term:"masturbat",severity:.7},{term:"nutsack",severity:.5},{term:"ophile",severity:1,note:"Suffix for sexual predator terms like pedophile."},{term:"pedo",severity:.6},{term:"peeing",severity:.3},{term:"peanus",severity:.5,note:"Intentional misspelling of 'penis'."},{term:"penis",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"porn",severity:.7},{term:"piss",severity:.5},{term:"poop",severity:.3},{term:"prison",severity:.3,note:"Criminal context, but legitimate word."},{term:"prostitute",severity:.5,note:"Sexual work reference or insult."},{term:"queer",severity:.5,note:"Can be slur or reclaimed identity."},{term:"rectum",severity:.3,note:"Anatomical term."},{term:"report me",severity:.3,multiWord:!0,note:"Defiant/trolling phrase."},{term:"rimming",severity:.7},{term:"scrotum",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"semen",severity:.7},{term:"slut",severity:.7},{term:"sucks",severity:.3,note:"Mild profanity or legitimate verb."},{term:"sux",severity:.3,note:"Intentional misspelling of 'sucks'."},{term:"vagina",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"vadge",severity:.5,note:"Slang for vagina."},{term:"vomit",severity:.3},{term:"vulva",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"whore",severity:.7},{term:"chink",severity:1},{term:"jew",severity:.3,note:"Legitimate religious/ethnic term but tracked for antisemitic usage patterns."},{term:"nigger",severity:1},{term:"nigga",severity:1},{term:"nigguh",severity:1,note:"Phonetic spelling of racial slur."},{term:"niglet",severity:1},{term:"pajeet",severity:.7,note:"Derogatory term for South Asians."},{term:"slave",severity:.6,note:"Dehumanizing term with historical trauma, but legitimate historical uses."},{term:"master race",severity:1,multiWord:!0,note:"Nazi supremacist ideology phrase."},{term:"inferior race",severity:1,multiWord:!0},{term:"superior race",severity:1,multiWord:!0,note:"White supremacist ideology."},{term:"racist",severity:.8},{term:"racism",severity:.7},{term:"racial",severity:.3,note:"Neutral term but tracked for context in discriminatory language."},{term:"bigot",severity:.7},{term:"fag",severity:.7},{term:"taliban",severity:.7,note:"Terrorist organization reference."},{term:"antisemit",severity:1},{term:"bleed",severity:.3,note:"Can indicate violence or be medical."},{term:"bloody",severity:.3,note:"British profanity or literal blood reference."},{term:"hell",severity:.5,note:"Religious reference used as mild profanity, but legitimate uses."},{term:"damn",severity:.3},{term:"crap",severity:.3},{term:"darn",severity:.1,note:"Mild euphemism for 'damn'."},{term:"shutup",severity:.3,note:"Rude command indicating hostility."},{term:"spastic",severity:.5,note:"Ableist slur in British English, medical term in US."},{term:"disabled",severity:.1,note:"Legitimate disability term but tracked for ableist patterns."},{term:"loser",severity:.3},{term:"abuse",severity:.5,note:"Indicates harmful behavior or accusations."},{term:"spam",severity:.3,note:"Indicates unwanted content or disruption."},{term:"abusi",severity:.5,note:"Variant of 'abuse/abusive'."},{term:"hitler",severity:1},{term:"adolf",severity:.4,note:"Common name but often used in Hitler references."},{term:"gestapo",severity:1},{term:"heil",severity:.8,note:"Nazi salute reference."},{term:"final solution",severity:1,multiWord:!0,note:"Nazi euphemism for genocide."},{term:"death camp",severity:1,multiWord:!0},{term:"concentration camp",severity:1,multiWord:!0,note:"Holocaust reference, legitimate historical use but concerning in usernames."},{term:"gas chamber",severity:1,multiWord:!0},{term:"holocaust",severity:.5,note:"Historical tragedy reference, legitimate historical use."},{term:"zionis",severity:.5,note:"Political term stem, can be antisemitic depending on context."},{term:"fuhrer",severity:1},{term:"reich",severity:.7,note:"Nazi Germany reference, though legitimate German word."},{term:"massacre",severity:.7},{term:"slaughter",severity:.7},{term:"torture",severity:.7},{term:"lynch",severity:1,note:"Racist mob killing reference, though also a surname."},{term:"killer",severity:.5},{term:"mobster",severity:.5,note:"Organized crime reference."},{term:"gangster",severity:.3,note:"Criminal reference or slang."},{term:"druglord",severity:.5,note:"Drug trafficking reference."},{term:"drugs",severity:.3,note:"General term that can be legitimate or problematic."},{term:"meth",severity:.5,note:"Reference to illegal drug, though also shorthand for 'method'."},{term:"cocaine",severity:.5},{term:"heroin",severity:.5},{term:"weed",severity:.3,note:"Marijuana reference with varying legal status, also refers to plants."},{term:"marijuana",severity:.3,note:"Cannabis reference with complex legal status."},{term:"crack",severity:.5,note:"Drug reference or legitimate verb."},{term:"amphetamine",severity:.5},{term:"benzo",severity:.3,note:"Drug abbreviation or name prefix."},{term:"benzodiazepine",severity:.5},{term:"opioid",severity:.3,note:"Drug class, medical term."},{term:"opiate",severity:.3,note:"Drug class, medical term."},{term:"ketamine",severity:.5,note:"Drug reference or medical use."},{term:"rohypnol",severity:.7,note:"Date rape drug reference."},{term:"i like",severity:.2,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"i love",severity:.3,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"i hate",severity:.5,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"young",severity:.2,note:"Age reference with legitimate uses but flagged in combination."},{term:"underage",severity:.8,note:"Age reference with concerning implications in certain contexts."},{term:"teen",severity:.3,note:"Age reference, concerning in some contexts."},{term:"adolescent",severity:.2,note:"Age term, concerning in some contexts."},{term:"preteen",severity:.4,note:"Age reference with concerning implications in certain contexts."},{term:"rapist",severity:1},{term:"raping",severity:1},{term:"incest",severity:1},{term:"cult",severity:.3,note:"Religious/social group term with negative connotation."},{term:"sekt",severity:.3,note:"German for 'sect', cult reference."},{term:"disembowel",severity:1},{term:"behead",severity:1},{term:"traitor",severity:.5,note:"Accusatory term."},{term:"genocide",severity:1},{term:"ethnic clean",severity:1,multiWord:!0,note:"Euphemism for genocide."},{term:"klan",severity:1},{term:"klux",severity:1},{term:"kkk",severity:1},{term:"kill",severity:.5,note:"Violent language, but common word."},{term:"organi",severity:.1,note:"Word stem for organization."},{term:"blog",severity:.1,note:"External site reference."},{term:"group",severity:.1,note:"Organizational term."},{term:"compan",severity:.1,note:"Company stem, spam indicator."},{term:"associat",severity:.1,note:"Association stem."},{term:"industr",severity:.1,note:"Industry stem, spam indicator."},{term:"corporate",severity:.1,note:"Business term, spam indicator."},{term:"famil",severity:.1,note:"Family stem, group indicator."},{term:"task",severity:.1,note:"Organizational term."},{term:"alliance",severity:.1,note:"Group term."},{term:"entertain",severity:.1,note:"Entertainment stem, promotional."},{term:"public",severity:.1,note:"Common term, promotional context."},{term:"private",severity:.1,note:"Common term, organizational."},{term:"troll",severity:.3,note:"Disruptive behavior indicator."},{term:"trolol",severity:.3,note:"Trolling variant/meme."},{term:"grief",severity:.3,note:"Gaming term for harassment."},{term:"password",severity:.3,note:"Security term, suspicious in username."},{term:"admin",severity:.7,note:"Role impersonation."},{term:"sysop",severity:.4,note:"Wikipedia role impersonation."},{term:"bureaucrat",severity:.5,note:"Wikipedia role impersonation."},{term:"moderator",severity:.5,note:"Role impersonation."},{term:"staff",severity:.5,note:"Role impersonation."},{term:"developer",severity:.5,note:"Role impersonation."},{term:"owner",severity:.4,note:"Role impersonation."},{term:"founder",severity:.3,note:"Role impersonation."},{term:"wmf",severity:.2,note:"Wikimedia Foundation impersonation."},{term:"foundation",severity:.3,note:"Organizational impersonation."},{term:"unblock",severity:.1,note:"Suggests blocked user."},{term:"4chan",severity:.5,note:"Imageboard site, trolling association."},{term:"8chan",severity:.3,note:"Controversial imageboard."},{term:"reddit",severity:.3,note:"External site reference."},{term:"plague",severity:.3,note:"Disease/attack term."},{term:"skibidi",severity:.1,note:"Internet meme reference."},{term:"milf",severity:.5},{term:"dilf",severity:.5},{term:"sext",severity:.5,note:"Sending sexual messages."},{term:"thot",severity:.3,note:"Derogatory sexual slang."},{term:"rizz",severity:.1,note:"Gen Z slang for charisma."},{term:"gyatt",severity:.1,note:"Sexualized Gen Z slang."},{term:"noob",severity:.1},{term:"lyric",severity:.1,note:"Possible lyrics website spammer."},{term:"propaganda",severity:.5,note:"Misinformation term."},{term:"asshole",severity:.7},{term:"fucktard",severity:.7},{term:"retard",severity:.7},{term:"imbecile",severity:.5},{term:"moron",severity:.5},{term:"chigga",severity:1},{term:"chigger",severity:1},{term:"wigga",severity:1},{term:"wigger",severity:1},{term:"igga",severity:.7,note:"Potential variant of racial slur.",ignore:["1994","ig94"]},{term:"igger",severity:.7,note:"Potential variant of racial slur."},{term:"mother fuck",severity:.7,multiWord:!0},{term:"bull shit",severity:.6,multiWord:!0},{term:"dumb ass",severity:.5,multiWord:!0},{term:"dumb fuck",severity:.7,multiWord:!0},{term:"goon",severity:.2,multiWord:!1}]);t.profanity=new u({a:["ɑ","𝑎","𝗮","𝕒","𝖆","𝓪","𝚊","𝞪","А","а","𝔞","𝒂","𝘢","𝛼","𝒶","𝙖","𝜶","𝐚","𝖺","🄰","🅰️","🅰","Ⓐ","ⓐ","@"],b:["b","𝑏","𝗯","𝕓","𝖇","𝓫","𝚋","𝞫","Ь","в","𝔟","𝒃","𝘣","𝛃","𝒷","𝙗","𝜷","𝐛","𝖻","🄱","🅱️","🅱","Ⓑ","ⓑ"],c:["c","𝑐","𝗰","𝕔","𝖈","𝓬","𝚌","ϲ","с","𝔠","𝒄","𝘤","𝒸","𝙘","𝐜","𝖼","🄲","Ⓒ","ⓒ"],d:["d","𝑑","𝗱","𝕕","𝖉","𝓭","𝚍","𝞭","ԁ","ԃ","𝔡","𝒅","𝘥","𝛿","𝒹","𝙙","𝜹","𝐝","𝖽","𝝏","🄳","Ⓓ","ⓓ"],e:["e","𝑒","𝗲","𝕖","𝖊","𝓮","𝚎","𝞮","е","𝔢","𝒆","𝘦","𝛆","","𝙚","𝜺","𝐞","𝖾","з","𝝐","🄴","Ⓔ","ⓔ","€"],f:["f","𝑓","𝗳","𝕗","𝖋","𝓯","𝚏","𝞯","ғ","ƒ","𝔣","𝒇","𝘧","𝒻","𝙛","𝜻","𝐟","𝖿","🄵","Ⓕ","ⓕ"],g:["g","𝑔","𝗴","𝕘","𝖌","𝓰","𝚐","ɡ","Ԍ","ԍ","𝔤","𝒈","𝘨","𝙜","𝐠","𝗀","🄶","Ⓖ","ⓖ"],h:["h","𝗵","𝕙","𝖍","𝓱","𝚑","һ","н","𝔥","𝒉","𝘩","ℎ","𝒽","𝙝","𝐡","𝗁","🄷","Ⓗ","ⓗ"],i:["i","𝑖","𝗶","𝕚","𝖎","𝓲","𝚒","𝞲","і","𝔦","𝒊","𝘪","𝒾","𝙞","𝜾","𝐢","𝗂","🄸","ℹ️","ℹ","Ⓘ","ⓘ","!"],j:["j","𝑗","𝗷","𝕛","𝖏","𝓳","𝚳","ј","𝔧","𝒋","𝘫","𝒿","𝙟","𝐣","𝗃","🄹","Ⓙ","ⓙ"],k:["k","𝑘","𝗸","𝕜","𝖐","𝓴","κ","к","𝔨","𝒌","𝘬","𝓀","𝙠","𝝀","𝐤","𝗄","𝞳","𝜿","қ","🄺","Ⓚ","ⓚ"],l:["l","𝑙","𝗹","𝕝","𝖑","𝓵","ⅼ","ӏ","𝔩","𝒍","𝘭","𝓁","𝙡","𝐥","𝗅","🄻","Ⓛ","ⓛ","|"],m:["m","𝑚","𝗺","𝕞","𝖒","𝓶","𝚖","м","𝔪","𝒎","𝘮","𝓂","𝙢","𝐦","𝗆","🄼","Ⓜ️","Ⓜ","ⓜ"],n:["n","𝑛","𝗻","𝕟","𝖓","𝓷","𝚗","ո","п","𝔫","𝒏","𝘯","𝓃","𝙣","𝐧","𝗇","𝞰","𝜼","🄽","Ⓝ","ⓝ"],o:["o","𝑜","𝗼","𝕠","𝖔","𝓸","𝚘","ο","о","𝔬","𝒐","𝘰","𝙤","𝝈","𝐨","𝗈","𝜽","𝝄","𝝓","𝝑","𝝋","🄾","🅾️","🅾","Ⓞ","ⓞ"],p:["p","𝑝","𝗽","𝕡","𝖕","𝓹","𝚙","ρ","р","𝔭","𝒑","𝘱","𝓅","𝙥","𝐩","𝗉","𝝆","🄿","🅿️","🅿","Ⓟ","ⓟ"],q:["q","𝑞","𝗾","𝕢","𝖖","𝓺","𝚚","ԛ","𝔮","𝒒","𝘲","𝓆","𝙦","𝐪","𝗊","🅀","Ⓠ","ⓠ"],r:["r","𝑟","𝗿","𝕣","𝖗","𝓻","𝚛","г","𝔯","𝒓","𝘳","𝓇","𝙧","𝐫","𝗋","𝞽","🅁","Ⓡ","ⓡ"],s:["s","𝑠","𝗌","𝕤","𝖘","𝓼","𝚜","ѕ","𝔰","𝒔","𝘴","𝓈","𝙨","𝐬","🅂","Ⓢ","ⓢ","$"],t:["t","𝑡","𝗍","𝕥","𝖙","𝓽","𝚝","τ","т","𝔱","𝒕","𝘵","𝓉","𝙩","𝐭","𝝉","🅃","Ⓣ","ⓣ","+"],u:["u","𝑢","𝗎","𝕦","𝖚","𝓾","𝚞","υ","𝔲","𝒖","𝘶","𝓊","𝙪","𝐮","𝛍","🅄","Ⓤ","ⓤ"],v:["v","𝑣","𝗏","𝕧","𝖛","𝓿","𝚟","ν","𝔳","𝒗","𝘷","𝓋","𝙫","𝐯","𝞶","𝝂","𝝊","🅅","Ⓥ","ⓥ"],w:["w","𝑤","𝗐","𝕨","𝖜","𝔀","𝚠","ω","ш","𝔴","𝒘","𝘸","𝓌","𝙬","𝐰","𝝎","𝝍","🅆","Ⓦ","ⓦ"],x:["x","𝑥","𝗑","𝕩","𝖝","𝔁","𝚡","χ","х","𝔵","𝒙","𝘹","𝓍","𝙭","𝐱","𝝒","𝝌","🅇","Ⓧ","ⓧ"],y:["y","𝑦","𝗒","𝕪","𝖞","𝔂","𝚢","у","𝔶","𝒚","𝘺","𝓎","𝙮","𝐲","𝞬","𝜸","𝞴","🅈","Ⓨ","ⓨ"],z:["z","𝑧","𝗓","𝕫","𝖟","𝔃","𝚣","ζ","𝔷","𝒛","𝘻","𝓏","𝙯","𝐳","🅉","Ⓩ","ⓩ"],0:["0","𝟎","𝟬","𝟢"],1:["1","𝟏","𝟭","𝟣","①","➀","❶","➊","⓵"],2:["2","𝟐","𝟮","𝟤","②","➁","❷","➋","⓶"],3:["3","𝟑","𝟯","𝟥","③","➂","❸","➌","⓷"],4:["4","𝟒","𝟰","𝟦","④","➃","❹","➍","⓸","ᛋ"],5:["5","𝟓","𝟱","𝟧","⑤","➄","❺","➎","⓹"],6:["6","𝟔","𝟲","𝟨","⑥","➅","❻","➏","⓺"],7:["7","𝟕","𝟳","𝟩","⑦","➆","❼","➐","⓻"],8:["8","𝟖","𝟴","𝟪","⑧","➇","❽","➑","⓼"],9:["9","𝟗","𝟵","𝟫","⑨","➈","❾","➒","⓽"]})},4712(e,t){function n(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function s(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Logger=void 0;var i=new WeakSet;function a(e,t,n=!1){const s=(new Date).toISOString();this.logs.push({type:e,timestamp:s,message:t,expected:n})}t.Logger=class{constructor(){n(this,i),this.logs=[]}getLogs(){return[...this.logs]}log(e,t){s(i,this,a).call(this,"log",e,t)}warn(e,t){s(i,this,a).call(this,"warn",e,t)}error(e,t){s(i,this,a).call(this,"error",e,t)}dev(e,t){s(i,this,a).call(this,"dev",e,t)}}},9501(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.StorageManager=void 0;var s,i,a,r=n(4712),o=n(4029);n(9458),n(7345),n(7704),n(8415);class l{static get versions(){return new Map([[0,o.Version.v0],[1,o.Version.v1],[2,o.Version.v2],[3,o.Version.v3]])}constructor(){this.reset(new r.Logger)}reset(e){return null==e||e.log("Resetting storage to default."),this.data=l.version.default,l.version.init(e,this.data),l.version.validate(),l.version.construct(),this.data}load(e={}){var t,n;const s=new r.Logger;let i=null!==(n=(t=e).version)&&void 0!==n?n:t.version=0;if(i>l.version.number)return window.alert("The storage data is from a newer version of WikiShield. Please update to the latest version so that your data can be loaded correctly."),void window.location.reload();if(l.versions.has(i)){const t=l.version.number;for(;i!==t;){const t=l.versions.get(i+1);if(!("function"==typeof(null==t?void 0:t.constructor)&&new t instanceof o.Version)){s.dev("[MISSING_UPGRADE_METHOD] Uh oh! Something has gone wrong; this message should never appear. Please report this to the WikiShield developers."),e=this.reset(s);break}s.log(`Upgrading storage from version ${i} to ${i+1}`,!0);try{if(!t.init(s,e)){e=this.reset(s);break}(e=t.upgrade()).version=++i}catch(t){s.error(`Error upgrading storage from version ${i} to ${i+1}: ${t}`),e=this.reset(s);break}}i=e.version,s.log(`Initializing storage at version ${i}.`,!0),l.version.init(s,e),s.log(`Validating storage at version ${i}.`,!0),l.version.validate(),s.log(`Constructing storage at version ${i}.`,!0),e=l.version.construct(),s.log(`Storage loaded successfully at version ${i}.`,!0),this.data=e}else s.error(`Storage version ${i} is corrupted or unsupported.`),this.reset(s);return{data:this.data,logs:s.getLogs()}}save(){const e=new r.Logger,t=l.version.number;e.log(`Initializing storage at version ${t}.`,!0),l.version.init(e,this.data),e.log(`Deconstructing storage at version ${t}.`,!0);const n=l.version.deconstruct();return e.log(`Storage saved successfully at version ${t}.`,!0),{data:n,logs:e.getLogs()}}decode(e){try{return this.load(JSON.parse(atob(e.trim()||"e30=")))}catch(e){return this.load({})}}encode(){const{data:e,logs:t}=this.save();return{string:btoa(JSON.stringify(e)),logs:t}}static output(e,t="<unknown>",n=console){var s;const i=!e.some(e=>!e.expected);null==n||null===(s=n.log)||void 0===s||s.call(n,`[${i?" ":"X"}] WikiShield Storage Logs: ${t}`);for(const t of e){var a;let e=`[${t.expected?" ":"X"}][${t.timestamp}][Storage]`,s=t.type;"dev"===s&&(s="error",e=`#DEV# ${e}`),null==n||null===(a=n[s])||void 0===a||a.call(n,`${e} ${t.message}`)}}static okay(e,t=console){var n,s,i,a;null!=e||(e=(new l).load(l.versions.get(0).default));const r=!(null===(n=null===(s=e.logs)||void 0===s||null===(i=s.some)||void 0===i?void 0:i.call(s,e=>!e.expected))||void 0===n||n);return r||(null!==(a=void l.output(e.logs,"Storage Check",t))&&void 0!==a?a:r)}}t.StorageManager=l,s=l,i="version",a=o.Version.v3,(i=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(i))in s?Object.defineProperty(s,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[i]=a},330(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isURL=t.isObject=void 0;t.isObject=e=>null!==e&&"object"==typeof e&&!Array.isArray(e);t.isURL=e=>{try{return new URL(e),!0}catch(e){return!1}}},4029(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Version=void 0;var s=n(4712),i=n(330);function a(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class r{static sanitize(e,t,n=null){var s;const i=e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.loadedData);if(void 0===i)return null!==(s=void this.loadedLogger.warn(`Missing expected key path [ ${e.join(" -> ")} ] in stored data, defaulting to fallback value.`))&&void 0!==s?s:t;if("function"==typeof n){var a;const s=n(i);return void 0===s?null!==(a=void this.loadedLogger.warn(`Invalid value at key path [ ${e.join(" -> ")} ] in stored data, defaulting to fallback value.`))&&void 0!==a?a:t:s}return i}static exists(...e){return void 0!==e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.loadedData)}static deprecated(...e){var t;return!!this.exists(...e)&&(null===(t=void this.loadedLogger.warn(`Skipped deprecated key path [ ${e.join(" -> ")} ] in stored data.`,!0))||void 0===t||t)}static reset(...e){this.loadedLogger.warn(`Resetting key path [ ${e.join(" -> ")} ] in stored data to default value.`);const t=e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.default);if(void 0===t)return void this.loadedLogger.dev(`Could not find default value for key path [ ${e.join(" -> ")} ] in stored data.`);const n=e.pop();e.reduce((e,t)=>(void 0===e[t]&&(e[t]={}),e[t]),this.loadedData)[n]=t}static restrictObject(e,...t){var n;if(!(0,i.isObject)(e))return null!==(n=void this.reset(...t))&&void 0!==n&&n;const s=Object.keys(t.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.default));return Object.keys(e).forEach(n=>{s.includes(n)||(this.loadedLogger.warn(`Removing unexpected key [ ${[...t,n].join(" -> ")} ] from stored data.`),delete e[n])}),!0}static get default(){return{}}static init(e,t){return this.loadedLogger=e,this.loadedData=t,!0}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");return{}}static validate(){var e;const t=this.loadedData;return this.restrictObject(t),t.version===this.number||null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e}}t.Version=r,a(r,"loadedLogger",new s.Logger),a(r,"loadedData",{}),a(r,"number",0)},9458(e,t,n){var s,i,a,r,o=n(4029);o.Version.v0=(s=class extends o.Version{static get default(){return{version:0,changelog:"0",options:{maxQueueSize:50,maxEditCount:50,minimumORESScore:0,enableSoundAlerts:!0,soundAlertORESScore:.95,enableUsernameHighlighting:!0,enableWelcomeLatin:!1,enableAutoWelcome:!1,enableEditAnalysis:!1,enableUsernameAnalysis:!1,enableAutoReporting:!0,selectedAutoReportReasons:{Vandalism:!0,"Subtle vandalism":!0,"Image vandalism":!0,Sandbox:!0,Unsourced:!0,"Unsourced (BLP)":!0,"Unsourced genre":!0,POV:!1,Commentary:!0,"AI-generated":!0,"AI-generated (talk)":!0,"MOS violation":!1,Censoring:!1,Disruption:!0,Deleting:!0,Errors:!0,"Editing tests":!0,Chatting:!1,Jokes:!0,Owning:!1,Advertising:!0,"Spam links":!0,"Personal attacks":!0,TPO:!0,"AfD removal":!0},zen:{enabled:!1,sounds:!0,watchlist:!1,notifications:!0,editCount:!1,toasts:!1},enableCloudStorage:!0,masterVolume:.5,volumes:{click:.5,notification:.5,watchlist:.5,alert:.5,whoosh:.5,warn:.5,rollback:.5,report:.5,thank:.5,protection:.5,block:.5,sparkle:.5,success:.5,error:.5},soundMappings:{click:"click",notification:"notify",watchlist:"ping",alert:"alert",whoosh:"whoosh",warn:"warn",rollback:"rollback",report:"report",thank:"thank",protection:"protection",block:"block",sparkle:"sparkle",success:"success",error:"error"},watchlistExpiry:"1 week",whitelistExpiry:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlightedExpiry:{users:"1 week",pages:"1 week",tags:"1 week"},wiki:"en",namespacesShown:[0],showTemps:!0,showUsers:!0,sortQueueItems:!0,enableOllamaAI:!1,ollamaServerUrl:"http://localhost:11434",ollamaModel:"",controlScripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warningType:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"if",condition:"operatorNonAdmin",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Mentor"}}]}],selectedPalette:0,theme:"theme-light"},statistics:{reviewed:0,reverts:0,reverts:0,reports:0,warnings:0,welcomes:0,whitelisted:0,highlighted:0,blocks:0,sessionStart:Date.now()},whitelist:{users:[],pages:[],tags:[]},highlighted:{users:[],pages:[],tags:[]},queueWidth:"15vw",detailsWidth:"15vw"}}},i=s,r=0,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7345(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(4029);g.Version.v1=(s=class extends g.Version{static get default(){return{version:1,changelog:"3",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,recent:{enabled:!0,order:0},flagged:{enabled:!0,order:1},users:{enabled:!0,order:2},watchlist:{enabled:!0,order:3}},cloud_storage:{enabled:!0},username_highlighting:{enabled:!0,fuzzy:!0},auto_welcome:{enabled:!0},expiry:{watchlist:"1 week",whitelist:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlight:{users:"1 week",pages:"1 week",tags:"1 week"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Unsourced","Unsourced (BLP)","Unsourced genre","Commentary","AI-generated","AI-generated (talk)","Censoring",,"Disruption","Deleting","Errors","Editing tests","Jokes","Advertising","Spam links","Personal attacks","TPO","AfD removal"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.notice":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},notices:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}}},UI:{theme:{palette:0},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warningType:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"if",condition:"operatorNonAdmin",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Auto"}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");this.deprecated("options","enableWelcomeLatin"),this.deprecated("options","volumes","whoosh"),this.deprecated("options","volumes","warn"),this.deprecated("options","volumes","rollback"),this.deprecated("options","volumes","thank"),this.deprecated("options","volumes","sparkle"),this.deprecated("options","volumes","watchlist"),this.deprecated("options","volumes","success"),this.deprecated("options","volumes","error"),this.deprecated("options","soundMappings"),this.deprecated("options","wiki"),this.deprecated("options","showTemps"),this.deprecated("options","showUsers"),this.deprecated("options","sortQueueItems"),this.deprecated("options","theme"),this.deprecated("options","zen","editCount"),this.deprecated("options","zen","watchlist");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:e.settings.performance.startup},namespaces:this.sanitize(["options","namespacesShown"],e.settings.namespaces),queue:{max_size:this.sanitize(["options","maxQueueSize"],e.settings.queue.max_size),max_edits:this.sanitize(["options","maxEditCount"],e.settings.queue.max_edits),min_ores:this.sanitize(["options","minimumORESScore"],e.settings.queue.min_ores),recent:{enabled:e.settings.queue.recent.enabled,order:e.settings.queue.recent.order},flagged:{enabled:e.settings.queue.flagged.enabled,order:e.settings.queue.flagged.order},users:{enabled:e.settings.queue.users.enabled,order:e.settings.queue.users.order},watchlist:{enabled:e.settings.queue.watchlist.enabled,order:e.settings.queue.watchlist.order}},cloud_storage:{enabled:this.sanitize(["options","enableCloudStorage"],e.settings.cloud_storage.enabled)},username_highlighting:{enabled:this.sanitize(["options","enableUsernameHighlighting"],e.settings.username_highlighting.enabled),fuzzy:e.settings.username_highlighting.fuzzy},auto_welcome:{enabled:this.sanitize(["options","enableAutoWelcome"],e.settings.auto_welcome.enabled)},expiry:{watchlist:this.sanitize(["options","watchlistExpiry"],e.settings.expiry.watchlist),whitelist:{users:this.sanitize(["options","whitelistExpiry","users"],e.settings.expiry.whitelist.users),pages:this.sanitize(["options","whitelistExpiry","pages"],e.settings.expiry.whitelist.pages),tags:this.sanitize(["options","whitelistExpiry","tags"],e.settings.expiry.whitelist.tags)},highlight:{users:this.sanitize(["options","highlightedExpiry","users"],e.settings.expiry.highlight.users),pages:this.sanitize(["options","highlightedExpiry","pages"],e.settings.expiry.highlight.pages),tags:this.sanitize(["options","highlightedExpiry","tags"],e.settings.expiry.highlight.tags)}},auto_report:{enabled:this.sanitize(["options","enableAutoReporting"],e.settings.auto_report.enabled),for:this.sanitize(["options","selectedAutoReportReasons"],e.settings.auto_report.for,e=>{if((0,o.isObject)(e))return e["AI-generated"]=e["AI-Generated"],delete e["AI-Generated"],e["AI-generated (talk)"]=e["AI-Generated (talk)"],delete e["AI-Generated (talk)"],Object.keys(e).filter(t=>!0===(null==e?void 0:e[t]))})},AI:{enabled:this.sanitize(["options","enableOllamaAI"],e.settings.AI.enabled),provider:e.settings.AI.provider,edit_analysis:{enabled:this.sanitize(["options","enableEditAnalysis"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["options","enableUsernameAnalysis"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["options","ollamaServerUrl"],e.settings.AI.Ollama.server),model:this.sanitize(["options","ollamaModel"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["options","enableSoundAlerts"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["options","soundAlertORESScore"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["options","masterVolume"],e.settings.audio.volume.master),"master.startup":e.settings.audio.volume["master.startup"],"master.music":e.settings.audio.volume["master.music"],"master.music.zen_mode":e.settings.audio.volume["master.music.zen_mode"],"master.ui":e.settings.audio.volume["master.ui"],"master.ui.click":this.sanitize(["options","volumes","click"],e.settings.audio.volume["master.ui.click"]),"master.queue":e.settings.audio.volume["master.queue"],"master.queue.ores":this.sanitize(["options","volumes","alert"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":e.settings.audio.volume["master.queue.mention"],"master.notification":e.settings.audio.volume["master.notification"],"master.notification.alert":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.alert"]),"master.notification.notice":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.notice"]),"master.notification.toast":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.toast"]),"master.action":e.settings.audio.volume["master.action"],"master.action.default":e.settings.audio.volume["master.action.default"],"master.action.failed":e.settings.audio.volume["master.action.failed"],"master.action.report":this.sanitize(["options","volumes","report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["options","volumes","block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["options","volumes","protection"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["options","zen","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["options","zen","sounds"],e.settings.zen_mode.sound.enabled)},music:{enabled:e.settings.zen_mode.music.enabled},alerts:{enabled:this.sanitize(["options","zen","notifications"],e.settings.zen_mode.alerts.enabled)},notices:{enabled:this.sanitize(["options","zen","notifications"],e.settings.zen_mode.notices.enabled)},toasts:{enabled:this.sanitize(["options","zen","toasts"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:e.settings.zen_mode.badges.enabled}}},UI:{theme:{palette:this.sanitize(["options","selectedPalette"],e.UI.theme.palette)},queue:{width:this.sanitize(["queueWidth"],e.UI.queue.width)},details:{width:this.sanitize(["detailsWidth"],e.UI.details.width)}},control_scripts:this.sanitize(["options","controlScripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name){if(!(e.condition in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else switch(e.name){case"welcome":if(!(0,o.isObject)(e.params))return!0;switch(e.params.template){case"Links":e.params.template="Graphical";break;case"Latin":e.params.template="Non-Latin";break;case"Mentor":return this.loadedLogger.warn(`Skipped deprecated "Mentor" welcome template at key [${[...n,s,"params","template"].join(" -> ")}].`,!0),!1}break;case"warn":if(!(0,o.isObject)(e.params))return!0;switch(e.params.warningType){case"AI-Generated":e.params.warningType="AI-generated";break;case"AI-Generated (talk)":e.params.warningType="AI-generated (talk)"}}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:e.statistics.edits_reviewed.total,thanked:e.statistics.edits_reviewed.thanked},recent_changes_reviewed:{total:e.statistics.recent_changes_reviewed.total},pending_changes_reviewed:{total:e.statistics.pending_changes_reviewed.total,accepted:e.statistics.pending_changes_reviewed.accepted,rejected:e.statistics.pending_changes_reviewed.rejected},watchlist_changes_reviewed:{total:e.statistics.watchlist_changes_reviewed.total},users_reviewed:{total:e.statistics.users_reviewed.total},reverts_made:{total:e.statistics.reverts_made.total,good_faith:e.statistics.reverts_made.good_faith,from_recent_changes:e.statistics.reverts_made.from_recent_changes,from_pending_changes:e.statistics.reverts_made.from_pending_changes,from_watchlist:e.statistics.reverts_made.from_watchlist,from_loaded_edits:e.statistics.reverts_made.from_loaded_edits},users_welcomed:{total:e.statistics.users_welcomed.total},warnings_issued:{total:e.statistics.warnings_issued.total,level_1:e.statistics.warnings_issued.level_1,level_2:e.statistics.warnings_issued.level_2,level_3:e.statistics.warnings_issued.level_3,level_4:e.statistics.warnings_issued.level_4,level_4im:e.statistics.warnings_issued.level_4im},reports_filed:{total:e.statistics.reports_filed.total,AIV:e.statistics.reports_filed.AIV,UAA:e.statistics.reports_filed.UAA,RFPP:e.statistics.reports_filed.RFPP},watchlist:{watched:e.statistics.watchlist.watched,unwatched:e.statistics.watchlist.unwatched},items_whitelisted:{total:e.statistics.items_whitelisted.total,users:e.statistics.items_whitelisted.users,pages:e.statistics.items_whitelisted.pages,tags:e.statistics.items_whitelisted.tags},items_highlighted:{total:e.statistics.items_highlighted.total,users:e.statistics.items_highlighted.users,pages:e.statistics.items_highlighted.pages,tags:e.statistics.items_highlighted.tags},blocks_issued:{total:e.statistics.blocks_issued.total},pages_protected:{total:e.statistics.pages_protected.total},actions_executed:{total:e.statistics.actions_executed.total,successful:e.statistics.actions_executed.successful},session_time:e.statistics.session_time},highlight:{users:this.sanitize(["highlighted","users"],e.highlight.users),pages:this.sanitize(["highlighted","pages"],e.highlight.pages),tags:this.sanitize(["highlighted","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),t.version!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const g=t.settings.namespaces;Array.isArray(g)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const h=t.settings.queue;this.restrictObject(h,"settings","queue");{const m=t.settings.queue.max_size;"number"==typeof m&&Number.isInteger(m)&&m>0||this.reset("settings","queue","max_size")}{const v=t.settings.queue.max_edits;"number"==typeof v&&Number.isInteger(v)&&v>0||this.reset("settings","queue","max_edits")}{const f=t.settings.queue.min_ores;"number"==typeof f&&f>=0&&f<=1||this.reset("settings","queue","min_ores")}["recent","flagged","users","watchlist"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const b=t.settings.cloud_storage;this.restrictObject(b,"settings","cloud_storage");"boolean"!=typeof t.settings.cloud_storage.enabled&&this.reset("settings","cloud_storage","enabled")}{const w=t.settings.username_highlighting;this.restrictObject(w,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const y=t.settings.auto_welcome;this.restrictObject(y,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const x=new Set(["none","1 hour","1 day","1 week","1 month","3 months","6 months","indefinite"]),k=t.settings.expiry;this.restrictObject(k,"settings","expiry");{const _=t.settings.expiry.watchlist;x.has(_)||this.reset("settings","expiry","watchlist")}{const S=t.settings.expiry.whitelist;this.restrictObject(S,"settings","expiry","whitelist");{const q=t.settings.expiry.whitelist.users;x.has(q)||this.reset("settings","expiry","whitelist","users")}{const E=t.settings.expiry.whitelist.pages;x.has(E)||this.reset("settings","expiry","whitelist","pages")}{const L=t.settings.expiry.whitelist.tags;x.has(L)||this.reset("settings","expiry","whitelist","tags")}}{const A=t.settings.expiry.highlight;this.restrictObject(A,"settings","expiry","highlight");{const T=t.settings.expiry.highlight.users;x.has(T)||this.reset("settings","expiry","highlight","users")}{const C=t.settings.expiry.highlight.pages;x.has(C)||this.reset("settings","expiry","highlight","pages")}{const z=t.settings.expiry.highlight.tags;x.has(z)||this.reset("settings","expiry","highlight","tags")}}}{const M=t.settings.auto_report;this.restrictObject(M,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const $=t.settings.auto_report.for;Array.isArray($)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const O=t.settings.AI;this.restrictObject(O,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const I=t.settings.AI.edit_analysis;this.restrictObject(I,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const P=t.settings.AI.username_analysis;this.restrictObject(P,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const j=t.settings.AI.Ollama;this.restrictObject(j,"settings","AI","Ollama");{const W=t.settings.AI.Ollama.server;(0,o.isURL)(W)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const D=t.settings.audio;this.restrictObject(D,"settings","audio");{const R=t.settings.audio.ores_alert;this.restrictObject(R,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const U=t.settings.audio.ores_alert.threshold;"number"==typeof U&&U>=0&&U<=1||this.reset("settings","audio","ores_alert","threshold")}}{const N=t.settings.audio.volume;this.restrictObject(N,"settings","audio","volume");const H=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.notice","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const F of H){const V=t.settings.audio.volume[F];"number"==typeof V&&V>=0&&V<=1||this.reset("settings","audio","volume",F)}}}{const B=t.settings.zen_mode;this.restrictObject(B,"settings","zen_mode");"boolean"!=typeof B.enabled&&this.reset("settings","zen_mode","enabled");{const G=t.settings.zen_mode.sound;this.restrictObject(G,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const Q=t.settings.zen_mode.music;this.restrictObject(Q,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const Y=t.settings.zen_mode.alerts;this.restrictObject(Y,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const Z=t.settings.zen_mode.notices;this.restrictObject(Z,"settings","zen_mode","notices");"boolean"!=typeof t.settings.zen_mode.notices.enabled&&this.reset("settings","zen_mode","notices","enabled")}{const K=t.settings.zen_mode.toasts;this.restrictObject(K,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const X=t.settings.zen_mode.badges;this.restrictObject(X,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}}{const J=t.UI;this.restrictObject(J,"UI");{const ee=t.UI.theme;this.restrictObject(ee,"UI","theme");{const te=t.UI.theme.palette;"number"==typeof te&&Number.isInteger(te)&&te>=0&&te<=3||this.reset("UI","theme","palette")}}{const ne=t.UI.queue;this.restrictObject(ne,"UI","queue");{const se=t.UI.queue.width;"string"==typeof se&&se.endsWith("vw")||this.reset("UI","queue","width");const ie=parseFloat(se.slice(0,-2));"number"==typeof ie&&!isNaN(ie)&&ie>=10&&ie<=30||this.reset("UI","queue","width")}}{const ae=t.UI.details;this.restrictObject(ae,"UI","details");{const re=t.UI.details.width;"string"==typeof re&&re.endsWith("vw")||this.reset("UI","details","width");const oe=parseFloat(re.slice(0,-2));"number"==typeof oe&&!isNaN(oe)&&oe>=10&&oe<=30||this.reset("UI","details","width")}}}{const le=t.control_scripts;function de(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name){var i;if(!(e.condition in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${e.condition} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]),e.actions=de.call(this,e.actions,...t,n,"actions")}else{var a;if(!(e.name in c.events))return this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`),!1;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=null!==(a=c.events[e.name].parameters)&&void 0!==a?a:[],i=new Set;for(const a of s)i.add(a.id),"choice"===a.type&&(a.id in e.params||(this.loadedLogger.warn(`Resetting missing choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]),a.options.includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]));for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(le)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>p.controls.has(e)),t.control_scripts[n].actions=de.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const ce=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,ue=t.statistics;this.restrictObject(ue,"statistics");{const pe=t.statistics.edits_reviewed;this.restrictObject(pe,"statistics","edits_reviewed");ce(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");ce(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const ge=t.statistics.recent_changes_reviewed;this.restrictObject(ge,"statistics","recent_changes_reviewed");ce(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const he=t.statistics.pending_changes_reviewed;this.restrictObject(he,"statistics","pending_changes_reviewed");ce(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");ce(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");ce(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const me=t.statistics.watchlist_changes_reviewed;this.restrictObject(me,"statistics","watchlist_changes_reviewed");ce(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const ve=t.statistics.users_reviewed;this.restrictObject(ve,"statistics","users_reviewed");ce(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const fe=t.statistics.reverts_made;this.restrictObject(fe,"statistics","reverts_made");ce(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");ce(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");ce(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");ce(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");ce(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");ce(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const be=t.statistics.users_welcomed;this.restrictObject(be,"statistics","users_welcomed");ce(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const we=t.statistics.warnings_issued;this.restrictObject(we,"statistics","warnings_issued");ce(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");ce(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");ce(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");ce(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");ce(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");ce(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const ye=t.statistics.reports_filed;this.restrictObject(ye,"statistics","reports_filed");ce(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");ce(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");ce(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");ce(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP")}{const xe=t.statistics.watchlist;this.restrictObject(xe,"statistics","watchlist");ce(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");ce(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const ke=t.statistics.items_whitelisted;this.restrictObject(ke,"statistics","items_whitelisted");ce(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");ce(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");ce(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");ce(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const _e=t.statistics.items_highlighted;this.restrictObject(_e,"statistics","items_highlighted");ce(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");ce(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");ce(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");ce(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const Se=t.statistics.blocks_issued;this.restrictObject(Se,"statistics","blocks_issued");ce(t.statistics.blocks_issued.total)||this.reset("statistics","blocks_issued","total")}{const qe=t.statistics.pages_protected;this.restrictObject(qe,"statistics","pages_protected");ce(t.statistics.pages_protected.total)||this.reset("statistics","pages_protected","total")}{const Ee=t.statistics.actions_executed;this.restrictObject(Ee,"statistics","actions_executed");ce(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");ce(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const Le=t.statistics.session_time;"number"==typeof Le&&Le>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const Ae=t.highlight;this.restrictObject(Ae,"highlight");{const Te=t.highlight.users;Array.isArray(Te)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const Ce=t.highlight.pages;Array.isArray(Ce)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const ze=t.highlight.tags;Array.isArray(ze)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const Me=t.whitelist;this.restrictObject(Me,"whitelist");{const $e=t.whitelist.users;Array.isArray($e)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const Oe=t.whitelist.pages;Array.isArray(Oe)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const Ie=t.whitelist.tags;Array.isArray(Ie)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=1,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7704(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(4029);g.Version.v2=(s=class extends g.Version{static get default(){return{version:2,changelog:"6",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,recent:{enabled:!0,order:0},flagged:{enabled:!0,order:1},users:{enabled:!0,order:2},watchlist:{enabled:!0,order:3}},cloud_storage:{enabled:!0},username_highlighting:{enabled:!0,fuzzy:!0},wikipedia_popups:{enabled:!0},auto_welcome:{enabled:!1},expiry:{watchlist:"1 week",whitelist:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlight:{users:"1 week",pages:"1 week",tags:"1 week"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Deliberate errors","Disruptive editing","Editing tests","Commentary","Inappropriate jokes","Deleting","Unsourced","Unsourced (BLP)","Unsourced genre","Original research","Censoring","AI-generated","AI-generated (talk)","Personal attacks","Harassment","TPO",,"AfD removal","Advertising","Spam links","Inappropriate edit summary","Misleading edit summary"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.notice":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},notices:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}},repeat_control_scripts:!0},UI:{theme:{palette:0},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warning:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Auto"}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]},favorite:{warnings:[],reverts:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:this.sanitize(["settings","performance","startup"],e.settings.performance.startup)},namespaces:this.sanitize(["settings","namespaces"],e.settings.namespaces),queue:{max_size:this.sanitize(["settings","queue","max_size"],e.settings.queue.max_size),max_edits:this.sanitize(["settings","queue","max_edits"],e.settings.queue.max_edits),min_ores:this.sanitize(["settings","queue","min_ores"],e.settings.queue.min_ores),recent:{enabled:this.sanitize(["settings","queue","recent","enabled"],e.settings.queue.recent.enabled),order:this.sanitize(["settings","queue","recent","order"],e.settings.queue.recent.order)},flagged:{enabled:this.sanitize(["settings","queue","flagged","enabled"],e.settings.queue.flagged.enabled),order:this.sanitize(["settings","queue","flagged","order"],e.settings.queue.flagged.order)},users:{enabled:this.sanitize(["settings","queue","users","enabled"],e.settings.queue.users.enabled),order:this.sanitize(["settings","queue","users","order"],e.settings.queue.users.order)},watchlist:{enabled:this.sanitize(["settings","queue","watchlist","enabled"],e.settings.queue.watchlist.enabled),order:this.sanitize(["settings","queue","watchlist","order"],e.settings.queue.watchlist.order)}},cloud_storage:{enabled:this.sanitize(["settings","cloud_storage","enabled"],e.settings.cloud_storage.enabled)},username_highlighting:{enabled:this.sanitize(["settings","username_highlighting","enabled"],e.settings.username_highlighting.enabled),fuzzy:this.sanitize(["settings","username_highlighting","fuzzy"],e.settings.username_highlighting.fuzzy)},wikipedia_popups:{enabled:e.settings.wikipedia_popups.enabled},auto_welcome:{enabled:this.sanitize(["settings","auto_welcome","enabled"],e.settings.auto_welcome.enabled)},expiry:{watchlist:this.sanitize(["settings","expiry","watchlist"],e.settings.expiry.watchlist),whitelist:{users:this.sanitize(["settings","expiry","whitelist","users"],e.settings.expiry.whitelist.users),pages:this.sanitize(["settings","expiry","whitelist","pages"],e.settings.expiry.whitelist.pages),tags:this.sanitize(["settings","expiry","whitelist","tags"],e.settings.expiry.whitelist.tags)},highlight:{users:this.sanitize(["settings","expiry","highlight","users"],e.settings.expiry.highlight.users),pages:this.sanitize(["settings","expiry","highlight","pages"],e.settings.expiry.highlight.pages),tags:this.sanitize(["settings","expiry","highlight","tags"],e.settings.expiry.highlight.tags)}},auto_report:{enabled:this.sanitize(["settings","auto_report","enabled"],e.settings.auto_report.enabled),for:this.sanitize(["settings","auto_report","for"],e.settings.auto_report.for,e=>{if(!Array.isArray(e))return;const t=new Set(["Harassment","Inappropriate edit summary","Original research"]);return e.forEach(e=>{switch(e){case"Errors":return void t.add("Deliberate errors");case"Disruption":return void t.add("Disruptive editing");case"Jokes":return void t.add("Inappropriate jokes")}t.add(e)}),[...t]})},AI:{enabled:this.sanitize(["settings","AI","enabled"],e.settings.AI.enabled),provider:this.sanitize(["settings","AI","provider"],e.settings.AI.provider),edit_analysis:{enabled:this.sanitize(["settings","AI","edit_analysis","enabled"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["settings","AI","username_analysis","enabled"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["settings","AI","Ollama","server"],e.settings.AI.Ollama.server),model:this.sanitize(["settings","AI","Ollama","model"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["settings","audio","ores_alert","enabled"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["settings","audio","ores_alert","threshold"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["settings","audio","volume","master"],e.settings.audio.volume.master),"master.startup":this.sanitize(["settings","audio","volume","master.startup"],e.settings.audio.volume["master.startup"]),"master.music":this.sanitize(["settings","audio","volume","master.music"],e.settings.audio.volume["master.music"]),"master.music.zen_mode":this.sanitize(["settings","audio","volume","master.music.zen_mode"],e.settings.audio.volume["master.music.zen_mode"]),"master.ui":this.sanitize(["settings","audio","volume","master.ui"],e.settings.audio.volume["master.ui"]),"master.ui.click":this.sanitize(["settings","audio","volume","master.ui.click"],e.settings.audio.volume["master.ui.click"]),"master.queue":this.sanitize(["settings","audio","volume","master.queue"],e.settings.audio.volume["master.queue"]),"master.queue.ores":this.sanitize(["settings","audio","volume","master.queue.ores"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":this.sanitize(["settings","audio","volume","master.queue.mention"],e.settings.audio.volume["master.queue.mention"]),"master.notification":this.sanitize(["settings","audio","volume","master.notification"],e.settings.audio.volume["master.notification"]),"master.notification.alert":this.sanitize(["settings","audio","volume","master.notification.alert"],e.settings.audio.volume["master.notification.alert"]),"master.notification.notice":this.sanitize(["settings","audio","volume","master.notification.notice"],e.settings.audio.volume["master.notification.notice"]),"master.notification.toast":this.sanitize(["settings","audio","volume","master.notification.toast"],e.settings.audio.volume["master.notification.toast"]),"master.action":this.sanitize(["settings","audio","volume","master.action"],e.settings.audio.volume["master.action"]),"master.action.default":this.sanitize(["settings","audio","volume","master.action.default"],e.settings.audio.volume["master.action.default"]),"master.action.failed":this.sanitize(["settings","audio","volume","master.action.failed"],e.settings.audio.volume["master.action.failed"]),"master.action.report":this.sanitize(["settings","audio","volume","master.action.report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["settings","audio","volume","master.action.block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["settings","audio","volume","master.action.protect"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["settings","zen_mode","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["settings","zen_mode","sound","enabled"],e.settings.zen_mode.sound.enabled)},music:{enabled:this.sanitize(["settings","zen_mode","music","enabled"],e.settings.zen_mode.music.enabled)},alerts:{enabled:this.sanitize(["settings","zen_mode","alerts","enabled"],e.settings.zen_mode.alerts.enabled)},notices:{enabled:this.sanitize(["settings","zen_mode","notices","enabled"],e.settings.zen_mode.notices.enabled)},toasts:{enabled:this.sanitize(["settings","zen_mode","toasts","enabled"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:this.sanitize(["settings","zen_mode","badges","enabled"],e.settings.zen_mode.badges.enabled)}},repeat_control_scripts:e.settings.repeat_control_scripts},UI:{theme:{palette:this.sanitize(["UI","theme","palette"],e.UI.theme.palette)},queue:{width:this.sanitize(["UI","queue","width"],e.UI.queue.width)},details:{width:this.sanitize(["UI","details","width"],e.UI.details.width)}},control_scripts:this.sanitize(["control_scripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name){if(!(e.condition in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else if("warn"===e.name){if(!(0,o.isObject)(e.params))return!0;e.params.warning=e.params.warningType,delete e.params.warningType}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:this.sanitize(["statistics","edits_reviewed","total"],e.statistics.edits_reviewed.total),thanked:this.sanitize(["statistics","edits_reviewed","thanked"],e.statistics.edits_reviewed.thanked)},recent_changes_reviewed:{total:this.sanitize(["statistics","recent_changes_reviewed","total"],e.statistics.recent_changes_reviewed.total)},pending_changes_reviewed:{total:this.sanitize(["statistics","pending_changes_reviewed","total"],e.statistics.pending_changes_reviewed.total),accepted:this.sanitize(["statistics","pending_changes_reviewed","accepted"],e.statistics.pending_changes_reviewed.accepted),rejected:this.sanitize(["statistics","pending_changes_reviewed","rejected"],e.statistics.pending_changes_reviewed.rejected)},watchlist_changes_reviewed:{total:this.sanitize(["statistics","watchlist_changes_reviewed","total"],e.statistics.watchlist_changes_reviewed.total)},users_reviewed:{total:this.sanitize(["statistics","users_reviewed","total"],e.statistics.users_reviewed.total)},reverts_made:{total:this.sanitize(["statistics","reverts_made","total"],e.statistics.reverts_made.total),good_faith:this.sanitize(["statistics","reverts_made","good_faith"],e.statistics.reverts_made.good_faith),from_recent_changes:this.sanitize(["statistics","reverts_made","from_recent_changes"],e.statistics.reverts_made.from_recent_changes),from_pending_changes:this.sanitize(["statistics","reverts_made","from_pending_changes"],e.statistics.reverts_made.from_pending_changes),from_watchlist:this.sanitize(["statistics","reverts_made","from_watchlist"],e.statistics.reverts_made.from_watchlist),from_loaded_edits:this.sanitize(["statistics","reverts_made","from_loaded_edits"],e.statistics.reverts_made.from_loaded_edits)},users_welcomed:{total:this.sanitize(["statistics","users_welcomed","total"],e.statistics.users_welcomed.total)},warnings_issued:{total:this.sanitize(["statistics","warnings_issued","total"],e.statistics.warnings_issued.total),level_1:this.sanitize(["statistics","warnings_issued","level_1"],e.statistics.warnings_issued.level_1),level_2:this.sanitize(["statistics","warnings_issued","level_2"],e.statistics.warnings_issued.level_2),level_3:this.sanitize(["statistics","warnings_issued","level_3"],e.statistics.warnings_issued.level_3),level_4:this.sanitize(["statistics","warnings_issued","level_4"],e.statistics.warnings_issued.level_4),level_4im:this.sanitize(["statistics","warnings_issued","level_4im"],e.statistics.warnings_issued.level_4im)},reports_filed:{total:this.sanitize(["statistics","reports_filed","total"],e.statistics.reports_filed.total),AIV:this.sanitize(["statistics","reports_filed","AIV"],e.statistics.reports_filed.AIV),UAA:this.sanitize(["statistics","reports_filed","UAA"],e.statistics.reports_filed.UAA),RFPP:this.sanitize(["statistics","reports_filed","RFPP"],e.statistics.reports_filed.RFPP)},watchlist:{watched:this.sanitize(["statistics","watchlist","watched"],e.statistics.watchlist.watched),unwatched:this.sanitize(["statistics","watchlist","unwatched"],e.statistics.watchlist.unwatched)},items_whitelisted:{total:this.sanitize(["statistics","items_whitelisted","total"],e.statistics.items_whitelisted.total),users:this.sanitize(["statistics","items_whitelisted","users"],e.statistics.items_whitelisted.users),pages:this.sanitize(["statistics","items_whitelisted","pages"],e.statistics.items_whitelisted.pages),tags:this.sanitize(["statistics","items_whitelisted","tags"],e.statistics.items_whitelisted.tags)},items_highlighted:{total:this.sanitize(["statistics","items_highlighted","total"],e.statistics.items_highlighted.total),users:this.sanitize(["statistics","items_highlighted","users"],e.statistics.items_highlighted.users),pages:this.sanitize(["statistics","items_highlighted","pages"],e.statistics.items_highlighted.pages),tags:this.sanitize(["statistics","items_highlighted","tags"],e.statistics.items_highlighted.tags)},blocks_issued:{total:this.sanitize(["statistics","blocks_issued","total"],e.statistics.blocks_issued.total)},pages_protected:{total:this.sanitize(["statistics","pages_protected","total"],e.statistics.pages_protected.total)},actions_executed:{total:this.sanitize(["statistics","actions_executed","total"],e.statistics.actions_executed.total),successful:this.sanitize(["statistics","actions_executed","successful"],e.statistics.actions_executed.successful)},session_time:this.sanitize(["statistics","session_time"],e.statistics.session_time)},highlight:{users:this.sanitize(["highlight","users"],e.highlight.users),pages:this.sanitize(["highlight","pages"],e.highlight.pages),tags:this.sanitize(["highlight","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)},favorite:{warnings:e.favorite.warnings,reverts:e.favorite.reverts}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),t.version!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const g=t.settings.namespaces;Array.isArray(g)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const h=t.settings.queue;this.restrictObject(h,"settings","queue");{const m=t.settings.queue.max_size;"number"==typeof m&&Number.isInteger(m)&&m>0||this.reset("settings","queue","max_size")}{const v=t.settings.queue.max_edits;"number"==typeof v&&Number.isInteger(v)&&v>0||this.reset("settings","queue","max_edits")}{const f=t.settings.queue.min_ores;"number"==typeof f&&f>=0&&f<=1||this.reset("settings","queue","min_ores")}["recent","flagged","users","watchlist"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const b=t.settings.cloud_storage;this.restrictObject(b,"settings","cloud_storage");"boolean"!=typeof t.settings.cloud_storage.enabled&&this.reset("settings","cloud_storage","enabled")}{const w=t.settings.username_highlighting;this.restrictObject(w,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const y=t.settings.wikipedia_popups;this.restrictObject(y,"settings","wikipedia_popups");"boolean"!=typeof t.settings.wikipedia_popups.enabled&&this.reset("settings","wikipedia_popups","enabled")}{const x=t.settings.auto_welcome;this.restrictObject(x,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const k=new Set(["none","1 hour","1 day","1 week","1 month","3 months","6 months","indefinite"]),_=t.settings.expiry;this.restrictObject(_,"settings","expiry");{const S=t.settings.expiry.watchlist;k.has(S)||this.reset("settings","expiry","watchlist")}{const q=t.settings.expiry.whitelist;this.restrictObject(q,"settings","expiry","whitelist");{const E=t.settings.expiry.whitelist.users;k.has(E)||this.reset("settings","expiry","whitelist","users")}{const L=t.settings.expiry.whitelist.pages;k.has(L)||this.reset("settings","expiry","whitelist","pages")}{const A=t.settings.expiry.whitelist.tags;k.has(A)||this.reset("settings","expiry","whitelist","tags")}}{const T=t.settings.expiry.highlight;this.restrictObject(T,"settings","expiry","highlight");{const C=t.settings.expiry.highlight.users;k.has(C)||this.reset("settings","expiry","highlight","users")}{const z=t.settings.expiry.highlight.pages;k.has(z)||this.reset("settings","expiry","highlight","pages")}{const M=t.settings.expiry.highlight.tags;k.has(M)||this.reset("settings","expiry","highlight","tags")}}}{const $=t.settings.auto_report;this.restrictObject($,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const O=t.settings.auto_report.for;Array.isArray(O)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const I=t.settings.AI;this.restrictObject(I,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const P=t.settings.AI.edit_analysis;this.restrictObject(P,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const j=t.settings.AI.username_analysis;this.restrictObject(j,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const W=t.settings.AI.Ollama;this.restrictObject(W,"settings","AI","Ollama");{const D=t.settings.AI.Ollama.server;(0,o.isURL)(D)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const R=t.settings.audio;this.restrictObject(R,"settings","audio");{const U=t.settings.audio.ores_alert;this.restrictObject(U,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const N=t.settings.audio.ores_alert.threshold;"number"==typeof N&&N>=0&&N<=1||this.reset("settings","audio","ores_alert","threshold")}}{const H=t.settings.audio.volume;this.restrictObject(H,"settings","audio","volume");const F=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.notice","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const V of F){const B=t.settings.audio.volume[V];"number"==typeof B&&B>=0&&B<=1||this.reset("settings","audio","volume",V)}}}{const G=t.settings.zen_mode;this.restrictObject(G,"settings","zen_mode");"boolean"!=typeof G.enabled&&this.reset("settings","zen_mode","enabled");{const Q=t.settings.zen_mode.sound;this.restrictObject(Q,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const Y=t.settings.zen_mode.music;this.restrictObject(Y,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const Z=t.settings.zen_mode.alerts;this.restrictObject(Z,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const K=t.settings.zen_mode.notices;this.restrictObject(K,"settings","zen_mode","notices");"boolean"!=typeof t.settings.zen_mode.notices.enabled&&this.reset("settings","zen_mode","notices","enabled")}{const X=t.settings.zen_mode.toasts;this.restrictObject(X,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const J=t.settings.zen_mode.badges;this.restrictObject(J,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}"boolean"!=typeof t.settings.repeat_control_scripts&&this.reset("settings","repeat_control_scripts")}{const ee=t.UI;this.restrictObject(ee,"UI");{const te=t.UI.theme;this.restrictObject(te,"UI","theme");{const ne=t.UI.theme.palette;"number"==typeof ne&&Number.isInteger(ne)&&ne>=0&&ne<=3||this.reset("UI","theme","palette")}}{const se=t.UI.queue;this.restrictObject(se,"UI","queue");{const ie=t.UI.queue.width;"string"==typeof ie&&ie.endsWith("vw")||this.reset("UI","queue","width");const ae=parseFloat(ie.slice(0,-2));"number"==typeof ae&&!isNaN(ae)&&ae>=10&&ae<=30||this.reset("UI","queue","width")}}{const re=t.UI.details;this.restrictObject(re,"UI","details");{const oe=t.UI.details.width;"string"==typeof oe&&oe.endsWith("vw")||this.reset("UI","details","width");const le=parseFloat(oe.slice(0,-2));"number"==typeof le&&!isNaN(le)&&le>=10&&le<=30||this.reset("UI","details","width")}}}{const de=t.control_scripts;function ce(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name){var i;if(!(e.condition in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${e.condition} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]),e.actions=ce.call(this,e.actions,...t,n,"actions")}else{var a,r;if(!(e.name in c.events))return null!==(a=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`))&&void 0!==a&&a;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=null!==(r=c.events[e.name].parameters)&&void 0!==r?r:[],i=new Set;for(const a of s)i.add(a.id),"choice"===a.type&&(a.id in e.params||(this.loadedLogger.warn(`Resetting missing choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]),a.options.includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]));for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(de)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>p.controls.has(e)),t.control_scripts[n].actions=ce.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const ue=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,pe=t.statistics;this.restrictObject(pe,"statistics");{const ge=t.statistics.edits_reviewed;this.restrictObject(ge,"statistics","edits_reviewed");ue(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");ue(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const he=t.statistics.recent_changes_reviewed;this.restrictObject(he,"statistics","recent_changes_reviewed");ue(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const me=t.statistics.pending_changes_reviewed;this.restrictObject(me,"statistics","pending_changes_reviewed");ue(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");ue(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");ue(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const ve=t.statistics.watchlist_changes_reviewed;this.restrictObject(ve,"statistics","watchlist_changes_reviewed");ue(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const fe=t.statistics.users_reviewed;this.restrictObject(fe,"statistics","users_reviewed");ue(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const be=t.statistics.reverts_made;this.restrictObject(be,"statistics","reverts_made");ue(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");ue(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");ue(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");ue(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");ue(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");ue(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const we=t.statistics.users_welcomed;this.restrictObject(we,"statistics","users_welcomed");ue(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const ye=t.statistics.warnings_issued;this.restrictObject(ye,"statistics","warnings_issued");ue(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");ue(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");ue(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");ue(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");ue(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");ue(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const xe=t.statistics.reports_filed;this.restrictObject(xe,"statistics","reports_filed");ue(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");ue(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");ue(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");ue(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP")}{const ke=t.statistics.watchlist;this.restrictObject(ke,"statistics","watchlist");ue(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");ue(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const _e=t.statistics.items_whitelisted;this.restrictObject(_e,"statistics","items_whitelisted");ue(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");ue(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");ue(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");ue(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const Se=t.statistics.items_highlighted;this.restrictObject(Se,"statistics","items_highlighted");ue(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");ue(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");ue(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");ue(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const qe=t.statistics.blocks_issued;this.restrictObject(qe,"statistics","blocks_issued");ue(t.statistics.blocks_issued.total)||this.reset("statistics","blocks_issued","total")}{const Ee=t.statistics.pages_protected;this.restrictObject(Ee,"statistics","pages_protected");ue(t.statistics.pages_protected.total)||this.reset("statistics","pages_protected","total")}{const Le=t.statistics.actions_executed;this.restrictObject(Le,"statistics","actions_executed");ue(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");ue(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const Ae=t.statistics.session_time;"number"==typeof Ae&&Ae>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const Te=t.highlight;this.restrictObject(Te,"highlight");{const Ce=t.highlight.users;Array.isArray(Ce)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const ze=t.highlight.pages;Array.isArray(ze)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const Me=t.highlight.tags;Array.isArray(Me)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const $e=t.whitelist;this.restrictObject($e,"whitelist");{const Oe=t.whitelist.users;Array.isArray(Oe)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const Ie=t.whitelist.pages;Array.isArray(Ie)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const Pe=t.whitelist.tags;Array.isArray(Pe)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}{const je=t.favorite;this.restrictObject(je,"favorite");{const We=t.favorite.warnings;Array.isArray(We)||this.reset("favorite","warnings"),t.favorite.warnings=t.favorite.warnings.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite warning [ ${e} ] from stored data.`),t})}{const De=t.favorite.reverts;Array.isArray(De)||this.reset("favorite","reverts"),t.favorite.reverts=t.favorite.reverts.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite revert [ ${e} ] from stored data.`),t})}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=2,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},8415(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(3241),h=n(5564),m=n(8469),v=n(4029);v.Version.v3=(s=class extends v.Version{static get default(){return{version:3,changelog:"6",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,ores_bias:.5,recent:{enabled:!0,order:0},pending:{enabled:!0,order:1},users:{enabled:!1,order:2},watchlist:{enabled:!0,order:3},abuselog:{enabled:!0,order:4}},username_highlighting:{enabled:!0,fuzzy:!1},wikipedia_popups:{enabled:!0},auto_welcome:{enabled:!1},talk_page_thanks_for_temporary_users:{enabled:!0},expiry:{watchlist:"1W",whitelist:{users:"infinity",pages:"infinity",tags:"infinity"},highlight:{users:"1W",pages:"1W",tags:"1W"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Deliberate errors","Disruptive editing","Editing tests","Commentary","Inappropriate jokes","Deleting","Unsourced","Unsourced (BLP)","Unsourced genre","Original research","Censoring","AI-generated","AI-generated (talk)","Personal attacks","Harassment","TPO","AfD removal","Advertising","Spam links","Attempt","Inappropriate edit summary","Misleading edit summary"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.message":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},messages:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}},accessibility:{colorblind:!1,dyslexia:!1,high_contrast:!1,reduce_motion:!1},repeat_control_scripts:!0},UI:{theme:{app:"auto",palette:"traffic"},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"," "],actions:[{name:"next-item",params:{}}]},{keys:["arrowleft"],actions:[{name:"previous-item",params:{}}]},{keys:["q"],actions:[{name:"next-item",params:{}},{name:"revert",params:{warning:"Vandalism"}},{name:"highlight-user",params:{}}]},{keys:["h"],actions:[{name:"open-page-history",params:{}}]},{keys:["c"],actions:[{name:"open-user-contributions",params:{}}]},{keys:["t"],actions:[{name:"thank-user",params:{}}]},{keys:["w"],actions:[{name:"welcome-user",params:{}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},abuselogs_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_abuselogs:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0,global_blocks:0,global_locks:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]},favorite:{warnings:[],reverts:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");this.deprecated("settings","cloud_storage");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:this.sanitize(["settings","performance","startup"],e.settings.performance.startup)},namespaces:this.sanitize(["settings","namespaces"],e.settings.namespaces),queue:{max_size:this.sanitize(["settings","queue","max_size"],e.settings.queue.max_size),max_edits:this.sanitize(["settings","queue","max_edits"],e.settings.queue.max_edits),min_ores:this.sanitize(["settings","queue","min_ores"],e.settings.queue.min_ores),ores_bias:e.settings.queue.ores_bias,recent:{enabled:this.sanitize(["settings","queue","recent","enabled"],e.settings.queue.recent.enabled),order:this.sanitize(["settings","queue","recent","order"],e.settings.queue.recent.order)},pending:{enabled:this.sanitize(["settings","queue","flagged","enabled"],e.settings.queue.pending.enabled),order:this.sanitize(["settings","queue","flagged","order"],e.settings.queue.pending.order)},users:{enabled:this.sanitize(["settings","queue","users","enabled"],e.settings.queue.users.enabled),order:this.sanitize(["settings","queue","users","order"],e.settings.queue.users.order)},watchlist:{enabled:this.sanitize(["settings","queue","watchlist","enabled"],e.settings.queue.watchlist.enabled),order:this.sanitize(["settings","queue","watchlist","order"],e.settings.queue.watchlist.order)},abuselog:{enabled:e.settings.queue.abuselog.enabled,order:e.settings.queue.abuselog.order}},username_highlighting:{enabled:this.sanitize(["settings","username_highlighting","enabled"],e.settings.username_highlighting.enabled),fuzzy:this.sanitize(["settings","username_highlighting","fuzzy"],e.settings.username_highlighting.fuzzy)},wikipedia_popups:{enabled:e.settings.wikipedia_popups.enabled},auto_welcome:{enabled:this.sanitize(["settings","auto_welcome","enabled"],e.settings.auto_welcome.enabled)},talk_page_thanks_for_temporary_users:{enabled:e.settings.talk_page_thanks_for_temporary_users.enabled},expiry:{watchlist:this.sanitize(["settings","expiry","watchlist"],e.settings.expiry.watchlist,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),whitelist:{users:this.sanitize(["settings","expiry","whitelist","users"],e.settings.expiry.whitelist.users,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),pages:this.sanitize(["settings","expiry","whitelist","pages"],e.settings.expiry.whitelist.pages,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),tags:this.sanitize(["settings","expiry","whitelist","tags"],e.settings.expiry.whitelist.tags,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e]))},highlight:{users:this.sanitize(["settings","expiry","highlight","users"],e.settings.expiry.highlight.users,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),pages:this.sanitize(["settings","expiry","highlight","pages"],e.settings.expiry.highlight.pages,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),tags:this.sanitize(["settings","expiry","highlight","tags"],e.settings.expiry.highlight.tags,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e]))}},auto_report:{enabled:this.sanitize(["settings","auto_report","enabled"],e.settings.auto_report.enabled),for:this.sanitize(["settings","auto_report","for"],e.settings.auto_report.for,e=>{if(!Array.isArray(e))return;const t=new Set(["Attempt"]);return e.forEach(e=>t.add(e)),[...t]})},AI:{enabled:this.sanitize(["settings","AI","enabled"],e.settings.AI.enabled),provider:this.sanitize(["settings","AI","provider"],e.settings.AI.provider),edit_analysis:{enabled:this.sanitize(["settings","AI","edit_analysis","enabled"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["settings","AI","username_analysis","enabled"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["settings","AI","Ollama","server"],e.settings.AI.Ollama.server),model:this.sanitize(["settings","AI","Ollama","model"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["settings","audio","ores_alert","enabled"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["settings","audio","ores_alert","threshold"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["settings","audio","volume","master"],e.settings.audio.volume.master),"master.startup":this.sanitize(["settings","audio","volume","master.startup"],e.settings.audio.volume["master.startup"]),"master.music":this.sanitize(["settings","audio","volume","master.music"],e.settings.audio.volume["master.music"]),"master.music.zen_mode":this.sanitize(["settings","audio","volume","master.music.zen_mode"],e.settings.audio.volume["master.music.zen_mode"]),"master.ui":this.sanitize(["settings","audio","volume","master.ui"],e.settings.audio.volume["master.ui"]),"master.ui.click":this.sanitize(["settings","audio","volume","master.ui.click"],e.settings.audio.volume["master.ui.click"]),"master.queue":this.sanitize(["settings","audio","volume","master.queue"],e.settings.audio.volume["master.queue"]),"master.queue.ores":this.sanitize(["settings","audio","volume","master.queue.ores"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":this.sanitize(["settings","audio","volume","master.queue.mention"],e.settings.audio.volume["master.queue.mention"]),"master.notification":this.sanitize(["settings","audio","volume","master.notification"],e.settings.audio.volume["master.notification"]),"master.notification.alert":this.sanitize(["settings","audio","volume","master.notification.alert"],e.settings.audio.volume["master.notification.alert"]),"master.notification.message":this.sanitize(["settings","audio","volume","master.notification.notice"],e.settings.audio.volume["master.notification.message"]),"master.notification.toast":this.sanitize(["settings","audio","volume","master.notification.toast"],e.settings.audio.volume["master.notification.toast"]),"master.action":this.sanitize(["settings","audio","volume","master.action"],e.settings.audio.volume["master.action"]),"master.action.default":this.sanitize(["settings","audio","volume","master.action.default"],e.settings.audio.volume["master.action.default"]),"master.action.failed":this.sanitize(["settings","audio","volume","master.action.failed"],e.settings.audio.volume["master.action.failed"]),"master.action.report":this.sanitize(["settings","audio","volume","master.action.report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["settings","audio","volume","master.action.block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["settings","audio","volume","master.action.protect"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["settings","zen_mode","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["settings","zen_mode","sound","enabled"],e.settings.zen_mode.sound.enabled)},music:{enabled:this.sanitize(["settings","zen_mode","music","enabled"],e.settings.zen_mode.music.enabled)},alerts:{enabled:this.sanitize(["settings","zen_mode","alerts","enabled"],e.settings.zen_mode.alerts.enabled)},messages:{enabled:this.sanitize(["settings","zen_mode","notices","enabled"],e.settings.zen_mode.messages.enabled)},toasts:{enabled:this.sanitize(["settings","zen_mode","toasts","enabled"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:this.sanitize(["settings","zen_mode","badges","enabled"],e.settings.zen_mode.badges.enabled)}},accessibility:{colorblind:e.settings.accessibility.colorblind,dyslexia:e.settings.accessibility.dyslexia,high_contrast:e.settings.accessibility.high_contrast,reduce_motion:e.settings.accessibility.reduce_motion},repeat_control_scripts:this.sanitize(["settings","repeat_control_scripts"],e.settings.repeat_control_scripts)},UI:{theme:{app:e.UI.theme.app,palette:this.sanitize(["UI","theme","palette"],e.UI.theme.palette,t=>["traffic","heat","natural","cool"][t]||e.UI.theme.palette)},queue:{width:this.sanitize(["UI","queue","width"],e.UI.queue.width)},details:{width:this.sanitize(["UI","details","width"],e.UI.details.width)}},control_scripts:this.sanitize(["control_scripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name||"if not"===e.name){var i,a;const r="if not"===e.name,o=()=>e.name=r?"if":"if not";switch("string"==typeof e.condition&&(e.condition={name:e.condition,params:{}}),null!==(a=(i=e.condition).params)&&void 0!==a||(i.params={}),e.condition.name){case"operatorNonAdmin":o();case"operatorAdmin":e.condition.name="account-admin";break;case"userIsHighlighted":e.condition.name="username-highlighted";break;case"userIsWhitelisted":e.condition.name="username-whitelisted";break;case"pageIsWhitelisted":e.condition.name="page-whitelisted";break;case"userIsAnon":o();case"userIsRegistered":e.codition.name="user-registered";break;case"userIsIP":e.condition.name="user-ip";break;case"userIsTemp":e.condition.name="user-temp";break;case"userHasEmptyTalkPage":e.condition.name="user-empty-talk";break;case"editIsMajor":o();case"editIsMinor":e.condition.name="edit-minor";break;case"editSizeNegative":e.condition.name="edit-size",e.condition.params={condition:"<",size:0};break;case"editSizePositive":e.condition.name="edit-size",e.condition.params={condition:">",size:0};break;case"editSizeLarge":e.condition.name="abs-edit-size",e.condition.params={condition:"≥",size:1e3};break;case"userEditCountLow":e.condition.name="user-edit-count",e.condition.params={condition:"<",count:10};break;case"userEditCountHigh":e.condition.name="user-edit-count",e.condition.params={condition:"≥",count:100};break;case"atFinalWarning":e.condition.name="user-final-warning";break;case"userNoWarnings":o();case"userHasWarnings":e.condition.name="user-has-warnings"}if(!(e.condition.name in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else{var r;switch(null!==(r=e.params)&&void 0!==r||(e.params={}),e.name){case"toggleZenMode":e.name="toggle-zen-mode";break;case"acceptFlaggedEdit":if(e.name="accept-pending-edit",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.reason,delete e.params.reason;break;case"rejectFlaggedEdit":if(e.name="reject-pending-edit",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.reason,delete e.params.reason;break;case"prevEdit":e.name="previous-item";break;case"nextEdit":e.name="next-item";break;case"deleteQueue":e.name="clear-queue";break;case"openRevertMenu":e.name="open-revert-menu";break;case"openWarnMenu":e.name="open-warn-menu";break;case"openUserPage":e.name="open-user-page";break;case"openUserTalk":e.name="open-user-talk";break;case"openUserContribs":e.name="open-user-contributions";break;case"openFilterLog":e.name="open-user-filter-log";break;case"openPage":e.name="open-page";break;case"openTalk":e.name="open-page-talk";break;case"openHistory":e.name="open-page-history";break;case"openRevision":e.name="open-revision";break;case"openDiff":e.name="open-diff";break;case"switchToRecentQueue":e.name="switch-to-recent-queue";break;case"switchToFlaggedQueue":e.name="switch-to-pending-queue";break;case"switchToUsersQueue":e.name="switch-to-users-queue";break;case"switchToWatchlistQueue":e.name="switch-to-watchlist-queue";break;case"watchPage":e.name="watch-page";break;case"unwatchPage":e.name="unwatch-page";break;case"whitelistUser":e.name="whitelist-user";break;case"whitelistPage":e.name="whitelist-page";break;case"unwhitelistUser":e.name="unwhitelist-user";break;case"unwhitelistPage":e.name="unwhitelist-page";break;case"highlightUser":e.name="highlight-user";break;case"highlightPage":e.name="highlight-page";break;case"unwhitelistUser":e.name="unhighlight-user";break;case"unwhitelistPage":e.name="unhighlight-page";break;case"thankUser":e.name="thank-user";break;case"warn":e.name="warn-user";break;case"rollback":if(e.name="rollback-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"rollbackGoodFaith":if(e.name="rollback-goodfaith-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"undo":if(e.name="undo-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"reportToAIV":if(e.name="report-user-to-aiv",!(0,o.isObject)(e.params))return!0;e.params.reason=e.params.reportMessage,delete e.params.reportMessage,e.params.summary=e.params.comment,delete e.params.comment;break;case"reportToUAA":if(e.name="report-user-to-uaa",!(0,o.isObject)(e.params))return!0;e.params.reason=e.params.reportMessage,delete e.params.reportMessage,e.params.summary=e.params.comment,delete e.params.comment;break;case"requestProtection":if(e.name="request-page-protection",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.comment,delete e.params.comment;break;case"welcome":e.name="welcome-user";break;case"toggleConsecutive":e.name="toggle-consecutive-edits";break;case"block":return this.loadedLogger.warn(`Skipping deprecated action 'block' in control script at ${[...n,s].join(" -> ")}.`),!1;case"protect":return this.loadedLogger.warn(`Skipping deprecated action 'protect' in control script at ${[...n,s].join(" -> ")}.`),!1;case"openSettings":return this.loadedLogger.warn(`Skipping deprecated action 'openSettings' in control script at ${[...n,s].join(" -> ")}.`),!1}}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:this.sanitize(["statistics","edits_reviewed","total"],e.statistics.edits_reviewed.total),thanked:this.sanitize(["statistics","edits_reviewed","thanked"],e.statistics.edits_reviewed.thanked)},recent_changes_reviewed:{total:this.sanitize(["statistics","recent_changes_reviewed","total"],e.statistics.recent_changes_reviewed.total)},pending_changes_reviewed:{total:this.sanitize(["statistics","pending_changes_reviewed","total"],e.statistics.pending_changes_reviewed.total),accepted:this.sanitize(["statistics","pending_changes_reviewed","accepted"],e.statistics.pending_changes_reviewed.accepted),rejected:this.sanitize(["statistics","pending_changes_reviewed","rejected"],e.statistics.pending_changes_reviewed.rejected)},watchlist_changes_reviewed:{total:this.sanitize(["statistics","watchlist_changes_reviewed","total"],e.statistics.watchlist_changes_reviewed.total)},users_reviewed:{total:this.sanitize(["statistics","users_reviewed","total"],e.statistics.users_reviewed.total)},abuselogs_reviewed:{total:e.statistics.abuselogs_reviewed.total},reverts_made:{total:this.sanitize(["statistics","reverts_made","total"],e.statistics.reverts_made.total),good_faith:this.sanitize(["statistics","reverts_made","good_faith"],e.statistics.reverts_made.good_faith),from_recent_changes:this.sanitize(["statistics","reverts_made","from_recent_changes"],e.statistics.reverts_made.from_recent_changes),from_pending_changes:this.sanitize(["statistics","reverts_made","from_pending_changes"],e.statistics.reverts_made.from_pending_changes),from_watchlist:this.sanitize(["statistics","reverts_made","from_watchlist"],e.statistics.reverts_made.from_watchlist),from_abuselogs:e.statistics.reverts_made.from_abuselogs,from_loaded_edits:this.sanitize(["statistics","reverts_made","from_loaded_edits"],e.statistics.reverts_made.from_loaded_edits)},users_welcomed:{total:this.sanitize(["statistics","users_welcomed","total"],e.statistics.users_welcomed.total)},warnings_issued:{total:this.sanitize(["statistics","warnings_issued","total"],e.statistics.warnings_issued.total),level_1:this.sanitize(["statistics","warnings_issued","level_1"],e.statistics.warnings_issued.level_1),level_2:this.sanitize(["statistics","warnings_issued","level_2"],e.statistics.warnings_issued.level_2),level_3:this.sanitize(["statistics","warnings_issued","level_3"],e.statistics.warnings_issued.level_3),level_4:this.sanitize(["statistics","warnings_issued","level_4"],e.statistics.warnings_issued.level_4),level_4im:this.sanitize(["statistics","warnings_issued","level_4im"],e.statistics.warnings_issued.level_4im)},reports_filed:{total:this.sanitize(["statistics","reports_filed","total"],e.statistics.reports_filed.total),AIV:this.sanitize(["statistics","reports_filed","AIV"],e.statistics.reports_filed.AIV),UAA:this.sanitize(["statistics","reports_filed","UAA"],e.statistics.reports_filed.UAA),RFPP:this.sanitize(["statistics","reports_filed","RFPP"],e.statistics.reports_filed.RFPP),global_blocks:e.statistics.reports_filed.global_blocks,global_locks:e.statistics.reports_filed.global_locks},watchlist:{watched:this.sanitize(["statistics","watchlist","watched"],e.statistics.watchlist.watched),unwatched:this.sanitize(["statistics","watchlist","unwatched"],e.statistics.watchlist.unwatched)},items_whitelisted:{total:this.sanitize(["statistics","items_whitelisted","total"],e.statistics.items_whitelisted.total),users:this.sanitize(["statistics","items_whitelisted","users"],e.statistics.items_whitelisted.users),pages:this.sanitize(["statistics","items_whitelisted","pages"],e.statistics.items_whitelisted.pages),tags:this.sanitize(["statistics","items_whitelisted","tags"],e.statistics.items_whitelisted.tags)},items_highlighted:{total:this.sanitize(["statistics","items_highlighted","total"],e.statistics.items_highlighted.total),users:this.sanitize(["statistics","items_highlighted","users"],e.statistics.items_highlighted.users),pages:this.sanitize(["statistics","items_highlighted","pages"],e.statistics.items_highlighted.pages),tags:this.sanitize(["statistics","items_highlighted","tags"],e.statistics.items_highlighted.tags)},blocks_issued:{total:this.sanitize(["statistics","blocks_issued","total"],e.statistics.blocks_issued.total)},pages_protected:{total:this.sanitize(["statistics","pages_protected","total"],e.statistics.pages_protected.total)},actions_executed:{total:this.sanitize(["statistics","actions_executed","total"],e.statistics.actions_executed.total),successful:this.sanitize(["statistics","actions_executed","successful"],e.statistics.actions_executed.successful)},session_time:this.sanitize(["statistics","session_time"],e.statistics.session_time)},highlight:{users:this.sanitize(["highlight","users"],e.highlight.users),pages:this.sanitize(["highlight","pages"],e.highlight.pages),tags:this.sanitize(["highlight","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)},favorite:{warnings:this.sanitize(["favorite","warnings"],e.favorite.warnings),reverts:this.sanitize(["favorite","reverts"],e.favorite.reverts)}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),(null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const v=t.settings.namespaces;Array.isArray(v)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const f=t.settings.queue;this.restrictObject(f,"settings","queue");{const b=t.settings.queue.max_size;"number"==typeof b&&Number.isInteger(b)&&b>0||this.reset("settings","queue","max_size")}{const w=t.settings.queue.max_edits;"number"==typeof w&&Number.isInteger(w)&&w>0||this.reset("settings","queue","max_edits")}{const y=t.settings.queue.min_ores;"number"==typeof y&&y>=0&&y<=1||this.reset("settings","queue","min_ores")}{const x=t.settings.queue.ores_bias;"number"==typeof x&&x>=0&&x<=1||this.reset("settings","queue","ores_bias")}["recent","pending","users","watchlist","abuselog"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const k=t.settings.username_highlighting;this.restrictObject(k,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const _=t.settings.wikipedia_popups;this.restrictObject(_,"settings","wikipedia_popups");"boolean"!=typeof t.settings.wikipedia_popups.enabled&&this.reset("settings","wikipedia_popups","enabled")}{const S=t.settings.auto_welcome;this.restrictObject(S,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const q=t.settings.talk_page_thanks_for_temporary_users;this.restrictObject(q,"settings","talk_page_thanks_for_temporary_users");"boolean"!=typeof t.settings.talk_page_thanks_for_temporary_users.enabled&&this.reset("settings","talk_page_thanks_for_temporary_users","enabled")}{const E=t.settings.expiry;this.restrictObject(E,"settings","expiry");{const L=t.settings.expiry.watchlist;g.expiryRegex.test(L)||this.reset("settings","expiry","watchlist")}{const A=t.settings.expiry.whitelist;this.restrictObject(A,"settings","expiry","whitelist");{const T=t.settings.expiry.whitelist.users;g.expiryRegex.test(T)||this.reset("settings","expiry","whitelist","users")}{const C=t.settings.expiry.whitelist.pages;g.expiryRegex.test(C)||this.reset("settings","expiry","whitelist","pages")}{const z=t.settings.expiry.whitelist.tags;g.expiryRegex.test(z)||this.reset("settings","expiry","whitelist","tags")}}{const M=t.settings.expiry.highlight;this.restrictObject(M,"settings","expiry","highlight");{const $=t.settings.expiry.highlight.users;g.expiryRegex.test($)||this.reset("settings","expiry","highlight","users")}{const O=t.settings.expiry.highlight.pages;g.expiryRegex.test(O)||this.reset("settings","expiry","highlight","pages")}{const I=t.settings.expiry.highlight.tags;g.expiryRegex.test(I)||this.reset("settings","expiry","highlight","tags")}}}{const P=t.settings.auto_report;this.restrictObject(P,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const j=t.settings.auto_report.for;Array.isArray(j)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const W=t.settings.AI;this.restrictObject(W,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const D=t.settings.AI.edit_analysis;this.restrictObject(D,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const R=t.settings.AI.username_analysis;this.restrictObject(R,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const U=t.settings.AI.Ollama;this.restrictObject(U,"settings","AI","Ollama");{const N=t.settings.AI.Ollama.server;(0,o.isURL)(N)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const H=t.settings.audio;this.restrictObject(H,"settings","audio");{const F=t.settings.audio.ores_alert;this.restrictObject(F,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const V=t.settings.audio.ores_alert.threshold;"number"==typeof V&&V>=0&&V<=1||this.reset("settings","audio","ores_alert","threshold")}}{const B=t.settings.audio.volume;this.restrictObject(B,"settings","audio","volume");const G=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.message","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const Q of G){const Y=t.settings.audio.volume[Q];"number"==typeof Y&&Y>=0&&Y<=1||this.reset("settings","audio","volume",Q)}}}{const Z=t.settings.zen_mode;this.restrictObject(Z,"settings","zen_mode");"boolean"!=typeof Z.enabled&&this.reset("settings","zen_mode","enabled");{const K=t.settings.zen_mode.sound;this.restrictObject(K,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const X=t.settings.zen_mode.music;this.restrictObject(X,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const J=t.settings.zen_mode.alerts;this.restrictObject(J,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const ee=t.settings.zen_mode.messages;this.restrictObject(ee,"settings","zen_mode","messages");"boolean"!=typeof t.settings.zen_mode.messages.enabled&&this.reset("settings","zen_mode","messages","enabled")}{const te=t.settings.zen_mode.toasts;this.restrictObject(te,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const ne=t.settings.zen_mode.badges;this.restrictObject(ne,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}{const se=t.settings.accessibility;this.restrictObject(se,"settings","accessibility");"boolean"!=typeof t.settings.accessibility.colorblind&&this.reset("settings","accessibility","colorblind");"boolean"!=typeof t.settings.accessibility.dyslexia&&this.reset("settings","accessibility","dyslexia");"boolean"!=typeof t.settings.accessibility.high_contrast&&this.reset("settings","accessibility","high_contrast");"boolean"!=typeof t.settings.accessibility.reduce_motion&&this.reset("settings","accessibility","reduce_motion")}"boolean"!=typeof t.settings.repeat_control_scripts&&this.reset("settings","repeat_control_scripts")}{const ie=t.UI;this.restrictObject(ie,"UI");{const ae=t.UI.theme;this.restrictObject(ae,"UI","theme");{const re=t.UI.theme.app;["light","dark","auto"].includes(re)||this.reset("UI","theme","app")}t.UI.theme.palette in m.GUI.palettes||this.reset("UI","theme","palette")}{const oe=t.UI.queue;this.restrictObject(oe,"UI","queue");{const le=t.UI.queue.width;"string"==typeof le&&le.endsWith("vw")||this.reset("UI","queue","width");const de=parseFloat(le.slice(0,-2));"number"==typeof de&&!isNaN(de)&&de>=10&&de<=30||this.reset("UI","queue","width")}}{const ce=t.UI.details;this.restrictObject(ce,"UI","details");{const ue=t.UI.details.width;"string"==typeof ue&&ue.endsWith("vw")||this.reset("UI","details","width");const pe=parseFloat(ue.slice(0,-2));"number"==typeof pe&&!isNaN(pe)&&pe>=10&&pe<=30||this.reset("UI","details","width")}}}{const ge=t.control_scripts;function he(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name||"if not"===e.name){var i,a,r,l;const s=e.condition;if(!(s.name in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${s.name} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]);const o=(0,h.sortDependencies)(null!==(a=null===(r=(l=u.conditions[s.name]).parameters)||void 0===r?void 0:r.call(l))&&void 0!==a?a:[]),c=new Set;for(const e of o){const i={};for(const t of null!==(d=e.dependencies)&&void 0!==d?d:[]){var d;i[t]=s.params[t]}const a="function"==typeof e.default?e.default(i):e.default;if(e.id in s.params||"default"in e&&(this.loadedLogger.warn(`Resetting missing parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a),c.add(e.id),"default"in e)switch(e.type){case"choice":("function"==typeof e.options?e.options(i):e.options).includes(s.params[e.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"text":"string"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid text parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"boolean":"boolean"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid boolean parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"number":"number"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid number parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a)}}for(const e of Object.keys(s.params))c.has(e)||(this.loadedLogger.warn(`Removing invalid parameter [ ${e} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete s.params[e]);e.actions=he.call(this,e.actions,...t,n,"actions")}else{var p,m,v,f;if(!(e.name in c.events))return null!==(p=void this.loadedLogger.warn(`Removing invalid action [ ${e.name} ] at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`))&&void 0!==p&&p;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=(0,h.sortDependencies)(null!==(m=null===(v=(f=c.events[e.name]).parameters)||void 0===v?void 0:v.call(f))&&void 0!==m?m:[]),i=new Set;for(const a of s){const s={};for(const t of null!==(b=a.dependencies)&&void 0!==b?b:[]){var b;s[t]=e.params[t]}const r="function"==typeof a.default?a.default(s):a.default;if(a.id in e.params||"default"in a&&(this.loadedLogger.warn(`Resetting missing parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r),i.add(a.id),"default"in a)switch(a.type){case"choice":("function"==typeof a.options?a.options(s):a.options).includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"text":"string"!=typeof e.params[a.id]&&(this.loadedLogger.warn(`Resetting invalid text parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"boolean":"boolean"!=typeof e.params[a.id]&&(this.loadedLogger.warn(`Resetting invalid boolean parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"duration":"string"==typeof e.params[a.id]&&g.expiryRegex.test(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid duration parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r)}}for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(ge)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>(0,p.validateShortcut)(e)),t.control_scripts[n].actions=he.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const me=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,ve=t.statistics;this.restrictObject(ve,"statistics");{const fe=t.statistics.edits_reviewed;this.restrictObject(fe,"statistics","edits_reviewed");me(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");me(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const be=t.statistics.recent_changes_reviewed;this.restrictObject(be,"statistics","recent_changes_reviewed");me(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const we=t.statistics.pending_changes_reviewed;this.restrictObject(we,"statistics","pending_changes_reviewed");me(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");me(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");me(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const ye=t.statistics.watchlist_changes_reviewed;this.restrictObject(ye,"statistics","watchlist_changes_reviewed");me(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const xe=t.statistics.users_reviewed;this.restrictObject(xe,"statistics","users_reviewed");me(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const ke=t.statistics.abuselogs_reviewed;this.restrictObject(ke,"statistics","abuselogs_reviewed");me(t.statistics.abuselogs_reviewed.total)||this.reset("statistics","abuselogs_reviewed","total")}{const _e=t.statistics.reverts_made;this.restrictObject(_e,"statistics","reverts_made");me(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");me(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");me(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");me(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");me(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");me(t.statistics.reverts_made.from_abuselogs)||this.reset("statistics","reverts_made","from_abuselogs");me(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const Se=t.statistics.users_welcomed;this.restrictObject(Se,"statistics","users_welcomed");me(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const qe=t.statistics.warnings_issued;this.restrictObject(qe,"statistics","warnings_issued");me(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");me(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");me(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");me(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");me(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");me(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const Ee=t.statistics.reports_filed;this.restrictObject(Ee,"statistics","reports_filed");me(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");me(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");me(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");me(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP");me(t.statistics.reports_filed.global_blocks)||this.reset("statistics","reports_filed","global_blocks");me(t.statistics.reports_filed.global_locks)||this.reset("statistics","reports_filed","global_locks")}{const Le=t.statistics.watchlist;this.restrictObject(Le,"statistics","watchlist");me(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");me(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const Ae=t.statistics.items_whitelisted;this.restrictObject(Ae,"statistics","items_whitelisted");me(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");me(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");me(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");me(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const Te=t.statistics.items_highlighted;this.restrictObject(Te,"statistics","items_highlighted");me(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");me(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");me(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");me(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const Ce=t.statistics.actions_executed;this.restrictObject(Ce,"statistics","actions_executed");me(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");me(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const ze=t.statistics.session_time;"number"==typeof ze&&ze>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const Me=t.highlight;this.restrictObject(Me,"highlight");{const $e=t.highlight.users;Array.isArray($e)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const Oe=t.highlight.pages;Array.isArray(Oe)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const Ie=t.highlight.tags;Array.isArray(Ie)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const Pe=t.whitelist;this.restrictObject(Pe,"whitelist");{const je=t.whitelist.users;Array.isArray(je)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const We=t.whitelist.pages;Array.isArray(We)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const De=t.whitelist.tags;Array.isArray(De)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}{const Re=t.favorite;this.restrictObject(Re,"favorite");{const Ue=t.favorite.warnings;Array.isArray(Ue)||this.reset("favorite","warnings"),t.favorite.warnings=t.favorite.warnings.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite warning [ ${e} ] from stored data.`),t})}{const Ne=t.favorite.reverts;Array.isArray(Ne)||this.reset("favorite","reverts"),t.favorite.reverts=t.favorite.reverts.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite revert [ ${e} ] from stored data.`),t})}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=3,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7852(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0;t.VERSION="2.0.9"},955(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getWarningFromLookup=function(e){return a[e]},t.warningsLookup=t.warnings=t.warningTemplateColors=void 0;t.warningTemplateColors={0:"grey",1:"#4169e1",2:"#ff8c00",3:"#ff4500",4:"#b22222","4im":"#000000"};const n={0:"1",1:"2",2:"3",3:"4",4:"report","4im":"report"},s=t.warnings={Vandalism:{title:"Vandalism",icon:"fas fa-skull-crossbones",description:"Warnings for different types of vandalism.",warnings:[{reportable:!0,queueType:["edit"],title:"Vandalism",name:"vandalism",icon:"fas fa-skull-crossbones",description:"Warning for general vandalism.",summary:"vandalism",auto:n,templates:[{name:"1",template:"uw-vandalism1"},{name:"2",template:"uw-vandalism2"},{name:"3",template:"uw-vandalism3"},{name:"4",template:"uw-vandalism4"},{name:"4im",template:"uw-vandalism4im"}]},{reportable:!0,queueType:["edit"],title:"Subtle vandalism",name:"subtle vandalism",icon:"fas fa-user-secret",description:"Warning for subtle vandalism.",summary:"subtle vandalism",auto:n,templates:[{name:"1",template:"uw-subtle1"},{name:"2",template:"uw-subtle2"},{name:"3",template:"uw-subtle3"},{name:"4",template:"uw-subtle4"}]},{reportable:!0,queueType:["edit"],title:"Image vandalism",name:"image vandalism",icon:"fas fa-image",description:"Warning for image vandalism.",summary:"image vandalism",auto:n,templates:[{name:"1",template:"uw-image1"},{name:"2",template:"uw-image2"},{name:"3",template:"uw-image3"},{name:"4",template:"uw-image4"},{name:"4im",template:"uw-image4im"}]},{reportable:!0,queueType:["edit"],title:"Sandbox",name:"[[WP:BADSAND|inappropriate]] sandbox use",icon:"fas fa-vial",description:"Warning for vandalism, libelous, or defamatory content added to sandbox",summary:"[[WP:BADSAND|inappropriate]] sandbox use",auto:n,templates:[{name:"1",template:"uw-sandbox1"},{name:"2",template:"uw-sandbox2"},{name:"3",template:"uw-sandbox3"},{name:"4",template:"uw-sandbox4"},{name:"4im",template:"uw-sandbox4im"}]},{reportable:!0,queueType:["edit"],title:"Deliberate errors",name:"deliberate errors",icon:"fas fa-bug",description:"Adding deliberate errors to articles.",summary:"deliberate errors",auto:n,templates:[{name:"1",template:"uw-error1"},{name:"2",template:"uw-error2"},{name:"3",template:"uw-error3"},{name:"4",template:"uw-error4"}]}]},Disruption:{title:"Disruption",icon:"fas fa-exclamation",description:"Warnings for different types of disruptive behavior.",warnings:[{reportable:!0,queueType:["edit"],title:"Disruptive editing",name:"[[WP:DE|disruptive editing]]",icon:"fas fa-exclamation",description:"Default warning for making disruptive edits but may be good faith.",summary:"[[WP:DE|disruptive editing]]",auto:n,templates:[{name:"1",template:"uw-disruptive1"},{name:"2",template:"uw-disruptive2"},{name:"3",template:"uw-disruptive3"},{name:"4",template:"uw-generic4",generic:"''Disruptive editing. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Editing tests",name:"editing tests",icon:"fas fa-flask",description:"Making test edits on live articles.",summary:"test edits",auto:n,templates:[{name:"1",template:"uw-test1"},{name:"2",template:"uw-test2"},{name:"3",template:"uw-test3"},{name:"4",template:"uw-generic4",generic:"''Test edits. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Commentary",name:"commentary",icon:"fas fa-comment-alt",description:"Adding opinion or commentary to articles.",summary:"commentary / talking in article",auto:n,templates:[{name:"1",template:"uw-talkinarticle1"},{name:"2",template:"uw-talkinarticle2"},{name:"3",template:"uw-talkinarticle3"},{name:"4",template:"uw-generic4",generic:"''Adding commentary to articles. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Inappropriate jokes",name:"inappropriate humor",icon:"fas fa-grin-squint",description:"Adding inappropriate humor to an article.",summary:"inappropriate humor",auto:n,templates:[{name:"1",template:"uw-joke1"},{name:"2",template:"uw-joke2"},{name:"3",template:"uw-joke3"},{name:"4",template:"uw-joke4"},{name:"4im",template:"uw-joke4im"}]},{reportable:!0,queueType:["edit"],title:"Deleting",name:"unexplained deletion",icon:"fas fa-trash",description:"Used when a user does not explain deletion of part of an article.",summary:"unexplained deletion",auto:n,templates:[{name:"1",template:"uw-delete1"},{name:"2",template:"uw-delete2"},{name:"3",template:"uw-delete3"},{name:"4",template:"uw-delete4"},{name:"4im",template:"uw-delete4im"}]}]},"Content Issues":{title:"Content Issues",icon:"fas fa-file-alt",description:"Warnings for different types of content issues.",warnings:[{reportable:!0,queueType:["edit"],title:"Unsourced",name:"unsourced changes",icon:"fas fa-question",description:"Warning for unsourced content.",summary:"unsourced changes",auto:n,templates:[{name:"1",template:"uw-unsourced1"},{name:"2",template:"uw-unsourced2"},{name:"3",template:"uw-unsourced3"},{name:"4",template:"uw-unsourced4"}]},{reportable:!0,queueType:["edit"],title:"Unsourced (BLP)",name:"unsourced [[WP:BLP|biographies of living persons']] changes",icon:"fas fa-person-circle-question",description:"Warning for unsourced BLP content.",summary:"unsourced [[WP:BLP|biographies of living persons']] changes",auto:n,templates:[{name:"1",template:"uw-biog1"},{name:"2",template:"uw-biog2"},{name:"3",template:"uw-biog3"},{name:"4",template:"uw-biog4"},{name:"4im",template:"uw-biog4im"}]},{reportable:!0,queueType:["edit"],title:"Unsourced genre",name:"unsourced genre changes",icon:"fas fa-music",description:"Warning for unsourced genre changes.",summary:"unsourced genre changes",auto:n,templates:[{name:"1",template:"uw-genre1"},{name:"2",template:"uw-genre2"},{name:"3",template:"uw-genre3"},{name:"4",template:"uw-genre4"}]},{reportable:!0,queueType:["edit"],title:"Original research",name:"[[WP:OR|original research]]",icon:"fas fa-lightbulb",description:"Adding original research or synthesis.",summary:"[[WP:OR|original research]]",auto:n,templates:[{name:"1",template:"uw-nor1"},{name:"2",template:"uw-nor2"},{name:"3",template:"uw-nor3"},{name:"4",template:"uw-nor4"}]},{reportable:!0,queueType:["edit"],title:"POV",name:"[[WP:NPOV|non-neutral changes]]",icon:"fas fa-balance-scale-left",description:"Adding content which violates the neutral point of view policy.",summary:"[[WP:NPOV|non-neutral changes]]",auto:n,templates:[{name:"1",template:"uw-npov1"},{name:"2",template:"uw-npov2"},{name:"3",template:"uw-npov3"},{name:"4",template:"uw-npov4"}]},{reportable:!0,queueType:["edit"],title:"Censoring",name:"[[WP:NOTCENSORED|censoring content]]",icon:"fas fa-ban",description:"Censoring topically-relevant content.",summary:"[[WP:NOTCENSORED|censoring content]]",auto:n,templates:[{name:"1",template:"uw-notcensored1"},{name:"2",template:"uw-notcensored2"},{name:"3",template:"uw-notcensored3"},{name:"4",template:"uw-notcensored4"}]},{reportable:!0,queueType:["edit"],title:"AI-generated",name:"[[WP:LLM|AI-generated content]]",icon:"fas fa-robot",description:"Adding AI-generated content.",summary:"[[WP:LLM|AI-generated content]]",auto:n,templates:[{name:"1",template:"uw-ai1"},{name:"2",template:"uw-ai2"},{name:"3",template:"uw-ai3"},{name:"4",template:"uw-ai4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==0}},{reportable:!0,queueType:["edit"],title:"AI-generated (talk)",name:"[[WP:LLM|AI-generated content]] in a discussion",icon:"fas fa-robot",description:"Writing an AI-generated comment.",summary:"[[WP:LLM|AI-generated content]] in a discussion",auto:n,templates:[{name:"1",template:"uw-aitalk1"},{name:"2",template:"uw-aitalk2"},{name:"3",template:"uw-aitalk3"},{name:"4",template:"uw-aitalk4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==1}},{reportable:!0,queueType:["edit"],title:"MOS violation",name:"[[WP:MOS|manual of style]] violation",icon:"fas fa-spell-check",description:"Not following the Manual of Style.",summary:"[[WP:MOS|manual of style]] violation",auto:n,templates:[{name:"1",template:"uw-mos1"},{name:"2",template:"uw-mos2"},{name:"3",template:"uw-mos3"},{name:"4",template:"uw-mos4"}]},{reportable:!1,queueType:["edit"],title:"English variant",name:"[[WP:ENGVAR|different English variant]]",icon:"fas fa-globe",description:"Content added in a different English variant than the rest of the article.",summary:"[[WP:ENGVAR|different English variant]]",auto:"notice",templates:[{name:"notice",template:"uw-engvar"}]},{reportable:!1,queueType:["edit"],title:"Not English",name:"non-English content",icon:"fas fa-language",description:"Content added in a language other than English.",summary:"non-English content",auto:"notice",templates:[{name:"notice",template:"uw-lang-noteng"}]}]},Conduct:{title:"Conduct",icon:"fas fa-user-shield",description:"Warnings for different types of conduct issues.",warnings:[{reportable:!0,queueType:["edit"],title:"Personal attacks",name:"[[WP:NPA|personal attacks]]",icon:"fas fa-bomb",description:"Personal attacks towards another user.",summary:"[[WP:NPA|personal attacks]]",auto:n,templates:[{name:"1",template:"uw-npa1"},{name:"2",template:"uw-npa2"},{name:"3",template:"uw-npa3"},{name:"4",template:"uw-npa4"},{name:"4im",template:"uw-npa4im"}]},{reportable:!0,queueType:["edit"],title:"Harassment",name:"[[WP:HARASS|harassment]]",icon:"fas fa-shield-alt",description:"Harassment of another user.",summary:"[[WP:HARASS|harassment]] of another user",auto:n,templates:[{name:"1",template:"uw-harass1"},{name:"2",template:"uw-harass2"},{name:"3",template:"uw-harass3"},{name:"4",template:"uw-harass4"},{name:"4im",template:"uw-harass4im"}]},{reportable:!0,queueType:["edit"],title:"TPO",name:"[[WP:TPO|removing or editing]] others' posts",icon:"fas fa-hand-paper",description:"Removing or editing others' posts.",summary:"[[WP:TPO|removing or editing]] others' posts",auto:n,templates:[{name:"1",template:"uw-tpo1"},{name:"2",template:"uw-tpo2"},{name:"3",template:"uw-tpo3"},{name:"4",template:"uw-tpo4"},{name:"4im",template:"uw-tpo4im"}]},{reportable:!0,queueType:["edit"],title:"Chatting",name:"inappropriate use of article talk pages",icon:"fas fa-comments",description:"Using article talk pages for inappropriate discussion.",summary:"inappropriate use of article talk pages",auto:n,templates:[{name:"1",template:"uw-chat1"},{name:"2",template:"uw-chat2"},{name:"3",template:"uw-chat3"},{name:"4",template:"uw-chat4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==1}},{reportable:!0,queueType:["edit"],title:"Owning",name:"assuming [[WP:OWN|ownership of articles]]",icon:"fas fa-user-shield",description:"Assuming ownership of articles.",summary:"assuming [[WP:OWN|ownership of articles]]",auto:n,templates:[{name:"1",template:"uw-own1"},{name:"2",template:"uw-own2"},{name:"3",template:"uw-own3"},{name:"4",template:"uw-own4"}]},{reportable:!0,queueType:["edit"],title:"AfD removal",name:"removing AfD templates or comments",icon:"fas fa-gavel",description:"Removing AfD templates or other users' comments from AfD discussions.",summary:"removing AfD templates or comments",auto:n,templates:[{name:"1",template:"uw-afd1"},{name:"2",template:"uw-afd2"},{name:"3",template:"uw-afd3"},{name:"4",template:"uw-afd4"}]},{reportable:!1,queueType:["edit"],title:"Edit warring",name:"[[WP:EW|edit warring]]",icon:"fas fa-jet-fighter",description:"Engaging in edit warring.",summary:"[[WP:EW|edit warring]]",auto(e){var t;return+(null==e||null===(t=e.user)||void 0===t?void 0:t.edits)<500?"notice":"warning"},templates:[{name:"notice",template:"uw-ew-soft",color:"grey"},{name:"warning",template:"uw-ew",color:"#ff4500"}]},{reportable:!0,queueType:["edit"],title:"Gaming the system",name:"[[WP:GAME|gaming the system]]",icon:"fas fa-chess-knight",description:"Attempting to game Wikipedia's policies or guidelines.",summary:"[[WP:GAME|gaming the system]]",auto:n,templates:[{name:"1",template:"uw-gaming1"},{name:"2",template:"uw-gaming2"},{name:"3",template:"uw-gaming3"},{name:"4",template:"uw-gaming4"},{name:"4im",template:"uw-gaming4im"}]}]},Promotional:{title:"Promotional",icon:"fas fa-bullhorn",description:"Warnings for promotional content.",warnings:[{reportable:!0,queueType:["edit"],title:"Advertising",name:"[[WP:PROMO|advertising or promotion]]",icon:"fas fa-ad",description:"Adding advertising or promotional content.",summary:"[[WP:PROMO|advertising or promotion]]",auto:n,templates:[{name:"1",template:"uw-advert1"},{name:"2",template:"uw-advert2"},{name:"3",template:"uw-advert3"},{name:"4",template:"uw-advert4"},{name:"4im",template:"uw-advert4im"}]},{reportable:!0,queueType:["edit"],title:"Spam links",name:"adding [[WP:ELNO|inappropriate links]]",icon:"fas fa-link",description:"Adding spam or promotional links.",summary:"adding [[WP:ELNO|inappropriate links]]",auto:n,templates:[{name:"1",template:"uw-spam1"},{name:"2",template:"uw-spam2"},{name:"3",template:"uw-spam3"},{name:"4",template:"uw-spam4"},{name:"4im",template:"uw-spam4im"}]},{reportable:!1,queueType:["edit"],title:"COI Edit",name:"editing with a [[WP:COI|conflict of interest]]",icon:"fas fa-user-tie",description:"Editing with a conflict of interest.",summary:"editing with a [[WP:COI|conflict of interest]]",auto:"notice",templates:[{name:"notice",template:"uw-coi"},{name:"warning",template:"uw-coi-warn"},{name:"username",template:"uw-coi-username"}]},{reportable:!1,queueType:["logevent"],title:"COI Log",name:"apparent [[WP:COI|conflict of interest]]",icon:"fas fa-user-tie",description:"Apparent conflict of interest.",summary:"apparent [[WP:COI|conflict of interest]]",auto:"username",templates:[{name:"username",template:"uw-coi-username"}]}]},"Abuse Log":{title:"Abuse Log",icon:"fas fa-shield-virus",description:"Warnings for triggering edit filters.",warnings:[{reportable:!0,queueType:["abuselog"],title:"Attempt",name:"triggering an edit filter",icon:"fas fa-vial",description:"Triggering an edit filter.",auto:n,templates:[{name:"1",template:"uw-attempt1"},{name:"2",template:"uw-attempt2"},{name:"3",template:"uw-attempt3"},{name:"4",template:"uw-attempt4"},{name:"4im",template:"uw-attempt4im"}],show:e=>!Boolean(null==e?void 0:e.revid)}]},"Edit Summary":{title:"Edit Summary",icon:"fas fa-pen-alt",description:"Warnings for inappropriate edit summaries.",warnings:[{reportable:!1,queueType:["edit"],title:"No edit summary",name:"no [[WP:ES|edit summary]] provided",icon:"fas fa-pen-nib",description:"Making an edit without providing an edit summary.",summary:"no [[WP:ES|edit summary]] provided",auto(e){var t;return+(null==e||null===(t=e.user)||void 0===t?void 0:t.edits)<500?"newcomer":"experienced"},templates:[{name:"notice",template:"uw-es"},{name:"experienced",template:"uw-es2"}]},{reportable:!0,queueType:["edit","logevent","abuselog"],title:"Inappropriate edit summary",name:"inappropriate [[WP:ES|edit summary]]",icon:"fas fa-pen-alt",description:"Using an inappropriate edit summary.",summary:"inappropriate [[WP:ES|edit summary]]",auto:n,templates:[{name:"1",template:"uw-bes1"},{name:"2",template:"uw-bes2"},{name:"3",template:"uw-bes3"},{name:"4",template:"uw-bes4"},{name:"4im",template:"uw-bes4im"}]},{reportable:!0,queueType:["edit","logevent","abuselog"],title:"Misleading edit summary",name:"misleading [[WP:ES|edit summary]]",icon:"fas fa-mask",description:"Using a misleading edit summary.",summary:"misleading [[WP:ES|edit summary]]",auto:n,templates:[{name:"1",template:"uw-mislead1"},{name:"2",template:"uw-mislead2"},{name:"3",template:"uw-mislead3"},{name:"4",template:"uw-generic4",generic:"''Misleading edit summary. ([[WP:WikiShield|WS]])''"}]},{reportable:!1,queueType:["edit","abuselog"],title:"Minor edit abuse",name:"improper use of [[WP:ME|minor edit]] checkbox",icon:"fas fa-minus",description:"Non-minor edit marked as minor",summary:"improper use of [[WP:ME|minor edit]] checkbox",auto:"notice",templates:[{name:"notice",template:"uw-minor"}]}]}},i={};for(const[e,t]of Object.entries(s)){const e=t.warnings.length;for(let n=0;n<e;n++){const e=t.warnings[n];i[e.title]=e}}const a=t.warningsLookup=i},863(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.welcomes=void 0;const n=t.welcomes={Auto:{title:"Auto",template:e=>{}},Default:{title:"Default",template:"Welcome",sign:!0},Basic:{title:"Basic",template:"W-basic",sign:!1},"Non-Latin":{title:"Non-Latin",template:"Welcome-non-latin",sign:!0},"Vandalism fighter":{title:"Vandalism fighter",template:"Welcome-vandalism fighter",sign:!1},Personal:{title:"Personal",template:"Welcome-personal",sign:!0},Cookie:{title:"Cookie",template:"Welcome cookie",sign:!0},Kitten:{title:"Kitten",template:"Welcome kitten",sign:!1},Graphical:{title:"Graphical",template:"W-graphical",sign:!1},Screen:{title:"Screen",template:"W-screen",sign:!1},Autobiography:{title:"Autobiography",template:"Welcome-auto",sign:!0},COI:{title:"COI",template:"Welcome-COI",sign:!0}};n.Auto.template=e=>!n["Non-Latin"].hide&&/[^\u0000-\u007F]/.test(e.name)?"Non-Latin":"Default"},4153(e,t,n){var s=n(8878);void 0===window.electron?(window.isElectron=!1,window.electron={mwapiLoader:async()=>{window.dispatchEvent(new CustomEvent("mwapi-loaded",{detail:{server:window.location.host,username:mw.user.getName(),pendingChangesServers:s.MediaWikiAPI.pendingChangesServers,dev:!1}}))},mwapiLoaded:e=>window.addEventListener("mwapi-loaded",t=>{const{server:n,username:s,pendingChangesServers:i,dev:a}=t.detail;e(n,s,i,a)}),mwapi:()=>Promise.reject(new Error("Not running in Electron environment")),menuEnabler:()=>{},setBadgeCount:()=>{},sendNotification:()=>{},localStorage:{get:e=>localStorage.getItem(e),set:(e,t)=>localStorage.setItem(e,t),delete:e=>localStorage.removeItem(e)},copyToClipboard:async e=>{if(navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}},log:e=>console.debug(e),info:e=>console.info(e),warn:e=>console.warn(e),error:e=>console.error(e),errorbox:(e,t)=>alert(`${e}\n\n${t}`),onOpenBrowser:()=>{},onOpenUrl:()=>{},onOpenNotification:()=>{},onOpenChangelog:()=>{},closePopup:e=>e.close(),openExternal:e=>window.open(e,"_blank"),openInBrowser:async e=>{const t=.8*window.screen.availWidth,n=.8*window.screen.availHeight,s=window.screenX+(window.outerWidth-t)/2,i=window.screenY+(window.outerHeight-n)/2,a=window.open(e,"myPopup",`width=${t},height=${n},left=${s},top=${i},resizable=false,scrollbars=true,menubar=false,toolbar=false,location=false,status=false`);return a.focus(),a.addEventListener("beforeunload",()=>{a.closed&&window.dispatchEvent(new CustomEvent("popup-closed",{detail:a}))}),a},onPopupClosed:e=>window.addEventListener("popup-closed",t=>e(t.detail)),onBeforeunload:()=>{},unloaded:()=>{},saveAccount:()=>{},disable:(e,t)=>{alert(`${e}\n\n${t}`),location.reload()}}):(window.isElectron=!0,document.querySelectorAll("[data-electron]").forEach(e=>{"false"===e.dataset.electron&&window.isElectron?e.style.display="none":"true"!==e.dataset.electron||window.isElectron||(e.style.display="none")}))},7411(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{constructor(){super(),e(this,"handleDragStart",(e,t)=>{this.draggedIndex=e,this.placeholderIndex=e,t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e),requestAnimationFrame(()=>this.updateDragState())}),e(this,"handleDragOver",(e,t)=>{if(t.preventDefault(),null===this.draggedIndex||e===this.placeholderIndex)return;const n=[...this.items],s=n[this.draggedIndex];n.splice(this.draggedIndex,1),n.splice(e,0,s),this.items=n,this.draggedIndex=e,this.placeholderIndex=e,this.render()}),e(this,"handleDragEnd",()=>{this.dispatchEvent(new CustomEvent("reorder",{detail:{keys:this.items.map(e=>e.key)},bubbles:!0})),this.draggedIndex=null,this.placeholderIndex=null,this.updateDragState()}),this.items=[],this.draggedIndex=null,this.placeholderIndex=null,this.itemWrappers=[]}connectedCallback(){this.className="draggable-order-list",this.syncItemsFromChildren()}syncItemsFromChildren(){const e=Array.from(this.children);this.items=e.map((e,t)=>({child:e,key:e.dataset.key||e.getAttribute("key")||t})),this.render()}addItem(e,t){this.items.push({child:e,key:t||this.items.length}),this.render()}clearItems(){this.items=[],this.render()}updateDragState(){const e=null!==this.draggedIndex;this.classList.toggle("is-dragging",e),this.itemWrappers.forEach((e,t)=>{e.classList.toggle("dragging",this.draggedIndex===t)})}render(){this.innerHTML="",this.itemWrappers=[],this.items.forEach((e,t)=>{const n=document.createElement("div");n.className="draggable-order-item-wrapper",n.draggable=!0,n.dataset.key=e.key,n.addEventListener("dragstart",e=>this.handleDragStart(t,e)),n.addEventListener("dragover",e=>this.handleDragOver(t,e)),n.addEventListener("dragend",this.handleDragEnd),n.appendChild(e.child),this.appendChild(n),this.itemWrappers.push(n)}),this.updateDragState()}}class n extends HTMLElement{static get observedAttributes(){return["name","enabled"]}constructor(){super(),e(this,"handleToggle",e=>{e.stopPropagation(),this._enabled=!this._enabled,this.updateEnabledState(),this.dispatchEvent(new CustomEvent("toggle",{detail:{enabled:this._enabled},bubbles:!0}))}),this._name="",this._enabled=!0}connectedCallback(){this.render()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"name":this._name=n||"",this.nameSpan&&(this.nameSpan.textContent=this._name);break;case"enabled":this._enabled="false"!==n&&"0"!==n,this.updateEnabledState()}}get name(){return this._name}set name(e){this.setAttribute("name",e)}get enabled(){return this._enabled}set enabled(e){this.setAttribute("enabled",e)}updateEnabledState(){this.classList.toggle("disabled",!this._enabled),this.toggle&&(this.toggle.title=this._enabled?"Click to disable":"Click to enable")}render(){this.className="draggable-order-item",this.innerHTML="",this.nameSpan=document.createElement("span"),this.nameSpan.className="draggable-order-item-name",this.nameSpan.textContent=this._name,this.toggle=document.createElement("div"),this.toggle.className="draggable-order-item-toggle",this.toggle.addEventListener("click",this.handleToggle),this.appendChild(this.nameSpan),this.appendChild(this.toggle),this.updateEnabledState()}}customElements.define("draggable-order-list",t),customElements.define("draggable-order-item",n)},7732(e,t,n){var s=n(3241);class i extends HTMLElement{constructor(){super(),this.duration={years:0,months:0,weeks:0,days:0,hours:0,minutes:0,seconds:0},this.isInfinite=!1}connectedCallback(){this.render(),this.attachEventListeners()}render(){this.innerHTML=`\n <label class="infinity-label">\n <span>Infinite Duration</span>\n </label>\n <div class="duration-inputs">\n ${[{key:"years",label:"Years"},{key:"months",label:"Months"},{key:"weeks",label:"Weeks"},{key:"days",label:"Days"},{key:"hours",label:"Hours"},{key:"minutes",label:"Minutes"},{key:"seconds",label:"Seconds"}].map(e=>`\n <label>\n <span>${e.label}</span>\n <input\n type="number"\n min="0"\n data-unit="${e.key}"\n value="0"\n step="1"\n placeholder="0"\n />\n </label>\n `).join("")}\n </div>\n `}attachEventListeners(){const e=this.querySelector(".infinity-label");e.addEventListener("click",()=>{this.isInfinite=!this.isInfinite,e.classList.toggle("selected",this.isInfinite),this.dispatchChangeEvent()}),this.querySelectorAll('input[type="number"]').forEach(e=>{e.addEventListener("input",e=>{const t=e.target.dataset.unit;this.duration[t]=parseInt(e.target.value,10)||0,this.dispatchChangeEvent()})})}dispatchChangeEvent(){this.dispatchEvent(new CustomEvent("change",{detail:this.getDurationString(),bubbles:!0}))}get value(){return this.getDurationString()}getDurationString(){if(this.isInfinite)return"infinite";let e="";const t={years:"Y",months:"M",weeks:"W",days:"D",hours:"H",minutes:"M",seconds:"S"};for(const[n,s]of Object.entries(this.duration))s>0&&(e+=`${s}${t[n]}`);return e||"0S"}set value(e){if("infinite"===e||"infinity"===e||"∞"===e){this.isInfinite=!0;const e=this.querySelector(".infinity-label");return void(e&&e.classList.add("selected"))}this.isInfinite=!1;const t=this.querySelector(".infinity-label");t&&t.classList.remove("selected");const n=s.expiryRegex.exec(e);if(n)for(const e of Object.keys(this.duration)){const t=n.groups[e];this.duration[e]=t?parseInt(t,10):0;const s=this.querySelector(`input[data-unit="${e}"]`);s&&(s.value=this.duration[e])}}}customElements.define("duration-input",i)},1914(e,t,n){n(7732),n(2784),n(5155),n(7411),n(1731)},5155(e,t){function n(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),t.NumericInput=void 0;class s extends HTMLElement{static get observedAttributes(){return["value","min","max","step"]}constructor(){super(),n(this,"handleMinus",()=>{const e=Number(this.inputValue),t=Math.round(100*Math.max(e-this.step,this.min))/100;this.updateValue(t)}),n(this,"handlePlus",()=>{const e=Number(this.inputValue),t=Math.round(100*Math.min(e+this.step,this.max))/100;this.updateValue(t)}),n(this,"handleInputChange",()=>{const e=this.input.value;if(isNaN(Number(e)))return void(this.input.value=this.inputValue);let t=Math.round(100*Math.min(Math.max(Number(e),this.min),this.max))/100;t=this.step>=1?Math.round(t):t,this.updateValue(t)}),n(this,"handleKeyUp",e=>{"enter"===e.key.toLowerCase()&&(this.handleInputChange(),e.target.blur())}),n(this,"handleInput",e=>{this.inputValue=e.target.value}),this.inputValue=0,this._min=-1/0,this._max=1/0,this._step=1}connectedCallback(){this.render(),this.setupEventListeners()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"value":this.inputValue=Number(n)||0,this.input&&(this.input.value=this.inputValue);break;case"min":this._min=Number(null!=n?n:-1/0);break;case"max":this._max=Number(null!=n?n:1/0);break;case"step":this._step=Number(null!=n?n:1)}}get value(){return this.inputValue}set value(e){this.setAttribute("value",e)}get min(){return this._min}get max(){return this._max}get step(){return this._step}updateValue(e){this.inputValue=e,this.input.value=e,this.dispatchEvent(new CustomEvent("change",{detail:{value:e},bubbles:!0}))}setupEventListeners(){this.minusBtn.addEventListener("click",this.handleMinus),this.plusBtn.addEventListener("click",this.handlePlus),this.input.addEventListener("input",this.handleInput),this.input.addEventListener("blur",this.handleInputChange),this.input.addEventListener("keyup",this.handleKeyUp),this.input.addEventListener("wheel",e=>{e.preventDefault(),e.deltaY<0?this.handlePlus():e.deltaY>0&&this.handleMinus()})}render(){this.className="numeric-input-container",this.minusBtn=document.createElement("span"),this.minusBtn.className="fa fa-minus numeric-input-button",this.input=document.createElement("input"),this.input.type="text",this.input.className="numeric-input",this.input.value=this.inputValue,this.input.autocomplete="off",this.plusBtn=document.createElement("span"),this.plusBtn.className="fa fa-plus numeric-input-button",this.appendChild(this.minusBtn),this.appendChild(this.input),this.appendChild(this.plusBtn)}}t.NumericInput=s,customElements.define("numeric-input",s)},2784(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{static get observedAttributes(){return["value","checked"]}constructor(){super(),e(this,"handleClick",()=>{this._value=!this._value,this.updateState(),this.dispatchEvent(new CustomEvent("change",{detail:{value:this._value,checked:this._value},bubbles:!0}))}),this._value=!1}connectedCallback(){this.render(),this.updateState()}attributeChangedCallback(e,t,n){t!==n&&("value"!==e&&"checked"!==e||(this._value="true"===n||"1"===n||""===n,this.updateState()))}get value(){return this._value}set value(e){this._value=!!e,this.setAttribute("value",this._value),this.updateState()}get checked(){return this._value}set checked(e){this.value=e}updateState(){this.classList.toggle("active",this._value)}render(){this.classList.add("settings-toggle"),this.innerHTML="";const e=document.createElement("div");e.className="toggle-switch";const t=document.createElement("div");t.className="toggle-slider",e.appendChild(t),this.appendChild(e),this.addEventListener("click",this.handleClick)}}customElements.define("toggle-input",t)},1731(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{static get observedAttributes(){return["title","description","value"]}constructor(){super(),e(this,"handleVolumeChange",e=>{const t=Math.max(0,Math.min(1,parseFloat(e.target.value)));this._value=t,this.slider.value=t,this.input.value=t.toFixed(2),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0}))}),this._title="",this._description="",this._value=.5,this._sound="",this._preview=null}connectedCallback(){this.render()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"title":this._title=n||"",this.titleEl&&(this.titleEl.textContent=this._title);break;case"description":this._description=n||"",this.descEl&&(this.descEl.textContent=this._description);break;case"value":this._value=Math.max(0,Math.min(1,parseFloat(n))),this.slider&&(this.slider.value=this._value),this.input&&(this.input.value=this._value.toFixed(2))}}get title(){return this._title}set title(e){this.setAttribute("title",e)}get value(){return this._value}set value(e){this.setAttribute("value",e)}setPreview(e,t){this._preview={audio:e,path:t},this.render()}render(){this.className="volume-control",this.innerHTML="";const e=document.createElement("div");e.className="volume-control-header";const t=document.createElement("div");if(t.className="volume-control-info",this.titleEl=document.createElement("div"),this.titleEl.className="volume-control-title",this.titleEl.textContent=this._title,this.descEl=document.createElement("div"),this.descEl.className="volume-control-desc",this.descEl.textContent=this._description,t.appendChild(this.titleEl),t.appendChild(this.descEl),e.appendChild(t),this._preview){const t=document.createElement("button");t.className="volume-control-preview",t.title="Preview sound",t.addEventListener("click",()=>{if(t.classList.contains("playing"))return;t.classList.add("playing");const e=t.querySelector("i");e&&(e.className="fa fa-stop");const n=new AbortController;t.onclick=()=>n.abort(),this._preview.audio.stopPreviews(),this._preview.audio.playSound(this._preview.path,n.signal,!0).finally(()=>{t.onclick=null,t.classList.remove("playing"),e&&(e.className="fa fa-play")})});const n=document.createElement("i");n.className="fa fa-play",t.appendChild(n),e.appendChild(t)}this.appendChild(e);const n=document.createElement("div");n.className="volume-control-slider-container",this.slider=document.createElement("input"),this.slider.type="range",this.slider.className="volume-control-slider",this.slider.min="0",this.slider.max="1",this.slider.step="0.01",this.slider.value=this._value,this.slider.autocomplete="off",this.slider.addEventListener("input",this.handleVolumeChange),n.appendChild(this.slider),this.input=document.createElement("input"),this.input.type="number",this.input.className="volume-control-input",this.input.min="0",this.input.max="1",this.input.step="0.01",this.input.value=this._value.toFixed(2),this.input.autocomplete="off",this.input.addEventListener("input",this.handleVolumeChange),n.appendChild(this.input),this.appendChild(n)}}customElements.define("volume-control",t)},8816(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.run=r,n(4153),n(1914);var s=n(7054),i=n(9501),a=n(691);function r(){addEventListener("click",()=>window.ineractedWithPage=!0,{once:!0}),addEventListener("wheel",e=>{e.target.closest(".no-scroll")||"INPUT"===e.target.tagName&&"number"===e.target.type&&(e.stopPropagation(),e.target.value=Number(e.target.value)+(e.deltaY<0?1:-1),e.target.dispatchEvent(new Event("input")))},{passive:!0}),electron.menuEnabler(),electron.mwapiLoaded(async(e,t,n,r)=>{if(i.StorageManager.okay(null,electron)){var o;document.querySelector("#rollback-needed .request-link").href=null!==(o=await fetch("https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q7765871&props=sitelinks/urls&format=json&origin=*").then(e=>e.json()).then(t=>{var n;return(null===(n=Object.values(t.entities.Q7765871.sitelinks).find(t=>t.url.startsWith(`https://${e}/wiki/`)))||void 0===n?void 0:n.url)||null}).catch(()=>null))&&void 0!==o?o:"https://www.wikidata.org/wiki/Q7765871";const i=new s.WikiShield(window.isMobile,e,t,n,r);document.body.classList.toggle("mobile",window.isMobile),electron.onOpenBrowser(()=>i.open(null,!1)),electron.onOpenUrl(e=>i.open(e,!1)),electron.onOpenNotification(e=>{const t=new URL(e);if(t.searchParams.has("markasread")){const e=i.notifications.find(null,+t.searchParams.get("markasread"));e&&i.notifications.read(e.type,e.notification)}i.open(e)}),electron.menuEnabler({browser:!0}),i.on("ready",async()=>{{const{editcount:e,registrationdate:t}=await i.api.account();(e<1e3||Date.now()-new Date(t).getTime()<6048e5)&&!r&&(alert("WikiShield requires an account that is at least 7 days old and has at least 1,000 edits to function. Please meet these requirements and try again."),electron.isElectron?window.close():location.reload())}electron.onBeforeunload(()=>{i.backup(),electron.unloaded()}),window.addEventListener("beforeunload",()=>i.backup());const e=new a.Killswitch(i);e.on("kill",()=>{alert("WikiShield has been temporarily disabled. Please contact the development team for more information."),electron.isElectron?window.close():location.reload()}),e.on("force-update",()=>{alert("The current version of WikiShield is no longer supported. Please update to the latest version to continue using WikiShield."),electron.isElectron?window.close():location.reload()}),e.on("update",()=>{electron.sendNotification({title:"WikiShield Update",body:"A new version of WikiShield is available. Please update to the latest version for the best experience."},"")}),e.on("unsafe",()=>{alert("Could not verify the integrity of WikiShield. Make sure you are connected to the internet. If the problem persists, please contact the development team."),electron.isElectron?window.close():location.reload()}),e.on("okay",async()=>{addEventListener("keydown",e=>i.controller(e)),addEventListener("keyup",e=>i.controller(e)),await i.init()},{once:!0}),e.check().then(()=>e.monitor(1e4))},{once:!0})}else alert("An error has occurred with the WikiShield storage system that could lead to data loss. For that reason, WikiShield has been automatically disabled. Please report this immediately to the development team."),electron.isElectron?window.close():location.reload()}),electron.mwapiLoader().catch(e=>{alert(`An error occurred while loading the WikiShield API:\n\n${e.stack||e}`),electron.isElectron?window.close():location.reload()})}window.isMobile=!1,window.arePopupsBlocked=(()=>{let e;try{return e=window.open("about:blank","_blank","width=100,height=100,left=-100,top=-100"),!e||e.closed||void 0===e.closed?!0:(e.close(),!1)}catch(e){return!0}})(),window.isElectron&&r()},317(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.AutoScroll=function(){document.querySelectorAll(".auto-scroll").forEach(e=>{e.dataset.autoScrollInitialized||(e.parentElement.addEventListener("wheel",t=>{e.dataset.autoScrollFreeze=750,e.dataset.autoScrollLastTime=performance.now();let n=parseFloat(e.dataset.autoScrollOffset)||0;const s=Math.abs(t.deltaX),i=Math.abs(t.deltaY),a=Math.abs(t.deltaZ),r=s+i+a;if(0===r)return;let o;switch(Math.max(s,i,a)){case s:o=Math.sign(t.deltaX);break;case i:o=Math.sign(t.deltaY);break;case a:o=Math.sign(t.deltaZ)}n+=o*r,e.dataset.autoScrollOffset=n},{passive:!0}),e.dataset.autoScrollInitialized=!0);let t=parseFloat(e.dataset.autoScrollOffset)||0;if("autoScrollFreeze"in e.dataset){const n=parseFloat(e.dataset.autoScrollLastTime)||performance.now(),s=performance.now();t+=s-n,e.dataset.autoScrollOffset=t,e.dataset.autoScrollLastTime=s;const i=parseFloat(e.dataset.autoScrollFreeze);i>0?e.dataset.autoScrollFreeze=i-s+n:(delete e.dataset.autoScrollFreeze,delete e.dataset.autoScrollLastTime)}const s=parseFloat(e.dataset.autoScrollSpeed)||1;let i=parseFloat(e.dataset.autoScrollCarry)||0;i+=s;const a=Math.floor(i);e.dataset.autoScrollCarry=(i-a).toString();let r=e.querySelectorAll(":scope > .auto-scroll-item").length;if(0===r){const t=e.innerHTML;e.innerHTML="";const n=document.createElement("span");n.className="auto-scroll-item",n.innerHTML=t,e.appendChild(n),r=1}const o=e.querySelector(":scope > .auto-scroll-item"),l=getComputedStyle(o),d=o.clientWidth+(parseFloat(l.marginLeft)||0)+(parseFloat(l.marginRight)||0),c=e.clientWidth;if(d<c)return void e.querySelectorAll(":scope > .auto-scroll-item:not(:first-child)").forEach(e=>e.remove());const u=Math.ceil(c/d)+1-r;if(u>0)for(let e=0;e<u;e++){const e=o.cloneNode(!0);o.parentNode.insertBefore(e,o.nextSibling)}else if(u<0){const t=e.querySelectorAll(":scope > .auto-scroll-item");for(let e=0;e<-u;e++){var p;null===(p=t[e])||void 0===p||p.remove()}}const g=(performance.now()-t)/1e3*60*s%d;e.scrollLeft=g;const h=(e,t,n)=>{(async function(e,t,n,s=()=>!0){if(0===t)return Promise.resolve([0,0]);const i=e.scrollLeft,a=i+t,r=performance.now()+n;let o;const l=new Promise(e=>o=e),d=()=>{const l=performance.now(),c=i+Math.min(1,(l-(r-n))/n)*t;l>=r?(e.scrollLeft=a,o([0,0])):s(e,c)?(e.scrollLeft=c,requestAnimationFrame(d)):o([t-c+i,Math.max(0,r-l)])};return requestAnimationFrame(d),l})(e,t,n,(e,t)=>{var n;const s=d;return!(t>=s)||null!==(n=void(e.scrollLeft=t%s))&&void 0!==n&&n}).then(([t,n])=>{t>0&&h(e,t,n)})};s>0&&h(e,a,1e3*n)})};const n=1/60},4784(e,t){function n(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function s(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Dialog=void 0;var i=new WeakSet;function a(e){null!=e&&e.parentElement&&(e.classList.add("hidden"),setTimeout(()=>{e.parentElement&&e.remove()},300))}async function r(){if(this.dialogs.processing||0===this.dialogs.queue.length)return;this.dialogs.processing=!0;const{fn:e,resolve:t,reject:n}=this.dialogs.queue.shift();try{this.dialogs.active=!0;const n=await e();this.dialogs.active=null,t(n)}catch(e){this.dialogs.active=null,n(e)}finally{this.dialogs.processing=!1,requestAnimationFrame(()=>s(i,this,r).call(this))}}function o(e,t=!1){return new Promise((n,a)=>{t&&this.dialogs.active?e().then(n).catch(a):(this.dialogs.queue.push({fn:e,child:t,resolve:n,reject:a}),s(i,this,r).call(this))})}function l(e,t,n="",s=""){return new Promise(i=>{const a=document.createElement("div");a.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal"),a.appendChild(r);const o=document.createElement("div");o.classList.add("confirmation-modal-header"),r.appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal-title"),l.textContent=e,o.appendChild(l);const d=document.createElement("div");d.classList.add("confirmation-modal-body"),d.innerHTML=t,r.appendChild(d);const c=document.createElement("input");c.type="text",c.classList.add("confirmation-modal-input"),c.placeholder=n,c.value=s,d.appendChild(c),c.focus(),c.select();const u=document.createElement("div");u.classList.add("confirmation-modal-footer"),r.appendChild(u);const p=document.createElement("button");p.classList.add("confirmation-modal-button","confirmation-modal-button-cancel"),p.style.setProperty("--background","211, 51, 51"),p.textContent="Cancel",u.appendChild(p);const g=document.createElement("button");g.classList.add("confirmation-modal-button","confirmation-modal-button-submit"),g.style.setProperty("--background","51, 153, 211"),g.textContent="Submit",u.appendChild(g);const h=e=>{document.removeEventListener("keydown",m,!0),a.classList.add("closing"),r.classList.add("closing"),setTimeout(()=>{a.remove(),i(e)},200)},m=e=>{if("Enter"===e.key)return e.preventDefault(),e.stopPropagation(),h(c.value),!1;if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),h(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",m,!0),p.addEventListener("click",()=>h(null)),g.addEventListener("click",()=>h(c.value)),a.addEventListener("click",e=>{e.target===a&&h(null)})})}function d(e){return new Promise(t=>{const n=e=>{document.removeEventListener("keydown",s,!0),i.classList.add("closing"),a.classList.add("closing"),setTimeout(()=>{i.remove(),t(e)},200)},s=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),n(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",s,!0);const i=document.createElement("div");i.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(i);const a=document.createElement("div");a.classList.add("confirmation-modal"),i.appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal-header"),a.appendChild(r);const o=document.createElement("div");o.classList.add("confirmation-modal-title"),o.textContent="Report to UAA",r.appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal-body"),l.innerHTML="Select reason for reporting <span class='confirmation-modal-username'></span> to UAA:",a.appendChild(l),l.querySelector(".confirmation-modal-username").textContent=e;const d=document.createElement("div");d.classList.add("confirmation-modal-footer","confirmation-modal-footer-vertical"),a.appendChild(d),["Disruptive","Offensive","Promotional","Misleading"].forEach(e=>{const t=`${e} username`,s=document.createElement("button");s.classList.add("confirmation-modal-button","confirmation-modal-button-reason"),s.textContent=t,s.addEventListener("click",()=>n(t)),d.appendChild(s)});const c=document.createElement("button");c.classList.add("confirmation-modal-button","confirmation-modal-button-cancel"),c.style.setProperty("--background","211, 51, 51"),c.textContent="Cancel",c.addEventListener("click",()=>n(null)),d.appendChild(c),i.addEventListener("click",e=>{e.target===i&&n(null)})})}function c(e,t,n=null,s=!1){return new Promise(i=>{const a=e=>{document.removeEventListener("keydown",r,!0),o.classList.add("closing"),l.classList.add("closing"),setTimeout(()=>{o.remove(),i(e)},200)},r=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),a(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",r,!0);const o=document.createElement("div");o.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal"),o.appendChild(l);const d=document.createElement("div");d.classList.add("confirmation-modal-header"),l.appendChild(d);const c=document.createElement("div");c.classList.add("confirmation-modal-title"),c.textContent=e,d.appendChild(c);const u=document.createElement("div");u.classList.add("confirmation-modal-body"),u.innerHTML=t,l.appendChild(u);const p=document.createElement("div");if(p.classList.add("confirmation-modal-footer"),l.appendChild(p),n&&!s){const s=document.createElement("button");s.classList.add("confirmation-modal-button","confirmation-modal-button-uaa"),s.style.setProperty("--background","211, 51, 51"),s.textContent="Report to UAA",p.appendChild(s),s.addEventListener("click",()=>{document.removeEventListener("keydown",r,!0),o.classList.add("closing"),l.classList.add("closing"),setTimeout(async()=>{o.remove();const s=await this.UAA(n,!0);s?this.ws.execute({name:"reportToUAA",params:{reportMessage:s}},void 0,void 0,{user:{name:n}}):i(await this.confirm(e,t,n,!1,!0))},200)})}const g=document.createElement("div");g.classList.add("confirmation-modal-footer-right"),p.appendChild(g);const h=document.createElement("button");h.classList.add("confirmation-modal-button","confirmation-modal-button-no"),h.textContent="No",h.addEventListener("click",()=>a(!1)),g.appendChild(h);const m=document.createElement("button");m.classList.add("confirmation-modal-button","confirmation-modal-button-yes"),m.style.setProperty("--background","51, 102, 204"),m.textContent="Yes",m.addEventListener("click",()=>a(!0)),g.appendChild(m),o.addEventListener("click",e=>{e.target===o&&a(null)}),requestAnimationFrame(()=>m.focus())})}function u(e,t){return new Promise(async n=>{const s=document.createElement("div");s.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(s);const i=document.createElement("div");i.classList.add("confirmation-modal"),s.appendChild(i);const a=document.createElement("div");a.classList.add("confirmation-modal-header"),a.textContent=e,i.appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal-body"),r.innerHTML='<div class="dialog-loading">\n <div class="dialog-spinner"></div>\n <div class="dialog-loading-text">Loading...</div>\n </div>',i.appendChild(r);const o=()=>{document.removeEventListener("keydown",l,!0),s.classList.add("closing"),i.classList.add("closing"),setTimeout(()=>{s.remove(),n()},200)},l=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),o(),!1};document.addEventListener("keydown",l,!0),s.addEventListener("click",e=>{e.target===s&&o()}),t instanceof Promise?t.then(e=>{r&&(r.innerHTML=e)}).catch(()=>{r&&(r.innerHTML="Failed to load content")}):r.innerHTML=t})}t.Dialog=class{constructor(e){n(this,i),this.ws=e,this.dialogs={processing:!1,active:null,queue:[]},this.popups=[],addEventListener("focus",()=>{this.popups.length>0&&(this.popups.forEach(e=>electron.closePopup(e)),this.popups=[],requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())}))}),electron.onPopupClosed(e=>{const t=this.popups.indexOf(e);-1!==t&&this.popups.splice(t,1),0===this.popups.length&&requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())})})}controller(e){}check(){if(0===this.popups.length)return requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())});requestAnimationFrame(()=>this.check())}toast(e,t,n="default",r=5e3){const o=this.ws.store.settings.zen_mode;if(o.enabled&&!o.toasts.enabled)return!1;const l=document.createElement("div");l.classList.add("toast-alert",n);const d=document.createElement("div");d.classList.add("toast-icon"),l.appendChild(d);const c=document.createElement("i");switch(c.classList.add("fa"),d.appendChild(c),n){case"success":c.classList.add("fa-check");break;case"warning":c.classList.add("fa-exclamation-triangle");break;case"error":c.classList.add("fa-xmark");break;default:c.classList.add("fa-info-circle")}const u=document.createElement("div");u.classList.add("toast-content"),l.appendChild(u);const p=document.createElement("div");p.classList.add("toast-title"),p.textContent=e,u.appendChild(p);const g=document.createElement("div");g.classList.add("toast-message"),g.textContent=t,u.appendChild(g);const h=document.createElement("div");h.classList.add("toast-close"),h.addEventListener("click",()=>{s(i,this,a).call(this,l)}),l.appendChild(h);const m=document.createElement("i");return m.classList.add("fa","fa-xmark"),h.appendChild(m),document.body.querySelector("#app").appendChild(l),setTimeout(()=>{this.ws.audio.playSound(["notification","toast"]),l.classList.add("show")},10),r>0&&setTimeout(()=>s(i,this,a).call(this,l),r),!0}input(e,t,n="",a="",r=!1){return s(i,this,o).call(this,()=>s(i,this,l).call(this,e,t,n,a),r)}UAA(e,t=!1){return s(i,this,o).call(this,()=>s(i,this,d).call(this,e),t)}confirm(e,t,n=null,a=!1,r=!1){return s(i,this,o).call(this,()=>s(i,this,c).call(this,e,t,n,a),r)}show(e,t){return s(i,this,o).call(this,()=>s(i,this,u).call(this,e,t))}}},8469(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.GUI=void 0;var s=n(4192),i=n(4041),a=n(7054),r=n(2069),o=n(4784),l=n(8921),d=n(9117),c=n(372),u=n(955),p=n(7698),g=n(317);function h(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function m(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v=new WeakSet;class f{constructor(e){h(this,v),this.ws=e,this.dialog=new o.Dialog(this.ws),this.events=new l.EventManager(this.ws),this.settings=new d.Settings(this.ws),this.intervals={DEFCON:null,outdated:null},this.controllers={current:null}}async build(){this.updateDEFCON(),document.documentElement.style.colorScheme={light:"only light",auto:"light dark",dark:"only dark"}[this.ws.store.UI.theme.app]||"light dark";const e={code:["ArrowUp","ArrowUp","ArrowDown","ArrowDown","ArrowLeft","ArrowRight","ArrowLeft","ArrowRight","b","a"],index:0,function:t=>{t.key!==e.code[e.index]?e.index=t.key===e.code[0]?1:0:++e.index===e.code.length&&(e.index=0,this.ws.open("https://ws.luni.me/konami-easter-egg","force"))}};addEventListener("keydown",e.function),this.updateAccessibility(),document.querySelector("#initial").classList.remove("hidden"),document.querySelectorAll(".VERSION").forEach(e=>e.textContent=a.WikiShield.config.version),Math.random()<.01&&(document.querySelector("#wikishield-sikiwhield").textContent="SikiWhield");const t=new AbortController;let n;const s=new Promise(e=>n=e);let i;this.ws.audio.playSound(["startup"],t.signal,!1,()=>n()),await s;const r=this.ws.store.settings.performance.startup;if("always_off"!==r){const e=document.getElementById("dots-canvas"),t=e.getContext("2d"),n=Math.min(devicePixelRatio||1,2);class s{constructor(){m(this,"radius",2),this.x=Math.random()*e.width,this.y=Math.random()*e.height,this.vx=.5*(Math.random()-.5),this.vy=.5*(Math.random()-.5),this.color=s.colors[Math.random()*s.colors.length|0],this.fill=`rgba(${this.color}, 0.8)`,this.shadow=`rgba(${this.color}, 0.8)`}update(){this.x+=this.vx,this.y+=this.vy,this.x<0?this.x=e.width:this.x>e.width&&(this.x=0),this.y<0?this.y=e.height:this.y>e.height&&(this.y=0)}draw(){t.beginPath(),t.arc(this.x,this.y,this.radius,0,2*Math.PI),t.fillStyle=this.fill,t.fill()}}m(s,"dots",[]),m(s,"target",0),m(s,"colors",["102, 126, 234","240, 147, 251","118, 75, 162","217, 70, 239"]);let a=null;const o=()=>{a||(a=requestAnimationFrame(()=>{a=null;const i=e.width,r=e.height;e.width=Math.floor(innerWidth*n),e.height=Math.floor(innerHeight*n),e.style.width=`${innerWidth}px`,e.style.height=`${innerHeight}px`,t.setTransform(1,0,0,1,0,0),t.scale(n,n);const o=e.width/(i||e.width),l=e.height/(r||e.height);if(s.dots.forEach(e=>{e.x*=o,e.y*=l}),s.target=Math.floor(innerWidth*innerHeight/7e3),s.target=Math.max(40,Math.min(250,s.target)),s.target>s.dots.length)for(let e=s.dots.length;e<s.target;e++)s.dots.push(new s);else s.target<s.dots.length&&(s.dots.length=s.target)}))};o(),addEventListener("resize",o);const l=160,d=30,c=500;let u=null,p=performance.now();const g=new Array(15).fill(1e3/60),h=()=>{{const n=performance.now(),a=n-p;p=n,g.shift(),g.push(a);const o=[...g].sort((e,t)=>e-t).slice(2,-2),l=1e3/(o.reduce((e,t)=>e+t,0)/o.length);if("adaptive"===r){if(l<d){if(null===u&&(u=n),n-u>=c)return i&&cancelAnimationFrame(i),i=null,void t.clearRect(0,0,e.width,e.height)}else u=null;l<45&&s.dots.length>60&&(s.dots.length=Math.max(60,Math.floor(.9*s.dots.length)),s.target=s.dots.length)}}t.clearRect(0,0,e.width,e.height),s.dots.forEach(e=>{e.update(),e.draw()});const n=Math.ceil(innerWidth/l),a=Math.ceil(innerHeight/l),o=new Array(n*a);for(let e=0;e<o.length;e++)o[e]=[];s.dots.forEach((e,t)=>{const s=Math.max(0,Math.min(n-1,Math.floor(e.x/l))),i=Math.max(0,Math.min(a-1,Math.floor(e.y/l)));o[i*n+s].push(t)});const m=innerWidth/2,v=innerHeight/2,f=(e,n,s,i,a)=>{const r=[0];Math.max(e,s)>innerWidth&&r.push(-innerWidth),Math.min(e,s)<0&&r.push(innerWidth);const o=[0];Math.max(n,i)>innerHeight&&o.push(-innerHeight),Math.min(n,i)<0&&o.push(innerHeight),t.lineWidth=1,t.strokeStyle=a;for(const a of r)for(const r of o)t.beginPath(),t.moveTo(e+a,n+r),t.lineTo(s+a,i+r),t.stroke()};for(let e=0;e<a;e++)for(let t=0;t<n;t++){const i=o[e*n+t];if(0!==i.length)for(let r=-1;r<=1;r++){const l=(e+r+a)%a;for(let e=-1;e<=1;e++){const a=o[l*n+(t+e+n)%n];if(0!==a.length)for(let e=0;e<i.length;e++){const t=s.dots[i[e]];for(let n=0;n<a.length;n++){const r=a[n];if(r<=i[e])continue;const o=s.dots[r];let l=t.x-o.x,d=t.y-o.y;l>m&&(l-=innerWidth),l<-m&&(l+=innerWidth),d>v&&(d-=innerHeight),d<-v&&(d+=innerHeight);const c=l*l+d*d;if(c<22500){const e=.4*(1-Math.sqrt(c)/150),n=t.color.split(","),s=o.color.split(","),i=(parseInt(n[0])+parseInt(s[0]))/2,a=(parseInt(n[1])+parseInt(s[1]))/2,r=(parseInt(n[2])+parseInt(s[2]))/2;f(t.x,t.y,t.x-l,t.y-d,`rgba(${i}, ${a}, ${r}, ${e})`)}}}}}}i=requestAnimationFrame(h)};h()}this.ws.rights.rollback||"LuniZunie"===this.ws.api.username?(document.querySelector("#rollback-needed").classList.add("hidden"),document.querySelector("#start-button").classList.remove("hidden")):(document.querySelector("#rollback-needed").classList.remove("hidden"),document.querySelector("#start-button").classList.add("hidden")),document.querySelector("#start-button").addEventListener("click",()=>{window.removeEventListener("keydown",e.function),t.abort(),this.ws.audio.playSound(["ui","click"]),i&&cancelAnimationFrame(i),this.ws.start()}),window.addEventListener("click",e=>{[...document.querySelectorAll(".tooltip.buttons")].forEach(e=>e.remove());const t=e.target.closest("[href]");if(t){const n=new URL(t.href,location.href);if(n.origin===location.origin&&n.pathname===location.pathname)return;if(t.dataset.multipleHrefs)try{const[e,n=""]=t.dataset.multipleHrefs.split(";"),s=Object.fromEntries(n.split("&").map(e=>{const[t,n]=e.split("=");return[t,decodeURIComponent(n)]}));switch(e){case"page":{const e=s.title,n=+s.id;this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Revision",i.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:Permalink/${n}`),e.altKey),t.remove()}),t.appendChild(i);const a=document.createElement("div");a.classList.add("button"),a.innerText="Diff",a.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:Diff/${n}`),e.altKey),t.remove()}),t.appendChild(a)})}break;case"page-abuse":{const e=s.title,n=+s.id;this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Details",i.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:AbuseLog/${n}`),e.altKey),t.remove()}),t.appendChild(i);const a=document.createElement("div");a.classList.add("button"),a.innerText="Examine",a.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:AbuseFilter/examine/log/${n}`),e.altKey),t.remove()}),t.appendChild(a)})}break;case"log":{const e=s.title,n=JSON.parse(s.log);this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Log",i.addEventListener("click",s=>{const i=this.ws.page(`Special:Log/${encodeURIComponent(n.user)}?page=${encodeURIComponent(e)}&type=${n.type}&wptime=${n.timestamp}&limit=1`,!1,!1),a=this.ws.open(i,s.altKey);t.remove(),a.addEventListener("load",()=>{a.scroll({behavior:"smooth",top:a.document.body.scrollHeight})},{once:!0})}),t.appendChild(i)})}break;case"user":{const e=s.name;this.createTooltip(t,"buttons",null,null,null,t=>{const n=document.createElement("div");n.classList.add("button"),n.innerText="User talk",n.addEventListener("click",n=>{this.ws.open(this.ws.page(`User talk:${e}`),n.altKey),t.remove()}),t.appendChild(n);const s=document.createElement("div");s.classList.add("button"),s.innerText="User contribs",s.addEventListener("click",n=>{this.ws.open(this.ws.page(`Special:Contribs/${e}`),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="User page",i.addEventListener("click",n=>{this.ws.open(this.ws.page(`User:${e}`),n.altKey),t.remove()}),t.appendChild(i)})}break;case"email":this.createTooltip(t,"buttons",null,null,null,e=>{const t=document.createElement("div");t.classList.add("button"),t.innerText="Emergency",t.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Emergency"),t.altKey),e.remove()}),e.appendChild(t);const n=document.createElement("div");n.classList.add("button"),n.innerText="ArbCom",n.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Arbitration Committee"),t.altKey),e.remove()}),e.appendChild(n);const s=document.createElement("div");s.classList.add("button"),s.innerText="Oversight",s.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Oversight"),t.altKey),e.remove()}),e.appendChild(s)})}}catch(n){this.ws.open(t.getAttribute("href"),e.altKey)}finally{e.preventDefault()}else this.ws.open(t.getAttribute("href"),e.altKey);e.preventDefault()}}),document.querySelector("#loading").classList.add("hidden")}async start(){this.intervals.DEFCON=setInterval(this.updateDEFCON.bind(this),6e4),document.querySelector("#DEFCON").addEventListener("click",e=>{this.ws.open("https://en.wikipedia.org/w/index.php?tagfilter=mw-manual-revert%7Cmw-rollback%7Cmw-undo&title=Special%3ARecentChanges&urlversion=2",e.altKey)}),this.settings.start(),document.querySelector("#app").classList.remove("hidden"),document.querySelector("#initial").classList.add("hidden"),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation();const n=e.closest(".bottom-tool-item"),s=document.querySelector(`#${n.dataset.menu}-menu`),i=s.classList.contains("show");switch(n.dataset.menu){case"revert":s.innerHTML="",this.createWarnMenu("reverts",s,this.ws.queue.current.item);break;case"warn":s.innerHTML="",this.createWarnMenu("warnings",s,this.ws.queue.current.item);break;case"page":{var a;const e=this.ws.queue.current.item,t=!0===(null==e||null===(a=e.page)||void 0===a?void 0:a.watched);document.querySelector("#page-watch").classList.toggle("hidden",t),document.querySelector("#page-unwatch").classList.toggle("hidden",!t)}}this.closeMenus(),i||(s.classList.add("show"),e.classList.add("active"),this.positionBottomMenu(n,s))})}),document.querySelectorAll(".submenu-trigger").forEach(e=>{let t=(0,s.generateRandomUUID)();e.addEventListener("mouseenter",()=>{t=null;const n=e.closest(".bottom-tool-menu");n&&n.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show"));const s=e.querySelector(".submenu");s&&(this.events.submenu(s,s.dataset.eventName),s.classList.add("show"),this.positionSubmenu(s,e))}),e.addEventListener("mouseleave",()=>{const n=(0,s.generateRandomUUID)();t=n,setTimeout(()=>{if(t!==n)return;const s=e.querySelector(".submenu");s&&s.classList.remove("show")},500)})}),document.querySelectorAll(".menu-option:not(.submenu-trigger)").forEach(e=>{e.addEventListener("click",()=>this.closeMenus())}),document.querySelectorAll(".submenu").forEach(e=>{e.addEventListener("click",e=>e.stopPropagation())}),document.querySelectorAll("#queue-tabs > .queue-tab").forEach(e=>this.addTooltipListener(e));{const e=["alert","message"];e.forEach(e=>{const t=document.querySelector(`#${e}s-icon`);this.addTooltipListener(t),t.addEventListener("click",()=>{const t=document.querySelector(`#${e}s-panel`);t.classList.toggle("show"),t.classList.contains("show")&&this.ws.notifications.seen(e)}),document.querySelector(`#mark-all-${e}s-read`).addEventListener("click",t=>{this.ws.notifications.read(e)})}),document.addEventListener("click",t=>{for(const n of e){const e=document.querySelector(`#${n}s-panel`),s=document.querySelector(`#${n}s-icon`);null!=e&&e.contains(t.target)||null!=s&&s.contains(t.target)||null==e||e.classList.remove("show")}t.target.closest(".bottom-tool-menu")||t.target.closest(".confirmation-modal-overlay")||this.closeMenus()})}const e=document.querySelector("#latest-edits-tab");e.addEventListener("click",()=>this.updateDiffDisplay(this.ws.queue.current.item,!1)),this.addTooltipListener(e);const t=document.querySelector("#consecutive-edits-tab");t.addEventListener("click",()=>this.updateDiffDisplay(this.ws.queue.current.item,!0)),this.addTooltipListener(t),document.querySelector("#pending-changes-container > .accept").addEventListener("click",async e=>{await this.ws.gui.settings.waitForClose();const t=await this.dialog.input("Accept Pending Changes","Enter an optional edit summary for accepting this change:","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"next-item",params:{}},{name:"accept-pending-edit",params:{summary:t}}]})}),document.querySelector("#pending-changes-container > .reject").addEventListener("click",async e=>{await this.ws.gui.settings.waitForClose();const t=await this.dialog.input("Reject Pending Changes","Enter an optional edit summary for rejecting this change:","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"next-item",params:{}},{name:"reject-pending-edit",params:{summary:t}}]})}),document.querySelectorAll("#bottom-tools [data-tooltip]").forEach(e=>this.addTooltipListener(e));{const e=document.querySelector("#queue");{const t=this.ws.store.UI.queue.width;t&&(e.style.width=t,document.querySelector("#right-container").style.width=`calc(100% - ${t})`)}const t=document.querySelector("#right-details");{const e=this.ws.store.UI.details.width;e&&(t.style.width=e,document.querySelector("#main-container").style.width=`calc(100% - ${e})`)}const n={active:null,section:null,x:null,width:null,windowWidth:null},s=(e,t,s)=>{s.preventDefault(),n.active=e,n.section=t,n.x=s.clientX,n.width=t.getBoundingClientRect().width,n.windowWidth=innerWidth},i=document.querySelector("#queue-width-adjust");i.addEventListener("pointerdown",t=>s(i,e,t));const a=document.querySelector("#details-width-adjust");a.addEventListener("pointerdown",e=>s(a,t,e)),addEventListener("pointerup",()=>{n.active===i?this.ws.store.UI.queue.width=e.style.width:n.active===a&&(this.ws.store.UI.details.width=t.style.width),n.active=null,n.section=null}),addEventListener("pointermove",e=>{if(!n.active)return;const t=e.clientX-n.x;let s;n.active===i?s=n.width+t:n.active===a&&(s=n.width-t);const r=.1*n.windowWidth,o=.3*n.windowWidth;s=Math.max(r,Math.min(o,s));const l=s/n.windowWidth*100;n.section.style.width=`${l}vw`,n.active===i?document.querySelector("#right-container").style.width=`calc(100% - ${l}vw)`:n.active===a&&(document.querySelector("#main-container").style.width=`calc(100% - ${l}vw)`)})}const n=a.WikiShield.config.changelog.version;var i,r;(n.endsWith("!")||n!==this.ws.store.changelog)&&(this.ws.store.changelog=n.replace(/!$/,""),null===(i=(r=electron).open)||void 0===i||i.call(r,"changelog"));this.addTooltipListener(document.querySelector("#settings-icon")),document.querySelectorAll("#queue-top-right > span").forEach(e=>this.addTooltipListener(e)),this.updateZenMode(),this.reorderQueues(),this.newCurrentItem(null),document.querySelector("#settings-icon").addEventListener("click",()=>{this.settings.open()}),this.events.button(document.querySelector("#clear-queue"),"clear-queue"),this.events.button(document.querySelector("#previous-item-button"),"previous-item"),this.events.button(document.querySelector("#next-item-button"),"next-item"),this.events.button(document.querySelector("#user-open-user-page"),"open-user-page"),this.events.button(document.querySelector("#user-open-user-talk"),"open-user-talk"),this.events.button(document.querySelector("#user-view-contribs"),"open-user-contributions"),this.events.button(document.querySelector("#user-view-filter-log"),"open-filter-log"),this.events.button(document.querySelector("#user-whitelist"),"whitelist-user"),this.events.button(document.querySelector("#user-unwhitelist"),"unwhitelist-user"),this.events.button(document.querySelector("#user-highlight"),"highlight-user"),this.events.button(document.querySelector("#user-unhighlight"),"unhighlight-user"),this.events.submenu(document.querySelector("#user-welcome .submenu"),"welcome-user"),this.events.submenu(document.querySelector("#user-report-aiv .submenu"),"report-user-to-aiv"),this.events.submenu(document.querySelector("#user-report-uaa .submenu"),"report-user-to-uaa"),this.events.submenu(document.querySelector("#user-request-global-block .submenu"),"request-global-block"),this.events.submenu(document.querySelector("#user-request-global-lock .submenu"),"request-global-lock"),this.events.submenu(document.querySelector("#user-new-talk-topic .submenu"),"send-message-to-user-talk"),this.events.button(document.querySelector("#page-open-page"),"open-page"),this.events.button(document.querySelector("#page-open-talk"),"open-page-talk"),this.events.button(document.querySelector("#page-watch"),"watch-page"),this.events.button(document.querySelector("#page-unwatch"),"unwatch-page"),this.events.button(document.querySelector("#page-whitelist"),"whitelist-page"),this.events.button(document.querySelector("#page-unwhitelist"),"unwhitelist-page"),this.events.button(document.querySelector("#page-highlight"),"highlight-page"),this.events.button(document.querySelector("#page-unhighlight"),"unhighlight-page"),this.events.submenu(document.querySelector("#page-request-protection .submenu"),"request-page-protection"),this.events.button(document.querySelector("#page-view-history"),"open-page-history"),this.events.submenu(document.querySelector("#page-new-talk-topic .submenu"),"send-message-to-page-talk"),this.events.button(document.querySelector("#edit-view-revision"),"open-revision"),this.events.button(document.querySelector("#edit-view-diff"),"open-diff"),this.events.button(document.querySelector("#edit-thank-user"),"thank-user"),this.events.submenu(document.querySelector("#edit-rollback .submenu"),"rollback-edit"),this.events.submenu(document.querySelector("#edit-rollback-goodfaith .submenu"),"rollback-goodfaith-edit"),this.events.submenu(document.querySelector("#edit-undo .submenu"),"undo-edit"),this.events.button(document.querySelector("#copy-link"),"copy-link"),this.events.button(document.querySelector("#refresh-user-contributions"),"refresh-user-contributions"),this.events.button(document.querySelector("#user-contributions > .footer"),"open-user-contributions"),this.events.button(document.querySelector("#refresh-page-history"),"refresh-page-history"),this.events.button(document.querySelector("#page-history > .footer"),"open-page-history"),c.Queue.types.forEach(e=>{this.events.button(document.querySelector(`#queue-tab-${e}`),`switch-to-${e}-queue`)}),this.animation(),this.update(),this.renderQueue(),electron.menuEnabler({browser:!0,settings:{preferences:!0},help:{changelog:!0}})}animation(){try{(0,g.AutoScroll)();{const e=document.querySelector("#pending-changes-container"),t=document.querySelector("#bottom-tools").getBoundingClientRect();e.style.top=t.top-e.offsetHeight+"px",e.style.left=(t.left+t.right)/2+"px";const n=document.querySelector("#diff-container > table");n&&(n.style.marginBottom=window.innerHeight-t.top+"px")}}catch(e){console.error("Error in animation loop:",e)}requestAnimationFrame(()=>this.animation())}update(){try{const e=new Date;document.querySelectorAll("[data-time]").forEach(t=>{const n=new Date(t.dataset.time);switch(t.dataset.timeFormat){case"notification":t.textContent=this.ws.util.formatNotificationTime(n,"timeNow"in t.dataset?new Date(t.dataset.timeNow):e)+(t.dataset.timePostfix||"");break;case"duration":t.textContent=this.ws.util.formatDuration(n,"timeNow"in t.dataset?new Date(t.dataset.timeNow):e)+(t.dataset.timePostfix||"")}})}catch(e){console.error("Error updating time elements:",e)}setTimeout(()=>this.update(),1e3)}async updateDEFCON(){var e;const t=await this.ws.getDEFCON(),n=document.querySelector("#DEFCON");n.title=`DEFCON-${null!==t.level?t.level:"N/A"} (${t.info?`${t.info} revert${1===+t.info?"":"s"} per minute`:"No data"})`;const s=n.querySelector(".dot");s.className="dot",null!==t.level&&s.classList.add(`DEFCON-${t.level}`),document.querySelector(".DEFCON-RPM").textContent=null!==(e=t.info)&&void 0!==e?e:"N/A"}generateItemHTML(e,t=!1){const n=this.getORESColor(e.ores),s="sizediff"in e?this.ws.util.getChangeColor(e.sizediff):void 0,a=(0,i.CreateDOMElement)("div");{const t=(0,i.CreateDOMElement)("div",{class:"item-color",style:{"--ores-color":n},dataset:{ores:e.ores}});a.appendChild(t)}{var r,o,l;const t=(0,i.CreateDOMElement)("div",{class:"item-body",style:{"--ores-color":n,"--diff-color":s},datset:{ores:e.ores}});a.appendChild(t);{const n=(0,i.CreateDOMElement)("div",{class:"header"});t.appendChild(n);{const t=this.ws.store.highlight.pages.has(e.page.title),s=(0,i.CreateDOMElement)("span",{class:"page-title"+(t?" highlighted":""),content:e.page.title,dataset:t?{tooltip:"Page is highlighted",tooltipDelay:500}:{}});this.addTooltipListener(s),n.appendChild(s);const a=(0,i.CreateDOMElement)("i",{class:"fas fa-file-lines"});s.prepend(a)}{const t=(0,i.CreateDOMElement)("span",{class:"timestamp"});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-clock",style:{"font-size":"11px"}});t.appendChild(s);const a=(0,i.CreateDOMElement)("span",{content:this.ws.util.formatNotificationTime(new Date(e.timestamp)),dataset:{tooltip:new Date(e.timestamp).toLocaleString(),tooltipDelay:500,time:e.timestamp,timeFormat:"notification"}});this.addTooltipListener(a),t.appendChild(a)}}{var d;const n=(0,i.CreateDOMElement)("div",{class:"meta"});t.appendChild(n);const s=null!==(d=e.performer)&&void 0!==d?d:e.user;{const t=s.blocked,a=this.ws.util.expiryToDate(null==t?void 0:t.expiry),r=this.ws.store.highlight.users.has(s.name),o=void 0===s.talk,l=(0,i.CreateDOMElement)("span",{class:"user-chip"+(!1===(null==t?void 0:t.partial)?" blocked":"")+(r?" highlighted":"")+(o?" empty-talk":""),content:e.user.name,dataset:!1===(null==t?void 0:t.partial)?{tooltip:`Blocked ${a===1/0?"indefinitely":`until ${a.toLocaleString()}`} (${t.reason})`,tooltipDelay:500}:r?{tooltip:"User is highlighted",tooltipDelay:500}:o?{tooltip:"User has an empty talk page",tooltipDelay:500}:{}});this.addTooltipListener(l),n.appendChild(l);const d=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(s.anon?"user-secret":"user"),style:{"font-size":"11px"}});l.prepend(d)}{const t=(0,i.CreateDOMElement)("div",{class:"chips"});if(n.appendChild(t),"abuselog"===e.type){const n=["disallow","warn","showcaptcha","tag","none"],s=n.length;let a=s-1;for(let t=0;t<s;t++)if(e.origin.result.has(n[t])){a=t;break}const r=(0,i.CreateDOMElement)("span",{class:"ores-chip",dataset:{tooltip:`Action taken: ${n[a]}`,tooltipDelay:500}});this.addTooltipListener(r),t.appendChild(r);const o=(0,i.CreateDOMElement)("i",{class:`fas fa-${["ban","exclamation-triangle","robot","tag","check"][a]}`,style:{"font-size":"11px"}});r.prepend(o)}else{const n=(0,i.CreateDOMElement)("span",{class:"ores-chip",content:Number.isNaN(e.ores)?"-":Math.round(100*e.ores),dataset:{tooltip:"Score",tooltipDelay:500}});this.addTooltipListener(n),t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-fire",style:{"font-size":"11px"}});n.prepend(s)}{const n=(0,i.CreateDOMElement)("div",{class:"diff-chips"});if(t.appendChild(n),e.minor){const e=(0,i.CreateDOMElement)("span",{class:"minor-chip",dataset:{tooltip:"Minor edit",tooltipDelay:500}});this.addTooltipListener(e),n.appendChild(e);const t=(0,i.CreateDOMElement)("i",{class:"fas fa-m",style:{"font-size":"11px"}});e.appendChild(t)}if("sizediff"in e){const t=(0,i.CreateDOMElement)("span",{class:"diff-chip",content:Math.abs(e.sizediff).toLocaleString(),dataset:{tooltip:"Size difference",tooltipDelay:500}});if(this.addTooltipListener(t),n.appendChild(t),0!==e.sizediff){const n=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.sizediff>0?"plus":"minus"),style:{"font-size":"11px"}});t.prepend(n)}}}}}if(e.has_comment){const n=(0,i.CreateDOMElement)("div",{class:"item-comment"});t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"11px"}});n.appendChild(s);const a=(0,i.CreateDOMElement)("span",{class:"text",html:e.comment,dataset:{tooltip:e.comment,tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(a),n.appendChild(a)}const c=null!==(r=null!==(o=e.tags)&&void 0!==o?o:null===(l=e.filters)||void 0===l?void 0:l.map(e=>`${e.filter} (${"-1"===e.id?"private":e.id})`))&&void 0!==r?r:[];if(c.length>0){const e=(0,i.CreateDOMElement)("div",{class:"item-tags"});t.appendChild(e),c.forEach(t=>{const n=(0,i.CreateDOMElement)("span",{class:"tag",content:t});e.appendChild(n)})}}if(t){const e=(0,i.CreateDOMElement)("div",{class:"remove-button"});a.appendChild(e);const t=(0,i.CreateDOMElement)("i",{class:"fas fa-xmark"});e.appendChild(t)}return a.innerHTML}generateEditDetails(e,t=!1){if(!e)return void(document.querySelector("#edit-details").innerHTML="<div class='central'>Nothing selected</div>");const n="edit"===c.Queue.groups[e.type]?this.ws.queue.pending.get(e.id):null,s=document.querySelector("#edit-details");s.style.setProperty("--diff-color","sizediff"in e?this.ws.util.getChangeColor(e.sizediff):void 0),s.innerHTML="";{const t=(0,i.CreateDOMElement)("div",{class:"header"});s.appendChild(t);{const n=this.ws.store.highlight.pages.has(e.page.title),s=(0,i.CreateDOMElement)("span",{class:"page-title"+(n?" highlighted":""),dataset:n?{tooltip:"Page is highlighted",tooltipDelay:500}:{}});this.addTooltipListener(s),t.appendChild(s);const a=(0,i.CreateDOMElement)("i",{class:"fas fa-file-lines"});let r;switch(s.appendChild(a),c.Queue.groups[e.type]){case"edit":r="page";break;case"logevent":r="log";break;case"abuselog":r="page-abuse"}const o=(0,i.CreateDOMElement)("a",{content:e.page.title,dataset:{multipleHrefs:`${r};title=${encodeURIComponent(e.page.title)}&${"log"===r?`log=${JSON.stringify(e)}`:`id=${e.id}`}`,tooltip:e.page.title,tooltipDelay:500},attributes:{href:this.ws.page(e.page.title)}});this.addTooltipListener(o),s.appendChild(o)}{var a;const s=(0,i.CreateDOMElement)("div",{class:"meta"});t.appendChild(s);const l=null!==(a=e.performer)&&void 0!==a?a:e.user;{var o;const e=Object.keys(null!==(o=null==n?void 0:n.users)&&void 0!==o?o:{}).filter(e=>e!==l.name),t=l.blocked,a=this.ws.util.expiryToDate(null==t?void 0:t.expiry),d=this.ws.store.highlight.users.has(l.name),c=void 0===l.talk,u=(0,i.CreateDOMElement)("span",{class:"user-chip"+(!1===(null==t?void 0:t.partial)?" blocked":"")+(d?" highlighted":"")+(c?" empty-talk":""),dataset:!1===(null==t?void 0:t.partial)?{tooltip:`Blocked ${a===1/0?"indefinitely":`until ${a.toLocaleString()}`} (${t.reason})`,tooltipDelay:500}:d?{tooltip:"User is highlighted",tooltipDelay:500}:c?{tooltip:"User has an empty talk page",tooltipDelay:500}:{}});this.addTooltipListener(u),s.appendChild(u);const p=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.length>0?"users":l.anon?"user-secret":"user")});u.appendChild(p);const g=(0,i.CreateDOMElement)("a",{content:l.name,dataset:{multipleHrefs:`user;name=${encodeURIComponent(l.name)}`,tooltip:l.name,tooltipDelay:500},attributes:{href:this.ws.page(`User:${l.name}`)}});if(this.addTooltipListener(g),u.appendChild(g),e.length>0){const t=(0,i.CreateDOMElement)("span",{class:"other-users",content:` and ${e.length} ${r.Text.pluralize("other",e.length)}`,dataset:{tooltip:e.join(", "),tooltipDelay:500}});this.addTooltipListener(t),u.appendChild(t)}}}}{var l;const a=(0,i.CreateDOMElement)("div",{class:"subheader"});if(s.appendChild(a),(null==n?void 0:n.count)>1||t&&(null===(l=e.consecutive)||void 0===l?void 0:l.count)>1){const t=(0,i.CreateDOMElement)("div",{class:"item-comment"});a.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comments",style:{"font-size":"11px"}});t.appendChild(s);const o=null!=n?n:e.consecutive,l=(0,i.CreateDOMElement)("span",{class:"text",content:`${o.count} ${r.Text.pluralize("edit",o.count)} over the course of `,dataset:{tooltip:o.edits.map(e=>{const t=(0,i.CreateDOMElement)("div",{style:{display:"flex","flex-direction":"column",gap:"6px"}});{const n=(0,i.CreateDOMElement)("div",{style:{display:"flex","align-items":"center",gap:"6px",width:"100%","justify-content":"space-between","font-size":"13px"}});t.appendChild(n);{const t=(0,i.CreateDOMElement)("span",{style:{display:"flex","align-items":"center",gap:"4px","font-weight":"500"},content:e.user});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.anon?"user-secret":"user"),style:{"font-size":"11px",opacity:"0.7"}});t.prepend(s)}{const t=(0,i.CreateDOMElement)("span",{style:{display:"flex","align-items":"center",gap:"4px","font-size":"12px",opacity:"0.75"},content:this.ws.util.formatNotificationTime(new Date(e.timestamp)),dataset:{time:e.timestamp,timeFormat:"notification"}});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-clock",style:{"font-size":"10px",opacity:"0.7"}});t.prepend(s)}}{const n=(0,i.CreateDOMElement)("div",{style:{display:"flex","align-items":"flex-start",gap:"4px","font-size":"12px",opacity:"0.85",padding:"2px 0"},content:e.comment||"No edit summary"});t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"10px",opacity:"0.7","flex-shrink":"0","margin-top":"2px"}});n.prepend(s)}return t.outerHTML}).join("<br>"),tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(l),t.appendChild(l);const d=(0,i.CreateDOMElement)("span",{class:"time",content:this.ws.util.formatDuration(new Date(o.timestamp.old),new Date(o.timestamp.new)),dataset:{tooltip:`${new Date(o.timestamp.old).toLocaleString()}—${new Date(o.timestamp.new).toLocaleString()}`,tooltipHtml:!0,tooltipDelay:500,time:o.timestamp.old,timeNow:o.timestamp.new,timeFormat:"duration"}});this.addTooltipListener(d),t.appendChild(d)}else if(e.has_comment){const t=(0,i.CreateDOMElement)("div",{class:"item-comment"});a.appendChild(t);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"11px"}});t.appendChild(n);const s=(0,i.CreateDOMElement)("span",{class:"text",html:e.comment,dataset:{tooltip:e.comment,tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(s),t.appendChild(s)}else{const e=(0,i.CreateDOMElement)("div",{class:"item-comment none",content:"No edit summary"});a.appendChild(e)}{const t=(0,i.CreateDOMElement)("div",{class:"meta"});if(a.appendChild(t),e.minor){const e=(0,i.CreateDOMElement)("span",{class:"minor-chip",dataset:{tooltip:"Minor edit",tooltipDelay:500}});this.addTooltipListener(e),t.appendChild(e);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-m",style:{"font-size":"11px"}});e.appendChild(n)}if("sizediff"in e){const n=(0,i.CreateDOMElement)("span",{class:"diff-chip",content:Math.abs(e.sizediff).toLocaleString(),dataset:{tooltip:"Size difference",tooltipDelay:500}});if(this.addTooltipListener(n),t.appendChild(n),0!==e.sizediff){const t=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.sizediff>0?"plus":"minus"),style:{"font-size":"11px"}});n.prepend(t)}}}}}renderQueue(e=null,t=null,n=null){var s,a,r;if(document.querySelector("#previous-item-button").classList.toggle("disabled",!this.ws.queue.canGoPrevious()),document.querySelector("#next-item-button").classList.toggle("disabled",!this.ws.queue.canGoNext()),null!=e||(e=this.ws.queue.current.queue),null!=t||(t=this.ws.queue.current.item),null!=n||(n=this.ws.queue.current.type),this.updateQueueTabs(),n!==this.ws.queue.current.type)return;const o=document.querySelector("#queue-items");if(0===e.length){var l,d;const e=document.createElement("div");return e.classList.add("queue-empty"),e.textContent="No items in queue",o.innerHTML=e.outerHTML,void((null===(l=this.ws.queue.queues[n].previous)||void 0===l?void 0:l.id)!==(null===(d=t)||void 0===d?void 0:d.id)&&(this.ws.queue.queues[n].previous=t,this.newCurrentItem(t)))}o.querySelectorAll(".queue-empty").forEach(e=>e.remove());const c=new Map;for(const e of o.children)c.set(+e.dataset.id,e);let u=null;for(const s of e){var p;let i=c.get(s.id);var g;if(!i)i=document.createElement("div"),i.classList.add("queue-item"),i.dataset.id=s.id,i.dataset.type=n,i.innerHTML=this.generateItemHTML(s,"pending"!==n),null===(g=i.querySelector(".remove-button"))||void 0===g||g.addEventListener("click",i=>{i.stopPropagation();const a=e.findIndex(e=>e.id===s.id);var r;a>=0&&(s.id===(null===(r=t)||void 0===r?void 0:r.id)?this.ws.queue.next():(e.splice(a,1),this.ws.queue.queues[n].history.push({...s,history:performance.now()}),this.removeQueueItem(n,s.id),this.renderQueue()))}),s.mentions.has&&this.ws.store.settings.username_highlighting.enabled&&(i.classList.add("mentions-me"),i.dataset.tooltip="This queue item contains your username",this.addTooltipListener(i)),i.addEventListener("click",()=>{this.ws.queue.queues[n].item=s,this.ws.current=this.ws.queue.queues[n],this.renderQueue()}),o.appendChild(i),c.set(s.id,i),i.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e));null===u?i!==o.firstChild&&o.insertBefore(i,o.firstChild):i.previousSibling!==u&&o.insertBefore(i,u.nextSibling),i.classList.toggle("current",s.id===(null===(p=t)||void 0===p?void 0:p.id)),u=i}for(const[t,n]of c.entries())e.some(e=>e.id===t)||n.remove();let h=null;for(const t of e){if(!1===t.history)break;h=t}if(null===(s=o.querySelector(".historical-bar"))||void 0===s||s.remove(),null!==h){const e=(0,i.CreateDOMElement)("div",{class:"historical-bar"});o.insertBefore(e,c.get(h.id).nextSibling);const t=(0,i.CreateDOMElement)("span",{class:"label"});e.appendChild(t);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-box-archive",attributes:{title:"All items above this line have been viewed"}});t.appendChild(n)}(null===(a=this.ws.queue.queues[n].previous)||void 0===a?void 0:a.id)!==(null===(r=t)||void 0===r?void 0:r.id)&&(this.ws.queue.queues[n].previous=t,this.newCurrentItem(t))}removeQueueItem(e,t){const n=document.querySelector(`.queue-item[data-type="${e}"][data-id="${t}"]`);n&&(n.remove(),this.updateQueueTabs([e]))}clearQueueItems(){document.querySelector("#queue-items").innerHTML="",this.renderQueue()}updateHiddenItems(e){if(void 0===e&&(e=this.ws.queue.current.item),null===e)return this.ws.store.UI.hide_tools,document.querySelectorAll("[data-queue-type]").forEach(e=>e.classList.add("hidden"));let t=e.type;"abuselog"===t&&e.revid&&(t="edit");const n=c.Queue.groups[t];document.querySelectorAll("[data-queue-type]").forEach(e=>{const t=e.dataset.queueType||"*";"*"===t?e.classList.remove("hidden"):e.classList.toggle("hidden",!t.split(",").includes(n))})}async newCurrentItem(e=null,t=!1){var n,s;null===(n=this.controllers.current)||void 0===n||n.abort();const a=new AbortController;this.controllers.current=a,null!==e&&(this.updateDiffDisplay("loading"),await this.ws.queue.propagate(e,!0)),this.stopOutdatedCheck(),this.toggleEditWarNotice((null==e?void 0:e.reverts)>=3,(null==e?void 0:e.reverts)||0),this.toggleOutdatedNotice(!1),this.togglePendingNotice(!1),this.closeMenus(),this.removeTooltips(),document.querySelectorAll("#right-top > div > :not(.hidden)").forEach(e=>e.classList.add("hidden"));const r=document.querySelector("#user-contributions > .queue-list");r.innerHTML="";const o=document.querySelector("#page-history > .queue-list");if(o.innerHTML="",document.querySelector("#user-contributions > .header > .pills").innerHTML="",document.querySelector("#page-history > .header > .pills").innerHTML="",document.querySelector("#pending-changes-container").classList.toggle("hidden",!(this.ws.rights.review&&this.ws.queue.pending.has(null==e?void 0:e.id))),this.updateHiddenItems(e),null===e)return this.generateEditDetails(),document.querySelector("#diff-container").innerHTML="",document.querySelector("#diff-scroll-up").classList.add("hidden"),document.querySelector("#diff-scroll-down").classList.add("hidden"),document.querySelector("#ai-analysis-container").classList.add("hidden"),void([...document.querySelectorAll("#queue-tabs > .queue-tab")].every(e=>"none"===getComputedStyle(e).display)&&(document.querySelector("#diff-container").innerHTML='\n\t\t\t\t\t<div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; color: grey;">\n\t\t\t\t\t\t<div style="font-size: 48px; margin-bottom: 16px;">\n\t\t\t\t\t\t\t<i class="fas fa-shield-alt"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style="font-size: 24px; margin-bottom: 8px; text-align: center;">\n\t\t\t\t\t\t\tNo queues are enabled\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style="font-size: 14px; text-align: center; max-width: 100%; margin-top: 10px;">\n\t\t\t\t\t\t\tI heard there was a WikiShield,<br>\n\t\t\t\t\t\t\tWhich entered an oversaturated field,<br>\n\t\t\t\t\t\t\tBut you don’t ever use Huggle, do you?<br>\n\t\t\t\t\t\t\tWell it simplifies any AIV,<br>\n\t\t\t\t\t\t\tBut superintendence matters to me\n\t\t\t\t\t\t\t<span style="display: block; margin-top: 8px;">— User:WikiMacaroons</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t'));const l=e.type,d=c.Queue.groups[l];if(!t&&"abuselog"===l&&!e.revid){const t=async()=>{a.signal.aborted||this.ws.api.getAbuseLogRevid(e.id).then(n=>{var s,i;n&&(e.revid=n,e.id===(null===(i=this.ws.queue.current.item)||void 0===i?void 0:i.id)&&this.newCurrentItem(this.ws.queue.current.item,!0));e.id===(null===(s=this.ws.queue.current.item)||void 0===s?void 0:s.id)&&setTimeout(()=>t(),1e3)})};t()}const u=null==e||null===(s=e.page)||void 0===s?void 0:s.watched;if(document.querySelector("#page-watch").classList.toggle("hidden",!0===u),document.querySelector("#page-unwatch").classList.toggle("hidden",!0!==u),document.querySelector("#user-report-uaa").classList.toggle("hidden",null==e?void 0:e.user.anon),document.querySelector("#user-request-global-lock").classList.toggle("hidden",null==e?void 0:e.user.anon),this.ws.AI){const t=this.ws.store;null===e.AI.edit&&t.settings.AI.edit_analysis.enabled&&this.ws.AI.analyze.edit(e).then(t=>{e.AI.edit=t}).catch(t=>{e.AI.edit={error:t.message}}).finally(()=>{var t;e.id===(null===(t=this.ws.queue.current.item)||void 0===t?void 0:t.id)&&this.updateAIAnalysisDisplay(e.AI.edit)}),null!==e.AI.username||e.user.anon||t.whitelist.users.has(e.user)||!t.settings.AI.username_analysis.enabled||this.ws.AI.analyze.username(e).then(t=>{e.AI.username=t,t.flag&&this.ws.queue.promptUAA(e,t)}).catch(t=>{e.AI.username={error:t.message}})}if(this.updateAIAnalysisDisplay(e.AI.edit),!e.seen)switch(e.seen=!0,this.ws.store.statistics.edits_reviewed.total++,this.ws.queue.current.type){case"recent":this.ws.store.statistics.recent_changes_reviewed.total++;break;case"pending":this.ws.store.statistics.pending_changes_reviewed.total++;break;case"watchlist":this.ws.store.statistics.watchlist_changes_reviewed.total++;break;case"users":this.ws.store.statistics.users_reviewed.total++;break;case"abuselog":this.ws.store.statistics.abuselogs_reviewed.total++}{const t=(0,i.CreateDOMElement)("div",{class:"pill",content:`${e.user.edits.toLocaleString()} edit${1===e.user.edits?"":"s"}`});document.querySelector("#user-contributions > .header > .pills").appendChild(t)}if("0"!==e.user.warning){const t=(0,i.CreateDOMElement)("div",{class:`pill uw-${e.user.warning}`});document.querySelector("#user-contributions > .header > .pills").appendChild(t),t.textContent=`uw-${e.user.warning}`;const n=e.user.warnings;if(n.length>0){const s=document.createElement("div"),i=document.createElement("div");i.classList.add("tooltip-title"),i.textContent=`Warnings for ${e.user.name}`,s.appendChild(i);for(const e of n){const t=document.createElement("div");t.classList.add("tooltip-item","user-warnings"),s.appendChild(t);const n=document.createElement("span");n.classList.add("tooltip-item-level"),n.textContent=`${e.template}${e.level}`,t.appendChild(n);const i=document.createElement("div");i.classList.add("tooltip-item-details"),t.appendChild(i);const a=document.createElement("span");a.classList.add("tooltip-item-user"),a.textContent=e.username?`by User:${e.username}`:"by Unknown",i.appendChild(a),i.appendChild(document.createElement("br"));const r=document.createElement("span");r.classList.add("tooltip-item-date"),i.appendChild(r),e.timestamp?(r.dataset.time=e.timestamp,r.dataset.timeFormat="notification",r.textContent=this.ws.util.formatNotificationTime(new Date(e.timestamp))):r.textContent="Date unknown"}t.dataset.tooltip=s.innerHTML,t.dataset.tooltipHtml=!0}this.addTooltipListener(t)}const p=e.user.blocks;if(p.length>0){const t=(0,i.CreateDOMElement)("div",{class:"pill ub"});document.querySelector("#user-contributions > .header > .pills").appendChild(t);const n=document.createElement("div"),s=document.createElement("div");s.classList.add("tooltip-title"),s.textContent=`Blocks for ${e.user.name}`,n.appendChild(s);for(const e of p){var g;const t=document.createElement("div");t.classList.add("tooltip-item","user-blocks"),n.appendChild(t);const s=document.createElement("span");s.classList.add("tooltip-item-level"),s.innerHTML=e.parsedcomment||"No reason provided",t.appendChild(s);const i=document.createElement("div");i.classList.add("tooltip-item-details"),t.appendChild(i);const a=document.createElement("span");a.classList.add("tooltip-item-user"),a.textContent=e.user?`by User:${e.user}`:"by Unknown",i.appendChild(a),i.appendChild(document.createElement("br"));const r=document.createElement("span");r.classList.add("tooltip-item-time"),i.appendChild(r);const o=document.createElement("span");e.timestamp?(o.dataset.time=e.timestamp,o.dataset.timeFormat="notification",o.textContent=this.ws.util.formatNotificationTime(new Date(e.timestamp))):o.textContent="Date unknown",r.appendChild(o);const l=document.createElement("span");l.textContent=`(for ${(null===(g=e.params)||void 0===g?void 0:g.duration)||"an unknown duration"})`,r.appendChild(l)}t.classList.remove("hidden"),t.textContent=`${p.length} block${1===p.length?"":"s"}`,t.dataset.tooltip=n.innerHTML,t.dataset.tooltipHtml=!0,this.addTooltipListener(t)}{const t=document.querySelector("#user-whitelist"),n=document.querySelector("#user-unwhitelist");if(t&&n){const s=()=>{const s=this.ws.store.whitelist.users.has(e.user.name);t.classList.toggle("hidden",s),n.classList.toggle("hidden",!s)};t.onclick=s,n.onclick=s,s()}const s=document.querySelector("#user-highlight"),i=document.querySelector("#user-unhighlight");if(s&&i){const t=()=>{const t=this.ws.store.highlight.users.has(e.user.name);s.classList.toggle("hidden",t),i.classList.toggle("hidden",!t)};s.onclick=t,i.onclick=t,t()}}{const t=document.querySelector("#page-whitelist"),n=document.querySelector("#page-unwhitelist");if(t&&n){const s=()=>{const s=this.ws.store.whitelist.pages.has(e.page.title);t.classList.toggle("hidden",s),n.classList.toggle("hidden",!s)};t.onclick=s,n.onclick=s,s()}const s=document.querySelector("#page-highlight"),i=document.querySelector("#page-unhighlight");if(s&&i){const t=()=>{const t=this.ws.store.highlight.pages.has(e.page.title);s.classList.toggle("hidden",t),i.classList.toggle("hidden",!t)};s.onclick=t,i.onclick=t,t()}}(async t=>{const n=e.user.contributions;for(const e of n){var s;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(s=this.ws.queue.current.item.revid)&&void 0!==s?s:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML({page:{title:e.title},user:{name:e.user},comment:"Loading...",timestamp:e.timestamp,sizediff:0,ores:NaN,tags:e.tags||[],type:"edit"}),r.appendChild(t),requestAnimationFrame(()=>t.classList.remove("no-transition"))}if(e.page.cached_contributions){const s=await e.page.cached_contributions;if(t.aborted)return;n.some((e,t)=>{var n;return e.id!==(null===(n=s[t])||void 0===n?void 0:n.id)})&&delete e.page.cached_contributions}e.user.cached_contributions||(e.user.cached_contributions=this.ws.queue.generate("edit",n,!0));const i=await e.user.cached_contributions;if(!t.aborted){r.innerHTML="";for(const e of i.sort((e,t)=>new Date(t.timestamp)-new Date(e.timestamp))){var a;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(a=this.ws.queue.current.item.revid)&&void 0!==a?a:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML(e),r.appendChild(t),t.addEventListener("mouseover",()=>this.ws.queue.propagate(e,!0)),t.addEventListener("click",()=>this.ws.queue.loadFromItem(e)),t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e)),requestAnimationFrame(()=>t.classList.remove("no-transition"))}}})(a.signal).catch(e=>{a.signal.aborted||console.error("Error loading contributions:",e)});switch(d){case"edit":{var h;if(this.startOutdatedCheck(e),!this.ws.queue.pending.has(e.id))(null===(h=e.consecutive)||void 0===h?void 0:h.count)>=2&&(document.querySelector("#latest-edits-tab").classList.remove("hidden"),document.querySelector("#consecutive-edits-tab").classList.remove("hidden"));const t=e.page.protection;if(t.protected||this.ws.queue.pending.has(e.id)){const n=(0,i.CreateDOMElement)("div",{class:"pill"});if(document.querySelector("#page-history > .header > .pills").appendChild(n),t.protected){let e,s;switch(t.level){case"sysop":e="F",s="Requires sysop right to edit";break;case"template":e="T",s="Requires template editor to edit";break;case"extendedconfirmed":e="EC",s="Requires extended confirmed right to edit";break;case"autoconfirmed":e="AC",s="Requires autoconfirmed right to edit";break;default:e="?",s="Uknown protection level"}n.innerHTML=`<i class="fas fa-lock"></i> <span class="protection-icon" data-tooltip="${s}">${e}</span>`,this.addTooltipListener(n.querySelector("[data-tooltip]"))}else if(this.ws.queue.pending.has(e.id)){var m;const t=(null===(m=this.ws.queue.pending.get(e.id).pending.stability)||void 0===m?void 0:m.parsedcomment)||"No comment provided",s=document.createElement("span");s.classList.add("protection-icon"),s.innerHTML="<i class='fas fa-lock'></i> PC",s.dataset.tooltip=t,s.dataset.tooltipHtml=!0,n.appendChild(s),this.addTooltipListener(n.querySelector("[data-tooltip]"))}}for(const t of e.page.metadata){const e=(0,i.CreateDOMElement)("div",{class:"pill",content:t});document.querySelector("#page-history > .header > .pills").appendChild(e)}}break;case"logevent":break;case"abuselog":{e.revid&&this.startOutdatedCheck(e);const t=document.querySelector("#protection-indicator");if(t){const n=e.page.protection;if(n.protected){let e,s;switch(n.level){case"sysop":e="P",s="Requires sysop right to edit";break;case"extendedconfirmed":e="X",s="Requires extended confirmed right to edit";break;case"autoconfirmed":e="A",s="Requires autoconfirmed right to edit";break;default:e="?",s="Uknown protection level"}t.innerHTML=`<span class="protection-icon" data-tooltip="${s}">${e}</span>`,this.addTooltipListener(t.querySelector("[data-tooltip]"))}else if(this.ws.queue.pending.has(e.id)){var v;const n=(null===(v=this.ws.queue.pending.get(e.id).pending.stability)||void 0===v?void 0:v.parsedcomment)||"No comment provided",s=document.createElement("span");s.classList.add("protection-icon"),s.textContent="PC",s.dataset.tooltip=n,s.dataset.tooltipHtml=!0,t.appendChild(s),this.addTooltipListener(t.querySelector("[data-tooltip]"))}else t.innerHTML=""}}}if("edit"===d||"abuselog"===d){(async t=>{const n=e.page.history;for(const e of n){var s;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(s=this.ws.queue.current.item.revid)&&void 0!==s?s:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML({page:{title:e.title},user:{name:e.user},comment:"Loading...",timestamp:e.timestamp,sizediff:0,ores:NaN,tags:e.tags||[],type:"edit"}),o.appendChild(t),requestAnimationFrame(()=>t.classList.remove("no-transition"))}if(e.page.cached_history){const s=await e.page.cached_history;if(t.aborted)return;n.some((e,t)=>{var n;return e.id!==(null===(n=s[t])||void 0===n?void 0:n.id)})&&delete e.page.cached_history}e.page.cached_history||(e.page.cached_history=this.ws.queue.generate("edit",n,!0));const i=await e.page.cached_history;if(!t.aborted){o.innerHTML="";for(const e of i.sort((e,t)=>new Date(t.timestamp)-new Date(e.timestamp))){var a;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(a=this.ws.queue.current.item.revid)&&void 0!==a?a:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML(e),o.appendChild(t),t.addEventListener("mouseover",()=>this.ws.queue.propagate(e,!0)),t.addEventListener("click",()=>this.ws.queue.loadFromItem(e)),t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e)),requestAnimationFrame(()=>t.classList.remove("no-transition"))}}})(a.signal).catch(e=>{a.signal.aborted||console.error("Error loading history:",e)})}this.updateDiffDisplay(e,!1)}updateDiffDisplay(e,t){var n;this.ws.mobile&&(t=!0);const s=document.querySelector("#diff-container");if(!e)return document.querySelector("#diff-scroll-up").classList.add("hidden"),void document.querySelector("#diff-scroll-down").classList.add("hidden");if("loading"===e){const e=document.createElement("div");e.className="loading-container";const t=document.createElement("div");t.className="loading-spinner",e.appendChild(t);const n=document.createElement("i");n.className="fas fa-spinner fa-spin",t.appendChild(n);const i=document.createElement("div");return i.className="loading-text animate-loading-dots",i.textContent="Loading edit",e.appendChild(i),void(s.innerHTML=e.outerHTML)}switch(document.querySelectorAll("#right-top > .tabs > .tab.selected").forEach(e=>e.classList.remove("selected")),this.generateEditDetails(e,t),c.Queue.groups[e.type]){case"edit":var i,a;if(this.ws.queue.pending.get(e.id))s.innerHTML=`<table>${null!==(i=e.diff)&&void 0!==i?i:"<em>No diff available</em>"}</table>`;else if(t&&(null===(a=e.consecutive)||void 0===a?void 0:a.count)>1){var r,o;document.querySelector("#consecutive-edits-tab").classList.add("selected"),null===(r=e.consecutive.diff)||void 0===r||r?s.innerHTML=`<table>${null!==(o=e.consecutive.diff)&&void 0!==o?o:"<em>No diff available</em>"}</table>`:s.innerHTML="<table><em>No difference</em></table>"}else{var l;document.querySelector("#latest-edits-tab").classList.add("selected"),s.innerHTML=`<table>${null!==(l=e.diff)&&void 0!==l?l:"<em>No diff available</em>"}</table>`}if(this.ws.store.settings.username_highlighting.enabled){const t=this.ws.api.username;t&&(e.mentions.diff&&s.querySelectorAll("td").forEach(e=>{e.textContent&&this.ws.util.match(t,e.textContent)&&e.classList.add("ws-username-highlight")}),e.mentions.comment&&e.comment&&this.ws.util.match(t,e.comment)&&document.querySelector("#edit-details > .subheader > .item-comment > .text").classList.add("ws-username-highlight"))}break;case"logevent":if("users"===e.type){s.innerHTML="";const t=e.user.profanity,n=document.createElement("div");n.classList.add("profanity"),s.appendChild(n);const i=document.createElement("div");{i.classList.add("profanity-header"),n.appendChild(i);const e=document.createElement("div");{e.classList.add("profanity-score"),i.appendChild(e);const n=document.createElement("span");n.classList.add("score-label"),n.textContent="Profanity Score:",e.appendChild(n);const s=document.createElement("span");s.classList.add("score-value"),s.textContent=t.finalScore,e.appendChild(s)}const s=document.createElement("div");{s.classList.add("profanity-risk",`risk-${t.risk.toLowerCase()}`),i.appendChild(s);const e=document.createElement("span");switch(e.classList.add("fa"),t.risk){case"No":e.classList.add("fa-smile");break;case"Low":e.classList.add("fa-thumbs-up");break;case"Medium":e.classList.add("fa-meh");break;case"High":e.classList.add("fa-thumbs-down");break;case"Critical":e.classList.add("fa-skull-crossbones")}s.appendChild(e);const n=document.createElement("span");n.textContent=`${t.risk} risk`,s.appendChild(n)}}const a=t.matches;if(a.length>0){const e=document.createElement("div");e.classList.add("profanity-matches-header"),n.appendChild(e);const t=document.createElement("span");t.classList.add("fa","fa-search"),e.appendChild(t);const s=document.createElement("span");s.textContent=`Matched Terms (${a.length})`,e.appendChild(s);const i=document.createElement("div");i.classList.add("profanity-matches-list"),n.appendChild(i);for(const e of a){const t=document.createElement("div");{t.classList.add("profanity-match"),i.appendChild(t);const n=document.createElement("div");{n.classList.add("match-header"),t.appendChild(n);const s=document.createElement("span");s.classList.add("match-text"),s.textContent=e.match,n.appendChild(s);const i=document.createElement("span");i.classList.add("fa","fa-arrow-right"),n.appendChild(i);const a=document.createElement("span");a.classList.add("match-name"),a.textContent=e.name,n.appendChild(a)}const s=document.createElement("div");{s.classList.add("match-details"),t.appendChild(s);const n=document.createElement("div");{n.classList.add("match-stat"),s.appendChild(n);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Confidence",n.appendChild(t);const i=document.createElement("span");i.classList.add("stat-value"),i.dataset.tooltip="How certain we are this is a match.",i.dataset.tooltipDelay=500,i.textContent=`${Math.round(100*e.confidence)}%`,n.appendChild(i)}const i=document.createElement("div");{i.classList.add("match-stat"),s.appendChild(i);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Obfuscation",i.appendChild(t);const n=document.createElement("span");n.classList.add("stat-value"),n.dataset.tooltip="How much the term was altered from its original form.",n.dataset.tooltipDelay=500,n.textContent=`${Math.round(100*e.obfuscation)}%`,i.appendChild(n)}const a=document.createElement("div");{a.classList.add("match-stat"),s.appendChild(a);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Severity",a.appendChild(t);const n=document.createElement("span");n.classList.add("stat-value",`severity-${e.severity}`),n.dataset.tooltip="How severe this term is considered.",n.dataset.tooltipDelay=500,n.textContent=e.severity,a.appendChild(n)}}if(e.note){const n=document.createElement("div");{n.classList.add("match-note"),t.appendChild(n);const s=document.createElement("span");s.classList.add("fa","fa-info-circle"),n.appendChild(s);const i=document.createElement("span");i.classList.add("note-text"),i.textContent=e.note,n.appendChild(i)}}}t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e))}}else{const e=document.createElement("div");e.classList.add("profanity-no-matches"),n.appendChild(e);const t=document.createElement("span");t.classList.add("fa","fa-check-circle"),e.appendChild(t);const s=document.createElement("span");s.textContent="No profanity detected.",e.appendChild(s)}}break;case"abuselog":var d;if(s.innerHTML=`<table>${null!==(d=e.diff)&&void 0!==d?d:"<em>No diff available</em>"}</table>`,this.ws.store.settings.username_highlighting.enabled){const t=this.ws.api.username;t&&(e.mentions.diff&&s.querySelectorAll("td").forEach(e=>{e.textContent&&this.ws.util.match(t,e.textContent)&&e.classList.add("ws-username-highlight")}),e.mentions.comment&&e.comment&&this.ws.util.match(t,e.comment)&&document.querySelector("#edit-details > .subheader > .item-comment > .text").classList.add("ws-username-highlight"))}}s.querySelectorAll(":is(.mw-diff-movedpara-left, .mw-diff-movedpara-right)").forEach(e=>{const t=e.href.split("#")[1];delete e.href,e.innerHTML=e.classList.contains("mw-diff-movedpara-left")?">":"<",e.addEventListener("click",e=>{e.preventDefault();const n=s.querySelector(`a[name="${t}"]`);if(n){const e=n.getBoundingClientRect(),t=s.getBoundingClientRect(),i=e.top-t.top+s.scrollTop-(t.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),s.querySelectorAll(".flash-highlight").forEach(e=>e.classList.remove("flash-highlight"));const a=n.parentElement.parentElement;a.classList.add("flash-highlight"),setTimeout(()=>{var e;return null==a||null===(e=a.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)}})});const u=s.querySelectorAll(".diff-addedline, .diff-deletedline"),p=null!==(n=s.querySelectorAll(":is(.diff-addedline, .diff-deletedline) .diffchange")[0])&&void 0!==n?n:u[0];p?requestAnimationFrame(()=>{const e=p.getBoundingClientRect(),t=s.getBoundingClientRect(),n=e.top-t.top+s.scrollTop-(t.height-e.height)/2;function i(){const e=s.querySelectorAll(":is(.diff-addedline, .diff-deletedline) .diffchange");let t=null,n=null;const i=s.getBoundingClientRect();for(const s of e){let e=!1,a=!1;const r=s.getBoundingClientRect();r.bottom<i.top&&(e=!0),r.top>i.bottom&&(a=!0),e&&a||(e&&(t=s),null===n&&a&&(n=s))}const a=document.querySelector("#diff-scroll-up");a.classList.toggle("hidden",!t),a.onclick=()=>{const e=t.getBoundingClientRect(),n=s.getBoundingClientRect(),i=e.top-n.top+s.scrollTop-(n.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),t.classList.add("flash-highlight"),setTimeout(()=>{var e;return null===(e=t)||void 0===e||null===(e=e.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)};const r=document.querySelector("#diff-scroll-down");r.classList.toggle("hidden",!n),r.onclick=()=>{const e=n.getBoundingClientRect(),t=s.getBoundingClientRect(),i=e.top-t.top+s.scrollTop-(t.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),n.classList.add("flash-highlight"),setTimeout(()=>{var e;return null===(e=n)||void 0===e||null===(e=e.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)}}s.scrollTo({top:Math.max(0,n),behavior:"smooth"}),i(),s.onscroll=()=>requestAnimationFrame(i),window.onresize=()=>requestAnimationFrame(i)}):(document.querySelector("#diff-scroll-up").classList.add("hidden"),document.querySelector("#diff-scroll-down").classList.add("hidden"))}updateAIAnalysisDisplay(e){const t=document.querySelector("#ai-analysis-container");if(!t||!e)return t.classList.add("hidden");if(t.classList.remove("hidden"),e.error){const n=t.querySelector(":scope > .header > .assessment");n.textContent="Error",n.className="assessment error",t.querySelector(":scope > .header > .confidence").textContent="",t.querySelector(":scope > .explanation").textContent=e.error;t.querySelector(":scope > .issues").innerHTML=""}else{const n=t.querySelector(":scope > .header > .assessment");n.textContent=e.assessment,n.className=`assessment ${e.assessment.toLowerCase().replace(/\s+/g,"-")}`,t.querySelector(":scope > .header > .confidence").textContent=`${Math.round(100*(e.confidence||0))}% confidence`;const s=function(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}(v,this,b).call(this,e.explanation||"No explanation provided.");t.querySelector(":scope > .explanation").innerHTML=s;const i=t.querySelector(":scope > .issues");i.innerHTML="";for(const t of e.issues||[]){const e=document.createElement("div");e.classList.add("issue",t.severity.toLowerCase().replace(/\s+/g,"-")),e.textContent=t.policy,i.appendChild(e)}t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e))}}async outdated(e){let t=e.type,n=e.id;if("abuselog"===t&&e.revid&&(t="edit",n=e.revid),"edit"!==c.Queue.groups[t])return this.toggleOutdatedNotice(!1),void this.togglePendingNotice(!1);if("pending"===e.type)return this.togglePendingNotice(!this.ws.queue.pending.has(n),!0);if(!e.pending&&"pending"===this.ws.queue.type)return this.togglePendingNotice(!0,!1);try{var s;const t=(await this.ws.api.getLatestIds([e.page.title]))[e.page.title];(null===(s=this.ws.queue.current.item)||void 0===s?void 0:s.id)===e.id&&this.toggleOutdatedNotice(t>n,t,e.page.title,n)}catch(e){console.error("Error checking if edit is outdated:",e),this.toggleOutdatedNotice(!1)}}startOutdatedCheck(e){this.stopOutdatedCheck(),this.outdated(e),this.intervals.outdated=setInterval(()=>{var t;e.id===(null===(t=this.ws.queue.current.item)||void 0===t?void 0:t.id)?this.outdated(e):this.stopOutdatedCheck()},1e3)}stopOutdatedCheck(){this.intervals.outdated&&(clearInterval(this.intervals.outdated),this.intervals.outdated=null),this.toggleOutdatedNotice(!1),this.togglePendingNotice(!1)}toggleEditWarNotice(e,t){const n=document.querySelector("#edit-war-notice");if(null!=e||(e=!n),e!==Boolean(n))if(e){const e=document.createElement("div");e.id="edit-war-notice",e.classList.add("notice","edit-war");const n=document.createElement("span");n.classList.add("fa","fa-warning"),e.appendChild(n);const s=document.createElement("span");s.classList.add("text"),s.innerHTML=`<b>3RR:</b> You have made ${t} reverts on this page in the last 24 hours.`,e.appendChild(s);const i=document.querySelector("#diff-container");i.parentElement.insertBefore(e,i)}else{const e=document.querySelector("#edit-war-notice");e&&e.remove()}}toggleOutdatedNotice(e,t,n,s){const i=document.querySelector("#outdated-notice");if(null!=e||(e=!i),e!==Boolean(i))if(e){const e=document.createElement("div");e.id="outdated-notice",e.classList.add("notice","outdated"),e.dataset.id=t,e.dataset.page=n;const s=document.createElement("span");s.classList.add("fa","fa-clock-rotate-left"),e.appendChild(s);const i=document.createElement("span");i.classList.add("text"),i.textContent="Newer revision available on this page.",e.appendChild(i);const a=document.createElement("span");a.classList.add("button"),a.innerHTML="<i class='fas fa-redo restore'></i> Restore this revision",a.addEventListener("click",async e=>{e.preventDefault();const t=await this.dialog.input("Restore Edit","Are you sure you want to restore this revision? This will create a new edit that reverts the page to this revision.","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"restore-edit",params:{summary:t}}]})}),e.appendChild(a);const r=document.createElement("span");r.classList.add("button"),r.innerHTML="View latest <i class='fas fa-arrow-right'></i>",r.addEventListener("click",t=>{t.preventDefault();const n=e.dataset.page,s=+e.dataset.id;n&&s&&this.ws.queue.loadFromRevision(n,s)}),e.appendChild(r);const o=document.querySelector("#diff-container");o.parentElement.insertBefore(e,o)}else{const e=document.querySelector("#outdated-notice");e&&e.remove()}else i&&(i.dataset.id=t,i.dataset.page=n)}togglePendingNotice(e,t){const n=document.querySelector("#pending-notice");if(null!=e||(e=!n),e!==Boolean(n))if(e){const e=document.createElement("div");e.id="pending-notice",e.classList.add("notice","outdated","pending");const n=document.createElement("span");n.classList.add("fa","fa-shield-alt"),e.appendChild(n);const s=document.createElement("span");s.classList.add("text"),s.textContent=t?"This revision cannot be reviewed because it is outdated":"This revision cannot be reviewed because it is not pending review",e.appendChild(s);const i=document.querySelector("#diff-container");i.parentElement.insertBefore(e,i)}else{const e=document.querySelector("#pending-notice");e&&e.remove()}}getORESColor(e){if(isNaN(e)||e<0)return"rgba(128, 128, 128, .5)";e=Math.min(Math.max(e||0,0),1);const t=f.palettes[this.ws.store.UI.theme.palette];return t[e*(t.length-1)|0]}updatePalette(){document.querySelectorAll("[data-ores]").forEach(e=>{e.style.setProperty("--ores-color",this.getORESColor(parseFloat(e.dataset.ores)))})}updateZenMode(){this.ws.notifications.count();const e=this.ws.store.settings.zen_mode;e.enabled&&e.music.enabled&&window.isElectron?this.ws.audio.zengine.start():this.ws.audio.zengine.stop(),document.querySelectorAll("[data-zen-show]").forEach(t=>{const n=t.dataset.zenShow.split(",");e.enabled&&!n.some(t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.enabled})?t.style.display="none":t.style.display=""})}updateAccessibility(){document.body.classList.toggle("colorblind-mode",this.ws.store.settings.accessibility.colorblind),document.body.classList.toggle("dyslexia-font",this.ws.store.settings.accessibility.dyslexia),document.body.classList.toggle("high-contrast",this.ws.store.settings.accessibility.high_contrast),document.body.classList.toggle("reduce-motion",this.ws.store.settings.accessibility.reduce_motion)}reorderQueues(){var e;const t=c.Queue.types.map(e=>({name:e,...this.ws.store.settings.queue[e]}));t.sort((e,t)=>e.order-t.order),t.forEach(e=>{const t=document.querySelector(`#queue-tab-${e.name}`);t&&(t.style.display=e.enabled?"":"none",t.parentElement.appendChild(t))});const n=t.find(e=>e.name===this.ws.queue.current.type)?this.ws.queue.current.type:null===(e=t.find(e=>e.enabled))||void 0===e?void 0:e.name;if(n)this.ws.queue.switch(n);else{const e=document.createElement("div");e.classList.add("queue-empty"),e.textContent="No items in queue",document.querySelector("#queue-items").innerHTML=e.outerHTML,this.newCurrentItem(null),this.ws.queue.switch("void")}}updateQueueTabs(e=c.Queue.types){const t=this.ws.queue.queues;e.forEach(e=>{const n=document.querySelector(`#queue-tab-${e}`);if(!n||!t[e])return;const s=n.querySelector(":scope > span > .icon-count"),i=t[e].queue.length;s.classList.toggle("hidden",0===i),s.textContent=i,n.classList.toggle("mentions-me",this.ws.store.settings.username_highlighting.enabled&&t[e].queue.some(e=>e.mentions.has))})}createTooltip(e,t="",n="",s=!1,i=10,a=null){const r=document.createElement("div");r.className=`tooltip ${t}`,r.style.opacity=0,s?r.innerHTML=n:r.textContent=n,document.body.querySelector("#app").appendChild(r),"function"==typeof a&&a(r),r.offsetHeight;const o=r.getBoundingClientRect(),l=o.width,d=o.height,c=e.getBoundingClientRect(),u=innerWidth,p=innerHeight,g=[["bottom",(c.left+c.right)/2-l/2,c.bottom+10,!0],["top",(c.left+c.right)/2-l/2,c.top-d-10,!0],["right",c.right+10,(c.top+c.bottom)/2-d/2,!0],["left",c.left-l-10,(c.top+c.bottom)/2-d/2,!0]];let h=null,m=-1/0;for(const[e,t,n,s]of g){let e=t,i=n;if(e>=0&&e+l<=u&&i>=0&&i+d<=p){m=100,h=[e,i];break}if(s){const s=Math.max(0,Math.min(e,u-l)),a=Math.max(0,Math.min(i,p-d)),r=!(s+l<=c.left||s>=c.right||a+d<=c.top||a>=c.bottom),o=Math.abs(s-t)+Math.abs(a-n),g=r?-50-o:50-o/10;g>m&&(m=g,h=[s,a])}}return h?(r.style.left=`${h[0]}px`,r.style.top=`${h[1]}px`):(r.style.left=`${Math.max(0,Math.min((c.left+c.right)/2-l/2,u-l))}px`,r.style.top=`${Math.max(0,Math.min((c.top+c.bottom)/2-d/2,p-d))}px`),e.addEventListener("mousewheel",e=>r.scrollBy({left:e.deltaX,top:e.deltaY,behavior:"smooth"})),setTimeout(()=>r.style.opacity=1,i),r}removeTooltips(){document.querySelectorAll(".tooltip").forEach(e=>e.remove())}addTooltipListener(e){if(!e.dataset.tooltip)return;let t;e.addEventListener("mouseenter",()=>{e.dataset.tooltip&&(t&&t.remove(),t=this.createTooltip(e,"",e.dataset.tooltip,"true"===e.dataset.tooltipHtml,+e.dataset.tooltipDelay||100))}),e.addEventListener("mouseleave",()=>{t&&(t.remove(),t=null)})}positionBottomMenu(e,t){t.style.left="",t.style.right="",t.style.top="",t.style.bottom="";const n=()=>{if(!t.classList.contains("show"))return;const s=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=innerWidth,r=innerHeight;i.left+s.width<=a?(t.style.left=`${i.left}px`,t.style.right="auto"):(t.style.right=a-i.right+"px",t.style.left="auto");i.top>=s.height?(t.style.bottom=r-i.top+"px",t.style.top="auto"):(t.style.top=`${i.bottom}px`,t.style.bottom="auto"),requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionSubmenu(e,t){e.style.left="",e.style.right="",e.style.top="",e.style.bottom="";const n=()=>{if(!e.classList.contains("show"))return;const s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left;o<s.width+20&&l>o&&(e.style.left="auto",e.style.right="calc(100% + 4px)");const d=r-i.bottom,c=i.top;s.bottom>r&&c>d&&(e.style.top="auto",e.style.bottom="0"),requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionLevelsMenu(e,t){t.style.left="",t.style.right="",t.style.top="",t.style.bottom="";const n=()=>{if(!t.classList.contains("show"))return;const s=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left,d=o>=s.width+8,c=l>=s.width+8;d?(t.style.left=`${i.right+8}px`,t.style.right="auto"):c?(t.style.right=a-i.left+8+"px",t.style.left="auto"):o>l?(t.style.left=`${i.right+8}px`,t.style.right="auto"):(t.style.right=a-i.left+8+"px",t.style.left="auto");const u=Math.max(Math.min(i.top+(i.height-s.height)/2,r-s.height-8),8);t.style.top=`${u}px`,t.style.bottom="auto",requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionWarningSubmenu(e,t){e.style.left="",e.style.right="",e.style.top="",e.style.bottom="";const n=()=>{if(!e.classList.contains("show"))return;const s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left,d=o>=s.width+8,c=l>=s.width+8;d?(e.style.left=`${i.right+8}px`,e.style.right="auto"):c?(e.style.right=a-i.left+8+"px",e.style.left="auto"):o>l?(e.style.left=`${i.right+8}px`,e.style.right="auto"):(e.style.right=a-i.left+8+"px",e.style.left="auto");const u=Math.max(Math.min(i.top+(i.height-s.height)/2,r-s.height-8),8);e.style.top=`${u}px`,e.style.bottom="auto",requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}createWarningItem(e,t,n,s,i=!1){const a=this.ws.store.favorite[s],r=document.createElement("div");r.classList.add("warning-menu-item"),i?(r.draggable=!0,r.classList.add("favorite-item")):r.classList.add("submenu-option"),r.dataset.warning=e.title;const o=document.createElement("span");o.classList.add("favorite-star"),a.includes(e.title)?(o.classList.add("favorited"),o.innerHTML="<i class='fas fa-star'></i>"):o.innerHTML="<i class='fa-regular fa-star'></i>",r.appendChild(o),o.addEventListener("click",t=>{t.stopPropagation();const n=a.indexOf(e.title),l="reverts"===s?document.querySelector("#revert-menu > .warning-menu"):document.querySelector("#warn-menu > .warning-menu");if(-1===n){a.push(e.title),o.classList.add("favorited","spin"),o.innerHTML="<i class='fas fa-star'></i>";let t=l.querySelector(".favorites-section");if(!t){t=document.createElement("div"),t.className="favorites-section";const e=document.createElement("div");e.className="favorites-header",e.innerHTML='<span class="icon fas fa-star"></span><span>Favorites</span>',t.appendChild(e);const n=document.createElement("div");n.className="favorites-container",t.appendChild(n),l.insertBefore(t,l.firstChild);const s=document.createElement("div");s.className="favorites-separator",l.insertBefore(s,t.nextSibling)}const n=l.__executeCallbacks__;n&&t.querySelector(".favorites-container").appendChild(this.createWarningItem(e,n.executeWithWarn,n.executeNoWarn,s,!0))}else if(a.splice(n,1),o.classList.remove("favorited"),o.classList.add("spin"),o.innerHTML="<i class='fa-regular fa-star'></i>",i){r.remove();const t=l.querySelector(".favorites-section");var d;if(0===(null==t?void 0:t.querySelector(".favorites-container").children.length))t.remove(),null===(d=l.querySelector(".favorites-separator"))||void 0===d||d.remove();const n=document.body.querySelector(`.warning-menu-item:not(.favorite-item)[data-warning="${e.title}"]`);if(n){const e=n.querySelector(".favorite-star");e.classList.remove("favorited"),e.innerHTML="<i class='fa-regular fa-star'></i>",e.classList.add("spin"),setTimeout(()=>e.classList.remove("spin"),500)}}else{const t=l.querySelector(".favorites-section");if(t){const n=t.querySelector(`[data-warning="${e.title}"]`);var c;if(n)if(n.remove(),0===t.querySelector(".favorites-container").children.length)t.remove(),null===(c=l.querySelector(".favorites-separator"))||void 0===c||c.remove()}}setTimeout(()=>o.classList.remove("spin"),500)});const l=document.createElement("span");l.className=`icon ${e.icon}`,r.appendChild(l);const d=document.createElement("span");d.className="warning-menu-title",d.textContent=e.title,r.appendChild(d);const c=document.createElement("span");if(c.className="fas fa-circle-question",c.dataset.tooltip=`${e.description} (click for template preview)`,r.appendChild(c),this.addTooltipListener(c),c.addEventListener("click",async t=>{t.preventDefault(),t.stopPropagation();const n=this.ws;this.dialog.show(e.title,async function(){return(await Promise.allSettled(e.templates.map(e=>{const t=n.queue.current.item;return n.api.parse(`{{${e.template}|${t.page.title}}}`,`User:${t.user.name}`,!0)}))).map(e=>{let t="";t="fulfilled"===e.status?e.value:`<em>Error loading template preview: ${e.reason}</em>`;const s=(new DOMParser).parseFromString(t,"text/html").body;return s.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${n.server}`).href)}),s.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${n.server}`).href)}),s.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,s]=e.trim().split(/\s+/,2),i=new URL(t,`https://${n.server}`).href;return s?`${i} ${s}`:i}).join(", ");e.setAttribute("srcset",t)}),s.innerHTML}).join("<div style='height: 1px; background: #0004; margin: 8px 0;'></div>")}())}),!i){const i=document.createElement("div");if(i.classList.add("warning-menu-buttons"),"reverts"===s){const t=document.createElement("span");t.className="warning-menu-button warning-menu-no-warn-button",t.textContent="no warn",i.appendChild(t),t.addEventListener("click",async t=>{t.stopPropagation(),await n(e.title)})}const a=document.createElement("span");a.className="warning-menu-button warning-menu-levels-button",a.textContent="advanced",i.appendChild(a),r.appendChild(i);const o=document.createElement("div");o.className="levels-menu";for(const n of e.templates){if(n.generic)continue;const s=document.createElement("span");s.className=`levels-menu-item colorize-level colorize-level-${n.name}`,s.textContent=n.name,o.appendChild(s),s.addEventListener("click",async()=>await t(e.title,n.name))}document.body.querySelector("#app").appendChild(o),a.addEventListener("click",e=>{e.stopPropagation();const t=o.classList.contains("show");document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show")),t||(o.classList.add("show"),this.positionLevelsMenu(a,o))})}return r.addEventListener("click",async n=>{n.target.closest(".warning-menu-button")||n.target.closest(".favorite-star")||await t(e.title,"auto")}),i&&(r.addEventListener("dragstart",t=>{t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e.title),r.classList.add("dragging")}),r.addEventListener("dragend",()=>{r.classList.remove("dragging")}),r.addEventListener("dragover",e=>{e.preventDefault(),e.dataTransfer.dropEffect="move";const t=document.querySelector(".dragging");if(t&&t!==r){const n=r.getBoundingClientRect(),s=n.top+n.height/2;e.clientY<s?r.parentNode.insertBefore(t,r):r.parentNode.insertBefore(t,r.nextSibling)}}),r.addEventListener("drop",e=>{e.preventDefault();const t=Array.from(r.closest(".favorites-section").querySelectorAll(".favorite-item"));this.ws.store.favorite[s]=t.map(e=>e.dataset.warning)})),r}createWarnMenu(e,t,n){var s,i,a;removeEventListener("keydown",this.warningMenuKeyListener),document.querySelectorAll(".levels-menu").forEach(e=>e.remove()),document.querySelectorAll(".warning-submenu").forEach(e=>e.remove());const r=document.createElement("div");r.className="warning-menu",t.appendChild(r),r.addEventListener("click",e=>{e.target.closest(".warning-submenu")||document.body.querySelectorAll(".warning-submenu.show").forEach(e=>e.classList.remove("show")),e.target.closest(".levels-menu")||document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show"))});const o=async(t,n)=>{const s=(0,u.getWarningFromLookup)(t),i=this.ws.store.settings.auto_report;await this.ws.execute({actions:[{name:"next-item",params:{}},"reverts"===e?{name:"rollback-edit",params:{summary:s.summary}}:{},{name:"warn-user",params:{warning:t,level:n}},{name:"highlight-user",params:{}}].concat(i.enabled&&s.reportable&&i.for.has(t)?[{name:"if",condition:{name:"user-final-warning"},actions:[{name:"report-user-to-aiv",params:{reportMessage:"Vandalism past final warning"}}]}]:[])})},l=async e=>{const t=(0,u.getWarningFromLookup)(e);await this.ws.execute({actions:[{name:"next-item",params:{}},{name:"rollback-edit",params:{summary:t.summary}}]})},d=null!==(s=null===(i=this.ws.queue.current.item)||void 0===i?void 0:i.type)&&void 0!==s?s:this.ws.queue.current.type;let p=c.Queue.groups[d];if("abuselog"===d&&null!==(a=this.ws.queue.current.item)&&void 0!==a&&a.revid&&(p="edit"),r.__executeCallbacks__={executeWithWarn:o,executeNoWarn:l},this.ws.store.favorite.reverts.length>0){const t=document.createElement("div");t.className="favorites-section";const s=document.createElement("div");s.className="favorites-header",s.innerHTML='<span class="icon fas fa-star"></span><span>Favorites</span>',t.appendChild(s);const i=document.createElement("div");i.className="favorites-container",t.appendChild(i);const a=Object.values(u.warningsLookup).filter(e=>e.queueType.includes(p)&&(!n||"function"!=typeof e.show||e.show(n)));for(const t of this.ws.store.favorite[e]){const n=a.find(e=>e.title===t);if(n){const t=this.createWarningItem(n,o,l,e,!0);i.appendChild(t)}}r.appendChild(t);const d=document.createElement("div");d.className="favorites-separator",r.appendChild(d)}let g=0;for(const[,t]of Object.entries(u.warnings)){let s=0;const i=[];for(const e of t.warnings)("function"!=typeof e.show||e.show(n))&&e.queueType.includes(p)&&(i.push(e),s++,g++);if(0===s)continue;const a=document.createElement("div");a.className="menu-option submenu-trigger";const d=document.createElement("span");d.className=`icon ${t.icon}`,a.appendChild(d);const c=document.createElement("span");c.textContent=t.title,a.appendChild(c);const u=document.createElement("span");u.className="submenu-arrow fas fa-chevron-right",a.appendChild(u),r.appendChild(a);const h=document.createElement("div");h.className="warning-submenu submenu",document.body.querySelector("#app").appendChild(h);for(const t of i){const n=this.createWarningItem(t,o,l,e,!1);h.appendChild(n)}a.addEventListener("click",e=>{e.stopPropagation();const t=h.classList.contains("show");document.body.querySelectorAll(".warning-submenu.show").forEach(e=>{e!==h&&(e.classList.remove("show"),document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show")))}),t?(a.classList.remove("focus-opened"),h.classList.remove("show"),document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show"))):(a.classList.add("focus-opened"),h.classList.add("show"),this.positionWarningSubmenu(h,a))})}if(0===g){const e=document.createElement("div");e.className="warning-menu-no-items",e.textContent="No warnings available for this edit.",r.appendChild(e)}addEventListener("keydown",this.warningMenuKeyListener)}warningMenuKeyListener(e){if("Tab"===e.key){const t=document.querySelector("#warn-menu.show, #revert-menu.show");if(t){if(t.querySelector(":scope > div > .menu-option.focus-opened")){const t=document.body.querySelector(".submenu.show");if(t){const n=t.querySelectorAll(":scope > .warning-menu-item");if(n.length>0){const s=(Array.from(n).indexOf(t.querySelector(".focus-visible"))+(e.shiftKey?-1:1)+n.length)%n.length;document.querySelectorAll(".focus-visible").forEach(e=>e.classList.remove("focus-visible")),n[s].classList.add("focus-visible"),e.preventDefault()}}}else{const n=t.querySelectorAll(":scope > div > .favorites-section > .favorites-container > .warning-menu-item,\n\t\t\t\t\t\t :scope > div > .menu-option");if(n.length>0){const s=(Array.from(n).indexOf(t.querySelector(".focus-visible"))+(e.shiftKey?-1:1)+n.length)%n.length;document.querySelectorAll(".focus-visible").forEach(e=>e.classList.remove("focus-visible")),n[s].classList.add("focus-visible"),e.preventDefault()}}}}else if("Enter"===e.key){if(document.querySelector("#warn-menu.show, #revert-menu.show")){const t=document.querySelector(".focus-visible");t&&(t.click(),e.preventDefault())}}else if("Escape"===e.key){if(document.querySelector("#warn-menu.show, #revert-menu.show")){const t=document.querySelector(".focus-opened");t?(t.classList.remove("focus-opened"),t.classList.add("focus-visible"),t.click()):(document.querySelectorAll(".bottom-tool-menu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>e.classList.remove("active")),document.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".levels-menu").forEach(e=>e.classList.remove("show"))),e.preventDefault()}}}closeMenus(){document.querySelectorAll(".bottom-tool-menu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>e.classList.remove("active")),document.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".levels-menu").forEach(e=>e.classList.remove("show"))}}function b(e){const t=new Set(["B","I","EM","STRONG","CODE","SPAN","BR"]),n=document.createElement("div");n.innerHTML=e;const s=e=>{const n=[...e.childNodes];for(const e of n)if(e.nodeType===Node.ELEMENT_NODE)if(t.has(e.tagName)){for(;e.attributes.length>0;)e.removeAttribute(e.attributes[0].name);s(e)}else e.replaceWith(...e.childNodes)};return s(n),n.innerHTML}t.GUI=f,m(f,"palettes",{traffic:(0,p.BuildPalette)(1e3,"#78c675","#fdff7a","#fcff54","#fbff12","#ffc619","#ff8812","#f56214","#f73214","#fc0303","#fc0303"),magma:(0,p.BuildPalette)(1e3,"#000004","#1b0c41","#4a0c6b","#781c6d","#a52c60","#cf4446","#ed6925","#fb9b06","#f7d13d","#fcffa4"),plasma:(0,p.BuildPalette)(1e3,"#0d0887","#46039f","#7201a8","#9c179e","#bd3786","#d8576b","#ed7953","#fb9f3a","#fdca26","#f0f921"),viridis:(0,p.BuildPalette)(1e3,"#440154","#3b528b","#21918c","#5ec962","#fde725"),natural:(0,p.BuildPalette)(1e3,"#ffffff","#18ff18"),cool:(0,p.BuildPalette)(1e3,"#ffffff","#1818ff"),heat:(0,p.BuildPalette)(1e3,"#ffffff","#ff1818"),grey:(0,p.BuildPalette)(1e3,"#000000","#ffffff")})},4674(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Notifications=void 0;t.Notifications=class{constructor(e){this.ws=e,this.first={},["alert","message"].forEach(e=>{this[e]=[],this.update(e),this.first[e]=!0,this.load(e)})}find(e,t){if(!1===(null!=e&&e)){let e=this.alert.find(e=>e.id===t);return e?{type:"alert",notification:e}:(e=this.message.find(e=>e.id===t),e?{type:"message",notification:e}:void 0)}return this[e].find(e=>e.id===t)}async load(e){try{const t=(await this.ws.api.continuous({action:"query",meta:"notifications",notlimit:"max",notprop:"list",notfilter:"!read",notsections:e,notformat:"model"})).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.notifications)||void 0===t?void 0:t.list)||[]});await Promise.all(t.map(async e=>this.ws.api.parse(e["*"].body,void 0,void 0,!0).then(t=>{var n;return null!==(n=void(e["*"].parsed=t))&&void 0!==n?n:e})));let n=!1;for(const s of t)this[e].some(e=>e.id===s.id&&e.read===s.read)||(this[e].unshift(s),n=!0);if(n){const t=this.ws.store.settings.zen_mode;t.enabled&&!t[`${e}s`].enabled||this.ws.audio.playSound(["notification",e]),this.update(e)}}finally{setTimeout(()=>this.load(e),1e4)}}update(e){this.count();const t=this[e],n=t.filter(e=>!e.read),s=this.ws.store.settings.zen_mode;s.enabled&&!s[`${e}s`].enabled||n.filter(e=>!e.seen&&!e.notified).forEach(t=>{t.notified=!0,this.first[e]||electron.sendNotification({title:this.ws.util.textify(t["*"].header),body:this.ws.util.textify(t["*"].body)},t["*"].links.primary.url)}),this.first[e]=!1;const i=document.querySelector(`#${e}s-count`),a=document.querySelector(`#${e}s-list`);i.textContent=n.length,i.classList.toggle("hidden",0===n.length),0===t.length?a.innerHTML=`<div class="notifications-empty">No new ${e}s</div>`:(a.innerHTML="",t.forEach(t=>{const n=t["*"];{const s=document.createElement("div");s.classList.add("notification"),s.classList.add(t.read?"read":"unread"),s.addEventListener("click",()=>{this.read(e,t),this.ws.open(n.links.primary.url)});{const e=document.createElement("div");e.classList.add("notification-icon"),e.innerHTML=`<img src="${new URL(n.iconUrl,`https://${this.ws.server}/`).toString()}" alt="icon">`,s.appendChild(e)}{const e=document.createElement("div");e.classList.add("notification-content"),s.appendChild(e);{const t=document.createElement("div");t.classList.add("notification-header"),t.innerHTML=this.ws.util.truncate(n.header,100),e.appendChild(t)}{const t=document.createElement("div");t.classList.add("notification-body"),t.innerHTML=n.parsed,e.appendChild(t),t.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,n]=e.trim().split(/\s+/,2),s=new URL(t,`https://${this.ws.server}`).href;return n?`${s} ${n}`:s}).join(", ");e.setAttribute("srcset",t)}),t.querySelectorAll("a").forEach(e=>{e.target="_blank"})}{const t=document.createElement("div");t.classList.add("notification-links"),n.links.secondary.forEach(e=>{const n=document.createElement("a");n.href=e.url,n.target="_blank",n.textContent=e.label,t.appendChild(n)}),e.appendChild(t)}}{const n=document.createElement("div");if(n.classList.add("notification-right"),s.appendChild(n),!t.read){const s=document.createElement("div");s.classList.add("notification-unread-indicator"),s.addEventListener("click",n=>{n.stopPropagation(),this.read(e,t)}),n.appendChild(s)}{const e=document.createElement("div");e.classList.add("notification-timestamp"),e.dataset.time=t.timestamp.utciso8601,e.dataset.timeFormat="notification",e.textContent=this.ws.util.formatNotificationTime(new Date(t.timestamp.utciso8601)),n.appendChild(e)}}a.appendChild(s)}}))}seen(e){this.ws.api.postWithToken({action:"echomarkseen",type:e}),this[e].forEach(e=>e.seen=!0)}read(e,t){t?(t.read=!0,this.update(e),this.ws.api.postWithToken({action:"echomarkread",sections:e,list:t.id})):(this[e].forEach(e=>e.read=!0),this.update(e),this.ws.api.postWithToken({action:"echomarkread",sections:e,all:!0}))}count(){var e,t;const n=this.ws.store.settings.zen_mode;let s=0;n.enabled&&!n.alerts.enabled||(s+=(null===(e=this.alert)||void 0===e?void 0:e.filter(e=>!e.read).length)||0),n.enabled&&!n.messages.enabled||(s+=(null===(t=this.message)||void 0===t?void 0:t.filter(e=>!e.read).length)||0),electron.setBadgeCount(s),document.title=s>0?`(${s}) WikiShield`:"WikiShield"}}},6151(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ProgressBar=void 0;t.ProgressBar=class{constructor(){this.$bar=document.createElement("div"),this.$bar.classList.add("progress-bar"),this.$bar.style.opacity=1,document.querySelector("#progress-bar-container").appendChild(this.$bar),this.$overlay=document.createElement("div"),this.$overlay.classList.add("progress-bar-overlay"),this.$overlay.style.width="0%",this.$bar.appendChild(this.$overlay),this.$text=document.createElement("div"),this.$text.classList.add("progress-bar-text"),this.$bar.appendChild(this.$text)}set(e,t,n){this.$text.textContent=e,this.$overlay.style.width=100*Math.min(Math.max(t,0),1)+"%",this.$bar.classList.toggle("error",n),t>=1&&setTimeout(()=>{this.$bar.style.opacity=0,setTimeout(()=>this.$bar.remove(),300)},1700)}}},9117(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Settings=void 0;var s=n(8678),i=n(870),a=n(9808),r=n(985),o=n(372),l=n(7054),d=n(4018),c=(n(9501),n(955)),u=n(5564),p=n(2069),g=n(8469);function h(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function m(e,t,n){return e.set(f(e,t),n),n}function v(e,t){return e.get(f(e,t))}function f(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var b=new WeakMap,w=new WeakMap,y=new WeakMap;t.Settings=class{constructor(e){h(this,b,void 0),h(this,w,void 0),h(this,y,void 0),this.ws=e,this.ws.api.getTags().then(e=>{this.wikipediaTags=e})}get active(){return document.querySelector("#settings-container > .settings > .settings-right > div:not(.hidden)")}controller(e){const t=e.key.toLowerCase();if(v(b,this)){if("escape"===t)return v(b,this).call(this,"escape",!0);if("control"===t||"shift"===t||"alt"===t||a.controls.has(t))switch(e.preventDefault(),e.type){case"keydown":v(b,this).call(this,(0,a.buildShortcut)(e),!1);break;case"keyup":v(b,this).call(this,(0,a.buildShortcut)(e),!0)}}else"escape"===t&&"keydown"===e.type&&this.close()}collapsible(e,t,n,s=!0){const i=document.createElement("div");i.className="settings-section collapsible",e.appendChild(i);const a=document.createElement("div");a.className="settings-section-header collapse-title",a.textContent=t(s),i.appendChild(a);const r=document.createElement("div");r.className="collapse-content collapsible",i.appendChild(r);const o=document.createElement("div");o.className="settings-section-desc",o.textContent=n,r.appendChild(o),s?(r.style.height="0px",r.style.opacity=0,r.style.overflow="hidden",i.classList.add("collapsed")):(r.style.height="auto",r.style.opacity=1,r.style.overflow="visible",i.classList.remove("collapsed"));let l,d,c,u,p,g,h=!1;const m=e=>{d||(d=e);const t=e-d,n=Math.min(t/300,1),i=(a=n)<.5?2*a*a:(4-2*a)*a-1;var a;const o=c+(p-c)*i,v=u+(g-u)*i;r.style.height=`${o}px`,r.style.opacity=v,n<1?l=requestAnimationFrame(m):(s?r.style.overflow="hidden":(r.style.height="auto",r.style.overflow="visible"),h=!1,l=null,d=null)};return a.addEventListener("click",()=>{if(h){cancelAnimationFrame(l);const e=r.getBoundingClientRect().height;c=e,u=parseFloat(getComputedStyle(r).opacity)}else c=s?0:r.scrollHeight,u=s?0:1;s=!s,a.textContent=t(s),i.classList.toggle("collapsed",s),r.style.overflow="hidden",s?(p=0,g=0):(p=r.scrollHeight,g=1),h=!0,d=null,l=requestAnimationFrame(m)}),r}start(){electron.onOpenChangelog(()=>{var e;return null!==(e=void this.open())&&void 0!==e?e:this.changelog()});let e=0;document.querySelector("#settings-container").addEventListener("click",t=>{"settings-container"!==t.target.id||(e=Math.max(0,e))||this.close()}),document.querySelector("#settings-general-button").addEventListener("click",this.general.bind(this)),document.querySelector("#settings-audio-button").addEventListener("click",this.audio.bind(this)),document.querySelector("#settings-controls-button").addEventListener("click",this.controls.bind(this)),document.querySelector("#settings-zen-button").addEventListener("click",this.zen.bind(this)),document.querySelector("#settings-app-button").addEventListener("click",this.app.bind(this)),document.querySelector("#settings-queue-button").addEventListener("click",this.queue.bind(this)),document.querySelector("#settings-accessibility-button").addEventListener("click",this.accessibility.bind(this)),document.querySelector("#settings-AI-button").addEventListener("click",this.AI.bind(this)),document.querySelector("#settings-auto-reporting-button").addEventListener("click",this.autoReporting.bind(this)),document.querySelector("#settings-gadgets-button").addEventListener("click",this.gadgets.bind(this)),document.querySelector("#settings-whitelist-users-button").addEventListener("click",this.whitelist.bind(this,"user")),document.querySelector("#settings-whitelist-pages-button").addEventListener("click",this.whitelist.bind(this,"page")),document.querySelector("#settings-whitelist-tags-button").addEventListener("click",this.whitelist.bind(this,"tag")),document.querySelector("#settings-highlight-users-button").addEventListener("click",this.highlight.bind(this,"user")),document.querySelector("#settings-highlight-pages-button").addEventListener("click",this.highlight.bind(this,"page")),document.querySelector("#settings-highlight-tags-button").addEventListener("click",this.highlight.bind(this,"tag")),document.querySelector("#settings-statistics-button").addEventListener("click",this.statistics.bind(this)),document.querySelector("#settings-save-button").addEventListener("click",this.save.bind(this)),document.querySelector("#settings-changelog-button").addEventListener("click",this.changelog.bind(this)),document.querySelector("#settings-about-button").addEventListener("click",this.about.bind(this));{if(!window.isElectron){const e=document.querySelector("#settings-launch-behavior");document.querySelectorAll("#settings-launch-behavior .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-launch-behavior [data-value=${"true"===electron.localStorage.get("WikiShield:OpenExternally")?"new_page":"current_page"}]`).classList.add("selected");const t=e.querySelector("[data-value=current_page]");t.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),t.classList.add("selected"),electron.localStorage.set("WikiShield:OpenExternally",!1)});const n=e.querySelector("[data-value=new_page]");n.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),n.classList.add("selected"),electron.localStorage.set("WikiShield:OpenExternally",!0)})}const t=document.querySelector("#settings-ores-bias"),n=t.querySelector(".settings-slider-track"),s=t.querySelector(".settings-slider-thumb"),i=t.querySelector(".settings-slider-label-left"),a=i.querySelector(".percent"),r=t.querySelector(".settings-slider-label-right"),o=r.querySelector(".percent"),l=e=>{this.ws.store.settings.queue.ores_bias=+e.toFixed(2),e=Math.max(0,Math.min(100,Math.round(100*e))),s.style.left=`${e}%`,n.style.setProperty("--fill",`${e}%`);const t=100-e;a.textContent=`${t}%`,i.classList.toggle("active",t>0);const l=e;o.textContent=`${l}%`,r.classList.toggle("active",l>0)},d=e=>{const t=n.getBoundingClientRect();return(e.clientX-t.left)/t.width};n.addEventListener("click",e=>l(d(e)));let c=!1;s.addEventListener("mousedown",t=>{t.preventDefault(),c=!0,e++,s.classList.add("dragging")}),window.addEventListener("mousemove",e=>{c&&l(d(e))}),window.addEventListener("mouseup",()=>{c&&(c=!1,e--,s.classList.remove("dragging"))}),l(this.ws.store.settings.queue.ores_bias)}{const e=document.querySelector("#settings-maximum-edit-count");e.value=this.ws.store.settings.queue.max_edits,e.addEventListener("change",e=>{const t=+e.target.value;this.ws.store.settings.queue.max_edits=t;for(const[e,n]of this.ws.queue.bypass.entries())n<=t&&this.ws.queue.bypass.delete(e)});const t=document.querySelector("#settings-maximum-queue-size");t.value=this.ws.store.settings.queue.max_size,t.addEventListener("change",e=>this.ws.store.settings.queue.max_size=+e.target.value);const n=document.querySelector("#settings-minimum-ores-score");n.value=this.ws.store.settings.queue.min_ores,n.addEventListener("change",e=>this.ws.store.settings.queue.min_ores=+e.target.value);const s=document.querySelector("#settings-watchlist-expiry");s.value=this.ws.store.settings.expiry.watchlist,s.addEventListener("change",e=>this.ws.store.settings.expiry.watchlist=e.target.value);const i=document.querySelector("#settings-namespaces-container");i.innerHTML="",d.namespaces.forEach(e=>{const t=document.createElement("div");t.className="namespace-item",t.dataset.namespaceId=e.id,t.innerHTML=`\n\t\t\t\t\t<label class="checkbox-box">\n\t\t\t\t\t\t<input type="checkbox" autoComplete="off">\n\t\t\t\t\t\t<div class="checkmark"></div>\n\t\t\t\t\t</label>\n\t\t\t\t\t<span class="namespace-name">${e.name}</span>\n\t\t\t\t`;const n=t.querySelector("input[type=checkbox]");n.checked=this.ws.store.settings.namespaces.includes(e.id),n.addEventListener("change",t=>{if(t.target.checked)this.ws.store.settings.namespaces.includes(e.id)||this.ws.store.settings.namespaces.push(e.id);else{const t=this.ws.store.settings.namespaces.indexOf(e.id);-1!==t&&this.ws.store.settings.namespaces.splice(t,1)}}),i.appendChild(t)})}{const e=document.querySelector("#settings-ORES-alert-toggle");e.value=this.ws.store.settings.audio.ores_alert.enabled,e.addEventListener("change",t=>{this.ws.store.settings.audio.ores_alert.enabled=e.value});const t=document.querySelector("#settings-ORES-alert-threshold");t.value=this.ws.store.settings.audio.ores_alert.threshold,t.addEventListener("change",e=>{this.ws.store.settings.audio.ores_alert.threshold=+t.value});const n=document.querySelector("#settings-master-volume");n.value=this.ws.store.settings.audio.volume.master,n.addEventListener("change",e=>{this.ws.store.settings.audio.volume.master=+n.value});const s={sound:(e,t,n,s,i)=>{const a=["master",...t].join("."),r=document.createElement("volume-control");r.setAttribute("title",n),r.setAttribute("description",s),i&&r.setPreview(this.ws.audio,t),r.value=this.ws.store.settings.audio.volume[a],r.addEventListener("change",()=>{const e=this.ws.store.settings.audio.volume[a];this.ws.store.settings.audio.volume[a]=r.value,e!==r.value&&this.ws.audio.onvolumechanged()}),e.appendChild(r)},category:(e,t,n,s)=>{const i=["master",...t].join("."),a=this.collapsible(e,e=>n,s,!0),r=document.createElement("volume-control");r.setAttribute("title","Category Volume"),r.value=this.ws.store.settings.audio.volume[i],r.addEventListener("change",()=>{const e=this.ws.store.settings.audio.volume[i];this.ws.store.settings.audio.volume[i]=r.value,e!==r.value&&this.ws.audio.onvolumechanged()}),a.appendChild(r);const o=document.createElement("div");return o.className="settings-content",a.appendChild(o),o}},i=(e,t,n)=>{for(const[r,o]of Object.entries(e))switch(o.type){case"sound":var a;s.sound(n,[...t,r],o.title,o.description,null===(a=o.preview)||void 0===a||a);break;case"category":i(o.properties,[...t,r],s.category(n,[...t,r],o.title,o.description))}};i(this.ws.audio.audio,[],document.querySelector("#settings-sounds-container"))}{const e=document.querySelector("#repeat-control-scripts-toggle");e.value=this.ws.store.settings.repeat_control_scripts,e.addEventListener("change",t=>this.ws.store.settings.repeat_control_scripts=e.value),document.querySelector("#settings-new-control-script").addEventListener("click",async()=>{this.ws.store.control_scripts.unshift({keys:[],actions:[]}),this.controls()})}{const e=document.querySelector("#settings-zen-mode");e.value=this.ws.store.settings.zen_mode.enabled,e.addEventListener("change",t=>{this.ws.store.settings.zen_mode.enabled=e.value,this.ws.gui.updateZenMode()});const t=document.querySelector("#settings-zen-mode-sound");t.value=this.ws.store.settings.zen_mode.sound.enabled,t.addEventListener("change",e=>{this.ws.store.settings.zen_mode.sound.enabled=t.value,this.ws.gui.updateZenMode()});const n=document.querySelector("#settings-zen-mode-music");n.value=this.ws.store.settings.zen_mode.music.enabled,n.addEventListener("change",e=>{this.ws.store.settings.zen_mode.music.enabled=n.value,this.ws.gui.updateZenMode()});const s=document.querySelector("#settings-zen-mode-alerts");s.value=this.ws.store.settings.zen_mode.alerts.enabled,s.addEventListener("change",e=>{this.ws.store.settings.zen_mode.alerts.enabled=s.value,this.ws.gui.updateZenMode()});const i=document.querySelector("#settings-zen-mode-messages");i.value=this.ws.store.settings.zen_mode.messages.enabled,i.addEventListener("change",e=>{this.ws.store.settings.zen_mode.messages.enabled=i.value,this.ws.gui.updateZenMode()});const a=document.querySelector("#settings-zen-mode-toasts");a.value=this.ws.store.settings.zen_mode.toasts.enabled,a.addEventListener("change",e=>{this.ws.store.settings.zen_mode.toasts.enabled=a.value,this.ws.gui.updateZenMode()});const r=document.querySelector("#settings-zen-mode-badges");r.value=this.ws.store.settings.zen_mode.badges.enabled,r.addEventListener("change",e=>{this.ws.store.settings.zen_mode.badges.enabled=r.value,this.ws.gui.updateZenMode()})}{const e=document.querySelector("#settings-startup-performance");document.querySelectorAll("#settings-startup-performance .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-startup-performance [data-value=${this.ws.store.settings.performance.startup}]`).classList.add("selected");const t=e.querySelector("[data-value=always_off]");t.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),t.classList.add("selected"),this.ws.store.settings.performance.startup="always_off"});const n=e.querySelector("[data-value=adaptive]");n.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),n.classList.add("selected"),this.ws.store.settings.performance.startup="adaptive"});const s=e.querySelector("[data-value=always_on]");s.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),s.classList.add("selected"),this.ws.store.settings.performance.startup="always_on"})}{const e=document.querySelector("#settings-queues");o.Queue.types.map(e=>({type:e,data:this.ws.store.settings.queue[e]})).sort((e,t)=>e.data.order-t.data.order).forEach(t=>{var n;const s=document.createElement("draggable-order-item");s.setAttribute("key",t.type),s.setAttribute("name",null!==(n={recent:"Recent changes",pending:"Pending changes",users:"User creations",watchlist:"Watchlist",abuselog:"Abuse log"}[t.type])&&void 0!==n?n:t.type),s.enabled=t.data.enabled,e.addItem(s,t.type)}),e.addEventListener("toggle",e=>{var t;const n=null===(t=e.target.closest("draggable-order-item"))||void 0===t?void 0:t.getAttribute("key");n&&(this.ws.store.settings.queue[n].enabled=e.detail.enabled,this.ws.gui.reorderQueues())}),e.addEventListener("reorder",e=>{e.detail.keys.forEach((e,t)=>{this.ws.store.settings.queue[e].order=t,this.ws.gui.reorderQueues()})});const t=document.querySelector("#settings-palette-selector");Object.entries(g.GUI.palettes).forEach(([e,n])=>{const s=document.createElement("div");s.className="palette-option",s.classList.toggle("selected",this.ws.store.UI.theme.palette===e),s.dataset.palette=e,s.addEventListener("click",()=>{document.querySelectorAll(".palette-option.selected").forEach(e=>e.classList.remove("selected")),s.classList.add("selected"),this.ws.store.UI.theme.palette=e,this.ws.gui.updatePalette()}),t.appendChild(s);const i=document.createElement("div");i.className="palette-name",i.textContent=new p.Text(e).case(p.Text.Case.Title).get(),s.appendChild(i);const a=document.createElement("div");a.className="palette-preview",s.appendChild(a);const r=n.length,o=document.createElement("canvas");o.width=r,o.height=1;const l=o.getContext("2d"),d=l.createImageData(r,1);n.forEach((e,t)=>{const n=e.match(/\d+/g).map(e=>parseInt(e,10)),s=4*t;d.data[s]=n[0],d.data[s+1]=n[1],d.data[s+2]=n[2],d.data[s+3]=255}),l.putImageData(d,0,0),a.appendChild(o)})}{const e=document.querySelector("#settings-dyslexia-font");e.value=this.ws.store.settings.accessibility.dyslexia,e.addEventListener("change",t=>{this.ws.store.settings.accessibility.dyslexia=e.value,this.ws.gui.updateAccessibility()});const t=document.querySelector("#settings-reduce-motion");t.value=this.ws.store.settings.accessibility.reduce_motion,t.addEventListener("change",e=>{this.ws.store.settings.accessibility.reduce_motion=t.value,this.ws.gui.updateAccessibility()})}{const e=document.querySelector("#settings-AI-toggle");e.value=this.ws.store.settings.AI.enabled,e.addEventListener("change",t=>{var n;if(null===(n=this.ws.AI)||void 0===n||n.cancel.all(!0),this.ws.store.settings.AI.enabled=e.value,this.ws.store.settings.AI.enabled)if("Ollama"===this.ws.store.settings.AI.provider)this.ws.AI=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);else this.ws.AI=null;else this.ws.AI=null});const t=document.querySelector("#settings-AI-edit-analysis-toggle");t.value=this.ws.store.settings.AI.edit_analysis.enabled,t.addEventListener("change",e=>this.ws.store.settings.AI.edit_analysis.enabled=e.target.value);const n=document.querySelector("#settings-AI-username-analysis-toggle");n.value=this.ws.store.settings.AI.username_analysis.enabled,n.addEventListener("change",e=>this.ws.store.settings.AI.username_analysis.enabled=e.target.value);const i=document.querySelector("#ollama-url-input");i.value=this.ws.store.settings.AI.Ollama.server,i.addEventListener("change",e=>{this.ws.store.settings.AI.Ollama.server=i.value.trim(),"Ollama"===this.ws.store.settings.AI.provider&&this.ws.AI&&this.ws.AI.cancel.all(!0)});const a=document.querySelector("#settings-ollama-test-connection");a.addEventListener("click",async()=>{var e;if(a.disabled)return;a.disabled=!0;const t=document.querySelector("#settings-ollama-connection-status"),n=t.parentElement;let i;if(n.classList.add("testing"),n.classList.remove("connected","failed"),t.classList.add("animate-loading-dots"),t.textContent="Testing connection","Ollama"===this.ws.store.settings.AI.provider)i=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);null===(e=this.ws.AI)||void 0===e||e.cancel.all(!0),i instanceof s.AI&&await i.test()?(n.classList.add("connected"),n.classList.remove("testing","failed"),t.innerHTML="<span class='fa fa-check-circle'></span> Connected!"):(n.classList.add("failed"),n.classList.remove("testing","connected"),t.innerHTML="<span class='fa fa-times-circle'></span> Failed to connect.<br><small>Make sure you have followed the setup instructions (see below)</small>"),t.classList.remove("animate-loading-dots"),a.disabled=!1});const r=document.querySelector("#settings-ollama-refresh-models");r.addEventListener("click",async()=>{var e;if(r.disabled)return;r.disabled=!0;const t=document.querySelector("#settings-ollama-models"),n=document.querySelector("#settings-ollama-models-status"),i=n.parentElement;n.textContent="Searching",i.classList.add("searching","animate-loading-dots"),i.classList.remove("none","error"),null===(e=this.ws.AI)||void 0===e||e.cancel.all(!0);try{let e;if("Ollama"===this.ws.store.settings.AI.provider)e=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);const a=e instanceof s.AI&&await e.models()||[];a.length>0?(i.classList.remove("searching","none","error","animate-loading-dots"),n.innerHTML=`<span class="fa fa-check-circle"></span> Found ${a.length} ${new p.Text("model").get(a.length)}.`,t.innerHTML="",a.forEach(e=>{const n=e.name===this.ws.store.settings.AI.Ollama.model,s=document.createElement("div");s.className="model",s.classList.toggle("selected",n),s.dataset.model=e.name,t.appendChild(s);const i=document.createElement("div");i.className="model-top",s.appendChild(i);const a=document.createElement("span");a.className="indicator fa",a.classList.add(n?"fa-check-circle":"fa-circle"),i.appendChild(a);const r=document.createElement("span");r.className="model-name",r.textContent=e.name,i.appendChild(r);const o=document.createElement("span");o.className="psuedo-indicator fa fa-circle",i.appendChild(o);const l=document.createElement("div");l.className="model-bottom",s.appendChild(l);const d=document.createElement("span");d.className="model-size",d.textContent=this.ws.util.formatBytes(e.size),l.appendChild(d);const c=document.createElement("span");c.className="model-modified",c.textContent=new Date(e.modified_at).toLocaleDateString(),l.appendChild(c),s.addEventListener("click",()=>{var n;if(null===(n=this.ws.AI)||void 0===n||n.cancel.all(!0),"Ollama"===this.ws.store.settings.AI.provider)this.ws.store.settings.AI.Ollama.model=e.name;t.querySelectorAll(".model.selected").forEach(e=>{e.classList.remove("selected");const t=e.querySelector(".indicator");t.classList.remove("fa-circle"),t.classList.add("fa-check-circle")}),s.classList.add("selected");const i=s.querySelector(".indicator");i.classList.remove("fa-circle"),i.classList.add("fa-check-circle")})})):(i.classList.add("none"),i.classList.remove("searching","error","animate-loading-dots"),n.textContent="No models found.")}catch(e){i.classList.add("error"),i.classList.remove("searching","none","animate-loading-dots"),n.innerHTML="<span class='fa fa-times-circle'></span> Error fetching models."}r.disabled=!1})}{const e=document.querySelector("#settings-auto-reporting-toggle");e.value=this.ws.store.settings.auto_report.enabled,e.addEventListener("change",t=>{this.ws.store.settings.auto_report.enabled=e.value});const t=document.querySelector("#settings-auto-reporting-warnings-container");Object.entries(c.warningsLookup).filter(([e,t])=>t.reportable).sort((e,t)=>e[1].title.localeCompare(t[1].title)).forEach(([e,n])=>{const s=document.createElement("div");s.className="auto-reportable-warning-item",s.innerHTML=`\n\t\t\t\t\t\t<label class="checkbox-box" data-warning-key="${e}">\n\t\t\t\t\t\t\t<input type="checkbox" autoComplete="off" ${this.ws.store.settings.auto_report.for.has(e)?"checked":""}>\n\t\t\t\t\t\t\t<div class="checkmark"></div>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<span class="checkbox-name">${n.title}</span>\n\t\t\t\t\t`,s.querySelector("input[type=checkbox]").addEventListener("change",t=>{t.target.checked?this.ws.store.settings.auto_report.for.has(e)||this.ws.store.settings.auto_report.for.add(e):this.ws.store.settings.auto_report.for.delete(e)}),t.appendChild(s)})}{const e=document.querySelector("#settings-auto-welcome-toggle");e.value=this.ws.store.settings.auto_welcome.enabled,e.addEventListener("change",t=>{this.ws.store.settings.auto_welcome.enabled=e.value});const t=document.querySelector("#settings-wikipedia-popups-toggle");t.value=this.ws.store.settings.wikipedia_popups.enabled,t.addEventListener("change",e=>{this.ws.store.settings.wikipedia_popups.enabled=t.value});const n=document.querySelector("#talk-page-thanks-for-temporary-users-toggle");n.value=this.ws.store.settings.talk_page_thanks_for_temporary_users.enabled,n.addEventListener("change",e=>{this.ws.store.settings.talk_page_thanks_for_temporary_users.enabled=n.value});const s=document.querySelector("#settings-username-highlighting-toggle");s.value=this.ws.store.settings.username_highlighting.enabled,s.addEventListener("change",e=>{this.ws.store.settings.username_highlighting.enabled=s.value});const i=document.querySelector("#settings-username-highlighting-fuzzy-toggle");i.value=this.ws.store.settings.username_highlighting.fuzzy,i.addEventListener("change",e=>{this.ws.store.settings.username_highlighting.fuzzy=i.value})}{const e=document.querySelector("#settings-save-status");document.querySelector("#settings-export-button").addEventListener("click",async t=>{try{const t=this.ws.export();await electron.copyToClipboard(t),e.classList.remove("hidden","error","info"),e.classList.add("success"),e.innerHTML='\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-check-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Settings exported successfully!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">The base64 string has been copied to your clipboard.</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t'}catch(t){e.classList.remove("hidden","success","info"),e.classList.add("error"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-times-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Export failed!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">${t.message}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}});document.querySelector("#settings-import-button").addEventListener("click",async t=>{try{const t=await this.ws.gui.dialog.input("Import Settings","Please paste the base64 string of your exported settings below:");if(!t)throw new Error("No input provided.");const n=await this.ws.noinit(t),[s,i]=n.reduce((e,t)=>(t.expected?e[0].push(t):e[1].push(t),e),[[],[]]);e.classList.remove("hidden","error","info"),e.classList.add("success"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-check-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Settings imported successfully!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">\n\t\t\t\t\t\t\t\t\t${i.length>0?`<br><br><strong>Encountered ${new p.Text("%n issue").get(i.length)}:</strong><br>${i.map(e=>`- ${e.message}`).join("<br>")}`:""}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}catch(t){e.classList.remove("hidden","success","info"),e.classList.add("error"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-times-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Import failed!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">${t.message}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}});document.querySelector("#settings-reset-button").addEventListener("click",async t=>{await this.ws.gui.dialog.confirm("Reset Settings","Are you sure you want to reset all settings to their default values? This action cannot be undone.","Reset Settings",!0)&&(this.ws.noinit("e30="),e.classList.remove("hidden","error","success"),e.classList.add("info"),e.innerHTML='\n\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t<i class="fa fa-info-circle status-icon"></i>\n\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t<div class="status-title">Settings reset successfully.</div>\n\t\t\t\t\t\t\t<div class="status-desc">All settings have been restored to their default values.</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t')})}document.querySelectorAll("#settings-container > .settings > .settings-right > .about [data-link]").forEach(e=>{e.addEventListener("click",t=>this.ws.open(e.dataset.link,t.altKey))})}update(){document.querySelector("#settings-maximum-edit-count").value=this.ws.store.settings.queue.max_edits,document.querySelector("#settings-maximum-queue-size").value=this.ws.store.settings.queue.max_size,document.querySelector("#settings-minimum-ores-score").value=this.ws.store.settings.queue.min_ores,document.querySelector("#settings-watchlist-expiry").value=this.ws.store.settings.expiry.watchlist,document.querySelectorAll("#settings-namespaces-container .namespace-item").forEach(e=>{const t=parseInt(e.dataset.namespaceId,10);e.querySelector("input[type=checkbox]").checked=this.ws.store.settings.namespaces.includes(t)}),document.querySelector("#settings-zen-mode").value=this.ws.store.settings.zen_mode.enabled,document.querySelector("#settings-zen-mode-sound").value=this.ws.store.settings.zen_mode.sound.enabled,document.querySelector("#settings-zen-mode-music").value=this.ws.store.settings.zen_mode.music.enabled,document.querySelector("#settings-zen-mode-alerts").value=this.ws.store.settings.zen_mode.alerts.enabled,document.querySelector("#settings-zen-mode-messages").value=this.ws.store.settings.zen_mode.messages.enabled,document.querySelector("#settings-zen-mode-toasts").value=this.ws.store.settings.zen_mode.toasts.enabled,document.querySelector("#settings-zen-mode-badges").value=this.ws.store.settings.zen_mode.badges.enabled,document.querySelectorAll("#settings-startup-performance .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-startup-performance [data-value=${this.ws.store.settings.performance.startup}]`).classList.add("selected");{const e=document.querySelector("#settings-queues");e.clearItems(),o.Queue.types.map(e=>({type:e,data:this.ws.store.settings.queue[e]})).sort((e,t)=>e.data.order-t.data.order).forEach(t=>{var n;const s=document.createElement("draggable-order-item");s.setAttribute("key",t.type),s.setAttribute("name",null!==(n={recent:"Recent changes",pending:"Pending changes",users:"User creations",watchlist:"Watchlist"}[t.type])&&void 0!==n?n:t.type),s.enabled=t.data.enabled,e.addItem(s,t.type)}),document.querySelectorAll(".palette-option").forEach(e=>{e.classList.toggle("selected",e.dataset.palette===this.ws.store.UI.theme.palette)})}document.querySelector("#settings-AI-toggle").value=this.ws.store.settings.AI.enabled,document.querySelector("#settings-AI-edit-analysis-toggle").value=this.ws.store.settings.AI.edit_analysis.enabled,document.querySelector("#settings-AI-username-analysis-toggle").value=this.ws.store.settings.AI.username_analysis.enabled,document.querySelector("#ollama-url-input").value=this.ws.store.settings.AI.Ollama.server;{const e=document.querySelector("#settings-ollama-connection-status"),t=e.parentElement;e.innerHTML="",t.classList.remove("testing","connected","failed")}{document.querySelector("#settings-ollama-models").querySelectorAll(".model").forEach(e=>e.remove());const e=document.querySelector("#settings-ollama-models-status"),t=e.parentElement;e.innerHTML="",t.classList.remove("searching","none","error")}document.querySelector("#settings-auto-reporting-toggle").value=this.ws.store.settings.auto_report.enabled,document.querySelectorAll("#settings-auto-reporting-warnings-container .auto-reportable-warning-item").forEach(e=>{const t=e.querySelector("label").dataset.warningKey;e.querySelector("input[type=checkbox]").checked=this.ws.store.settings.auto_report.for.has(t)}),document.querySelector("#settings-auto-welcome-toggle").value=this.ws.store.settings.auto_welcome.enabled,document.querySelector("#settings-wikipedia-popups-toggle").value=this.ws.store.settings.wikipedia_popups.enabled,document.querySelector("#settings-username-highlighting-toggle").value=this.ws.store.settings.username_highlighting.enabled,document.querySelector("#settings-username-highlighting-fuzzy-toggle").value=this.ws.store.settings.username_highlighting.fuzzy}open(){document.querySelector("#settings-container").classList.add("show"),this.general(),m(y,this,new Promise(e=>{m(w,this,e)}))}close(){this.deselect(),this.ws.audio.stopPreviews(),document.querySelector("#settings-container").classList.remove("show"),v(w,this)&&(v(w,this).call(this),m(w,this,null))}waitForClose(){return v(y,this)}deselect(){document.querySelectorAll("#settings-container > .settings > .settings-left .settings-left-menu-item.selected").forEach(e=>e.classList.remove("selected")),document.querySelectorAll("#settings-container > .settings > .settings-right > :not(.hidden)").forEach(e=>e.classList.add("hidden"))}general(){this.deselect(),document.querySelector("#settings-general-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .general").classList.remove("hidden")}performance(){this.deselect(),document.querySelector("#settings-performance-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .performance").classList.remove("hidden")}audio(){this.deselect(),document.querySelector("#settings-audio-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .audio").classList.remove("hidden")}controls(){this.deselect(),document.querySelector("#settings-controls-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .controls").classList.remove("hidden");{const e=(t,n)=>{if(n.actions.includes(t))return n;for(const s of n.actions)if("if"===s.name||"if not"===s.name){const n=e(t,s);if(n)return n}return null},t=(n,s,a,o)=>{const l=document.createElement("div");if(l.className="control-action",n.appendChild(l),"if"===s.name||"if not"===s.name){var d,c,p;l.innerHTML=`\n\t\t\t\t\t\t<div class="control-action-title">\n\t\t\t\t\t\t\t<div class="control-action-title-left">\n\t\t\t\t\t\t\t\t<span class="fas fa-circle-question"></span>\n\t\t\t\t\t\t\t\t${"if"===s.name?"If":"If not"} <select></select> <span class="params"></span> then:\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="control-action-title-right">\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-up move-action-up"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-down move-action-down"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-trash-can delete-action"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`;const e=l.querySelector("select");Object.entries(i.conditions).forEach(([t,n])=>{e.innerHTML+="title"in n?`<option value="${t}">${n.title}</option>`:`<option value="${t}">${t}</option>`});const n=null!==(d=s.condition)&&void 0!==d?d:{name:Object.keys(i.conditions)[0],params:{}};null!==(c=n.name)&&void 0!==c||(n.name=Object.keys(i.conditions)[0]),null!==(p=n.params)&&void 0!==p||(n.params={}),e.value=n.name,e.addEventListener("change",t=>{n.name=e.value,o()});const r=new Map;for(const e of(0,u.sortDependencies)((null===(g=(h=i.conditions[n.name]).parameters)||void 0===g?void 0:g.call(h))||[])){var g,h;const t=document.createElement("div");t.className="condition-parameter",l.querySelector(".params").appendChild(t);const s={};for(const t of null!==(m=e.dependencies)&&void 0!==m?m:[]){var m;s[t]=n.params[t]}const i="function"==typeof e.default?e.default(s):e.default;let a=null;switch(e.type){case"choice":{const o=document.createElement("select");o.dataset.paramid=e.id,t.appendChild(o);const l="function"==typeof e.options?e.options(s):e.options;for(const e of null!=l?l:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(void 0!==n.params[e.id]){o.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(o.value=i,n.params[e.id]=i);a=()=>{const t={};for(const i of null!==(s=e.dependencies)&&void 0!==s?s:[]){var s;t[i]=n.params[i]}const i=o.value,a="function"==typeof e.options?e.options(t):e.options;o.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(a.includes(i))o.value=i;else{const s="function"==typeof e.default?e.default(t):e.default;o.value=s,n.params[e.id]=s}},o.addEventListener("change",()=>{n.params[e.id]=o.value;for(const t of r.get(e.id)||[])t()})}break;case"text":{const s=document.createElement("input");if(s.type="text",s.dataset.paramid=e.id,t.appendChild(s),void 0!==n.params[e.id]){s.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.value=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=s.value;for(const t of r.get(e.id)||[])t()})}break;case"boolean":{const s=document.createElement("input");if(s.type="checkbox",s.dataset.paramid=e.id,t.appendChild(s),void 0!==n.params[e.id]){s.checked=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.checked=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=s.checked;for(const t of r.get(e.id)||[])t()})}break;case"number":{const s=document.createElement("input");if(s.type="number",s.dataset.paramid=e.id,"min"in e&&(s.min=e.min),"max"in e&&(s.max=e.max),t.appendChild(s),void 0!==n.params[e.id]){s.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.value=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=parseFloat(s.value);for(const t of r.get(e.id)||[])t()})}}if("function"==typeof a)for(const t of null!==(v=e.dependencies)&&void 0!==v?v:[]){var v;r.has(t)||r.set(t,[]),r.get(t).push(a)}}for(const e of s.actions)t(l,e,a,o)}else{const e=r.events[s.name];l.innerHTML=`\n\t\t\t\t\t\t<div class="control-action-title">\n\t\t\t\t\t\t\t<div class="control-action-title-left">\n\t\t\t\t\t\t\t\t<span class="${"icon"in e?e.icon:"fas fa-bolt"}"></span>\n\t\t\t\t\t\t\t\t${"title"in e?e.title:s.name}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="control-action-title-right">\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-up move-action-up"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-down move-action-down"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-trash-can delete-action"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`;const t=new Map;for(const n of(0,u.sortDependencies)((null===(f=e.parameters)||void 0===f?void 0:f.call(e))||[])){var f;const e=document.createElement("div");e.className="action-parameter",e.innerHTML=`<div class="parameter-title">${n.title}</div>`,l.appendChild(e);const i={};for(const e of null!==(b=n.dependencies)&&void 0!==b?b:[]){var b;i[e]=s.params[e]}const a="function"==typeof n.default?n.default(i):n.default;let r=null;switch(n.type){case"choice":{const o=document.createElement("select");o.dataset.paramid=n.id,e.appendChild(o);const l="function"==typeof n.options?n.options(i):n.options;for(const e of null!=l?l:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(void 0!==s.params[n.id]){o.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(o.value=a,s.params[n.id]=a);r=()=>{const e={};for(const i of null!==(t=n.dependencies)&&void 0!==t?t:[]){var t;e[i]=s.params[i]}const i=o.value,a="function"==typeof n.options?n.options(e):n.options;o.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(a.includes(i))o.value=i;else{const t="function"==typeof n.default?n.default(e):n.default;o.value=t,s.params[n.id]=t}},o.addEventListener("change",()=>{s.params[n.id]=o.value;for(const e of t.get(n.id)||[])e()})}break;case"text":{const i=document.createElement("input");if(i.type="text",i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.value=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.value;for(const e of t.get(n.id)||[])e()})}break;case"boolean":{const i=document.createElement("input");if(i.type="checkbox",i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.checked=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.checked=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.checked;for(const e of t.get(n.id)||[])e()})}break;case"duration":{const i=document.createElement("duration-input");if(i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.value=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.value;for(const e of t.get(n.id)||[])e()})}}if("function"==typeof r)for(const e of null!==(w=n.dependencies)&&void 0!==w?w:[]){var w;t.has(e)||t.set(e,[]),t.get(e).push(r)}}}l.querySelector(".move-action-up").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]);const t=e(s,a),n=t.actions.indexOf(s);if(0===t.actions.indexOf(s)){if("if"!==t.name&&"if not"!==t.name)return;const i=e(t,a);i.actions.splice(i.actions.indexOf(t),0,s),t.actions.splice(n,1)}else{const e=t.actions[n-1];"if"===e.name||"if not"===e.name?(e.actions.push(s),t.actions.splice(n,1)):(t.actions.splice(n,1),t.actions.splice(n-1,0,s))}o()}),l.querySelector(".move-action-down").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]);const t=e(s,a),n=t.actions.indexOf(s);if(t.actions.indexOf(s)===t.actions.length-1){if("if"!==t.name&&"if not"!==t.name)return;const i=e(t,a);i.actions.splice(i.actions.indexOf(t)+1,0,s),t.actions.splice(n,1)}else{const e=t.actions[n+1];"if"===e.name||"if not"===e.name?(e.actions.unshift(s),t.actions.splice(n,1)):(t.actions.splice(n,1),t.actions.splice(n+1,0,s))}o()}),l.querySelector(".delete-action").addEventListener("click",async t=>{if(this.ws.audio.playSound(["ui","click"]),t.shiftKey||await this.ws.gui.dialog.confirm("Delete Action","Are you sure you want to delete this action?<br><small>Tip: Hold <code><Shift></code> while clicking to skip this confirmation.</small>",null,!0)){const t=e(s,a);t.actions.splice(t.actions.indexOf(s),1),o()}})},n=()=>{const e=new Set,t=new Set;this.ws.store.control_scripts.forEach(n=>{n.keys.forEach(n=>{e.has(n)?t.add(n):e.add(n)})}),document.querySelectorAll(".control-keys div[data-key]").forEach(e=>{e.classList.toggle("duplicate",t.has(e.dataset.key))})},s=(e,o)=>{e.innerHTML='\n\t\t\t\t\t<div class="control-container">\n\t\t\t\t\t\t<div class="control-container-title">When these keys are pressed</div>\n\t\t\t\t\t\t<div class="control-keys"></div>\n\t\t\t\t\t\t<div class="control-container-title margin-top">Complete these actions</div>\n\t\t\t\t\t\t<div class="control-actions"></div>\n\t\t\t\t\t</div>\n\t\t\t\t';const l=e.querySelector(".control-keys");for(const t of o.keys){const i=document.createElement("div");i.dataset.key=t,i.innerHTML=`\n\t\t\t\t\t\t<span class="key-elem-title">${" "===t?"space":t}</span>\n\t\t\t\t\t\t<span class="fas fa-trash-can remove"></span>\n\t\t\t\t\t`,l.appendChild(i),i.querySelector(".remove").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),o.keys.splice(o.keys.indexOf(t),1),s(e,o),n()})}const d=document.createElement("div");d.className="add",d.innerHTML='<span class="fas fa-plus"></span>',l.appendChild(d),d.addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),document.querySelectorAll(".key-select").forEach(e=>e.remove());const t=document.createElement("div");t.className="key-select animate-loading-dots",t.textContent="Press a key",l.insertBefore(t,d);const i=()=>{t.remove(),m(b,this,null)};t.addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),i()}),m(b,this,(r,l,d)=>{if("escape"===r)i();else if(l){if(!(0,a.validateShortcut)(r))return i(),void this.ws.gui.dialog.toast("Invalid Key","The key you pressed is not a valid shortcut key.","error");o.keys.includes(r)||o.keys.push(r),i(),s(e,o),n()}else t.textContent=r||"Press a key"})});const c=e.querySelector(".control-actions");for(const e of o.actions)t(c,e,o,()=>{this.controls()});const u=document.createElement("div");u.className="control-bottom-container",u.innerHTML='\n\t\t\t\t\t<div class="add-action-button"></div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<button class="add-action-button control-delete" style="--background: 211, 51, 51;">Delete</button>\n\t\t\t\t\t</div>\n\t\t\t\t',c.appendChild(u),u.querySelector(".control-delete").addEventListener("click",async e=>{this.ws.audio.playSound(["ui","click"]),(e.shiftKey||await this.ws.gui.dialog.confirm("Delete Control Script","Are you sure you want to delete this control script? This action cannot be undone?<br><small>Tip: Hold <code><Shift></code> while clicking to skip this confirmation.</small>",null,!0))&&(this.ws.store.control_scripts.splice(this.ws.store.control_scripts.indexOf(o),1),this.controls())});const p=()=>{const t=u.querySelector(".add-action-button");t.innerHTML='<button class="add-action-button new-button"><span class="fa fa-plus"></span> Add Action</button>',t.querySelector(".new-button").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),t.innerHTML='\n\t\t\t\t\t\t\t<select style="height: 35px;"></select>\n\t\t\t\t\t\t\t<button class="add-action-button cancel-button" style="margin-left: 10px;">Cancel</button>\n\t\t\t\t\t\t\t<button class="add-action-button create-button" style="margin-left: 10px;">Create</button>\n\t\t\t\t\t\t';const n=t.querySelector("select");n.innerHTML+='<option value="if">If Condition</option>',n.innerHTML+='<option value="if not">If Not Condition</option>',Object.entries(r.events).forEach(([e,t])=>{n.innerHTML+="title"in t?`<option value="${e}">${t.title}</option>`:`<option value="${e}">${e}</option>`}),t.querySelector(".cancel-button").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),p()}),t.querySelector(".create-button").addEventListener("click",()=>{if(this.ws.audio.playSound(["ui","click"]),"if"===n.value||"if not"===n.value||n.value in r.events){const t={name:n.value,params:{}};"if"!==n.value&&"if not"!==n.value||(t.condition={name:Object.keys(i.conditions)[0]},t.actions=[]),o.actions.push(t),s(e,o)}})})};p()},o=document.querySelector("#settings-container > .settings > .settings-right > .controls");o.querySelectorAll(".control-script-item").forEach(e=>e.remove());for(const e of this.ws.store.control_scripts){const t=document.createElement("div");t.className="settings-section control-script-item",o.appendChild(t),s(t,e)}n()}}zen(){this.deselect(),document.querySelector("#settings-zen-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .zen").classList.remove("hidden")}app(){this.deselect(),document.querySelector("#settings-app-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .app").classList.remove("hidden")}queue(){this.deselect(),document.querySelector("#settings-queue-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .queue").classList.remove("hidden")}accessibility(){this.deselect(),document.querySelector("#settings-accessibility-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .accessibility").classList.remove("hidden")}AI(){this.deselect(),document.querySelector("#settings-AI-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .AI").classList.remove("hidden")}autoReporting(){this.deselect(),document.querySelector("#settings-auto-reporting-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .auto-reporting").classList.remove("hidden")}gadgets(){this.deselect(),document.querySelector("#settings-gadgets-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .gadgets").classList.remove("hidden")}whitelist(e){this.deselect(),document.querySelector(`#settings-whitelist-${e}s-button`).classList.add("selected"),document.querySelector(`#settings-container > .settings > .settings-right > .whitelist.${e}s`).classList.remove("hidden");{const t=document.querySelector(`#settings-whitelist-${e}s-expiry`);t.value=this.ws.store.settings.expiry.whitelist[`${e}s`],t.addEventListener("change",t=>this.ws.store.settings.expiry.whitelist[`${e}s`]=t.target.value);const n=document.querySelector(`#settings-whitelist-${e}s-input`),s=()=>{const t=n.value.trim();t&&(n.value="",this.ws.store.whitelist[`${e}s`].set(t,[Date.now(),this.ws.util.expiryToDate(this.ws.store.settings.expiry.whitelist[`${e}s`]).valueOf()]),this.ws.store.statistics.items_whitelisted.total++,this.ws.store.statistics.items_whitelisted[`${e}s`]++,this.ws.gui.renderQueue(),this.whitelist(e))};if("tag"===e&&this.wikipediaTags){const e=this.wikipediaTags.map(e=>e.name).sort();for(const t of e){const e=document.createElement("option");e.value=t,e.textContent=t,n.appendChild(e)}n.setAttribute("list",n.id+"-datalist");const t=document.createElement("datalist");t.id=n.id+"-datalist",n.parentElement.appendChild(t);for(const n of e){const e=document.createElement("option");e.value=n,t.appendChild(e)}}document.querySelector(`#settings-whitelist-${e}s-add-button`).addEventListener("click",s),n.addEventListener("keydown",e=>{"Enter"===e.key&&(s(),e.preventDefault())})}{const t=document.querySelector(`#settings-whitelist-${e}s-list`);t.innerHTML="";const n=t=>{switch(e){case"user":return this.ws.page(`Special:Contributions/${t}`);case"page":return this.ws.page(t);case"tag":return this.ws.page(`Special:Tags/${t}`)}},s=[...this.ws.store.whitelist[`${e}s`]].sort((e,t)=>t[1][1]-e[1][1]);for(const[i,a]of s){const s=document.createElement("div"),r=new Date(a[0]),o=a[1]===1/0?"Never":`${new Date(a[1]).toLocaleDateString()} ${new Date(a[1]).toLocaleTimeString()}`;s.innerHTML=`\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<a href="${n(i)}">${i}</a>\n\t\t\t\t\t\t<span>Added: ${r.toLocaleDateString()} ${r.toLocaleTimeString()}</span>\n\t\t\t\t\t\t<span class="${Date.now()>a[1]?"expired":""}">\n\t\t\t\t\t\t\t${Date.now()>a[1]?"Expired":"Expires"}: ${o}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class="add-action-button remove-button" title="Remove from whitelisted list"><span class="fa fa-trash"></span></button>\n\t\t\t\t`,s.querySelector(".remove-button").addEventListener("click",()=>{this.ws.store.whitelist[`${e}s`].delete(i),this.ws.gui.renderQueue(),this.whitelist(e)}),t.appendChild(s)}0===s.length&&(t.innerHTML=`<div class="empty">No whitelisted ${e}s.</div>`)}}highlight(e){this.deselect(),document.querySelector(`#settings-highlight-${e}s-button`).classList.add("selected"),document.querySelector(`#settings-container > .settings > .settings-right > .highlight.${e}s`).classList.remove("hidden");{const t=document.querySelector(`#settings-highlight-${e}s-expiry`);t.value=this.ws.store.settings.expiry.highlight[`${e}s`],t.addEventListener("change",t=>this.ws.store.settings.expiry.highlight[`${e}s`]=t.target.value);const n=document.querySelector(`#settings-highlight-${e}s-input`),s=()=>{const t=n.value.trim();t&&(n.value="",this.ws.store.highlight[`${e}s`].set(t,[Date.now(),this.ws.util.expiryToDate(this.ws.store.settings.expiry.highlight[`${e}s`]).valueOf()]),this.ws.store.statistics.items_highlighted.total++,this.ws.store.statistics.items_highlighted[`${e}s`]++,this.ws.gui.renderQueue(),this.highlight(e))};if("tag"===e&&this.wikipediaTags){const e=this.wikipediaTags.map(e=>e.name).sort();for(const t of e){const e=document.createElement("option");e.value=t,e.textContent=t,n.appendChild(e)}n.setAttribute("list",n.id+"-datalist");const t=document.createElement("datalist");t.id=n.id+"-datalist",n.parentElement.appendChild(t);for(const n of e){const e=document.createElement("option");e.value=n,t.appendChild(e)}}document.querySelector(`#settings-highlight-${e}s-add-button`).addEventListener("click",s),n.addEventListener("keydown",e=>{"Enter"===e.key&&(s(),e.preventDefault())})}{const t=document.querySelector(`#settings-highlight-${e}s-list`);t.innerHTML="";const n=t=>{switch(e){case"user":return this.ws.page(`Special:Contributions/${t}`);case"page":return this.ws.page(t);case"tag":return this.ws.page(`Special:Tags/${t}`)}},s=[...this.ws.store.highlight[`${e}s`]].sort((e,t)=>t[1][1]-e[1][1]);for(const[i,a]of s){const s=document.createElement("div"),r=new Date(a[0]),o=a[1]===1/0?"Never":`${new Date(a[1]).toLocaleDateString()} ${new Date(a[1]).toLocaleTimeString()}`;s.innerHTML=`\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<a href="${n(i)}">${i}</a>\n\t\t\t\t\t\t<span>Added: ${r.toLocaleDateString()} ${r.toLocaleTimeString()}</span>\n\t\t\t\t\t\t<span class="${Date.now()>a[1]?"expired":""}">\n\t\t\t\t\t\t\t${Date.now()>a[1]?"Expired":"Expires"}: ${o}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class="add-action-button remove-button" title="Remove from highlighted list"><span class="fa fa-trash"></span></button>\n\t\t\t\t`,s.querySelector(".remove-button").addEventListener("click",()=>{this.ws.store.highlight[`${e}s`].delete(i),this.ws.gui.renderQueue(),this.highlight(e)}),t.appendChild(s)}0===s.length&&(t.innerHTML=`<div class="empty">No highlighted ${e}s.</div>`)}}statistics(){this.deselect(),document.querySelector("#settings-statistics-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .statistics").classList.remove("hidden");document.querySelector("#reset-statistics-button").addEventListener("click",async()=>{await this.ws.gui.dialog.confirm("Reset statistics","Are you sure you want to reset all statistics? This action cannot be undone.",void 0,!0)&&(this.ws.store.statistics={},this.ws.storage.load(this.ws.store),this.ws.time.load=performance.now(),this.statistics())});const e=this.ws.store.statistics;document.querySelector("#stats-total-reviewed").textContent=(e.edits_reviewed.total||0).toLocaleString();document.querySelector("#stats-thanks-percentage").textContent=(e.edits_reviewed.thanked/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-recent-changes-reviewed").textContent=(e.recent_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-recent-changes-percentage").textContent=(e.recent_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-reviewed").textContent=(e.pending_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-pending-changes-accepted").textContent=(e.pending_changes_reviewed.accepted||0).toLocaleString();document.querySelector("#stats-pending-changes-accepted-percentage").textContent=(e.pending_changes_reviewed.accepted/e.pending_changes_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-rejected").textContent=(e.pending_changes_reviewed.rejected||0).toLocaleString();document.querySelector("#stats-pending-changes-rejected-percentage").textContent=(e.pending_changes_reviewed.rejected/e.pending_changes_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-percentage").textContent=(e.pending_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-user-creations-reviewed").textContent=(e.users_reviewed.total||0).toLocaleString();document.querySelector("#stats-user-creations-percentage").textContent=(e.users_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-watchlist-changes-reviewed").textContent=(e.watchlist_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-watchlist-changes-percentage").textContent=(e.watchlist_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-abuselog-changes-reviewed").textContent=(e.abuselogs_reviewed.total||0).toLocaleString();document.querySelector("#stats-abuselog-changes-percentage").textContent=(e.abuselogs_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-reverts-made").textContent=(e.reverts_made.total||0).toLocaleString();document.querySelector("#stats-reverts-percentage").textContent=(e.reverts_made.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-goodfaith-reverts-percentage").textContent=(e.reverts_made.good_faith/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-recent-reverts-percentage").textContent=(e.reverts_made.from_recent_changes/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-pending-reverts-percentage").textContent=(e.reverts_made.from_pending_changes/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-watchlist-reverts-percentage").textContent=(e.reverts_made.from_watchlist/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-abuselog-reverts-percentage").textContent=(e.reverts_made.from_abuselogs/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-other-reverts-percentage").textContent=(e.reverts_made.from_loaded_edits/e.reverts_made.total*100||0).toFixed(2);{document.querySelector("#stats-users-welcomed").textContent=(e.users_welcomed.total||0).toLocaleString();const t=document.querySelector("#stats-users-welcomed-message");e.edits_reviewed.total===e.users_welcomed.total?t.textContent=`You welcome every user whose edit you review! (${e.users_welcomed.total.toLocaleString()})`:0===e.users_welcomed.total?t.innerHTML="For every Infinity edits you review, you still won’t welcome a new user.":t.textContent=`For every ${(e.edits_reviewed.total/e.users_welcomed.total||0).toFixed(3)} edits you review, you welcome a new user.`}document.querySelector("#stats-warnings").textContent=(e.warnings_issued.total||0).toLocaleString();document.querySelector("#stats-warning-1-percentage").textContent=(e.warnings_issued.level_1/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-2-percentage").textContent=(e.warnings_issued.level_2/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-3-percentage").textContent=(e.warnings_issued.level_3/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-4-percentage").textContent=(e.warnings_issued.level_4/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-4im-percentage").textContent=(e.warnings_issued.level_4im/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-reports").textContent=(e.reports_filed.total||0).toLocaleString();document.querySelector("#stats-AIV-reports-percentage").textContent=(e.reports_filed.AIV/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-UAA-reports-percentage").textContent=(e.reports_filed.UAA/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-global-block-reports-percentage").textContent=(e.reports_filed.global_block/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-global-lock-reports-percentage").textContent=(e.reports_filed.global_lock/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-RFPP-reports-percentage").textContent=(e.reports_filed.RFPP/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-pages-watched").textContent=(e.watchlist.watched||0).toLocaleString();document.querySelector("#stats-pages-unwatched").textContent=(e.watchlist.unwatched||0).toLocaleString();document.querySelector("#stats-items-whitelisted").textContent=(e.items_whitelisted.total||0).toLocaleString();document.querySelector("#stats-users-whitelisted").textContent=(e.items_whitelisted.users||0).toLocaleString();document.querySelector("#stats-users-whitelisted-percentage").textContent=(e.items_whitelisted.users/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-pages-whitelisted").textContent=(e.items_whitelisted.pages||0).toLocaleString();document.querySelector("#stats-pages-whitelisted-percentage").textContent=(e.items_whitelisted.pages/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-tags-whitelisted").textContent=(e.items_whitelisted.tags||0).toLocaleString();document.querySelector("#stats-tags-whitelisted-percentage").textContent=(e.items_whitelisted.tags/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-items-highlighted").textContent=(e.items_highlighted.total||0).toLocaleString();document.querySelector("#stats-users-highlighted").textContent=(e.items_highlighted.users||0).toLocaleString();document.querySelector("#stats-users-highlighted-percentage").textContent=(e.items_highlighted.users/e.items_highlighted.total*100||0).toFixed(2);document.querySelector("#stats-pages-highlighted").textContent=(e.items_highlighted.pages||0).toLocaleString();document.querySelector("#stats-pages-highlighted-percentage").textContent=(e.items_highlighted.pages/e.items_highlighted.total*100||0).toFixed(2);document.querySelector("#stats-tags-highlighted").textContent=(e.items_highlighted.tags||0).toLocaleString();document.querySelector("#stats-tags-highlighted-percentage").textContent=(e.items_highlighted.tags/e.items_highlighted.total*100||0).toFixed(2);{const t=e.session_time+(performance.now()-this.ws.time.load);document.querySelector("#stats-session-time").textContent=(e=>{const t=Math.floor(e/1e3),n=Math.floor(t/86400),s=Math.floor(t%86400/3600),i=Math.floor(t%3600/60);let a="";return n>0&&(a+=`${n}d `),s>0&&(a+=`${s}h `),i>0&&(a+=`${i}m `),a+=t%60+"s",a.trim()})(t);document.querySelector("#stats-reports-per-day").textContent=(e.reports_filed.total/(t/864e5||1)||0).toFixed(2);document.querySelector("#stats-reverts-per-hour").textContent=(e.reverts_made.total/(t/36e5||1)||0).toFixed(2);document.querySelector("#stats-reviews-per-minute").textContent=(e.edits_reviewed.total/(t/6e4||1)||0).toFixed(2)}}save(){this.deselect(),document.querySelector("#settings-save-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .save").classList.remove("hidden"),document.querySelector("#settings-save-status").classList.add("hidden")}changelog(){this.deselect(),document.querySelector("#settings-changelog-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .changelog").classList.remove("hidden");const e=document.querySelector("#settings-container > .settings > .settings-right > .changelog > div > .changelog-content");e.innerHTML="<em class='animate-loading-dots'>Loading changelog</em>",l.WikiShield.config.changelog.HTML.then(t=>e.innerHTML=t)}about(){this.deselect(),document.querySelector("#settings-about-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .about").classList.remove("hidden"),document.querySelector("#settings-about-version").textContent=l.WikiShield.config.version,document.querySelectorAll("#settings-container > .settings > .settings-right > .about > .randomize").forEach(e=>{for(let t=e.children.length;t>=0;t--)e.appendChild(e.children[Math.random()*t|0])})}}},7698(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BuildPalette=function(e,...t){const n=document.createElement("canvas");n.width=e,n.height=1;const s=n.getContext("2d"),i=s.createLinearGradient(0,0,n.width,0),a=1/(t.length-1);t.forEach((e,t)=>{i.addColorStop(a*t,e)}),s.fillStyle=i,s.fillRect(0,0,n.width,n.height);const r=s.getImageData(0,0,n.width,1).data;return Array.from({length:e},(e,t)=>{const n=4*t;return`rgb(${r[n]}, ${r[n+1]}, ${r[n+2]})`})}},3241(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.expiryRegex=t.Utility=void 0;var s=n(4551);function i(){i=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,s,i){var r=RegExp(e,s);return t.set(r,i||t.get(e)),a(r,n.prototype)}function s(e,n){var s=t.get(n);return Object.keys(s).reduce(function(t,n){var i=s[n];if("number"==typeof i)t[n]=e[i];else{for(var a=0;void 0===e[i[a]]&&a+1<i.length;)a++;t[n]=e[i[a]]}return t},Object.create(null))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&a(e,t)}(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);if(n){n.groups=s(n,this);var i=n.indices;i&&(i.groups=s(i,this))}return n},n.prototype[Symbol.replace]=function(n,i){if("string"==typeof i){var a=t.get(this);return e[Symbol.replace].call(this,n,i.replace(/\$<([^>]+)(>|$)/g,function(e,t,n){if(""===n)return e;var s=a[t];return Array.isArray(s)?"$"+s.join("$"):"number"==typeof s?"$"+s:""}))}if("function"==typeof i){var r=this;return e[Symbol.replace].call(this,n,function(){var e=arguments;return"object"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(s(e,r)),i.apply(this,e)})}return e[Symbol.replace].call(this,n,i)},i.apply(this,arguments)}function a(e,t){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},a(e,t)}const r=t.expiryRegex=i(/(infinity|^(([0-9]+)Y)?(([0-9]+)M)?(([0-9]+)W)?(([0-9]+)D)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?)$/,{years:3,months:5,weeks:7,days:9,hours:11,minutes:13,seconds:15});t.Utility=class{constructor(e){this.ws=e}escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}escape(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}utcString(e){if(e===1/0)return"indefinite";const t=this.padString;return`${e.getUTCFullYear()}-${t(e.getUTCMonth()+1,2)}-${t(e.getUTCDate(),2)}T${t(e.getUTCHours(),2)}:${t(e.getUTCMinutes(),2)}:${t(e.getUTCSeconds(),2)}`}padString(e,t){for(e=e.toString();e.length<t;)e=`0${e}`;return e}getMonth(e){return["January","February","March","April","May","June","July","August","September","October","November","December"][e]}monthSectionName(){return`${this.getMonth((new Date).getUTCMonth())} ${(new Date).getUTCFullYear()}`}escape(e){return(e||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}textify(e){const t=document.createElement("div");return t.innerHTML=e,t.textContent||t.innerText||""}pageLink(e,t=!1,n=!0){return t?`https://${this.ws.server}/w/index.php${e}`:`https://${this.ws.server}/wiki/${n?encodeURIComponent(e):e}`}truncate(e,t){return(0,s.truncate)(e,t)}formatBytes(e){if(0===e)return"0 B";const t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(2))+" "+["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB","RiB","QiB"][t]}getChangeColor(e){if(0===e)return"#888";if(e>0)return e>=1e3?"#00b894":e>=500?"#00d4a1":e>=100?"#26de81":"#55efc4";{const t=Math.abs(e);return t>=1e3?"#d63031":t>=500?"#e74c3c":t>=100?"#ff6b6b":"#ff8787"}}getChangeString(e){return e>0?"+"+e:0===e?"0":`–${Math.abs(e).toString()}`}formatNotificationTime(e,t=new Date){const n=Math.floor((t-e)/1e3);return n<=0?"Now":n<60?`${n}s ago`:n<3600?`${Math.floor(n/60)}m ago`:n<86400?`${Math.floor(n/3600)}h ago`:n<2592e3?`${Math.floor(n/86400)}d ago`:n<31536e3?`${Math.floor(n/2592e3)}mo ago`:`${Math.floor(n/31536e3)}y ago`}formatDuration(e,t=new Date){const n=Math.floor((t-e)/1e3);return n<=0?"0s":n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m`:n<86400?`${Math.floor(n/3600)}h`:n<2592e3?`${Math.floor(n/86400)}d`:n<31536e3?`${Math.floor(n/2592e3)}mo`:`${Math.floor(n/31536e3)}y`}match(e,t){return this.ws.store.settings.username_highlighting.fuzzy?function(e,t,n){const s=e.length,i=t.length;if(0===s)return!0;if(0===i)return s<=n;let a=new Array(i+1).fill(0),r=new Array(i+1).fill(0);for(let e=0;e<=i;e++)a[e]=0;for(let o=1;o<=s;o++){r[0]=o;let l=r[0];for(let d=1;d<=i;d++){const i=e[o-1]===t[d-1]?0:1,c=a[d]+1,u=r[d-1]+1,p=a[d-1]+i,g=Math.min(c,u,p);if(r[d]=g,g<l&&(l=g),o===s&&g<=n)return!0}if(l>n)return!1;[a,r]=[r,a]}return!1}(e,t,2):t.toLowerCase().includes(e.toLowerCase())}isIPv4Address(e){const t="(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|0?[0-9]{1,2})";return new RegExp(`^(${t}\\.){3}${t}$`).test(e)}isIPv6Address(e){return!!new RegExp("^(?::(?::|(?::[0-9A-Fa-f]{1,4}){1,7})|[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){0,6}::|[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){7})$").test(e)||new RegExp("^[0-9A-Fa-f]{1,4}(?:::?[0-9A-Fa-f]{1,4}){1,6}$").test(e)&&/::/.test(e)&&!/::.*::/.test(e)}isIPAddress(e){return this.isIPv4Address(e)||this.isIPv6Address(e)}isTempAccount(e){return/^~[0-9]{4,}(-[0-9A-Fa-f]{5})*(-[0-9A-Fa-f]{1,5})$/.test(e)}expiryToDate(e){if("infinity"===e)return 1/0;const t=new Date,n=r.exec(e);return n?new Date(t.getFullYear()+(parseInt(n.groups.years)||0),t.getMonth()+(parseInt(n.groups.months)||0),t.getDate()+7*(parseInt(n.groups.weeks)||0)+(parseInt(n.groups.days)||0),t.getHours()+(parseInt(n.groups.hours)||0),t.getMinutes()+(parseInt(n.groups.minutes)||0),t.getSeconds()+(parseInt(n.groups.seconds)||0)):t}getPageSections(e){const t=e.split("\n"),n=[];let s={title:"",heading:"",level:0,content:""};for(const e of t){const t=/^(=+)\s*(.*?)\s*\1\s*$/.exec(e);t?(""!==s.title&&n.push(s),s={title:t[2],heading:t[0],level:t[1].length,content:""}):(""!==s.content&&(s.content+="\n"),s.content+=e)}return""===s.content&&""===s.title||n.push(s),n}}},5564(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.sortDependencies=function(e){const t=new Map(e.map(e=>[e.id,e])),n=new Set,s=new Set,i=[],a=(e,r)=>{if(n.has(e))return;if(s.has(e)){const t=r.indexOf(e),n=r.slice(t).concat(e).join(" -> ");throw new Error(`Cyclic dependency detected: ${n}`)}const o=t.get(e);if(!o)throw new Error(`Unknown dependency: ${e}`);s.add(e),r.push(e);const l=o.dependencies||[];for(const e of l)a(e,r);r.pop(),n.add(e),s.delete(e),i.push(o)};for(const t of e)n.has(t.id)||a(t.id,[]);return i}},2069(e,t){var n;function s(e,t,n){i(e,t),t.set(e,n)}function i(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function a(e,t){return e.get(o(e,t))}function r(e,t,n){return e.set(o(e,t),n),n}function o(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),t.Text=void 0;class d{}l(d,"Lower",Symbol("lower case")),l(d,"Upper",Symbol("UPPER CASE")),l(d,"Title",Symbol("Title Case")),l(d,"Sentence",Symbol("Sentence case")),l(d,"Camel",Symbol("camelCase")),l(d,"Pascal",Symbol("PascalCase")),l(d,"Snake",Symbol("snake_Case")),l(d,"Split",Symbol("split,case"));var c=new WeakMap,u=new WeakMap,p=new WeakMap,g=new WeakSet;class h{static pluralize(e,t,n){return new h(e).plural(n).get(t)}constructor(e,t=d.Sentence){var n,a;i(n=this,a=g),a.add(n),s(this,c,!1),s(this,u,void 0),s(this,p,void 0);const l=m.call(h,e,t);r(c,this,l.inSentenceCase),r(u,this,l.words),r(p,this,o(g,this,v).call(this))}plural(){return r(p,this,o(g,this,v).apply(this,arguments)),this}case(e=d.Sentence){const t=t=>{switch(e){case d.Lower:return t.map(e=>e.toLowerCase()).join(" ");case d.Upper:return t.map(e=>e.toUpperCase()).join(" ");case d.Title:return t.map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ");case d.Sentence:if(a(c,this))return t.join(" ");let e=!0;return t.map(t=>{let n=e?t.charAt(0).toUpperCase()+t.slice(1).toLowerCase():t.toLowerCase();return e=/[.!?]$/.test(t),n}).join(" ");case d.Camel:return t.map((e,t)=>0===t?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("");case d.Pascal:return t.map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("");case d.Snake:return t.map(e=>e.toLowerCase()).join("_");case d.Split:return t;default:throw new TypeError("Invalid case type, must be a Case value")}},[n,s]=[t(a(u,this)),t(a(p,this))];return Object.freeze({get:(e=1)=>(Number.isNaN(Number(e))||1===e||1n===e||"1"===e?n:s).replace(/(?<!\\)%n/g,e)})}get(e=1){return this.case().get(e)}}function m(e,t){const n=(e=>{switch(t){case d.Lower:case d.Upper:case d.Title:case d.Sentence:return e.split(/\s+/);case d.Camel:case d.Pascal:return e.split(/(?=[A-Z])/);case d.Snake:return e.split(/_/g);case d.Split:throw new TypeError("Split case is only used for output, not input");default:throw new TypeError("Invalid case type, must be a Case value")}})(e.toString().trim());return t===d.Sentence?{inSentenceCase:!0,words:n.map(e=>e.trim()).filter(e=>e.length>0)}:{inSentenceCase:!1,words:n.map(e=>e.trim().toLowerCase()).filter(e=>e.length>0)}}function v(e){if(null==e||e){const e=[...a(u,this)],t=e.length-1;return e[t]=(e=>{let t;return t=e.replace(/(?<=sh?|ch|x|z|[^aeiou]o)$/i,"es"),t!==e?t:(t=e.replace(/(?<=[^aeiou])y$/i,"ies"),t!==e?t:(t=e.replace(/fe?$/i,"ves"),t!==e?t:`${e}s`))})(a(u,this)[t]),e}if(!1===e)return[...a(u,this)];if(e instanceof n)return e.case(d.Split).get();throw new TypeError("Invalid plural argument, must be boolean or Text instance")}t.Text=h,n=h,l(h,"Case",d)},8878(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.MediaWikiAPI=void 0;var s=n(1289),i=n(4551),a=n(2852),r=n(6873),o=n(505),l=n(8582);const d=console,c=new Set(l.__servers__.filter(e=>e.tag).map(e=>e.host)),u=new Set(l.__servers__.filter(e=>e.pending_changes).map(e=>e.host));class p{static get pendingChangesServers(){return Array.from(u)}static hasPendingChanges(e){return u.has(e)}static chunk(e,t=50){const n=[],s=e.length;for(let i=0;i<s;i+=t)n.push(e.slice(i,i+t));return n}static paramify(e){return Array.isArray(e)||(e=[e]),[...new Set(e)]}static join(e){return e.join("|").replace(/\|\|+/g,"|")}static getUsername(e,t){return e.fetch(`https://${t}/w/api.php`,{action:"query",meta:"userinfo",uiprop:"name",format:"json",formatversion:2},void 0,"POST",!0).then(e=>{var t;return(null==e||null===(t=e.query)||void 0===t||null===(t=t.userinfo)||void 0===t?void 0:t.name)||null})}constructor(e,t,n,s){var i,o;this.glob=e,this.oauth=t,this.server=n,this.username=s,this.tokens={},null!==(o=(i=p.cache)[n])&&void 0!==o||(i[n]={parse:new r.Trie({size:1e3}),pending:new a.Memory({size:2500,timeout:36e5}),abuse:new a.Memory({size:2500,timeout:9e5}),ores:new a.Memory({size:1e4,timeout:9e5}),diff:new a.Memory({size:500,timeout:3e5})})}get cache(){return p.cache[this.server]}build(e={},t=null){return{tags:c.has(null!=t?t:this.server)?"WikiShield script":"",assertuser:this.username,discussiontoolsautosubscribe:"no",...e}}user(e){return`[[Special:Contribs/${e}|${e}]] ([[User talk:${e}|talk]])`}revision(e){return`[[Special:Diff/${e}|${e}]]`}centralAuthUser(e){return`[[Special:CentralAuth/${e}|${e}]]`}summary(e,t){const n=" ([[:en:WP:WikiShield|WS]])",s=`${e}${t?`: ${t}`:""}`;return`${(0,i.truncate)(s,473)}${n}`}async post(e,t=!1,n=null){try{const s=await this.oauth.fetch(`https://${n||this.server}/w/api.php`,this.build({...e,format:"json",formatversion:2},n),void 0,"POST",t,n);if(s.error){if("alreadyrolled"===s.error.code||"editconflict"===s.error.code)return"editconflict";if("missingcontent"===s.error.code&&"compare"===e.action)return{compare:{body:""}};throw new Error(`API Error: ${s.error.code} - ${s.error.info}`)}return s}catch(t){throw d.error("Error in API POST request:",t,JSON.stringify(e)),t}}async continuous(e,t,n,s){try{let i=null;const a=[];do{const r=await this.post({...e,...i||{}},n,s);a.push(r),i=r.continue||null,"function"==typeof t&&!0===await t(r,a)&&(i=!1)}while(i);return{stopped:null!==i,responses:a}}catch(t){return d.error("Error in API continuous request:",t,JSON.stringify(e)),{stopped:!0,responses:[]}}}async getToken(e="csrf",t,n){const s=`${null!=n?n:this.server}:${e}`;if(void 0!==this.tokens[s])return this.tokens[s];try{return this.tokens[s]=this.post({action:"query",meta:"tokens",type:e},t,n).then(t=>{var n;return(null==t||null===(n=t.query)||void 0===n||null===(n=n.tokens)||void 0===n?void 0:n[`${e}token`])||null})}catch(e){throw d.error("Error fetching token:",e),e}}async postWithToken(e,t="csrf",n,s){try{return await this.post({...e,token:await this.getToken(t,n,s)},n,s)}catch(i){if("badtoken"===i&&!attempted){delete this.tokens[`${null!=s?s:this.server}:${t}`];try{return await this.postWithToken(e,t,n,s,!0)}catch(e){throw d.error("Post with token error after retry:",e),e}}throw d.error("Post with token error:",i),i}}async account(e,t){try{var n;return(null===(n=await this.post({action:"query",meta:"userinfo",uiprop:"*"},e,t))||void 0===n||null===(n=n.query)||void 0===n?void 0:n.userinfo)||{}}catch(e){var s;return null!==(s=void d.error("Error fetching account info:",e))&&void 0!==s?s:{}}}async getGlobalUserInfo(e,t,n){try{var s;return(null===(s=(await this.post({action:"query",meta:"globaluserinfo",guiuser:e,guiprop:"groups|rights"},t,n)).query)||void 0===s?void 0:s.globaluserinfo)||{}}catch(e){var i;return null!==(i=void d.error("Error fetching global user info:",e))&&void 0!==i?i:{}}}async markWatchlistSeen(e,t,n,s){try{await this.postWithToken({action:"setnotificationtimestamp",titles:e,newerthanrevid:t},"csrf",n,s)}catch(e){var i;return null!==(i=void d.error("Error marking watchlist item as seen:",e))&&void 0!==i?i:{valid:!1,reason:e.message}}}async append(e,t,n,s,i=null,a,r){const o=async(e,t,n,s,i=null,a,r)=>{try{if(null!==i){return{needsCheck:!0,text:(await this.getPagesContent([e],a,r))[e]||""}}return"editconflict"===await this.postWithToken({action:"edit",title:e,...null===(null!=t?t:null)?{}:{section:t},appendtext:`\n${n}`,summary:s},"csrf",a,r)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var o;return null!==(o=void d.error("Error appending to section:",e))&&void 0!==o?o:{valid:!1,reason:e.message}}};if("function"==typeof i){const l=await o(e,t,n,s,!0,a,r);if(l.needsCheck){const d=await i(l.text);return d.valid?await o(e,t,n,s,null,a,r):{valid:!1,reason:d.reason||"Append check failed."}}return l}return await o(e,t,n,s,null,a,r)}async editSection(e,t,n,s,i,a=null,r,o){const l=async(e,t,n,s,i,a=null,r,o)=>{try{if(null!==a){return{needsCheck:!0,text:(await this.getPagesContent([e],r,o))[e]||""}}return"editconflict"===await this.postWithToken({action:"edit",title:e,section:t,sectiontitle:n,text:s,summary:i},"csrf",r,o)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var l;return null!==(l=void d.error("Error editing section:",e))&&void 0!==l?l:{valid:!1,reason:e.message}}};if("function"==typeof a){const d=await l(e,t,n,s,i,!0,r,o);if(d.needsCheck){const c=await a(d.text);return c.valid?await l(e,t,n,s,i,null,r,o):{valid:!1,reason:c.reason||"Edit section check failed."}}return d}return await l(e,t,n,s,i,null,r,o)}async acceptPendingEdit(e,t,n,s){try{return await this.postWithToken({action:"review",revid:e,comment:t},"csrf",n,s),{valid:!0}}catch(e){return{valid:!1,reason:"Edit could not be accepted."}}}async rejectPendingEdit(e,t,n,s,i,a){try{const r=(await this.getRevisionsContent([t],i,a))[t]||"";return"editconflict"===await this.postWithToken({action:"edit",title:n,text:r,summary:s,baserevid:e},"csrf",i,a)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){return{valid:!1,reason:"Edit could not be rejected."}}}async rollbackEdit(e,t,n,s,i){try{var a;const r=await this.postWithToken({action:"rollback",title:e,user:t,summary:n},"rollback",s,i);if("editconflict"===r)return{valid:!1,reason:"Edit conflict."};if("onlyauthor"===r)return{valid:!1,reason:"Cannot rollback edits as the no other user has edited the page."};if(null===(a=r.rollback)||void 0===a||!a.revid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,r.rollback.revid,s,i)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var r;return null!==(r=void d.error("Error rolling back edit:",e))&&void 0!==r?r:{valid:!1,reason:e.message}}}async undoEdit(e,t,n,s,i){try{var a;const r=await this.postWithToken({action:"edit",title:e,undo:t,summary:n},"csrf",s,i);if("editconflict"===r)return{valid:!1,reason:"Edit conflict."};if(null===(a=r.edit)||void 0===a||!a.newrevid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,r.edit.newrevid,s,i)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var r;return null!==(r=void d.error("Error undoing edit:",e))&&void 0!==r?r:{valid:!1,reason:e.message}}}async restoreEdit(e,t,n,i,a){try{var r;const o=(0,s.convertToUTCString)(new Date),l=(await this.getRevisionsContent([t],i,a))[t]||"",d=await this.postWithToken({action:"edit",title:e,text:l,summary:n,starttimestamp:o},"csrf",i,a);if("editconflict"===d)return{valid:!1,reason:"Edit conflict."};if(null===(r=d.edit)||void 0===r||!r.newrevid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,d.edit.newrevid,i,a)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var o;return null!==(o=void d.error("Error restoring edit:",e))&&void 0!==o?o:{valid:!1,reason:e.message}}}async thankRevision(e,t,n){try{return await this.postWithToken({action:"thank",rev:e},"csrf",t,n),{valid:!0}}catch(e){var s;return null!==(s=void d.error("Error thanking revision:",e))&&void 0!==s?s:{valid:!1,reason:e.message}}}async watchPage(e,t,n,s){try{return await this.postWithToken({action:"watch",title:e,expiry:t},"watch",n,s),{valid:!0}}catch(e){var i;return null!==(i=void d.error("Error watching page:",e))&&void 0!==i?i:{valid:!1,reason:e.message}}}async unwatchPage(e,t,n){try{return await this.postWithToken({action:"watch",title:e,unwatch:!0},"watch",t,n),{valid:!0}}catch(e){var s;return null!==(s=void d.error("Error unwatching page:",e))&&void 0!==s?s:{valid:!1,reason:e.message}}}async parse(e,t,n=!1,s=!1,i,a){null!=t||(t=void 0);const r=[t,e,n,s].filter(e=>void 0!==e);if(this.cache.parse.has(...r))return this.cache.parse.get(...r);try{var o;const l=null===(o=await this.post({action:"parse",prop:"text",preview:n,...s?{summary:e}:{text:e},title:t,contentmodel:"wikitext",disablelimitreport:!0,disableeditsection:!0,disabletoc:!0},i,a))||void 0===o||null===(o=o.parse)||void 0===o?void 0:o[s?"parsedsummary":"text"];return this.cache.parse.set(...r,l),l}catch(e){var l;return null!==(l=void d.error("Error parsing wikitext:",e))&&void 0!==l?l:""}}async getTags(e,t){try{return(await this.continuous({action:"query",list:"tags",tglimit:"max"},void 0,e,t)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.tags)||[]})}catch(e){var n;return null!==(n=void d.error("Error fetching revisions between IDs:",e))&&void 0!==n?n:[]}}async getPagesContent(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"content",rvslots:"*",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=(null===(i=t.revisions)||void 0===i||null===(i=i[0])||void 0===i||null===(i=i.slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content)||""}return r}catch(e){var a;return null!==(a=void d.error("Error fetching pages content:",e))&&void 0!==a?a:{}}}async getRevisionsContent(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|content",rvslots:"*",revids:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s;for(const e of t.revisions||[]){var i;r[e.revid]=(null===(i=e.slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content)||""}}return r}catch(e){var a;return null!==(a=void d.error("Error fetching revisions content:",e))&&void 0!==a?a:{}}}async getLatestIds(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=(null===(i=t.revisions)||void 0===i||null===(i=i[0])||void 0===i?void 0:i.revid)||null}return r}catch(e){var a;return null!==(a=void d.error("Error fetching latest IDs:",e))&&void 0!==a?a:{}}}async getRevisionsBetween(e,t,n,s,i){try{return(await this.continuous({action:"query",prop:"revisions",titles:e,rvstartid:n,rvendid:t,rvprop:"title|ids|flags|user|timestamp|comment|parsedcomment|size|tags",rvlimit:"max"},void 0,s,i)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions)||[]})}catch(e){var a;return null!==(a=void d.error("Error fetching revisions between IDs:",e))&&void 0!==a?a:[]}}async getEditCounts(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",list:"users",usprop:"editcount",ususers:p.join(e)},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.users)||[]){var s;a[t.name]=t.editcount}return a}catch(e){var i;return null!==(i=void d.error("Error fetching edit counts:",e))&&void 0!==i?i:{}}}async areUsersBlocked(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",list:"blocks",bkusers:p.join(e),bkprop:"id|user|by|reason|expiry|flags"},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.blocks)||[]){var s;a[t.user]=t}return a}catch(e){var i;return null!==(i=void d.error("Error fetching blocked users:",e))&&void 0!==i?i:{}}}async isUserGloballyLocked(e,t,n){try{var s;return!0===(null===(s=(await this.post({action:"query",meta:"globaluserinfo",guiuser:e},t,n)).query)||void 0===s||null===(s=s.globaluserinfo)||void 0===s?void 0:s.locked)}catch(e){var i;return null!==(i=void d.error("Error checking if user is globally locked:",e))&&void 0!==i&&i}}async getContributions(e,t=10,n,s){try{var i;return(null===(i=(await this.post({action:"query",list:"usercontribs",ucuser:e,uclimit:t,ucprop:"ids|title|timestamp|comment|parsedcomment|flags|tags|sizediff|flags"},n,s)).query)||void 0===i?void 0:i.usercontribs)||[]}catch(e){var a;return null!==(a=void d.error("Error fetching contributions:",e))&&void 0!==a?a:[]}}async getBlocks(e,t,n){try{return(await this.continuous({action:"query",list:"logevents",letype:"block",letitle:`User:${e}`,leaction:"block/block",lelimit:"max",leprop:"id|timestamp|details|user|comment|parsedcomment"},void 0,t,n)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.logevents)||[]})}catch(e){var s;return null!==(s=void d.error("Error fetching blocks:",e))&&void 0!==s?s:[]}}async pagesExist(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"content",rvslots:"*",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=t.missing||null===(i=t.revisions)||void 0===i||null===(i=i[0].slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content}return r}catch(e){var a;return null!==(a=void d.error("Error checking page existence:",e))&&void 0!==a?a:[]}}async getPagesDetails(e,t,n){e=p.paramify(e);try{const o=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.continuous({action:"query",prop:"info|categories|templates",titles:p.join(e),inprop:"protection|watched",cllimit:"max",tllimit:"max",tlnamespace:"10"},void 0,t,n))),l={};for(const e of o)if("fulfilled"===e.status)for(const t of e.value.responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.pages)||[]})){var s,i,a,r;null!==(i=l[s=t.title])&&void 0!==i||(l[s]={protection:null,watched:!1,categories:[],metadata:[]});let e=(null===(a=l[t.title])||void 0===a||null===(a=a.protection)||void 0===a?void 0:a.level)||null;for(const n of t.protection||[])"edit"===n.type&&("sysop"===n.level||"sysop"===e?e="sysop":"autoconfirmed"===n.level||"autoconfirmed"===e?e="autoconfirmed":"extendedconfirmed"!==n.level&&"extendedconfirmed"!==e||(e="extendedconfirmed"));const n=[];for(const e of t.templates||[]){const t=e.title.replace(/^Template:/i,"");t.match(/^use\s/i)&&n.push(t)}l[t.title]={protection:null===e?{protected:!1}:{protected:!0,level:e},watched:!0===t.watched||l[t.title].watched,categories:l[t.title].categories.concat((null===(r=t.categories)||void 0===r?void 0:r.map(e=>e.title))||[]),metadata:l[t.title].metadata.concat(n)}}return l}catch(e){var o;return null!==(o=void d.error("Error fetching page details:",e))&&void 0!==o?o:{}}}async getHistory(e,t=10,n,s){try{var i;const a=null===(i=(await this.post({action:"query",prop:"revisions",titles:e,rvlimit:t+1,rvprop:"ids|user|timestamp|comment|parsedcomment|flags|tags|size|flags"},n,s)).query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];if(null==a||!a.revisions)return[];const r=a.revisions.length,o=Math.min(t,r||0);for(let e=0;e<o;e++){const t=a.revisions[e];t.ns=a.ns,t.pageid=a.pageid,t.title=a.title,t.sizediff=e+1<r?t.size-a.revisions[e+1].size:t.size}return a.revisions.slice(0,o)}catch(e){var a;return null!==(a=void d.error("Error fetching page history:",e))&&void 0!==a?a:[]}}async countPageReverts(e,t,n,i){const a=e=>"mw-undo"===e||"mw-rollback"===e||"mw-manual-revert"===e;try{const o=await this.continuous({action:"query",prop:"revisions",titles:e,rvdir:"newer",rvstart:(0,s.convertToUTCString)(new Date(Date.now()-864e5)),rvprop:"tags",rvuser:t,rvlimit:"max"},void 0,n,i);let l=0;for(const e of o.responses){var r;l+=(null===(r=e.query)||void 0===r||null===(r=r.pages)||void 0===r||null===(r=r[0])||void 0===r||null===(r=r.revisions)||void 0===r?void 0:r.filter(e=>e.tags.some(a)).length)||0}return l}catch(e){var o;return null!==(o=void d.error("Error counting page reverts:",e))&&void 0!==o?o:0}}async getORES(e,t,n,s){e=p.paramify(e);try{const a={};e=e.filter(e=>{var t;const n=this.cache.ores.get(e);return!n||null!==(t=void(a[e]=n))&&void 0!==t&&t});const r=p.chunk(e,50),l=await Promise.allSettled(r.map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|oresscores",rvslots:"*",revids:p.join(e)},n,s)));for(const e of l)if("fulfilled"===e.status)for(const t of(null===(i=e.value.query)||void 0===i?void 0:i.pages)||[]){var i;for(const e of t.revisions||[])a[e.revid]=e.oresscores||{}}return o.ORES.extract(a,t)}catch(e){var a;return null!==(a=void d.error("Error fetching ORES scores:",e))&&void 0!==a?a:{}}}async extractORES(e,t=.5){return o.ORES.extract(e,t)}async getDiff(e,t,n="table",s,i){null!=e||(e=!1);const a=`${n}@${e}-${t}`;if(this.cache.diff.has(a))return this.cache.diff.get(a);try{var r;const o={action:"compare",prop:"diff",difftype:n,torev:t};0==e?(o.fromslots="main",o["fromtext-main"]=""):o.fromrev=e;const l=(null===(r=(await this.post(o,s,i)).compare)||void 0===r?void 0:r.body)||"";return this.cache.diff.set(a,l),l}catch(e){var o;return null!==(o=void d.error("Error fetching diff:",e))&&void 0!==o?o:""}}async getWikitextDiff(e,t,n="table",s,i){null!=e||(e=!1);try{var a;return(null===(a=(await this.post({action:"compare",prop:"diff",difftype:n,fromslots:"main","fromtext-main":!1===e?"":e,toslots:"main","totext-main":t},s,i)).compare)||void 0===a?void 0:a.body)||""}catch(e){var r;return null!==(r=void d.error("Error fetching wikitext diff:",e))&&void 0!==r?r:""}}async getSizeDiff(e,t,n,s){try{var i;const a=await(null===(i=this.post({action:"query",prop:"revisions",rvprop:"size",revids:`${e}|${t}`},n,s).query)||void 0===i||null===(i=i.pages)||void 0===i||null===(i=i[0])||void 0===i?void 0:i.revisions)||[];return 0===a.length?0:1===a.length?a[0].size:a[1].size-a[0].size}catch(e){var a;return null!==(a=void d.error("Error fetching size diff:",e))&&void 0!==a?a:0}}async getRevision(e,t,n,s){try{var i,a,r;const o=null===(i=(await this.post({action:"query",prop:"revisions",titles:e,rvprop:"ids|user|comment|parsedcomment|timestamp|size|tags|flags",rvslots:"*",rvstartid:t,rvlimit:2},n,s)).query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];if(null==o||null===(a=o.revisions)||void 0===a||!a.length)return{};const l=o.revisions[0];return{revid:l.revid,parentid:l.parentid,user:l.user,parsedcomment:l.parsedcomment,comment:l.comment,timestamp:l.timestamp,size:l.size,oldlen:(null===(r=o.revisions[1])||void 0===r?void 0:r.size)||0,minor:l.minor||!1,tags:l.tags||[]}}catch(e){var o;return null!==(o=void d.error("Error fetching revision:",e))&&void 0!==o?o:{}}}async getRevisions(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|user|comment|parsedcomment|timestamp|size|tags|flags|oresscores",rvslots:"*",revids:p.join(e)},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s;for(const e of t.revisions||[])a[e.revid]=e}return a}catch(e){var i;return null!==(i=void d.error("Error fetching revisions:",e))&&void 0!==i?i:{}}}async getConsecutiveEdits(e,t,n,s,i){try{var a,r;const o=await this.continuous({action:"query",prop:"revisions",titles:e,rvprop:"ids|timestamp|user|size|parsedcomment",rvlimit:"max",rvstartid:t},e=>{var t;return null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions.some(e=>e.user!==n)},s,i),l=o.responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions)||[]});let d,c;const u=l[0];if((null==u?void 0:u.user)!==n)return{count:0,sizediff:0,timestamp:{new:null,old:null},diff:null,edits:[]};const p={count:0,sizediff:0,timestamp:{new:null,old:null},diff:null,edits:[]},g=l.length;for(let e=0;e<g;e++){const t=l[e];if(c=t,t.user!==n)break;p.edits.push(t),d=t,p.count++,p.sizediff+=e+1<g?t.size-l[e+1].size||0:t.size||0}return p.timestamp.new=(null==u?void 0:u.timestamp)||null,p.timestamp.old=(null===(a=d)||void 0===a?void 0:a.timestamp)||null,o.stopped?p.diff=await this.getDiff((null===(r=c)||void 0===r?void 0:r.revid)||null,u.revid,"table",s,i):p.diff=await this.getDiff(null,u.revid,"table",s,i),p}catch(e){return d.error("Get consecutive edits error:",e),{count:0,sizediff:0,timestamp:{new:null,old:null},diff:null}}}async parseUsers(e,t,n,s){e=p.paramify(e);const i=Array.from({length:e.length},()=>({user:{}}));try{const a=[];return a.push(this.getEditCounts(e,n,s).then(t=>{e.forEach((e,n)=>i[n].user.edits=t[e]||0)}),this.areUsersBlocked(e,n,s).then(t=>{e.forEach((e,n)=>i[n].user.blocked=t[e]||null)}),this.pagesExist(e.map(e=>`User talk:${e}`),n,s).then(t=>{e.forEach((e,n)=>i[n].user.talk=t[`User talk:${e}`])})),t||a.push((async()=>{await Promise.all(e.map(async(e,t)=>{[i[t].user.contributions,i[t].user.blocks]=await Promise.all([this.getContributions(e,void 0,n,s),this.getBlocks(e,n,s)])}))})()),await Promise.all(a),i}catch(e){var a;return null!==(a=void d.error("Parse user error:",e))&&void 0!==a?a:i}}async parseEdits(e,t,n,s,i){e=p.paramify(e);const a=p.paramify(e.map(e=>e.item.user)),r=p.paramify(e.map(e=>e.item.revid)),o=p.paramify(e.map(e=>e.item.title)),l=e.map(({item:e,prior:t})=>({item:e,prior:t,data:{user:{},page:{},edit:{}}}));try{const d=[];return d.push(this.parseUsers(a,t,s,i).then(t=>{e.forEach((e,n)=>{const s=a.indexOf(e.item.user);l[n].data.user=t[s].user})}),this.getPagesDetails(o,s,i).then(t=>{e.forEach((e,n)=>{var s,i,a,r;l[n].data.page.protection=(null===(s=t[e.item.title])||void 0===s?void 0:s.protection)||{protected:!1},l[n].data.page.watched=(null===(i=t[e.item.title])||void 0===i?void 0:i.watched)||!1,l[n].data.page.categories=(null===(a=t[e.item.title])||void 0===a?void 0:a.categories)||[],l[n].data.page.metadata=(null===(r=t[e.item.title])||void 0===r?void 0:r.metadata)||[]})}),this.getORES(r,n,s,i).then(t=>{e.forEach((e,n)=>{l[n].data.edit.ores=t[e.item.revid]||0})})),t||d.push((async()=>{await Promise.all(e.map(async(e,t)=>{[l[t].data.page.consecutive,l[t].data.page.reverts,l[t].data.page.history,l[t].data.edit.diff]=await Promise.all([this.getConsecutiveEdits(e.item.title,e.item.revid,e.item.user,s,i),this.countPageReverts(e.item.title,this.username,s,i),this.getHistory(e.item.title,void 0,s,i),this.getDiff(e.prior||null,e.item.revid,"table",s,i)])}))})()),await Promise.all(d),l}catch(e){var c;return null!==(c=void d.error("Parse edit error:",e))&&void 0!==c?c:l}}async parseAbuselogs(e,t,n,s){e=p.paramify(e);const i=p.paramify(e.map(e=>e.user)),a=p.paramify(e.map(e=>e.title)),r=e.map(e=>({item:e,data:{user:{},page:{},edit:{}}}));try{const o=[];return o.push((async()=>{await Promise.all(e.map(async(e,t)=>{[r[t].data.parsedcomment]=await Promise.all([this.parse(e.comment,void 0,!1,!0,n,s)])}))})(),this.parseUsers(i,t,n,s).then(t=>{e.forEach((e,n)=>{const s=i.indexOf(e.user);r[n].data.user=t[s].user})}),this.getPagesDetails(a,n,s).then(t=>{e.forEach((e,n)=>{var s,i,a,o;r[n].data.page.protection=(null===(s=t[e.title])||void 0===s?void 0:s.protection)||{protected:!1},r[n].data.page.watched=(null===(i=t[e.title])||void 0===i?void 0:i.watched)||!1,r[n].data.page.categories=(null===(a=t[e.title])||void 0===a?void 0:a.categories)||[],r[n].data.page.metadata=(null===(o=t[e.title])||void 0===o?void 0:o.metadata)||[]})})),t||o.push((async()=>{await Promise.all(e.map(async(e,t)=>{[r[t].data.page.reverts,r[t].data.page.history,r[t].data.edit.diff]=await Promise.all([this.countPageReverts(e.title,this.username,n,s),this.getHistory(e.title,void 0,n,s),e.diff?this.getWikitextDiff(e.diff.old,e.diff.new,"table",n,s):Promise.resolve(null)])}))})()),await Promise.all(o),r}catch(e){var o;return null!==(o=void d.error("Parse abuselog error:",e))&&void 0!==o?o:r}}async getAbuseLogRevid(e,t,n){try{var s,i;return(null===(i=((null===(s=(await this.post({action:"query",list:"abuselog",afllogids:e,aflprop:"ids|revid"},t,n)).query)||void 0===s?void 0:s.abuselog)||[]).find(t=>t.id===e))||void 0===i?void 0:i.revid)||null}catch(e){var a;return null!==(a=void d.error("Error fetching abuse log revids:",e))&&void 0!==a?a:{}}}async feeds(e=null,t=null,n=null,s=null,i=null){[e,t,n,s,i]=[e,t,n,s,i].map(e=>"object"==typeof e?e:{});try{const a={action:"query",list:[]};null!==e&&(a.list.push("recentchanges"),a.rctype="edit",a.rcprop="title|ids|sizes|flags|user|timestamp|comment|parsedcomment|tags|oresscores",a.rcshow="!bot",a.rcnamespace=e.ns||"*",e.since&&(a.rcstart=e.since),a.rcdir=e.since?"newer":"older",a.rclimit="max"),null!==t&&u.has(this.server)&&(a.list.push("oldreviewedpages"),a.ornamespace=t.ns||"*",a.orlimit="max"),null!==n&&(a.list.push("logevents"),a.letype="newusers",a.wlprop="ids|title|type|user|timestamp|comment|details|parsedcomment",n.since&&(a.lestart=n.since),a.ledir=n.since?"newer":"older",a.lelimit="max"),null!==s&&(a.list.push("watchlist"),a.wltype="edit",a.wlprop="title|ids|sizes|flags|user|timestamp|comment|tags|oresscores|parsedcomment",a.wlexcludeuser=this.username,a.wlnamespace=s.ns||"*",s.since&&(a.wlstart=s.since),a.wldir=s.since?"newer":"older",a.wllimit="max"),null!==i&&(a.list.push("abuselog"),a.aflnamespace=i.ns||"*",i.since&&(a.aflstart=i.since),a.afldir=i.since?"newer":"older",a.aflprop="ids|user|title|action|result|timestamp|hidden|revid|filter|details",a.afllimit="max"),a.list=p.join(a.list);const r={recent:[],pending:[],users:[],watchlist:[],abuselog:[]};if((await this.continuous(a)).responses.forEach(e=>{const t=e.query||{};t.recentchanges&&(r.recent=r.recent.concat(t.recentchanges)),t.oldreviewedpages&&(r.pending=r.pending.concat(t.oldreviewedpages)),t.logevents&&(r.users=r.users.concat(t.logevents.filter(e=>!e.temp))),t.watchlist&&(r.watchlist=r.watchlist.concat(t.watchlist)),t.abuselog&&(r.abuselog=r.abuselog.concat(t.abuselog))}),r.pending=r.pending.slice(0,10),r.pending.length>0){const e=new Map,n={};if(await Promise.allSettled(r.pending.map(async t=>{var s,i,a;this.cache.pending.has(t.revid)||this.cache.pending.set(t.revid,await this.post({action:"query",prop:"revisions",titles:t.title,rvstartid:t.revid,rvlimit:1,rvprop:"ids|flags|user|timestamp|comment|parsedcomment|size|tags"}));const r=this.cache.pending.get(t.revid);e.has(t.title)||e.set(t.title,this.post({action:"query",list:"logevents",letype:"stable",leprop:"ids|title|type|user|timestamp|comment|details|parsedcomment",letitle:t.title,lelimit:1})),t.stability=(null===(s=await e.get(t.title))||void 0===s||null===(s=s.query)||void 0===s||null===(s=s.logevents)||void 0===s?void 0:s[0])||{};const o=null===(i=r.query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];n[t.title]={title:t.title,sizediff:t.diff_size,...null===(a=o.revisions)||void 0===a?void 0:a[0],pending:t}})),r.pending=Object.values(n),!0===t.full){const e={};await Promise.allSettled(r.pending.map(async t=>{const n=await this.getRevisionsBetween(t.title,t.pending.stable_revid,t.revid);if(n.length<2)return;const s=n.pop();e[t.title]={count:n.length,users:n.reduce((e,t)=>(t.user in e?e[t.user]++:e[t.user]=1,e),{}),edits:n,revid:t.revid,prior:s.revid,sizediff:t.size-s.size,timestamp:{new:t.timestamp,old:n[n.length-1].timestamp},pending:t.pending}})),r.pending=e}}if(r.abuselog.length>0){const e={};r.abuselog.forEach(t=>{if("edit"!==t.action)return;const n=`${t.user}|${t.title}|${t.timestamp}`;n in e?e[n].push(t):e[n]=[t]});const t=[];await Promise.allSettled(Object.entries(e).map(async([,e])=>{var n,s,i,a,r;const o=e[e.length-1],l=new Set(e.flatMap(e=>e.result.split(","))),d=e.find(e=>""!==e.revid&&void 0!==e.revid),c=e.find(e=>Object.keys(e.details).length);t.push({id:o.id,revision:void 0!==d,private:!c,result:l,action:o.action,revid:null!==(n=null==d?void 0:d.revid)&&void 0!==n?n:null,diff:c.details?{new:c.details.new_wikitext,old:c.details.old_wikitext,size:c.details.edit_delta}:null,timestamp:o.timestamp,comment:null!==(s=null==c||null===(i=c.details)||void 0===i?void 0:i.summary)&&void 0!==s?s:null,user:o.user,editcount:null!==(a=null==c||null===(r=c.details)||void 0===r?void 0:r.user_editcount)&&void 0!==a?a:null,ns:o.ns,title:o.title,entries:e})})),r.abuselog=t}return r}catch(e){return d.error("Feeds error:",e),{recent:[],pending:t.full?{}:[],users:[],watchlist:[],abuselog:[]}}}}var g,h,m;t.MediaWikiAPI=p,g=p,m={},(h=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(h="cache"))in g?Object.defineProperty(g,h,{value:m,enumerable:!0,configurable:!0,writable:!0}):g[h]=m},2486(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.build=async function(){document.head.querySelectorAll("link[rel=icon]").forEach(e=>e.remove()),document.head.querySelectorAll("link[rel=stylesheet]").forEach(e=>e.remove()),document.head.querySelectorAll("style").forEach(e=>e.remove());const e=(new DOMParser).parseFromString(s.default,"text/html");document.title=e.title,e.head.querySelectorAll("link[rel=stylesheet]").forEach(e=>{document.head.appendChild(Object.assign(document.createElement("link"),{rel:"stylesheet",href:e.href}))}),e.head.querySelectorAll("link[rel=icon]").forEach(e=>{document.head.appendChild(Object.assign(document.createElement("link"),{rel:"icon",href:e.href}))});[i.default,a.default].filter(Boolean).forEach(e=>{const t=document.createElement("style");t.textContent=e,document.head.appendChild(t)});document.body.innerHTML=e.body.innerHTML,await new Promise(requestAnimationFrame),document.querySelectorAll("[data-electron]").forEach(e=>{"false"===e.dataset.electron&&window.isElectron?e.style.display="none":"true"!==e.dataset.electron||window.isElectron||(e.style.display="none")})};var s=r(n(5540)),i=r(n(4279)),a=r(n(2459));function r(e){return e&&e.__esModule?e:{default:e}}},4112(e,t){function n(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function s(e,t){return e.get(a(e,t))}function i(e,t,n){return e.set(a(e,t),n),n}function a(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.MediaWikiOAuth2=void 0;var r=new WeakMap,o=new WeakMap;class l{constructor(e){n(this,r,void 0),n(this,o,0),i(r,this,Date.now()),this.delay=e,this.last=0}get count(){return s(o,this)}per(e=1){return Math.floor(s(o,this)/((Date.now()-s(r,this))/e))||0}call(e,t=!1){var n;i(o,this,(n=s(o,this),n++,n));const a=Date.now(),r=Math.max(0,this.last+this.delay-a);return this.last=a+r,t||0===r?e():new Promise(t=>setTimeout(async()=>t(await e()),r))}}t.MediaWikiOAuth2=class{constructor(e){this.userAgent=e,this.throttle=new l(0),this.api=new mw.Api}getOrigin(e){const t=`${location.protocol}//${location.host}`;try{const n=new URL(e);if(`${n.protocol}//${n.host}`===t)return}catch(e){}return t}async fetch(e,t={},n=null,s="POST",i){return await this.throttle.call(async()=>{const n=this.getOrigin(e);return n&&(e+=(e.includes("?")?"&":"?")+`origin=${encodeURIComponent(n)}`),await this.api.ajax({...t,origin:n},{url:e,method:s,...n?{xhrFields:{withCredentials:!0}}:{}}).catch(e=>{throw console.error(`[WikiShield] Failed to parse "OAuth2" response (rpm: ${this.throttle.per(6e4)}):`,e),e})},i)}}},505(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ORES=void 0;t.ORES=class{static extract(e,t=.5){const n=[{key:"goodfaith",field:"false",bias:t},{key:"damaging",field:"true",bias:1-t}],s={};for(const[t,r]of Object.entries(e)){const e=[];for(const t of n){var i,a;const n=r[t.key];if(!n)continue;let s=null!==(i=null===(a=n.probability)||void 0===a?void 0:a[t.field])&&void 0!==i?i:n[t.field];void 0===s&&void 0!==n.prediction&&(s=+n.prediction),void 0===s||isNaN(s)||e.push(s*(t.bias||0))}s[t]=0===e.length?NaN:e.reduce((e,t)=>e+t,0)/e.length}return s}}},8582(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.__servers__=void 0;t.__servers__=[{name:"English",host:"en.wikipedia.org",language_code:"en",tag:!0,pending_changes:!0},{name:"seperator"},{name:"Test",host:"test2.wikipedia.org",language_code:"en",tag:!1,pending_changes:!0}]},2535(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.API=void 0;var s=n(4551),i=n(8878),a=n(4112);function r(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function o(e,t,n){return e.set(d(e,t),n),n}function l(e,t){return e.get(d(e,t))}function d(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}const c=new Set([]);let u=t.API=void 0;var p,g,h,m;window.isElectron?t.API=(p=new WeakMap,g=new WeakMap,h=new WeakMap,u=class{static chunk(e,t=50){const n=[],s=e.length;for(let i=0;i<s;i+=t)n.push(e.slice(i,i+t));return n}static paramify(e){return Array.isArray(e)||(e=[e]),[...new Set(e)].filter(e=>"string"==typeof e&&e.trim())}get username(){return l(h,this)}get hasPendingChanges(){return c.has(l(g,this))}constructor(e,t,n,s){r(this,p,null),r(this,g,null),r(this,h,null),o(p,this,e),o(g,this,t),o(h,this,n);for(const e of s)c.add(e)}build(e={}){return{assertuser:l(h,this),discussiontoolsautosubscribe:"no",...e}}summary(e,t){const n=" ([[:en:WP:WikiShield|WS]])",i=`${e}${t?`: ${t}`:""}`;return`${(0,s.truncate)(i,473)}${n}`}user(e){return`[[Special:Contribs/${e}|${e}]] ([[User talk:${e}|talk]])`}revision(e){return`[[Special:Diff/${e}|${e}]]`}centralAuthUser(e){return`[[Special:CentralAuth/${e}|${e}]]`}async post(e,t,n){try{return await electron.mwapi("post",e,t,n)}catch(e){var s;if("assertnameduserfailed"===e||null!==(s=e.message)&&void 0!==s&&s.includes("assertnameduserfailed"))return l(p,this).disable("Invalid account","Your account was logged out or changed.");throw e}}async continuous(e,t,n,s){try{let i=null;const a=[];do{const r=await this.post({...e,...i||{}},n,s);if(a.push(r),i=r.continue||null,"function"==typeof t&&!0===await t(r,a)){i=!0;break}}while(i);return{stopped:null!==i,responses:a}}catch(e){return console.error("Continuous error:",e),{stopped:!0,responses:[]}}}async getToken(e="csrf",t,n){return await electron.mwapi("getToken",e,t,n)}async postWithToken(e,t="csrf",n,s){return await electron.mwapi("postWithToken",e,t,n,s)}async account(e,t){return await electron.mwapi("account",e,t)}async getGlobalUserInfo(e,t,n){return await electron.mwapi("getGlobalUserInfo",e,t,n)}async markWatchlistSeen(e,t,n,s){return await electron.mwapi("markWatchlistSeen",e,t,n,s)}async append(e,t,n,s,i,a,r){if("function"==typeof i){const o=await electron.mwapi("append",e,t,n,s,!0,a,r);if(o.needsCheck){const l=await i(o.text);return l.valid?await electron.mwapi("append",e,t,n,s,void 0,a,r):{valid:!1,reason:l.reason||"Append check failed."}}return o}return await electron.mwapi("append",e,t,n,s,void 0,a,r)}async editSection(e,t,n,s,i,a,r,o){if("function"==typeof a){const l=await electron.mwapi("editSection",e,t,n,s,i,!0,r,o);if(l.needsCheck){const d=await a(l.text);return d.valid?await electron.mwapi("editSection",e,t,n,s,i,void 0,r,o):{valid:!1,reason:d.reason||"Edit section check failed."}}return l}return await electron.mwapi("editSection",e,t,n,s,i,void 0,r,o)}async acceptPendingEdit(e,t,n,s){return await electron.mwapi("acceptPendingEdit",e,t,n,s)}async rejectPendingEdit(e,t,n,s,i,a){return await electron.mwapi("rejectPendingEdit",e,t,n,s,i,a)}async rollbackEdit(e,t,n,s,i){return await electron.mwapi("rollbackEdit",e,t,n,s,i)}async undoEdit(e,t,n,s,i){return await electron.mwapi("undoEdit",e,t,n,s,i)}async restoreEdit(e,t,n,s,i){return await electron.mwapi("restoreEdit",e,t,n,s,i)}async thankRevision(e,t,n){return await electron.mwapi("thankRevision",e,t,n)}async watchPage(e,t,n,s){return await electron.mwapi("watchPage",e,t,n,s)}async unwatchPage(e,t,n){return await electron.mwapi("unwatchPage",e,t,n)}async parse(e,t,n=!1,s,i){return await electron.mwapi("parse",e,t,n,s,i)}async getTags(e,t){return await electron.mwapi("getTags",e,t)}async getPagesContent(e,t,n){return await electron.mwapi("getPagesContent",e,t,n)}async getRevisionContent(e,t,n){return await electron.mwapi("getRevisionContent",e,t,n)}async getLatestIds(e,t,n){return await electron.mwapi("getLatestIds",e,t,n)}async getEditCounts(e,t,n){return await electron.mwapi("getEditCounts",e,t,n)}async areUsersBlocked(e,t,n){return await electron.mwapi("areUsersBlocked",e,t,n)}async isUserGloballyLocked(e,t,n){return await electron.mwapi("isUserGloballyLocked",e,t,n)}async getContributions(e,t,n,s){return await electron.mwapi("getContributions",e,t,n,s)}async getBlocks(e,t,n){return await electron.mwapi("getBlocks",e,t,n)}async pagesExist(e,t,n){return await electron.mwapi("pagesExist",e,t,n)}async getPagesDetails(e,t,n){return await electron.mwapi("getPagesDetails",e,t,n)}async countPageReverts(e,t,n,s){return await electron.mwapi("countPageReverts",e,t,n,s)}async getHistory(e,t,n,s){return await electron.mwapi("getHistory",e,t,n,s)}async getORES(e,t,n,s){return await electron.mwapi("getORES",e,t,n,s)}async extractORES(e,t){return await electron.mwapi("extractORES",e,t)}async getDiff(e,t,n,s,i){return await electron.mwapi("getDiff",e,t,n,s,i)}async getRevision(e,t,n,s){return await electron.mwapi("getRevision",e,t,n,s)}async getRevisionsBetween(e,t,n,s,i){return await electron.mwapi("getRevisionsBetween",e,t,n,s,i)}async parseUsers(e,t,n,s){return await electron.mwapi("parseUsers",e,t,n,s)}async parseEdits(e,t,n,s,i){return await electron.mwapi("parseEdits",e,t,n,s,i)}async parseAbuselogs(e,t,n,s){return await electron.mwapi("parseAbuselogs",e,t,n,s)}async getConsecutiveEdits(e,t,n,s,i){return await electron.mwapi("getConsecutiveEdits",e,t,n,s,i)}async getAbuseLogRevid(e,t,n){return await electron.mwapi("getAbuseLogRevid",e,t,n)}async feeds(e,t,n,s,i){return await electron.mwapi("feeds",e,t,n,s,i)}}):t.API=(m=new WeakMap,u=class extends i.MediaWikiAPI{get hasPendingChanges(){return c.has(this.server)}constructor(e,t,n,s){super(e,new a.MediaWikiOAuth2(`WikiShield (${t}; ${n})`),t,n),r(this,m,null),o(m,this,e),this.server=t,this.username=n;for(const e of s)c.add(e)}})},691(e,t){function n(e,t,n){s(e,t),t.set(e,n)}function s(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function i(e,t){return e.get(r(e,t))}function a(e,t,n){return e.set(r(e,t),n),n}function r(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Killswitch=void 0;var o=new WeakMap,l=new WeakMap,d=new WeakMap,c=new WeakSet;function u(e){if(i(d,this)[e])for(const n of i(d,this)[e])try{n.callback()}catch(e){}finally{var t;!0===(null===(t=n.options)||void 0===t?void 0:t.once)&&(i(d,this)[e]=i(d,this)[e].filter(e=>e!==n))}return this}t.Killswitch=class{constructor(e){var t,i;s(t=this,i=c),i.add(t),n(this,o,null),n(this,l,null),n(this,d,{okay:[],unsafe:[],update:[],"force-update":[],kill:[]}),a(o,this,e.api)}on(e,t,n={}){return i(d,this)[e]&&i(d,this)[e].push({callback:t,options:n}),this}async check(){try{var e,t,n,s,a,l,d;const m=null!==(e=null===(t=await i(o,this).getPagesContent([p._],!0,"en.wikipedia.org"))||void 0===t?void 0:t[p._])&&void 0!==e?e:"",v=null===(n=JSON.parse(m))||void 0===n?void 0:n.WikiShield;if(!v)throw new Error("No killswitch found");if(v.disabled)return r(c,this,u).call(this,"kill");const f=null!==(s=null===(a=v.reload)||void 0===a?void 0:a.soft)&&void 0!==s?s:0;return(null!==(l=null===(d=v.reload)||void 0===d?void 0:d.hard)&&void 0!==l?l:0)>h._?r(c,this,u).call(this,"force-update"):f>g._?(g._=f,r(c,this,u).call(this,"update")):r(c,this,u).call(this,"okay")}catch(e){return r(c,this,u).call(this,"unsafe")}}monitor(e=1e4){return i(l,this)&&clearInterval(i(l,this)),a(l,this,setInterval(()=>this.check(),+e)),this}};var p={_:"User:LuniZunie/JSON/Killswitch.json"},g={_:11},h={_:1}}},t={};function n(s){var i=t[s];if(void 0!==i)return i.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}var s=n(8816),i=n(2486);{var a;function r(){(0,i.build)().then(()=>{(0,s.run)(),window.onpopstate=e=>{var t;"WikiShield"!==(null===(t=e.state)||void 0===t?void 0:t.page)&&(window.location.reload(),window.onpopstate=null)}}).catch(e=>{console.error("[WikiShield] Error during build:",e),alert("An error occurred while starting WikiShield. Please check the console for details.")})}const o=mw.util.addPortletLink("p-personal",mw.util.getUrl("Wikipedia:WikiShield/run"),"WikiShield","pt-wikishield","WikiShield",void 0,"#pt-preferences");if(o){const l=o.querySelector(":scope > a > span");l&&(l.innerHTML="WS",l.style.fontWeight="bold",l.style.color="var(--color-base, #202122)",l.style.maskImage="none",l.style.webkitMaskImage="none",l.style.background="transparent",l.style.height="auto"),"true"!==electron.localStorage.get("WikiShield:OpenExternally")&&o.addEventListener("click",e=>{e.ctrlKey||e.metaKey||e.shiftKey||e.altKey||(e.preventDefault(),history.pushState({page:"WikiShield"},"",location.href),r())})}switch(addEventListener("popstate",e=>{var t;"WikiShield"===(null===(t=e.state)||void 0===t?void 0:t.page)&&r()}),null===(a=history.state)||void 0===a?void 0:a.page){case"WikiShield":history.replaceState(null,"",location.href);break;case"WikiShield-reload":history.replaceState({page:"WikiShield"},"",location.href),r()}"Wikipedia:WikiShield/run"===mw.config.get("wgRelevantPageName")&&"view"===mw.config.get("wgAction")&&(history.pushState({page:"WikiShield"},"",location.href),r())}}();/*</nowiki>*/
j1tukrus2ofxa7p6kyz38tqp0hsp0jp
619565
619547
2026-08-01T18:13:24Z
LuniZunie
25284
v2.0.10 test
619565
javascript
text/javascript
// Code is available at https://github.com/LuniZunie/WikiShield-App
/*<nowiki>*/!function(){"use strict";var e={4279(e){e.exports="@import url('https://fonts.googleapis.com/css2?family=Varela+Round&display=swap');\r\n\r\n:root {\r\n\t--max-z-index: 2147483647;\r\n\r\n --body-color: rgba(241, 245, 255, 1);\r\n --body-background: rgba(20, 20, 30, 1);\r\n\r\n font-family: 'Inter', sans-serif;\r\n \tfont-optical-sizing: auto;\r\n -webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n* {\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n::-webkit-scrollbar {\r\n\twidth: 10px;\r\n\theight: 10px;\r\n}\r\n\r\n::-webkit-scrollbar-track {\r\n\tbackground: transparent;\r\n}\r\n\r\n::-webkit-scrollbar-thumb {\r\n\tborder: 2px solid transparent;\r\n border-radius: 10px;\r\n\r\n\t/* Theme dependent */\r\n\tbackground: rgba(255, 255, 255, .1);\r\n\tbackground-clip: content-box;\r\n\r\n\t&:hover {\r\n\t\tborder: 2px solid transparent;\r\n\t\tborder-radius: 10px;\r\n\r\n\t\t/* Theme dependent */\r\n\t\tbackground: rgba(255, 255, 255, .2);\r\n\t\tbackground-clip: content-box;\r\n\t}\r\n}\r\n\r\nhtml, body {\r\n width: 100%;\r\n\theight: 100%;\r\n\r\n\toverflow: hidden;\r\n\r\n /* Theme dependent */\r\n background: linear-gradient(135deg,\r\n\t\trgba(20, 30, 48, 1),\r\n\t\trgba(36, 59, 85, 1)\r\n\t);\r\n}\r\n\r\n@keyframes loading-dots {\r\n\t0%, 100% {\r\n\t\tcontent: '';\r\n\t}\r\n\t25% {\r\n\t\tcontent: '.';\r\n\t}\r\n\t50% {\r\n\t\tcontent: '..';\r\n\t}\r\n\t75% {\r\n\t\tcontent: '...';\r\n\t}\r\n}\r\n\r\n.animate-loading-dots::after {\r\n\tcontent: '';\r\n\r\n\tdisplay: inline-block;\r\n\r\n\tanimation: loading-dots 1.5s steps(3, start) infinite;\r\n}"},5540(e){e.exports='<!DOCTYPE html>\r\n<html lang="en">\r\n <head>\r\n <meta charset="UTF-8">\r\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\r\n <meta http-equiv="Content-Security-Policy">\r\n\r\n <title>WikiShield</title>\r\n <link rel="icon" href="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" type="image/png">\r\n\r\n <link rel="stylesheet" href="https://fonts.cdnfonts.com/css/open-dyslexic">\r\n <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.0/css/all.min.css">\r\n\r\n <link rel="stylesheet" href="../common/style.css">\r\n <link rel="stylesheet" href="style.css">\r\n\r\n <script type="module" src="script.js"><\/script>\r\n </head>\r\n <body>\r\n <div id="loading">\r\n <img class="icon" src="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" alt="WikiShield Logo">\r\n </div>\r\n <div id="initial" class="hidden">\r\n\t\t\t<canvas id="dots-canvas"></canvas>\r\n\t\t\t<div id="welcome-container" class="shimmer shimmer-border">\r\n\t\t\t\t<div class="shield-container">\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="shield-icon">\r\n\t\t\t\t\t\t<img src="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" alt="WikiShield Logo">\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<h1>Welcome to <span id="wikishield-sikiwhield">WikiShield</span></h1>\r\n\t\t\t\t<div class="about-links">\r\n\t\t\t\t\t<a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="about-link">About</a>\r\n\t\t\t\t\t<a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia talk:WikiShield" target="_blank" class="about-link">Discuss</a>\r\n\t\t\t\t\t<span class="about-link">v<span class="VERSION"></span></span>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div id="rollback-needed" class="hidden">\r\n\t\t\t\t\t<p><span class="fa fa-exclamation-triangle"></span> You must have rollback or admin rights to use this script.</p>\r\n\t\t\t\t\t<p>You can apply for rollback rights <a rel="noopener" class="request-link" href="https://www.wikidata.org/wiki/Q7765871" target="_blank">here</a>.</p>\r\n\t\t\t\t</div>\r\n\t\t\t\t<button type="button" id="start-button">\r\n\t\t\t\t\tStart WikiShield <i class="fas fa-arrow-right"></i>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n <div id="app" class="hidden">\r\n <div id="container">\r\n <div id="queue">\r\n <div id="queue-top">\r\n <div id="queue-top-left" class="queue-button-cluster" data-zen-show="alerts,messages">\r\n <span class="fa fa-bell" id="alerts-icon" data-tooltip="Alerts" data-zen-show="alerts">\r\n <span id="alerts-count" class="icon-count hidden red" data-zen-show="badges"></span>\r\n </span>\r\n <span class="fa fa-inbox" id="messages-icon" data-tooltip="Messages" data-zen-show="messages">\r\n <span id="messages-count" class="icon-count hidden blue" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="DEFCON">\r\n <div class="dot"></div>\r\n <span><span class="DEFCON-RPM">0</span> RPM</span>\r\n </div>\r\n <div id="queue-top-right" class="queue-button-cluster">\r\n <span class="fa fa-envelope" id="email-button" data-tooltip="Email Emergency, ArbCom, or Oversight" data-multiple-hrefs="email" href></span>\r\n <span class="fa fa-gear" id="settings-icon" data-tooltip="Settings"></span>\r\n </div>\r\n </div>\r\n <div id="queue-tabs">\r\n <div id="queue-tab-recent" class="queue-tab selected" data-tooltip="Recent edits">\r\n <span class="fas fa-stopwatch">\r\n <span class="icon-count hidden gray" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-pending" class="queue-tab" data-tooltip="Pending edits">\r\n <span class="fas fa-flag">\r\n <span class="icon-count hidden orange" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-users" class="queue-tab" data-tooltip="User creation logs">\r\n <span class="fas fa-user">\r\n <span class="icon-count hidden green" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-watchlist" class="queue-tab" data-tooltip="Watchlist edits">\r\n <span class="fas fa-book-bookmark">\r\n <span class="icon-count hidden blue" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-abuselog" class="queue-tab" data-tooltip="Abuse logs">\r\n <span class="fas fa-filter-circle-xmark">\r\n <span class="icon-count hidden red" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n </div>\r\n <div id="queue-items" class="queue-list">\r\n <div class="queue-empty">\r\n No edits in queue.\r\n </div>\r\n </div>\r\n <div class="width-adjust" id="queue-width-adjust"></div>\r\n <div id="clear-queue">\r\n <span class="fa fa-trash"></span>\r\n </div>\r\n </div>\r\n <div id="alerts-panel" class="notification-panel">\r\n <div id="alerts-header" class="notification-header">\r\n <span>Alerts</span>\r\n <span id="mark-all-alerts-read" class="mark-all-read">Mark all as read</span>\r\n </div>\r\n <div id="alerts-list" class="notification-list"></div>\r\n </div>\r\n <div id="messages-panel" class="notification-panel">\r\n <div id="messages-header" class="notification-header">\r\n <span>Messages</span>\r\n <span id="mark-all-messages-read" class="mark-all-read">Mark all as read</span>\r\n </div>\r\n <div id="messages-list" class="notification-list"></div>\r\n </div>\r\n <div id="right-container">\r\n <div id="right-content">\r\n <div id="main-container">\r\n <div id="edit-details">\r\n <div class="central">Nothing selected</div>\r\n </div>\r\n <div id="previous-item-button" class="nav-item-button">\r\n <i class="fas fa-chevron-left"></i>\r\n </div>\r\n <div id="next-item-button" class="nav-item-button">\r\n <i class="fas fa-chevron-right"></i>\r\n </div>\r\n <div id="ai-analysis-container" class="hidden shimmer shimmer-border">\r\n <div class="header">\r\n <i class="fas fa-robot"></i>\r\n <span class="title">AI Analysis</span>\r\n <span class="assessment"></span>\r\n <span class="confidence"></span>\r\n </div>\r\n <div class="explanation"></div>\r\n <div class="issues"></div>\r\n </div>\r\n <div id="diff-scroll-up" class="diff-scroll-button hidden">\r\n <i class="fas fa-chevron-up"></i>\r\n </div>\r\n <div id="diff-container"></div>\r\n <div id="diff-scroll-down" class="diff-scroll-button hidden">\r\n <i class="fas fa-chevron-down"></i>\r\n </div>\r\n <div id="pending-changes-container" class="hidden">\r\n <div class="accept">Accept</div>\r\n <div class="reject">Reject</div>\r\n </div>\r\n <div id="progress-bar-container"></div>\r\n <div id="bottom-tools" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-item" data-menu="revert" data-queue-type="edit">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-undo"></i>\r\n <span>Revert</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="warn" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-exclamation-triangle"></i>\r\n <span>Warn</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="user" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-user"></i>\r\n <span>User</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="page" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-file-lines"></i>\r\n <span>Page</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="edit" data-queue-type="edit">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-pen-to-square"></i>\r\n <span>Edit</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div id="copy-link" data-tooltip="Copy link" data-queue-type="edit,logevent,abuselog">\r\n <div>\r\n <i class="fas fa-link"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div id="right-details">\r\n <div id="right-top">\r\n <div class="tabs">\r\n <div id="latest-edits-tab" class="tab hidden selected" data-tooltip="Latest edit">\r\n <i class="fas fa-user"></i>\r\n </div>\r\n <div id="consecutive-edits-tab" class="tab hidden" data-tooltip="Consecutive edits">\r\n <i class="fas fa-users"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="icons"></div>\r\n </div>\r\n\r\n <div id="user-contributions" class="section" data-queue-type="edit,logevent,abuselog">\r\n <div class="header">\r\n <div class="title"><i id="refresh-user-contributions" class="fas fa-rotate"></i> Contributions</div>\r\n <div class="pills">\r\n\r\n </div>\r\n </div>\r\n <div class="queue-list">\r\n\r\n </div>\r\n <div class="footer">\r\n <span>View all contributions</span>\r\n <i class="fas fa-arrow-right"></i>\r\n </div>\r\n </div>\r\n\r\n <div id="page-history" class="section" data-queue-type="edit,abuselog">\r\n <div class="header">\r\n <div class="title"><i id="refresh-page-history" class="fas fa-rotate"></i> Page History</div>\r\n <div class="pills">\r\n\r\n </div>\r\n </div>\r\n <div class="queue-list">\r\n\r\n </div>\r\n <div class="footer">\r\n <span>View full page history</span>\r\n <i class="fas fa-arrow-right"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="width-adjust" id="details-width-adjust"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-menu" id="revert-menu"></div>\r\n <div class="bottom-tool-menu" id="warn-menu"></div>\r\n <div class="bottom-tool-menu" id="user-menu">\r\n <div id="user-open-user-page" class="menu-option">\r\n <i class="fas fa-user-circle"></i>\r\n <span>Open user page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-open-user-talk" class="menu-option">\r\n <i class="fas fa-comments"></i>\r\n <span>Open user talk</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-view-contribs" class="menu-option">\r\n <i class="fas fa-list"></i>\r\n <span>View contributions</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-view-filter-log" class="menu-option">\r\n <i class="fas fa-filter"></i>\r\n <span>View filter log</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-whitelist" class="menu-option">\r\n <i class="fas fa-check"></i>\r\n <span>Whitelist user</span>\r\n </div>\r\n <div id="user-unwhitelist" class="menu-option hidden">\r\n <i class="fas fa-xmark"></i>\r\n <span>Unwhitelist user</span>\r\n </div>\r\n <div id="user-highlight" class="menu-option">\r\n <i class="fas fa-star"></i>\r\n <span>Highlight user</span>\r\n </div>\r\n <div id="user-unhighlight" class="menu-option hidden">\r\n <i class="fas fa-star"></i>\r\n <span>Unhighlight user</span>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-welcome" class="menu-option submenu-trigger">\r\n <i class="fas fa-paper-plane"></i>\r\n <span>Welcome</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-report-aiv" class="menu-option submenu-trigger">\r\n <i class="fas fa-flag"></i>\r\n <span>Report (AIV)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-report-uaa" class="menu-option submenu-trigger">\r\n <i class="fas fa-user-slash"></i>\r\n <span>Report (UAA)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-request-global-block" class="menu-option submenu-trigger">\r\n <i class="fas fa-ban"></i>\r\n <span>Request global block</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-request-global-lock" class="menu-option submenu-trigger">\r\n <i class="fas fa-lock"></i>\r\n <span>Request global lock</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-new-talk-topic" class="menu-option submenu-trigger">\r\n <i class="fas fa-envelope"></i>\r\n <span>Message user</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n <div class="bottom-tool-menu" id="page-menu">\r\n <div id="page-open-page" class="menu-option">\r\n <i class="fas fa-file"></i>\r\n <span>Open page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="page-open-talk" class="menu-option">\r\n <i class="fas fa-comments"></i>\r\n <span>Open talk page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="page-view-history" class="menu-option">\r\n <i class="fas fa-clock-rotate-left"></i>\r\n <span>View page history</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-watch" class="menu-option">\r\n <i class="fas fa-eye"></i>\r\n <span>Watch page</span>\r\n </div>\r\n <div id="page-unwatch" class="menu-option">\r\n <i class="fas fa-eye-slash"></i>\r\n <span>Unwatch page</span>\r\n </div>\r\n <div id="page-whitelist" class="menu-option">\r\n <i class="fas fa-check"></i>\r\n <span>Whitelist page</span>\r\n </div>\r\n <div id="page-unwhitelist" class="menu-option hidden">\r\n <i class="fas fa-xmark"></i>\r\n <span>Unwhitelist page</span>\r\n </div>\r\n <div id="page-highlight" class="menu-option">\r\n <i class="fas fa-star"></i>\r\n <span>Highlight page</span>\r\n </div>\r\n <div id="page-unhighlight" class="menu-option hidden">\r\n <i class="fas fa-star"></i>\r\n <span>Unhighlight page</span>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-request-protection" class="menu-option submenu-trigger">\r\n <i class="fas fa-shield-halved"></i>\r\n <span>Request protection</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-new-talk-topic" class="menu-option submenu-trigger">\r\n <i class="fas fa-envelope"></i>\r\n <span>New talk page topic</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n <div class="bottom-tool-menu" id="edit-menu">\r\n <div id="edit-view-revision" class="menu-option">\r\n <i class="fas fa-eye"></i>\r\n <span>View revision</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="edit-view-diff" class="menu-option">\r\n <i class="fas fa-code-compare"></i>\r\n <span>View diff</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="edit-thank-user" class="menu-option">\r\n <i class="fas fa-heart"></i>\r\n <span>Thank user</span>\r\n </div>\r\n <div id="edit-rollback" class="menu-option submenu-trigger">\r\n <i class="fas fa-rotate-left"></i>\r\n <span>Rollback</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="edit-rollback-goodfaith" class="menu-option submenu-trigger">\r\n <i class="fas fa-handshake"></i>\r\n <span>Rollback (good faith)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="edit-undo" class="menu-option submenu-trigger">\r\n <i class="fas fa-arrow-rotate-left"></i>\r\n <span>Undo</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n\r\n <div id="settings-container">\r\n <div class="settings">\r\n <div class="settings-left">\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>CORE</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-general-button">\r\n <span><i class="fas fa-gear"></i>General</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-audio-button">\r\n <span><i class="fas fa-volume-high"></i>Audio</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-controls-button">\r\n <span><i class="fas fa-keyboard"></i>Controls</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-zen-button">\r\n <span><i class="fas fa-spa"></i>Zen Mode</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>APPEARANCE</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-app-button">\r\n <span><i class="fas fa-palette"></i>App</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-queue-button">\r\n <span><i class="fas fa-list"></i>Queue</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-accessibility-button">\r\n <span><i class="fas fa-universal-access"></i>Accessibility</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>TOOLS</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-auto-reporting-button">\r\n <span><i class="fas fa-flag"></i>Auto Reporting</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-gadgets-button">\r\n <span><i class="fas fa-toolbox"></i>Gadgets</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-AI-button">\r\n <span><i class="fas fa-robot"></i>AI Analysis</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>WHITELIST</span>\r\n </div>\r\n <div class="settings-left-menu-compact">\r\n <div class="settings-left-menu-item" id="settings-whitelist-users-button">\r\n <i class="fas fa-user" title="Users"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-whitelist-pages-button">\r\n <i class="fas fa-file" title="Pages"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-whitelist-tags-button">\r\n <i class="fas fa-tag" title="Tags"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>HIGHLIGHT</span>\r\n </div>\r\n <div class="settings-left-menu-compact">\r\n <div class="settings-left-menu-item" id="settings-highlight-users-button">\r\n <i class="fas fa-user" title="Users"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-highlight-pages-button">\r\n <i class="fas fa-file" title="Pages"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-highlight-tags-button">\r\n <i class="fas fa-tag" title="Tags"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>DATA</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-statistics-button">\r\n <span><i class="fas fa-chart-area"></i>Statistics</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-save-button">\r\n <span><i class="fas fa-floppy-disk"></i>Save</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>WIKISHIELD</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-changelog-button">\r\n <span><i class="fas fa-file-alt"></i>Changelog</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-about-button">\r\n <span><i class="fas fa-info"></i>About</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="settings-right">\r\n <div class="general hidden">\r\n <div class="settings-section" data-electron="false">\r\n <div class="settings-section-title">Launch behavior</div>\r\n <div class="settings-section-desc">Choose whether WikiShield should open in the current tab or a new tab when launched.</div>\r\n <div id="settings-launch-behavior" class="settings-radio-group">\r\n <div class="settings-radio-option selected" data-value="current_page">Run on current page</div>\r\n <div class="settings-radio-option" data-value="new_page">Run on <a href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield/run">/Run</a> page</div>\r\n </div>\r\n </div>\r\n <div class="settings-compact-grid">\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Maximum edit count</div>\r\n <div class="settings-section-desc">Edits from users with more than this number of total edits will not be shown unless that user is highlighted.</div>\r\n <numeric-input id="settings-maximum-edit-count" step="5" min="0" value="50"></numeric-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Maximum queue size</div>\r\n <div class="settings-section-desc">Maximum number of edits to keep in the queue for review. Higher values may impact performance.</div>\r\n <numeric-input id="settings-maximum-queue-size" step="10" min="0" value="100"></numeric-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Minimum ORES score</div>\r\n <div class="settings-section-desc">Minimum ORES score required for an edit to appear in the recent changes queue.</div>\r\n <numeric-input id="settings-minimum-ores-score" step="0.05" min="0" max="1" value="0"></numeric-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">ORES bias</div>\r\n <div class="settings-section-desc">\r\n Select how ORES scores are calculated for edits in the recent changes queue. "Badfaith" is how likely an edit is to be made in bad faith, "Damaging" is how likely an edit is to be damaging.\r\n </div>\r\n <div id="settings-ores-bias" class="settings-slider">\r\n <div class="settings-slider-labels">\r\n <div class="settings-slider-label-left active">Badfaith<span class="percent">50%</span></div>\r\n <div class="settings-slider-label-right active">Damaging<span class="percent">50%</span></div>\r\n </div>\r\n <div class="settings-slider-track">\r\n <div class="settings-slider-thumb"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Watchlist expiry</div>\r\n <div class="settings-section-desc">Amount of time to leave warned user\'s talk pages on your watchlist.</div>\r\n <duration-input id="settings-watchlist-expiry"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Namespaces to monitor</div>\r\n <div class="settings-section-desc">Select which namespaces WikiShield should monitor for recent changes and pending changes.</div>\r\n <div id="settings-namespaces-container" class="checkbox-container">\r\n \x3c!-- Namespace checkboxes will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="audio hidden">\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-header">\r\n <span class="settings-section-header-icon">ORES</span>\r\n <span>ORES Alerts</span>\r\n </div>\r\n <div class="settings-section compact inline" id="sound-alert-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Sound alerts for high ORES scores</div>\r\n <div class="settings-section-desc">Play a sound when an edit above the threshold is added to the queue</div>\r\n </div>\r\n <toggle-input id="settings-ORES-alert-toggle" value="false"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="sound-alert-ores-score">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">ORES score threshold</div>\r\n <div class="settings-section-desc">Play a sound alert when an edit with an ORES score above this value is added</div>\r\n </div>\r\n <numeric-input id="settings-ORES-alert-threshold" step="0.05" min="0" max="1" value="0.9"></numeric-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Volume</div>\r\n <volume-control\r\n id="settings-master-volume"\r\n title="Master Volume"\r\n description="Controls the overall volume of all sounds"\r\n value="1"\r\n ></volume-control>\r\n <div id="settings-sounds-container" class="settings-section">\r\n \x3c!-- Individual sound settings will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="controls hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Keyboard shortcuts</div>\r\n <div class="settings-section-desc">Customize keyboard shortcuts for various actions in WikiShield.</div>\r\n <div class="settings-section compact inline" id="repeat-control-scripts">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Repeat control scripts</div>\r\n <div class="settings-section-desc">Allow control scripts to be triggered repeatedly when holding down keys</div>\r\n </div>\r\n <toggle-input id="repeat-control-scripts-toggle" value="true"></toggle-input>\r\n </div>\r\n <button type="button" id="settings-new-control-script" class="add-action-button new-control-script"><span class="fa fa-plus"></span> Add new action</button>\r\n </div>\r\n </div>\r\n <div class="zen hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Zen Mode</div>\r\n <div class="settings-section-desc">Your distraction-free editing experience.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable Zen Mode</div>\r\n <div class="settings-section-desc">Reduce on-screen distractions while reviewing edits.</div>\r\n </div>\r\n <toggle-input id="settings-zen-mode" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Customize Zen Mode</div>\r\n <div class="settings-compact-grid">\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Sound</div>\r\n <div class="settings-section-desc">Play sound in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-sound" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact" data-electron="true">\r\n <div class="settings-section-title">Music</div>\r\n <div class="settings-section-desc">Play background music in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-music" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Alerts</div>\r\n <div class="settings-section-desc">Show alerts in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-alerts" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Messages</div>\r\n <div class="settings-section-desc">Show messages in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-messages" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Toasts</div>\r\n <div class="settings-section-desc">Show toasts in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-toasts" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Badges</div>\r\n <div class="settings-section-desc">Show badges in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-badges" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="app hidden">\r\n \x3c!-- <div class="settings-section">\r\n <div class="settings-section-title">App theme</div>\r\n <div class="settings-section-desc">Choose between light mode, dark mode, or automatic switching based on system settings.</div>\r\n <div id="settings-app-theme" class="settings-radio-group">\r\n <div class="settings-radio-option" data-value="light">Light mode</div>\r\n <div class="settings-radio-option selected" data-value="auto">Auto</div>\r\n <div class="settings-radio-option" data-value="dark">Dark mode</div>\r\n </div>\r\n </div> --\x3e\r\n <div class="settings-section">\r\n <div class="settings-section-title">Startup animation</div>\r\n <div class="settings-section-desc">Enable or disable the startup animation when launching WikiShield.</div>\r\n <div id="settings-startup-performance" class="settings-radio-group">\r\n <div class="settings-radio-option" data-value="always_off">Always off</div>\r\n <div class="settings-radio-option selected" data-value="adaptive">Adaptive (recommended)</div>\r\n <div class="settings-radio-option" data-value="always_on">Always on</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="queue hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Queues</div>\r\n <div class="settings-section-desc">Enable or disable different edit queues, and customize their order.</div>\r\n <draggable-order-list id="settings-queues">\r\n \x3c!-- Queue items will be populated here --\x3e\r\n </draggable-order-list>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Color palette</div>\r\n <div class="settings-section-desc">Select the color palette used for highlighting users and pages.</div>\r\n <div id="settings-palette-selector" class="palette-selector">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class="accessibility hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Accessibility Options</div>\r\n <div class="settings-section-desc">Customize accessibility features for better usability.</div>\r\n <div class="settings-compact-grid">\r\n \x3c!-- <div class="settings-section compact">\r\n <div class="settings-section-title">Colorblind Mode</div>\r\n <div class="settings-section-desc">Add indicators to help distinguish colors for colorblind users.</div>\r\n <toggle-input id="settings-colorblind-mode" value="false"></toggle-input>\r\n </div> --\x3e\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Dyslexia Friendly Font</div>\r\n <div class="settings-section-desc">Use a font that is easier to read for users with dyslexia.</div>\r\n <toggle-input id="settings-dyslexia-font" value="false"></toggle-input>\r\n </div>\r\n \x3c!-- <div class="settings-section compact">\r\n <div class="settings-section-title">High Contrast Mode</div>\r\n <div class="settings-section-desc">Increase contrast for better visibility.</div>\r\n <toggle-input id="settings-high-contrast-mode" value="false"></toggle-input>\r\n </div> --\x3e\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Reduce Motion</div>\r\n <div class="settings-section-desc">Minimize motion effects for users sensitive to motion.</div>\r\n <toggle-input id="settings-reduce-motion" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="auto-reporting hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Enable Auto Reporting</div>\r\n <div class="settings-section-desc">Automatically report edits that receive certain warnings.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Auto Reporting</div>\r\n <div class="settings-section-desc">When enabled, edits that trigger selected warnings will be automatically reported.</div>\r\n </div>\r\n <toggle-input id="settings-auto-reporting-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Auto Reporting Warnings</div>\r\n <div class="settings-section-desc">Select which warnings should trigger automatic reporting.</div>\r\n <div id="settings-auto-reporting-warnings-container" class="checkbox-container">\r\n \x3c!-- Checkboxes will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="gadgets hidden">\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Gadgets</div>\r\n <div class="settings-section-desc">Toggle various Wikishield features.</div>\r\n <div class="settings-section compact inline" id="auto-welcome-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Automatic welcoming of new users</div>\r\n <div class="settings-section-desc">Automatically welcome new users with empty talk pages when moving past their constructive edits</div>\r\n </div>\r\n <toggle-input id="settings-auto-welcome-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="wikipedia-popups-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Popups</div>\r\n <div class="settings-section-desc">When enabled, links will be opened in a new window. Otherwise, they will be opened in your default browser.<span class="disabled-note">This feature is disabled on your browser</span></div>\r\n </div>\r\n <toggle-input id="settings-wikipedia-popups-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="talk-page-thanks-for-temporary-users-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Send talk page thanks for temporary users</div>\r\n <div class="settings-section-desc">If enabled, when you thank a temporary user with an empty talk page, WikiShield will send them a welcoming thank you message in addition to the standard thank you message.</div>\r\n </div>\r\n <toggle-input id="settings-edit-summaries-toggle" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Username Highlighting</div>\r\n <div class="settings-section compact inline" id="username-highlighting-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable username highlighting</div>\r\n <div class="settings-section-desc">Highlights usernames in edit summaries, edit diffs, and user creation logs.</div>\r\n </div>\r\n <toggle-input id="settings-username-highlighting-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="username-highlighting-mode-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Toggle fuzzy matching mode</div>\r\n <div class="settings-section-desc">\r\n When enabled, highlights similar usernames. Not recommended for users with short usernames.<br/>\r\n <strong>NOTE:</strong> This may cause performance issues for those with long usernames, or users on weaker devices.\r\n </div>\r\n </div>\r\n <toggle-input id="settings-username-highlighting-fuzzy-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="AI hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">AI Analysis</div>\r\n <div class="settings-section-desc">Configure AI-powered analysis features.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable Ollama AI Analysis (<a href="https://ollama.com">ollama.com</a>)</div>\r\n <div class="settings-section-desc">Use local AI models with complete privacy.</div>\r\n </div>\r\n <toggle-input id="settings-AI-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-header">\r\n <span class="settings-section-header-icon">Tools</span>\r\n </div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Edit Analysis</div>\r\n <div class="settings-section-desc">Suggests actions to take on edits.</div>\r\n </div>\r\n <toggle-input id="settings-AI-edit-analysis-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Username Analysis</div>\r\n <div class="settings-section-desc">Flags potentially problematic usernames and prompts you to report them to UAA</div>\r\n </div>\r\n <toggle-input id="settings-AI-username-analysis-toggle" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-server-url">\r\n <div class="settings-section-title">Server URL</div>\r\n <div class="settings-section-desc">The URL of your local Ollama server</div>\r\n <div class="text-input-container">\r\n <input title="Ollama URL" type="text" id="ollama-url-input" autoComplete="off">\r\n <button type="button" id="settings-ollama-test-connection">Test Connection</button>\r\n </div>\r\n <div class="settings-section compact connection-status-container">\r\n <p id="settings-ollama-connection-status"></p>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-model-select">\r\n <div class="settings-section-title">\r\n Model Selection\r\n <button type="button" id="settings-ollama-refresh-models">\r\n <span class="fa fa-sync"></span> Refresh Models\r\n </button>\r\n </div>\r\n <div class="settings-section-desc">Select which Ollama model to use for edit analysis</div>\r\n <div class="settings-section compact models-container">\r\n <p id="settings-ollama-models-status">Click "Refresh Models" to load available models</p>\r\n <div id="settings-ollama-models"></div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-setup">\r\n <div class="settings-section-title">Setup required</div>\r\n <div class="settings-section-desc">\r\n <details>\r\n <summary><strong>Windows (Permanent)</strong></summary>\r\n <ol class="pad-list">\r\n <li>Press <code>Win + R</code>, type <code>sysdm.cpl</code>, and press Enter</li>\r\n <li>Go to the "Advanced" tab and click on "Environment Variables"</li>\r\n <li>Create a new variable under "System variables"</li>\r\n <li>Set the name to <code>OLLAMA_HOST</code> and the value to <code>http://127.0.0.11434</code>\r\n <ul class="pad-list">\r\n <li><strong>NOTE:</strong> You can change the port (11434) if that port is already in use, but make sure to update the "Server URL" setting in WikiShield accordingly</li>\r\n </ul>\r\n </li>\r\n <li>Click "OK" to save the variable</li>\r\n <li>Create another variable under "System variables"</li>\r\n <li>Set the name to <code>OLLAMA_ORIGINS</code> and the value to <code>https://*.wikipedia.org</code></li>\r\n <li>Click "OK" to save the variable, you can now close the Environment Variables and System Properties windows</li>\r\n <li>Restart Ollama</li>\r\n </ol>\r\n </details>\r\n\r\n <details>\r\n <summary><strong>Windows (Temporary)</strong></summary>\r\n <pre>\r\n$env:OLLAMA_HOST="http://127.0.0.11434"\r\n$env:OLLAMA_ORIGINS="https://*.wikipedia.org"\r\nollama serve</pre>\r\n </details>\r\n\r\n <details>\r\n <summary><strong>macOS / Linux</strong></summary>\r\n Add the following to <code>~/.bashrc</code> or <code>~/.zshrc</code>:\r\n <pre>\r\nexport OLLAMA_HOST="http://127.0.0.11434"\r\nexport OLLAMA_ORIGINS="https://*.wikipedia.org"</pre>\r\n Then run:\r\n <pre>source ~/.bashrc && ollama serve</pre>\r\n </details>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="whitelist users hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted users</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted user is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-users-expiry" label="Default expiry for whitelisted users"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Users</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted users.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-users-input" placeholder="Add user to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-users-add-button">Add user</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-users-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted users will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="whitelist pages hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted pages</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted page is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-pages-expiry" label="Default expiry for whitelisted pages"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Pages</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted pages.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-pages-input" placeholder="Add page to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-pages-add-button">Add page</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-pages-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted pages will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="whitelist tags hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted tags</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted tag is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-tags-expiry" label="Default expiry for whitelisted tags"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Tags</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted tags.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-tags-input" placeholder="Add tag to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-tags-add-button">Add tag</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-tags-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted tags will be populated here --\x3e\r\n </div>\r\n </div>\r\n\r\n <div class="highlight users hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted users</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted user is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-users-expiry" label="Default expiry for highlighted users"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Users</div>\r\n <div class="settings-section-desc">Manage your list of highlighted users.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-users-input" placeholder="Add user to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-users-add-button">Add user</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-users-list" class="settings-section list-container">\r\n \x3c!-- Highlighted users will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="highlight pages hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted pages</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted page is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-pages-expiry" label="Default expiry for highlighted pages"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Pages</div>\r\n <div class="settings-section-desc">Manage your list of highlighted pages.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-pages-input" placeholder="Add page to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-pages-add-button">Add page</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-pages-list" class="settings-section list-container">\r\n \x3c!-- Highlighted pages will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="highlight tags hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted tags</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted tag is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-tags-expiry" label="Default expiry for highlighted tags"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Tags</div>\r\n <div class="settings-section-desc">Manage your list of highlighted tags.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-tags-input" placeholder="Add tag to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-tags-add-button">Add tag</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-tags-list" class="settings-section list-container">\r\n \x3c!-- Highlighted tags will be populated here --\x3e\r\n </div>\r\n </div>\r\n\r\n <div class="statistics hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">\r\n Statistics Overview\r\n <button type="button" id="reset-statistics-button">Reset Statistics</button>\r\n </div>\r\n <div class="stats-grid">\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-total-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Edits Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n You have thanked <span id="stats-thanks-percentage"></span>% of the edits you reviewed\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-recent-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Recent Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n Recent changes make up <span id="stats-recent-changes-percentage"></span>% of your reviewed edits\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-pending-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Pending Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n You have accepted <span id="stats-pending-changes-accepted"></span> (\r\n <span id="stats-pending-changes-accepted-percentage"></span>%\r\n ) pending changes\r\n </div>\r\n <div class="stat-sublabel">\r\n You have rejected <span id="stats-pending-changes-rejected"></span> (\r\n <span id="stats-pending-changes-rejected-percentage"></span>%\r\n ) pending changes from entering the public eye\r\n </div>\r\n <div class="stat-sublabel">\r\n Out of all the edits you’ve reviewed, <span id="stats-pending-changes-percentage"></span>% of them were pending review\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-user-creations-reviewed" class="stat-value"></div>\r\n <div class="stat-label">User Creations Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-user-creations-percentage"></span>% of your reviews came from user creations\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-watchlist-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Watchlist Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-watchlist-changes-percentage"></span>% of your reviews came from your watchlist\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-abuselog-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Abuse Log Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-abuselog-changes-percentage"></span>% of your reviews came from your abuse log\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-reverts-made" class="stat-value"></div>\r\n <div class="stat-label">Reverts Made</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-reverts-percentage"></span>% of edits that cross your path are reverted by you\r\n </div>\r\n <div class="stat-sublabel">\r\n You assumed good faith <span id="stats-goodfaith-reverts-percentage"></span>% of the time\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-recent-reverts-percentage"></span>% of your reverts were from recent changes\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pending-reverts-percentage"></span>% of your reverts were pending\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-watchlist-reverts-percentage"></span>% of your reverts were from your watchlist\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-abuselog-reverts-percentage"></span>% of your reverts were from your abuse log\r\n </div>\r\n <div class="stat-sublabel">\r\n …and the last <span id="stats-other-reverts-percentage"></span>% weren’t even in your queue!\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-users-welcomed" class="stat-value"></div>\r\n <div class="stat-label">Users Welcomed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-welcomed-message"></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-warnings" class="stat-value"></div>\r\n <div class="stat-label">Warnings Issued</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-1-percentage"></span>% were level 1\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-2-percentage"></span>% were level 2\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-3-percentage"></span>% were level 3\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-4-percentage"></span>% were level 4\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-4im-percentage"></span>% were level 4im\r\n </div>\r\n <div class="stat-sublabel">\r\n …and the rest we were too lazy to track =)\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-reports" class="stat-value"></div>\r\n <div class="stat-label">Reports Filed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n AIV accounted for <span id="stats-AIV-reports-percentage"></span>% of your reports\r\n </div>\r\n <div class="stat-sublabel">\r\n another <span id="stats-UAA-reports-percentage"></span>% were for UAA\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-global-block-reports-percentage"></span>% were for global block requests\r\n </div>\r\n <div class="stat-sublabel">\r\n while <span id="stats-global-lock-reports-percentage"></span>% were for global lock requests\r\n </div>\r\n <div class="stat-sublabel">\r\n finally, <span id="stats-RFPP-reports-percentage"></span>% were posted at RFPP\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-pages-watched" class="stat-value"></div>\r\n <div class="stat-label">Pages Watched</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-unwatched"></span> pages were annoying enough to be unwatched\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-items-whitelisted" class="stat-value"></div>\r\n <div class="stat-label">Items Whitelisted</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-whitelisted"></span> (\r\n <span id="stats-users-whitelisted-percentage"></span>%\r\n ) were users\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-whitelisted"></span> (\r\n <span id="stats-pages-whitelisted-percentage"></span>%\r\n ) were pages\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-tags-whitelisted"></span> (\r\n <span id="stats-tags-whitelisted-percentage"></span>%\r\n ) were tags\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-items-highlighted" class="stat-value"></div>\r\n <div class="stat-label">Items Highlighted</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-highlighted"></span> (\r\n <span id="stats-users-highlighted-percentage"></span>%\r\n ) were users\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-highlighted"></span> (\r\n <span id="stats-pages-highlighted-percentage"></span>%\r\n ) were pages\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-tags-highlighted"></span> (\r\n <span id="stats-tags-highlighted-percentage"></span>%\r\n ) were tags\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-session-time" class="stat-value"></div>\r\n <div class="stat-label">Session Time</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-reports-per-day"></span> reports per day\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-reverts-per-hour"></span> reverts per hour\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-reviews-per-minute"></span> reviews per minute\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="save hidden">\r\n <div class="save settings-section">\r\n <div class="save-settings-header">\r\n <div class="settings-section-title">Save Settings</div>\r\n <div class="settings-section-desc">Manage how and where your WikiShield settings are stored.</div>\r\n </div>\r\n\r\n <div class="save-settings-content">\r\n <div class="save-settings-card data-management-card">\r\n <div class="card-header">\r\n <div class="card-icon">\r\n <i class="fa fa-database"></i>\r\n </div>\r\n <div class="card-header-content">\r\n <div class="card-title">Data Management</div>\r\n <div class="card-desc">Import, export, or reset your WikiShield settings. Settings are encoded as base64 for easy sharing.</div>\r\n </div>\r\n </div>\r\n\r\n <div class="card-body">\r\n <div class="action-buttons-grid">\r\n <button type="button" id="settings-export-button" class="action-card export-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-download"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Export Settings</div>\r\n <div class="action-card-desc">Save your configuration</div>\r\n </div>\r\n </button>\r\n\r\n <button type="button" id="settings-import-button" class="action-card import-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-upload"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Import Settings</div>\r\n <div class="action-card-desc">Load saved configuration</div>\r\n </div>\r\n </button>\r\n\r\n <button type="button" id="settings-reset-button" class="action-card reset-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-undo"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Reset Settings</div>\r\n <div class="action-card-desc">Restore to defaults</div>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div id="settings-save-status" class="status-message hidden"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="changelog hidden">\r\n <div class="settings-section">\r\n <div class="changelog-content">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class="about hidden">\r\n <div class="settings-section">\r\n <div class="about-content">\r\n <div class="about-version">\r\n <span class="fa fa-shield-alt"></span>\r\n <span>WikiShield v<span id="settings-about-version"></span></span>\r\n </div>\r\n\r\n <div class="about-tagline">\r\n <p>A powerful, real-time patrolling tool for Wikipedia editors</p>\r\n </div>\r\n\r\n <div class="about-links">\r\n <a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="link-card docs">\r\n <div class="link-card-icon">\r\n <span class="fa fa-book"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Documentation</div>\r\n <div class="link-card-desc">Learn how to use WikiShield</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n <a rel="noopener" href="https://github.com/LuniZunie/WikiShield-App" target="_blank" class="link-card source">\r\n <div class="link-card-icon">\r\n <span class="fa fa-code-branch"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Source Code</div>\r\n <div class="link-card-desc">View on GitHub</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n <a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia_talk:WikiShield" target="_blank" class="link-card feedback">\r\n <div class="link-card-icon">\r\n <span class="fa fa-comments"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Feedback</div>\r\n <div class="link-card-desc">Share your thoughts</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n </div>\r\n\r\n <div class="about-footer">\r\n <div class="footer-divider"></div>\r\n <div class="about-credits">\r\n <div>\r\n <div class="credit-card" data-link="https://about.luni.me">\r\n <div class="credit-icon">\r\n <span class="fa fa-code"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">LuniZunie</div>\r\n <div class="credit-role">Lead Developer</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:Ingenuity">\r\n <div class="credit-icon">\r\n <span class="fa fa-lightbulb"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">Ingenuity</div>\r\n <div class="credit-role">Original Creator</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:MSK">\r\n <div class="credit-icon">\r\n <span class="fa fa-database"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">MSK</div>\r\n <div class="credit-role">Backend</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:pro-anti-air">\r\n <div class="credit-icon">\r\n <span class="fa fa-book"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">Pro-anti-air</div>\r\n <div class="credit-role">Documentation</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:Chaotic_Enby">\r\n <div class="credit-icon">\r\n <span class="fa fa-paint-brush"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">Chaotic Enby</div>\r\n <div class="credit-role">Logo Design</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:HurricaneZeta">\r\n <div class="credit-icon">\r\n <span class="fa fa-paint-brush"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">HurricaneZeta</div>\r\n <div class="credit-role">Logo Design</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="copyright-card" data-link="https://sound-effects.bbcrewind.co.uk">\r\n <div class="copyright-title">Nature sounds</div>\r\n <div class="copyright-desc">bbc.co.uk – © copyright 2026 BBC</div>\r\n </div>\r\n <div class="copyright-card" data-link="https://pixabay.com/sound-effects">\r\n <div class="copyright-title">Sound effects</div>\r\n <div class="copyright-desc">pixabay.com – CC0 License</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </body>\r\n</html>'},2459(e){e.exports="@keyframes startup {\n\tfrom {\n\t\topacity: 0;\n\t}\n\tto {\n\t\topacity: 1;\n\t}\n}\n\n@keyframes particles {\n\t0%, 100% {\n\t\ttransform: translate(0, 0) rotate(0deg);\n\t}\n\t33% {\n\t\ttransform: translate(30px, -30px) rotate(120deg);\n\t}\n\t66% {\n\t\ttransform: translate(-20px, 20px) rotate(240deg);\n\t}\n}\n\n@keyframes container-fade-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(30px) scale(.95);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0) scale(1);\n\t}\n}\n\n@keyframes border-glow {\n\t0%, 100% {\n\t\tbox-shadow:\n\t\t\t0 20px 60px rgba(0, 0, 0, .5),\n\t\t\t0 0 40px rgba(102, 126, 234, .4),\n\t\t\t0 0 80px rgba(240, 147, 251, .3),\n\t\t\tinset 0 0 60px rgba(102, 126, 234, .15),\n\t\t\tinset 0 1px 0 rgba(255, 255, 255, .2);\n\t}\n\t50% {\n\t\tbox-shadow:\n\t\t\t0 20px 60px rgba(0, 0, 0, .5),\n\t\t\t0 0 60px rgba(240, 147, 251, .6),\n\t\t\t0 0 120px rgba(102, 126, 234, .4),\n\t\t\tinset 0 0 80px rgba(240, 147, 251, .2),\n\t\t\tinset 0 1px 0 rgba(255, 255, 255, .3);\n\t}\n}\n\n@keyframes shield-entrance {\n\t0% {\n\t\topacity: 0;\n\t\ttransform: scale(0) rotate(-180deg);\n\t}\n\t60% {\n\t\topacity: 1;\n\t\ttransform: scale(1.15) rotate(10deg);\n\t}\n\t100% {\n\t\topacity: 1;\n\t\ttransform: scale(1) rotate(0deg);\n\t}\n}\n\n@keyframes shield-float {\n\t0%, 100% {\n\t\ttransform: translate(-50%, -50%) translateY(0px);\n\t}\n\t50% {\n\t\ttransform: translate(-50%, -50%) translateY(-10px);\n\t}\n}\n\n@keyframes pulse {\n\t0% {\n\t\ttransform: translate(-50%, -50%) scale(.8);\n\t\topacity: 0;\n\t}\n\t50% {\n\t\ttransform: translate(-50%, -50%) scale(1);\n\t\topacity: 0.8;\n\t}\n\t100% {\n\t\ttransform: translate(-50%, -50%) scale(1.5);\n\t\topacity: 0;\n\t}\n}\n\n@keyframes sparkle {\n\t0%, 100% {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n\t50% {\n\t\ttransform: scale(1.5);\n\t\topacity: 1;\n\t}\n}\n\n@keyframes title-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(-20px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes links-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(-10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes warning-fade-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: scale(.95);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: scale(1);\n\t}\n}\n\n@keyframes button-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(40px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes fade-in {\n\tfrom {\n\t\topacity: 0;\n\t}\n\tto {\n\t\topacity: 1;\n\t}\n}\n@keyframes fade-out {\n\tfrom {\n\t\topacity: 1;\n\t}\n\tto {\n\t\topacity: 0;\n\t}\n}\n\n@keyframes scale-in {\n\tfrom {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n\tto {\n\t\ttransform: scale(1);\n\t\topacity: 1;\n\t}\n}\n@keyframes scale-out {\n\tfrom {\n\t\ttransform: scale(1);\n\t\topacity: 1;\n\t}\n\tto {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n}\n\n@keyframes scale-x {\n from {\n transform: scaleX(0);\n }\n to {\n transform: scaleX(1);\n }\n}\n\n@keyframes bottom-tool-menu-enter {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n@keyframes bottom-tool-submenu-enter {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateX(-10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateX(0);\n\t}\n}\n\n@keyframes toast-alert-enter {\n\t0% {\n\t\topacity: 0;\n\t\ttransform: translateX(100%) scale(.8);\n\t}\n\t60% {\n\t\topacity: 1;\n\t\ttransform: translateX(-10px) scale(1.05);\n\t}\n\t100% {\n\t\topacity: 1;\n\t\ttransform: translateX(0) scale(1);\n\t}\n}\n@keyframes toast-alert-leave {\n\t0% {\n\t\topacity: 1;\n\t\ttransform: translateX(0) scale(1);\n\t}\n\t100% {\n\t\topacity: 0;\n\t\ttransform: translateX(150%) scale(.7);\n\t}\n}\n\n@keyframes music-toast-enter {\n from {\n opacity: 0;\n transform: translateX(150%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n@keyframes music-toast-leave {\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(150%);\n }\n}\n\n@keyframes tooltip-enter {\n from {\n\t\ttransform: scale(.8);\n\t}\n\tto {\n\t\ttransform: scale(1);\n\t}\n}\n\n@keyframes star-spin {\n 0% {\n transform: rotate(0deg) scale(1);\n }\n 50% {\n transform: rotate(180deg) scale(1.3);\n }\n 100% {\n transform: rotate(360deg) scale(1);\n }\n}\n\n@keyframes flash-highlight {\n 0%, 100% {\n filter: brightness(1);\n }\n 50% {\n filter: brightness(.5);\n }\n}\n\n@keyframes logo-loader {\n 0%, 100% {\n transform: scale(1);\n\n /* Theme dependent */\n filter: drop-shadow(0 0 10px rgba(102, 126, 234, .4));\n }\n 50% {\n transform: scale(1.5);\n\n /* Theme dependent */\n filter: drop-shadow(0 0 20px rgba(102, 126, 234, .6));\n }\n}\n\n@keyframes refresh-rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse-DEFCON {\n 0% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.15);\n }\n 100% {\n transform: scale(1);\n }\n}\n\nbody {\n --transparency: 1;\n\n font-size: clamp(10px, 3vw, 16px);\n\n /* Theme dependent */\n color: rgba(241, 245, 255, 1);\n background: rgba(20, 20, 30, 1);\n\n &.dyslexia-font {\n font-family: \"Open-Dyslexic\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n\n *:not(.fa):not(.fas):not(.far):not(.fal):not(.fab) {\n font-family: \"Open-Dyslexic\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n }\n }\n\n &.reduce-motion * {\n animation-duration: 0.001s !important;\n transition-duration: 0.001s !important;\n }\n\n & a {\n text-decoration: none;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 0.9);\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n &:active {\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n }\n }\n\n & > #popup-blocker {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 1);\n\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n animation: fade-in .2s ease;\n }\n\n & > #loading {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 2);\n\n opacity: 1;\n\n transition: opacity .5s ease;\n\n /* Theme dependent */\n background: rgba(20, 20, 30, 1);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n\n & > .icon {\n width: 100vmin;\n }\n }\n\n & > .icon {\n aspect-ratio: 1 / 1;\n width: 12.5vmin;\n\n animation: logo-loader 2s ease-in-out infinite;\n\n transition: width .5s cubic-bezier(0.6, -0.28, 0.735, 0.045);\n }\n }\n\n & > #initial {\n display: flex;\n align-items: center;\n\t justify-content: center;\n\n width: 100%;\n height: 100%;\n\n position: relative;\n\n overflow: hidden;\n\n /* Theme dependent */\n background: rgba(20, 20, 30, 1);\n\n &.hidden {\n display: none;\n }\n\n &:before {\n content: '';\n position: absolute;\n inset: 0;\n z-index: 0;\n background:\n radial-gradient(circle at 20% 50%, rgba(102, 126, 234, .08) 0%, transparent 50%),\n radial-gradient(circle at 80% 80%, rgba(118, 75, 162, .06) 0%, transparent 50%);\n pointer-events: none;\n }\n\n &:not(.hidden) {\n animation: startup 1.2s ease-out;\n\n & > #welcome-container {\n animation: container-fade-in 1.2s ease-out;\n\n & > .shield-container {\n animation: shield-entrance 1.5s ease 2s forwards;\n }\n\n & > h1 {\n animation: title-fade-in 0.8s ease-out 0.5s both;\n }\n\n & > .about-links {\n animation: link-slide-in 0.8s ease-out 0.7s both;\n }\n\n & > #rollback-needed {\n animation: warning-fade-in 1s ease-out 0.7s both;\n }\n\n & > button {\n animation: button-slide-in 2s ease-out 1s both;\n }\n }\n }\n\n & > #dots-canvas {\n width: 100%;\n height: 100%;\n\n position: absolute;\n z-index: 0;\n left: 0;\n top: 0;\n }\n\n & > #welcome-container {\n padding: 48px;\n\n border-radius: 16px;\n\n max-width: 480px;\n\n position: relative;\n z-index: 2;\n\n text-align: center;\n\n overflow: hidden;\n\n /* Theme dependent */\n border: 1px solid rgba(143, 163, 255, .15);\n box-shadow:\n 0 12px 40px rgba(0, 0, 0, .4),\n inset 0 1px 0px rgba(255, 255, 255, .08),\n inset 0 -1px 0px rgba(0, 0, 0, .2);\n\n background: linear-gradient(135deg,\n rgba(30, 34, 45, .7),\n rgba(25, 25, 36, .5)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n & * {\n position: relative;\n z-index: 1;\n }\n\n & > .shield-container {\n width: 100px;\n height: 100px;\n\n position: relative;\n\n margin: 0 auto 24px;\n\n opacity: 0;\n\n & > .glow-ring {\n width: 240px;\n height: 240px;\n\n position: absolute;\n left: 50%;\n top: 50%;\n\n border: 2px solid;\n border-radius: 50%;\n\n transform: translate(-50%, -50%);\n\n animation: pulse 2.5s ease-in-out infinite;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n\n &:nth-child(2) {\n animation-delay: 0.4s;\n border-color: rgba(118, 75, 162, .25);\n }\n &:nth-child(3) {\n animation-delay: 0.8s;\n border-color: rgba(143, 163, 255, .2);\n }\n }\n\n & > .sparkle {\n width: 5px;\n height: 5px;\n\n position: absolute;\n\n border-radius: 50%;\n\n animation: sparkle 2s ease-in-out infinite;\n\n &:nth-child(4) {\n top: 15%;\n left: 25%;\n\n animation-delay: 0s;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .6);\n box-shadow: 0 0 8px rgba(143, 163, 255, .6);\n }\n &:nth-child(5) {\n top: 25%;\n left: 18%;\n\n animation-delay: 0.4s;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .6);\n box-shadow: 0 0 8px rgba(102, 126, 234, .6);\n }\n &:nth-child(6) {\n bottom: 20%;\n\t left: 30%;\n\n animation-delay: 0.8s;\n\n /* Theme dependent */\n background: rgba(118, 75, 162, .5);\n box-shadow: 0 0 8px rgba(118, 75, 162, .5);\n }\n &:nth-child(7) {\n bottom: 25%;\n right: 25%;\n\n animation-delay: 1.2s;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .5);\n box-shadow: 0 0 8px rgba(143, 163, 255, .5);\n }\n }\n\n & > .shield-icon {\n width: 100px;\n\n position: absolute;\n z-index: 2;\n left: 50%;\n top: 50%;\n\n transform: translate(-50%, -50%);\n\n animation: shield-float 3s ease-in-out infinite;\n\n /* Theme dependent */\n filter: drop-shadow(0 0 8px rgba(102, 126, 234, .3));\n\n & > img {\n width: 100%;\n height: 100%;\n }\n }\n }\n\n & > h1 {\n margin: 0 0 8px 0;\n\n font-size: 2.2em;\n font-weight: 700;\n line-height: 1.2;\n\n /* Theme dependent */\n color: rgba(241, 245, 255, 1);\n }\n\n & > .subtitle {\n margin: 0 0 24px 0;\n\n font-size: 0.95em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(160, 170, 200, 0.8);\n }\n\n & > .about-links {\n display: flex;\n justify-content: center;\n gap: 12px;\n flex-wrap: wrap;\n\n margin: 24px 0;\n\n & > .about-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n\n padding: 8px 14px;\n\n border: 1px solid;\n border-radius: 8px;\n\n font-size: 0.85em;\n font-weight: 500;\n text-decoration: none;\n\n transition: background .2s ease,\n transform .2s ease,\n color .2s ease,\n border-color .2s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, 0.9);\n background: rgba(102, 126, 234, .1);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n border-color: rgba(102, 126, 234, .4);\n background: rgba(102, 126, 234, .2);\n }\n }\n }\n\n & > #rollback-needed {\n margin: 20px 0;\n padding: 16px;\n\n border: 1px solid;\n border-radius: 12px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(247, 76, 60, .3);\n box-shadow:\n 0 4px 12px rgba(0, 0, 0, .2),\n\t\t inset 0 1px 0 rgba(255, 255, 255, .05);\n background: rgba(247, 76, 60, .08);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n display: none;\n }\n\n & p {\n margin: 6px 0;\n\n font-weight: 400;\n font-size: 0.9em;\n\n /* Theme dependent */\n color: rgba(247, 76, 60, 0.95);\n }\n & a {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n &:hover {\n text-decoration: underline;\n }\n }\n }\n\n & > button {\n cursor: pointer;\n\n width: 100%;\n\n padding: 12px 24px;\n\n border: 2px solid transparent;\n border-radius: 10px;\n\n position: relative;\n\n font-size: 1em;\n font-weight: 700;\n color: rgba(143, 163, 255, 1);\n letter-spacing: 0.5px;\n\n overflow: hidden;\n\n opacity: 1;\n\n transition: all .25s ease;\n\n /* Theme dependent */\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 0.8), rgba(118, 75, 162, 0.8)) border-box;\n box-shadow:\n 0 0 10px rgba(102, 126, 234, .6),\n 0 0 20px rgba(118, 75, 162, .3),\n inset 0 0 10px rgba(102, 126, 234, .1);\n\n &.hidden {\n display: none;\n }\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(160, 180, 255, 1);\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 75, 162, 1)) border-box;\n box-shadow:\n 0 0 15px rgba(102, 126, 234, .8),\n 0 0 30px rgba(118, 75, 162, .5),\n inset 0 0 15px rgba(102, 126, 234, .2);\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 0.7), rgba(118, 75, 162, 0.7)) border-box;\n box-shadow:\n 0 0 8px rgba(102, 126, 234, .5),\n 0 0 16px rgba(118, 75, 162, .3),\n inset 0 0 8px rgba(102, 126, 234, .1);\n }\n\n &::before {\n content: \"\";\n\n width: 100%;\n height: 100%;\n\n position: absolute;\n left: -100%;\n top: 0;\n\n transition: left .4s ease;\n\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1),\n transparent\n );\n }\n\n & > i {\n margin-right: 6px;\n font-size: 14px;\n transition: transform 0.3s ease;\n }\n\n &:hover > i {\n transform: translateX(2px);\n }\n }\n }\n }\n\n & > #app {\n width: 100%;\n height: 100%;\n\n line-height: 1.5;\n color: var(--body-color);\n\n overflow: hidden;\n\n background: var(--body-background);\n\n &.hidden {\n display: none;\n }\n\n & > #container {\n display: flex;\n width: 100%;\n height: 100%;\n\n margin: 0;\n\n overflow: hidden;\n\n & > #queue {\n width: 15vw;\n height: 100%;\n\n position: relative;\n\n border-right: 1px solid;\n\n /* Theme dependent */\n border-right-color: rgba(58, 61, 74, 1);\n\n & > #queue-top {\n -webkit-user-select: none;\n user-select: none;\n\n container-type: inline-size;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 69px;\n\n position: relative;\n z-index: 2;\n\n overflow: auto hidden;\n\n border-bottom: 2px solid;\n border-right: 1px solid;\n border-bottom-right-radius: 8px;\n\n padding: 10px;\n\n /* Theme dependent */\n border-color: rgba(54, 62, 81, 1);\n\n background: rgba(41, 47, 60, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .queue-button-cluster {\n display: flex;\n align-items: center;\n gap: 20px;\n\n padding: 10px 14px;\n\n border: 1px solid;\n border-radius: 14px;\n\n font-size: 1.2em;\n\n /* Theme dependent */\n border-color: rgba(143, 143, 255, .2);\n background: rgba(143, 143, 255, .1);\n\n & > .fa {\n position: relative;\n }\n\n & > span {\n cursor: pointer;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > #DEFCON {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n padding: 4px 14px;\n\n border: 1px solid;\n border-radius: 14px;\n\n /* Theme dependent */\n border-color: rgba(143, 143, 255, .2);\n background: rgba(143, 143, 255, .1);\n\n & > .dot {\n flex: 0 0 auto;\n\n width: 10px;\n height: 10px;\n\n border-radius: 50%;\n\n animation: pulse-DEFCON 2s ease-in-out infinite;\n\n /* Theme dependent */\n background: rgba(100, 100, 100, 1);\n box-shadow: 0 0 0 4px rgba(100, 100, 100, .15);\n\n &.DEFCON-1 {\n background: rgba(255, 75, 75, 1);\n box-shadow: 0 0 0 4px rgba(255, 75, 75, .3);\n }\n &.DEFCON-2 {\n background: rgba(255, 165, 0, 1);\n box-shadow: 0 0 0 4px rgba(255, 165, 0, .3);\n }\n &.DEFCON-3 {\n background: rgba(255, 255, 0, 1);\n box-shadow: 0 0 0 4px rgba(255, 255, 0, .3);\n }\n &.DEFCON-4 {\n background: rgba(75, 255, 75, 1);\n box-shadow: 0 0 0 4px rgba(75, 255, 75, .3);\n }\n &.DEFCON-5 {\n background: rgba(75, 255, 255, 1);\n box-shadow: 0 0 0 4px rgba(75, 255, 255, .3);\n }\n }\n\n & > span {\n overflow: auto hidden;\n\n white-space: nowrap;\n font-size: 13px;\n font-weight: 500;\n }\n }\n }\n\n & > #queue-tabs {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-around;\n gap: 8px;\n\n position: relative;\n z-index: 2;\n\n border-radius: 0 0 12px 12px;\n padding: 10px 12px;\n\n overflow: hidden;\n\n /* Theme dependent */\n background: transparent;\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .queue-tab {\n cursor: pointer;\n\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n\n position: relative;\n\n border-radius: 50%;\n padding: 8px 14px;\n\n font-size: 1.4em;\n\n transition: transform .18s ease,\n color .18s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .85);\n\n &::after {\n content: \"\";\n\n height: 3px;\n\n position: absolute;\n left: 10px;\n right: 10px;\n bottom: 0;\n\n border-radius: 2px;\n\n transform: scaleX(0);\n\n transition: transform .22s cubic-bezier(.2, .9, .27, 1);\n\n /* Theme dependent */\n opacity: .95;\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, 1),\n rgba(118, 75, 162, 1)\n );\n }\n\n &:hover, &:focus-visible {\n transform: translateY(-2px);\n }\n\n &:not(.selected).mentions-me::after {\n animation: scale-x 1s ease-in-out infinite;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(244, 196, 32, 1),\n rgba(255, 107, 107, 1)\n );\n }\n\n &.selected {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n\n &::after {\n transform: scaleX(1);\n }\n }\n\n &.hidden {\n display: none;\n }\n\n & > .fas {\n position: relative;\n }\n }\n }\n\n & > .queue-list {\n height: calc(100% - 60px);\n\n position: relative;\n top: -60px;\n\n padding-top: 60px;\n padding-bottom: 10px;\n }\n\n & > .width-adjust {\n touch-action: none;\n cursor: col-resize;\n\n width: 10px;\n height: 100%;\n\n position: absolute;\n right: -5px;\n top: 0;\n z-index: 3;\n }\n\n & > #clear-queue {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 8px;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n left: 8px;\n bottom: 8px;\n z-index: 2;\n\n border: 1px solid;\n border-radius: 50%;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease,\n color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > div {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n }\n }\n }\n\n & > #right-container {\n display: flex;\n flex-wrap: wrap;\n width: calc(100% - 15vw);\n\n & > #right-content {\n display: flex;\n width: 100%;\n height: 100%;\n\n & > #main-container {\n display: flex;\n flex-direction: column;\n gap: 0px;\n width: calc(100% - 15vw);\n height: 100%;\n\n padding-top: 69px;\n\n position: relative;\n\n & > #edit-details {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 4px;\n\n width: calc(100% - 20vmin);\n height: 69px;\n\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n z-index: 2;\n\n margin-inline: auto;\n\n border: 1px solid;\n border-top: none;\n border-radius: 8px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n\n padding: 8px;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease;\n\n /* Theme dependent */\n background: rgba(30, 34, 45, 1);\n border-color: rgba(143, 163, 255, .2);\n box-shadow:\n 0 4px 12px rgba(0, 0, 0, .2),\n inset 0 1px 0px rgba(255, 255, 255, .05);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > .central {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n flex: 1;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: .75rem;\n\n width: 100%;\n\n font-size: 1em;\n\n & > .page-title {\n display: flex;\n align-items: center;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n /* Theme dependent */\n color: rgba(119, 166, 215, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > i {\n font-size: .9em;\n\n line-height: inherit;\n }\n\n & > a {\n color: inherit;\n\n white-space: nowrap;\n text-overflow: ellipsis;\n\n overflow: hidden;\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .75rem;\n\n & > .user-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n\n &.blocked {\n font-style: italic;\n text-decoration: line-through;\n\n opacity: .7;\n }\n &.empty-talk {\n /* Theme dependent */\n color: rgba(221, 105, 116, 1);\n }\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > a {\n color: inherit;\n }\n }\n\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px 8px;\n\n border: 1px solid;\n border-radius: calc(1rem + 4px);\n\n font-size: .8em;\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--diff-color);\n border-color: color-mix(in srgb, var(--diff-color) 20%, transparent);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n\n & > .subheader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: .75rem;\n\n width: 100%;\n\n font-size: .9em;\n\n & > .item-comment {\n display: flex;\n align-items: center;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n\n &.none {\n opacity: .6;\n }\n\n & > i {\n flex-shrink: 0;\n\n opacity: .6;\n }\n\n & > .text {\n white-space: nowrap;\n\n overflow: auto hidden;\n\n &.none {\n opacity: .6;\n }\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 4px;\n\n & > .minor-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 5px .5rem;\n\n border-radius: .375rem;\n\n font-size: .85rem;\n\n /* Theme dependent */\n color: rgba(175, 175, 175, 1);\n background: rgba(175, 175, 175, .15);\n }\n\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px 8px;\n\n border: 1px solid;\n border-radius: .375rem;\n\n font-size: .8em;\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--diff-color);\n border-color: color-mix(in srgb, var(--diff-color) 20%, transparent);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n }\n\n & > .nav-item-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 41px;\n height: 41px;\n\n position: absolute;\n top: 14px;\n z-index: 2;\n\n border-radius: 50%;\n border: 1px solid;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.disabled {\n pointer-events: none;\n\n opacity: 0;\n }\n\n &#previous-item-button {\n left: calc(5vmin - calc(41px / 2));\n }\n &#next-item-button {\n right: calc(5vmin - calc(41px / 2));\n }\n\n & > i {\n font-size: 16px;\n }\n }\n\n & > #ai-analysis-container {\n flex-shrink: 0;\n\n border: 1px solid;\n\n border-radius: 12px;\n margin: 12px;\n margin-bottom: 0;\n padding: 10px;\n\n overflow: none;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .2);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3),\n inset 0 1px 0px rgba(255, 255, 255, .08),\n inset 0 -1px 0px rgba(0, 0, 0, .3);\n\n background: linear-gradient(135deg,\n rgba(30, 34, 45, .7),\n rgba(25, 25, 36, .5)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.hidden {\n display: none;\n }\n\n & > .header {\n display: flex;\n align-items: center;\n gap: 6px;\n\n margin-bottom: 8px;\n\n & > .fa {\n font-size: 1.1em;\n }\n\n & > .title {\n font-size: .95em;\n letter-spacing: .3px;\n }\n\n & > .assessment {\n border-radius: 6px;\n padding: 3px 8px;\n\n font-size: .8em;\n font-weight: 700;\n\n &.low {\n /* Theme dependent */\n background: rgba(76, 175, 80, .25);\n }\n &.review {\n /* Theme dependent */\n background: rgba(255, 193, 7, .25);\n }\n &.suspicious {\n /* Theme dependent */\n background: rgba(244, 67, 54, .25);\n }\n &.bad {\n /* Theme dependent */\n background: rgba(211, 47, 47, .25);\n }\n &.error {\n /* Theme dependent */\n background: rgba(158, 158, 158, .25);\n }\n }\n\n & > .confidence {\n border-radius: 6px;\n padding: 3px 8px;\n\n font-size: .75em;\n font-weight: 600;\n }\n }\n\n & > .explanation {\n border-left: 3px solid;\n\n border-radius: 4px;\n margin-bottom: 6px;\n padding: 6px 8px;\n\n font-size: .8em;\n line-height: 1.3;\n\n /* Theme dependent */\n border-left-color: rgba(143, 163, 255, .4);\n }\n\n & > .issues {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n\n & > .issue {\n border-radius: 6px;\n padding: 4px 10px;\n\n font-size: .75em;\n font-weight: 600;\n\n &.low {\n /* Theme dependent */\n background: rgba(76, 175, 80, .25);\n }\n &.medium {\n /* Theme dependent */\n background: rgba(255, 193, 7, .25);\n }\n &.high {\n /* Theme dependent */\n background: rgba(244, 67, 54, .25);\n }\n &.critical {\n /* Theme dependent */\n background: rgba(211, 47, 47, .25);\n }\n }\n }\n }\n\n & > .notice {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: 8px;\n\n border-left: 4px solid;\n border-radius: 4px;\n\n margin: 10px;\n padding: 8px 12px;\n\n font-size: .9em;\n\n overflow: auto hidden;\n\n &.edit-war {\n /* Theme dependent */\n color: rgba(120, 27, 20, 1);\n border-left-color: rgba(247, 50, 20, 1);\n background: rgba(255, 205, 199, 1);\n }\n\n &.outdated {\n /* Theme dependent */\n color: rgba(102, 77, 3, 1);\n border-left-color: rgba(255, 193, 7, 1);\n background: rgba(255, 243, 205, 1);\n\n &.pending {\n /* Theme dependent */\n color: rgba(12, 84, 96, 1);\n border-left-color: rgba(23, 162, 184, 1);\n background: rgba(209, 236, 241, 1);\n }\n }\n\n & > .text {\n flex: 1;\n }\n\n & > .button {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n gap: 8px;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 6px 14px;\n\n font-size: .85em;\n font-weight: 600;\n white-space: nowrap;\n text-decoration: none;\n\n transition: color .2s ease,\n border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n color: rgba(102, 77, 3, 1);\n border-color: rgba(255, 193, 7, .35);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .1);\n\n background: rgba(255, 235, 159, .45);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > i {\n font-size: 14px;\n\n transition: transform .3s ease;\n }\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n color: rgba(80, 60, 0, 1);\n border-color: rgba(255, 193, 7, .6);\n box-shadow: 0 4px 16px rgba(255, 193, 7, .25);\n\n background: rgba(255, 235, 159, .65);\n\n & > i {\n transform: translateX(3px);\n\n &.restore {\n transform: rotateZ(180deg);\n }\n }\n }\n }\n\n &::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, .2);\n }\n }\n\n & > .diff-scroll-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n left: 8px;\n z-index: 2;\n\n border-radius: 50%;\n border: 1px solid;\n\n opacity: 1;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > i {\n font-size: 16px;\n }\n\n &#diff-scroll-up {\n top: 77px;\n }\n &#diff-scroll-down {\n bottom: 8px;\n }\n }\n\n & > #diff-container {\n flex: 1;\n\n padding: 12px;\n\n scroll-behavior: smooth;\n overflow: hidden auto;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(20, 22, 28, .3),\n transparent\n );\n\n & > .loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n height: 100%;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n\n & > .loading-spinner {\n margin-bottom: 24px;\n\n font-size: 56px;\n\n animation: logo-loader 2s ease-in-out infinite;\n }\n\n & > .loading-text {\n margin-bottom: 12px;\n\n font-size: 1.1em;\n text-align: center;\n font-weight: 500;\n letter-spacing: .3px;\n\n /* Theme dependent */\n color: rgba(160, 170, 200, 1);\n }\n }\n\n & > table {\n width: 100%;\n\n border: 1px solid;\n border-collapse: separate;\n border-spacing: 0;\n\n border-radius: 14px;\n margin-bottom: 24px;\n\n overflow: hidden;\n\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: .8em;\n line-height: 1.6;\n vertical-align: baseline;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .15);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .4),\n inset 0 1px 0px rgba(255, 255, 255, .1),\n inset 0 -1px 0px rgba(0, 0, 0, .2),\n 0 0 0 1px rgba(143, 163, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(35, 40, 52, .5),\n rgba(30, 35, 48, .4)\n );\n -webkit-backdrop-filter: blur(16px) saturate(110%);\n backdrop-filter: blur(16px) saturate(110%);\n\n & > tbody {\n .mw-diff-movedpara-left, .mw-diff-movedpara-right {\n text-decoration: none;\n }\n\n & > tr {\n border: none;\n\n overflow-wrap: anywhere;\n\n transition: background .25s ease;\n\n &:hover {\n & > td {\n /* Theme dependent */\n background: rgba(143, 163, 255, .12);\n }\n }\n\n &:not(.diff-addedline, .diff-deletedline) {\n & > td {\n /* Theme dependent */\n background: rgba(255, 255, 255, .02);\n }\n }\n\n .flash-highlight {\n animation: flash-highlight 1s ease-out infinite;\n }\n\n & > td {\n border: none;\n\n overflow-wrap: anywhere;\n\n transition: background .25s ease,\n color .25s ease;\n\n &:not(.diff-marker) {\n width: 50%;\n\n padding: 10px 14px;\n\n transition: background .25s ease;\n\n /* Theme dependent */\n color: rgba(200, 210, 230, 1);\n }\n\n &.diff-lineno {\n -webkit-user-select: none;\n user-select: none;\n\n border-bottom: 1px solid;\n\n padding: 10px 12px;\n\n font-size: .85em;\n font-weight: 600;\n text-align: center;\n letter-spacing: .6px;\n\n /* Theme dependent */\n border-bottom-color: rgba(143, 163, 255, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .12),\n rgba(158, 115, 212, .08)\n );\n }\n\n &.diff-marker {\n -webkit-user-select: none;\n user-select: none;\n\n width: 40px;\n\n border-right: 1px solid;\n\n padding: 10px 8px;\n\n font-weight: 700;\n text-align: center;\n\n /* Theme dependent */\n border-right-color: rgba(143, 163, 255, .15);\n\n color: rgba(160, 170, 200, .9);\n\n background: linear-gradient(90deg,\n rgba(40, 45, 60, .3),\n rgba(35, 40, 52, .2)\n );\n\n &::before {\n content: attr(data-marker);\n }\n }\n\n &.diff-empty {\n /* Theme dependent */\n background: rgba(20, 25, 35, .3);\n }\n\n &:is(.diff-addedline, .diff-deletedline) {\n position: relative;\n\n border-left: 4px solid;\n\n transition: background .25s ease,\n border-left-color .25s ease,\n box-shadow .25s ease;\n\n &.diff-addedline {\n /* Theme dependent */\n border-left-color: rgba(76, 175, 80, .9);\n\n background: rgba(76, 175, 80, .12);\n\n transition: background .25s ease;\n\n &:hover {\n /* Theme dependent */\n border-left-color: rgba(129, 199, 132, 1);\n background: rgba(129, 199, 132, .18);\n box-shadow: inset 0 0 12px rgba(76, 175, 80, .15);\n }\n }\n &.diff-deletedline {\n /* Theme dependent */\n border-left-color: rgba(244, 67, 54, .9);\n\n background: rgba(244, 67, 54, .12);\n\n transition: background .25s ease;\n\n &:hover {\n /* Theme dependent */\n border-left-color: rgba(255, 112, 97, 1);\n background: rgba(255, 112, 97, .18);\n box-shadow: inset 0 0 12px rgba(244, 67, 54, .15);\n }\n }\n }\n\n & > div {\n & > :is(ins, del) {\n border-radius: 6px;\n padding: 2px 6px;\n\n font-weight: 600;\n text-decoration: none;\n\n transition: background .25s ease,\n transform .15s ease;\n }\n\n & > ins {\n /* Theme dependent */\n background: rgba(130, 169, 26, .55);\n\n &:hover {\n /* Theme dependent */\n background: rgba(139, 195, 74, .6);\n\n transform: scale(1.08);\n }\n }\n & > del {\n /* Theme dependent */\n background: rgba(244, 67, 54, .55);\n\n &:hover {\n /* Theme dependent */\n background: rgba(255, 112, 97, .6);\n\n transform: scale(1.08);\n }\n }\n }\n\n a {\n text-decoration: none;\n\n /* Theme dependent */\n color: rgba(107, 163, 216, 1);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n text-decoration: underline;\n }\n }\n }\n }\n }\n }\n }\n\n & > #pending-changes-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n position: fixed;\n z-index: 2;\n\n transform: translateX(-50%);\n\n &.hidden {\n display: none;\n }\n\n & > :is(.accept, .reject) {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n gap: 8px;\n\n border: 1px solid;\n\n border-radius: 10px 10px 0 0;\n padding: 8px 12px;\n\n font-size: .95em;\n font-weight: 600;\n line-height: 1;\n text-decoration: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease,\n border-color .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.accept {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .14);\n box-shadow: 0 10px 26px rgba(46, 125, 50, .12),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .25),\n rgba(56, 142, 60, .15)\n );\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n box-shadow: 0 14px 30px rgba(46, 125, 50, .2),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n }\n &:active {\n /* Theme dependent */\n box-shadow: 0 6px 20px rgba(46, 125, 50, .1),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n }\n }\n &.reject {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, .14);\n box-shadow: 0 10px 26px rgba(155, 40, 34, .12),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n background: linear-gradient(135deg,\n rgba(244, 67, 54, .25),\n rgba(211, 47, 47, .15)\n );\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n box-shadow: 0 14px 30px rgba(155, 40, 34, .2),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n }\n &:active {\n /* Theme dependent */\n box-shadow: 0 6px 20px rgba(155, 40, 34, .1),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n }\n }\n }\n }\n\n & > #progress-bar-container {\n pointer-events: none;\n\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-direction: column;\n\n position: absolute;\n top: 0px;\n bottom: 56px;\n right: 0px;\n\n padding: 0;\n\n overflow: hidden;\n\n & > .progress-bar {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 180px;\n height: 32px;\n\n position: relative;\n\n border: 1px solid;\n\n border-radius: 16px;\n margin-bottom: 10px;\n margin-right: 10px;\n\n overflow: hidden;\n\n font-size: .85em;\n font-weight: 400;\n\n opacity: 1;\n\n transition: width .3s ease,\n opacity .3s ease,\n border-color .3s ease,\n box-shadow .4s cubic-bezier(.4, 0, .2, 1),\n background .4s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .15),\n 0 2px 4px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .1),\n rgba(158, 115, 212, .1)\n );\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.error {\n /* Theme dependent */\n border-color: rgba(239, 68, 68, .8);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .15),\n 0 2px 4px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(255, 68, 68, .1),\n rgba(220, 38, 38, .1)\n );\n\n & > .progress-bar-overlay {\n /* Theme dependent */\n box-shadow: inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(255, 68, 68, .6),\n rgba(220, 38, 38, .6)\n );\n }\n }\n\n & > .progress-bar-overlay {\n width: 0;\n height: 100%;\n\n position: absolute;\n left: 0;\n top: 0;\n\n border-radius: 16px;\n\n transition: width .4s cubic-bezier(.4, 0, .2, 1),\n box-shadow .4s cubic-bezier(.4, 0, .2, 1),\n background .4s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n box-shadow: inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .6),\n rgba(158, 115, 212, .6)\n );\n }\n\n & > .progress-bar-text {\n max-width: 100%;\n\n position: relative;\n\n padding: 0 12px;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n white-space: nowrap;\n\n /* Theme dependent */\n text-shadow: 0 1px 2px rgba(0, 0, 0, .2);\n\n color: rgba(255, 255, 255, 1);\n }\n }\n }\n\n & > #bottom-tools {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n\n max-width: calc(100% - 20vmin);\n width: fit-content;\n\n position: absolute;\n left: 0;\n right: 0;\n bottom: 8px;\n z-index: 2;\n\n margin-inline: auto;\n\n border: 1px solid;\n border-radius: 16px;\n\n padding: 8px;\n\n overflow: auto hidden;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > .bottom-tool-item {\n position: relative;\n\n white-space: nowrap;\n\n transition: opacity .2s ease;\n\n &.hidden {\n pointer-events: none;\n\n opacity: .2;\n }\n\n & > .bottom-tool-trigger {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-size: .9em;\n font-weight: 400;\n\n background: transparent;\n\n transition: color .2s ease,\n background .2s ease;\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(255, 255, 255, .08);\n }\n\n &.active {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n\n & > .bottom-tool-chevron {\n transform: rotate(180deg);\n }\n }\n\n & > .bottom-tool-chevron {\n font-size: .75em;\n\n transition: transform .2s ease;\n }\n }\n }\n\n & > .bottom-tool-action {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n\n transition: color .2s ease,\n background .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .9);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(255, 255, 255, .08);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: .2;\n }\n }\n }\n\n & > #copy-link {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 8px;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n right: 8px;\n bottom: 8px;\n z-index: 2;\n\n border: 1px solid;\n border-radius: 50%;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease,\n color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > div {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n }\n }\n }\n\n & > #right-details {\n width: 15vw;\n\n position: relative;\n\n border-left: 1px solid;\n\n /* Theme dependent */\n border-left-color: rgba(54, 62, 81, 1);\n\n & > #right-top {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n align-content: center;\n justify-content: center;\n\n width: 100%;\n height: 69px;\n\n border-bottom: 2px solid;\n border-left: 1px solid;\n border-bottom-left-radius: 8px;\n\n padding: 8px 15px;\n\n /* Theme dependent */\n border-color: rgba(54, 62, 81, 1);\n\n background: rgba(41, 47, 60, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .tabs {\n display: flex;\n justify-content: center;\n width: 100%;\n\n & > .tab {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border: 2px solid;\n\n padding: 10px;\n\n opacity: .75;\n\n transition: background .35s cubic-bezier(.4, 0, .2, 1),\n opacity .35s cubic-bezier(.4, 0, .2, 1),\n box-shadow .35s cubic-bezier(.4, 0, .2, 1),\n border-color .35s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: inset 0 2px 6px rgba(0, 0, 0, .4);\n\n background: rgba(60, 63, 75, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n &:hover, &:focus-visible {\n opacity: 1;\n }\n\n &.selected {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5),\n inset 0 1px 2px rgba(0, 0, 0, .2);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25),\n rgba(118, 75, 162, .25)\n );\n }\n\n &.hidden {\n display: none;\n }\n\n &:first-child {\n border-radius: 10px 0 0 10px;\n }\n &:last-child {\n border-radius: 0 10px 10px 0;\n }\n }\n }\n\n & > .icons {\n display: flex;\n justify-content: center;\n width: 100%;\n\n font-size: 1.4em;\n\n & > .hidden {\n display: none;\n }\n }\n }\n\n & > .section {\n display: flex;\n flex-direction: column;\n height: calc(50% - calc(69px / 2) - 15px);\n\n margin: 10px 10px 0 10px;\n\n border: 1px solid;\n border-radius: 16px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n background: rgba(30, 35, 45, .8);\n\n &.hidden {\n display: none;\n }\n\n & > .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n\n padding: 14px 14px 12px;\n\n border-bottom: 1px solid;\n\n /* Theme dependent */\n border-bottom-color: rgba(143, 163, 255, .2);\n background: rgba(30, 35, 45, .8);\n\n & > .title {\n font-weight: 600;\n font-size: .85em;\n text-transform: uppercase;\n letter-spacing: .07em;\n white-space: nowrap;\n\n & > i {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n cursor: pointer;\n\n margin-right: 4px;\n\n font-size: .9em;\n\n transition: transform .5s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n transform: rotate(180deg);\n }\n }\n }\n\n & > .pills {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-shrink: 0;\n\n & > .pill {\n border: 1px solid;\n border-radius: 10px;\n padding: 4px 8px;\n\n font-size: .75em;\n font-weight: 500;\n\n white-space: nowrap;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(224, 228, 240, 1);\n background: rgba(140, 132, 255, .1);\n\n &.uw-1 {\n /* Theme dependent */\n border-color: rgba(107, 163, 216, .8);\n background: rgba(107, 163, 216, .1);\n color: rgba(107, 163, 216, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .8);\n background: rgba(143, 163, 255, .15);\n color: rgba(143, 163, 255, 1);\n }\n }\n &.uw-2 {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .8);\n background: rgba(255, 193, 7, .1);\n color: rgba(255, 193, 7, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n color: rgba(255, 193, 7, 1);\n }\n }\n &.uw-3 {\n /* Theme dependent */\n border-color: rgba(255, 87, 34, .8);\n background: rgba(255, 87, 34, .1);\n color: rgba(255, 87, 34, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 87, 34, 1);\n background: rgba(255, 87, 34, .15);\n color: rgba(255, 87, 34, 1);\n }\n }\n &.uw-4 {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, .8);\n background: rgba(244, 67, 54, .1);\n color: rgba(244, 67, 54, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, 1);\n background: rgba(244, 67, 54, .15);\n color: rgba(244, 67, 54, 1);\n }\n }\n &.uw-4im {\n /* Theme dependent */\n border-color: rgba(178, 34, 34, .8);\n background: rgba(178, 34, 34, .1);\n color: rgba(178, 34, 34, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(178, 34, 34, 1);\n background: rgba(178, 34, 34, .15);\n color: rgba(178, 34, 34, 1);\n }\n }\n\n &.ub {\n /* Theme dependent */\n border-color: rgba(255, 99, 132, .8);\n background: rgba(255, 99, 132, .1);\n color: rgba(255, 99, 132, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 99, 132, 1);\n background: rgba(255, 99, 132, .15);\n color: rgba(255, 99, 132, 1);\n }\n }\n }\n }\n }\n\n & > .queue-list {\n flex: 1;\n height: 100%;\n\n padding: 4px;\n\n /* Theme dependent */\n background: rgba(20, 22, 28, .3);\n }\n\n & > .footer {\n cursor: pointer;\n\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n\n padding: 10px 14px;\n\n border-top: 1px solid;\n\n font-size: .85em;\n\n transition: background .2s ease;\n\n /* Theme dependent */\n background: rgba(30, 35, 45, .8);\n border-top-color: rgba(143, 163, 255, .2);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n background: rgba(255, 255, 255, .08);\n\n & > i {\n transform: translateX(3px);\n }\n }\n\n & > i {\n transition: transform .2s ease;\n }\n }\n }\n\n &:has(#user-contributions.hidden) {\n & > #page-history {\n height: calc(100% - 89px);\n }\n }\n &:has(#page-history.hidden) {\n & > #user-contributions {\n height: calc(100% - 89px);\n }\n }\n\n & > .width-adjust {\n touch-action: none;\n cursor: col-resize;\n\n width: 10px;\n height: 100%;\n\n position: absolute;\n left: -5px;\n top: 0;\n z-index: 3;\n }\n\n & > .height-adjust {\n touch-action: none;\n cursor: row-resize;\n\n height: 10px;\n width: 100%;\n\n position: absolute;\n left: 0;\n top: calc(50% - 5px);\n z-index: 3;\n }\n }\n }\n }\n }\n\n & > .bottom-tool-menu {\n display: none;\n max-width: calc(100vw - 40px);\n min-width: 200px;\n\n position: absolute;\n left: 0;\n bottom: calc(100% + 8px);\n z-index: 3;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 6px;\n\n overflow-y: visible;\n\n animation: bottom-tool-menu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5);\n\n background: rgba(35, 38, 48, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.show {\n display: block;\n }\n\n & > .menu-option {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border-radius: 8px;\n padding: 10px 12px;\n\n font-size: .9em;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.hidden {\n display: none;\n }\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n\n & > i:first-child {\n opacity: 1;\n }\n\n & > :is(.menu-option-icon, .menu-option-chevron) {\n opacity: 1;\n }\n }\n\n & > i:first-child {\n width: 18px;\n\n font-size: 1.1em;\n text-align: center;\n\n opacity: .8;\n\n transition: opacity .2s ease;\n }\n\n & > span {\n flex: 1;\n }\n\n & > :is(.menu-option-icon, .menu-option-chevron) {\n margin-left: auto;\n\n font-size: .85em;\n\n opacity: .5;\n\n transition: opacity .2s ease;\n }\n\n & > .submenu {\n cursor: default;\n\n display: none;\n min-width: 240px;\n\n position: absolute;\n left: calc(100% + 4px);\n top: -6px;\n z-index: 4;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 6px;\n\n color: var(--body-color);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5);\n\n background: rgba(35, 38, 48, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.show {\n display: block;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n }\n\n & > .bottom-subcontent-title {\n border-bottom: 1px solid;\n\n margin-bottom: 12px;\n padding-bottom: 8px;\n\n font-size: .95em;\n font-weight: 600;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .1);\n }\n\n & > .bottom-subcontent-input-title {\n margin: 10px 0 2px 0;\n\n font-size: .9em;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n\n & > :is(select, input[type=\"text\"]) {\n width: 100%;\n\n font-size: .9em;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n }\n\n & > .bottom-subcontent-button {\n --background: 123, 143, 245;\n\n display: block;\n width: 100%;\n\n margin: 10px 0 2px 0;\n\n font-size: .9em;\n font-weight: 600;\n }\n }\n }\n\n &:is(#revert-menu, #warn-menu) {\n max-height: calc(100vh - 120px);\n\n overflow: hidden auto;\n\n & > .warning-menu {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 280px;\n\n position: relative;\n\n border-radius: 12px;\n padding: 8px;\n\n & > .warning-menu-no-items {\n text-align: center;\n padding: 20px;\n\n font-size: .9em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .7);\n }\n\n & > .favorites-section {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 4px;\n\n & > .favorites-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n\n font-size: .85em;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n\n /* Theme dependent */\n color: rgba(255, 193, 7, .9);\n\n & > .icon {\n font-size: 1.1em;\n }\n }\n\n & > .favorites-container {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n }\n\n & > .favorites-separator {\n height: 1px;\n margin: 8px 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1) 20%,\n rgba(255, 255, 255, .1) 80%,\n transparent\n );\n }\n\n & > .favorites-section:not(:has(.warning-menu-item)) {\n display: none;\n\n & ~ .favorites-separator {\n display: none;\n }\n }\n\n & > .menu-option {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n font-size: .95em;\n\n transition: border-color .2s ease,\n background .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n color: rgba(224, 228, 240, 1);\n background: rgba(40, 43, 52, .4);\n\n &:hover, &.focus-visible {\n transform: translateX(3px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n color: rgba(143, 163, 255, 1);\n background: rgba(102, 126, 234, .12);\n\n & > .icon {\n opacity: 1;\n transform: scale(1.1);\n }\n\n & > .submenu-arrow {\n opacity: 1;\n transform: translateX(2px);\n }\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n background: rgba(102, 126, 234, .15);\n }\n\n & > .icon {\n flex-shrink: 0;\n width: 20px;\n\n text-align: center;\n font-size: 1.1em;\n\n opacity: .85;\n\n transition: opacity .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n\n & > span:not(.icon):not(.submenu-arrow) {\n flex: 1;\n\n font-weight: 500;\n }\n\n & > .submenu-arrow {\n flex-shrink: 0;\n\n font-size: .8em;\n\n opacity: .5;\n\n transition: opacity .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .8);\n }\n }\n }\n }\n }\n\n & > .warning-submenu {\n display: none;\n max-width: calc(100vw - 60px);\n min-width: 420px;\n max-height: calc(100vh - 120px);\n\n position: absolute;\n z-index: 5;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 8px;\n\n overflow-y: auto;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 12px 48px rgba(0, 0, 0, .6),\n 0 0 0 1px rgba(255, 255, 255, .05);\n\n background: rgba(30, 33, 42, .98);\n -webkit-backdrop-filter: blur(25px);\n backdrop-filter: blur(25px);\n\n &.show {\n display: flex;\n flex-direction: column;\n gap: 3px;\n }\n }\n\n .warning-menu-item {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n font-size: .95em;\n\n transition: border-color .2s ease,\n background .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n background: rgba(40, 43, 52, .4);\n\n &:hover, &.focus-visible {\n transform: translateX(3px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n background: rgba(102, 126, 234, .12);\n }\n\n &.favorite-item {\n cursor: grab;\n\n &:active {\n cursor: grabbing;\n }\n\n &.dragging {\n opacity: 0.5;\n transform: scale(0.95);\n }\n }\n\n & > .favorite-star {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border-radius: 4px;\n\n font-size: 1.2em;\n line-height: 1;\n\n transition: transform .2s cubic-bezier(.4, 0, .2, 1),\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .4);\n\n &:hover {\n transform: scale(1.2);\n\n /* Theme dependent */\n color: rgba(255, 193, 7, .8);\n }\n\n &.favorited {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n\n &:hover {\n /* Theme dependent */\n color: rgba(255, 152, 0, 1);\n }\n }\n\n &.spin {\n animation: star-spin 0.5s cubic-bezier(.4, 0, .2, 1);\n }\n }\n\n & > .icon {\n flex-shrink: 0;\n width: 20px;\n\n text-align: center;\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n\n & > .warning-menu-title {\n flex: 1;\n\n font-size: .92em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 228, 240, 1);\n }\n\n & > .fa-circle-question {\n flex-shrink: 0;\n\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .6);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .warning-menu-buttons {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n\n margin-left: 8px;\n }\n\n & > .warning-menu-buttons > .warning-menu-button {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 7px 14px;\n\n font-size: .82em;\n font-weight: 500;\n text-transform: capitalize;\n\n transition: border-color .2s ease,\n background .2s ease,\n color .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, .95);\n background: rgba(102, 126, 234, .1);\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n color: rgba(143, 163, 255, 1);\n background: rgba(102, 126, 234, .22);\n }\n\n &:active {\n transform: translateY(0);\n }\n\n &.warning-menu-no-warn-button {\n /* Theme dependent */\n border-color: rgba(255, 152, 0, .2);\n color: rgba(255, 193, 7, .95);\n background: rgba(255, 152, 0, .1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 152, 0, .4);\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 152, 0, .22);\n }\n }\n }\n }\n\n & > .levels-menu {\n display: none;\n min-width: 0px;\n\n position: fixed;\n z-index: 5;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 8px;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .6),\n 0 0 0 1px rgba(255, 255, 255, .05);\n\n background: rgba(28, 30, 38, .98);\n -webkit-backdrop-filter: blur(24px);\n backdrop-filter: blur(24px);\n\n &.show {\n display: flex;\n gap: 6px;\n }\n\n & > .levels-menu-item {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n border-radius: 8px;\n padding: 6px 14px;\n\n font-size: .95em;\n font-weight: 600;\n text-align: center;\n white-space: nowrap;\n\n transition: all .2s cubic-bezier(.4, 0, .2, 1);\n\n background: rgba(255, 255, 255, .05);\n border: 1px solid rgba(255, 255, 255, .1);\n\n &:hover {\n transform: translateY(-2px);\n background: rgba(255, 255, 255, .08);\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n\n &:active {\n transform: translateY(0);\n }\n }\n }\n\n .queue-list {\n overflow: hidden auto;\n\n &:is(#user-contributions-content, #page-history-content) {\n & > .queue-item {\n margin: 4px 0;\n }\n }\n\n & > .queue-empty {\n text-align: center;\n padding: 40px 20px;\n font-size: 1em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n }\n\n & > .historical-bar {\n height: 4px;\n width: 100%;\n\n position: relative;\n\n margin: 8px 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1) 20%,\n rgba(255, 255, 255, .1) 80%,\n transparent\n );\n\n & > .label {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n font-size: 1em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .8);\n }\n }\n\n & > .queue-item {\n cursor: pointer;\n\n display: flex;\n\n position: relative;\n\n border: 1px solid;\n border-radius: .75rem;\n\n margin: 4px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .4);\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n background .2s ease;\n\n &:hover, &:focus-within {\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 4px 12px oklch(0 0 0 / 0.3);\n\n background: rgba(40, 43, 52, .6);\n }\n\n &.current {\n /* Theme dependent */\n border-color: linear-gradient(90deg,\n rgba(40, 43, 52, .4),\n rgba(40, 43, 82, .6)\n );\n box-shadow: 0 0 0 1px rgba(60, 63, 122, 1) inset;\n\n background: rgba(40, 43, 82, .6);\n\n & > .item-body {\n & > .item-tags {\n & > .tag {\n /* Theme dependent */\n color: rgba(145, 145, 165, 1);\n background: rgba(60, 63, 122, .4);\n border-color: rgba(60, 63, 122, .6);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .4);\n border-color: rgba(255, 193, 7, .6);\n }\n }\n }\n }\n }\n\n &.mentions-me {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n box-shadow: 0 0 0 1px rgba(255, 193, 7, 1) inset;\n\n background: rgba(40, 43, 52, .6);\n }\n\n & > .item-color {\n --ores-color: rgba(128, 128, 128, 1);\n\n flex-shrink: 0;\n width: 4px;\n\n position: relative;\n\n opacity: .85;\n\n /* Theme dependent */\n background: var(--ores-color);\n }\n\n & > .item-body {\n --ores-color: rgba(128, 128, 128, 1);\n --diff-color: rgba(128, 128, 128, 1);\n\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: .5rem;\n\n min-width: 0;\n\n padding: .75rem 1rem;\n\n & > .header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: .75rem;\n\n & > .page-title {\n display: flex;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n font-size: clamp(.825rem, .85rem + .35vw, .95rem);\n font-weight: 600;\n\n word-wrap: break-word;\n word-break: break-word;\n\n line-height: 1.35;\n\n /* Theme dependent */\n color: rgba(205, 204, 202, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > i {\n font-size: .9em;\n\n line-height: inherit;\n }\n }\n\n & > .timestamp {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: 4px;\n\n min-width: 3ex;\n\n padding-top: 1px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n white-space: nowrap;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .75rem;\n\n width: 100%;\n\n & > .user-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n font-weight: 500;\n\n hyphens: auto;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n\n &.blocked {\n font-style: italic;\n text-decoration: line-through;\n\n opacity: .7;\n }\n &.empty-talk {\n /* Theme dependent */\n color: rgba(221, 105, 116, 1);\n }\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n }\n\n & > .chips {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-grow: 1;\n gap: 4px;\n\n & > .ores-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--ores-color);\n background: color-mix(in srgb, var(--ores-color) 15%, transparent);\n }\n\n & > .diff-chips {\n display: flex;\n align-items: center;\n gap: 4px;\n\n & > .minor-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 5px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n /* Theme dependent */\n color: rgba(175, 175, 175, 1);\n background: rgba(175, 175, 175, .15);\n }\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n /* Theme dependent */\n color: var(--diff-color);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n }\n\n & > .item-comment {\n display: flex;\n align-items: center;\n gap: 4px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n overflow: hidden;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n\n & > i {\n flex-shrink: 0;\n\n opacity: .6;\n }\n\n & > .text {\n font-style: italic;\n white-space: nowrap;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n &.none {\n opacity: .6;\n }\n }\n }\n\n & > .item-tags {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .5rem;\n\n & > .tag {\n display: flex;\n align-items: center;\n gap: 2px;\n\n padding: 1px .5rem;\n\n border: 1px solid;\n border-radius: .375rem;\n\n font-size: .7rem;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(135, 135, 135, 1);\n background: rgba(45, 44, 51, 1);\n border-color: rgba(38, 37, 35, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n border-color: rgba(255, 193, 7, .4);\n }\n }\n }\n }\n\n & > .remove-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 32px;\n height: 32px;\n\n position: absolute;\n right: 0px;\n bottom: 0px;\n\n border-top-left-radius: 8px;\n\n line-height: 1;\n\n transition: color .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .7);\n background: rgba(255, 255, 255, 0);\n\n &:hover {\n /* Theme dependent */\n color: rgba(255, 70, 0, 1);\n background: rgba(255, 70, 0, .15);\n }\n }\n }\n }\n\n .tooltip {\n min-width: 0;\n max-height: 80vh;\n\n position: fixed;\n left: 0;\n top: 0;\n z-index: calc(var(--max-z-index) - 3);\n\n border: 2px solid;\n\n border-radius: 8px;\n padding: 4px 6px;\n\n overflow-wrap: break-word;\n overflow: hidden auto;\n\n font-size: .95em;\n line-height: 1.45;\n word-wrap: break-word;\n white-space: normal;\n\n animation: tooltip-enter .1s ease-out forwards;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n box-shadow: 0 10px 30px rgba(6, 12, 24, .6),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n color: rgba(234, 240, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .03),\n rgba(255, 255, 255, .01)\n );\n -webkit-backdrop-filter: blur(14px) brightness(.7);\n backdrop-filter: blur(14px) brightness(.7);\n\n &:not(.buttons) {\n pointer-events: none;\n\n max-width: 460px;\n }\n\n &.buttons {\n display: flex;\n flex-direction: row;\n gap: 8px;\n\n z-index: calc(var(--max-z-index) - 2);\n\n white-space: nowrap;\n\n & > .button {\n cursor: pointer;\n\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 4px 8px;\n\n font-size: .95em;\n font-weight: 500;\n letter-spacing: .3px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(255, 255, 255, .05);\n\n color: rgba(240, 245, 255, .92);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .08),\n rgba(255, 255, 255, .02)\n );\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .4),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .14),\n rgba(255, 255, 255, .06)\n );\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n box-shadow: 0 1px 4px rgba(0, 0, 0, .3),\n inset 0 1px 2px rgba(0, 0, 0, .2);\n }\n }\n }\n\n & > .tooltip-title {\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-bottom: 1px solid;\n\n border-radius: 6px;\n margin-bottom: 12px;\n padding: 8px 10px;\n\n font-size: 1.04em;\n font-weight: 700;\n letter-spacing: .25px;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .05);\n\n color: rgba(255, 255, 255, .92);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .02),\n rgba(0, 0, 0, .04)\n );\n -webkit-backdrop-filter: blur(6px);\n backdrop-filter: blur(6px);\n }\n\n & > .tooltip-item {\n display: flex;\n flex-direction: column;\n\n position: relative;\n\n border: 1px solid;\n\n border-radius: 10px;\n margin: 10px 0;\n padding: 10px 12px;\n\n overflow: hidden;\n overflow-wrap: anywhere;\n\n word-wrap: break-word;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .04);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .075),\n rgba(0, 0, 0, .25)\n );\n\n &:is(.user-warnings, .user-blocks) {\n & > .tooltip-item-level {\n display: block;\n width: 100%;\n\n border-bottom: 1px solid;\n\n border-radius: 6px 6px 0 0;\n padding: 6px 10px;\n\n font-size: .95em;\n font-weight: 700;\n letter-spacing: .3px;\n\n /* Theme dependent */\n border-bottom: 1px solid rgba(255, 255, 120, .25);\n\n color: rgba(255, 255, 120, .95);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 120 .22),\n rgba(255, 255, 120, .08)\n );\n }\n\n & > .tooltip-item-details {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n\n & > :is(.tooltip-item-user, .tooltip-item-time) {\n font-size: .82em;\n font-weight: 400;\n\n opacity: .8;\n\n &.tooltip-item-user {\n /* Theme dependent */\n color: rgba(150, 210, 255, .9);\n }\n &.tooltip-item-time {\n /* Theme dependent */\n color: rgba(220, 225, 235, .9);\n\n & > span:not(:first-of-type) {\n margin-left: 1ex;\n }\n }\n }\n }\n }\n\n & > .tooltip-more {\n border-top: 1px solid;\n\n border-radius: 8px;\n margin-top: 14px;\n padding-top: 10px;\n\n font-size: .92em;\n font-style: italic;\n text-align: center;\n\n opacity: .95;\n\n /* Theme dependent */\n border-top-color: rgba(255, 255, 255, .04);\n\n color: rgba(240, 240, 255, .75);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .015),\n rgba(0, 0, 0, .03)\n );\n -webkit-backdrop-filter: blur(4px);\n backdrop-filter: blur(4px);\n }\n }\n }\n\n .confirmation-modal-overlay {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 6);\n\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n animation: fade-in .2s ease-out;\n\n &.closing {\n animation: fade-out .2s ease-out forwards;\n }\n\n & > .confirmation-modal {\n max-width: 500px;\n min-width: 400px;\n\n border: 1px solid;\n\n border-radius: 16px;\n\n word-wrap: break-word;\n\n animation: scale-in .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 12px 48px rgba(0, 0, 0, .7),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: rgba(41, 47, 60, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.closing {\n animation: scale-out .2s ease-out forwards;\n }\n\n & > .confirmation-modal-header {\n border-bottom: 1px solid;\n\n padding: 20px 24px;\n\n /* Theme dependent */\n border-bottom-color: rgba(54, 62, 81, 1);\n\n & > .confirmation-modal-title {\n font-size: 1.2em;\n font-weight: 700;\n }\n }\n\n & > .confirmation-modal-body {\n max-height: 70vh;\n\n padding: 24px;\n\n line-height: 1.5;\n\n overflow: hidden auto;\n\n /* Theme dependent */\n color: rgba(187, 187, 187, 1);\n\n & > .confirmation-modal-username {\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(91, 154, 255, 1);\n }\n\n & > .confirmation-modal-input {\n width: 100%;\n\n border: 1px solid;\n border-radius: 4px;\n\n margin-top: 10px;\n padding: 8px;\n\n /* Theme dependent */\n color: white;\n border-color: rgba(255, 255, 255, .2);\n background: rgba(0, 0, 0, .3);\n }\n }\n\n & > .confirmation-modal-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n\n border-top: 1px solid;\n\n padding: 16px 24px;\n\n /* Theme dependent */\n border-top-color: rgba(54, 62, 81, 1);\n\n & > .confirmation-modal-footer-right {\n display: flex;\n gap: 12px;\n }\n\n &.confirmation-modal-footer-vertical {\n flex-direction: column;\n align-items: stretch;\n\n & > .confirmation-modal-button {\n width: 100%;\n }\n }\n }\n\n .confirmation-modal-button {\n font-size: .95em;\n font-weight: 500;\n }\n }\n }\n\n .notification-panel {\n pointer-events: none;\n\n display: flex;\n flex-direction: column;\n width: 480px;\n max-height: 600px;\n\n position: absolute;\n left: 15px;\n top: 55px;\n z-index: calc(var(--max-z-index) - 9);\n\n border: 1px solid;\n border-radius: 18px;\n\n overflow: hidden;\n\n opacity: 0;\n\n transform: translateY(-20px) scale(.95);\n\n transition: opacity .3s ease,\n transform .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 20px 60px rgba(0, 0, 0, .8),\n 0 0 0 1px rgba(255, 255, 255, .08),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n\n background: rgba(25, 27, 36, .96);\n -webkit-backdrop-filter: blur(25px) brightness(0.95);\n backdrop-filter: blur(25px) brightness(0.95);\n\n a {\n /* Theme dependent */\n color: rgba(120, 170, 255, 1);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(160, 195, 255, 1);\n }\n\n &:visited {\n /* Theme dependent */\n color: rgba(150, 185, 255, 1);\n }\n }\n\n &.show {\n pointer-events: auto;\n\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n & > .notification-header {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n border-bottom: 1px solid;\n\n padding: 18px 22px;\n\n font-size: 1.12em;\n font-weight: 700;\n letter-spacing: 0.3px;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .08);\n\n color: rgba(245, 245, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(120, 145, 255, .12),\n rgba(140, 100, 200, .08)\n );\n\n & > .mark-all-read {\n cursor: pointer;\n\n font-size: 0.78em;\n font-weight: 500;\n letter-spacing: 0.2px;\n\n padding: 6px 12px;\n border-radius: 6px;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(120, 170, 255, 1);\n background: rgba(120, 170, 255, .08);\n\n &:hover {\n /* Theme dependent */\n background: rgba(120, 170, 255, .15);\n color: rgba(160, 200, 255, 1);\n }\n\n &:active {\n opacity: .85;\n }\n }\n }\n\n & > .notification-list {\n max-height: 520px;\n\n overflow: hidden auto;\n\n padding: 8px;\n\n & > .notifications-empty {\n padding: 40px 20px;\n\n text-align: center;\n\n font-size: 0.95em;\n\n /* Theme dependent */\n color: rgba(120, 125, 145, 1);\n\n & strong {\n /* Theme dependent */\n color: rgba(150, 155, 175, 1);\n }\n }\n\n & > .notification {\n cursor: pointer;\n\n display: flex;\n align-items: flex-start;\n gap: 14px;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 14px 18px;\n margin-bottom: 8px;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n\n background: linear-gradient(135deg,\n rgba(50, 55, 75, .4),\n rgba(40, 45, 65, .3)\n );\n\n &:hover {\n opacity: 1;\n\n /* Theme dependent */\n border-color: rgba(120, 170, 255, .3);\n box-shadow: 0 8px 24px rgba(120, 170, 255, .15),\n inset 0 1px 0 rgba(255, 255, 255, .04);\n\n background: linear-gradient(135deg,\n rgba(80, 100, 160, .15),\n rgba(70, 85, 145, .1)\n );\n\n transform: translateY(-2px);\n }\n\n &.unread {\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(120, 170, 255, .5);\n box-shadow: 0 0 20px rgba(120, 170, 255, .2),\n inset 0 1px 0 rgba(255, 255, 255, .06);\n\n background: linear-gradient(135deg,\n rgba(120, 170, 255, .1),\n rgba(100, 145, 255, .05)\n );\n }\n\n &.read {\n opacity: .72;\n\n border-color: rgba(255, 255, 255, .04);\n }\n\n & > .notification-icon {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n\n border-radius: 10px;\n\n overflow: hidden;\n\n background: rgba(60, 75, 120, .5);\n\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n\n & > .notification-content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 5px;\n\n & > .notification-header {\n margin: 0;\n\n font-size: .95rem;\n font-weight: 600;\n letter-spacing: 0.2px;\n\n /* Theme dependent */\n color: rgba(235, 240, 255, 1);\n }\n\n & > .notification-body {\n font-size: .82rem;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 180, 205, 1);\n }\n\n & > .notification-links {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n\n margin-top: 6px;\n\n & > a {\n border: none;\n\n padding: 4px 8px;\n border-radius: 5px;\n\n font-size: .8rem;\n font-weight: 500;\n text-decoration: none;\n\n background: rgba(120, 170, 255, .12);\n opacity: 1;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n color: rgba(140, 185, 255, 1);\n\n &:hover {\n opacity: 1;\n\n background: rgba(120, 170, 255, .22);\n\n /* Theme dependent */\n color: rgba(180, 210, 255, 1);\n }\n\n &:active {\n opacity: .85;\n\n transform: scale(0.98);\n }\n }\n }\n }\n\n & > .notification-right {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n height: 100%;\n gap: 10px;\n\n & > .notification-unread-indicator {\n cursor: pointer;\n\n position: relative;\n\n width: 12px;\n height: 12px;\n\n border-radius: 50%;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n background: rgba(120, 170, 255, 1);\n box-shadow: 0 0 8px rgba(120, 170, 255, .5);\n\n &:hover, &:focus {\n transform: scale(1.35);\n\n /* Theme dependent */\n box-shadow: 0 0 16px rgba(120, 170, 255, .8);\n }\n\n &::after {\n content: '';\n\n cursor: pointer;\n\n position: absolute;\n\n top: -5px;\n left: -5px;\n bottom: -5px;\n right: -5px;\n }\n }\n\n & > .notification-timestamp {\n font-size: .72rem;\n font-weight: 500;\n\n opacity: .8;\n\n white-space: nowrap;\n\n /* Theme dependent */\n color: rgba(140, 150, 175, 1);\n }\n }\n }\n }\n }\n\n .icon-count {\n --color: 255, 255, 255;\n --background: 255, 255, 255;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n\n position: absolute;\n right: -11px;\n top: -11px;\n z-index: 3;\n\n border: 1px solid;\n\n border-radius: 50%;\n padding: 0 8px;\n\n font-family: sans-serif;\n font-size: 12px;\n font-weight: 600;\n line-height: 1;\n\n transition: transform .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(var(--background), .3);\n box-shadow: 0 8px 24px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(var(--background), .15);\n\n color: rgba(--color, 1);\n text-shadow: 0 1px 0 rgba(0, 0, 0, .35);\n\n background: linear-gradient(135deg,\n rgba(var(--background), .7),\n rgba(var(--background), .5)\n );\n -webkit-backdrop-filter: blur(6px) brightness(0%);\n backdrop-filter: blur(6px) brightness(0%);\n\n &.red {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 255, 60, 60;\n }\n &.green {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 60, 205, 80;\n }\n &.blue {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 60, 120, 255;\n }\n &.yellow {\n /* Theme dependent */\n --color: 30, 30, 30;\n --background: 255, 215, 60;\n }\n &.orange {\n /* Theme dependent */\n --color: 30, 30, 30;\n --background: 255, 165, 60;\n }\n &:is(.gray, .grey) {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 150, 150, 150;\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n\n transform: scale(0);\n }\n }\n\n .toast-alert {\n display: flex;\n align-items: center;\n gap: 14px;\n max-width: 500px;\n min-width: 320px;\n\n position: fixed;\n right: 20px;\n bottom: 20px;\n z-index: calc(var(--max-z-index) - 4);\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 14px 20px;\n\n opacity: 0;\n\n transform: translateX(100%) scale(.8);\n\n animation: toast-alert-enter .5s cubic-bezier(.68, -.55, .265, 1.55);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 12px 40px rgba(0, 0, 0, .2),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n color: rgba(255, 255, 255, 1);\n\n -webkit-backdrop-filter: blur(25px) saturate(180%);\n backdrop-filter: blur(25px) saturate(180%);\n\n &.success {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(76, 175, 80, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .25),\n rgba(56, 142, 60, .25)\n );\n }\n &.warning {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(255, 152, 0, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(255, 152, 0, .25),\n rgba(245, 124, 0, .25)\n );\n }\n &.error {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(244, 67, 54, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(244, 67, 54, .25),\n rgba(211, 47, 47, .25)\n );\n }\n &.dev {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(156, 39, 176, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(156, 39, 176, .25),\n rgba(123, 31, 162, .25)\n );\n }\n\n &.show {\n opacity: 1;\n\n transform: translateX(0) scale(1);\n }\n\n &.hidden {\n animation: toast-alert-leave .4s cubic-bezier(.6, -.28, .735, .045) forwards;\n }\n\n & > .toast-icon {\n flex-shrink: 0;\n\n font-size: 1.8em;\n\n /* Theme dependent */\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .3));\n }\n\n & > .toast-content {\n flex: 1;\n\n & > .toast-title {\n margin-bottom: 4px;\n\n font-size: 1.05em;\n font-weight: 700;\n letter-spacing: .3px;\n }\n\n & > .toast-message {\n font-size: .9em;\n line-height: 1.4;\n\n opacity: .95;\n }\n }\n\n & > .toast-close {\n cursor: pointer;\n\n flex-shrink: 0;\n\n border-radius: 6px;\n padding: 4px;\n\n font-size: 1.3em;\n\n background: transparent;\n opacity: .8;\n\n transition: opacity .2s ease,\n transform .2s ease,\n background .2s ease;\n\n &:hover {\n opacity: 1;\n\n transform: scale(1.1);\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .15);\n }\n }\n }\n\n .minor-indicator {\n border: 1px solid;\n\n border-radius: 4px;\n margin-right: 4px;\n padding: 0 4px;\n\n font-size: .9em;\n font-weight: 700;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n color: rgba(153, 153, 153, 1);\n\n background: rgba(60, 64, 76, .9);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n\n .menu-divider {\n height: 1px;\n\n margin: 6px 8px;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n }\n\n .profanity {\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n margin: 20px;\n padding: 20px;\n\n border-radius: 12px;\n border: 1px solid;\n\n /* Theme dependent */\n background: rgba(35, 38, 48, .8);\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .3);\n\n & > .profanity-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n\n padding-bottom: 16px;\n border-bottom: 1px solid;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .1);\n\n & > .profanity-score {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n & > .score-label {\n font-size: .85em;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: .5px;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n }\n\n & > .score-value {\n font-size: 2em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(255, 200, 100, 1);\n }\n }\n\n & > .profanity-risk {\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 10px 16px;\n\n font-size: .95em;\n font-weight: 600;\n\n /* Theme dependent */\n background: rgba(60, 64, 76, .6);\n\n &.risk-high {\n /* Theme dependent */\n color: rgba(255, 100, 100, 1);\n background: rgba(211, 47, 47, .2);\n border: 1px solid rgba(211, 47, 47, .4);\n }\n\n &.risk-medium {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n border: 1px solid rgba(255, 193, 7, .3);\n }\n\n &.risk-low {\n /* Theme dependent */\n color: rgba(100, 200, 255, 1);\n background: rgba(66, 165, 245, .15);\n border: 1px solid rgba(66, 165, 245, .3);\n }\n }\n }\n\n & > .profanity-matches-header {\n display: flex;\n align-items: center;\n gap: 8px;\n\n font-size: 1.05em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n }\n\n & > .profanity-matches-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n & > .profanity-match {\n display: flex;\n flex-direction: column;\n gap: 10px;\n\n border-radius: 8px;\n padding: 12px 14px;\n border-left: 3px solid;\n\n transition: background .2s ease,\n border-color .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n background: rgba(45, 50, 62, .7);\n border-left-color: rgba(255, 150, 150, .5);\n\n &:hover {\n transform: translateX(4px);\n\n /* Theme dependent */\n background: rgba(50, 56, 70, .85);\n border-left-color: rgba(255, 150, 150, .8);\n }\n\n & > .match-header {\n display: flex;\n align-items: center;\n gap: 8px;\n\n font-size: .95em;\n\n & > .match-text {\n font-family: 'Courier New', monospace;\n font-weight: 600;\n\n border-radius: 4px;\n padding: 4px 8px;\n\n /* Theme dependent */\n color: rgba(255, 180, 180, 1);\n background: rgba(211, 47, 47, .2);\n }\n\n & > .match-arrow {\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .match-name {\n font-family: 'Courier New', monospace;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n }\n\n & > .match-details {\n display: flex;\n gap: 16px;\n\n & > .match-stat {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n & > .stat-label {\n font-size: .75em;\n text-transform: uppercase;\n letter-spacing: .5px;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .stat-value {\n font-size: .9em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n\n &.severity-critical {\n /* Theme dependent */\n color: rgba(255, 100, 100, 1);\n }\n &.severity-high {\n /* Theme dependent */\n color: rgba(255, 150, 100, 1);\n }\n\n &.severity-medium {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n &.severity-low {\n /* Theme dependent */\n color: rgba(100, 200, 255, 1);\n }\n }\n }\n }\n\n & > .match-note {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n\n margin-top: 6px;\n padding: 10px 12px;\n border-radius: 6px;\n\n font-size: .85em;\n line-height: 1.5;\n\n /* Theme dependent */\n background: rgba(30, 33, 43, .6);\n border: 1px solid rgba(100, 150, 255, .2);\n\n & > .fa {\n margin-top: 2px;\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(100, 150, 255, .8);\n }\n\n & > .note-text {\n flex: 1;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(180, 190, 210, 1);\n }\n }\n }\n }\n\n & > .profanity-no-matches {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n\n padding: 20px;\n\n font-size: 1em;\n\n /* Theme dependent */\n color: rgba(100, 200, 100, 1);\n }\n }\n\n & > #settings-container {\n z-index: calc(var(--max-z-index) - 7);\n\n pointer-events: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n\n opacity: 0;\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.show {\n pointer-events: auto;\n\n opacity: 1;\n\n & > .settings {\n transform: scale(1);\n }\n }\n\n & > .settings {\n display: flex;\n max-width: 1100px;\n width: 90vw;\n\n border: 1px solid;\n\n border-radius: 20px;\n\n overflow: hidden;\n\n transform: scale(.75);\n\n transition: transform .1s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(30, 33, 42, .95);\n -webkit-backdrop-filter: blur(30px);\n backdrop-filter: blur(30px);\n\n & > div {\n height: 80vh;\n\n &.settings-left {\n width: 250px;\n\n border-right: 1px solid;\n\n padding: 20px 0;\n\n overflow-y: auto;\n\n /* Theme dependent */\n border-right-color: rgba(255, 255, 255, .1);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .02),\n rgba(255, 255, 255, .05)\n );\n\n & > .settings-category {\n &:not(:last-child) {\n margin-bottom: 20px;\n }\n\n & > .settings-category-header {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n margin-bottom: 4px;\n padding: 12px 20px;\n\n font-size: .7em;\n font-weight: 800;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n }\n\n & > .settings-left-menu-compact {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n\n padding: 0 12px;\n\n & > .settings-left-menu-item {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n border-radius: 10px;\n padding: 12px;\n\n font-size: 1.2em;\n font-weight: 500;\n\n transition: background .2s ease,\n color .2s ease,\n box-shadow .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n\n &:first-child {\n margin-left: 12px;\n }\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n }\n\n &.selected {\n font-weight: 600;\n\n /* Theme dependent */\n box-shadow: 0 0 20px rgba(102, 126, 234, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n }\n }\n\n & > .settings-left-menu-item {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n border-radius: 10px;\n margin: 2px 12px;\n padding: 12px 20px;\n\n font-size: .95em;\n font-weight: 500;\n\n transition: background .2s ease,\n color .2s ease,\n box-shadow .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n }\n\n &.selected {\n font-weight: 600;\n\n /* Theme dependent */\n box-shadow: 0 0 20px rgba(102, 126, 234, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n\n & > span > i {\n height: 1em;\n aspect-ratio: 1 / 1;\n\n margin-right: 12px;\n\n text-align: center;\n }\n }\n }\n }\n\n &.settings-right {\n flex: 1;\n\n padding: 20px 30px;\n\n overflow-y: auto;\n\n /* Theme dependent */\n background: rgba(20, 22, 28, .5);\n\n & > .hidden {\n display: none;\n }\n\n a {\n color: rgba(143, 163, 255, 1);\n\n &:hover {\n color: rgba(176, 192, 255, 1);\n }\n }\n\n pre, code {\n border-radius: 4px;\n padding: 2px 4px;\n\n font-size: .95em;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .15);\n }\n\n .settings-compact-grid {\n & > .compact {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n & > .numeric-input-container {\n & > .numeric-input {\n width: calc(100% - 70px);\n }\n }\n\n & > select {\n width: 100%;\n }\n }\n }\n\n .settings-section, .settings-toggles-section {\n display: block;\n\n border: 1px solid;\n\n border-radius: 16px;\n padding: 25px;\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3);\n\n background: rgba(35, 38, 48, .8);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n\n .settings-section-title {\n margin-bottom: 5px;\n\n font-size: 1em;\n font-weight: 700;\n letter-spacing: -.5px;\n\n &.collapse-title {\n margin-bottom: 0;\n }\n }\n\n .settings-section-desc {\n margin-bottom: 0;\n\n font-size: .85em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n .pad-list {\n margin: 8px 0;\n padding-left: 20px;\n }\n\n &:not(:last-child) {\n margin-bottom: 30px;\n }\n\n &.compact {\n margin-bottom: 0;\n padding: 18px;\n\n & > .settings-section-title {\n font-size: 1.05em;\n\n &.collapse-title {\n margin-bottom: 15px;\n }\n }\n\n & > .settings-section-desc {\n margin-bottom: 12px;\n\n font-size: .85em;\n }\n }\n\n &.inline {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n padding: 14px 16px;\n\n /* Theme dependent */\n background: rgba(35, 38, 48, .6);\n\n &:not(:last-child) {\n margin-bottom: 12px;\n }\n\n & > .settings-section-content {\n flex: 1;\n }\n }\n\n &.collapsed {\n & > .collapse-title::after {\n transform: rotate(-180deg);\n }\n }\n\n & > .collapse-title {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n &::after{\n content: \"\\f077\";\n\n float: right;\n\n font-family: \"Font Awesome 6 Free\";\n font-weight: 900;\n\n transition: transform .2s ease;\n }\n }\n\n & > .collapsible-content {\n padding: initial;\n\n overflow: hidden;\n\n transition: padding .2s ease;\n\n &.collapsed {\n padding: 0;\n }\n }\n\n & > .settings-section-title {\n margin-bottom: 15px;\n\n font-size: 1.4em;\n font-weight: 700;\n letter-spacing: -.5px;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.collapse-title {\n margin-bottom: 8px;\n }\n }\n\n & > .settings-section-header {\n display: flex;\n align-items: center;\n gap: 10px;\n\n margin-bottom: 15px;\n\n font-size: 1.2em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.collapse-title {\n margin-bottom: 0;\n }\n\n & > .settings-section-header-icon {\n font-size: 1.3em;\n\n /* Theme dependent */\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .2));\n }\n }\n\n & > .settings-section-desc {\n margin-bottom: 20px;\n\n font-size: .95em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n .checkbox-container {\n display: flex;\n flex-wrap: wrap;\n\n & > div {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 200px;\n\n margin-bottom: 8px;\n\n &:hover {\n & > .checkbox-box {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .checkbox-box {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: block;\n\n position: relative;\n\n border-radius: 5px;\n\n font-size: .95em;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(213, 213, 213, 1);\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n position: absolute;\n width: 0;\n height: 0;\n\n border-radius: 5px;\n\n opacity: 0;\n\n &:checked ~ .checkmark {\n /* Theme dependent */\n background: linear-gradient(45deg,\n rgba(100, 61, 219, 1),\n rgba(217, 21, 239, 1)\n );\n\n &::after {\n opacity: 1;\n }\n }\n }\n\n & > .checkmark {\n width: 1.3em;\n height: 1.3em;\n\n position: relative;\n left: 0;\n top: 0;\n\n border-radius: 5px;\n\n transition: background .2s ease;\n\n /* Theme dependent */\n background: rgba(204, 204, 204, 1);\n\n &::after {\n content: \"\";\n\n width: .25em;\n height: .5em;\n\n position: absolute;\n left: .45em;\n top: .25em;\n\n border-width: 0 .15em .15em 0;\n border-style: solid;\n\n opacity: 0;\n\n transform: rotate(45deg);\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, 1);\n }\n }\n }\n }\n }\n\n .numeric-input-container {\n display: flex;\n\n & > .numeric-input-button {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 35px;\n height: 35px;\n\n border: 1px solid;\n\n border-radius: 8px;\n\n font-size: 1.3em;\n\n transition: background .2s ease,\n border-color .2s ease,\n color .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n color: rgba(192, 192, 192, 1);\n\n background: rgba(50, 54, 66, .8);\n\n &:hover {\n transform: scale(1.05);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n }\n\n & > .numeric-input {\n width: 100px;\n\n border-radius: 8px;\n margin: 0 5px;\n padding: 6px 12px;\n\n font-size: 1.1em;\n }\n }\n\n .volume-control {\n display: block;\n\n border: 1px solid;\n\n border-radius: 12px;\n margin: 20px 0;\n padding: 20px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n & > .volume-control-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 20px;\n\n margin-bottom: 16px;\n\n & > .volume-control-info {\n flex: 1;\n\n & > .volume-control-title {\n margin-bottom: 6px;\n\n font-size: 1.05em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .volume-control-desc {\n font-size: .9em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n & > .volume-control-preview {\n --background: 123, 143, 245;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 10px 18px;\n\n font-size: .9em;\n font-weight: 500;\n }\n }\n\n & > .volume-control-slider-container {\n display: flex;\n align-items: center;\n gap: 16px;\n\n & > .volume-control-slider {\n flex: 1;\n height: 6px;\n\n outline: none;\n\n border-radius: 3px;\n\n -webkit-appearance: none;\n appearance: none;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n\n &::-webkit-slider-thumb {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n\n border-radius: 50%;\n\n -webkit-appearance: none;\n appearance: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 6px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 10px rgba(102, 126, 234, .5);\n }\n }\n\n &::-moz-range-thumb {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n\n border: none;\n\n border-radius: 50%;\n\n -webkit-appearance: none;\n appearance: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 6px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 10px rgba(102, 126, 234, .5);\n }\n }\n }\n\n & > .volume-control-input {\n width: 70px;\n\n border-radius: 8px;\n padding: 8px 12px;\n\n font-size: .95em;\n text-align: center;\n }\n }\n }\n\n .settings-toggle {\n cursor: pointer;\n\n flex-shrink: 0;\n width: 60px;\n height: 32px;\n\n position: relative;\n\n &:hover {\n & > .toggle-switch {\n transform: scale(1.02);\n }\n }\n\n &.active {\n & > .toggle-switch {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5),\n inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n & > .toggle-slider {\n left: 30px;\n\n /* Theme dependent */\n box-shadow: 0 4px 10px rgba(0, 0, 0, .3),\n 0 2px 4px rgba(0, 0, 0, .2);\n }\n }\n }\n\n & > .toggle-switch {\n width: 100%;\n height: 100%;\n\n position: relative;\n\n border: 2px solid;\n\n border-radius: 16px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: inset 0 2px 6px rgba(0, 0, 0, .4);\n\n background: rgba(60, 63, 75, .8);\n\n & > .toggle-slider {\n width: 24px;\n height: 24px;\n\n position: absolute;\n left: 2px;\n top: 2px;\n\n border-radius: 50%;\n\n transition: left .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 3px 8px rgba(0, 0, 0, .25),\n 0 1px 2px rgba(0, 0, 0, .15);\n\n background: rgba(255, 255, 255, 1);\n }\n }\n }\n\n .settings-radio-group {\n display: flex;\n flex-direction: row;\n gap: 12px;\n\n border-radius: 100vh;\n padding: 8px;\n\n /* Theme dependent */\n background: rgba(40, 43, 52, .7);\n\n & > .settings-radio-option {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n flex: 1;\n\n text-align: center;\n\n border-radius: 100vh;\n padding: 10px 16px;\n\n font-size: .9em;\n font-weight: 600;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &:hover {\n /* Theme dependent */\n background: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, 1);\n }\n\n &.selected {\n /* Theme dependent */\n background: rgba(102, 126, 234, .3);\n color: rgba(224, 224, 224, 1);\n }\n }\n }\n\n .settings-slider {\n display: flex;\n flex-direction: column;\n gap: 14px;\n\n border-radius: 14px;\n padding: 16px 20px;\n\n /* Theme dependent */\n background: rgba(40, 43, 52, .7);\n\n & > .settings-slider-labels {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n }\n\n & > .settings-slider-labels > .settings-slider-label-left,\n & > .settings-slider-labels > .settings-slider-label-right {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n font-size: .9em;\n font-weight: 600;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &.active {\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .percent {\n font-size: .85em;\n font-weight: 500;\n font-variant-numeric: tabular-nums;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n }\n\n & > .settings-slider-labels > .settings-slider-label-right {\n text-align: right;\n }\n\n & > .settings-slider-track {\n cursor: pointer;\n\n height: 8px;\n\n position: relative;\n\n border-radius: 100vh;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .08);\n\n &::before {\n content: '';\n\n width: var(--fill, 50%);\n height: 100%;\n\n position: absolute;\n left: 0;\n top: 0;\n\n border-radius: 100vh;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(102, 126, 234, .6),\n rgba(118, 75, 162, .6)\n );\n }\n\n & > .settings-slider-thumb {\n cursor: grab;\n\n width: 22px;\n height: 22px;\n\n position: absolute;\n top: 50%;\n\n border: 2px solid;\n\n border-radius: 50%;\n\n transform: translate(-50%, -50%);\n\n transition: transform .15s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .4),\n 0 0 12px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: translate(-50%, -50%) scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 12px rgba(0, 0, 0, .5),\n 0 0 20px rgba(102, 126, 234, .5);\n }\n\n &:active, &.dragging {\n cursor: grabbing;\n\n transform: translate(-50%, -50%) scale(1.2);\n\n /* Theme dependent */\n box-shadow: 0 4px 16px rgba(0, 0, 0, .5),\n 0 0 24px rgba(102, 126, 234, .6);\n }\n }\n }\n }\n\n .palette-selector {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n\n margin-top: 20px;\n\n & > .palette-option {\n cursor: pointer;\n\n border: 2px solid;\n\n border-radius: 12px;\n padding: 12px;\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 20px rgba(20, 20, 30, .4);\n }\n\n &.selected {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, 1);\n box-shadow: 0 0 20px rgba(102, 126, 234, .4);\n }\n\n & > .palette-name {\n pointer-events: none;\n\n font-size: .9em;\n font-weight: 600;\n text-align: center;\n }\n\n & > .palette-preview {\n pointer-events: none;\n\n display: flex;\n gap: 4px;\n height: 40px;\n\n border-radius: 8px;\n margin-bottom: 12px;\n\n overflow: hidden;\n\n & > canvas {\n flex: 1;\n width: 100%;\n height: 100%;\n }\n }\n }\n }\n\n .tracklist {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n\n & > .track {\n position: relative;\n\n border-radius: 8px;\n\n overflow: hidden;\n\n & > .thumbnail {\n display: block;\n width: 100%;\n aspect-ratio: 1 / 1;\n\n overflow: hidden;\n\n & > img {\n display: block;\n width: 100%;\n height: 100%;\n\n overflow: hidden;\n }\n }\n\n & > .info {\n display: flex;\n flex-direction: column;\n gap: 3px;\n\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n\n padding: 10px 12px;\n\n /* Theme dependent */\n background: linear-gradient(180deg,\n rgba(0, 0, 0, 0),\n rgba(0, 0, 0, .35),\n rgba(0, 0, 0, .65)\n );\n\n & > .title {\n font-size: .95em;\n font-weight: 600;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n white-space: nowrap;\n\n /* Theme dependent */\n text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n\n color: rgba(255, 255, 255, 1);\n }\n\n & > :is(.artist, .length) {\n font-size: .8em;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .9);\n }\n }\n\n & > .preview-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n width: 40px;\n height: 40px;\n\n position: absolute;\n right: 8px;\n top: 8px;\n\n border-radius: 50%;\n padding: 0;\n }\n }\n }\n\n .control-container {\n border: 1px solid;\n\n border-radius: 12px;\n margin-bottom: 15px;\n padding: 18px 22px;\n\n font-size: .9em;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n & > .control-container-title {\n margin-bottom: 12px;\n\n font-size: 1.1em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.margin-top {\n margin-top: 10px;\n }\n }\n\n & > .control-keys {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n\n & > div {\n display: flex;\n align-items: center;\n width: max-content;\n\n border: 1px solid;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-weight: 500;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .3);\n\n color: rgba(192, 192, 192, 1);\n\n background: rgba(50, 54, 66, .9);\n\n &:not(.key-select):hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 12px rgba(20, 20, 30, .4);\n\n background: rgba(60, 64, 78, .95);\n }\n\n &.key-select {\n border: 2px dashed;\n\n font-style: italic;\n\n /* Theme dependent */\n border-color: rgba(192, 192, 192, .6);\n box-shadow: 0 0 10px rgba(192, 192, 192, .4);\n\n background: rgba(192, 192, 192, .1);\n }\n\n &.duplicate {\n border: 2px dashed;\n\n /* Theme dependent */\n border-color: rgba(255, 87, 34, 1);\n box-shadow: 0 0 10px rgba(255, 87, 34, .5);\n\n background: rgba(255, 87, 34, .1);\n }\n\n & > .key-elem-title {\n margin-right: 10px;\n }\n\n &.add, & > .remove {\n cursor: pointer;\n }\n }\n }\n\n & > .control-actions {\n .control-action {\n border-left: 2px solid;\n\n margin-top: 12px;\n padding-left: 16px;\n\n /* Theme dependent */\n border-left-color: rgba(102, 126, 234, .5);\n\n & > .control-action-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n margin-bottom: 8px;\n\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n span {\n margin-right: 5px;\n }\n\n & > .control-action-title-left {\n white-space: nowrap;\n\n overflow-x: auto;\n\n & > span {\n width: 17px;\n }\n\n & > select {\n border-radius: 6px;\n margin: 0 5px;\n padding: 6px 10px;\n }\n\n & > .params {\n font-size: .85em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n\n & > .condition-parameter {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n\n margin: 0 4px;\n\n & > select,\n & > input:not([type=checkbox]) {\n border-radius: 6px;\n padding: 6px 10px;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n }\n }\n }\n }\n\n & > .control-action-title-right {\n display: flex;\n\n & > span {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display:flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n\n border-radius: 5px;\n margin-right: 0;\n\n font-size: 1.2em;\n\n transition: background .1s ease;\n\n &:hover {\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n }\n }\n }\n }\n\n & > .action-parameter {\n border: 1px solid;\n\n border-radius: 8px;\n margin-top: 10px;\n padding: 12px 14px;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(40, 43, 52, .3);\n\n & > .parameter-title {\n margin-bottom: 8px;\n\n font-size: .9em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(180, 190, 210, 1);\n }\n\n & > select,\n & > input:not([type=checkbox]),\n & > duration-input {\n width: 100%;\n\n border-radius: 6px;\n padding: 8px 12px;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 20px;\n height: 20px;\n }\n }\n }\n\n & > .control-bottom-container {\n display: flex;\n justify-content: space-between;\n\n margin-top: 10px;\n\n & > div {\n display: flex;\n\n & > .add-action-button {\n width: max-content;\n\n border-radius: 8px;\n padding: 8px 16px;\n\n font-weight: 500;\n }\n }\n }\n }\n }\n\n .text-input-container {\n display: flex;\n gap: 12px;\n\n border-style: 2px dashed;\n\n border-radius: 12px;\n margin-top: 18px;\n padding: 16px;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .35);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 0.15),\n rgba(118, 75, 162, 0.15)\n );\n\n & > input[type=\"text\"] {\n flex: 1;\n\n border-style: dashed;\n\n border-radius: 10px;\n padding: 10px 16px;\n\n font-size: .95em;\n\n &:focus {\n border-style: solid;\n }\n }\n }\n\n .stats-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n\n margin-top: 20px;\n\n & > .stat-card {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n width: 100%;\n height: 150px;\n\n background-color: transparent;\n\n perspective: 1000px;\n\n transition: transform .3s ease;\n\n &:hover, &:active {\n transform: scale(1.05);\n\n & > .inside {\n transform: rotateY(180deg);\n\n &::before {\n opacity: 1;\n }\n }\n }\n\n & > .inside {\n width: 100%;\n height: 100%;\n\n position: relative;\n\n transform-style: preserve-3d;\n\n transition: transform 0.8s linear(\n 0, 0.005, 0.02 2.2%, 0.046 4.5%, 0.182 11.5%,\n 0.318 16.3%, 0.459 20.6%, 0.601 24.6%, 0.738 28.6%,\n 0.863 32.7%, 0.954 37%, 1.015 41.8%, 1.049 47.4%,\n 1.059, 1.047 57.3%, 1.03 63.5%, 1.012 70.9%,\n 1.002 79.5%, 1\n );\n\n &::before {\n inset: -2px;\n\n border-radius: 14px;\n padding: 2px;\n\n opacity: 0;\n\n transition: opacity .3s ease;\n }\n\n & > :is(.front, .back) {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n\n position: absolute;\n\n border: 2px solid;\n\n border-radius: 12px;\n padding: 20px;\n\n text-align: center;\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .25);\n\n &.front {\n justify-content: center;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .15),\n rgba(118, 75, 162, .15)\n );\n }\n &.back {\n transform: rotateY(180deg);\n\n overflow: hidden auto;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(118, 75, 162, .15),\n rgba(102, 126, 234, .15)\n );\n\n &::-webkit-scrollbar {\n width: 8px;\n }\n &::-webkit-scrollbar-thumb {\n border-radius: 4px;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .4);\n }\n &::-webkit-scrollbar-track {\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n }\n }\n\n & > .stat-value {\n margin-bottom: 8px;\n\n font-size: 2.2em;\n font-weight: 700;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n /* Theme independent */\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n\n & > .stat-label {\n margin-bottom: 4px;\n\n font-size: .95em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .stat-sublabel {\n font-size: .8em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n\n &:not(:last-child) {\n margin-bottom: 8px;\n }\n }\n }\n }\n }\n }\n\n .changelog-content {\n & > .changelog-header {\n border-bottom: 2px solid;\n\n padding-bottom: 24px;\n margin-bottom: 8px;\n\n text-align: center;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n\n & > h1 {\n margin: 0 0 10px 0;\n\n font-size: 2.5em;\n font-weight: 800;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n\n & > i {\n margin-right: 12px;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n }\n\n & > .changelog-subtitle {\n margin: 0 0 20px 0;\n\n font-size: 1.1em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .9);\n }\n\n & > .changelog-nav {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n gap: 8px;\n\n & > .changelog-nav-item {\n cursor: pointer;\n\n border: 1px solid;\n border-radius: 20px;\n padding: 6px 16px;\n\n font-size: .85em;\n font-weight: 600;\n text-decoration: none;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n color: rgba(200, 200, 200, .9);\n background: rgba(102, 126, 234, .08);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .6);\n color: rgba(255, 255, 255, 1);\n background: rgba(102, 126, 234, .2);\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .8);\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .3),\n rgba(118, 168, 255, .3)\n );\n box-shadow: 0 0 12px rgba(102, 126, 234, .3);\n }\n }\n }\n }\n\n & > .changelog-divider {\n height: 2px;\n\n margin: 48px auto 8px;\n\n border-radius: 1px;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(102, 126, 234, .4) 20%,\n rgba(118, 168, 255, .4) 50%,\n rgba(102, 126, 234, .4) 80%,\n transparent\n );\n }\n\n & > .changelog-version {\n margin-top: 32px;\n padding: 24px;\n\n border: 1px solid;\n border-radius: 16px;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n background: rgba(30, 33, 42, .4);\n\n & > .changelog-version-header {\n margin-bottom: 24px;\n padding-bottom: 16px;\n\n border-bottom: 1px solid;\n\n text-align: center;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n\n & > .version-badge-row {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n\n margin-bottom: 12px;\n\n & > .version-badge {\n display: inline-block;\n\n border: 1px solid;\n border-radius: 20px;\n padding: 4px 16px;\n\n font-size: .8em;\n font-weight: 700;\n font-family: 'Courier New', monospace;\n letter-spacing: .5px;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n color: rgba(118, 168, 255, 1);\n background: rgba(102, 126, 234, .12);\n }\n\n & > .version-tag {\n display: inline-block;\n\n border-radius: 20px;\n padding: 4px 12px;\n\n font-size: .7em;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 1px;\n\n &.latest {\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .8),\n rgba(118, 168, 255, .8)\n );\n box-shadow: 0 2px 8px rgba(102, 126, 234, .4);\n }\n }\n }\n\n & > h1 {\n margin: 0 0 8px 0;\n\n font-size: 1.6em;\n font-weight: 800;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n\n & > .changelog-version-subtitle {\n margin: 0;\n\n font-size: .9em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .7);\n\n & > i {\n margin-right: 4px;\n }\n }\n }\n\n & > .changelog-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 24px;\n\n margin: 0 auto;\n padding: 0;\n\n & > .card {\n position: relative;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 20px;\n\n overflow: hidden;\n\n transition: border-color .3s ease,\n box-shadow .3s ease,\n background .3s ease,\n transform .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n\n background: rgba(40, 43, 52, .6);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n\n &::before {\n content: '';\n\n height: 3px;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n\n opacity: 0;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(102, 126, 234, .8),\n rgba(118, 168, 255, .8)\n );\n }\n\n &:hover {\n transform: translateY(-4px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5),\n 0 0 0 1px rgba(102, 126, 234, .2);\n\n background: rgba(40, 43, 52, .85);\n\n &::before {\n opacity: 1;\n }\n\n & > .card-icon {\n transform: scale(1.1) rotate(5deg);\n }\n }\n\n &.featured {\n grid-column: 1 / -1;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n background: linear-gradient(135deg,\n rgba(40, 43, 52, .8),\n rgba(50, 53, 62, .8)\n );\n\n &::before {\n opacity: 1;\n }\n\n & > .card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25),\n rgba(118, 168, 255, .25)\n );\n }\n }\n\n & > .card-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n\n border-radius: 12px;\n margin-bottom: 16px;\n\n transition: transform .3s ease;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .15);\n\n & > i {\n font-size: 24px;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 168, 255, 1)\n );\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n }\n\n & > h2 {\n margin: 0 0 12px 0;\n\n font-size: 1.35em;\n font-weight: 700;\n letter-spacing: -0.02em;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .95);\n }\n\n & > p {\n margin: 0 0 16px 0;\n\n font-size: .95em;\n line-height: 1.6em;\n\n /* Theme dependent */\n color: rgba(118, 168, 255, .9);\n }\n\n & > ul {\n margin: 0;\n padding-left: 24px;\n\n font-size: .9em;\n line-height: 1.7em;\n\n /* Theme dependent */\n color: rgba(229, 229, 229, .9);\n\n & > li {\n margin-bottom: 8px;\n padding-left: 4px;\n\n &::marker {\n /* Theme dependent */\n color: rgba(102, 126, 234, .8);\n }\n\n &:last-child {\n margin-bottom: 0;\n }\n\n & > strong {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n }\n\n & > code {\n border-radius: 4px;\n padding: 2px 6px;\n\n font-family: 'Courier New', monospace;\n font-size: .9em;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .15);\n color: rgba(118, 168, 255, 1);\n }\n\n & > ul {\n margin-top: 6px;\n padding-left: 20px;\n\n & > li {\n font-size: .95em;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .85);\n }\n }\n }\n }\n }\n }\n }\n }\n\n .about-content {\n display: flex;\n flex-direction: column;\n gap: 0;\n\n border: 1px solid;\n\n border-radius: 16px;\n padding: 0;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .25);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .4),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n background: linear-gradient(135deg,\n rgba(30, 33, 42, .95),\n rgba(25, 28, 36, .9)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n & > .about-version {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n\n padding: 32px;\n\n font-size: 1.3em;\n font-weight: 700;\n letter-spacing: .5px;\n\n /* Theme dependent */\n box-shadow: 0 4px 20px rgba(143, 163, 255, .25),\n inset 0 1px 0 rgba(255, 255, 255, .15),\n inset 0 -1px 0 rgba(0, 0, 0, .3);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .25),\n rgba(118, 75, 162, .2)\n );\n\n & > .fa {\n font-size: 1.5em;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n filter: drop-shadow(0 2px 8px rgba(143, 163, 255, .6));\n }\n }\n\n & > .about-tagline {\n padding: 24px 32px;\n\n text-align: center;\n\n /* Theme dependent */\n border-bottom: 1px solid rgba(255, 255, 255, .08);\n\n & > p {\n margin: 0;\n\n font-size: 1.05em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(180, 185, 200, 1);\n }\n }\n\n & > .about-links {\n display: flex;\n flex-direction: column;\n gap: 0;\n\n padding: 16px;\n\n & > .link-card {\n display: flex;\n align-items: center;\n gap: 16px;\n\n border: 1px solid;\n border-radius: 12px;\n margin-bottom: 12px;\n padding: 16px 20px;\n\n text-decoration: none;\n\n transition:\n border-color .3s ease,\n box-shadow .3s ease,\n background .3s ease,\n transform .3s ease,\n border-left-color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n border-left: 3px solid rgba(143, 163, 255, .35);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, .06),\n rgba(40, 43, 52, .6) 40%\n );\n\n &:last-child {\n margin-bottom: 0;\n }\n\n &:hover {\n transform: translateX(6px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .5);\n border-left-color: rgba(143, 163, 255, .8);\n box-shadow: 0 6px 24px rgba(143, 163, 255, .2),\n 0 2px 12px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(255, 255, 255, .1);\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, .15),\n rgba(118, 75, 162, .08) 50%\n );\n\n & > .link-card-icon {\n transform: scale(1.1);\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .25);\n }\n\n & > .link-card-arrow {\n transform: translateX(4px);\n\n opacity: 1;\n }\n }\n\n & > .link-card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n\n border-radius: 10px;\n\n font-size: 1.3em;\n\n transition:\n transform .3s ease,\n background .3s ease;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .15);\n\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .link-card-content {\n flex: 1;\n text-align: left;\n\n & > .link-card-title {\n margin-bottom: 4px;\n\n font-size: 1em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n }\n\n & > .link-card-desc {\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(160, 160, 160, 1);\n }\n }\n\n & > .link-card-arrow {\n font-size: 1.2em;\n\n opacity: .5;\n\n transition:\n transform .3s ease,\n opacity .3s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > .about-footer {\n padding: 0;\n\n & > .footer-divider {\n height: 1px;\n\n margin: 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(143, 163, 255, .3) 20%,\n rgba(143, 163, 255, .3) 80%,\n transparent\n );\n }\n\n & > .about-credits {\n padding: 24px;\n\n & > div {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(max(280px, calc(50% - 6px)), 1fr));\n gap: 12px;\n\n &:not(:last-child) {\n margin-bottom: 12px;\n }\n\n & > .credit-card {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 14px;\n\n border: 1px solid;\n border-radius: 14px;\n padding: 14px 16px;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n border-top: 2px solid rgba(143, 163, 255, .18);\n\n background: linear-gradient(180deg,\n rgba(143, 163, 255, .06),\n rgba(40, 43, 52, .4) 30%\n );\n\n &:hover {\n transform: translateY(-3px) scale(1.01);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .3);\n border-top-color: rgba(143, 163, 255, .5);\n box-shadow: 0 6px 20px rgba(143, 163, 255, .18),\n 0 2px 8px rgba(0, 0, 0, .25);\n\n background: linear-gradient(180deg,\n rgba(143, 163, 255, .1),\n rgba(40, 43, 52, .6) 40%\n );\n }\n\n & > .credit-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 42px;\n height: 42px;\n\n border-radius: 50%;\n\n font-size: 1.1em;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .15)\n );\n\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .credit-info {\n flex: 1;\n min-width: 0;\n text-align: left;\n\n & > .credit-name {\n position: relative;\n overflow: hidden;\n\n margin-bottom: 2px;\n\n font-size: .95em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n\n & > span {\n display: inline-block;\n white-space: nowrap;\n }\n }\n\n & > .credit-role {\n font-size: .8em;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n /* Theme dependent */\n color: rgba(160, 160, 160, 1);\n }\n }\n\n &:hover {\n & > .credit-info {\n & > .credit-name > span {\n animation: scroll-text 3s linear infinite;\n }\n }\n }\n }\n\n & > .copyright-card {\n cursor: pointer;\n\n display: flex;\n flex-direction: column;\n gap: 4px;\n flex: 1;\n\n border: 1px solid;\n border-radius: 12px;\n padding: 16px;\n\n text-align: center;\n overflow: hidden;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .04);\n\n background: rgba(35, 38, 46, .3);\n\n & > .copyright-title {\n margin-bottom: 2px;\n\n font-size: .9em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n\n & > .copyright-desc {\n font-size: .75em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(140, 140, 140, 1);\n }\n }\n }\n }\n }\n }\n\n &#ollama-server-url {\n & > .connection-status-container {\n border: 1px solid;\n\n margin-top: 10px;\n\n transition: border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n &:has(#settings-ollama-connection-status:empty) {\n display: none;\n }\n\n &.testing {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .7);\n box-shadow: 0 2px 8px rgba(255, 193, 7, .4);\n\n background: rgba(255, 193, 7, .1);\n }\n &.connected {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .7);\n box-shadow: 0 2px 8px rgba(76, 175, 80, .4);\n\n background: rgba(76, 175, 80, .1);\n }\n &.failed {\n /* Theme dependent */\n border-color: rgba(211, 47, 47, .7);\n box-shadow: 0 2px 8px rgba(211, 47, 47, .4);\n\n background: rgba(211, 47, 47, .1);\n }\n\n & > #settings-connection-status {\n font-size: .9em;\n }\n }\n }\n\n &#ollama-model-select {\n .models-container {\n border: 1px solid;\n\n margin-top: 10px;\n\n text-align: center;\n\n transition: border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n &.searching {\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .7);\n box-shadow: 0 2px 8px rgba(143, 163, 255, .4);\n\n background: rgba(143, 163, 255, .1);\n }\n &.none {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .7);\n box-shadow: 0 2px 8px rgba(255, 193, 7, .4);\n\n background: rgba(255, 193, 7, .1);\n }\n &.error {\n /* Theme dependent */\n border-color: rgba(211, 47, 47, .7);\n box-shadow: 0 2px 8px rgba(211, 47, 47, .4);\n\n background: rgba(211, 47, 47, .1);\n }\n\n & > p {\n font-size: .9em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n & > #settings-ollama-models {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 8px;\n\n &:not(:empty) {\n margin-top: 8px;\n }\n\n & > .model {\n cursor: pointer;\n\n border: 2px solid;\n\n border-radius: 8px;\n padding: 12px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, 1);\n box-shadow: 0 4px 12px rgba(20, 20, 30, .4);\n\n background: rgba(50, 54, 66, .9);\n }\n\n &.selected {\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 0 15px rgba(143, 163, 255, .5);\n\n background: rgba(143, 163, 255, .1);\n\n & > .model-top {\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > .model-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n\n & > .fa {\n /* Theme dependent */\n color: rgba(128, 128, 128, .5);\n }\n\n & > .model-name {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .pseudo-indicator {\n pointer-events: none;\n\n opacity: 0;\n }\n }\n\n & > .model-bottom {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n }\n }\n }\n\n &#ollama-setup {\n & > .settings-section-title {\n /* Theme dependent */\n color: rgba(255, 54, 34, 1);\n }\n & > .settings-section-desc {\n border-left: 4px solid;\n\n border-radius: 6px;\n padding: 10px;\n\n /* Theme dependent */\n border-left-color: rgba(255, 193, 7, 1);\n\n background: rgba(255, 193, 7, .125);\n\n color: rgba(225, 225, 225, 1);\n }\n }\n\n &.save {\n & > .save-settings-header {\n margin-bottom: 16px;\n }\n\n & > .save-settings-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .save-settings-card {\n border: 1px solid;\n border-radius: 12px;\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(40, 43, 52, .5);\n box-shadow: 0 2px 12px rgba(0, 0, 0, .2);\n\n transition: border-color .3s ease, box-shadow .3s ease;\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3);\n }\n\n & > .card-header {\n display: flex;\n align-items: center;\n gap: 12px;\n\n padding: 14px 16px;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(50, 54, 66, .6),\n rgba(40, 43, 52, .6)\n );\n border-bottom: 1px solid rgba(255, 255, 255, .06);\n\n & > .card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n\n border-radius: 10px;\n\n font-size: 1.25em;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .2)\n );\n color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 12px rgba(143, 163, 255, .15);\n }\n\n & > .card-header-content {\n flex: 1;\n\n & > .card-title {\n font-size: 1.1em;\n font-weight: 700;\n margin-bottom: 2px;\n\n /* Theme dependent */\n color: rgba(232, 232, 232, 1);\n }\n\n & > .card-desc {\n font-size: .9em;\n line-height: 1.5;\n\n /* Theme dependent */\n color: rgba(187, 187, 187, 1);\n }\n }\n\n & > .card-toggle {\n flex-shrink: 0;\n }\n }\n\n & > .card-body {\n padding: 12px;\n\n & > .action-buttons-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 10px;\n\n & > .action-card {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(46, 52, 66, .6);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .15);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 8px 24px rgba(0, 0, 0, .25);\n background: rgba(56, 62, 76, .7);\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n box-shadow: 0 2px 8px rgba(0, 0, 0, .15);\n }\n\n & > .action-card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n\n border-radius: 8px;\n\n font-size: 1.15em;\n flex-shrink: 0;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n }\n\n & > .action-card-content {\n flex: 1;\n\n & > .action-card-title {\n font-size: .95em;\n font-weight: 600;\n margin-bottom: 1px;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .action-card-desc {\n font-size: .85em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n &.export-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .2),\n rgba(56, 142, 60, .2)\n );\n color: rgba(76, 175, 80, 1);\n }\n }\n\n &.import-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .2)\n );\n color: rgba(143, 163, 255, 1);\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .5);\n background: rgba(76, 175, 80, .1);\n\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .3),\n rgba(56, 142, 60, .3)\n );\n color: rgba(76, 175, 80, 1);\n }\n }\n }\n\n &.reset-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(211, 47, 47, .2),\n rgba(183, 28, 28, .2)\n );\n color: rgba(211, 47, 47, 1);\n }\n }\n }\n }\n\n & > .status-message {\n border-radius: 10px;\n margin-top: 12px;\n padding: 12px 14px;\n\n animation: scale-in .3s ease;\n\n &.hidden {\n display: none;\n }\n\n & > .status-content {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n\n & > .status-icon {\n font-size: 1.25em;\n flex-shrink: 0;\n margin-top: 1px;\n }\n\n & > .status-text {\n flex: 1;\n\n & > .status-title {\n font-size: .95em;\n font-weight: 700;\n margin-bottom: 2px;\n\n /* Theme dependent */\n color: rgba(240, 240, 240, 1);\n }\n\n & > .status-desc {\n font-size: .9em;\n line-height: 1.5;\n\n /* Theme dependent */\n color: rgba(210, 210, 210, 1);\n }\n }\n }\n\n &.success {\n /* Theme dependent */\n border: 1px solid rgba(76, 175, 80, .4);\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .15),\n rgba(56, 142, 60, .1)\n );\n box-shadow: 0 4px 16px rgba(76, 175, 80, .2);\n\n & > .status-content > .status-icon {\n color: rgba(76, 175, 80, 1);\n }\n }\n\n &.error {\n /* Theme dependent */\n border: 1px solid rgba(211, 47, 47, .4);\n background: linear-gradient(135deg,\n rgba(211, 47, 47, .15),\n rgba(183, 28, 28, .1)\n );\n box-shadow: 0 4px 16px rgba(211, 47, 47, .2);\n\n & > .status-content > .status-icon {\n color: rgba(211, 47, 47, 1);\n }\n }\n\n &.info {\n /* Theme dependent */\n border: 1px solid rgba(255, 193, 7, .4);\n background: linear-gradient(135deg,\n rgba(255, 193, 7, .15),\n rgba(255, 152, 0, .1)\n );\n box-shadow: 0 4px 16px rgba(255, 193, 7, .2);\n\n & > .status-content > .status-icon {\n color: rgba(255, 193, 7, 1);\n }\n }\n }\n\n & > .import-textarea {\n width: 100%;\n min-height: 140px;\n\n border: 2px solid;\n\n border-radius: 10px;\n margin-top: 12px;\n padding: 12px 14px;\n\n font-family: 'Courier New', Consolas, monospace;\n font-size: .88em;\n line-height: 1.6;\n\n resize: vertical;\n\n animation: scale-in .3s ease;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .3);\n background: rgba(20, 23, 32, .8);\n color: rgba(220, 220, 220, 1);\n box-shadow: inset 0 2px 8px rgba(0, 0, 0, .3);\n\n &:focus {\n outline: none;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .6);\n box-shadow: inset 0 2px 8px rgba(0, 0, 0, .3),\n 0 0 0 3px rgba(143, 163, 255, .15);\n }\n\n &.hidden {\n display: none;\n }\n\n &::placeholder {\n /* Theme dependent */\n color: rgba(130, 130, 130, 1);\n }\n }\n }\n }\n }\n\n .disabled-note {\n display: none;\n\n font-size: .85em;\n margin-top: 4px;\n\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n\n .disabled-note {\n display: block;\n }\n }\n }\n\n .list-container {\n & > div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n border: 1px solid;\n\n border-radius: 8px;\n margin-bottom: 8px;\n padding: 8px;\n padding-left: 15px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n &.empty {\n padding: 20px;\n\n text-align: center;\n\n opacity: .6;\n }\n\n & > div {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n a > {\n font-weight: 600;\n word-break: break-all;\n }\n\n & > span {\n font-size: .85em;\n\n opacity: .7;\n }\n\n & > .add-action-button {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n\n border-radius: 6px;\n\n font-size: 1em;\n\n transition: background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n\n &:hover {\n /* Theme dependent */\n background: rgba(102, 126, 234, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n &:active {\n /* Theme dependent */\n background: rgba(102, 126, 234, .3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n }\n\n &.remove-button {\n /* Theme dependent */\n background: rgba(211, 47, 47, .1);\n\n &:hover {\n /* Theme dependent */\n background: rgba(211, 47, 47, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n &:active {\n /* Theme dependent */\n background: rgba(211, 47, 47, .3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n }\n }\n }\n }\n }\n }\n\n .settings-compact-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 18px;\n\n margin-bottom: 25px;\n }\n\n .draggable-order-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n &.is-dragging .draggable-order-item {\n pointer-events: none;\n\n &:hover {\n transform: none;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: none;\n\n background: rgba(40, 43, 52, .8);\n\n &::before {\n opacity: .5;\n\n color: inherit;\n }\n }\n }\n\n & > .draggable-order-item-wrapper {\n position: relative;\n\n transition: transform .2s cubic-bezier(0.2, 0, 0, 1);\n\n &.dragging {\n z-index: 4;\n\n &::after {\n content: '';\n\n width: 100%;\n height: 100%;\n\n border: 2px dashed;\n\n border-radius: 10px;\n\n position: absolute;\n top: 0;\n left: 0;\n\n pointer-events: none;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .8);\n box-shadow: 0 0 20px rgba(102, 126, 234, .4),\n inset 0 0 20px rgba(102, 126, 234, .15);\n\n background: rgba(102, 126, 234, .1);\n }\n\n & > .draggable-order-item {\n visibility: hidden;\n }\n }\n }\n\n .draggable-order-item {\n cursor: grab;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 14px;\n\n border: 1px solid;\n\n border-radius: 10px;\n padding: 14px 18px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .8);\n\n &::before {\n content: '\\f0c9';\n\n font-family: 'Font Awesome 6 Free';\n font-size: .9em;\n font-weight: 900;\n\n opacity: .5;\n\n transition: opacity .2s ease,\n color .2s ease;\n }\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 6px 24px rgba(0, 0, 0, .4);\n\n background: rgba(50, 54, 66, .9);\n\n &::before {\n opacity: .8;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n &:active {\n cursor: grabbing;\n\n transform: scale(1.02);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .6);\n box-shadow: 0 8px 32px rgba(102, 126, 234, .3);\n\n background: rgba(60, 65, 80, .95);\n }\n\n &.disabled {\n opacity: .5;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .05);\n\n background: rgba(30, 32, 38, .6);\n\n & > .draggable-order-item-name {\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .draggable-order-item-toggle {\n /* Theme dependent */\n background: rgba(80, 80, 80, .5);\n\n &::before {\n transform: translateX(0);\n\n /* Theme dependent */\n background: rgba(120, 120, 120, 1);\n }\n }\n\n &:hover {\n opacity: .7;\n\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n }\n }\n\n & > .draggable-order-item-name {\n flex: 1;\n\n font-size: .95em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(230, 230, 230, 1);\n }\n\n & > .draggable-order-item-toggle {\n cursor: pointer;\n\n flex-shrink: 0;\n width: 44px;\n height: 24px;\n\n border-radius: 100vh;\n\n position: relative;\n\n transition: background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .8),\n rgba(118, 75, 162, .8)\n );\n box-shadow: 0 2px 8px rgba(102, 126, 234, .3);\n\n &::before {\n content: '';\n\n width: 18px;\n height: 18px;\n\n border-radius: 50%;\n\n position: absolute;\n top: 3px;\n left: 3px;\n\n transform: translateX(20px);\n\n transition: transform .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, 1);\n box-shadow: 0 2px 4px rgba(0, 0, 0, .2);\n }\n\n &:hover {\n /* Theme dependent */\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5);\n }\n }\n }\n }\n }\n }\n }\n }\n\n select, input:not([type=range]), textarea, button {\n border: 1px solid transparent;\n\n border-radius: 8px;\n padding: 8px 12px;\n\n font-family: inherit;\n font-size: inherit;\n color: var(--color, inherit);\n\n transition: border .2s ease,\n background .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 8px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .3), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), .9);\n\n &:hover {\n /* Theme dependent */\n box-shadow: 0 4px 12px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .4), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), 1);\n }\n &:not(input, textarea):active {\n /* Theme dependent */\n box-shadow: 0 1px 4px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .2), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), .95);\n }\n\n &[type=number] {\n -moz-appearance: textfield;\n appearance: textfield;\n\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n appearance: none;\n\n margin: 0;\n }\n }\n }\n\n button {\n cursor: pointer !important;\n\n &:hover {\n transform: translateY(-2px);\n }\n &:active {\n transform: translateY(0);\n }\n }\n\n duration-input {\n display: flex;\n flex-direction: column;\n gap: 12px;\n width: 100%;\n\n border: 1px solid;\n border-radius: 12px;\n padding: 16px;\n\n font-family: inherit;\n font-size: .9em;\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n background: rgba(40, 43, 52, .7);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n background: rgba(40, 43, 52, .85);\n }\n\n & > .infinity-label {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 10px 14px;\n\n font-weight: 500;\n font-size: .95em;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(220, 220, 220, 1);\n background: rgba(35, 38, 48, .6);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .2);\n\n &::after {\n content: '\\f00c';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n\n position: absolute;\n top: 50%;\n right: 12px;\n\n font-size: 13px;\n line-height: 1;\n\n opacity: 0;\n transform: translateY(-50%) scale(0);\n\n transition: all .2s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n & > span {\n flex: 1;\n letter-spacing: .3px;\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n background: rgba(45, 48, 58, .8);\n box-shadow: 0 3px 10px rgba(0, 0, 0, .3);\n }\n\n &.selected {\n border-color: rgba(102, 126, 234, .5);\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .2) 0%,\n rgba(118, 75, 162, .2) 100%\n );\n box-shadow: 0 3px 12px rgba(102, 126, 234, .25),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n &::after {\n opacity: 1;\n transform: translateY(-50%) scale(1);\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .6);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25) 0%,\n rgba(118, 75, 162, .25) 100%\n );\n box-shadow: 0 4px 16px rgba(102, 126, 234, .35),\n inset 0 1px 0 rgba(255, 255, 255, .1);\n }\n }\n }\n\n & > .duration-inputs {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 10px;\n\n opacity: 1;\n transform: scale(1);\n\n transition: opacity .2s ease,\n transform .2s cubic-bezier(.4, 0, .2, 1);\n\n & > label {\n display: flex;\n flex-direction: column;\n gap: 6px;\n\n & > span {\n font-size: .75em;\n font-weight: 600;\n letter-spacing: .5px;\n text-align: center;\n text-transform: uppercase;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .85);\n }\n\n & > input {\n cursor: text;\n\n width: 100%;\n\n border: 1px solid;\n border-radius: 6px;\n padding: 8px 10px;\n\n font-family: 'Segoe UI', system-ui, sans-serif;\n font-size: .95em;\n font-weight: 500;\n text-align: center;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(230, 230, 230, 1);\n background: rgba(30, 33, 42, .9);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .2),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n\n &::placeholder {\n color: rgba(150, 154, 170, .6);\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n background: rgba(35, 38, 48, 1);\n box-shadow: 0 3px 8px rgba(0, 0, 0, .25),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n }\n\n &:focus {\n outline: none;\n border-color: rgba(102, 126, 234, .6);\n background: rgba(40, 43, 52, 1);\n box-shadow: 0 0 0 2px rgba(102, 126, 234, .2),\n 0 2px 10px rgba(102, 126, 234, .15),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n }\n\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n }\n }\n\n &:has(.infinity-label.selected) > .duration-inputs {\n opacity: .4;\n transform: scale(.98);\n pointer-events: none;\n }\n }\n\n #reset-statistics-button {\n float: right;\n\n font-size: 1rem;\n\n /* Theme dependent */\n --background: 211, 51, 51;\n }\n\n #settings-ollama-refresh-models {\n float: right;\n\n font-size: 1rem;\n }\n }\n\n .ws-username-highlight {\n position: relative;\n\n &::before {\n content: \"\";\n\n pointer-events: none;\n\n position: absolute;\n inset: 0;\n\n border-radius: 10px;\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n }\n }\n\n &.mobile {\n #queue {\n display: none !important;\n }\n\n #right-details {\n display: none !important;\n }\n\n #right-container {\n width: 100% !important;\n\n #main-container {\n width: 100% !important;\n }\n }\n }\n}\n\n@container (max-width: 300px) {\n #DEFCON {\n padding: 8px 14px !important;\n\n & > span {\n display: none;\n }\n }\n}\n\n@container (max-width: 225px) {\n #DEFCON {\n display: none !important;\n }\n}"},4192(e,t){function n(){return crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}Object.defineProperty(t,"__esModule",{value:!0}),t.generateRandomUUID=function(){return 0===s.length?n():s.pop()};const s=[];"function"==typeof requestIdleCallback&&requestIdleCallback(function e(){s.length<256&&s.push(n()),requestIdleCallback(e)})},4041(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.CreateDOMElement=function(e,t={}){const n=document.createElement(e);"id"in t&&(n.id=t.id);"class"in t&&(n.className=t.class);"text"in t&&(n.textContent=t.text);"html"in t&&(n.innerHTML=t.html);"content"in t&&n.append(t.content);"value"in t&&(n.value=t.value);if("attributes"in t)for(const[e,s]of Object.entries(t.attributes||{}))n.setAttribute(e,s);if("dataset"in t)for(const[e,s]of Object.entries(t.dataset||{}))n.dataset[e]=s;if("style"in t)for(const[e,s]of Object.entries(t.style||{}))n.style.setProperty(e,s);return n}},5643(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.fullTrim=void 0;t.fullTrim=e=>{const t=e.split("\n"),n=t.length;let s=!0,i=1/0,a=[],r=[];for(let e=0;e<n;e++){const n=t[e];if(""===n.trim()){if(s)continue;a.push("")}else{s?s=!1:(r=r.concat(a),a=[]);const e=n.match(/^(\s*)/)[0].length;i=Math.min(i,e),r.push(n)}}const o=r.length;if(0===o)return"";const l=[];for(let e=0;e<o;e++){const t=r[e].trimEnd();""===t?l.push(""):l.push(t.slice(i))}return l.join("\n")}},2852(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Memory=void 0;t.Memory=class{constructor(e={}){this.order=[],this.store=new Map,this.timeouts=new Map,"timeout"in e&&(this.timeout=e.timeout),"size"in e&&(this.maxSize=e.size)}clear(){this.order=[],this.store.clear(),this.timeouts.clear()}has(e){return this.store.has(e)}get(e){return this.store.get(e)}set(e,t){const n=this.order.indexOf(e);-1!==n&&this.order.splice(n,1),this.order.push(e),this.store.set(e,t),this.timeouts.has(e)&&clearTimeout(this.timeouts.get(e)),void 0!==this.timeout&&this.timeouts.set(e,setTimeout(()=>{this.delete(e)},this.timeout)),void 0!==this.maxSize&&this.store.size>this.maxSize&&this.delete(this.order.shift())}add(e){this.store.has(e)||this.set(e,!0)}delete(e){const t=this.order.indexOf(e);-1!==t&&this.order.splice(t,1),this.store.delete(e),clearTimeout(this.timeouts.get(e)),this.timeouts.delete(e)}size(){return this.store.size}}},2595(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Stack=void 0;t.Stack=class{constructor(e=50){this.items=[],this.maxSize=e}push(e){this.items.push(e),this.items.length>this.maxSize&&this.items.shift()}pop(){return this.items.pop()}unshift(e){this.items.unshift(e),this.items.length>this.maxSize&&this.items.pop()}shift(){return this.items.shift()}peek(){return this.items[this.items.length-1]}clear(){this.items=[]}get length(){return this.items.length}set length(e){this.items.length=Math.min(e,this.maxSize)}}},6873(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Trie=void 0;var s=n(4192);function i(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function a(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var r=new WeakSet;function o(e){var t;this.timeouts.has(e)&&clearTimeout(this.timeouts.get(e)),this.timeouts.delete(e);const n=this.order[e];delete this.order[e];const s=[{children:this.store}];let i=this.store;for(const e of n){const t=i.get(e);s.push(t),i=t.children}const a=s.pop();if(a.defined=!1,delete a.value,!((null===(t=a.children)||void 0===t?void 0:t.size)>0))for(let e=s.length-1;e>=0;e--){const t=s[e],i=n.pop();if(t.children.delete(i),t.children.size>0||t.defined)break;t.terminal=!0,delete t.children}}t.Trie=class{constructor(e={}){i(this,r),this.order={},this.store=new Map,this.timeouts=new Map,"timeout"in e&&(this.timeout=e.timeout),"size"in e&&(this.maxSize=e.size)}clear(){this.order={},this.store.clear(),this.timeouts.clear()}has(...e){var t;const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return!1;const e=s.get(t);if(e.terminal)return!1;s=e.children}return!0===(null===(t=s.get(n))||void 0===t?void 0:t.defined)}get(...e){var t;const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.value}set(...e){var t;const n=e.pop();let i=((e,t)=>{const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.UUID})(e);delete this.order[i],void 0===i&&(i=(0,s.generateRandomUUID)());const l=e.pop();let d=this.store;for(const t of e)if(d.has(t)){var c;const e=d.get(t);e.terminal=!1,null!==(c=e.children)&&void 0!==c||(e.children=new Map),d=e.children}else{const e={defined:!1,terminal:!1,children:new Map};d.set(t,e),d=e.children}const u=null!==(t=d.get(l))&&void 0!==t?t:{terminal:!0};u.UUID=i,u.defined=!0,u.value=n,d.set(l,u),this.order[i]=e.concat([l]),this.timeouts.has(i)&&clearTimeout(this.timeouts.get(i)),void 0!==this.timeout&&this.timeouts.set(i,setTimeout(()=>{a(r,this,o).call(this,i)},this.timeout)),void 0!==this.maxSize&&Object.keys(this.order).length>this.maxSize&&a(r,this,o).call(this,this.order.shift())}add(e){this.store.has(e)||this.set(e,!0)}delete(...e){const t=((e,t)=>{const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.UUID})(e);void 0!==t&&a(r,this,o).call(this,t)}size(){return Object.keys(this.order).length}}},4551(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.truncate=function(e,t){return e.length>t?`${e.substring(0,t-3).trimEnd()}...`:e}},1289(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.convertToUTCString=void 0;t.convertToUTCString=e=>`${e.getUTCFullYear().toString().padStart(4,"0")}-${(e.getUTCMonth()+1).toString().padStart(2,"0")}-${e.getUTCDate().toString().padStart(2,"0")}T${e.getUTCHours().toString().padStart(2,"0")}:${e.getUTCMinutes().toString().padStart(2,"0")}:${e.getUTCSeconds().toString().padStart(2,"0")}`},8678(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Ollama=t.AI=void 0;var s=n(4018),i=n(5643);function a(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function r(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=new WeakSet;class l{static registerProvider(e,t){l.providers[e]=t}setup(e,t){if(this.analysis[e].has(t.id)){const n=this.analysis[e].get(t.id);return n.count++,n.request}const n=new AbortController,s=this.fetch(e,t,n.signal);return this.analysis[e].set(t.id,{request:s,abortController:n,count:1}),s.finally(()=>{this.analysis[e].delete(t.id)}),s}async fetch(e,t,n){return{error:"No service has been selected"}}constructor(e,t){a(this,o),r(this,"analysis",{edit:new Map,username:new Map}),r(this,"cache",{username:new Set}),r(this,"analyze",{edit:e=>this.setup("edit",e),username:e=>this.cache.username.has(e.user.name)?Promise.resolve({flag:!1,confidence:1,issues:[],explanation:"Username previously analyzed."}):(this.cache.username.add(e.user.name),this.setup("username",e))}),r(this,"cancel",{all:(e=!0)=>{if(!0===e)for(const e of Object.keys(this.analysis))for(const n of null===(t=this.analysis[e])||void 0===t?void 0:t.keys()){var t;this.cancel[e](n)}else for(const t of null===(n=this.analysis[e])||void 0===n?void 0:n.keys()){var n;this.cancel[e](t)}},edit:e=>{const t=this.analysis.edit.get(e);t&&(t.count--,t.count<=0&&(t.abortController.abort("Edit analysis canceled by user"),this.analysis.edit.delete(e)))},username:e=>{const t=this.analysis.username.get(e);t&&(t.count--,t.count<=0&&(t.abortController.abort("Username analysis canceled by user"),this.analysis.username.delete(e)))}}),r(this,"prompt",{edit:async e=>{var t,n;const a=function(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}(o,this,d).call(this,e.diff),r=null!==(t=s.namespaces.find(t=>t.id===e.ns))&&void 0!==t?t:s.namespaces[0];let l="registered";e.user.temp?l="temporary (unregistered)":e.user.ip&&(l="IP (unregistered)");const c=e.page.categories.join(", ")||"(none)",u=e.page.categories.some(e=>/living people/i.test(e));return(0,i.fullTrim)(`\nYou are an automated Wikipedia item reviewer. Analyze the following item and determine whether the CHANGES INTRODUCED violate Wikipedia policy.\n\nCRITICAL: You are evaluating what this item CHANGED, not the page content before it. The diff shows removed lines (prefixed "-") and added lines (prefixed "+"). Only ADDED content can be a new violation. Removing bad content is a GOOD item. Adding references, citations, and sources is GOOD — it improves verifiability, not the opposite.\n\nitem CONTEXT:\n- Page: "${e.page.title}" (${r.name} namespace)\n- Categories: ${c}${u?"\n- ⚠ BLP: This page is about a living person. Unsourced negative claims are a serious concern.":""}\n- User: "${e.user.name}" (${l}, warning level: ${e.user.warning}/4)\n- ORES vandalism probability: ${(100*e.ores).toFixed(0)}%\n- Size change: ${e.sizediff>0?"+":""}${e.sizediff} bytes\n- Flagged minor: ${e.minor?"yes":"no"}\n- Summary: ${e.comment||"(empty)"}\n- Tags: ${(null===(n=e.tags)||void 0===n?void 0:n.join(", "))||"(none)"}\n\nWHAT TO CHECK:\n1. VANDALISM: Does the item add nonsense, profanity as attacks, hoaxes, blanking, or deliberate misinformation? (WP:VANDALISM)\n2. NPOV: Does the item add clearly biased or one-sided language that is not presented neutrally? (WP:NPOV)\n3. VERIFIABILITY: Does the item add claims that are extraordinary or contentious WITHOUT any sourcing? Note: adding "<ref>" tags, URLs, or citation templates is adding sources — this is the OPPOSITE of a verifiability problem. (WP:V)\n4. ORIGINAL RESEARCH: Does the item add novel analysis, synthesis, or unpublished interpretation not attributable to any source? Simply adding text IS NOT original research if it restates commonly known facts or is sourced. Adding citations is NEVER original research. (WP:NOR)\n5. BLP: If this is a BLP article, does the item add unsourced or poorly-sourced negative material about the subject? (WP:BLP)\n\nWHAT IS NOT A VIOLATION:\n- Adding references, citations, "<ref>" tags, or URLs (this IMPROVES the article)\n- Removing vandalism or bad content\n- Fixing grammar, spelling, formatting, or wikilinks\n- Content about controversial topics written in a neutral, encyclopedic tone\n- Wikipedia is NOT censored — explicit content on appropriate pages is allowed (WP:NOTCENSORED)\n- Absent or auto-generated item summaries (e.g. "/* Section name */") are normal, not violations\n- ORES scores and warning levels are hints — do NOT treat them as evidence by themselves\n\nASSESSMENT SCALE:\n- "Good": No policy issues. Normal constructive item.\n- "Review": Minor concerns; a human should glance at it.\n- "Suspicious": Likely problematic; warrants close scrutiny.\n- "Bad": Clear policy violation.\n\nWhen in doubt between two ratings, choose the LESS severe one. Most items on Wikipedia are constructive — reflect that in your assessments.\n\nFor issues, use short policy codes (e.g. "WP:VANDALISM", "WP:NPOV", "WP:BLP"). Keep your explanation to 1-3 sentences.\n\nFORMATTING: Write your explanation as inline HTML with properly opened AND closed tags. Never use self-closing tags like <code/> or <b/> — always use an opening and closing pair.\nExample: <b>Clear vandalism</b> — added <code>lol hacked</code> which violates <i>WP:VANDALISM</i>.\nAllowed tags: <b>...</b>, <i>...</i>, <code>...</code>. No markdown, no block tags.\n\nDIFF:\n${a}\n`)},username:async e=>{var t;return(0,i.fullTrim)(`\nYou are an automated Wikipedia username policy reviewer. Determine whether the username below violates Wikipedia's username policy.\n\nUSERNAME: ${e.user.name}\nPAGE CONTEXT: ${(null===(t=e.page)||void 0===t?void 0:t.title)||"(unknown)"}\n\nThe page context is provided ONLY to check for potential conflict-of-interest (e.g. a user named "AcmeCorp" iteming the Acme Corporation article). A controversial page topic does NOT make the username problematic.\n\nVIOLATION CATEGORIES (flag ONLY if the username clearly and unambiguously fits one):\n\n1. Offensive — The name is unambiguously profane, threatening, sexually explicit, or promotes vandalism. Merely edgy, weird, or humorous names do NOT qualify. (WP:U#OFFENSIVE)\n2. Disruptive — The name clearly declares intent to disrupt or vandalize (e.g. "I Will Vandalize"). (WP:U#DISRUPTIVE)\n3. Libelous — The name makes a clearly false or disparaging claim about a specific real person, or reveals private personal information. (WP:U#LIBEL)\n4. Misleading — The name impersonates a specific real person, or falsely claims special permissions by including terms like "admin", "sysop", "bureaucrat", "checkuser". (WP:U#MISLEADING)\n5. Promotional — The name is a URL or email address whose clear purpose is advertising or revenue. Containing a brand name alone is NOT enough. (WP:U#PROMO)\n6. Shared — The name unambiguously represents a company, organization, or role rather than an individual (e.g. "XYZ Foundation", "Secretary of ABC"). Names like "JohnAtAcme" or "AcmeFan123" are fine — they clearly identify an individual. (WP:U#SHARED)\n\nDECISION RULES:\n- Flag ONLY clear, unambiguous violations. Borderline = no flag.\n- Numbers at the end of a username (e.g. "itemor2847", "WikiFan99") are completely normal and NOT a violation of any kind.\n- Creative, odd, humorous, or meaningless usernames are NOT violations.\n- Containing a real word that could be offensive in some context is NOT enough — the name must be clearly and intentionally offensive.\n- When in doubt: do NOT flag. Set flag to false.\n- If not flagging, set explanation to "No violation."\n\nFORMATTING: Write your explanation as inline HTML with properly opened AND closed tags. Never use self-closing tags like <code/> or <b/> — always use an opening and closing pair.\nExample: Username contains <code>sysop</code> which falsely implies <i>WP:U#MISLEADING</i> permissions.\nAllowed tags: <b>...</b>, <i>...</i>, <code>...</code>. No markdown, no block tags.\n`)}}),this.ws=e,this.settings=e.store.settings.AI,this.config=t}async test(){return!1}async models(){return[]}}function d(e){var t;const n=document.createElement("div");n.innerHTML=e;const s=[];for(const e of n.querySelectorAll("tr")){const t=e.querySelector(".diff-deletedline"),n=e.querySelector(".diff-addedline"),i=e.querySelector(".diff-context");t&&s.push(`- ${t.textContent.trim()}`),n?s.push(`+ ${n.textContent.trim()}`):i&&s.push(` ${i.textContent.trim()}`)}return s.length>0?s.join("\n"):(null===(t=n.textContent)||void 0===t?void 0:t.trim())||""}t.AI=l,r(l,"providers",{});const c={type:"object",properties:{issues:{type:"array",items:{type:"object",properties:{policy:{type:"string"},severity:{type:"string",enum:["Low","Medium","High","Critical"]}},required:["policy","severity"]}},explanation:{type:"string"},assessment:{type:"string",enum:["Good","Review","Suspicious","Bad"]},confidence:{type:"number",minimum:0,maximum:1}},required:["assessment","confidence","issues","explanation"]},u={type:"object",properties:{issues:{type:"array",items:{type:"object",properties:{policy:{type:"string",enum:["Offensive","Disruptive","Libelous","Misleading","Promotional","Shared"]},severity:{type:"string",enum:["Low","Medium","High","Critical"]}},required:["policy","severity"]}},explanation:{type:"string"},flag:{type:"boolean"},confidence:{type:"number",minimum:0,maximum:1}},required:["flag","confidence","issues","explanation"]};class p extends l{async test(){try{return(await fetch(`${this.config.server}/api/version`,{method:"GET"})).ok}catch(e){return!1}}async models(){try{const e=await fetch(`${this.config.server}/api/tags`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!e.ok)throw new Error(`Ollama API error: ${e.status} ${e.statusText}`);return(await e.json()).models||[]}catch(e){throw e}}async fetch(e,t,n=null){try{const s=this.prompt[e](t),i={method:"POST",headers:{"Content-Type":"application/json"}},a={model:this.config.model,prompt:await s,stream:!1,options:{temperature:.1,top_p:.9,num_predict:1024},format:"edit"===e?c:u};let r;i.body=JSON.stringify(a),n&&(i.signal=n);try{if(r=await fetch(`${this.config.server}/api/generate`,i),!r.ok)throw new Error(`Ollama API error: ${r.status} ${r.statusText}`);const e=await r.json();if(!e.response)throw new Error("Empty response from Ollama");return JSON.parse(e.response)}catch(e){return{error:e.message||"Ollama request failed"}}}catch(e){return{error:e.message||"Ollama request failed"}}}}t.Ollama=p,l.registerProvider("Ollama",p)},8169(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.AudioManager=void 0;var s=n(4192),i=n(1258);const a={startup:{type:"sound",title:"Startup Sound",description:"Sound played when WikiShield starts up.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/startup.wav"},music:{type:"category",title:"Music",description:"Background music tracks.",volume:1,properties:{zen_mode:{type:"sound",title:"Zen Mode",description:"Background audio played in Zen mode.",volume:1,data:"custom://zen_mode",preview:!1}}},ui:{type:"category",title:"User Interface Sounds",description:"Sounds used for user interface interactions.",volume:1,properties:{click:{type:"sound",title:"Click Sound",description:"Sound played when clicking on interface elements.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/click.wav"}}},queue:{type:"category",title:"Queue Sounds",description:"Sounds played for queue events.",volume:1,properties:{ores:{type:"sound",title:"ORES Alert",description:"Sound played due to a high ORES score.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/ores.wav"},mention:{type:"sound",title:"Mention Alert",description:"Sound played when your username is mentioned in an edit.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/mention.wav"}}},notification:{type:"category",title:"Notification Sounds",description:"Sounds played for various notifications.",volume:1,properties:{alert:{type:"sound",title:"Alert Sound",description:"Sound played for alerts.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/alert.wav"},message:{type:"sound",title:"Message Sound",description:"Sound played for messages.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/message.wav"},toast:{type:"sound",title:"Toast Sound",description:"Sound played for toast notifications.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/toast.wav"}}},action:{type:"category",title:"Action Sounds",description:"Sounds played for various user actions.",volume:1,properties:{default:{type:"sound",title:"Default Action Sound",description:"Sound played for default actions.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/action.wav"},failed:{type:"sound",title:"Failed Action Sound",description:"Sound played when an action fails.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/failed.wav"},report:{type:"sound",title:"Report Action Sound",description:"Sound played for report actions.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/report.wav"}}}};t.AudioManager=class{constructor(e){this.ws=e,this.audio=a,this.soundEffects=new Map,this.previews=new Map,this.previewing=!1}async init(){this.zengine=new i.Zengine,this.zengine.debug=this.ws.__DEV__,await this.zengine.init(),this.zengine.setMasterVolume(this.ws.store.settings.audio.volume["master.music.zen_mode"])}async playSound(e,t,n=!1,i){if(!n){const e=this.ws.store.settings.zen_mode;if(e.enabled&&!e.sound.enabled)return}const a=this.getSound(e);if(!a||!a.data)return;const r=this.getVolume(e),o=new Audio(a.data);o.volume=!n&&this.previewing?0:r,"mediaSession"in navigator&&(navigator.mediaSession.setActionHandler("play",()=>{}),navigator.mediaSession.setActionHandler("pause",()=>{}),navigator.mediaSession.setActionHandler("previoustrack",()=>{}),navigator.mediaSession.setActionHandler("nexttrack",()=>{}));const l=(0,s.generateRandomUUID)();n&&(this.muteId=l,this.previewing=!0,this.stopPreviews(),this._muteAll(),this.previews.set(o,e)),this.soundEffects.set(o,e);const d=new Promise((e,t)=>{o.resolve=e,o.reject=t});o.onended=()=>{o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))},o.onerror=()=>{o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))};let c=!1;return o.onplay=()=>{c||(c=!0,i&&i())},null==t||t.addEventListener("abort",()=>{o.pause(),o.src="",o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))}),window.ineractedWithPage?await o.play():null==i||i(),d}async previewSound(e){const t=this.getSound(e);if(!t||!t.data)return;this._muteAll();const n=new Audio(t.data);n.volume=this.getVolume(e),this.previews.set(n,e);const s=()=>{this.previews.delete(n),0===this.previews.size&&this._unmuteAll()};n.onended=s,n.onerror=s,window.ineractedWithPage&&await n.play()}stopPreviews(){for(const e of this.previews.keys())e.resolve(),e.pause(),e.onended=null,e.onerror=null,e.src="";this.previews.clear(),this._unmuteAll()}onvolumechanged(){if(this.zengine.setMasterVolume(this.ws.store.settings.audio.volume["master.music.zen_mode"]),this.previewing)for(const[e,t]of this.previews.entries()){const n=this.getVolume(t);e.volume=n}else for(const[e,t]of this.soundEffects.entries()){const n=this.getVolume(t);e.volume=n}}_muteAll(){for(const e of this.soundEffects.keys())e.volume=0}_unmuteAll(){for(const[e,t]of this.soundEffects.entries())e.volume=this.getVolume(t)}getSound(e){let t={type:"category",properties:this.audio};for(const n of e){if("category"!==t.type)return null;if(t=t.properties[n],!t)return null}return t}getVolume(e){const t=this.ws.store.settings.audio.volume;let n=t.master,s={type:"category",properties:this.audio};const i=["master"];for(const a of e){if(i.push(a),"category"!==s.type)return n;if(s=s.properties[a],!s)break;const e=t[i.join(".")];void 0!==e&&(n*=e)}return n}}},1258(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Zengine=void 0;class n{constructor(){this.audioContext=null,this.masterGain=null,this.isPlaying=!1,this.debug=!1,this.layers={bass:{oscillators:[],gains:[],compressor:null},pad:{oscillators:[],gains:[],filter:null,reverb:null}},this.nextChordTimeout=null,this.baseFrequency=65.41,this.currentKey=0,this.chordLibrary={maj7:{bass:[0],pad:[0,7,11,16,19],tension:.1},min7:{bass:[0],pad:[0,7,10,15,19],tension:.15},maj9:{bass:[0],pad:[0,7,11,14,19],tension:.12},min9:{bass:[0],pad:[0,7,10,14,19],tension:.18},sus2:{bass:[0],pad:[0,7,12,14,19],tension:.25},sus4:{bass:[0],pad:[0,7,12,17,19],tension:.28},add9:{bass:[0],pad:[0,7,14,16,21],tension:.15},madd9:{bass:[0],pad:[0,7,14,15,21],tension:.2},openvoice:{bass:[0],pad:[0,7,12,19,24],tension:.08},"6add9":{bass:[0],pad:[0,7,9,14,19],tension:.18}},this.chordCompatibility={maj7:["maj9","min7","sus2","add9","openvoice","6add9"],min7:["maj7","min9","sus4","madd9","openvoice"],maj9:["maj7","add9","sus2","6add9","openvoice"],min9:["min7","madd9","sus2","maj9"],sus2:["maj7","maj9","add9","openvoice","sus4"],sus4:["maj7","sus2","min7","openvoice"],add9:["maj9","sus2","maj7","openvoice","6add9"],madd9:["min9","min7","add9","sus2"],openvoice:["sus2","maj7","add9","maj9"],"6add9":["maj7","maj9","add9","sus2"]},this.currentChordName="maj7",this.currentTension=.1}init(){this.audioContext||(this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.masterGain=this.audioContext.createGain(),this.masterGain.connect(this.audioContext.destination),this.masterGain.gain.value=.2,this.setupLayerEffects())}async start(){this.isPlaying||(this.init(),"suspended"===this.audioContext.state&&await this.audioContext.resume(),this.isPlaying=!0,this.currentKey=Math.floor(12*Math.random()),this.playNextChord())}setupLayerEffects(){const e=this.audioContext.createDynamicsCompressor();e.threshold.value=-30,e.knee.value=40,e.ratio.value=12,e.attack.value=.003,e.release.value=.25,e.connect(this.masterGain),this.layers.bass.compressor=e;const t=this.audioContext.createBiquadFilter();t.type="lowpass",t.frequency.value=1200,t.Q.value=.5;const n=this.audioContext.createDelay(2);n.delayTime.value=.4;const s=this.audioContext.createGain();s.gain.value=.3,t.connect(n),n.connect(s),s.connect(t),t.connect(this.masterGain),this.layers.pad.filter=t,this.layers.pad.reverb={delay:n,gain:s}}playNextChord(){if(!this.isPlaying)return;const e=this.chooseNextChord(),t=this.currentChordName;if(this.currentChordName=e,this.currentTension=this.chordLibrary[e].tension,this.debug&&console.log("[MusicEngine] Chord changed",{from:t,to:e,tension:this.currentTension,key:this.currentKey,timestamp:this.audioContext.currentTime}),Math.random()<.08){const e=this.currentKey;this.currentKey=(this.currentKey+[2,5,7][Math.floor(3*Math.random())])%12,this.debug&&console.log("[MusicEngine] Key changed",{from:e,to:this.currentKey})}this.transitionToChord(e);const n=12e3+1e4*Math.random();this.nextChordTimeout=setTimeout(()=>this.playNextChord(),n)}chooseNextChord(){const e=this.chordCompatibility[this.currentChordName]||Object.keys(this.chordLibrary),t=e.map(e=>({name:e,weight:this.chordLibrary[e].tension<.2?2:1})),n=t.reduce((e,t)=>e+t.weight,0);let s=Math.random()*n;for(const e of t)if(s-=e.weight,s<=0)return e.name;return e[0]}transitionToChord(e){const t=this.chordLibrary[e];if(!t)return;const n=6+3*Math.random();["bass","pad"].forEach(e=>this.createLayer(e,t[e],n))}createLayer(e,t,n){if(null==t||!t.length)return;const s=this.audioContext.currentTime,i=this.layers[e];if(i.gains&&i.gains.length>0){const e=[...i.oscillators],t=[...i.gains];t.forEach(e=>{try{e.gain.cancelScheduledValues(s),e.gain.setValueAtTime(e.gain.value,s),e.gain.linearRampToValueAtTime(0,s+n)}catch(e){}}),setTimeout(()=>{e.forEach(e=>{try{e.stop(),e.disconnect()}catch(e){}}),t.forEach(e=>{try{e.disconnect()}catch(e){}})},1e3*n+100)}const a=[],r=[],o=[];t.forEach((t,l)=>{const d=this.baseFrequency*Math.pow(2,(this.currentKey+t)/12);o.push(d);const c=this.audioContext.createOscillator();c.type="bass"===e?"sine":"triangle",c.frequency.value=d,c.detune.value=6*(Math.random()-.5);const u=this.audioContext.createGain();u.gain.value=0,c.connect(u),"bass"===e&&i.compressor?u.connect(i.compressor):i.filter&&u.connect(i.filter),c.start(s),a.push(c),r.push(u);const p="bass"===e?.15:.08-.01*l;u.gain.setValueAtTime(0,s),u.gain.linearRampToValueAtTime(p,s+n)}),this.debug&&console.log("[MusicEngine] Layer created",{layer:e,frequencies:o,volumes:r.map(e=>e.gain.value),fadeDuration:n}),i.oscillators=a,i.gains=r}stop(){this.isPlaying=!1,this.nextChordTimeout&&clearTimeout(this.nextChordTimeout),this.debug&&console.log("[MusicEngine] Stopping music engine",{timestamp:this.audioContext.currentTime});const e=this.audioContext.currentTime;if(Object.values(this.layers).forEach(t=>{t.gains&&t.gains.forEach(t=>{try{t.gain.setValueAtTime(t.gain.value,e),t.gain.linearRampToValueAtTime(0,e+.5)}catch(e){}}),t.oscillators&&setTimeout(()=>{t.oscillators.forEach(e=>{try{e.stop(),e.disconnect()}catch(e){}}),t.oscillators=[],t.gains&&(t.gains.forEach(e=>{try{e.disconnect()}catch(e){}}),t.gains=[])},550)}),this.masterGain)try{this.masterGain.gain.setValueAtTime(this.masterGain.gain.value,e),this.masterGain.gain.linearRampToValueAtTime(0,e+.5)}catch(e){}}setMasterVolume(e){if(this.masterGain){const t=this.masterGain.gain.value;this.masterGain.gain.value=e,this.debug&&console.log("[MusicEngine] Master volume changed",{from:t,to:e})}}}t.Zengine=class{constructor(){this.audioContext=null,this.sounds=[],this.activeSounds=new Map,this.masterGainNode=null,this.isRunning=!1,this.currentEnvironment=null,this.eventLoopInterval=null,this.activityLevel=4,this.musicEngine=null,this.debug=!1}async init(){this.musicEngine=new n,this.musicEngine.init(),this.musicEngine.debug=this.debug;const e=await fetch("https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/bbc-sounds.json"),t=await e.json();return this.sounds=this.categorizeSounds(t),this.debug&&console.log("[Zengine] Initialized",{soundCount:this.sounds.length,categories:[...new Set(this.sounds.map(e=>e.category))]}),this.sounds.length}categorizeSounds(e){return e.map(e=>{var t;const n=(e.tags||[]).map(e=>e.toLowerCase()),s=(e.description||"").toLowerCase(),i=parseFloat((null===(t=e.technicalMetadata)||void 0===t?void 0:t.duration)||e.duration)||0,a=this.detectCategory(n,s),r=i>60?"ambient":i>15?"feature":"event";return{id:e.id,duration:i,description:e.description,category:a,role:r}})}detectCategory(e,t){const n=[...e,t].join(" ");return/rain|drizzle/i.test(n)?"rain":/ocean|sea|wave/i.test(n)?"ocean":/stream|river|water/i.test(n)?"water-flow":/wind|breeze/i.test(n)?"wind":/bird/i.test(n)?"bird":/cricket|insect/i.test(n)?"insect":"other"}generateEnvironment(){const e=[{name:"Gentle Rain",requiredAmbient:["rain"],commonCategories:["bird"],weather:"rain"},{name:"Ocean Shore",requiredAmbient:["ocean"],commonCategories:["bird","wind"],weather:"clear"},{name:"Forest Stream",requiredAmbient:["water-flow"],commonCategories:["bird","insect"],weather:"clear"}],t=e[Math.floor(Math.random()*e.length)];return this.debug&&console.log("[Zengine] Environment generated",{name:t.name,weather:t.weather,ambientRequirements:t.requiredAmbient,commonSounds:t.commonCategories}),t}getEnvironmentSounds(e){return{ambient:this.sounds.filter(t=>"ambient"===t.role&&e.requiredAmbient.includes(t.category)),events:this.sounds.filter(t=>"event"===t.role&&e.commonCategories.includes(t.category))}}async start(){this.isRunning||(0===this.sounds.length&&await this.init(),this.musicEngine.isPlaying||await this.musicEngine.start(),this.audioContext||(this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.masterGainNode=this.audioContext.createGain(),this.masterGainNode.connect(this.audioContext.destination),this.masterGainNode.gain.value=.3),"suspended"===this.audioContext.state&&await this.audioContext.resume(),this.isRunning=!0,this.currentEnvironment=this.generateEnvironment(),this.debug&&console.log("[Zengine] Engine started",{environment:this.currentEnvironment.name,audioContextState:this.audioContext.state}),await this.startAmbientLayers(),this.startEventLoop())}async startAmbientLayers(){const e=this.getEnvironmentSounds(this.currentEnvironment),t=Math.min(e.ambient.length,2);for(let n=0;n<t;n++){const t=e.ambient[Math.floor(Math.random()*e.ambient.length)];this.activeSounds.has(t.id)||await this.playSound(t,"ambient",.35+.1*Math.random())}}startEventLoop(){this.eventLoopInterval=setInterval(()=>this.processEvents(),3e3),this.debug&&console.log("[Zengine] Event loop started")}async processEvents(){if(!this.isRunning)return;const e=this.getEnvironmentSounds(this.currentEnvironment);if(Array.from(this.activeSounds.values()).filter(e=>"ambient"!==e.role).length<this.activityLevel&&e.events.length>0&&Math.random()<.5){const t=e.events[Math.floor(Math.random()*e.events.length)];await this.playSound(t,"event",.12+.08*Math.random())}}async playSound(e,t,n){if(!this.activeSounds.has(e.id))try{const s=e.url||`https://sound-effects-media.bbcrewind.co.uk/mp3/${e.id}.mp3`,i=new Audio;i.crossOrigin="anonymous",i.src=s,i.preload="auto";const a=this.audioContext.createMediaElementSource(i),r=this.audioContext.createGain();r.gain.value=n,a.connect(r),r.connect(this.masterGainNode),this.activeSounds.set(e.id,{sound:e,audio:i,source:a,gainNode:r,role:t,volume:n}),this.debug&&console.log("[Zengine] Sound started playing",{soundId:e.id,description:e.description,role:t,volume:n,category:e.category,duration:e.duration,activeCount:this.activeSounds.size}),i.addEventListener("ended",()=>{this.removeSound(e.id),"ambient"===t&&this.isRunning&&setTimeout(()=>this.playSound(e,t,n),1e3)}),i.addEventListener("error",()=>this.removeSound(e.id)),await i.play()}catch(t){console.error("[Zengine] Sound error:",e.id,t)}}removeSound(e){const t=this.activeSounds.get(e);if(t){try{t.audio.pause(),t.gainNode.disconnect(),t.source.disconnect()}catch(e){}this.debug&&console.log("[Zengine] Sound removed",{soundId:e,description:t.sound.description,activeCount:this.activeSounds.size-1}),this.activeSounds.delete(e)}}stop(){this.musicEngine.isPlaying&&this.musicEngine.stop(),this.isRunning=!1,this.eventLoopInterval&&(clearInterval(this.eventLoopInterval),this.eventLoopInterval=null),this.debug&&console.log("[Zengine] Engine stopping",{activeSounds:this.activeSounds.size}),this.activeSounds.forEach((e,t)=>{try{e.audio.pause(),e.audio.currentTime=0}catch(e){}const n=this.audioContext.currentTime;e.gainNode.gain.cancelScheduledValues(n),e.gainNode.gain.setValueAtTime(e.gainNode.gain.value,n),e.gainNode.gain.linearRampToValueAtTime(0,n+.5),setTimeout(()=>this.removeSound(t),500)}),this.audioContext&&"running"===this.audioContext.state&&this.audioContext.suspend(),this.debug&&console.log("[Zengine] Engine stopped")}setMasterVolume(e){if(this.masterGainNode){const t=this.masterGainNode.gain.value;this.masterGainNode.gain.value=e,this.debug&&console.log("[Zengine] Master volume changed",{from:t,to:e,musicEngineVolume:.25*e})}this.musicEngine.setMasterVolume(.25*e)}}},870(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.conditions=void 0;var s=n(372);t.conditions={true:{title:"True",check:(e,t,n)=>!0},false:{title:"False",check:(e,t,n)=>!1},"account-admin":{title:"You are an admin",check:(e,t,n)=>!0===e.groups.sysop},"item-selected":{title:"An item is selected",check:(e,t,n)=>null!==t},"edit-selected":{title:"An edit is selected",check:(e,t,n)=>"edit"===s.Queue.groups[null==t?void 0:t.type]},"logevent-selected":{title:"A logentry is selected",check:(e,t,n)=>"logevent"===s.Queue.groups[null==t?void 0:t.type]},revertable:{title:"Current item is revertable",check:(e,t,n)=>{let i=null==t?void 0:t.type;return"abuselog"===i&&null!=t&&t.revid&&(i="edit"),"edit"===s.Queue.groups[i]}},pending:{title:"Current item is pending review",check:(e,t,n)=>!!e.queue.pending.has(null==t?void 0:t.id)},"user-registered":{title:"Selected user is registered",check:(e,t,n)=>{var s;return!1===(null==t||null===(s=t.user)||void 0===s?void 0:s.anon)}},"user-ip":{title:"Selected user is an IP address",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.ip)}},"user-temp":{title:"Selected user is a temporary account",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.temp)}},"user-empty-talk":{title:"Selected user's talk page is empty",check:(e,t,n)=>{var s;return void 0===(null==t||null===(s=t.user)||void 0===s?void 0:s.talk)}},"user-blocked":{title:"Selected user is blocked",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.blocked)}},"user-edit-count":{title:"Selected user's edit count is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"count",title:"Edit count",type:"number",default:0}],check:(e,t,n)=>{var s,i;const a=-1===(null==t||null===(s=t.user)||void 0===s?void 0:s.editcount)?1/0:(null==t||null===(i=t.user)||void 0===i?void 0:i.editcount)||0,r=Number(n.count);switch(n.condition){case"<":return a<r;case"≤":return a<=r;case"=":return a===r;case"≥":return a>=r;case">":return a>r;default:return!1}}},"user-final-warning":{title:"Selected user at final warning level",check:(e,t,n)=>{var s,i;return"4"===(null==t||null===(s=t.user)||void 0===s?void 0:s.warning)||"4im"===(null==t||null===(i=t.user)||void 0===i?void 0:i.warning)}},"user-has-warnings":{title:"Selected user has no warnings",check:(e,t,n)=>{var s;return"0"!==(null==t||null===(s=t.user)||void 0===s?void 0:s.warning)}},"edit-pending":{title:"Edit is pending",check:(e,t,n)=>e.queue.pending.has(null==t?void 0:t.id)},"edit-minor":{title:"Edit is marked as minor",check:(e,t,n)=>!0===(null==t?void 0:t.minor)},"edit-size":{title:"Edit size is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"size",title:"Size",type:"number",default:0}],check:(e,t,n)=>{const s=(null==t?void 0:t.sizediff)||0,i=Number(n.size);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"abs-edit-size":{title:"Absolute edit size is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"size",title:"Size",type:"number",min:0,default:0}],check:(e,t,n)=>{const s=Math.abs((null==t?void 0:t.sizediff)||0),i=Number(n.size);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"edit-ores-score":{title:"Edit ORES score is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"score",title:"Score",type:"number",min:0,max:1,default:0}],check:(e,t,n)=>{const s=(null==t?void 0:t.ores_score)||0,i=Number(n.score);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"user-highlighted":{title:"Selected user is highlighted",check:(e,t,n)=>{var s;return e.store.highlight.users.has(null==t||null===(s=t.user)||void 0===s?void 0:s.name)}},"user-whitelisted":{title:"Selected user is whitelisted",check:(e,t,n)=>{var s;return e.store.whitelist.users.has(null==t||null===(s=t.user)||void 0===s?void 0:s.name)}},"page-highlighted":{title:"Selected page is highlighted",check:(e,t,n)=>{var s;return e.store.highlight.pages.has(null==t||null===(s=t.page)||void 0===s?void 0:s.title)}},"page-whitelisted":{title:"Selected page is whitelisted",check:(e,t,n)=>{var s;return e.store.whitelist.pages.has(null==t||null===(s=t.page)||void 0===s?void 0:s.title)}},"page-watched":{title:"Selected page is watched",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.page)||void 0===s?void 0:s.watched)}},"tag-highlighted":{title:"Selected edit has a highlighted tag",check:(e,t,n)=>{for(const n of(null==t?void 0:t.tags)||[])if(e.store.highlight.tags.has(n))return!0;return!1}},"tag-whitelisted":{title:"Selected edit has a whitelisted tag",check:(e,t,n)=>{for(const n of t.tags||[])if(e.store.whitelist.tags.has(n))return!0;return!1}},"in-recent-queue":{title:"In recent changes queue",check:(e,t,n)=>"recent"===e.queue.current.type},"in-pending-queue":{title:"In pending changes queue",check:(e,t,n)=>"pending"===e.queue.current.type},"in-user-queue":{title:"In user creations queue",check:(e,t,n)=>"users"===e.queue.current.type},"in-watchlist-queue":{title:"In watchlist queue",check:(e,t,n)=>"watchlist"===e.queue.current.type}}},9808(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.validateShortcut=t.controls=t.buildShortcut=void 0;const n=t.controls=new Set(["!","@","#","$","%","^","&","*","(",")","1","2","3","4","5","6","7","8","9","0","q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m","-","=","[","]","\\",";","'",",",".","/","_","+","{","}","|",":",'"',"<",">","?"," ","arrowleft","arrowup","arrowdown","arrowright"]);t.buildShortcut=e=>{const t=[];["ctrl","shift","alt","meta"].forEach(n=>{e[`${n}Key`]&&t.push(n)});const s=e.key.toLowerCase();return n.has(s)&&t.push(s),t.join("+")};t.validateShortcut=e=>{const t=e.toLowerCase().split("+");if(0===t.length)return!1;const s=new Set;for(const e of t){if(s.has(e))return!1;if(s.add(e),"ctrl"!==e&&"shift"!==e&&"alt"!==e&&!n.has(e))return!1}return t.some(e=>"ctrl"!==e&&"shift"!==e&&"alt"!==e)}},985(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.events=void 0;var s=n(372),i=n(7054),a=n(955),r=n(863),o=n(5643);t.events={"next-item":{title:"Go to next item",icon:"fas fa-arrow-right",script:(e,t,n)=>(e.queue.next(),{valid:!0})},"previous-item":{title:"Go to previous item",icon:"fas fa-arrow-left",script:(e,t,n)=>(e.queue.previous(),{valid:!0})},"clear-queue":{title:"Clear queue",icon:"fas fa-trash-can",valid:(e,t,n)=>"pending"===e.queue.current.type?{valid:!1,reason:"Pending edits queue cannot be cleared."}:{valid:!0},script:(e,t,n)=>(e.queue.clear(e.queue.current.type),{valid:!0})},"next-queue":{title:"Go to next queue",icon:"fas fa-forward",script:(e,t,n)=>{const i=s.Queue.types.map(t=>({name:t,...e.store.settings.queue[t]}));i.sort((e,t)=>e.order-t.order);const a=i.filter(e=>e.enabled);if(0===a.length)return{valid:!1,reason:"No queues are enabled."};const r=a.findIndex(t=>t.name===e.queue.current.type);return e.queue.switch(a[(r+1)%a.length].name),{valid:!0}}},"previous-queue":{title:"Go to previous queue",icon:"fas fa-forward",script:(e,t,n)=>{const i=s.Queue.types.map(t=>({name:t,...e.store.settings.queue[t]}));i.sort((e,t)=>e.order-t.order);const a=i.filter(e=>e.enabled);if(0===a.length)return{valid:!1,reason:"No queues are enabled."};const r=a.findIndex(t=>t.name===e.queue.current.type);return e.queue.switch(a[(r-1+a.length)%a.length].name),{valid:!0}}},"accept-pending-edit":{title:"Accept pending edit",icon:"fas fa-check",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Accepting pending edit",valid:(e,t,n)=>t?e.rights.review?e.queue.pending.has(t.id)?{valid:!0}:{valid:!1,reason:"This edit is not pending review."}:{valid:!1,reason:"You do not have permission to review pending changes."}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{const s=e.queue.pending.get(t.id);if(!s)return{valid:!1,reason:"Pending edit not found."};const i=`${s.count||""} pending revision${1===s.count?"":"s"}`,a=Object.entries(s.users||{}).map(t=>[e.api.user(t[0]),t[1]]);a.sort((e,t)=>t[1]-e[1]);const r=Math.max(a.reduce((e,t)=>{const n=t[0].length;return e[0]+n<=250?[e[0]+n,e[1]+1]:e},[0,0])[1],1);let o="";const l=a.length;if(l>r){const e=a.slice(0,r).map(e=>e[0]),t=l-e.length;o=`${e.join(", ")}, and ${t} other${1===t?"":"s"}`}else o=(e=>{switch(e.length){case 0:case 1:return e[0]||"";case 2:return`${e[0]} and ${e[1]}`;default:return`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}})(a.map(e=>e[0]));return await e.api.acceptPendingEdit(t.pending.revid,e.api.summary(`Accepted ${i} by ${o}`,n.summary))},successful:(e,t,n)=>{e.store.statistics.pending_changes_reviewed.accepted++}},"reject-pending-edit":{title:"Reject pending edit",icon:"fas fa-xmark",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Rejecting pending edit",valid:(e,t,n)=>t?e.rights.review?e.queue.pending.has(t.id)?{valid:!0}:{valid:!1,reason:"This edit is not pending review."}:{valid:!1,reason:"You do not have permission to review pending changes."}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{const s=e.queue.pending.get(t.id);if(!s)return{valid:!1,reason:"Pending edit not found."};const i=`${s.count||""} pending revision${1===s.count?"":"s"}`,a=Object.entries(s.users||{}).map(t=>[e.api.user(t[0]),t[1]]);a.sort((e,t)=>t[1]-e[1]);const r=Math.max(a.reduce((e,t)=>{const n=t[0].length;return e[0]+n<=250?[e[0]+n,e[1]+1]:e},[0,0])[1],1);let o="";const l=a.length;if(l>r){const e=a.slice(0,r).map(e=>e[0]),t=l-e.length;o=`${e.join(", ")}, and ${t} other${1===t?"":"s"}`}else o=(e=>{switch(e.length){case 0:case 1:return e[0]||"";case 2:return`${e[0]} and ${e[1]}`;default:return`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}})(a.map(e=>e[0]));return await e.api.rejectPendingEdit(t.id,s.prior,t.page.title,e.api.summary(`Rejected ${i} by ${o} to [[Special:Diff/${s.prior}|last stable revision]]`,n.summary))},successful:(e,t,n)=>{e.store.statistics.pending_changes_reviewed.rejected++}},revert:{title:"Revert and auto warn/report",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]}],progress:"Reverting edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;if("abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i])return{valid:!1,reason:"Edit can only be reverted when an edit is selected."};return"summary"in(0,a.getWarningFromLookup)(n.warning)?{valid:!0}:{valid:!1,reason:"Selected warning template does not support reverting."}},script:async(e,t,n)=>{var r;const l=(0,a.getWarningFromLookup)(n.warning);if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Reverting yourself","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to revert their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to revert the edit on it?`)||null!==(r=t.tags)&&void 0!==r&&r.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to revert it?"))return{valid:!1,reason:"Revert cancelled by user."};const d=await(async()=>await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted edits by ${e.api.user(t.user.name)}`,l.summary)))();if(!d.valid)return d;switch(e.store.statistics.reverts_made.total++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}let c,u;const p=await(async()=>{const n=`User talk:${t.user.name}`,i=e.util.monthSectionName(),a=(await e.api.getPagesContent([n]))[n]||"",r=e.util.getPageSections(a);c=e.queue.getWarningHistory(a).map(e=>e.template);let o="new";const d=r.length;for(let e=0;e<d;e++)r[e].title===i&&(o=e+1);let p;u=e.queue.getWarningLevel(a),p="string"==typeof l.auto?l.auto:"function"==typeof l.auto?l.auto(t,u):l.auto[u];const g=l.templates.find(e=>e.name===p.toString());if(!g)return{valid:!0};c.push(g.template);let h="Message about ";"edit"===s.Queue.groups[t.type]?h+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?h+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:h+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:h+=`[[${t.page.title}]]`;let m="";m="new"===o?`{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`:`${r[o-1].heading}\n${r[o-1].content}\n\n{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`;const v=await e.api.editSection(n,o,i,m,e.api.summary(h,`${l.name} (${g.name})`));if(v.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(p)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,p),e.store.statistics.warnings_issued.total++,p){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return v})();if(!p.valid)return p;if(("4"===u||"4im"===u)&&l.reportable&&e.store.settings.auto_report.enabled&&e.store.settings.auto_report.for.has(n.warning)){if(!(await(async()=>{if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const n=c.some(e=>"uw-attempt"===e.toLowerCase());return await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – Vandalism past final warning. ${n?`See also {{subst:filter log|username=${t.user.name}}}.`:""}~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})})()).valid)return{valid:!0};e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}return{valid:!0}}},"warn-and-report":{title:"Auto warn/report",icon:"fas fa-exclamation-triangle",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]}],progress:"Warning user",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{var r;const l=(0,a.getWarningFromLookup)(n.warning);if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Warning yourself","You are about to warn yourself. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to warn them?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to warn the user about the edit on it?`)||null!==(r=t.tags)&&void 0!==r&&r.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to warn the user about it?"))return{valid:!1,reason:"Warn cancelled by user."};let d,c;const u=await(async()=>{const n=`User talk:${t.user.name}`,i=e.util.monthSectionName(),a=(await e.api.getPagesContent([n]))[n]||"",r=e.util.getPageSections(a);d=e.queue.getWarningHistory(a).map(e=>e.template);let o="new";const u=r.length;for(let e=0;e<u;e++)r[e].title===i&&(o=e+1);let p;c=e.queue.getWarningLevel(a),p="string"==typeof l.auto?l.auto:"function"==typeof l.auto?l.auto(t,c):l.auto[c];const g=l.templates.find(e=>e.name===p.toString());if(!g)return{valid:!0};d.push(g.template);let h="Message about ";"edit"===s.Queue.groups[t.type]?h+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?h+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:h+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:h+=`[[${t.page.title}]]`;let m="";m="new"===o?`{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`:`${r[o-1].heading}\n${r[o-1].content}\n\n{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`;const v=await e.api.editSection(n,o,i,m,e.api.summary(h,`${l.name} (${g.name})`));if(v.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(p)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,p),e.store.statistics.warnings_issued.total++,p){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return v})();if(!u.valid)return u;if(("4"===c||"4im"===c)&&l.reportable&&e.store.settings.auto_report.enabled&&e.store.settings.auto_report.for.has(n.warning)){if(!(await(async()=>{if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const n=d.some(e=>"uw-attempt"===e.toLowerCase());return await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – Vandalism past final warning. ${n?`See also {{subst:filter log|username=${t.user.name}}}.`:""}~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})})()).valid)return{valid:!0};e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}return{valid:!0}}},"warn-user":{title:"Warn user",icon:"fas fa-exclamation-triangle",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]},{dependencies:["warning"],id:"level",title:"Warning level",type:"choice",options:e=>["auto",...a.warningsLookup[e.warning].templates.filter(e=>void 0===e.generic).map(e=>e.name)],default:"auto"}],continuity:!0,progress:"Issuing warning to user",valid:(e,t,n)=>{var s;return t?"auto"!==n.level&&null===(null===(s=(0,a.getWarningFromLookup)(n.warning))||void 0===s?void 0:s.templates[n.level])?{valid:!1,reason:"Selected warning template does not support automatic level selection."}:{valid:!0}:{valid:!1,reason:"No item selected."}},script:async(e,t,n)=>{var i;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Warning yourself","You are about to warn yourself. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to warn them?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to warn the user about the edit on it?`)||null!==(i=t.tags)&&void 0!==i&&i.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to warn the user about it?"))return{valid:!1,reason:"Warning cancelled by user."};const r=(0,a.getWarningFromLookup)(n.warning),o=`User talk:${t.user.name}`,l=e.util.monthSectionName(),d=(await e.api.getPagesContent([o]))[o]||"",c=e.util.getPageSections(d);let u="new";const p=c.length;for(let e=0;e<p;e++)c[e].title===l&&(u=e+1);let g;g="auto"===n.level?"string"==typeof r.auto?r.auto:"function"==typeof r.auto?r.auto(t,e.queue.getWarningLevel(d)):r.auto[e.queue.getWarningLevel(d)]:n.level;const h=r.templates.find(e=>e.name===g.toString());if(!h)return"auto"!==n.level?{valid:!1,reason:"Selected warning template does not support the specified level."}:{valid:!0};let m="Message about ";"edit"===s.Queue.groups[t.type]?m+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?m+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:m+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:m+=`[[${t.page.title}]]`;let v="";v="new"===u?`{{subst:${h.template}|${t.page.title}|${h.generic||""}}} ~~~~`:`${c[u-1].heading}\n${c[u-1].content}\n\n{{subst:${h.template}|${t.page.title}|${h.generic||""}}} ~~~~`;const f=await e.api.editSection(o,u,l,v,e.api.summary(m,`${r.name} (${h.name})`));if(f.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(g)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,g),e.store.statistics.warnings_issued.total++,g){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return f}},"rollback-edit":{title:"Rollback edit",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Rolling back edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be rolled back when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Rollbacking own edit","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to rollback their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to rollback the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to rollback it?"))return{valid:!1,reason:"Rollback cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted edits${i}`,n.summary))},successful:(e,t,n)=>{switch(e.store.statistics.reverts_made.total++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}}},"rollback-goodfaith-edit":{title:"Rollback good faith edit",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Rolling back good faith edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be rolled back when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Rollbacking own edit","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to rollback their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to rollback the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to rollback it?"))return{valid:!1,reason:"Rollback cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted [[Wp:AGF|Good faith]] edits${i}`,n.summary))},successful:(e,t,n)=>{switch(e.store.statistics.reverts_made.total++,e.store.statistics.reverts_made.good_faith++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}}},"undo-edit":{title:"Undo edit",icon:"fas fa-undo",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Undoing edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be undone when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Undoing own edit","You are about to undo your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to undo their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to undo the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to undo it?"))return{valid:!1,reason:"Undo cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.undoEdit(t.page.title,t.id,e.api.summary(`Undid revision ${e.api.revision(t.id)}${i}`,n.summary))}},"restore-edit":{title:"Restore edit",icon:"fas fa-redo",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Restoring edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be restored when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>await e.api.restoreEdit(t.page.title,t.id,e.api.summary(`Restored revision ${e.api.revision(t.id)} by ${e.api.user(t.user.name)}`,n.summary))},"send-message-to-user-talk":{title:"Send message to user talk page",icon:"fas fa-comment",parameters:(e,t)=>[{id:"heading",title:"Section heading",type:"text"},{id:"message",title:"Message (sign with ~~~~)",type:"text"}],progress:"Sending message to user talk page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>await e.api.editSection(`User talk:${t.user.name}`,"new",n.heading,n.message,e.api.summary(`Message from ${e.api.username}: ${n.heading}`))},"send-message-to-page-talk":{title:"Send message to page talk page",icon:"fas fa-comment",parameters:(e,t)=>[{id:"heading",title:"Section heading",type:"text"},{id:"message",title:"Message (sign with ~~~~)",type:"text"}],progress:"Sending message to page talk page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{const s=t.page.title.split(":");let i="Talk";s.length>1&&(i=s[0].toLowerCase().includes("talk")?s[0]:`${s[0]} talk`);const a=`${i}:${1===s.length?s[0]:s.slice(1).join(":")}`;return await e.api.editSection(a,"new",n.heading,n.message,e.api.summary(`Message from ${e.api.username}: ${n.heading}`))}},"report-user-to-aiv":{title:"Report user to AIV",icon:"fas fa-flag",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Vandalism past final warning","Vandalism-only account","Vandalism after recent release of block","Spambot or compromised account","Long-term abuse"],default:"Vandalism past final warning"},{id:"summary",title:"Summary (optional)",type:"text"}],continuity:!0,progress:"Reporting user to AIV",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>t.user.name===e.api.username?{valid:!1,reason:"You cannot report yourself, silly!"}:(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to report them?`)?{valid:!1,reason:"User report cancelled by user."}:await e.api.areUsersBlocked([t.user.name])[t.user.name]?{valid:!1,reason:"User cannot be reported because they are blocked."}:await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – ${n.reason}${n.summary?`: ${n.summary}`:"."} ~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})),successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}},"report-user-to-uaa":{title:"Report user to UAA",icon:"fas fa-user-slash",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Disruptive username","Offensive username","Promotional username","Misleading username"],default:"Disruptive username"},{id:"summary",title:"Summary (optional)",type:"text"}],continuity:!0,progress:"Reporting user to UAA",valid:(e,t,n)=>t?t.user.anon?{valid:!1,reason:"User cannot be reported because they are anonymous."}:{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot report yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to report them?`))return{valid:!1,reason:"User report cancelled by user."};if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const s="Offensive username"===n.reason?"offensive username":e.api.user(t.user.name);return await e.api.append(i.WikiShield.config.pages.UAA,null,(0,o.fullTrim)(`\n * {{user-uaa|${t.user.name}}} – ${n.reason}${n.summary?`: ${n.summary}`:"."} ~~~~\n `),e.api.summary(`Reporting ${s}`),n=>{var s;return{valid:!(null!==(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))&&void 0!==s&&s.content.includes(`{{user-uaa|${t.user.name}}`)),reason:"User has already been reported to UAA."}})},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.UAA++}},"request-page-protection":{title:"Request page protection",icon:"fas fa-shield-alt",parameters:(e,t)=>[{id:"level",title:"Protection level",type:"choice",options:[...e.api.hasPendingChanges?["Pending changes protection"]:[],"Semi-protection","Extended-confirmed protection","Full protection","Move protection","Template protection"],default:"Semi-protection"},{id:"reason",title:"Reason",type:"choice",options:["Generic","Persistent vandalism","Disruptive editing","Edit warring","BLP violations","Sockpuppetry","Arbitration enforcement"],default:"Generic"},{id:"duration",title:"Duration",type:"choice",options:["Temporary","Indefinite"],default:"Temporary"},{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Requesting page protection",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Page protection can only be requested for edits."}:{valid:!0}},script:async(e,t,n)=>{if(await e.gui.settings.waitForClose(),e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to request protection for it?`))return{valid:!1,reason:"Page protection request cancelled by user."};const s="Generic"===n.reason?n.summary:`${n.reason} – ${n.summary}`;return await e.api.append(i.WikiShield.config.pages.RFPP,null,`\n${(0,o.fullTrim)(`\n === [[${t.page.title}]] ===\n * {{pagelinks|${t.page.title}}}\n '''${n.duration} ${n.level.toLowerCase()}'''${s?`: ${s}`:""} ~~~~\n `)}`,e.api.summary(`Requesting ${n.level} protection for [[${t.page.title}]]`),n=>({valid:!e.util.getPageSections(n).some(e=>e.title===`[[${t.page.title}]]`),reason:"Page protection has already been requested for this page."}))},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.RFPP++}},"request-global-block":{title:"Request global block",icon:"fas fa-ban",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Generic","Long-term abuse","Cross-wiki abuse","Spam / spambot","Compromised account"],default:"Generic"},{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Requesting global block",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{var s;if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot request a global block for yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to request a global block for them?`))return{valid:!1,reason:"Global block request cancelled by user."};if(await e.api.isUserGloballyLocked(t.user.name))return{valid:!1,reason:"User is globally locked."};const a="Generic"===n.reason?n.summary:`${n.reason}. ${n.summary}`,r=(await e.api.getPagesContent([i.WikiShield.config.pages.SRG],!0,"meta.wikimedia.org"))[i.WikiShield.config.pages.SRG]||"",l=e.util.getPageSections(r);return await e.api.append(i.WikiShield.config.pages.SRG,Number(null===(s=Object.entries(l).find(([,e])=>2===e.level&&"Requests for global (un)block"===e.title))||void 0===s?void 0:s[0])+1||void 0,`\n${(0,o.fullTrim)(`\n === Global block for ${t.user.name} ===\n {{Status}} \x3c!-- Do not remove this template --\x3e\n * {{Luxotool|${t.user.name}}}\n ${a?`${a} `:""} <small>([[:en:WP:WikiShield|WikiShield]])</small> ~~~~\n `)}`,e.api.summary(`Requesting global block for ${e.api.user(t.user.name)}`),n=>{let s=!1,i=[];for(const t of e.util.getPageSections(n))if(2===t.level){if("Requests for global (un)block"===t.title)s=!0;else if(s)break}else s&&3===t.level&&i.push(t);return i=i.filter(e=>!e.content.match(/^{{Status\|not done}}/i)),{valid:!i.some(n=>{const s=n.content;return!!s.match(new RegExp(`{{Luxotool\\|(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}}}`,"i"))||!!s.match(new RegExp(`{{MultiLock\\|(?:[^|}]*\\|)*(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(?:\\|hidename=1)?(?:\\||})`,"i"))}),reason:"User has already been requested for global block."}},!1,"meta.wikimedia.org")},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.global_block++}},"request-global-lock":{title:"Request global lock",icon:"fas fa-lock",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Generic","Long-term abuse","Cross-wiki abuse","Abusive-username","Spam / spambot","Compromised account"],default:"Generic"},{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Requesting global lock",valid:(e,t,n)=>t?t.user.anon?{valid:!1,reason:"Global lock cannot be requested for anonymous users."}:{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{var s;if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot request a global lock for yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to request a global lock for them?`))return{valid:!1,reason:"Global lock request cancelled by user."};if(await e.api.isUserGloballyLocked(t.user.name))return{valid:!1,reason:"User is already globally locked."};const a="Generic"===n.reason?n.summary:`${n.reason}. ${n.summary}`,r="Yes"===n.hide_username?"":` for ${e.api.centralAuthUser(t.user.name)}`,l=(await e.api.getPagesContent([i.WikiShield.config.pages.SRG],!0,"meta.wikimedia.org"))[i.WikiShield.config.pages.SRG]||"",d=e.util.getPageSections(l);return await e.api.append(i.WikiShield.config.pages.SRG,Number(null===(s=Object.entries(d).find(([,e])=>2===e.level&&"Requests for global (un)lock and (un)hiding"===e.title))||void 0===s?void 0:s[0])+1||void 0,`\n${(0,o.fullTrim)(`\n === Global lock${r} ===\n {{Status}} \x3c!-- Do not remove this template --\x3e\n * {{LockHide|${t.user.name}${"Yes"===n.hide_username?"|hidename=1":""}}}\n ${a?`${a} `:""} <small>([[:en:WP:WikiShield|WikiShield]])</small> ~~~~\n `)}`,e.api.summary(`Requesting global lock${r}`),n=>{let s=!1,i=[];for(const t of e.util.getPageSections(n))if(2===t.level){if("Requests for global (un)lock and (un)hiding"===t.title)s=!0;else if(s)break}else s&&3===t.level&&i.push(t);return i=i.filter(e=>!e.content.match(/^{{Status\|not done}}/i)),{valid:!i.some(n=>{const s=n.content;return!!s.match(new RegExp(`{{LockHide\\|(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(\\|hidename=1)?}}`,"i"))||!!s.match(new RegExp(`{{MultiLock\\|(?:[^|}]*\\|)*(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(?:\\|hidename=1)?(?:\\||})`,"i"))}),reason:"User has already been requested for global lock."}},!1,"meta.wikimedia.org")},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.global_lock++}},"thank-user":{title:"Thank user",icon:"fas fa-handshake",progress:"Thanking user",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"User can only be thanked when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{const s=e.api.summary(`Thank you for [[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`),i=`User talk:${t.user.name}`;if(t.user.temp){const n=await e.api.thankRevision(t.id);return(n.valid||e.store.settings.talk_page_thanks_for_temporary_users.enabled)&&void 0===(await e.api.pagesExist(i))[i]&&await e.api.editSection(i,"new","Thank you!","{{subst:Thanks-autosign}}",s),n}return t.user.ip?await e.api.editSection(i,"new","Thank you!","{{subst:Thanks-autosign}}",s):await e.api.thankRevision(t.id)},successful:(e,t,n)=>{e.store.statistics.edits_reviewed.thanked++}},"welcome-user":{title:"Welcome user",icon:"fas fa-paper-plane",parameters:(e,t)=>[{id:"template",title:"Template",type:"choice",options:Object.keys(r.welcomes),default:Object.keys(r.welcomes)[0]}],progress:"Welcoming user",valid:(e,t,n)=>{var s;return t?void 0!==(null===(s=t.user)||void 0===s?void 0:s.talk)?{valid:!1,reason:"User cannot be welcomed because their talk page is not empty."}:{valid:!0}:{valid:!1,reason:"No item selected."}},script:async(e,t,n)=>await(async()=>{const s=`User talk:${t.user.name}`;if(void 0!==(await e.api.pagesExist([s]))[s])return{valid:!1,reason:"User cannot be welcomed because their talk page is not empty."};let i=r.welcomes[n.template];if(!i)return{valid:!1,reason:"Selected welcome template does not exist."};const a=new Set([i]);for(;"function"==typeof(null===(o=i)||void 0===o?void 0:o.template);){var o,l;if(i=r.welcomes[i.template(e,t)],a.has(i))return null!==(l=void e.gui.dialog.toast("REPORT TO DEVELOPER","Uh oh! Something has gone <i>cat</i>astrophically wrong. Please report this to a developer, and include the error code below:<br><br><code>WELCOME_TEMPLATE_LOOP</code>","dev",-1))&&void 0!==l?l:{valid:!1};if(!i)return{valid:!1,reason:"Selected welcome template does not exist."};a.add(i)}const d=`{{subst:${i.template}}}${i.sign?" ~~~~":""}`;return await e.api.append(s,null,d,e.api.summary("Welcome to Wikipedia!"))})(),successful:(e,t,n)=>{e.store.statistics.users_welcomed.total++,e.queue.talks.set(t.user.name,!0),e.gui.renderQueue()}},"watch-page":{title:"Watch page",icon:"fas fa-eye",progress:"Watching page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>await e.api.watchPage(t.page.title,e.util.utcString(e.util.expiryToDate(e.store.settings.expiry.watchlist))),successful:(e,t,n)=>{e.store.statistics.watchlist.watched++,e.queue.watchlist.set(t.page.title,!0)}},"unwatch-page":{title:"Unwatch page",icon:"fas fa-eye-slash",progress:"Unwatching page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>await e.api.unwatchPage(t.page.title),successful:(e,t,n)=>{e.store.statistics.watchlist.unwatched++,e.queue.watchlist.set(t.page.title,!1)}},"whitelist-user":{title:"Add user to whitelist",icon:"fas fa-user-check",progress:"Adding user to whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.users.set(t.user.name,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.whitelist.users).valueOf()]),e.store.statistics.items_whitelisted.total++,e.store.statistics.items_whitelisted.users++,e.gui.renderQueue(),{valid:!0})},"unwhitelist-user":{title:"Remove user from whitelist",icon:"fas fa-user-minus",progress:"Removing user from whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.users.delete(t.user.name),e.gui.renderQueue(),{valid:!0})},"whitelist-page":{title:"Add page to whitelist",icon:"fas fa-check",progress:"Adding page to whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.pages.set(t.page.title,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.whitelist.pages).valueOf()]),e.store.statistics.items_whitelisted.total++,e.store.statistics.items_whitelisted.pages++,e.gui.renderQueue(),{valid:!0})},"unwhitelist-page":{title:"Remove page from whitelist",icon:"fas fa-minus",progress:"Removing page from whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.pages.delete(t.page.title),e.gui.renderQueue(),{valid:!0})},"highlight-user":{title:"Add user to highlighted users",icon:"fas fa-star",progress:"Adding user to highlighted users",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.users.set(t.user.name,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.highlight.users).valueOf()]),e.store.statistics.items_highlighted.total++,e.store.statistics.items_highlighted.users++,e.gui.renderQueue(),{valid:!0})},"unhighlight-user":{title:"Remove user from highlighted users",icon:"fas fa-user-minus",progress:"Removing user from highlighted users",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.users.delete(t.user.name),e.gui.renderQueue(),{valid:!0})},"highlight-page":{title:"Add page to highlighted pages",icon:"fas fa-star",progress:"Adding page to highlighted pages",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.pages.set(t.page.title,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.highlight.pages).valueOf()]),e.store.statistics.items_highlighted.total++,e.store.statistics.items_highlighted.pages++,e.gui.renderQueue(),{valid:!0})},"unhighlight-page":{title:"Remove page from highlighted pages",icon:"fas fa-minus",progress:"Removing page from highlighted pages",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.pages.delete(t.page.title),e.gui.renderQueue(),{valid:!0})},"refresh-user-contributions":{title:"Refresh user contributions",icon:"fas fa-rotate",progress:"Refreshing user contributions",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{try{var s;document.querySelector("#refresh-page-history").classList.add("refreshing");const n=(await e.api.parseUsers([t.user.name]))[0].user;return e.queue.talks.set(t.user.name,n.talk),e.queue.contributions.set(t.user.name,n.contributions),e.queue.blocked.set(t.user.name,n.blocked),e.queue.blocks.set(t.user.name,n.blocks),t.user.edits=Math.max(n.edits,(null===(s=n.contributions)||void 0===s?void 0:s.length)||0),t.user.warning=e.queue.getWarningLevel(n.talk||""),t.user.warnings=e.queue.getWarningHistory(n.talk||""),delete t.user.cached_contributions,e.gui.renderQueue(),e.queue.current.item===t&&e.gui.newCurrentItem(t),{valid:!0}}catch(e){return console.error(e),{valid:!1,reason:"An error occurred while fetching user contributions."}}}},"refresh-page-history":{title:"Refresh page history",icon:"fas fa-rotate",progress:"Refreshing page history",valid:(e,t,n)=>t?"users"===t.type?{valid:!1,reason:"Page history cannot be refreshed for user creations."}:{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{try{document.querySelector("#refresh-page-history").classList.add("refreshing");const[n,s]=await Promise.all([e.api.getHistory(t.page.title),e.api.getPagesDetails(t.page.title)]),i=s[t.page.title];return e.queue.histories.set(t.page.title,n),t.page.metadata=i.metadata,t.page.categories=i.categories,t.page.protection=i.protection,delete t.page.cached_history,e.gui.renderQueue(),e.queue.current.item===t&&e.gui.newCurrentItem(t),{valid:!0}}catch(e){return console.error(e),{valid:!1,reason:"An error occurred while fetching page history."}}}},"open-user-page":{title:"Open user page",icon:"fas fa-circle-user",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`User:${t.user.name}`)),{valid:!0})},"open-user-talk":{title:"Open user talk page",icon:"fas fa-comment",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`User talk:${t.user.name}`)),{valid:!0})},"open-user-contributions":{title:"Open user contributions",icon:"fas fa-list",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`Special:Contributions/${t.user.name}`)),{valid:!0})},"open-user-filter-log":{title:"Open user filter log",icon:"fas fa-filter",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`?title=Special:AbuseLog&wpSearchUser=${encodeURIComponent(t.user.name)}`,!0)),{valid:!0})},"open-page":{title:"Open page",icon:"fas fa-file",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(t.page.title)),{valid:!0})},"open-page-talk":{title:"Open page talk",icon:"fas fa-comments",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=t.page.title.split(":");let i="Talk";s.length>1&&(i=s[0].toLowerCase().includes("talk")?s[0]:`${s[0]} talk`);const a=e.page(`${i}:${1===s.length?s[0]:s.slice(1).join(":")}`);return e.open(a),{valid:!0}}},"open-page-history":{title:"Open page history",icon:"fas fa-clock-rotate-left",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`Special:PageHistory/${t.page.title}`)),{valid:!0})},"open-revision":{title:"Open revision",icon:"fas fa-file-lines",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Revision can only be opened for edits."}:{valid:!0}},script:(e,t,n)=>(e.open(e.page(`Special:Permalink/${t.id}`)),{valid:!0})},"open-diff":{title:"Open diff",icon:"fas fa-code-compare",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Diff can only be opened for edits."}:{valid:!0}},script:(e,t,n)=>(e.open(e.page(`Special:Diff/${t.id}`)),{valid:!0})},"copy-link":{title:"Copy link",icon:"fas fa-link",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{if("edit"===t.group)navigator.clipboard.writeText(e.page(`?diff=${t.id}`,!0));else if("logevent"===t.group)navigator.clipboard.writeText(e.page(`?title=Special:Log&logid=${t.id}`,!0));else{if("abuselog"!==t.group)return e.gui.dialog.toast("Cannot copy link","Please report this issue to a developer, including the error code below:<br><br><code>UNKNOWN_ITEM_GROUP_FOR_LINK_COPY</code>","error",3e3),{valid:!1};t.revid?navigator.clipboard.writeText(e.page(`?diff=${t.revid}`,!0)):navigator.clipboard.writeText(e.page(`?title=Special:AbuseLog/${t.id}`,!0))}return e.gui.dialog.toast("Link copied","The link has been copied to your clipboard.","success",3e3),{valid:!0}}},"open-revert-menu":{title:"Open revert menu",icon:"fas fa-undo",valid:(e,t,n)=>{if(!e.queue.current.item)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Revert menu is only available for edits."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector('[data-menu="revert"]'),i=document.querySelector("#revert-menu");if(i.innerHTML="",e.gui.createWarnMenu("reverts",i,t),s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-warn-menu":{title:"Open warn menu",icon:"fas fa-exclamation-triangle",valid:(e,t,n)=>e.queue.current.item?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="warn"]'),i=document.querySelector("#warn-menu");if(i.innerHTML="",e.gui.createWarnMenu("warnings",i,t),s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-user-menu":{title:"Open user menu",icon:"fas fa-flag",valid:(e,t,n)=>e.queue.current.item?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="user"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-page-menu":{title:"Open page menu",icon:"fas fa-flag",valid:(e,t,n)=>e.queue.current.item?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="page"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-edit-menu":{title:"Open edit menu",icon:"fas fa-flag",valid:(e,t,n)=>{if(!e.queue.current.item)return{valid:!1,reason:"No item selected."};let i=e.queue.current.item.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit menu is only available for edits."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector('[data-menu="edit"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"switch-to-recent-queue":{title:"Switch to recent changes queue",icon:"fas fa-stopwatch",valid:(e,t,n)=>e.store.settings.queue.recent.enabled?{valid:!0}:{valid:!1,reason:"Recent changes queue is not enabled."},script:(e,t,n)=>(e.queue.switch("recent"),{valid:!0})},"switch-to-pending-queue":{title:"Switch to pending changes queue",icon:"fas fa-flag",valid:(e,t,n)=>e.store.settings.queue.pending.enabled?e.rights.review?e.api.hasPendingChanges?{valid:!0}:{valid:!1,reason:"The pending changes extension is not enabled on this wiki."}:{valid:!1,reason:"You do not have permission to review pending changes."}:{valid:!1,reason:"Pending changes queue is not enabled."},script:(e,t,n)=>(e.queue.switch("pending"),{valid:!0})},"switch-to-watchlist-queue":{title:"Switch to watchlist queue",icon:"fas fa-book-bookmark",valid:(e,t,n)=>e.store.settings.queue.watchlist.enabled?{valid:!0}:{valid:!1,reason:"Watchlist queue is not enabled."},script:(e,t,n)=>(e.queue.switch("watchlist"),{valid:!0})},"switch-to-users-queue":{title:"Switch to user creation logs queue",icon:"fas fa-user-plus",valid:(e,t,n)=>e.store.settings.queue.users.enabled?{valid:!0}:{valid:!1,reason:"User creation logs queue is not enabled."},script:(e,t,n)=>(e.queue.switch("users"),{valid:!0})},"switch-to-abuselog-queue":{title:"Switch to abuse log queue",icon:"fas fa-filter-circle-xmark",valid:(e,t,n)=>e.store.settings.queue.abuselog.enabled?{valid:!0}:{valid:!1,reason:"Abuse log queue is not enabled."},script:(e,t,n)=>(e.queue.switch("abuselog"),{valid:!0})},"toggle-zen-mode":{title:"Toggle zen mode",icon:"fas fa-spa",script:(e,t,n)=>{var s;return e.store.settings.zen_mode.enabled=!e.store.settings.zen_mode.enabled,null===(s=document.querySelector("#zen-mode-enable"))||void 0===s||s.classList.toggle("active",e.store.settings.zen_mode.enabled),e.gui.updateZenMode(),{valid:!0}}},"toggle-consecutive-edits":{title:"Toggle consecutive edits",icon:"fas fa-users",valid:(e,t,n)=>{if(!e.queue.current.item)return{valid:!1,reason:"No item selected."};const s=e.queue.current.type;return"recent"!==s&&"watchlist"!==s?{valid:!1,reason:"Consecutive edits can only be viewed in the recent changes or watchlist queues."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector("#consecutive-edits-tab");return s.classList.contains("hidden")||(s.classList.contains("selected")?document.querySelector("#latest-edits-tab").click():s.click()),{valid:!0}}}}},8921(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.EventManager=void 0;var s=n(985),i=n(870),a=n(5564);t.EventManager=class{constructor(e){this.ws=e,this.events=s.events,this.conditions=i.conditions}button(e,t){const n=this.ws;e.addEventListener("click",e=>(e=>{n.gui.selectedMenu=null;const s=n.queue.current.item,i={};for(const o of(null===(a=(r=n.gui.events.events[t]).parameters)||void 0===a?void 0:a.call(r,n,s))||[]){var a,r;"external"===o.id&&(i[o.id]=(null==e?void 0:e.altKey)||!1)}n.execute({actions:[{name:t,params:i}]})})(e))}submenu(e,t){var n,s;const i=this.events[t];e.dataset.eventName=t;const r=this.ws.queue.current,o=`${r.type}:${null===(n=r.item)||void 0===n?void 0:n.id}`,l={};if(e.dataset.eventId===o)for(const t of(null===(d=i.parameters)||void 0===d?void 0:d.call(i,this.ws,this.ws.queue.current.item))||[]){var d;const n=e.querySelector(`[data-paramid="${t.id}"]`);l[t.id]="checkbox"===n.type?n.checked:n.value}else e.dataset.eventId=o;e.innerHTML="";const c=document.createElement("div");c.classList.add("bottom-subcontent-title"),c.textContent=i.title,e.appendChild(c);const u=new Map,p={},g=(0,a.sortDependencies)((null===(s=i.parameters)||void 0===s?void 0:s.call(i,this.ws,this.ws.queue.current.item))||[]);for(const t of g){const n=document.createElement("div");n.classList.add("bottom-subcontent-input-title"),n.textContent=t.title,e.appendChild(n);const s={};for(const e of null!==(h=t.dependencies)&&void 0!==h?h:[]){var h;s[e]=p[e]}const i="function"==typeof t.default?t.default(s):t.default;let a=null;switch(t.type){case"choice":{const n=document.createElement("select");n.dataset.paramid=t.id,e.appendChild(n);const r="function"==typeof t.options?t.options(s):t.options;for(const e of null!=r?r:[]){const t=document.createElement("option");t.value=e,t.textContent=e,n.appendChild(t)}void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),a=()=>{const e={};for(const n of null!==(s=t.dependencies)&&void 0!==s?s:[]){var s;e[n]=p[n]}const i=n.value,a="function"==typeof t.options?t.options(e):t.options;n.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,n.appendChild(t)}if(a.includes(i))n.value=i;else{const s="function"==typeof t.default?t.default(e):t.default;n.value=s,p[t.id]=s}},n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}break;case"text":{const n=document.createElement("input");n.type="text",n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}break;case"boolean":{const n=document.createElement("input");n.type="checkbox",n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.checked=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.checked=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.checked;for(const e of u.get(t.id)||[])e()})}break;case"duration":{const n=document.createElement("duration-input");n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}}if("function"==typeof a)for(const e of null!==(m=t.dependencies)&&void 0!==m?m:[]){var m;u.has(e)||u.set(e,[]),u.get(e).push(a)}}const v=document.createElement("button");v.classList.add("bottom-subcontent-button"),v.textContent="Submit",e.appendChild(v),v.addEventListener("click",()=>{const n={};for(const t of g){const s=e.querySelector(`[data-paramid="${t.id}"]`);n[t.id]=s.value}this.ws.execute({actions:[{name:t,params:n}]}),this.ws.gui.closeMenus()})}}},372(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Queue=void 0;var s=n(2852),i=n(2595),a=n(6400);function r(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return e.get(d(e,t))}function d(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var c=new WeakMap,u=new WeakSet;class p{static areSameGroup(e,t){return this.groups[e]===this.groups[t]}constructor(e){var t,n;r(t=this,n=u),n.add(t),function(e,t,n){r(e,t),t.set(e,n)}(this,c,Promise.resolve()),this.ws=e,this.queues=Object.fromEntries(["void",...p.types].map(t=>[t,{type:t,item:null,previous:null,queue:[],hold:[],repeats:{},history:new i.Stack(100),memory:new s.Memory({size:1e3}),last:{timestamp:e.util.utcString(new Date),id:0}}])),this.cache={simple:new s.Memory({size:1e3}),full:new s.Memory({size:250})},this.current=this.queues[p.types[0]],this.pending=new Map,this.watchlist=new s.Memory({size:1e3}),this.talks=new s.Memory({size:500}),this.warnings=new s.Memory({size:1e3,timeout:864e5}),this.noWelcome=new s.Memory({timeout:36e5}),this.histories=new s.Memory({size:1e3}),this.contributions=new s.Memory({size:1e3}),this.blocks=new s.Memory({size:1e3}),this.blocked=new s.Memory({size:1e4}),this.playedSound={mention:new s.Memory({timeout:6e4})},this.bypass=new s.Memory({timeout:36e5,size:1e4}),this.backoff=2e3}switch(e){var t;this.current.type!==e&&("pending"===this.current.type&&(this.queues.pending.queue=this.queues.pending.queue.filter(e=>this.pending.has(e.id))),document.querySelector("#clear-queue").classList.toggle("hidden","pending"===e),this.current=this.queues[e],this.current.queue.some(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)})||(this.current.item=this.current.queue[0]||null),this.ws.gui.renderQueue(),this.ws.gui.newCurrentItem(this.current.item),document.querySelectorAll("#queue-tabs > .queue-tab.selected").forEach(e=>e.classList.remove("selected")),null===(t=document.querySelector(`#queue-tab-${e}`))||void 0===t||t.classList.add("selected"))}async fetch(){try{const i=this.ws.store.settings.queue;if(i.pending.enabled&&this.ws.rights.review){const e=(await this.ws.api.feeds(null,{ns:"*",full:!0})).pending;this.pending.clear(),Object.values(e).forEach(e=>this.pending.set(e.revid,e)),await this.outdated("pending")}const a=await this.ws.api.feeds(i.recent.enabled?{ns:this.ws.store.settings.namespaces.join("|"),since:this.queues.recent.last.timestamp}:null,i.pending.enabled&&this.ws.rights.review?{ns:"*",full:!1}:null,i.users.enabled?{ns:"*",since:this.queues.users.last.timestamp}:null,i.watchlist.enabled?{ns:"*",since:this.queues.watchlist.last.timestamp}:null,i.abuselog.enabled?{ns:this.ws.store.settings.namespaces.join("|"),since:this.queues.abuselog.last.timestamp}:null),r=this.ws.store.whitelist;for(const i of p.types){var e;const o=this.queues[i].last.id;let l=null!==(e=a[i])&&void 0!==e?e:[];const d=l.reduce((e,t)=>Math.max(e,t.timestamp),0);switch(d&&(this.queues[i].last.timestamp=this.ws.util.utcString(new Date(d))),p.groups[i]){case"edit":{const e=e=>e.revid>o;l="recent"===i?l.filter(t=>e(t)&&!r.pages.has(t.title)):l.filter(e)}break;case"abuselog":l=l.filter(e=>e.id>o);break;case"logevent":l=l.filter(e=>e.logid>o)}l=l.concat(this.queues[i].hold),l.length>25?this.queues[i].hold=l.splice(25).reverse():this.queues[i].hold=[];let c=!1;switch(i){case"recent":{const e=new Set;for(const n of l)for(const s of this.queues[i].queue){var t;e.has(s)||s.id!==(null===(t=this.current.item)||void 0===t?void 0:t.id)&&n.title===s.page.title&&s.id<n.revid&&e.add(s)}for(const t of e){const e=this.queues[i].queue.indexOf(t);e>-1&&(this.queues[i].queue.splice(e,1),this.ws.gui.removeQueueItem(i,t.id))}c=e.size>0}break;case"pending":for(const e of this.queues[i].queue){var n;if((null===(n=this.current.item)||void 0===n?void 0:n.id)!==e.id&&!this.pending.has(e.id)){const t=this.queues[i].queue.indexOf(e);t>-1&&(this.queues[i].queue.splice(t,1),this.ws.gui.removeQueueItem(i,e.id),c=!0)}}break;case"users":l=l.filter(e=>!e.temp);break;case"watchlist":{const e=new Set;for(const t of l)for(const n of this.queues[i].queue){var s;e.has(n)||n.id!==(null===(s=this.current.item)||void 0===s?void 0:s.id)&&(t.title===n.page.title&&n.id<t.revid?e.add(n):n.page.watched||e.add(n))}if(0===l.length)for(const t of this.queues[i].queue)t.page.watched||e.add(t);for(const t of e){const e=this.queues[i].queue.indexOf(t);e>-1&&(this.queues[i].queue.splice(e,1),this.ws.gui.removeQueueItem(i,t.id))}c=e.size>0}}if(0!==l.length)switch(p.groups[i]){case"edit":{this.queues[i].last.id=l.reduce((e,t)=>Math.max(e,t.revid),0);const e=this.ws.store.highlight,t=t=>{var n;return e.users.has(t.user)||e.pages.has(t.title)||(null===(n=t.tags)||void 0===n?void 0:n.some(t=>e.tags.has(t)))};l=l.filter(e=>{var n;return!r.users.has(e.user)&&!(null!==(n=e.tags)&&void 0!==n&&n.some(e=>r.tags.has(e)))&&(!this.bypass.has(e.user)||t(e))});const n={};let[s,a]=await Promise.allSettled(["recent"===i?this.ws.api.getEditCounts(l.map(e=>e.user).filter(e=>!this.bypass.has(e))):Promise.resolve([]),this.ws.api.getORES(l.filter(e=>{var t;if(null===(t=e.oresscores)||void 0===t||!t.length)return!0;n[e.revid]=e.oresscores},this.ws.store.settings.queue.ores_bias).map(e=>e.revid))]);"rejected"===s.status&&console.error("Edit counts failed:",s.reason),s="fulfilled"===s.status?s.value:{},"rejected"===a.status&&console.error("ORES failed:",a.reason),a="fulfilled"===a.status?a.value:{};for(const[e,t]of Object.entries(await this.ws.api.extractORES(n,this.ws.store.settings.queue.ores_bias)))a[e]=t;const o=this.queues[i].repeats,d=[];if("recent"===i){const e=this.ws.store.settings.queue.min_ores,n=this.ws.store.settings.queue.max_edits;l.forEach(r=>{var l,c;if(isNaN(a[r.revid])&&(o[r.revid]||0)<3)return o[r.revid]=(o[r.revid]||0)+1,this.queues[i].hold.push(r);if(delete o[r.revid],this.ws.__DEV__&&"test2.wikipedia.org"===this.ws.server)return d.push(r);const u=null!==(l=null!==(c=s[r.user])&&void 0!==c?c:this.bypass.get(r.user))&&void 0!==l?l:0;u>n?(this.bypass.set(r.user,u),t(r)&&d.push(r)):((a[r.revid]||0)>=e||t(r))&&d.push(r)})}else l.forEach(e=>{if(isNaN(a[e.revid])&&(o[e.revid]||0)<3)return o[e.revid]=(o[e.revid]||0)+1,this.queues[i].hold.push(e);delete o[e.revid],d.push(e)});await this.add(i,d)}break;case"logevent":{let e=0;const t=new Set,n=[];l.forEach(s=>{t.has(s.logid)||(t.add(s.logid),s.logid>e&&(e=s.logid),n.push(s))}),this.queues[i].last.id=e,await this.add(i,n)}break;case"abuselog":{const e=l.filter(e=>null===e.editcount);let t={};e.length>0&&(t=await this.ws.api.getEditCounts(e.map(e=>e.user)));const n=this.ws.store.settings.queue.max_edits;let s=0;const a=[];l.forEach(e=>{var i;((null!==(i=e.editcount)&&void 0!==i?i:t[e.user])||0)>n||(e.id>s&&(s=e.id),a.push(e))}),this.queues[i].last.id=s,await this.add(i,a)}}else c&&this.ws.gui.renderQueue(this.queues[i].queue,this.current.edit,i)}await this.outdated(),this.backoff=p.refresh}catch(e){console.error(e),this.backoff=Math.min(2*this.backoff,12e4)}setTimeout(()=>this.fetch(),this.backoff)}async outdated(){{const e=[];for(const t of this.queues.pending.queue)t!==this.current.item&&(this.pending.has(t.id)||e.push(t));if(e.length>0)for(const t of e){const e=this.queues.pending.queue.indexOf(t);e>-1&&(this.queues.pending.queue.splice(e,1),this.ws.gui.removeQueueItem("pending",t.id))}}const e=new Set,t=["recent","watchlist","abuselog"];for(const n of t)this.queues[n].queue.forEach(t=>{("abuselog"!==n||t.revid)&&e.add(t.page.title)});const n=await this.ws.api.getLatestIds([...e]);for(const e of t){const t=[];for(const s of this.queues[e].queue){let i=s.id;if("abuselog"===e){if(!s.revid)continue;i=s.revid}const a=n[s.page.title];a&&a>i&&t.push([s.id,i])}if(t.length>0)for(const[n,i]of t){var s;const t="abuselog"===e?"revid":"id";if(i===(null===(s=this.queues[e].item)||void 0===s?void 0:s[t]))continue;const a=this.queues[e].queue.findIndex(e=>e[t]===i);a>-1&&(this.queues[e].queue.splice(a,1),this.ws.gui.removeQueueItem(e,n))}}this.ws.gui.renderQueue()}async add(e,t){const n={edit:"revid",logevent:"logid",abuselog:"id"}[p.groups[e]];(t=t.filter(t=>!this.queues[e].memory.has(t[n]))).forEach(t=>this.queues[e].memory.add(t[n]));const s=t.length;if(0===s)return;const i={ores:!1,mention:!1},a=await this.generate(e,t,!1);switch(p.groups[e]){case"edit":{const n=this.ws.store.settings.audio.ores_alert.threshold;for(let r=0;r<s;r++){t[r];const s=a[r];this.queues[e].queue.push(s),"recent"===e&&s.ores>=n&&(i.ores=!0),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}}break;case"logevent":for(let n=0;n<s;n++){t[n];const s=a[n];this.queues[e].queue.push(s),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}break;case"abuselog":for(let n=0;n<s;n++){t[n];const s=a[n];this.queues[e].queue.push(s),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}}this.sort(e),i.ores&&this.ws.store.settings.audio.ores_alert.enabled&&this.ws.audio.playSound(["queue","ores"]),i.mention&&this.ws.store.settings.username_highlighting.enabled&&this.ws.audio.playSound(["queue","mention"]),this.ws.gui.renderQueue(this.queues[e].queue,this.queues[e].item,e)}sort(e){var t;let n=-1;this.queues[e].item&&(n=this.queues[e].queue.findIndex(t=>t===this.queues[e].item));let s=this.queues[e].queue;n>=0&&(s=s.slice(0,n).concat(s.slice(n+1)));const i=this.ws.store.highlight,a=this.ws.store.settings.username_highlighting.enabled;switch(p.groups[e]){case"edit":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return-1;if(t.history)return 1;let n=e.ores;a&&e.mentions.has&&(n+=200),i.users.has(e.user.name)&&(n+=100),i.pages.has(e.page.title)&&(n+=75),n+=50*e.tags.filter(e=>i.tags.has(e)).length;let s=t.ores;return a&&t.mentions.has&&(s+=200),i.users.has(t.user.name)&&(s+=100),i.pages.has(t.page.title)&&(s+=75),s+=50*t.tags.filter(e=>i.tags.has(e)).length,n===s?t.id-e.id:s-n});break;case"logevent":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return 1;if(t.history)return-1;let n=100*(e.user.profanity.clamped||0);a&&e.mentions.has&&(n+=200);let s=100*(t.user.profanity.clamped||0);return a&&t.mentions.has&&(s+=200),n===s?t.id-e.id:s-n});break;case"abuselog":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return 1;if(t.history)return-1;let n=0;i.users.has(e.user.name)&&(n+=100),i.pages.has(e.page.title)&&(n+=75),a&&e.mentions.has&&(n+=200);let s=0;return i.users.has(t.user.name)&&(s+=100),i.pages.has(t.page.title)&&(s+=75),a&&t.mentions.has&&(s+=200),n===s?t.id-e.id:s-n})}const r=new Set(null!==(t=this.queues[e].item)&&void 0!==t&&t.id?[this.queues[e].item.id]:[]);s=s.filter(e=>!r.has(e.id)&&(r.add(e.id),!0)),n>=0&&s.splice(n,0,this.queues[e].item),this.queues[e].queue=[...s.slice(0,this.ws.store.settings.queue.max_size)],this.queues[e].item||(this.queues[e].item=this.queues[e].queue[0])}async generate(e,t,n,s={}){var i;if(0===t.length)return[];const r=null!==(i=null==s?void 0:s.bypass)&&void 0!==i&&i,o=this.ws,l=o.api.username,d=[];switch(p.groups[e]){case"edit":{t=(t=t.filter(e=>{const t=(e=>{if(n){if(this.cache.simple.has(e))return this.cache.simple.get(e);if(this.cache.full.has(e))return this.cache.full.get(e)}else if(this.cache.full.has(e))return this.cache.full.get(e);return null})(e.revid);var s;return!t||(e.pending&&!t.pending&&(t.pending=e.pending),null!==(s=void d.push(t))&&void 0!==s&&s)})).map(e=>{var t;let n=null;return e.pending&&(n=null===(t=this.pending.get(e.revid))||void 0===t?void 0:t.prior),null!=n||(n=e.old_revid||e.parentid),{item:e,prior:n}});const s=await o.api.parseEdits(t,n,this.ws.store.settings.queue.ores_bias,r);for(const t of s){var c;const{item:s,prior:i,data:a}=t,r={comment:!1,diff:!1};if(l&&a.edit.diff){const e=document.createElement("div");e.innerHTML=a.edit.diff,e.textContent&&(r.diff=o.util.match(l,e.textContent))}this.watchlist.set(s.title,a.page.watched),this.histories.set(s.title,a.page.history),this.contributions.set(s.user,a.user.contributions),this.blocks.set(s.user,a.user.blocks),this.blocked.set(s.user,a.user.blocked);const u=["0","1","2","3","4","4im"],g=this.getWarningLevel(a.user.talk||"");u.indexOf(g)>u.indexOf(this.warnings.get(s.user)||"0")&&this.warnings.set(s.user,g);const h={page:{namespace:s.ns,title:s.title,get history(){var e;return null!==(e=o.queue.histories.get(s.title))&&void 0!==e?e:a.page.history},get watched(){var e;return null!==(e=o.queue.watchlist.get(s.title))&&void 0!==e?e:a.page.watched},metadata:a.page.metadata,categories:a.page.categories,protection:a.page.protection},user:{name:s.user,ip:o.util.isIPAddress(s.user),temp:o.util.isTempAccount(s.user),anon:o.util.isIPAddress(s.user)||o.util.isTempAccount(s.user),edits:Math.max(a.user.edits,(null===(c=a.user.contributions)||void 0===c?void 0:c.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(s.user))&&void 0!==e?e:a.user.contributions},warning:this.getWarningLevel(a.user.talk||""),warnings:this.getWarningHistory(a.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(s.user))&&void 0!==e?e:a.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(s.user))&&void 0!==e?e:a.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(s.user))&&void 0!==e?e:a.user.talk}},mentions:r,AI:{edit:null,username:null},id:s.revid,prior:i,timestamp:s.timestamp,comment:s.parsedcomment,minor:s.minor||!1,diff:a.edit.diff,sizediff:("sizediff"in s?s.sizediff:s.newlen-s.oldlen)||0,ores:a.edit.ores,tags:s.tags||[],reverts:a.page.reverts,consecutive:a.page.consecutive,propagating:!1,reviewed:!1,history:!1,pending:s.pending||!1,group:p.groups[e],type:e,simple:n,origin:s};!n&&o.AI&&(o.store.settings.AI.edit_analysis.enabled&&o.AI.analyze.edit(h).then(e=>h.AI.edit=e).catch(e=>h.AI.edit={error:e.message}).finally(()=>{var e;h.id===(null===(e=this.current.item)||void 0===e?void 0:e.id)&&o.gui.updateAIAnalysisDisplay(h.AI.edit)}),h.user.anon||o.store.whitelist.users.has(h.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(h).then(e=>{h.AI.username=e,e.flag&&this.promptUAA(h,e)}).catch(e=>h.AI.username={error:e.message})),d.push(h),n?this.cache.simple.set(s.revid,h):(this.cache.full.set(s.revid,h),this.cache.simple.has(s.revid)&&this.cache.simple.delete(s.revid))}}break;case"logevent":{const s=await o.api.parseUsers(t.map(e=>e.title.replace(/^(User|User talk):/,"")),n,r),i=await o.api.parseUsers(t.map(e=>e.user),n,r);for(let r=0;r<t.length;r++){var u,g;const c=t[r],h=s[r],m=i[r],v=c.title.replace(/^(User|User talk):/,""),f={username:!1,comment:!1};l&&v&&(f.username=o.util.match(l,v)),this.contributions.set(v,h.user.contributions),this.contributions.set(c.user,m.user.contributions),this.blocks.set(v,h.user.blocks),this.blocks.set(c.user,m.user.blocks),this.blocked.set(v,h.user.blocked),this.blocked.set(c.user,m.user.blocked);const b=["0","1","2","3","4","4im"],w=this.getWarningLevel(h.user.talk||"");b.indexOf(w)>b.indexOf(this.warnings.get(v)||"0")&&this.warnings.set(v,w);const y=this.getWarningLevel(m.user.talk||"");b.indexOf(y)>b.indexOf(this.warnings.get(c.user)||"0")&&this.warnings.set(c.user,y);const x=a.profanity.evaluate(v),k={page:{namespace:c.ns,title:c.title,history:[],get watched(){return!1},metadata:[],categories:[],protection:{}},user:{name:v,ip:o.util.isIPAddress(v),temp:o.util.isTempAccount(v),anon:o.util.isIPAddress(v)||o.util.isTempAccount(v),edits:Math.max(h.user.edits,(null===(u=h.user.contributions)||void 0===u?void 0:u.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(v))&&void 0!==e?e:h.user.contributions},warning:this.getWarningLevel(h.user.talk||""),warnings:this.getWarningHistory(h.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(v))&&void 0!==e?e:h.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(v))&&void 0!==e?e:h.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(v))&&void 0!==e?e:h.user.talk},profanity:x},performer:{name:c.user,ip:o.util.isIPAddress(c.user),temp:o.util.isTempAccount(c.user),anon:o.util.isIPAddress(c.user)||o.util.isTempAccount(c.user),edits:Math.max(m.user.edits,(null===(g=m.user.contributions)||void 0===g?void 0:g.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(c.user))&&void 0!==e?e:m.user.contributions},warning:this.getWarningLevel(m.user.talk||""),warnings:this.getWarningHistory(m.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(c.user))&&void 0!==e?e:m.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(c.user))&&void 0!==e?e:m.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(c.user))&&void 0!==e?e:m.user.talk}},mentions:f,AI:{username:null},id:c.logid,timestamp:c.timestamp,comment:c.parsedcomment,ores:x.clamped||0,filters:x.matches.map(e=>({filter:e.name,id:e.match})),propagating:!1,reviewed:!1,history:!1,group:p.groups[e],type:e,simple:n,origin:c};!n&&o.AI&&(k.user.anon||o.store.whitelist.users.has(k.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(k).then(e=>{k.AI.username=e,e.flag&&this.promptUAA(k,e)}).catch(e=>k.AI.username={error:e.message})),d.push(k)}}break;case"abuselog":{const s=await o.api.parseAbuselogs(t,n,r);for(const t of s){var h,m;const{item:s,data:i}=t,a={comment:!1,diff:!1};if(l&&i.edit.diff){const e=document.createElement("div");e.innerHTML=i.edit.diff,e.textContent&&(a.diff=o.util.match(l,e.textContent))}this.watchlist.set(s.title,i.page.watched),this.histories.set(s.title,i.page.history),this.contributions.set(s.user,i.user.contributions),this.blocks.set(s.user,i.user.blocks),this.blocked.set(s.user,i.user.blocked);const r=["0","1","2","3","4","4im"],c=this.getWarningLevel(i.user.talk||"");r.indexOf(c)>r.indexOf(this.warnings.get(s.user)||"0")&&this.warnings.set(s.user,c);const u=["disallow","warn","showcaptcha","tag","none"],g=u.length;let v=g-1;for(let e=0;e<g;e++)if(s.result.has(u[e])){v=e;break}const f={page:{namespace:s.ns,title:s.title,get history(){var e;return null!==(e=o.queue.histories.get(s.title))&&void 0!==e?e:i.page.history},get watched(){var e;return null!==(e=o.queue.watchlist.get(s.title))&&void 0!==e?e:i.page.watched},metadata:i.page.metadata,categories:i.page.categories,protection:i.page.protection},user:{name:s.user,ip:o.util.isIPAddress(s.user),temp:o.util.isTempAccount(s.user),anon:o.util.isIPAddress(s.user)||o.util.isTempAccount(s.user),edits:Math.max(i.user.edits,(null===(h=i.user.contributions)||void 0===h?void 0:h.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(s.user))&&void 0!==e?e:i.user.contributions},warning:this.getWarningLevel(i.user.talk||""),warnings:this.getWarningHistory(i.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(s.user))&&void 0!==e?e:i.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(s.user))&&void 0!==e?e:i.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(s.user))&&void 0!==e?e:i.user.talk}},mentions:a,AI:{edit:null,username:null},id:s.id,revid:s.revid,timestamp:s.timestamp,comment:i.parsedcomment,minor:!1,diff:i.edit.diff,sizediff:null===(m=s.diff)||void 0===m?void 0:m.size,ores:+(1-v/(g-1)).toFixed(2),filters:s.entries.map(e=>({id:(null==e?void 0:e.filter_id)||"-1",filter:null==e?void 0:e.filter}))||[],reverts:i.page.reverts,propagating:!1,reviewed:!1,history:!1,group:p.groups[e],type:e,simple:n,origin:s};!n&&o.AI&&(o.store.settings.AI.edit_analysis.enabled&&i.edit.diff&&o.AI.analyze.edit(f).then(e=>f.AI.edit=e).catch(e=>f.AI.edit={error:e.message}).finally(()=>{var e;f.id===(null===(e=this.current.item)||void 0===e?void 0:e.id)&&o.gui.updateAIAnalysisDisplay(f.AI.edit)}),f.user.anon||o.store.whitelist.users.has(f.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(f).then(e=>{f.AI.username=e,e.flag&&this.promptUAA(f,e)}).catch(e=>f.AI.username={error:e.message})),d.push(f)}}}return d.forEach(e=>{if(e.comment){const t=(new DOMParser).parseFromString(e.comment,"text/html").body;t.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,n]=e.trim().split(/\s+/,2),s=new URL(t,`https://${this.ws.server}`).href;return n?`${s} ${n}`:s}).join(", ");e.setAttribute("srcset",t)}),e.comment=t.innerHTML;const n=(t.textContent||"").trim();e.has_comment=Boolean(n),!1===e.mentions.comment&&(e.mentions.comment=o.util.match(l,n)),e.mentions&&(e.mentions.has=Object.values(e.mentions).some(e=>e))}else e.has_comment=!1}),d}previous(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});if("pending"===this.current.type)return this.current.item=this.current.queue[Math.max(e-1,0)],this.ws.gui.renderQueue();if(e<=0){if(0===this.current.history.length)return;return this.current.queue.unshift(this.current.history.pop()),this.current.item=this.current.queue[0],this.ws.gui.renderQueue()}this.current.item=this.current.queue[e-1],this.ws.gui.renderQueue()}next(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});if(-1===e)return this.current.item=this.current.queue[0],this.ws.gui.renderQueue();if("pending"===this.current.type)return this.current.item=this.current.queue[Math.min(e+1,this.current.queue.length-1)],this.ws.gui.renderQueue();const t=this.current.item,n=p.groups[t.type];if(!t.reviewed&&("edit"===n||"abuselog"===n&&t.revid)){"watchlist"===t.type&&this.ws.api.markWatchlistSeen(t.page.title,t.id);const e="abuselog"===t.type?t.revid:t.id;if(["recent","watchlist","abuselog"].filter(e=>e!==t.type).forEach(t=>{this.queues[t].queue="abuselog"===t?this.queues[t].queue.filter(n=>n.revid!==e||(this.queues[t].history.push({...n,history:performance.now()}),!1)):this.queues[t].queue.filter(n=>n.id!==e||(this.queues[t].history.push({...n,history:performance.now()}),"watchlist"===t&&this.ws.api.markWatchlistSeen(n.page.title,n.id),!1))}),"abuselog"!==n){let e=this.queues.abuselog.queue.filter(e=>t.user.name===e.user.name&&t.page.title===e.page.title&&Math.abs(new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())<1e4);e.length>0&&Promise.allSettled(e.map(async e=>{let t=e.revid;return t||(t=await this.ws.api.getAbuseLogRevid(e.id)),t?(e.revid=t,{id:e.id,revid:t}):null})).then(e=>{const t=e.map(e=>"fulfilled"===e.status?e.value:null).filter(e=>e);this.queues.abuselog.queue=this.queues.abuselog.queue.filter(e=>!t.some(t=>t.revid===e.revid)),"abuselog"===this.current.type&&(t.forEach(e=>this.ws.gui.removeQueueItem("abuselog",e.id)),this.ws.gui.renderQueue(this.queues.abuselog.queue,this.queues.abuselog.item,"abuselog"))}).catch(()=>{})}}t.reviewed=!0,t&&this.ws.AI&&this.ws.AI.cancel.edit(t.id),this.current.queue.splice(e,1),this.ws.gui.removeQueueItem(this.current.type,t.id),0===this.current.queue.length?this.current.item=null:e<this.current.queue.length?this.current.item=this.current.queue[e]:this.current.item=this.current.queue[this.current.queue.length-1],t&&"edit"===p.groups[this.current.type]&&this.promptWelcome(t),this.current.history.push({...t,history:performance.now()}),this.ws.gui.renderQueue()}canGoPrevious(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});return-1===e?this.current.history.length>0:"pending"===this.current.type?e>0:0!==e||this.current.history.length>0}canGoNext(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});return-1===e?Boolean(this.current.queue[0]):"pending"!==this.current.type||e<this.current.queue.length-1}clear(e){"pending"!==e&&(this.queues[e].item=null,this.queues[e].queue=[],this.current.type===e&&(this.ws.gui.newCurrentItem(null),this.ws.gui.clearQueueItems()))}async promptWelcome(e){var t,n,s,i;if(!this.ws.store.settings.auto_welcome.enabled&&null!==(t=e.user)&&void 0!==t&&t.anon&&0!==((null===(n=e.user)||void 0===n?void 0:n.edits)||0)&&void 0!==(null===(s=e.user)||void 0===s?void 0:s.talk)&&!this.noWelcome.has(null===(i=e.user)||void 0===i?void 0:i.name))try{var a;const t=`User talk:${e.user.name}`,n=await this.ws.api.pagesExist([t]);if(void 0!==n[t])return null!==(a=void this.talks.set(e.user.name,n[t]))&&void 0!==a?a:n[t];await this.ws.gui.settings.waitForClose();const s=await this.ws.gui.dialog.confirm("Auto-Welcome User",`Would you like to welcome <span class="confirmation-modal-username">${this.ws.util.escape(e.user.name)}</span>?<br><br>\n\t\t\t\t\t<span style="font-size: 0.9em; color: #888;">Editing: <strong>${this.ws.util.escape(e.page.title)}</strong></span>`,{username:e.user.name,hideUAA:!1});this.noWelcome.add(e.user.name),s&&this.ws.execute({actions:[{name:"welcome-user",params:{template:"Auto"}}]},void 0,void 0,e)}catch(e){console.error("Error during auto-welcome check:",e)}}promptUAA(e,t){var n,s,i;return n=c,s=this,i=l(c,this).then(()=>d(u,this,g).call(this,e,t)).catch(()=>{}),n.set(d(n,s),i),l(c,this)}async propagate(e,t){if(e.propagating)return await e.propagating;if(e.simple){let n;e.propagating=new Promise(e=>n=e);const[s]=await this.generate(e.type,[e.origin],!1,{bypass:t});s.history=e.history,Object.assign(e,s),n(),e.propagating=!1}else this.generate(e.type,[e.origin],!1,{bypass:t}).then(([t])=>{const n=e.revid;t.history=e.history,Object.assign(e,t),e.revid=n})}loadFromItem(e){const t=this.current.type;if(p.areSameGroup(t,"edit")&&("pending"!==t||"edit"!==e.type)){this.queues[t].queue=this.queues[t].queue.filter(t=>t.id!==e.id);const n=this.queues[t].queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});n>-1&&(this.queues[t].queue[n]=e)}this.queues[t].item=this.queues[t].queue.find(t=>t.id===e.id)||e,this.ws.gui.renderQueue()}async loadFromRevision(e,t){try{let n;if(this.ws.gui.updateDiffDisplay("loading"),this.cache.full.has(t))n=this.cache.full.get(t);else{let s;if(this.cache.simple.has(t)){const e=this.cache.simple.get(t);s={revid:e.id,parentid:e.prior,ns:e.page.namespace,title:e.page.title,user:e.user.name,timestamp:e.timestamp,parsedcomment:e.comment,tags:e.origin.tags,sizediff:e.sizediff,minor:e.minor}}else{const n=await this.ws.api.getRevision(e,t,!0);if(!n)throw new Error("Revision not found");s={revid:n.revid,parentid:n.parentid,ns:n.ns,title:e,user:n.user,timestamp:n.timestamp,parsedcomment:n.parsedcomment,tags:n.tags,size:n.size,oldlen:n.oldlen||0,newlen:n.size,minor:n.minor}}[n]=await this.generate("edit",[s],!1,{bypass:!0})}const s=this.current.type;if(p.areSameGroup(s,"edit")&&"pending"!==s&&"abuselog"!==s){this.queues[s].queue=this.queues[s].queue.filter(e=>e.id!==n.id);const e=this.queues[s].queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});e>-1&&(this.queues[s].queue[e]=n)}this.queues[s].item=n,this.ws.gui.renderQueue()}catch(e){console.error("Error loading from revision:",e),document.querySelector("#diff-container").innerHTML=`<div class="error">Failed to load revision: ${this.ws.util.escape(e.message)}</div>`}}getWarningLevel(e){const t=["0","1","2","3","4","4im"];let n="0";const s=this.ws.util.monthSectionName(),i=this.ws.util.getPageSections(e);for(const e of i)if(e.title===s){const s=e.content.match(/<!-- Template:[\w-]+?(\d(?:i?m)?) -->/g);if(null===s)break;const i=[...s.map(e=>{const t=e.match(/<!-- Template:[\w-]+?(\d(?:i?m)?) -->/);return t?t[1].toString():"0"}),n].map(e=>[e,t.indexOf(e)]);n=i.sort((e,t)=>t[1]-e[1])[0][0]}return n}getWarningHistory(e){const t=[],n=this.ws.util.monthSectionName(),s=this.ws.util.getPageSections(e);for(const e of s)if(e.title===n){const n=e.content.matchAll(/<!-- Template:([\w-]+?)(\d(?:i?m)?) -->([^]+?)(?=<!-- Template:|$)/g);for(let s of n){const n=s[1],i=s[2],a=s[3],r=a.match(/(\d{2}:\d{2}.*?\d{4} \(UTC\))/);let o=r?r[1]:null;if(o&&(o=o.replace(/<[^>]*>/g,"")),o){const[,e,t,n,s]=o.match(/(\d{2}:\d{2}), (\d{1,2}) ([A-Za-z]+) (\d{4})/),i=["January","February","March","April","May","June","July","August","September","October","November","December"].indexOf(n);o=new Date(Date.UTC(s,i,t,...e.split(":"))).toUTCString()}else o=null;let l=null;const d=a.match(/\[\[User(?:[ _]talk)?:([^\]|]+)/i);d&&(l=d[1].trim());const c=a.match(/\[\[([^\]]+?)\]\]/),u=c?c[1]:null;t.push({template:n,level:i,timestamp:o,username:l,article:u,section:e.title})}}return t}}async function g(e,t){if(e.user.anon)return;if(this.ws.store.whitelist.users.has(e.user.name))return;if(!t.issues||0===t.issues.length)return;if(!t.explanation)return;const n=t.issues.map(e=>`${e.severity} ${e.policy} violation`).join(", "),s=Math.round(100*t.confidence),i=e.user.name;await this.ws.gui.settings.waitForClose();if(await this.ws.gui.dialog.confirm("Report Username to UAA",`\n\t\t\t\tThe username <span class="confirmation-modal-username">${this.ws.util.escape(i)}</span> for ${n}.<br><br>\n\t\t\t\t<strong>AI Confidence:</strong> ${s}%<br>\n\t\t\t\t<strong>Reasoning:</strong> ${t.explanation}<br>\n\t\t\t`,i)){await this.ws.gui.settings.waitForClose();const t=await this.ws.gui.dialog.UAA(e.user.name);t&&this.ws.execute({actions:[{name:"report-user-to-uaa",params:{reason:t}}]},void 0,void 0,e)}}t.Queue=p,o(p,"refresh",1e3),o(p,"types",["recent","pending","watchlist","abuselog","users"]),o(p,"groups",{void:"void",recent:"edit",pending:"edit",watchlist:"edit",edit:"edit",abuselog:"abuselog",users:"logevent"})},7054(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.WikiShield=void 0;var s=n(7852),i=n(3241),a=n(8169),r=n(2535),o=n(4674),l=n(6151),d=n(372),c=n(8469),u=n(8678),p=n(9501),g=n(9808);function h(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function m(e,t){return e.get(v(e,t))}function v(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var f,b,w,y=new WeakMap,x=new WeakSet;class k{constructor(e,t,n,s,l){var u,g;h(u=this,g=x),g.add(u),function(e,t,n){h(e,t),t.set(e,n)}(this,y,{ready:[]}),this.mobile=e,this.__DEV__=l,this.started=!1,this.server=t,this.storage=new p.StorageManager,this.defaultStorage=new p.StorageManager,this.defaultStorage.load(),this.util=new i.Utility(this),this.api=new r.API(this,t,n,s),this.notifications=new o.Notifications(this),this.rights={},this.groups={},this.api.account().then(async e=>{this.rights=e.rights.reduce((e,t)=>({...e,[t]:!0}),{}),this.groups=e.groups.reduce((e,t)=>({...e,[t]:!0}),{});{const e=this.rights.review&&this.api.hasPendingChanges;document.querySelector("#queue-tab-pending").classList.toggle("hidden",!e),e||"pending"!==this.queue.current.type||this.queue.switch("recent")}await v(x,this,S).call(this),this.cleanup(),setInterval(()=>this.cleanup(),1e4),v(x,this,_).call(this,"ready")}),this.gui=new c.GUI(this),this.queue=new d.Queue(this),this.audio=new a.AudioManager(this),this.time={load:null,save:null}}get store(){return this.storage.data}disable(e,t){electron.disable(e,t)}on(e,t,n={}){return m(y,this)[e]&&m(y,this)[e].push({callback:t,options:n}),this}async init(e=null){return this.gui.build(),await this.audio.init(),await v(x,this,S).call(this,e)}async noinit(e=null){var t;const n=await v(x,this,S).call(this,e);if(null===(t=this.AI)||void 0===t||t.cancel.all(),this.store.settings.AI.enabled)if("Ollama"===this.store.settings.AI.provider)this.AI=new u.AI.providers.Ollama(this,this.store.settings.AI.Ollama);else this.AI=null;else this.AI=null;{const e=this.store.UI.queue.width;document.body.querySelector("#queue").style.width=e,document.body.querySelector("#right-container").style.width=`calc(100% - ${e})`}{const e=this.store.UI.details.width;document.body.querySelector("#right-details").style.width=e,document.body.querySelector("#right-top").style.width=e,document.body.querySelector("#main-container").style.width=`calc(100% - ${e})`}return this.gui.settings.update(),n}async start(){this.gui.start(),this.update(),this.queue.fetch(),this.started=!0}async update(){const e=performance.now();try{await this.api.account().then(e=>{this.rights=e.rights.reduce((e,t)=>({...e,[t]:!0}),{}),this.groups=e.groups.reduce((e,t)=>({...e,[t]:!0}),{})}),await this.api.getGlobalUserInfo(this.api.username).then(e=>{var t;(t=this.rights).rollback||(t.rollback=e.rights.includes("rollback"))}),this.rights.rollback||"LuniZunie"===this.api.username||this.disable("Rollback required","Your account no longer has rollback rights, which are required to use WikiShield.");{const e=this.rights.review&&this.api.hasPendingChanges;document.querySelector("#queue-tab-pending").classList.toggle("hidden",!e),e||"pending"!==this.queue.current.type||this.queue.switch("recent")}this.save()}catch(e){console.error("Update error:",e)}setTimeout(()=>this.update(),Math.max(0,2500-(performance.now()-e)))}cleanup(){const e=Date.now();let t=!1;for(const[,n]of Object.entries(this.store.highlight))for(const[s,i]of n.entries())e>=i[1]&&(n.delete(s),t=!0);for(const[,n]of Object.entries(this.store.whitelist))for(const[s,i]of n.entries())e>=i[1]&&(n.delete(s),t=!0);t&&this.queue.current.item&&this.gui&&this.gui.renderQueue(this.queue.current.queue,this.queue.current.item)}controller(e){var t,n,s;if(this.started){if(this.gui.dialog.dialogs.active)return this.gui.dialog.controller(e);if(this.gui.settings.active)return this.gui.settings.controller(e);if(!("INPUT"===(null===(t=e.target)||void 0===t?void 0:t.tagName)||"TEXTAREA"===(null===(n=e.target)||void 0===n?void 0:n.tagName)||null!==(s=e.target)&&void 0!==s&&s.isContentEditable)&&"keydown"===e.type){if(e.repeat&&!this.store.settings.repeat_control_scripts)return;const t=(0,g.buildShortcut)(e);for(const n of this.store.control_scripts)n.keys.every(e=>e===t)&&(e.preventDefault(),this.execute(n))}}}async execute(e,t=!0,n=null,s=null){const i=(e,t)=>!e.name||("if"===e.name?this.gui.events.conditions[e.condition.name].check(this,t,e.condition.params):"if not"===e.name&&!this.gui.events.conditions[e.condition.name].check(this,t,e.condition.params));if(null===n){null!=s||(s=this.queue.current.item);const t=[e];let a=0;for(;t.length>0;){const e=t[0];if(i(e,s)){if(!e.actions){t.splice(0,1);continue}t.push(...e.actions)}e.name&&"if"!==e.name&&"if not"!==e.name&&this.gui.events.events[e.name].progress&&a++,t.splice(0,1)}if(a>0){let e=0;const t=new l.ProgressBar;n=(n,s)=>{const i="Done"===n?1:e/a;t.set(n,i,s),e++}}else n=e=>{}}if(i(e,s))for(const i of e.actions){if(!("name"in i))continue;const e={...i.params};for(const t of(null===(a=this.gui.events.events[i.name])||void 0===a||null===(r=a.parameters)||void 0===r?void 0:r.call(a,this,s))||[]){var a,r;t.id&&!(t.id in e)&&"default"in t&&(e[t.id]=t.default)}if("if"===i.name||"if not"===i.name)t=await this.execute(i,t,n,s);else{const a=this.gui.events.events[i.name],r=()=>{t=!1,this.audio.playSound(["action","failed"]),a.progress&&n(a.progress,!0)};try{if(t||!a.continuity){var o,d;const t=null!==(o=null===(d=a.valid)||void 0===d?void 0:d.call(a,this,s,e))&&void 0!==o?o:{valid:!0};if(t.valid){a.progress&&(n(a.progress,!1),this.audio.playSound(["action","default"])),this.store.statistics.actions_executed.total++;const t=await a.script(this,s,e);var c;if(!1===t.valid)r(),"reason"in t&&this.gui.dialog.toast("Action failed",t.reason,"error");else this.store.statistics.actions_executed.successful++,null===(c=a.successful)||void 0===c||c.call(a,this,s,e)}else r(),"reason"in t&&this.gui.dialog.toast("Action skipped",t.reason,"error")}}catch(e){r(),this.gui.dialog.toast("Please report to developer",`An error occurred while executing action "${i.name}". Check the console for details.`,"error"),console.error(`Error executing action "${i.name}":`,e.message||String(e))}}}return e.name||n("Done",!t),t}async getDEFCON(){const e="User:EnterpriseyBot/defcon",t=(await this.api.getPagesContent([e]))[e],n=t.match(/level\s*=\s*(\d+)/),s=t.match(/info\s*=\s*([\d.]+)/);return{level:n?Number(n[1]).toLocaleString():null,info:s?Number(s[1]).toLocaleString():null}}export(e=!0){this.time.save=performance.now(),this.store.statistics.session_time+=this.time.save-this.time.load;const{string:t,logs:n}=this.storage.encode();return e&&p.StorageManager.output(n),t}backup(){return this.time.save=performance.now(),this.store.statistics.session_time+=this.time.save-this.time.load,this.time.load=this.time.save,electron.localStorage.set(`WikiShield:BackupStorage-${this.api.username}`,`${Date.now()};${this.export(!1)}`),!0}async save(){this.backup();const e=`${Date.now()};${this.export(!1)}`,t=this.api.username;if(window.isFinite)electron.saveAccount(t,e);else try{const n=await this.api.postWithToken({action:"options",optionname:"userjs-wikishield-storage",optionvalue:e});"success"===(null==n?void 0:n.options)||console.error(`[WikiShield] Failed to save account data for ${t}:`,n)}catch(e){console.error(`[WikiShield] Failed to save account data for ${t}:`,e)}}async load(){try{var e,t;return null!==(e=null===(t=[electron.localStorage.get(`WikiShield:BackupStorage-${this.api.username}`),(await this.api.post({action:"query",meta:"userinfo",uiprop:"options",format:"json"})).query.userinfo.options["userjs-wikishield-storage"]].reduce((e,t)=>{var n,s;null!=t||(t="0;e30=");let i=0,a=t;return t.includes(";")&&([i,a]=t.split(";",2),i=parseInt(i,10)),new Date(i).toLocaleString(),new Date(null!==(n=null==e?void 0:e.timestamp)&&void 0!==n?n:0).toLocaleString(),i>0&&i>(null!==(s=null==e?void 0:e.timestamp)&&void 0!==s?s:0)?{timestamp:i,data:a}:e},null))||void 0===t?void 0:t.data)&&void 0!==e?e:"e30="}catch(e){var n;return null!==(n=void console.error("Failed to load storage from wiki:",e))&&void 0!==n?n:"e30="}}page(e,t,n=!0){return`https://${this.server}/${t?`w/index.php${e}`:`wiki/${n?encodeURIComponent(e):e}`}`}open(e,t){"force"===t?t=!1:window.arePopupsBlocked?t=!0:t||(t=!this.store.settings.wikipedia_popups.enabled),t?electron.openExternal(null!=e?e:"https://google.com/"):electron.openInBrowser(e).then(e=>{e&&requestAnimationFrame(()=>{if(this.gui.dialog.popups.push(e),!document.getElementById("popup-blocker")){const e=document.createElement("div");e.id="popup-blocker",e.innerText="Please close the popup or click anywhere on this page to continue using WikiShield.",document.body.appendChild(e),this.gui.dialog.check()}})})}}function _(e){if(m(y,this)[e])for(const n of m(y,this)[e])try{n.callback()}catch(e){}finally{var t;!0===(null===(t=n.options)||void 0===t?void 0:t.once)&&(m(y,this)[e]=m(y,this)[e].filter(e=>e!==n))}return this}async function S(e=null){const t=this.storage.decode(null!=e?e:await this.load()).logs;var n,s,i;(this.time.load=performance.now(),this.store.settings.AI.enabled)?"Ollama"===this.store.settings.AI.provider?"function"==typeof(null===(n=u.AI.providers)||void 0===n?void 0:n.Ollama)?this.AI=new u.AI.providers.Ollama(this,this.store.settings.AI.Ollama):(console.error("AI.providers.Ollama is not available. Falling back to null."),this.AI=null):(null===(s=this.AI)||void 0===s||s.cancel.all(),this.AI=null):(null===(i=this.AI)||void 0===i||i.cancel.all(),this.AI=null);return t}t.WikiShield=k,f=k,b="config",w={version:s.VERSION,changelog:{version:"6",HTML:fetch("https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/CHANGELOG.html").then(e=>e.text()).catch(()=>"<em>Could not fetch changelog.</em>")},pages:{AIV:"Wikipedia:Administrator intervention against vandalism",UAA:"Wikipedia:Usernames for administrator attention",RFPP:"Wikipedia:Requests for page protection/Increase",SRG:"Steward requests/Global"},config:{refresh:{recent:2e3,pending:2e3,watchlist:2e3,users:2e3},historyCount:10}},(b=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(b))in f?Object.defineProperty(f,b,{value:w,enumerable:!0,configurable:!0,writable:!0}):f[b]=w},4018(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.namespaces=void 0;t.namespaces=[{name:"Main",id:0,analysis_description:{edit:"",username:""}},{name:"Talk",id:1,analysis_description:{edit:"",username:""}},{name:"User",id:2,analysis_description:{edit:"Flag content unrelated to Wikipedia, such as self-promotion. If the page looks like a Wikipedia article, check that it isn't an obvious hoax, and that it is a subpage. Do not follow strict standards for these pages.",username:"Check whether the username matches the base page title. Most often, a user page should only be edited by that user. Consider alternative accounts, like User:Example creating User:Example (alt)."}},{name:"User talk",id:3,analysis_description:{edit:"",username:""}},{name:"Project",id:4,analysis_description:{edit:"",username:""}},{name:"Project talk",id:5,analysis_description:{edit:"",username:""}},{name:"File",id:6,analysis_description:{edit:"",username:""}},{name:"File talk",id:7,analysis_description:{edit:"",username:""}},{name:"MediaWiki",id:8,analysis_description:{edit:"",username:""}},{name:"MediaWiki talk",id:9,analysis_description:{edit:"",username:""}},{name:"Template",id:10,analysis_description:{edit:"",username:""}},{name:"Template talk",id:11,analysis_description:{edit:"",username:""}},{name:"Help",id:12,analysis_description:{edit:"",username:""}},{name:"Help talk",id:13,analysis_description:{edit:"",username:""}},{name:"Category",id:14,analysis_description:{edit:"",username:""}},{name:"Category talk",id:15,analysis_description:{edit:"",username:""}},{name:"Portal",id:100,analysis_description:{edit:"",username:""}},{name:"Portal talk",id:101,analysis_description:{edit:"",username:""}},{name:"Draft",id:118,analysis_description:{edit:"",username:""}},{name:"Draft talk",id:119,analysis_description:{edit:"",username:""}},{name:"MOS",id:126,analysis_description:{edit:"",username:""}},{name:"MOS talk",id:127,analysis_description:{edit:"",username:""}},{name:"TimedText",id:710,analysis_description:{edit:"",username:""}},{name:"TimedText talk",id:711,analysis_description:{edit:"",username:""}},{name:"Module",id:828,analysis_description:{edit:"Check whether the edit is meaningful Lua code. In this namespace, anything that isn't written in Lua can be safely assumed to be vandalism. Be careful about multi-line strings, as they might contain non-Lua code: check the context of the edit to make sure. Additionally, check if the edit introduces any obvious Lua syntax errors.",username:""}},{name:"Module talk",id:829,analysis_description:{edit:"",username:""}},{name:"Event",id:1728,analysis_description:{edit:"",username:""}},{name:"Event talk",id:1729,analysis_description:{edit:"",username:""}}]},6400(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.profanity=void 0;const n="\\*#\\-",s=`[${n}a4]`,i=`[${n}b6]`,a=`[${n}ck]`,r=`[${n}h]`,o=`[${n}i1y]`,l=`[${n}o0]`,d=`[${n}t7]`,c={a:s,b:i,c:a,d:`[${n}d6]`,e:`[${n}e3]`,f:`[${n}f]`,g:`[${n}g9]`,h:r,i:o,j:`[${n}j]`,k:`[${n}k]`,l:`[${n}l1]`,m:`[${n}m]`,n:`[${n}n]`,o:l,p:`[${n}p9]`,q:`[${n}q9]`,r:`[${n}r]`,s:`[${n}sz526]`,t:d,u:`[${n}uv]`,v:`[${n}vu]`,w:`[${n}w]`,x:`[${n}x]`,y:`[${n}y]`,z:`[${n}zs25]`,0:`[${n}0]`,1:`[${n}1]`,2:`[${n}2]`,3:`[${n}3]`,4:`[${n}4]`,5:`[${n}5]`,6:`[${n}6]`,7:`[${n}7]`,8:`[${n}8]`,9:`[${n}9]`};class u{constructor(e={}){this.conversion={};for(const[t,n]of Object.entries(e))for(const e of n)this.conversion[e]&&console.warn(`Profanity lookalike collision: ${e} is already mapped to ${this.conversion[e]}, remapping to ${t}`),this.conversion[e]=t}removeAccents(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}obscureReplacements(e){return e.replace(/(\/[|\\]\/|\\[|\\]\\)/g,"n").replace(/&/g,"and").replace(/zero/g,"0").replace(/one/g,"1").replace(/two/g,"2").replace(/three/g,"3").replace(/four/g,"4").replace(/five/g,"5").replace(/six/g,"6").replace(/seven/g,"7").replace(/eight/g,"8").replace(/nine/g,"9")}parseString(e,t=!1){e=t?e.replace(/[._,;:|]/g," ").replace(/\s+/g," ").toLowerCase():e.replace(/[\s._,;:|]/g,"").toLowerCase(),e=this.removeAccents(e);let n="";for(const t of e)this.conversion[t]?n+=this.conversion[t]:n+=t;return e=this.obscureReplacements(n)}analyzeObfuscation(e,t,n,s,i=!1){const a=e.substring(t,n);let r=0;if(/\s/.test(a)&&!i)return-.95;const o=this.countCaseChanges(a);if(o>0){o/Math.max(1,a.length-1)>.3&&(r+=.3)}if(/[._,;:|]/.test(a)){const e=(a.match(/[._,;:|]/g)||[]).length,t=(a.match(/[a-zA-Z0-9]/g)||[]).length;if(t>0){const n=e/t;n>.3&&(r+=Math.min(.5,.7*n))}}const l=this.checkWordBoundaries(e,t,n,s,i);r+=l;const d=this.checkSubstitution(a,s);if(d>0&&(r+=d),l<0){if(!this.isStandaloneWord(e,t,n)){this.isCamelCaseBoundary(e,t,n)?r+=.2:r-=.2}}return Math.max(-1,Math.min(1,r))}countCaseChanges(e){let t=0;for(let n=1;n<e.length;n++){const s=e[n-1],i=e[n];if(/[a-zA-Z]/.test(s)&&/[a-zA-Z]/.test(i)){s===s.toUpperCase()!==(i===i.toUpperCase())&&t++}}return t}checkWordBoundaries(e,t,n,s,i=!1){const a=t>0?e[t-1]:"",r=n<e.length?e[n]:"",o=e.substring(Math.max(0,t-8),Math.min(e.length,n+8)).toLowerCase(),l=[/WMF/,/pass(word|phrase|port|enger|ion|ive|ed|ing|es|key|code|over|by|able)/i,/class(room|mate|ified|es|ic|y|ification)/i,/grass(land|hopper|y|es)/i,/bass(ist|oon|line|es)/i,/mass(ive|acre|age|es|achusetts)/i,/assign(ment|ed|ing|s|ee|or)/i,/assess(ment|ed|ing|or|s)/i,/assemble|assembly|assertion|asset|assist|assume|assure|associate|association/i,/brass|crass|harass|morass|surpass|trespass|compass|embassy|embarrass/i,/cock(pit|tail|roach|ade|atoo|le|ney)/i,/scunthorpe|penistone|shitterton|lightwater|middlesex|sussex|essex|wessex/i,/dick(ens|inson|son|ey|ie)/i,/analyst|analytics|analyze|canal|banal/i,/therapist|therapeutic|therapy/i,/cumul(ative|us|at)|circum(stance|ference|cise|vent|navigate|scribe)/i,/butter(cup|fly|milk|scotch|fingers|nut)|buttress|button|rebuttal/i,/count(ry|er|ess|down|ing|ed|able|enance|erfeit|erpart)/i,/grape|drape|scrape|landscape|escapade/i,/shell(fish|fire|ter|ed)|eggshell|nutshell|bombshell|seashell/i,/whole(sale|some|hearted)/i,/exchange|exchequer/i,/title|titled|subtitle|entitle/i,/sextant|sextet|bisect|insect|intersect|section|sector/i,/cocktail|peacock|hancock|hitchcock|babcock|woodcock/i,/niger(ia|ian)|montenegro/i,/penisten|penetrat|penal(ty|ize|ise)|penchant|pencil|pendant|penguin|peninsula/i,/manslaughter|slaughterhouse/i,/shitake|shiitake/i,/arsenic|arsenal/i,/cummings|scumble/i,/smother|another|mother(board|land|hood)/i,/wanton|wanting|wanted|warrant/i,/trigger|bigger|digger|jigger|rigger|vigor|figure/i,/ballad|ball(room|park|istic|oon|et|ot|ard|ast)/i,/grape(fruit|vine|shot)/i,/raptor|rapport|rapid|rapier|rapture/i,/killed|killer|skill(ed|ful|s)|killjoy|kiln|kilo(gram|meter|byte|watt)/i,/bomb(ard|astic|shell|er|ing|ay)/i,/hellenic|hello|shell|othello/i,/crack(down|le|ed|ing|erjack)|firecracker/i,/jewel{1,2}/i,/skill/i];for(const e of l)if(e.test(o))return-.8;const d=/[a-zA-Z]/.test(a),c=/[a-zA-Z]/.test(r);if(d&&c){const i=e.substring(Math.max(0,t-8),t).toLowerCase(),a=e.substring(n,Math.min(e.length,n+8)).toLowerCase(),r=e.substring(Math.max(0,t-8),Math.min(e.length,n+8)).toLowerCase();return this.analyzePaddingLikelihood(i,a,s)>=.4||r.length>15&&r===r.toLowerCase()&&!/\s/.test(r)?0:-.5}if(d||c){const i=e.substring(Math.max(0,t-8),t).toLowerCase(),a=e.substring(n,Math.min(e.length,n+8)).toLowerCase();this.analyzePaddingLikelihood(i,a,s);return 0}const u=e.substring(t,n);return/\s/.test(u)&&!i?-.9:0}analyzePaddingLikelihood(e,t,n){let s=0;const i=/[bcdfghjklmnpqrstvwxyz]{3,}/i;(i.test(e)||i.test(t))&&(s+=.4);const a=t.match(/([a-z])\1{1,}/i);if(a&&a[0].length>=2){if(t.indexOf(a[0])>=t.length-3){(!/\b(ll|ss|tt|nn|mm|pp|dd|bb|gg|ff)$/i.test(a[0])||t.length<=3)&&(s+=.35)}}if(e.length<=2&&e.length>0&&(s+=.25),t.length<=3&&t.length>0){/^(er|ed|ing|ion|ly|al|ful|less|ness|ment|s)$/i.test(t)||(s+=.2)}/([qx][^u]|[jqxz]{2}|[bcdfghjklmnpqrstvwxz]{4,})/i.test(e+t)&&(s+=.3);const r=e+t;if(r.length>0){(r.match(/[aeiou]/gi)||[]).length/r.length<.2&&(s+=.3)}return Math.min(1,s)}checkSubstitution(e,t){const n=/[0-9@$!]/;if(!n.test(e))return 0;let s=0;for(const t of e)n.test(t)&&s++;const i=s/e.length;return Math.min(.3,.6*i)}isStandaloneWord(e,t,n){const s=t>0?e[t-1]:" ",i=n<e.length?e[n]:" ",a=/[\s.,;:!?()[\]{}"'`~\-_]/;return a.test(s)&&a.test(i)}isCamelCaseBoundary(e,t,n){if(0===t||n===e.length)return!1;const s=e[t-1],i=e[t],a=e[n-1],r=e[n],o=/[A-Z]/.test(i),l=/[a-z]/.test(s),d=(/[a-z]/.test(r),/[a-z]/.test(a));return!!(l&&o||d&&/[A-Z]/.test(r))}findMatchPosition(e,t,n,s){const i=e.toLowerCase();let a=-1,r=-1,o=-1;for(let n=0;n<=i.length-t.length;n++){const i=this.parseString(e.substring(n,n+t.length+10));if(i.includes(s)){const e=this.calculateSimilarity(s,i.substring(0,s.length));e>o&&(o=e,a=n,r=n+t.length)}}return{start:a,end:r}}calculateSimilarity(e,t){const n=Math.min(e.length,t.length);let s=0;for(let i=0;i<n;i++)e[i]===t[i]&&s++;return s/Math.max(e.length,t.length)}match(e){const t=this.parseString(e),n=[];for(const s of u.hits)if(s.term){const i=s.term,a=s.severity||.5,r=s.note||null,o=s.multiWord||!1;if(1===i.length&&/[^\x00-\x7F]/.test(i))continue;const l=o?this.parseString(e,!0):t,d=i.split("").reduce((e,t)=>{var n;if(o&&" "===t)return e+" *";return e+(null!==(n=c[t])&&void 0!==n?n:t)},""),u=new RegExp(d,"gi");let p;const g=this.buildPositionMap(e,o);for(;null!==(p=u.exec(l));){const t=p[0],l=p.index,d=l+t.length,c=g[l]||l,u=void 0!==g[d-1]?g[d-1]+1:d,h=this.analyzeObfuscation(e,c,u,i,o);let m=this.calculateMatchConfidence(t,i);h<-.5?m*=Math.max(.01,1+4*h):h<-.2?m*=Math.max(.05,1+2.5*h):h>.5&&(m=Math.min(1,m+.08*h));if(m>=Math.max(.05,.2-.015*i.length)){const o=e.substring(c,u);if(s.ignore&&Array.isArray(s.ignore)&&s.ignore.includes(o))continue;n.push({name:i,match:t,confidence:m,obfuscation:h,severity:a,note:r,originalSegment:o})}}}else if(s.regex){const t=e.match(new RegExp(s.regex.source,"g"));if(t)for(const e of t)n.push({name:s.name,match:e,confidence:1,obfuscation:.5,severity:s.severity||.5,note:s.note||"Pattern-based detection with high confidence. Obfuscation is moderate for formatted data.",originalSegment:e})}else s.test&&s.test(e)&&n.push({name:s.name,match:e,confidence:1,obfuscation:.5,severity:s.severity||.5,note:s.note||"Test-based detection with high confidence.",originalSegment:e});return n}buildPositionMap(e,t=!1){const n={};let s=0;for(let i=0;i<e.length;i++){const a=e[i];t?/[\s._,;:|]/.test(a)&&0!==i&&/[\s._,;:|]/.test(e[i-1])||(n[s]=i,s++):/[\s._,;:|]/.test(a)||(n[s]=i,s++)}return n}findOriginalPosition(e,t){let n=0;for(let s=0;s<e.length;s++){const i=e[s];if(!/\s/.test(i)){if(n===t)return s;n++}}return t}calculateMatchConfidence(e,t){const n=/[\*#_\-]/;let s=0,i=0,a=0,r=0;for(const t of e)n.test(t)?(i++,a++,r=Math.max(r,a)):(s++,a=0);const o=s+i;if(0===o)return 0;const l=s/o;if(l<.3)return 0;if(l<.5)return.1*l;const d=r>1?Math.max(.2,1-.2*r):1,c={};for(const t of e)n.test(t)||(c[t]=(c[t]||0)+1);let u=1;for(const e of Object.values(c))e>2&&(u*=Math.max(.4,1-.15*(e-2)));const p=o/t.length,g=p>1.5?Math.max(.2,1-.4*(p-1)):1;return Math.max(0,Math.min(1,l*d*u*g))}score(e){const t=this.match(e);let n=0;for(const e of t)n+=e.confidence;return n}evaluate(e){const t=this.match(e),n=this.parseString(e);if(0===t.length)return{finalScore:0,risk:"No",matches:[],details:{baseScore:0,weightedScore:0,severityScore:0,matchCount:0,averageConfidence:0,averageObfuscation:0,averageSeverity:0,textLength:e.length,densityPenalty:0,repetitionPenalty:0,diversityBonus:0,lengthModifier:1,highConfidenceMatches:0,mediumConfidenceMatches:0,lowConfidenceMatches:0}};let s=0,i=0,a=0,r=0,o=0,l=0;const d=new Set;for(const e of t){const t=e.severity||.5,n=e.confidence;r+=n,l+=Math.pow(n,1.5)*t,o+=e.obfuscation||0,d.add(e.name),n>=.7?s++:n>=.4?i++:a++}const c=r/t.length,u=o/t.length,p=r>0?l/r:0,g=1*s+.35*i+.08*a,h=n.length,m=t.length/Math.max(h/5,1),v=.6*Math.tanh(.3*m),f={};for(const e of n)/[a-z0-9]/.test(e)&&(f[e]=(f[e]||0)+1);let b=0;const w=Object.values(f).reduce((e,t)=>e+t,0);for(const e of Object.values(f))e>3&&(b+=Math.pow((e-3)/w,1.5));const y=Math.min(.8,2*b),x=d.size/t.length,k=x>.6?1*(x-.6):0,_=Math.max(.5,Math.min(1.5,1+Math.log10(Math.max(10,h))/10)),S=u>.4?.5*(u-.4):u<-.2?.4*Math.abs(u):0,q=t.filter(e=>e.severity>=1&&e.confidence>=.5||e.confidence>=.9).length,E=g*p*_;let L=E+.5*l+k+.8*q-(v+y+S);c<.5&&(L*=Math.max(.1,1.5*c)),L>3?L=3+1.5*Math.log10(L-2):L>1.5&&(L=1.5+.8*Math.sqrt(L-1.5)),L=Math.max(0,L);let A="No";return L>=4||q>=2?A="Critical":L>=2.5?A="High":L>=1.5?A="Medium":L>=.5&&(A="Low"),{clamped:Math.max(0,Math.min(1,L/5)),finalScore:Math.round(100*L)/100,risk:A,matches:t,details:{baseScore:Math.round(100*g)/100,weightedScore:Math.round(100*E)/100,severityScore:Math.round(100*l)/100,matchCount:t.length,uniqueMatches:d.size,averageConfidence:Math.round(100*c)/100,averageObfuscation:Math.round(100*u)/100,averageSeverity:Math.round(100*p)/100,textLength:e.length,densityPenalty:Math.round(100*v)/100,repetitionPenalty:Math.round(100*y)/100,diversityBonus:Math.round(100*k)/100,lengthModifier:Math.round(100*_)/100,obfuscationPenalty:Math.round(100*S)/100,criticalPatterns:q,highConfidenceMatches:s,mediumConfidenceMatches:i,lowConfidenceMatches:a}}}}!function(e,t,n){(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(u,"hits",[{name:"URL",regex:/(?:https?:\/\/(?:www\.)?[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*(?:\/[^\s]*)?|(?:www\.)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?:\/[^\s]*)?|[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.(?:com|org|net|edu|gov|mil|int|co|io|ai|app|dev|info|biz|name|pro|museum|aero|coop|jobs|mobi|travel|xxx|ac|ad|ae|af|ag|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)(?:\/[^\s]*)?)/i,severity:.1,note:"URLs in usernames may indicate spam or advertising."},{name:"Phone number",regex:/(\+?\d{1,3}[-.\s]?|\(\+?\d{1,3}\)\s?)?(\d{3}[-.\s]?\d{3}[-.\s]?\d{4}|\d{4}[-.\s]?\d{3}[-.\s]?\d{3})/,severity:.3,note:"The pattern of numbers in this username resemble a phone number. Usernames containing personal information may be considered disruptive."},{name:"Email address",regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/,severity:.3,note:"Email addresses in usernames can indicate spam or contact sharing."},{term:"base64",severity:.2,note:"Base64 encoding may be used to obfuscate content to bypass filters."},{term:"fromhex",severity:.2,note:"Hex encoding may be used to obfuscate content to bypass filters."},{term:"1488",severity:.5,note:"Well-known Neo-Nazi symbol, however the number itself can appear in innocent contexts."},{term:"nazi",severity:1},{term:"swastika",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"卍",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"卐",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿕",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿖",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿗",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿘",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"aryan",severity:.7,note:"Associated with white supremacist ideology, though it can also be in reference to the self-designation of Indo-Iranian peoples."},{term:"fascism",severity:.5},{term:"fascist",severity:.5},{term:"facist",severity:.5},{term:"☭",severity:.5,note:"Hammer and sickle symbol, politically charged but context-dependent."},{term:"✡",severity:.4,note:"Star of David, can be used respectfully or in antisemitic contexts."},{term:"44",severity:.1,note:"Obfuscated symbol of the Nazi SS division. If appears as 'ᛋᛋ' or similar, indicates intent to reference the SS."},{term:"imbo wales",severity:.2,multiWord:!0,note:"Play on 'Jimbo Wales' name, may indicate mockery or impersonation."},{term:"sock",severity:.3,note:"May reference sockpuppet accounts but has innocent meanings."},{term:"puppet",severity:.3,note:"May reference sockpuppet accounts but has innocent meanings."},{term:"sock puppet",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"return",severity:.2,note:"Often used in usernames by sockpuppeteers."},{term:"is back",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"are back",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"timelash",severity:1,note:'Well-known sockpuppeteer ("Timelash") on Wikipedia.'},{term:"my little",severity:.8,multiWord:!0,note:"If related to 'my little pony', indicates sockpuppeteer."},{term:"my little pony",severity:1,multiWord:!0,note:"Well-known sockpuppeteer on Wikipedia."},{term:"friendship is magic",severity:1,multiWord:!0,note:"Well-known sockpuppeteer on Wikipedia."},{term:"anal",severity:.7},{term:"anus",severity:.5},{term:"sex",severity:.3},{term:"secs",severity:.05,note:"Obfuscated form of 'sex'."},{term:"seggs",severity:.2,note:"Obfuscated form of 'sex'."},{term:"willy",severity:.2,note:"Slang for penis."},{term:"wank",severity:.6,note:"British sexual slang for masturbation."},{term:"barf",severity:.3},{term:"bastard",severity:.5},{term:"batty boy",severity:.7,multiWord:!0,note:"Homophobic slur in British/Caribbean English."},{name:"bitch",regex:new RegExp(`${i+o}(${l}|${s})?${d}?${a+r}`),severity:.7},{term:"blow job",severity:.8,multiWord:!0},{term:"blowing",severity:.2,note:"Sexual innuendo but common verb."},{term:"boner",severity:.4},{term:"boob",severity:.4},{term:"booty",severity:.3},{term:"breast",severity:.4,note:"Anatomical term, but can be used inappropriately."},{term:"butt",severity:.2},{term:"bite me",severity:.5,multiWord:!0,note:"Often has defiant or provocative connotation."},{term:"butt plug",severity:.7,multiWord:!0},{term:"bollock",severity:.5,note:"British slang for testicles."},{term:"bollox",severity:.5,note:"Variant spelling of 'bollocks'."},{term:"bollix",severity:.5,note:"Variant spelling of 'bollocks'."},{term:"clit",severity:.3},{term:"cock",severity:.3},{term:"brain dead",severity:.5,multiWord:!0,note:"Derogatory medical reference."},{term:"bukake",severity:.7},{term:"bully",severity:.5,note:"Indicates harassment behavior."},{term:"bullies",severity:.5,note:"Indicates harassment behavior."},{term:"bullied",severity:.3,note:"May indicate victimhood or boasting."},{term:"versus",severity:.4,note:"Combat/conflict framing, but legitimate word."},{term:"bumming",severity:.5,note:"British slang for anal sex or begging."},{term:"bunghole",severity:.5},{term:"cesspool",severity:.3,note:"Derogatory term for filthy place."},{term:"cesspit",severity:.3,note:"Variant of cesspool."},{term:"dick",severity:.7},{term:"prick",severity:.7},{term:"dildo",severity:.7},{term:"censor",severity:.1,note:"May indicate anti-censorship stance."},{term:"ching",severity:.8,note:"Part of racial slur against Asians."},{term:"ching chong",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"ching chang",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"wing wong",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"bot",severity:.4,note:"May indicate automated account claim."},{term:"ox long",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'cock's long'."},{term:"douche",severity:.5},{term:"cunt",severity:.7},{term:"cuck",severity:.4,note:"Derogatory term from manosphere."},{term:"curry munch",severity:.9,multiWord:!0,note:"Racist slur against South Asians."},{term:"crime",severity:.3,note:"Negative connotation but legitimate word."},{term:"pussy",severity:.7},{term:"deeznuts",severity:.3,note:"Crude joke phrase."},{term:"destroy",severity:.3,note:"Aggressive language."},{term:"destruction",severity:.3,note:"Aggressive language."},{term:"diaper",severity:.3,note:"Infantilization or fetish reference."},{term:"diarrhea",severity:.3},{term:"throbbing",severity:.5,note:"Sexual innuendo term."},{term:"dimwit",severity:.3},{term:"doo doo",severity:.3,multiWord:!0},{term:"dookie",severity:.3},{term:"fart",severity:.3},{term:"ejaculat",severity:.7},{term:"erect",severity:.5,note:"Sexual context or legitimate word."},{term:"erotic",severity:.5},{term:"fuck",severity:.8},{term:"phuck",severity:.8,note:'Alternative spelling of "fuck" to bypass detection.'},{term:"orgasm",severity:.7},{term:"rape",severity:1},{term:"lawsuit",severity:.3,note:"Legal threat implication."},{term:"fraud",severity:.5,note:"Accusation of criminal behavior."},{term:"tard",severity:.5,note:"Ableist slur suffix."},{term:"terror",severity:.7,note:"Violence/terrorism reference."},{term:"mike hunt",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'my cunt'."},{term:"mike ox",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'my cock's'."},{term:"masturbat",severity:.7},{term:"nutsack",severity:.5},{term:"ophile",severity:1,note:"Suffix for sexual predator terms like pedophile."},{term:"pedo",severity:.6},{term:"peeing",severity:.3},{term:"peanus",severity:.5,note:"Intentional misspelling of 'penis'."},{term:"penis",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"porn",severity:.7},{term:"piss",severity:.5},{term:"poop",severity:.3},{term:"prison",severity:.3,note:"Criminal context, but legitimate word."},{term:"prostitute",severity:.5,note:"Sexual work reference or insult."},{term:"queer",severity:.5,note:"Can be slur or reclaimed identity."},{term:"rectum",severity:.3,note:"Anatomical term."},{term:"report me",severity:.3,multiWord:!0,note:"Defiant/trolling phrase."},{term:"rimming",severity:.7},{term:"scrotum",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"semen",severity:.7},{term:"slut",severity:.7},{term:"sucks",severity:.3,note:"Mild profanity or legitimate verb."},{term:"sux",severity:.3,note:"Intentional misspelling of 'sucks'."},{term:"vagina",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"vadge",severity:.5,note:"Slang for vagina."},{term:"vomit",severity:.3},{term:"vulva",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"whore",severity:.7},{term:"chink",severity:1},{term:"jew",severity:.3,note:"Legitimate religious/ethnic term but tracked for antisemitic usage patterns."},{term:"nigger",severity:1},{term:"nigga",severity:1},{term:"nigguh",severity:1,note:"Phonetic spelling of racial slur."},{term:"niglet",severity:1},{term:"pajeet",severity:.7,note:"Derogatory term for South Asians."},{term:"slave",severity:.6,note:"Dehumanizing term with historical trauma, but legitimate historical uses."},{term:"master race",severity:1,multiWord:!0,note:"Nazi supremacist ideology phrase."},{term:"inferior race",severity:1,multiWord:!0},{term:"superior race",severity:1,multiWord:!0,note:"White supremacist ideology."},{term:"racist",severity:.8},{term:"racism",severity:.7},{term:"racial",severity:.3,note:"Neutral term but tracked for context in discriminatory language."},{term:"bigot",severity:.7},{term:"fag",severity:.7},{term:"taliban",severity:.7,note:"Terrorist organization reference."},{term:"antisemit",severity:1},{term:"bleed",severity:.3,note:"Can indicate violence or be medical."},{term:"bloody",severity:.3,note:"British profanity or literal blood reference."},{term:"hell",severity:.5,note:"Religious reference used as mild profanity, but legitimate uses."},{term:"damn",severity:.3},{term:"crap",severity:.3},{term:"darn",severity:.1,note:"Mild euphemism for 'damn'."},{term:"shutup",severity:.3,note:"Rude command indicating hostility."},{term:"spastic",severity:.5,note:"Ableist slur in British English, medical term in US."},{term:"disabled",severity:.1,note:"Legitimate disability term but tracked for ableist patterns."},{term:"loser",severity:.3},{term:"abuse",severity:.5,note:"Indicates harmful behavior or accusations."},{term:"spam",severity:.3,note:"Indicates unwanted content or disruption."},{term:"abusi",severity:.5,note:"Variant of 'abuse/abusive'."},{term:"hitler",severity:1},{term:"adolf",severity:.4,note:"Common name but often used in Hitler references."},{term:"gestapo",severity:1},{term:"heil",severity:.8,note:"Nazi salute reference."},{term:"final solution",severity:1,multiWord:!0,note:"Nazi euphemism for genocide."},{term:"death camp",severity:1,multiWord:!0},{term:"concentration camp",severity:1,multiWord:!0,note:"Holocaust reference, legitimate historical use but concerning in usernames."},{term:"gas chamber",severity:1,multiWord:!0},{term:"holocaust",severity:.5,note:"Historical tragedy reference, legitimate historical use."},{term:"zionis",severity:.5,note:"Political term stem, can be antisemitic depending on context."},{term:"fuhrer",severity:1},{term:"reich",severity:.7,note:"Nazi Germany reference, though legitimate German word."},{term:"massacre",severity:.7},{term:"slaughter",severity:.7},{term:"torture",severity:.7},{term:"lynch",severity:1,note:"Racist mob killing reference, though also a surname."},{term:"killer",severity:.5},{term:"mobster",severity:.5,note:"Organized crime reference."},{term:"gangster",severity:.3,note:"Criminal reference or slang."},{term:"druglord",severity:.5,note:"Drug trafficking reference."},{term:"drugs",severity:.3,note:"General term that can be legitimate or problematic."},{term:"meth",severity:.5,note:"Reference to illegal drug, though also shorthand for 'method'."},{term:"cocaine",severity:.5},{term:"heroin",severity:.5},{term:"weed",severity:.3,note:"Marijuana reference with varying legal status, also refers to plants."},{term:"marijuana",severity:.3,note:"Cannabis reference with complex legal status."},{term:"crack",severity:.5,note:"Drug reference or legitimate verb."},{term:"amphetamine",severity:.5},{term:"benzo",severity:.3,note:"Drug abbreviation or name prefix."},{term:"benzodiazepine",severity:.5},{term:"opioid",severity:.3,note:"Drug class, medical term."},{term:"opiate",severity:.3,note:"Drug class, medical term."},{term:"ketamine",severity:.5,note:"Drug reference or medical use."},{term:"rohypnol",severity:.7,note:"Date rape drug reference."},{term:"i like",severity:.2,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"i love",severity:.3,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"i hate",severity:.5,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"young",severity:.2,note:"Age reference with legitimate uses but flagged in combination."},{term:"underage",severity:.8,note:"Age reference with concerning implications in certain contexts."},{term:"teen",severity:.3,note:"Age reference, concerning in some contexts."},{term:"adolescent",severity:.2,note:"Age term, concerning in some contexts."},{term:"preteen",severity:.4,note:"Age reference with concerning implications in certain contexts."},{term:"rapist",severity:1},{term:"raping",severity:1},{term:"incest",severity:1},{term:"cult",severity:.3,note:"Religious/social group term with negative connotation."},{term:"sekt",severity:.3,note:"German for 'sect', cult reference."},{term:"disembowel",severity:1},{term:"behead",severity:1},{term:"traitor",severity:.5,note:"Accusatory term."},{term:"genocide",severity:1},{term:"ethnic clean",severity:1,multiWord:!0,note:"Euphemism for genocide."},{term:"klan",severity:1},{term:"klux",severity:1},{term:"kkk",severity:1},{term:"kill",severity:.5,note:"Violent language, but common word."},{term:"organi",severity:.1,note:"Word stem for organization."},{term:"blog",severity:.1,note:"External site reference."},{term:"group",severity:.1,note:"Organizational term."},{term:"compan",severity:.1,note:"Company stem, spam indicator."},{term:"associat",severity:.1,note:"Association stem."},{term:"industr",severity:.1,note:"Industry stem, spam indicator."},{term:"corporate",severity:.1,note:"Business term, spam indicator."},{term:"famil",severity:.1,note:"Family stem, group indicator."},{term:"task",severity:.1,note:"Organizational term."},{term:"alliance",severity:.1,note:"Group term."},{term:"entertain",severity:.1,note:"Entertainment stem, promotional."},{term:"public",severity:.1,note:"Common term, promotional context."},{term:"private",severity:.1,note:"Common term, organizational."},{term:"troll",severity:.3,note:"Disruptive behavior indicator."},{term:"trolol",severity:.3,note:"Trolling variant/meme."},{term:"grief",severity:.3,note:"Gaming term for harassment."},{term:"password",severity:.3,note:"Security term, suspicious in username."},{term:"admin",severity:.7,note:"Role impersonation."},{term:"sysop",severity:.4,note:"Wikipedia role impersonation."},{term:"bureaucrat",severity:.5,note:"Wikipedia role impersonation."},{term:"moderator",severity:.5,note:"Role impersonation."},{term:"staff",severity:.5,note:"Role impersonation."},{term:"developer",severity:.5,note:"Role impersonation."},{term:"owner",severity:.4,note:"Role impersonation."},{term:"founder",severity:.3,note:"Role impersonation."},{term:"wmf",severity:.2,note:"Wikimedia Foundation impersonation."},{term:"foundation",severity:.3,note:"Organizational impersonation."},{term:"unblock",severity:.1,note:"Suggests blocked user."},{term:"4chan",severity:.5,note:"Imageboard site, trolling association."},{term:"8chan",severity:.3,note:"Controversial imageboard."},{term:"reddit",severity:.3,note:"External site reference."},{term:"plague",severity:.3,note:"Disease/attack term."},{term:"skibidi",severity:.1,note:"Internet meme reference."},{term:"milf",severity:.5},{term:"dilf",severity:.5},{term:"sext",severity:.5,note:"Sending sexual messages."},{term:"thot",severity:.3,note:"Derogatory sexual slang."},{term:"rizz",severity:.1,note:"Gen Z slang for charisma."},{term:"gyatt",severity:.1,note:"Sexualized Gen Z slang."},{term:"noob",severity:.1},{term:"lyric",severity:.1,note:"Possible lyrics website spammer."},{term:"propaganda",severity:.5,note:"Misinformation term."},{term:"asshole",severity:.7},{term:"fucktard",severity:.7},{term:"retard",severity:.7},{term:"imbecile",severity:.5},{term:"moron",severity:.5},{term:"chigga",severity:1},{term:"chigger",severity:1},{term:"wigga",severity:1},{term:"wigger",severity:1},{term:"igga",severity:.7,note:"Potential variant of racial slur.",ignore:["1994","ig94"]},{term:"igger",severity:.7,note:"Potential variant of racial slur."},{term:"mother fuck",severity:.7,multiWord:!0},{term:"bull shit",severity:.6,multiWord:!0},{term:"dumb ass",severity:.5,multiWord:!0},{term:"dumb fuck",severity:.7,multiWord:!0},{term:"goon",severity:.2,multiWord:!1}]);t.profanity=new u({a:["ɑ","𝑎","𝗮","𝕒","𝖆","𝓪","𝚊","𝞪","А","а","𝔞","𝒂","𝘢","𝛼","𝒶","𝙖","𝜶","𝐚","𝖺","🄰","🅰️","🅰","Ⓐ","ⓐ","@"],b:["b","𝑏","𝗯","𝕓","𝖇","𝓫","𝚋","𝞫","Ь","в","𝔟","𝒃","𝘣","𝛃","𝒷","𝙗","𝜷","𝐛","𝖻","🄱","🅱️","🅱","Ⓑ","ⓑ"],c:["c","𝑐","𝗰","𝕔","𝖈","𝓬","𝚌","ϲ","с","𝔠","𝒄","𝘤","𝒸","𝙘","𝐜","𝖼","🄲","Ⓒ","ⓒ"],d:["d","𝑑","𝗱","𝕕","𝖉","𝓭","𝚍","𝞭","ԁ","ԃ","𝔡","𝒅","𝘥","𝛿","𝒹","𝙙","𝜹","𝐝","𝖽","𝝏","🄳","Ⓓ","ⓓ"],e:["e","𝑒","𝗲","𝕖","𝖊","𝓮","𝚎","𝞮","е","𝔢","𝒆","𝘦","𝛆","","𝙚","𝜺","𝐞","𝖾","з","𝝐","🄴","Ⓔ","ⓔ","€"],f:["f","𝑓","𝗳","𝕗","𝖋","𝓯","𝚏","𝞯","ғ","ƒ","𝔣","𝒇","𝘧","𝒻","𝙛","𝜻","𝐟","𝖿","🄵","Ⓕ","ⓕ"],g:["g","𝑔","𝗴","𝕘","𝖌","𝓰","𝚐","ɡ","Ԍ","ԍ","𝔤","𝒈","𝘨","𝙜","𝐠","𝗀","🄶","Ⓖ","ⓖ"],h:["h","𝗵","𝕙","𝖍","𝓱","𝚑","һ","н","𝔥","𝒉","𝘩","ℎ","𝒽","𝙝","𝐡","𝗁","🄷","Ⓗ","ⓗ"],i:["i","𝑖","𝗶","𝕚","𝖎","𝓲","𝚒","𝞲","і","𝔦","𝒊","𝘪","𝒾","𝙞","𝜾","𝐢","𝗂","🄸","ℹ️","ℹ","Ⓘ","ⓘ","!"],j:["j","𝑗","𝗷","𝕛","𝖏","𝓳","𝚳","ј","𝔧","𝒋","𝘫","𝒿","𝙟","𝐣","𝗃","🄹","Ⓙ","ⓙ"],k:["k","𝑘","𝗸","𝕜","𝖐","𝓴","κ","к","𝔨","𝒌","𝘬","𝓀","𝙠","𝝀","𝐤","𝗄","𝞳","𝜿","қ","🄺","Ⓚ","ⓚ"],l:["l","𝑙","𝗹","𝕝","𝖑","𝓵","ⅼ","ӏ","𝔩","𝒍","𝘭","𝓁","𝙡","𝐥","𝗅","🄻","Ⓛ","ⓛ","|"],m:["m","𝑚","𝗺","𝕞","𝖒","𝓶","𝚖","м","𝔪","𝒎","𝘮","𝓂","𝙢","𝐦","𝗆","🄼","Ⓜ️","Ⓜ","ⓜ"],n:["n","𝑛","𝗻","𝕟","𝖓","𝓷","𝚗","ո","п","𝔫","𝒏","𝘯","𝓃","𝙣","𝐧","𝗇","𝞰","𝜼","🄽","Ⓝ","ⓝ"],o:["o","𝑜","𝗼","𝕠","𝖔","𝓸","𝚘","ο","о","𝔬","𝒐","𝘰","𝙤","𝝈","𝐨","𝗈","𝜽","𝝄","𝝓","𝝑","𝝋","🄾","🅾️","🅾","Ⓞ","ⓞ"],p:["p","𝑝","𝗽","𝕡","𝖕","𝓹","𝚙","ρ","р","𝔭","𝒑","𝘱","𝓅","𝙥","𝐩","𝗉","𝝆","🄿","🅿️","🅿","Ⓟ","ⓟ"],q:["q","𝑞","𝗾","𝕢","𝖖","𝓺","𝚚","ԛ","𝔮","𝒒","𝘲","𝓆","𝙦","𝐪","𝗊","🅀","Ⓠ","ⓠ"],r:["r","𝑟","𝗿","𝕣","𝖗","𝓻","𝚛","г","𝔯","𝒓","𝘳","𝓇","𝙧","𝐫","𝗋","𝞽","🅁","Ⓡ","ⓡ"],s:["s","𝑠","𝗌","𝕤","𝖘","𝓼","𝚜","ѕ","𝔰","𝒔","𝘴","𝓈","𝙨","𝐬","🅂","Ⓢ","ⓢ","$"],t:["t","𝑡","𝗍","𝕥","𝖙","𝓽","𝚝","τ","т","𝔱","𝒕","𝘵","𝓉","𝙩","𝐭","𝝉","🅃","Ⓣ","ⓣ","+"],u:["u","𝑢","𝗎","𝕦","𝖚","𝓾","𝚞","υ","𝔲","𝒖","𝘶","𝓊","𝙪","𝐮","𝛍","🅄","Ⓤ","ⓤ"],v:["v","𝑣","𝗏","𝕧","𝖛","𝓿","𝚟","ν","𝔳","𝒗","𝘷","𝓋","𝙫","𝐯","𝞶","𝝂","𝝊","🅅","Ⓥ","ⓥ"],w:["w","𝑤","𝗐","𝕨","𝖜","𝔀","𝚠","ω","ш","𝔴","𝒘","𝘸","𝓌","𝙬","𝐰","𝝎","𝝍","🅆","Ⓦ","ⓦ"],x:["x","𝑥","𝗑","𝕩","𝖝","𝔁","𝚡","χ","х","𝔵","𝒙","𝘹","𝓍","𝙭","𝐱","𝝒","𝝌","🅇","Ⓧ","ⓧ"],y:["y","𝑦","𝗒","𝕪","𝖞","𝔂","𝚢","у","𝔶","𝒚","𝘺","𝓎","𝙮","𝐲","𝞬","𝜸","𝞴","🅈","Ⓨ","ⓨ"],z:["z","𝑧","𝗓","𝕫","𝖟","𝔃","𝚣","ζ","𝔷","𝒛","𝘻","𝓏","𝙯","𝐳","🅉","Ⓩ","ⓩ"],0:["0","𝟎","𝟬","𝟢"],1:["1","𝟏","𝟭","𝟣","①","➀","❶","➊","⓵"],2:["2","𝟐","𝟮","𝟤","②","➁","❷","➋","⓶"],3:["3","𝟑","𝟯","𝟥","③","➂","❸","➌","⓷"],4:["4","𝟒","𝟰","𝟦","④","➃","❹","➍","⓸","ᛋ"],5:["5","𝟓","𝟱","𝟧","⑤","➄","❺","➎","⓹"],6:["6","𝟔","𝟲","𝟨","⑥","➅","❻","➏","⓺"],7:["7","𝟕","𝟳","𝟩","⑦","➆","❼","➐","⓻"],8:["8","𝟖","𝟴","𝟪","⑧","➇","❽","➑","⓼"],9:["9","𝟗","𝟵","𝟫","⑨","➈","❾","➒","⓽"]})},4712(e,t){function n(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function s(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Logger=void 0;var i=new WeakSet;function a(e,t,n=!1){const s=(new Date).toISOString();this.logs.push({type:e,timestamp:s,message:t,expected:n})}t.Logger=class{constructor(){n(this,i),this.logs=[]}getLogs(){return[...this.logs]}log(e,t){s(i,this,a).call(this,"log",e,t)}warn(e,t){s(i,this,a).call(this,"warn",e,t)}error(e,t){s(i,this,a).call(this,"error",e,t)}dev(e,t){s(i,this,a).call(this,"dev",e,t)}}},9501(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.StorageManager=void 0;var s,i,a,r=n(4712),o=n(4029);n(9458),n(7345),n(7704),n(8415);class l{static get versions(){return new Map([[0,o.Version.v0],[1,o.Version.v1],[2,o.Version.v2],[3,o.Version.v3]])}constructor(){this.reset(new r.Logger)}reset(e){return null==e||e.log("Resetting storage to default."),this.data=l.version.default,l.version.init(e,this.data),l.version.validate(),l.version.construct(),this.data}load(e={}){var t,n;const s=new r.Logger;let i=null!==(n=(t=e).version)&&void 0!==n?n:t.version=0;if(i>l.version.number)return window.alert("The storage data is from a newer version of WikiShield. Please update to the latest version so that your data can be loaded correctly."),void window.location.reload();if(l.versions.has(i)){const t=l.version.number;for(;i!==t;){const t=l.versions.get(i+1);if(!("function"==typeof(null==t?void 0:t.constructor)&&new t instanceof o.Version)){s.dev("[MISSING_UPGRADE_METHOD] Uh oh! Something has gone wrong; this message should never appear. Please report this to the WikiShield developers."),e=this.reset(s);break}s.log(`Upgrading storage from version ${i} to ${i+1}`,!0);try{if(!t.init(s,e)){e=this.reset(s);break}(e=t.upgrade()).version=++i}catch(t){s.error(`Error upgrading storage from version ${i} to ${i+1}: ${t}`),e=this.reset(s);break}}i=e.version,s.log(`Initializing storage at version ${i}.`,!0),l.version.init(s,e),s.log(`Validating storage at version ${i}.`,!0),l.version.validate(),s.log(`Constructing storage at version ${i}.`,!0),e=l.version.construct(),s.log(`Storage loaded successfully at version ${i}.`,!0),this.data=e}else s.error(`Storage version ${i} is corrupted or unsupported.`),this.reset(s);return{data:this.data,logs:s.getLogs()}}save(){const e=new r.Logger,t=l.version.number;e.log(`Initializing storage at version ${t}.`,!0),l.version.init(e,this.data),e.log(`Deconstructing storage at version ${t}.`,!0);const n=l.version.deconstruct();return e.log(`Storage saved successfully at version ${t}.`,!0),{data:n,logs:e.getLogs()}}decode(e){try{return this.load(JSON.parse(atob(e.trim()||"e30=")))}catch(e){return this.load({})}}encode(){const{data:e,logs:t}=this.save();return{string:btoa(JSON.stringify(e)),logs:t}}static output(e,t="<unknown>",n=console){var s;const i=!e.some(e=>!e.expected);null==n||null===(s=n.log)||void 0===s||s.call(n,`[${i?" ":"X"}] WikiShield Storage Logs: ${t}`);for(const t of e){var a;let e=`[${t.expected?" ":"X"}][${t.timestamp}][Storage]`,s=t.type;"dev"===s&&(s="error",e=`#DEV# ${e}`),null==n||null===(a=n[s])||void 0===a||a.call(n,`${e} ${t.message}`)}}static okay(e,t=console){var n,s,i,a;null!=e||(e=(new l).load(l.versions.get(0).default));const r=!(null===(n=null===(s=e.logs)||void 0===s||null===(i=s.some)||void 0===i?void 0:i.call(s,e=>!e.expected))||void 0===n||n);return r||(null!==(a=void l.output(e.logs,"Storage Check",t))&&void 0!==a?a:r)}}t.StorageManager=l,s=l,i="version",a=o.Version.v3,(i=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(i))in s?Object.defineProperty(s,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[i]=a},330(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isURL=t.isObject=void 0;t.isObject=e=>null!==e&&"object"==typeof e&&!Array.isArray(e);t.isURL=e=>{try{return new URL(e),!0}catch(e){return!1}}},4029(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Version=void 0;var s=n(4712),i=n(330);function a(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class r{static sanitize(e,t,n=null){var s;const i=e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.loadedData);if(void 0===i)return null!==(s=void this.loadedLogger.warn(`Missing expected key path [ ${e.join(" -> ")} ] in stored data, defaulting to fallback value.`))&&void 0!==s?s:t;if("function"==typeof n){var a;const s=n(i);return void 0===s?null!==(a=void this.loadedLogger.warn(`Invalid value at key path [ ${e.join(" -> ")} ] in stored data, defaulting to fallback value.`))&&void 0!==a?a:t:s}return i}static exists(...e){return void 0!==e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.loadedData)}static deprecated(...e){var t;return!!this.exists(...e)&&(null===(t=void this.loadedLogger.warn(`Skipped deprecated key path [ ${e.join(" -> ")} ] in stored data.`,!0))||void 0===t||t)}static reset(...e){this.loadedLogger.warn(`Resetting key path [ ${e.join(" -> ")} ] in stored data to default value.`);const t=e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.default);if(void 0===t)return void this.loadedLogger.dev(`Could not find default value for key path [ ${e.join(" -> ")} ] in stored data.`);const n=e.pop();e.reduce((e,t)=>(void 0===e[t]&&(e[t]={}),e[t]),this.loadedData)[n]=t}static restrictObject(e,...t){var n;if(!(0,i.isObject)(e))return null!==(n=void this.reset(...t))&&void 0!==n&&n;const s=Object.keys(t.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.default));return Object.keys(e).forEach(n=>{s.includes(n)||(this.loadedLogger.warn(`Removing unexpected key [ ${[...t,n].join(" -> ")} ] from stored data.`),delete e[n])}),!0}static get default(){return{}}static init(e,t){return this.loadedLogger=e,this.loadedData=t,!0}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");return{}}static validate(){var e;const t=this.loadedData;return this.restrictObject(t),t.version===this.number||null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e}}t.Version=r,a(r,"loadedLogger",new s.Logger),a(r,"loadedData",{}),a(r,"number",0)},9458(e,t,n){var s,i,a,r,o=n(4029);o.Version.v0=(s=class extends o.Version{static get default(){return{version:0,changelog:"0",options:{maxQueueSize:50,maxEditCount:50,minimumORESScore:0,enableSoundAlerts:!0,soundAlertORESScore:.95,enableUsernameHighlighting:!0,enableWelcomeLatin:!1,enableAutoWelcome:!1,enableEditAnalysis:!1,enableUsernameAnalysis:!1,enableAutoReporting:!0,selectedAutoReportReasons:{Vandalism:!0,"Subtle vandalism":!0,"Image vandalism":!0,Sandbox:!0,Unsourced:!0,"Unsourced (BLP)":!0,"Unsourced genre":!0,POV:!1,Commentary:!0,"AI-generated":!0,"AI-generated (talk)":!0,"MOS violation":!1,Censoring:!1,Disruption:!0,Deleting:!0,Errors:!0,"Editing tests":!0,Chatting:!1,Jokes:!0,Owning:!1,Advertising:!0,"Spam links":!0,"Personal attacks":!0,TPO:!0,"AfD removal":!0},zen:{enabled:!1,sounds:!0,watchlist:!1,notifications:!0,editCount:!1,toasts:!1},enableCloudStorage:!0,masterVolume:.5,volumes:{click:.5,notification:.5,watchlist:.5,alert:.5,whoosh:.5,warn:.5,rollback:.5,report:.5,thank:.5,protection:.5,block:.5,sparkle:.5,success:.5,error:.5},soundMappings:{click:"click",notification:"notify",watchlist:"ping",alert:"alert",whoosh:"whoosh",warn:"warn",rollback:"rollback",report:"report",thank:"thank",protection:"protection",block:"block",sparkle:"sparkle",success:"success",error:"error"},watchlistExpiry:"1 week",whitelistExpiry:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlightedExpiry:{users:"1 week",pages:"1 week",tags:"1 week"},wiki:"en",namespacesShown:[0],showTemps:!0,showUsers:!0,sortQueueItems:!0,enableOllamaAI:!1,ollamaServerUrl:"http://localhost:11434",ollamaModel:"",controlScripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warningType:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"if",condition:"operatorNonAdmin",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Mentor"}}]}],selectedPalette:0,theme:"theme-light"},statistics:{reviewed:0,reverts:0,reverts:0,reports:0,warnings:0,welcomes:0,whitelisted:0,highlighted:0,blocks:0,sessionStart:Date.now()},whitelist:{users:[],pages:[],tags:[]},highlighted:{users:[],pages:[],tags:[]},queueWidth:"15vw",detailsWidth:"15vw"}}},i=s,r=0,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7345(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(4029);g.Version.v1=(s=class extends g.Version{static get default(){return{version:1,changelog:"3",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,recent:{enabled:!0,order:0},flagged:{enabled:!0,order:1},users:{enabled:!0,order:2},watchlist:{enabled:!0,order:3}},cloud_storage:{enabled:!0},username_highlighting:{enabled:!0,fuzzy:!0},auto_welcome:{enabled:!0},expiry:{watchlist:"1 week",whitelist:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlight:{users:"1 week",pages:"1 week",tags:"1 week"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Unsourced","Unsourced (BLP)","Unsourced genre","Commentary","AI-generated","AI-generated (talk)","Censoring",,"Disruption","Deleting","Errors","Editing tests","Jokes","Advertising","Spam links","Personal attacks","TPO","AfD removal"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.notice":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},notices:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}}},UI:{theme:{palette:0},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warningType:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"if",condition:"operatorNonAdmin",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Auto"}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");this.deprecated("options","enableWelcomeLatin"),this.deprecated("options","volumes","whoosh"),this.deprecated("options","volumes","warn"),this.deprecated("options","volumes","rollback"),this.deprecated("options","volumes","thank"),this.deprecated("options","volumes","sparkle"),this.deprecated("options","volumes","watchlist"),this.deprecated("options","volumes","success"),this.deprecated("options","volumes","error"),this.deprecated("options","soundMappings"),this.deprecated("options","wiki"),this.deprecated("options","showTemps"),this.deprecated("options","showUsers"),this.deprecated("options","sortQueueItems"),this.deprecated("options","theme"),this.deprecated("options","zen","editCount"),this.deprecated("options","zen","watchlist");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:e.settings.performance.startup},namespaces:this.sanitize(["options","namespacesShown"],e.settings.namespaces),queue:{max_size:this.sanitize(["options","maxQueueSize"],e.settings.queue.max_size),max_edits:this.sanitize(["options","maxEditCount"],e.settings.queue.max_edits),min_ores:this.sanitize(["options","minimumORESScore"],e.settings.queue.min_ores),recent:{enabled:e.settings.queue.recent.enabled,order:e.settings.queue.recent.order},flagged:{enabled:e.settings.queue.flagged.enabled,order:e.settings.queue.flagged.order},users:{enabled:e.settings.queue.users.enabled,order:e.settings.queue.users.order},watchlist:{enabled:e.settings.queue.watchlist.enabled,order:e.settings.queue.watchlist.order}},cloud_storage:{enabled:this.sanitize(["options","enableCloudStorage"],e.settings.cloud_storage.enabled)},username_highlighting:{enabled:this.sanitize(["options","enableUsernameHighlighting"],e.settings.username_highlighting.enabled),fuzzy:e.settings.username_highlighting.fuzzy},auto_welcome:{enabled:this.sanitize(["options","enableAutoWelcome"],e.settings.auto_welcome.enabled)},expiry:{watchlist:this.sanitize(["options","watchlistExpiry"],e.settings.expiry.watchlist),whitelist:{users:this.sanitize(["options","whitelistExpiry","users"],e.settings.expiry.whitelist.users),pages:this.sanitize(["options","whitelistExpiry","pages"],e.settings.expiry.whitelist.pages),tags:this.sanitize(["options","whitelistExpiry","tags"],e.settings.expiry.whitelist.tags)},highlight:{users:this.sanitize(["options","highlightedExpiry","users"],e.settings.expiry.highlight.users),pages:this.sanitize(["options","highlightedExpiry","pages"],e.settings.expiry.highlight.pages),tags:this.sanitize(["options","highlightedExpiry","tags"],e.settings.expiry.highlight.tags)}},auto_report:{enabled:this.sanitize(["options","enableAutoReporting"],e.settings.auto_report.enabled),for:this.sanitize(["options","selectedAutoReportReasons"],e.settings.auto_report.for,e=>{if((0,o.isObject)(e))return e["AI-generated"]=e["AI-Generated"],delete e["AI-Generated"],e["AI-generated (talk)"]=e["AI-Generated (talk)"],delete e["AI-Generated (talk)"],Object.keys(e).filter(t=>!0===(null==e?void 0:e[t]))})},AI:{enabled:this.sanitize(["options","enableOllamaAI"],e.settings.AI.enabled),provider:e.settings.AI.provider,edit_analysis:{enabled:this.sanitize(["options","enableEditAnalysis"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["options","enableUsernameAnalysis"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["options","ollamaServerUrl"],e.settings.AI.Ollama.server),model:this.sanitize(["options","ollamaModel"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["options","enableSoundAlerts"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["options","soundAlertORESScore"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["options","masterVolume"],e.settings.audio.volume.master),"master.startup":e.settings.audio.volume["master.startup"],"master.music":e.settings.audio.volume["master.music"],"master.music.zen_mode":e.settings.audio.volume["master.music.zen_mode"],"master.ui":e.settings.audio.volume["master.ui"],"master.ui.click":this.sanitize(["options","volumes","click"],e.settings.audio.volume["master.ui.click"]),"master.queue":e.settings.audio.volume["master.queue"],"master.queue.ores":this.sanitize(["options","volumes","alert"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":e.settings.audio.volume["master.queue.mention"],"master.notification":e.settings.audio.volume["master.notification"],"master.notification.alert":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.alert"]),"master.notification.notice":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.notice"]),"master.notification.toast":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.toast"]),"master.action":e.settings.audio.volume["master.action"],"master.action.default":e.settings.audio.volume["master.action.default"],"master.action.failed":e.settings.audio.volume["master.action.failed"],"master.action.report":this.sanitize(["options","volumes","report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["options","volumes","block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["options","volumes","protection"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["options","zen","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["options","zen","sounds"],e.settings.zen_mode.sound.enabled)},music:{enabled:e.settings.zen_mode.music.enabled},alerts:{enabled:this.sanitize(["options","zen","notifications"],e.settings.zen_mode.alerts.enabled)},notices:{enabled:this.sanitize(["options","zen","notifications"],e.settings.zen_mode.notices.enabled)},toasts:{enabled:this.sanitize(["options","zen","toasts"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:e.settings.zen_mode.badges.enabled}}},UI:{theme:{palette:this.sanitize(["options","selectedPalette"],e.UI.theme.palette)},queue:{width:this.sanitize(["queueWidth"],e.UI.queue.width)},details:{width:this.sanitize(["detailsWidth"],e.UI.details.width)}},control_scripts:this.sanitize(["options","controlScripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name){if(!(e.condition in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else switch(e.name){case"welcome":if(!(0,o.isObject)(e.params))return!0;switch(e.params.template){case"Links":e.params.template="Graphical";break;case"Latin":e.params.template="Non-Latin";break;case"Mentor":return this.loadedLogger.warn(`Skipped deprecated "Mentor" welcome template at key [${[...n,s,"params","template"].join(" -> ")}].`,!0),!1}break;case"warn":if(!(0,o.isObject)(e.params))return!0;switch(e.params.warningType){case"AI-Generated":e.params.warningType="AI-generated";break;case"AI-Generated (talk)":e.params.warningType="AI-generated (talk)"}}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:e.statistics.edits_reviewed.total,thanked:e.statistics.edits_reviewed.thanked},recent_changes_reviewed:{total:e.statistics.recent_changes_reviewed.total},pending_changes_reviewed:{total:e.statistics.pending_changes_reviewed.total,accepted:e.statistics.pending_changes_reviewed.accepted,rejected:e.statistics.pending_changes_reviewed.rejected},watchlist_changes_reviewed:{total:e.statistics.watchlist_changes_reviewed.total},users_reviewed:{total:e.statistics.users_reviewed.total},reverts_made:{total:e.statistics.reverts_made.total,good_faith:e.statistics.reverts_made.good_faith,from_recent_changes:e.statistics.reverts_made.from_recent_changes,from_pending_changes:e.statistics.reverts_made.from_pending_changes,from_watchlist:e.statistics.reverts_made.from_watchlist,from_loaded_edits:e.statistics.reverts_made.from_loaded_edits},users_welcomed:{total:e.statistics.users_welcomed.total},warnings_issued:{total:e.statistics.warnings_issued.total,level_1:e.statistics.warnings_issued.level_1,level_2:e.statistics.warnings_issued.level_2,level_3:e.statistics.warnings_issued.level_3,level_4:e.statistics.warnings_issued.level_4,level_4im:e.statistics.warnings_issued.level_4im},reports_filed:{total:e.statistics.reports_filed.total,AIV:e.statistics.reports_filed.AIV,UAA:e.statistics.reports_filed.UAA,RFPP:e.statistics.reports_filed.RFPP},watchlist:{watched:e.statistics.watchlist.watched,unwatched:e.statistics.watchlist.unwatched},items_whitelisted:{total:e.statistics.items_whitelisted.total,users:e.statistics.items_whitelisted.users,pages:e.statistics.items_whitelisted.pages,tags:e.statistics.items_whitelisted.tags},items_highlighted:{total:e.statistics.items_highlighted.total,users:e.statistics.items_highlighted.users,pages:e.statistics.items_highlighted.pages,tags:e.statistics.items_highlighted.tags},blocks_issued:{total:e.statistics.blocks_issued.total},pages_protected:{total:e.statistics.pages_protected.total},actions_executed:{total:e.statistics.actions_executed.total,successful:e.statistics.actions_executed.successful},session_time:e.statistics.session_time},highlight:{users:this.sanitize(["highlighted","users"],e.highlight.users),pages:this.sanitize(["highlighted","pages"],e.highlight.pages),tags:this.sanitize(["highlighted","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),t.version!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const g=t.settings.namespaces;Array.isArray(g)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const h=t.settings.queue;this.restrictObject(h,"settings","queue");{const m=t.settings.queue.max_size;"number"==typeof m&&Number.isInteger(m)&&m>0||this.reset("settings","queue","max_size")}{const v=t.settings.queue.max_edits;"number"==typeof v&&Number.isInteger(v)&&v>0||this.reset("settings","queue","max_edits")}{const f=t.settings.queue.min_ores;"number"==typeof f&&f>=0&&f<=1||this.reset("settings","queue","min_ores")}["recent","flagged","users","watchlist"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const b=t.settings.cloud_storage;this.restrictObject(b,"settings","cloud_storage");"boolean"!=typeof t.settings.cloud_storage.enabled&&this.reset("settings","cloud_storage","enabled")}{const w=t.settings.username_highlighting;this.restrictObject(w,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const y=t.settings.auto_welcome;this.restrictObject(y,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const x=new Set(["none","1 hour","1 day","1 week","1 month","3 months","6 months","indefinite"]),k=t.settings.expiry;this.restrictObject(k,"settings","expiry");{const _=t.settings.expiry.watchlist;x.has(_)||this.reset("settings","expiry","watchlist")}{const S=t.settings.expiry.whitelist;this.restrictObject(S,"settings","expiry","whitelist");{const q=t.settings.expiry.whitelist.users;x.has(q)||this.reset("settings","expiry","whitelist","users")}{const E=t.settings.expiry.whitelist.pages;x.has(E)||this.reset("settings","expiry","whitelist","pages")}{const L=t.settings.expiry.whitelist.tags;x.has(L)||this.reset("settings","expiry","whitelist","tags")}}{const A=t.settings.expiry.highlight;this.restrictObject(A,"settings","expiry","highlight");{const T=t.settings.expiry.highlight.users;x.has(T)||this.reset("settings","expiry","highlight","users")}{const C=t.settings.expiry.highlight.pages;x.has(C)||this.reset("settings","expiry","highlight","pages")}{const z=t.settings.expiry.highlight.tags;x.has(z)||this.reset("settings","expiry","highlight","tags")}}}{const $=t.settings.auto_report;this.restrictObject($,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const M=t.settings.auto_report.for;Array.isArray(M)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const O=t.settings.AI;this.restrictObject(O,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const I=t.settings.AI.edit_analysis;this.restrictObject(I,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const P=t.settings.AI.username_analysis;this.restrictObject(P,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const j=t.settings.AI.Ollama;this.restrictObject(j,"settings","AI","Ollama");{const W=t.settings.AI.Ollama.server;(0,o.isURL)(W)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const N=t.settings.audio;this.restrictObject(N,"settings","audio");{const D=t.settings.audio.ores_alert;this.restrictObject(D,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const R=t.settings.audio.ores_alert.threshold;"number"==typeof R&&R>=0&&R<=1||this.reset("settings","audio","ores_alert","threshold")}}{const U=t.settings.audio.volume;this.restrictObject(U,"settings","audio","volume");const H=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.notice","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const F of H){const V=t.settings.audio.volume[F];"number"==typeof V&&V>=0&&V<=1||this.reset("settings","audio","volume",F)}}}{const B=t.settings.zen_mode;this.restrictObject(B,"settings","zen_mode");"boolean"!=typeof B.enabled&&this.reset("settings","zen_mode","enabled");{const G=t.settings.zen_mode.sound;this.restrictObject(G,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const Q=t.settings.zen_mode.music;this.restrictObject(Q,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const Y=t.settings.zen_mode.alerts;this.restrictObject(Y,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const Z=t.settings.zen_mode.notices;this.restrictObject(Z,"settings","zen_mode","notices");"boolean"!=typeof t.settings.zen_mode.notices.enabled&&this.reset("settings","zen_mode","notices","enabled")}{const K=t.settings.zen_mode.toasts;this.restrictObject(K,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const X=t.settings.zen_mode.badges;this.restrictObject(X,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}}{const J=t.UI;this.restrictObject(J,"UI");{const ee=t.UI.theme;this.restrictObject(ee,"UI","theme");{const te=t.UI.theme.palette;"number"==typeof te&&Number.isInteger(te)&&te>=0&&te<=3||this.reset("UI","theme","palette")}}{const ne=t.UI.queue;this.restrictObject(ne,"UI","queue");{const se=t.UI.queue.width;"string"==typeof se&&se.endsWith("vw")||this.reset("UI","queue","width");const ie=parseFloat(se.slice(0,-2));"number"==typeof ie&&!isNaN(ie)&&ie>=10&&ie<=30||this.reset("UI","queue","width")}}{const ae=t.UI.details;this.restrictObject(ae,"UI","details");{const re=t.UI.details.width;"string"==typeof re&&re.endsWith("vw")||this.reset("UI","details","width");const oe=parseFloat(re.slice(0,-2));"number"==typeof oe&&!isNaN(oe)&&oe>=10&&oe<=30||this.reset("UI","details","width")}}}{const le=t.control_scripts;function de(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name){var i;if(!(e.condition in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${e.condition} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]),e.actions=de.call(this,e.actions,...t,n,"actions")}else{var a;if(!(e.name in c.events))return this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`),!1;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=null!==(a=c.events[e.name].parameters)&&void 0!==a?a:[],i=new Set;for(const a of s)i.add(a.id),"choice"===a.type&&(a.id in e.params||(this.loadedLogger.warn(`Resetting missing choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]),a.options.includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]));for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(le)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>p.controls.has(e)),t.control_scripts[n].actions=de.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const ce=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,ue=t.statistics;this.restrictObject(ue,"statistics");{const pe=t.statistics.edits_reviewed;this.restrictObject(pe,"statistics","edits_reviewed");ce(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");ce(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const ge=t.statistics.recent_changes_reviewed;this.restrictObject(ge,"statistics","recent_changes_reviewed");ce(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const he=t.statistics.pending_changes_reviewed;this.restrictObject(he,"statistics","pending_changes_reviewed");ce(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");ce(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");ce(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const me=t.statistics.watchlist_changes_reviewed;this.restrictObject(me,"statistics","watchlist_changes_reviewed");ce(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const ve=t.statistics.users_reviewed;this.restrictObject(ve,"statistics","users_reviewed");ce(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const fe=t.statistics.reverts_made;this.restrictObject(fe,"statistics","reverts_made");ce(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");ce(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");ce(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");ce(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");ce(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");ce(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const be=t.statistics.users_welcomed;this.restrictObject(be,"statistics","users_welcomed");ce(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const we=t.statistics.warnings_issued;this.restrictObject(we,"statistics","warnings_issued");ce(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");ce(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");ce(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");ce(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");ce(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");ce(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const ye=t.statistics.reports_filed;this.restrictObject(ye,"statistics","reports_filed");ce(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");ce(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");ce(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");ce(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP")}{const xe=t.statistics.watchlist;this.restrictObject(xe,"statistics","watchlist");ce(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");ce(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const ke=t.statistics.items_whitelisted;this.restrictObject(ke,"statistics","items_whitelisted");ce(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");ce(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");ce(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");ce(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const _e=t.statistics.items_highlighted;this.restrictObject(_e,"statistics","items_highlighted");ce(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");ce(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");ce(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");ce(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const Se=t.statistics.blocks_issued;this.restrictObject(Se,"statistics","blocks_issued");ce(t.statistics.blocks_issued.total)||this.reset("statistics","blocks_issued","total")}{const qe=t.statistics.pages_protected;this.restrictObject(qe,"statistics","pages_protected");ce(t.statistics.pages_protected.total)||this.reset("statistics","pages_protected","total")}{const Ee=t.statistics.actions_executed;this.restrictObject(Ee,"statistics","actions_executed");ce(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");ce(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const Le=t.statistics.session_time;"number"==typeof Le&&Le>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const Ae=t.highlight;this.restrictObject(Ae,"highlight");{const Te=t.highlight.users;Array.isArray(Te)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const Ce=t.highlight.pages;Array.isArray(Ce)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const ze=t.highlight.tags;Array.isArray(ze)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const $e=t.whitelist;this.restrictObject($e,"whitelist");{const Me=t.whitelist.users;Array.isArray(Me)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const Oe=t.whitelist.pages;Array.isArray(Oe)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const Ie=t.whitelist.tags;Array.isArray(Ie)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=1,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7704(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(4029);g.Version.v2=(s=class extends g.Version{static get default(){return{version:2,changelog:"6",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,recent:{enabled:!0,order:0},flagged:{enabled:!0,order:1},users:{enabled:!0,order:2},watchlist:{enabled:!0,order:3}},cloud_storage:{enabled:!0},username_highlighting:{enabled:!0,fuzzy:!0},wikipedia_popups:{enabled:!0},auto_welcome:{enabled:!1},expiry:{watchlist:"1 week",whitelist:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlight:{users:"1 week",pages:"1 week",tags:"1 week"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Deliberate errors","Disruptive editing","Editing tests","Commentary","Inappropriate jokes","Deleting","Unsourced","Unsourced (BLP)","Unsourced genre","Original research","Censoring","AI-generated","AI-generated (talk)","Personal attacks","Harassment","TPO",,"AfD removal","Advertising","Spam links","Inappropriate edit summary","Misleading edit summary"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.notice":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},notices:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}},repeat_control_scripts:!0},UI:{theme:{palette:0},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warning:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Auto"}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]},favorite:{warnings:[],reverts:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:this.sanitize(["settings","performance","startup"],e.settings.performance.startup)},namespaces:this.sanitize(["settings","namespaces"],e.settings.namespaces),queue:{max_size:this.sanitize(["settings","queue","max_size"],e.settings.queue.max_size),max_edits:this.sanitize(["settings","queue","max_edits"],e.settings.queue.max_edits),min_ores:this.sanitize(["settings","queue","min_ores"],e.settings.queue.min_ores),recent:{enabled:this.sanitize(["settings","queue","recent","enabled"],e.settings.queue.recent.enabled),order:this.sanitize(["settings","queue","recent","order"],e.settings.queue.recent.order)},flagged:{enabled:this.sanitize(["settings","queue","flagged","enabled"],e.settings.queue.flagged.enabled),order:this.sanitize(["settings","queue","flagged","order"],e.settings.queue.flagged.order)},users:{enabled:this.sanitize(["settings","queue","users","enabled"],e.settings.queue.users.enabled),order:this.sanitize(["settings","queue","users","order"],e.settings.queue.users.order)},watchlist:{enabled:this.sanitize(["settings","queue","watchlist","enabled"],e.settings.queue.watchlist.enabled),order:this.sanitize(["settings","queue","watchlist","order"],e.settings.queue.watchlist.order)}},cloud_storage:{enabled:this.sanitize(["settings","cloud_storage","enabled"],e.settings.cloud_storage.enabled)},username_highlighting:{enabled:this.sanitize(["settings","username_highlighting","enabled"],e.settings.username_highlighting.enabled),fuzzy:this.sanitize(["settings","username_highlighting","fuzzy"],e.settings.username_highlighting.fuzzy)},wikipedia_popups:{enabled:e.settings.wikipedia_popups.enabled},auto_welcome:{enabled:this.sanitize(["settings","auto_welcome","enabled"],e.settings.auto_welcome.enabled)},expiry:{watchlist:this.sanitize(["settings","expiry","watchlist"],e.settings.expiry.watchlist),whitelist:{users:this.sanitize(["settings","expiry","whitelist","users"],e.settings.expiry.whitelist.users),pages:this.sanitize(["settings","expiry","whitelist","pages"],e.settings.expiry.whitelist.pages),tags:this.sanitize(["settings","expiry","whitelist","tags"],e.settings.expiry.whitelist.tags)},highlight:{users:this.sanitize(["settings","expiry","highlight","users"],e.settings.expiry.highlight.users),pages:this.sanitize(["settings","expiry","highlight","pages"],e.settings.expiry.highlight.pages),tags:this.sanitize(["settings","expiry","highlight","tags"],e.settings.expiry.highlight.tags)}},auto_report:{enabled:this.sanitize(["settings","auto_report","enabled"],e.settings.auto_report.enabled),for:this.sanitize(["settings","auto_report","for"],e.settings.auto_report.for,e=>{if(!Array.isArray(e))return;const t=new Set(["Harassment","Inappropriate edit summary","Original research"]);return e.forEach(e=>{switch(e){case"Errors":return void t.add("Deliberate errors");case"Disruption":return void t.add("Disruptive editing");case"Jokes":return void t.add("Inappropriate jokes")}t.add(e)}),[...t]})},AI:{enabled:this.sanitize(["settings","AI","enabled"],e.settings.AI.enabled),provider:this.sanitize(["settings","AI","provider"],e.settings.AI.provider),edit_analysis:{enabled:this.sanitize(["settings","AI","edit_analysis","enabled"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["settings","AI","username_analysis","enabled"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["settings","AI","Ollama","server"],e.settings.AI.Ollama.server),model:this.sanitize(["settings","AI","Ollama","model"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["settings","audio","ores_alert","enabled"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["settings","audio","ores_alert","threshold"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["settings","audio","volume","master"],e.settings.audio.volume.master),"master.startup":this.sanitize(["settings","audio","volume","master.startup"],e.settings.audio.volume["master.startup"]),"master.music":this.sanitize(["settings","audio","volume","master.music"],e.settings.audio.volume["master.music"]),"master.music.zen_mode":this.sanitize(["settings","audio","volume","master.music.zen_mode"],e.settings.audio.volume["master.music.zen_mode"]),"master.ui":this.sanitize(["settings","audio","volume","master.ui"],e.settings.audio.volume["master.ui"]),"master.ui.click":this.sanitize(["settings","audio","volume","master.ui.click"],e.settings.audio.volume["master.ui.click"]),"master.queue":this.sanitize(["settings","audio","volume","master.queue"],e.settings.audio.volume["master.queue"]),"master.queue.ores":this.sanitize(["settings","audio","volume","master.queue.ores"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":this.sanitize(["settings","audio","volume","master.queue.mention"],e.settings.audio.volume["master.queue.mention"]),"master.notification":this.sanitize(["settings","audio","volume","master.notification"],e.settings.audio.volume["master.notification"]),"master.notification.alert":this.sanitize(["settings","audio","volume","master.notification.alert"],e.settings.audio.volume["master.notification.alert"]),"master.notification.notice":this.sanitize(["settings","audio","volume","master.notification.notice"],e.settings.audio.volume["master.notification.notice"]),"master.notification.toast":this.sanitize(["settings","audio","volume","master.notification.toast"],e.settings.audio.volume["master.notification.toast"]),"master.action":this.sanitize(["settings","audio","volume","master.action"],e.settings.audio.volume["master.action"]),"master.action.default":this.sanitize(["settings","audio","volume","master.action.default"],e.settings.audio.volume["master.action.default"]),"master.action.failed":this.sanitize(["settings","audio","volume","master.action.failed"],e.settings.audio.volume["master.action.failed"]),"master.action.report":this.sanitize(["settings","audio","volume","master.action.report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["settings","audio","volume","master.action.block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["settings","audio","volume","master.action.protect"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["settings","zen_mode","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["settings","zen_mode","sound","enabled"],e.settings.zen_mode.sound.enabled)},music:{enabled:this.sanitize(["settings","zen_mode","music","enabled"],e.settings.zen_mode.music.enabled)},alerts:{enabled:this.sanitize(["settings","zen_mode","alerts","enabled"],e.settings.zen_mode.alerts.enabled)},notices:{enabled:this.sanitize(["settings","zen_mode","notices","enabled"],e.settings.zen_mode.notices.enabled)},toasts:{enabled:this.sanitize(["settings","zen_mode","toasts","enabled"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:this.sanitize(["settings","zen_mode","badges","enabled"],e.settings.zen_mode.badges.enabled)}},repeat_control_scripts:e.settings.repeat_control_scripts},UI:{theme:{palette:this.sanitize(["UI","theme","palette"],e.UI.theme.palette)},queue:{width:this.sanitize(["UI","queue","width"],e.UI.queue.width)},details:{width:this.sanitize(["UI","details","width"],e.UI.details.width)}},control_scripts:this.sanitize(["control_scripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name){if(!(e.condition in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else if("warn"===e.name){if(!(0,o.isObject)(e.params))return!0;e.params.warning=e.params.warningType,delete e.params.warningType}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:this.sanitize(["statistics","edits_reviewed","total"],e.statistics.edits_reviewed.total),thanked:this.sanitize(["statistics","edits_reviewed","thanked"],e.statistics.edits_reviewed.thanked)},recent_changes_reviewed:{total:this.sanitize(["statistics","recent_changes_reviewed","total"],e.statistics.recent_changes_reviewed.total)},pending_changes_reviewed:{total:this.sanitize(["statistics","pending_changes_reviewed","total"],e.statistics.pending_changes_reviewed.total),accepted:this.sanitize(["statistics","pending_changes_reviewed","accepted"],e.statistics.pending_changes_reviewed.accepted),rejected:this.sanitize(["statistics","pending_changes_reviewed","rejected"],e.statistics.pending_changes_reviewed.rejected)},watchlist_changes_reviewed:{total:this.sanitize(["statistics","watchlist_changes_reviewed","total"],e.statistics.watchlist_changes_reviewed.total)},users_reviewed:{total:this.sanitize(["statistics","users_reviewed","total"],e.statistics.users_reviewed.total)},reverts_made:{total:this.sanitize(["statistics","reverts_made","total"],e.statistics.reverts_made.total),good_faith:this.sanitize(["statistics","reverts_made","good_faith"],e.statistics.reverts_made.good_faith),from_recent_changes:this.sanitize(["statistics","reverts_made","from_recent_changes"],e.statistics.reverts_made.from_recent_changes),from_pending_changes:this.sanitize(["statistics","reverts_made","from_pending_changes"],e.statistics.reverts_made.from_pending_changes),from_watchlist:this.sanitize(["statistics","reverts_made","from_watchlist"],e.statistics.reverts_made.from_watchlist),from_loaded_edits:this.sanitize(["statistics","reverts_made","from_loaded_edits"],e.statistics.reverts_made.from_loaded_edits)},users_welcomed:{total:this.sanitize(["statistics","users_welcomed","total"],e.statistics.users_welcomed.total)},warnings_issued:{total:this.sanitize(["statistics","warnings_issued","total"],e.statistics.warnings_issued.total),level_1:this.sanitize(["statistics","warnings_issued","level_1"],e.statistics.warnings_issued.level_1),level_2:this.sanitize(["statistics","warnings_issued","level_2"],e.statistics.warnings_issued.level_2),level_3:this.sanitize(["statistics","warnings_issued","level_3"],e.statistics.warnings_issued.level_3),level_4:this.sanitize(["statistics","warnings_issued","level_4"],e.statistics.warnings_issued.level_4),level_4im:this.sanitize(["statistics","warnings_issued","level_4im"],e.statistics.warnings_issued.level_4im)},reports_filed:{total:this.sanitize(["statistics","reports_filed","total"],e.statistics.reports_filed.total),AIV:this.sanitize(["statistics","reports_filed","AIV"],e.statistics.reports_filed.AIV),UAA:this.sanitize(["statistics","reports_filed","UAA"],e.statistics.reports_filed.UAA),RFPP:this.sanitize(["statistics","reports_filed","RFPP"],e.statistics.reports_filed.RFPP)},watchlist:{watched:this.sanitize(["statistics","watchlist","watched"],e.statistics.watchlist.watched),unwatched:this.sanitize(["statistics","watchlist","unwatched"],e.statistics.watchlist.unwatched)},items_whitelisted:{total:this.sanitize(["statistics","items_whitelisted","total"],e.statistics.items_whitelisted.total),users:this.sanitize(["statistics","items_whitelisted","users"],e.statistics.items_whitelisted.users),pages:this.sanitize(["statistics","items_whitelisted","pages"],e.statistics.items_whitelisted.pages),tags:this.sanitize(["statistics","items_whitelisted","tags"],e.statistics.items_whitelisted.tags)},items_highlighted:{total:this.sanitize(["statistics","items_highlighted","total"],e.statistics.items_highlighted.total),users:this.sanitize(["statistics","items_highlighted","users"],e.statistics.items_highlighted.users),pages:this.sanitize(["statistics","items_highlighted","pages"],e.statistics.items_highlighted.pages),tags:this.sanitize(["statistics","items_highlighted","tags"],e.statistics.items_highlighted.tags)},blocks_issued:{total:this.sanitize(["statistics","blocks_issued","total"],e.statistics.blocks_issued.total)},pages_protected:{total:this.sanitize(["statistics","pages_protected","total"],e.statistics.pages_protected.total)},actions_executed:{total:this.sanitize(["statistics","actions_executed","total"],e.statistics.actions_executed.total),successful:this.sanitize(["statistics","actions_executed","successful"],e.statistics.actions_executed.successful)},session_time:this.sanitize(["statistics","session_time"],e.statistics.session_time)},highlight:{users:this.sanitize(["highlight","users"],e.highlight.users),pages:this.sanitize(["highlight","pages"],e.highlight.pages),tags:this.sanitize(["highlight","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)},favorite:{warnings:e.favorite.warnings,reverts:e.favorite.reverts}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),t.version!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const g=t.settings.namespaces;Array.isArray(g)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const h=t.settings.queue;this.restrictObject(h,"settings","queue");{const m=t.settings.queue.max_size;"number"==typeof m&&Number.isInteger(m)&&m>0||this.reset("settings","queue","max_size")}{const v=t.settings.queue.max_edits;"number"==typeof v&&Number.isInteger(v)&&v>0||this.reset("settings","queue","max_edits")}{const f=t.settings.queue.min_ores;"number"==typeof f&&f>=0&&f<=1||this.reset("settings","queue","min_ores")}["recent","flagged","users","watchlist"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const b=t.settings.cloud_storage;this.restrictObject(b,"settings","cloud_storage");"boolean"!=typeof t.settings.cloud_storage.enabled&&this.reset("settings","cloud_storage","enabled")}{const w=t.settings.username_highlighting;this.restrictObject(w,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const y=t.settings.wikipedia_popups;this.restrictObject(y,"settings","wikipedia_popups");"boolean"!=typeof t.settings.wikipedia_popups.enabled&&this.reset("settings","wikipedia_popups","enabled")}{const x=t.settings.auto_welcome;this.restrictObject(x,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const k=new Set(["none","1 hour","1 day","1 week","1 month","3 months","6 months","indefinite"]),_=t.settings.expiry;this.restrictObject(_,"settings","expiry");{const S=t.settings.expiry.watchlist;k.has(S)||this.reset("settings","expiry","watchlist")}{const q=t.settings.expiry.whitelist;this.restrictObject(q,"settings","expiry","whitelist");{const E=t.settings.expiry.whitelist.users;k.has(E)||this.reset("settings","expiry","whitelist","users")}{const L=t.settings.expiry.whitelist.pages;k.has(L)||this.reset("settings","expiry","whitelist","pages")}{const A=t.settings.expiry.whitelist.tags;k.has(A)||this.reset("settings","expiry","whitelist","tags")}}{const T=t.settings.expiry.highlight;this.restrictObject(T,"settings","expiry","highlight");{const C=t.settings.expiry.highlight.users;k.has(C)||this.reset("settings","expiry","highlight","users")}{const z=t.settings.expiry.highlight.pages;k.has(z)||this.reset("settings","expiry","highlight","pages")}{const $=t.settings.expiry.highlight.tags;k.has($)||this.reset("settings","expiry","highlight","tags")}}}{const M=t.settings.auto_report;this.restrictObject(M,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const O=t.settings.auto_report.for;Array.isArray(O)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const I=t.settings.AI;this.restrictObject(I,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const P=t.settings.AI.edit_analysis;this.restrictObject(P,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const j=t.settings.AI.username_analysis;this.restrictObject(j,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const W=t.settings.AI.Ollama;this.restrictObject(W,"settings","AI","Ollama");{const N=t.settings.AI.Ollama.server;(0,o.isURL)(N)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const D=t.settings.audio;this.restrictObject(D,"settings","audio");{const R=t.settings.audio.ores_alert;this.restrictObject(R,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const U=t.settings.audio.ores_alert.threshold;"number"==typeof U&&U>=0&&U<=1||this.reset("settings","audio","ores_alert","threshold")}}{const H=t.settings.audio.volume;this.restrictObject(H,"settings","audio","volume");const F=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.notice","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const V of F){const B=t.settings.audio.volume[V];"number"==typeof B&&B>=0&&B<=1||this.reset("settings","audio","volume",V)}}}{const G=t.settings.zen_mode;this.restrictObject(G,"settings","zen_mode");"boolean"!=typeof G.enabled&&this.reset("settings","zen_mode","enabled");{const Q=t.settings.zen_mode.sound;this.restrictObject(Q,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const Y=t.settings.zen_mode.music;this.restrictObject(Y,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const Z=t.settings.zen_mode.alerts;this.restrictObject(Z,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const K=t.settings.zen_mode.notices;this.restrictObject(K,"settings","zen_mode","notices");"boolean"!=typeof t.settings.zen_mode.notices.enabled&&this.reset("settings","zen_mode","notices","enabled")}{const X=t.settings.zen_mode.toasts;this.restrictObject(X,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const J=t.settings.zen_mode.badges;this.restrictObject(J,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}"boolean"!=typeof t.settings.repeat_control_scripts&&this.reset("settings","repeat_control_scripts")}{const ee=t.UI;this.restrictObject(ee,"UI");{const te=t.UI.theme;this.restrictObject(te,"UI","theme");{const ne=t.UI.theme.palette;"number"==typeof ne&&Number.isInteger(ne)&&ne>=0&&ne<=3||this.reset("UI","theme","palette")}}{const se=t.UI.queue;this.restrictObject(se,"UI","queue");{const ie=t.UI.queue.width;"string"==typeof ie&&ie.endsWith("vw")||this.reset("UI","queue","width");const ae=parseFloat(ie.slice(0,-2));"number"==typeof ae&&!isNaN(ae)&&ae>=10&&ae<=30||this.reset("UI","queue","width")}}{const re=t.UI.details;this.restrictObject(re,"UI","details");{const oe=t.UI.details.width;"string"==typeof oe&&oe.endsWith("vw")||this.reset("UI","details","width");const le=parseFloat(oe.slice(0,-2));"number"==typeof le&&!isNaN(le)&&le>=10&&le<=30||this.reset("UI","details","width")}}}{const de=t.control_scripts;function ce(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name){var i;if(!(e.condition in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${e.condition} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]),e.actions=ce.call(this,e.actions,...t,n,"actions")}else{var a,r;if(!(e.name in c.events))return null!==(a=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`))&&void 0!==a&&a;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=null!==(r=c.events[e.name].parameters)&&void 0!==r?r:[],i=new Set;for(const a of s)i.add(a.id),"choice"===a.type&&(a.id in e.params||(this.loadedLogger.warn(`Resetting missing choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]),a.options.includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]));for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(de)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>p.controls.has(e)),t.control_scripts[n].actions=ce.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const ue=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,pe=t.statistics;this.restrictObject(pe,"statistics");{const ge=t.statistics.edits_reviewed;this.restrictObject(ge,"statistics","edits_reviewed");ue(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");ue(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const he=t.statistics.recent_changes_reviewed;this.restrictObject(he,"statistics","recent_changes_reviewed");ue(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const me=t.statistics.pending_changes_reviewed;this.restrictObject(me,"statistics","pending_changes_reviewed");ue(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");ue(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");ue(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const ve=t.statistics.watchlist_changes_reviewed;this.restrictObject(ve,"statistics","watchlist_changes_reviewed");ue(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const fe=t.statistics.users_reviewed;this.restrictObject(fe,"statistics","users_reviewed");ue(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const be=t.statistics.reverts_made;this.restrictObject(be,"statistics","reverts_made");ue(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");ue(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");ue(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");ue(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");ue(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");ue(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const we=t.statistics.users_welcomed;this.restrictObject(we,"statistics","users_welcomed");ue(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const ye=t.statistics.warnings_issued;this.restrictObject(ye,"statistics","warnings_issued");ue(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");ue(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");ue(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");ue(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");ue(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");ue(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const xe=t.statistics.reports_filed;this.restrictObject(xe,"statistics","reports_filed");ue(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");ue(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");ue(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");ue(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP")}{const ke=t.statistics.watchlist;this.restrictObject(ke,"statistics","watchlist");ue(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");ue(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const _e=t.statistics.items_whitelisted;this.restrictObject(_e,"statistics","items_whitelisted");ue(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");ue(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");ue(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");ue(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const Se=t.statistics.items_highlighted;this.restrictObject(Se,"statistics","items_highlighted");ue(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");ue(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");ue(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");ue(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const qe=t.statistics.blocks_issued;this.restrictObject(qe,"statistics","blocks_issued");ue(t.statistics.blocks_issued.total)||this.reset("statistics","blocks_issued","total")}{const Ee=t.statistics.pages_protected;this.restrictObject(Ee,"statistics","pages_protected");ue(t.statistics.pages_protected.total)||this.reset("statistics","pages_protected","total")}{const Le=t.statistics.actions_executed;this.restrictObject(Le,"statistics","actions_executed");ue(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");ue(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const Ae=t.statistics.session_time;"number"==typeof Ae&&Ae>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const Te=t.highlight;this.restrictObject(Te,"highlight");{const Ce=t.highlight.users;Array.isArray(Ce)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const ze=t.highlight.pages;Array.isArray(ze)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const $e=t.highlight.tags;Array.isArray($e)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const Me=t.whitelist;this.restrictObject(Me,"whitelist");{const Oe=t.whitelist.users;Array.isArray(Oe)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const Ie=t.whitelist.pages;Array.isArray(Ie)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const Pe=t.whitelist.tags;Array.isArray(Pe)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}{const je=t.favorite;this.restrictObject(je,"favorite");{const We=t.favorite.warnings;Array.isArray(We)||this.reset("favorite","warnings"),t.favorite.warnings=t.favorite.warnings.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite warning [ ${e} ] from stored data.`),t})}{const Ne=t.favorite.reverts;Array.isArray(Ne)||this.reset("favorite","reverts"),t.favorite.reverts=t.favorite.reverts.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite revert [ ${e} ] from stored data.`),t})}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=2,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},8415(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(3241),h=n(5564),m=n(8469),v=n(4029);v.Version.v3=(s=class extends v.Version{static get default(){return{version:3,changelog:"6",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,ores_bias:.5,recent:{enabled:!0,order:0},pending:{enabled:!0,order:1},users:{enabled:!1,order:2},watchlist:{enabled:!0,order:3},abuselog:{enabled:!0,order:4}},username_highlighting:{enabled:!0,fuzzy:!1},wikipedia_popups:{enabled:!0},auto_welcome:{enabled:!1},talk_page_thanks_for_temporary_users:{enabled:!0},expiry:{watchlist:"1W",whitelist:{users:"infinity",pages:"infinity",tags:"infinity"},highlight:{users:"1W",pages:"1W",tags:"1W"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Deliberate errors","Disruptive editing","Editing tests","Commentary","Inappropriate jokes","Deleting","Unsourced","Unsourced (BLP)","Unsourced genre","Original research","Censoring","AI-generated","AI-generated (talk)","Personal attacks","Harassment","TPO","AfD removal","Advertising","Spam links","Attempt","Inappropriate edit summary","Misleading edit summary"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.message":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},messages:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}},accessibility:{colorblind:!1,dyslexia:!1,high_contrast:!1,reduce_motion:!1},repeat_control_scripts:!0},UI:{theme:{app:"auto",palette:"traffic"},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"," "],actions:[{name:"next-item",params:{}}]},{keys:["arrowleft"],actions:[{name:"previous-item",params:{}}]},{keys:["q"],actions:[{name:"next-item",params:{}},{name:"revert",params:{warning:"Vandalism"}},{name:"highlight-user",params:{}}]},{keys:["h"],actions:[{name:"open-page-history",params:{}}]},{keys:["c"],actions:[{name:"open-user-contributions",params:{}}]},{keys:["t"],actions:[{name:"thank-user",params:{}}]},{keys:["w"],actions:[{name:"welcome-user",params:{}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},abuselogs_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_abuselogs:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0,global_blocks:0,global_locks:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]},favorite:{warnings:[],reverts:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");this.deprecated("settings","cloud_storage");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:this.sanitize(["settings","performance","startup"],e.settings.performance.startup)},namespaces:this.sanitize(["settings","namespaces"],e.settings.namespaces),queue:{max_size:this.sanitize(["settings","queue","max_size"],e.settings.queue.max_size),max_edits:this.sanitize(["settings","queue","max_edits"],e.settings.queue.max_edits),min_ores:this.sanitize(["settings","queue","min_ores"],e.settings.queue.min_ores),ores_bias:e.settings.queue.ores_bias,recent:{enabled:this.sanitize(["settings","queue","recent","enabled"],e.settings.queue.recent.enabled),order:this.sanitize(["settings","queue","recent","order"],e.settings.queue.recent.order)},pending:{enabled:this.sanitize(["settings","queue","flagged","enabled"],e.settings.queue.pending.enabled),order:this.sanitize(["settings","queue","flagged","order"],e.settings.queue.pending.order)},users:{enabled:this.sanitize(["settings","queue","users","enabled"],e.settings.queue.users.enabled),order:this.sanitize(["settings","queue","users","order"],e.settings.queue.users.order)},watchlist:{enabled:this.sanitize(["settings","queue","watchlist","enabled"],e.settings.queue.watchlist.enabled),order:this.sanitize(["settings","queue","watchlist","order"],e.settings.queue.watchlist.order)},abuselog:{enabled:e.settings.queue.abuselog.enabled,order:e.settings.queue.abuselog.order}},username_highlighting:{enabled:this.sanitize(["settings","username_highlighting","enabled"],e.settings.username_highlighting.enabled),fuzzy:this.sanitize(["settings","username_highlighting","fuzzy"],e.settings.username_highlighting.fuzzy)},wikipedia_popups:{enabled:e.settings.wikipedia_popups.enabled},auto_welcome:{enabled:this.sanitize(["settings","auto_welcome","enabled"],e.settings.auto_welcome.enabled)},talk_page_thanks_for_temporary_users:{enabled:e.settings.talk_page_thanks_for_temporary_users.enabled},expiry:{watchlist:this.sanitize(["settings","expiry","watchlist"],e.settings.expiry.watchlist,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),whitelist:{users:this.sanitize(["settings","expiry","whitelist","users"],e.settings.expiry.whitelist.users,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),pages:this.sanitize(["settings","expiry","whitelist","pages"],e.settings.expiry.whitelist.pages,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),tags:this.sanitize(["settings","expiry","whitelist","tags"],e.settings.expiry.whitelist.tags,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e]))},highlight:{users:this.sanitize(["settings","expiry","highlight","users"],e.settings.expiry.highlight.users,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),pages:this.sanitize(["settings","expiry","highlight","pages"],e.settings.expiry.highlight.pages,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),tags:this.sanitize(["settings","expiry","highlight","tags"],e.settings.expiry.highlight.tags,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e]))}},auto_report:{enabled:this.sanitize(["settings","auto_report","enabled"],e.settings.auto_report.enabled),for:this.sanitize(["settings","auto_report","for"],e.settings.auto_report.for,e=>{if(!Array.isArray(e))return;const t=new Set(["Attempt"]);return e.forEach(e=>t.add(e)),[...t]})},AI:{enabled:this.sanitize(["settings","AI","enabled"],e.settings.AI.enabled),provider:this.sanitize(["settings","AI","provider"],e.settings.AI.provider),edit_analysis:{enabled:this.sanitize(["settings","AI","edit_analysis","enabled"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["settings","AI","username_analysis","enabled"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["settings","AI","Ollama","server"],e.settings.AI.Ollama.server),model:this.sanitize(["settings","AI","Ollama","model"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["settings","audio","ores_alert","enabled"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["settings","audio","ores_alert","threshold"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["settings","audio","volume","master"],e.settings.audio.volume.master),"master.startup":this.sanitize(["settings","audio","volume","master.startup"],e.settings.audio.volume["master.startup"]),"master.music":this.sanitize(["settings","audio","volume","master.music"],e.settings.audio.volume["master.music"]),"master.music.zen_mode":this.sanitize(["settings","audio","volume","master.music.zen_mode"],e.settings.audio.volume["master.music.zen_mode"]),"master.ui":this.sanitize(["settings","audio","volume","master.ui"],e.settings.audio.volume["master.ui"]),"master.ui.click":this.sanitize(["settings","audio","volume","master.ui.click"],e.settings.audio.volume["master.ui.click"]),"master.queue":this.sanitize(["settings","audio","volume","master.queue"],e.settings.audio.volume["master.queue"]),"master.queue.ores":this.sanitize(["settings","audio","volume","master.queue.ores"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":this.sanitize(["settings","audio","volume","master.queue.mention"],e.settings.audio.volume["master.queue.mention"]),"master.notification":this.sanitize(["settings","audio","volume","master.notification"],e.settings.audio.volume["master.notification"]),"master.notification.alert":this.sanitize(["settings","audio","volume","master.notification.alert"],e.settings.audio.volume["master.notification.alert"]),"master.notification.message":this.sanitize(["settings","audio","volume","master.notification.notice"],e.settings.audio.volume["master.notification.message"]),"master.notification.toast":this.sanitize(["settings","audio","volume","master.notification.toast"],e.settings.audio.volume["master.notification.toast"]),"master.action":this.sanitize(["settings","audio","volume","master.action"],e.settings.audio.volume["master.action"]),"master.action.default":this.sanitize(["settings","audio","volume","master.action.default"],e.settings.audio.volume["master.action.default"]),"master.action.failed":this.sanitize(["settings","audio","volume","master.action.failed"],e.settings.audio.volume["master.action.failed"]),"master.action.report":this.sanitize(["settings","audio","volume","master.action.report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["settings","audio","volume","master.action.block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["settings","audio","volume","master.action.protect"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["settings","zen_mode","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["settings","zen_mode","sound","enabled"],e.settings.zen_mode.sound.enabled)},music:{enabled:this.sanitize(["settings","zen_mode","music","enabled"],e.settings.zen_mode.music.enabled)},alerts:{enabled:this.sanitize(["settings","zen_mode","alerts","enabled"],e.settings.zen_mode.alerts.enabled)},messages:{enabled:this.sanitize(["settings","zen_mode","notices","enabled"],e.settings.zen_mode.messages.enabled)},toasts:{enabled:this.sanitize(["settings","zen_mode","toasts","enabled"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:this.sanitize(["settings","zen_mode","badges","enabled"],e.settings.zen_mode.badges.enabled)}},accessibility:{colorblind:e.settings.accessibility.colorblind,dyslexia:e.settings.accessibility.dyslexia,high_contrast:e.settings.accessibility.high_contrast,reduce_motion:e.settings.accessibility.reduce_motion},repeat_control_scripts:this.sanitize(["settings","repeat_control_scripts"],e.settings.repeat_control_scripts)},UI:{theme:{app:e.UI.theme.app,palette:this.sanitize(["UI","theme","palette"],e.UI.theme.palette,t=>["traffic","heat","natural","cool"][t]||e.UI.theme.palette)},queue:{width:this.sanitize(["UI","queue","width"],e.UI.queue.width)},details:{width:this.sanitize(["UI","details","width"],e.UI.details.width)}},control_scripts:this.sanitize(["control_scripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name||"if not"===e.name){var i,a;const r="if not"===e.name,o=()=>e.name=r?"if":"if not";switch("string"==typeof e.condition&&(e.condition={name:e.condition,params:{}}),null!==(a=(i=e.condition).params)&&void 0!==a||(i.params={}),e.condition.name){case"operatorNonAdmin":o();case"operatorAdmin":e.condition.name="account-admin";break;case"userIsHighlighted":e.condition.name="username-highlighted";break;case"userIsWhitelisted":e.condition.name="username-whitelisted";break;case"pageIsWhitelisted":e.condition.name="page-whitelisted";break;case"userIsAnon":o();case"userIsRegistered":e.codition.name="user-registered";break;case"userIsIP":e.condition.name="user-ip";break;case"userIsTemp":e.condition.name="user-temp";break;case"userHasEmptyTalkPage":e.condition.name="user-empty-talk";break;case"editIsMajor":o();case"editIsMinor":e.condition.name="edit-minor";break;case"editSizeNegative":e.condition.name="edit-size",e.condition.params={condition:"<",size:0};break;case"editSizePositive":e.condition.name="edit-size",e.condition.params={condition:">",size:0};break;case"editSizeLarge":e.condition.name="abs-edit-size",e.condition.params={condition:"≥",size:1e3};break;case"userEditCountLow":e.condition.name="user-edit-count",e.condition.params={condition:"<",count:10};break;case"userEditCountHigh":e.condition.name="user-edit-count",e.condition.params={condition:"≥",count:100};break;case"atFinalWarning":e.condition.name="user-final-warning";break;case"userNoWarnings":o();case"userHasWarnings":e.condition.name="user-has-warnings"}if(!(e.condition.name in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else{var r;switch(null!==(r=e.params)&&void 0!==r||(e.params={}),e.name){case"toggleZenMode":e.name="toggle-zen-mode";break;case"acceptFlaggedEdit":if(e.name="accept-pending-edit",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.reason,delete e.params.reason;break;case"rejectFlaggedEdit":if(e.name="reject-pending-edit",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.reason,delete e.params.reason;break;case"prevEdit":e.name="previous-item";break;case"nextEdit":e.name="next-item";break;case"deleteQueue":e.name="clear-queue";break;case"openRevertMenu":e.name="open-revert-menu";break;case"openWarnMenu":e.name="open-warn-menu";break;case"openUserPage":e.name="open-user-page";break;case"openUserTalk":e.name="open-user-talk";break;case"openUserContribs":e.name="open-user-contributions";break;case"openFilterLog":e.name="open-user-filter-log";break;case"openPage":e.name="open-page";break;case"openTalk":e.name="open-page-talk";break;case"openHistory":e.name="open-page-history";break;case"openRevision":e.name="open-revision";break;case"openDiff":e.name="open-diff";break;case"switchToRecentQueue":e.name="switch-to-recent-queue";break;case"switchToFlaggedQueue":e.name="switch-to-pending-queue";break;case"switchToUsersQueue":e.name="switch-to-users-queue";break;case"switchToWatchlistQueue":e.name="switch-to-watchlist-queue";break;case"watchPage":e.name="watch-page";break;case"unwatchPage":e.name="unwatch-page";break;case"whitelistUser":e.name="whitelist-user";break;case"whitelistPage":e.name="whitelist-page";break;case"unwhitelistUser":e.name="unwhitelist-user";break;case"unwhitelistPage":e.name="unwhitelist-page";break;case"highlightUser":e.name="highlight-user";break;case"highlightPage":e.name="highlight-page";break;case"unwhitelistUser":e.name="unhighlight-user";break;case"unwhitelistPage":e.name="unhighlight-page";break;case"thankUser":e.name="thank-user";break;case"warn":e.name="warn-user";break;case"rollback":if(e.name="rollback-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"rollbackGoodFaith":if(e.name="rollback-goodfaith-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"undo":if(e.name="undo-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"reportToAIV":if(e.name="report-user-to-aiv",!(0,o.isObject)(e.params))return!0;e.params.reason=e.params.reportMessage,delete e.params.reportMessage,e.params.summary=e.params.comment,delete e.params.comment;break;case"reportToUAA":if(e.name="report-user-to-uaa",!(0,o.isObject)(e.params))return!0;e.params.reason=e.params.reportMessage,delete e.params.reportMessage,e.params.summary=e.params.comment,delete e.params.comment;break;case"requestProtection":if(e.name="request-page-protection",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.comment,delete e.params.comment;break;case"welcome":e.name="welcome-user";break;case"toggleConsecutive":e.name="toggle-consecutive-edits";break;case"block":return this.loadedLogger.warn(`Skipping deprecated action 'block' in control script at ${[...n,s].join(" -> ")}.`),!1;case"protect":return this.loadedLogger.warn(`Skipping deprecated action 'protect' in control script at ${[...n,s].join(" -> ")}.`),!1;case"openSettings":return this.loadedLogger.warn(`Skipping deprecated action 'openSettings' in control script at ${[...n,s].join(" -> ")}.`),!1}}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:this.sanitize(["statistics","edits_reviewed","total"],e.statistics.edits_reviewed.total),thanked:this.sanitize(["statistics","edits_reviewed","thanked"],e.statistics.edits_reviewed.thanked)},recent_changes_reviewed:{total:this.sanitize(["statistics","recent_changes_reviewed","total"],e.statistics.recent_changes_reviewed.total)},pending_changes_reviewed:{total:this.sanitize(["statistics","pending_changes_reviewed","total"],e.statistics.pending_changes_reviewed.total),accepted:this.sanitize(["statistics","pending_changes_reviewed","accepted"],e.statistics.pending_changes_reviewed.accepted),rejected:this.sanitize(["statistics","pending_changes_reviewed","rejected"],e.statistics.pending_changes_reviewed.rejected)},watchlist_changes_reviewed:{total:this.sanitize(["statistics","watchlist_changes_reviewed","total"],e.statistics.watchlist_changes_reviewed.total)},users_reviewed:{total:this.sanitize(["statistics","users_reviewed","total"],e.statistics.users_reviewed.total)},abuselogs_reviewed:{total:e.statistics.abuselogs_reviewed.total},reverts_made:{total:this.sanitize(["statistics","reverts_made","total"],e.statistics.reverts_made.total),good_faith:this.sanitize(["statistics","reverts_made","good_faith"],e.statistics.reverts_made.good_faith),from_recent_changes:this.sanitize(["statistics","reverts_made","from_recent_changes"],e.statistics.reverts_made.from_recent_changes),from_pending_changes:this.sanitize(["statistics","reverts_made","from_pending_changes"],e.statistics.reverts_made.from_pending_changes),from_watchlist:this.sanitize(["statistics","reverts_made","from_watchlist"],e.statistics.reverts_made.from_watchlist),from_abuselogs:e.statistics.reverts_made.from_abuselogs,from_loaded_edits:this.sanitize(["statistics","reverts_made","from_loaded_edits"],e.statistics.reverts_made.from_loaded_edits)},users_welcomed:{total:this.sanitize(["statistics","users_welcomed","total"],e.statistics.users_welcomed.total)},warnings_issued:{total:this.sanitize(["statistics","warnings_issued","total"],e.statistics.warnings_issued.total),level_1:this.sanitize(["statistics","warnings_issued","level_1"],e.statistics.warnings_issued.level_1),level_2:this.sanitize(["statistics","warnings_issued","level_2"],e.statistics.warnings_issued.level_2),level_3:this.sanitize(["statistics","warnings_issued","level_3"],e.statistics.warnings_issued.level_3),level_4:this.sanitize(["statistics","warnings_issued","level_4"],e.statistics.warnings_issued.level_4),level_4im:this.sanitize(["statistics","warnings_issued","level_4im"],e.statistics.warnings_issued.level_4im)},reports_filed:{total:this.sanitize(["statistics","reports_filed","total"],e.statistics.reports_filed.total),AIV:this.sanitize(["statistics","reports_filed","AIV"],e.statistics.reports_filed.AIV),UAA:this.sanitize(["statistics","reports_filed","UAA"],e.statistics.reports_filed.UAA),RFPP:this.sanitize(["statistics","reports_filed","RFPP"],e.statistics.reports_filed.RFPP),global_blocks:e.statistics.reports_filed.global_blocks,global_locks:e.statistics.reports_filed.global_locks},watchlist:{watched:this.sanitize(["statistics","watchlist","watched"],e.statistics.watchlist.watched),unwatched:this.sanitize(["statistics","watchlist","unwatched"],e.statistics.watchlist.unwatched)},items_whitelisted:{total:this.sanitize(["statistics","items_whitelisted","total"],e.statistics.items_whitelisted.total),users:this.sanitize(["statistics","items_whitelisted","users"],e.statistics.items_whitelisted.users),pages:this.sanitize(["statistics","items_whitelisted","pages"],e.statistics.items_whitelisted.pages),tags:this.sanitize(["statistics","items_whitelisted","tags"],e.statistics.items_whitelisted.tags)},items_highlighted:{total:this.sanitize(["statistics","items_highlighted","total"],e.statistics.items_highlighted.total),users:this.sanitize(["statistics","items_highlighted","users"],e.statistics.items_highlighted.users),pages:this.sanitize(["statistics","items_highlighted","pages"],e.statistics.items_highlighted.pages),tags:this.sanitize(["statistics","items_highlighted","tags"],e.statistics.items_highlighted.tags)},blocks_issued:{total:this.sanitize(["statistics","blocks_issued","total"],e.statistics.blocks_issued.total)},pages_protected:{total:this.sanitize(["statistics","pages_protected","total"],e.statistics.pages_protected.total)},actions_executed:{total:this.sanitize(["statistics","actions_executed","total"],e.statistics.actions_executed.total),successful:this.sanitize(["statistics","actions_executed","successful"],e.statistics.actions_executed.successful)},session_time:this.sanitize(["statistics","session_time"],e.statistics.session_time)},highlight:{users:this.sanitize(["highlight","users"],e.highlight.users),pages:this.sanitize(["highlight","pages"],e.highlight.pages),tags:this.sanitize(["highlight","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)},favorite:{warnings:this.sanitize(["favorite","warnings"],e.favorite.warnings),reverts:this.sanitize(["favorite","reverts"],e.favorite.reverts)}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),(null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const v=t.settings.namespaces;Array.isArray(v)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const f=t.settings.queue;this.restrictObject(f,"settings","queue");{const b=t.settings.queue.max_size;"number"==typeof b&&Number.isInteger(b)&&b>0||this.reset("settings","queue","max_size")}{const w=t.settings.queue.max_edits;"number"==typeof w&&Number.isInteger(w)&&w>0||this.reset("settings","queue","max_edits")}{const y=t.settings.queue.min_ores;"number"==typeof y&&y>=0&&y<=1||this.reset("settings","queue","min_ores")}{const x=t.settings.queue.ores_bias;"number"==typeof x&&x>=0&&x<=1||this.reset("settings","queue","ores_bias")}["recent","pending","users","watchlist","abuselog"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const k=t.settings.username_highlighting;this.restrictObject(k,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const _=t.settings.wikipedia_popups;this.restrictObject(_,"settings","wikipedia_popups");"boolean"!=typeof t.settings.wikipedia_popups.enabled&&this.reset("settings","wikipedia_popups","enabled")}{const S=t.settings.auto_welcome;this.restrictObject(S,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const q=t.settings.talk_page_thanks_for_temporary_users;this.restrictObject(q,"settings","talk_page_thanks_for_temporary_users");"boolean"!=typeof t.settings.talk_page_thanks_for_temporary_users.enabled&&this.reset("settings","talk_page_thanks_for_temporary_users","enabled")}{const E=t.settings.expiry;this.restrictObject(E,"settings","expiry");{const L=t.settings.expiry.watchlist;g.expiryRegex.test(L)||this.reset("settings","expiry","watchlist")}{const A=t.settings.expiry.whitelist;this.restrictObject(A,"settings","expiry","whitelist");{const T=t.settings.expiry.whitelist.users;g.expiryRegex.test(T)||this.reset("settings","expiry","whitelist","users")}{const C=t.settings.expiry.whitelist.pages;g.expiryRegex.test(C)||this.reset("settings","expiry","whitelist","pages")}{const z=t.settings.expiry.whitelist.tags;g.expiryRegex.test(z)||this.reset("settings","expiry","whitelist","tags")}}{const $=t.settings.expiry.highlight;this.restrictObject($,"settings","expiry","highlight");{const M=t.settings.expiry.highlight.users;g.expiryRegex.test(M)||this.reset("settings","expiry","highlight","users")}{const O=t.settings.expiry.highlight.pages;g.expiryRegex.test(O)||this.reset("settings","expiry","highlight","pages")}{const I=t.settings.expiry.highlight.tags;g.expiryRegex.test(I)||this.reset("settings","expiry","highlight","tags")}}}{const P=t.settings.auto_report;this.restrictObject(P,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const j=t.settings.auto_report.for;Array.isArray(j)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const W=t.settings.AI;this.restrictObject(W,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const N=t.settings.AI.edit_analysis;this.restrictObject(N,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const D=t.settings.AI.username_analysis;this.restrictObject(D,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const R=t.settings.AI.Ollama;this.restrictObject(R,"settings","AI","Ollama");{const U=t.settings.AI.Ollama.server;(0,o.isURL)(U)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const H=t.settings.audio;this.restrictObject(H,"settings","audio");{const F=t.settings.audio.ores_alert;this.restrictObject(F,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const V=t.settings.audio.ores_alert.threshold;"number"==typeof V&&V>=0&&V<=1||this.reset("settings","audio","ores_alert","threshold")}}{const B=t.settings.audio.volume;this.restrictObject(B,"settings","audio","volume");const G=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.message","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const Q of G){const Y=t.settings.audio.volume[Q];"number"==typeof Y&&Y>=0&&Y<=1||this.reset("settings","audio","volume",Q)}}}{const Z=t.settings.zen_mode;this.restrictObject(Z,"settings","zen_mode");"boolean"!=typeof Z.enabled&&this.reset("settings","zen_mode","enabled");{const K=t.settings.zen_mode.sound;this.restrictObject(K,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const X=t.settings.zen_mode.music;this.restrictObject(X,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const J=t.settings.zen_mode.alerts;this.restrictObject(J,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const ee=t.settings.zen_mode.messages;this.restrictObject(ee,"settings","zen_mode","messages");"boolean"!=typeof t.settings.zen_mode.messages.enabled&&this.reset("settings","zen_mode","messages","enabled")}{const te=t.settings.zen_mode.toasts;this.restrictObject(te,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const ne=t.settings.zen_mode.badges;this.restrictObject(ne,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}{const se=t.settings.accessibility;this.restrictObject(se,"settings","accessibility");"boolean"!=typeof t.settings.accessibility.colorblind&&this.reset("settings","accessibility","colorblind");"boolean"!=typeof t.settings.accessibility.dyslexia&&this.reset("settings","accessibility","dyslexia");"boolean"!=typeof t.settings.accessibility.high_contrast&&this.reset("settings","accessibility","high_contrast");"boolean"!=typeof t.settings.accessibility.reduce_motion&&this.reset("settings","accessibility","reduce_motion")}"boolean"!=typeof t.settings.repeat_control_scripts&&this.reset("settings","repeat_control_scripts")}{const ie=t.UI;this.restrictObject(ie,"UI");{const ae=t.UI.theme;this.restrictObject(ae,"UI","theme");{const re=t.UI.theme.app;["light","dark","auto"].includes(re)||this.reset("UI","theme","app")}t.UI.theme.palette in m.GUI.palettes||this.reset("UI","theme","palette")}{const oe=t.UI.queue;this.restrictObject(oe,"UI","queue");{const le=t.UI.queue.width;"string"==typeof le&&le.endsWith("vw")||this.reset("UI","queue","width");const de=parseFloat(le.slice(0,-2));"number"==typeof de&&!isNaN(de)&&de>=10&&de<=30||this.reset("UI","queue","width")}}{const ce=t.UI.details;this.restrictObject(ce,"UI","details");{const ue=t.UI.details.width;"string"==typeof ue&&ue.endsWith("vw")||this.reset("UI","details","width");const pe=parseFloat(ue.slice(0,-2));"number"==typeof pe&&!isNaN(pe)&&pe>=10&&pe<=30||this.reset("UI","details","width")}}}{const ge=t.control_scripts;function he(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name||"if not"===e.name){var i,a,r,l;const s=e.condition;if(!(s.name in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${s.name} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]);const o=(0,h.sortDependencies)(null!==(a=null===(r=(l=u.conditions[s.name]).parameters)||void 0===r?void 0:r.call(l))&&void 0!==a?a:[]),c=new Set;for(const e of o){const i={};for(const t of null!==(d=e.dependencies)&&void 0!==d?d:[]){var d;i[t]=s.params[t]}const a="function"==typeof e.default?e.default(i):e.default;if(e.id in s.params||"default"in e&&(this.loadedLogger.warn(`Resetting missing parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a),c.add(e.id),"default"in e)switch(e.type){case"choice":("function"==typeof e.options?e.options(i):e.options).includes(s.params[e.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"text":"string"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid text parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"boolean":"boolean"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid boolean parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"number":"number"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid number parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a)}}for(const e of Object.keys(s.params))c.has(e)||(this.loadedLogger.warn(`Removing invalid parameter [ ${e} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete s.params[e]);e.actions=he.call(this,e.actions,...t,n,"actions")}else{var p,m,v,f;if(!(e.name in c.events))return null!==(p=void this.loadedLogger.warn(`Removing invalid action [ ${e.name} ] at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`))&&void 0!==p&&p;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=(0,h.sortDependencies)(null!==(m=null===(v=(f=c.events[e.name]).parameters)||void 0===v?void 0:v.call(f))&&void 0!==m?m:[]),i=new Set;for(const a of s){const s={};for(const t of null!==(b=a.dependencies)&&void 0!==b?b:[]){var b;s[t]=e.params[t]}const r="function"==typeof a.default?a.default(s):a.default;if(a.id in e.params||"default"in a&&(this.loadedLogger.warn(`Resetting missing parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r),i.add(a.id),"default"in a)switch(a.type){case"choice":("function"==typeof a.options?a.options(s):a.options).includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"text":"string"!=typeof e.params[a.id]&&(this.loadedLogger.warn(`Resetting invalid text parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"boolean":"boolean"!=typeof e.params[a.id]&&(this.loadedLogger.warn(`Resetting invalid boolean parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"duration":"string"==typeof e.params[a.id]&&g.expiryRegex.test(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid duration parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r)}}for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(ge)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>(0,p.validateShortcut)(e)),t.control_scripts[n].actions=he.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const me=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,ve=t.statistics;this.restrictObject(ve,"statistics");{const fe=t.statistics.edits_reviewed;this.restrictObject(fe,"statistics","edits_reviewed");me(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");me(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const be=t.statistics.recent_changes_reviewed;this.restrictObject(be,"statistics","recent_changes_reviewed");me(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const we=t.statistics.pending_changes_reviewed;this.restrictObject(we,"statistics","pending_changes_reviewed");me(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");me(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");me(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const ye=t.statistics.watchlist_changes_reviewed;this.restrictObject(ye,"statistics","watchlist_changes_reviewed");me(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const xe=t.statistics.users_reviewed;this.restrictObject(xe,"statistics","users_reviewed");me(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const ke=t.statistics.abuselogs_reviewed;this.restrictObject(ke,"statistics","abuselogs_reviewed");me(t.statistics.abuselogs_reviewed.total)||this.reset("statistics","abuselogs_reviewed","total")}{const _e=t.statistics.reverts_made;this.restrictObject(_e,"statistics","reverts_made");me(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");me(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");me(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");me(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");me(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");me(t.statistics.reverts_made.from_abuselogs)||this.reset("statistics","reverts_made","from_abuselogs");me(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const Se=t.statistics.users_welcomed;this.restrictObject(Se,"statistics","users_welcomed");me(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const qe=t.statistics.warnings_issued;this.restrictObject(qe,"statistics","warnings_issued");me(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");me(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");me(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");me(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");me(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");me(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const Ee=t.statistics.reports_filed;this.restrictObject(Ee,"statistics","reports_filed");me(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");me(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");me(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");me(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP");me(t.statistics.reports_filed.global_blocks)||this.reset("statistics","reports_filed","global_blocks");me(t.statistics.reports_filed.global_locks)||this.reset("statistics","reports_filed","global_locks")}{const Le=t.statistics.watchlist;this.restrictObject(Le,"statistics","watchlist");me(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");me(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const Ae=t.statistics.items_whitelisted;this.restrictObject(Ae,"statistics","items_whitelisted");me(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");me(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");me(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");me(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const Te=t.statistics.items_highlighted;this.restrictObject(Te,"statistics","items_highlighted");me(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");me(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");me(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");me(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const Ce=t.statistics.actions_executed;this.restrictObject(Ce,"statistics","actions_executed");me(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");me(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const ze=t.statistics.session_time;"number"==typeof ze&&ze>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const $e=t.highlight;this.restrictObject($e,"highlight");{const Me=t.highlight.users;Array.isArray(Me)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const Oe=t.highlight.pages;Array.isArray(Oe)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const Ie=t.highlight.tags;Array.isArray(Ie)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const Pe=t.whitelist;this.restrictObject(Pe,"whitelist");{const je=t.whitelist.users;Array.isArray(je)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const We=t.whitelist.pages;Array.isArray(We)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const Ne=t.whitelist.tags;Array.isArray(Ne)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}{const De=t.favorite;this.restrictObject(De,"favorite");{const Re=t.favorite.warnings;Array.isArray(Re)||this.reset("favorite","warnings"),t.favorite.warnings=t.favorite.warnings.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite warning [ ${e} ] from stored data.`),t})}{const Ue=t.favorite.reverts;Array.isArray(Ue)||this.reset("favorite","reverts"),t.favorite.reverts=t.favorite.reverts.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite revert [ ${e} ] from stored data.`),t})}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=3,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7852(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0;t.VERSION="2.0.10"},955(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getWarningFromLookup=function(e){return a[e]},t.warningsLookup=t.warnings=t.warningTemplateColors=void 0;t.warningTemplateColors={0:"grey",1:"#4169e1",2:"#ff8c00",3:"#ff4500",4:"#b22222","4im":"#000000"};const n={0:"1",1:"2",2:"3",3:"4",4:"report","4im":"report"},s=t.warnings={Vandalism:{title:"Vandalism",icon:"fas fa-skull-crossbones",description:"Warnings for different types of vandalism.",warnings:[{reportable:!0,queueType:["edit"],title:"Vandalism",name:"vandalism",icon:"fas fa-skull-crossbones",description:"Warning for general vandalism.",summary:"vandalism",auto:n,templates:[{name:"1",template:"uw-vandalism1"},{name:"2",template:"uw-vandalism2"},{name:"3",template:"uw-vandalism3"},{name:"4",template:"uw-vandalism4"},{name:"4im",template:"uw-vandalism4im"}]},{reportable:!0,queueType:["edit"],title:"Subtle vandalism",name:"subtle vandalism",icon:"fas fa-user-secret",description:"Warning for subtle vandalism.",summary:"subtle vandalism",auto:n,templates:[{name:"1",template:"uw-subtle1"},{name:"2",template:"uw-subtle2"},{name:"3",template:"uw-subtle3"},{name:"4",template:"uw-subtle4"}]},{reportable:!0,queueType:["edit"],title:"Image vandalism",name:"image vandalism",icon:"fas fa-image",description:"Warning for image vandalism.",summary:"image vandalism",auto:n,templates:[{name:"1",template:"uw-image1"},{name:"2",template:"uw-image2"},{name:"3",template:"uw-image3"},{name:"4",template:"uw-image4"},{name:"4im",template:"uw-image4im"}]},{reportable:!0,queueType:["edit"],title:"Sandbox",name:"[[WP:BADSAND|inappropriate]] sandbox use",icon:"fas fa-vial",description:"Warning for vandalism, libelous, or defamatory content added to sandbox",summary:"[[WP:BADSAND|inappropriate]] sandbox use",auto:n,templates:[{name:"1",template:"uw-sandbox1"},{name:"2",template:"uw-sandbox2"},{name:"3",template:"uw-sandbox3"},{name:"4",template:"uw-sandbox4"},{name:"4im",template:"uw-sandbox4im"}]},{reportable:!0,queueType:["edit"],title:"Deliberate errors",name:"deliberate errors",icon:"fas fa-bug",description:"Adding deliberate errors to articles.",summary:"deliberate errors",auto:n,templates:[{name:"1",template:"uw-error1"},{name:"2",template:"uw-error2"},{name:"3",template:"uw-error3"},{name:"4",template:"uw-error4"}]}]},Disruption:{title:"Disruption",icon:"fas fa-exclamation",description:"Warnings for different types of disruptive behavior.",warnings:[{reportable:!0,queueType:["edit"],title:"Disruptive editing",name:"[[WP:DE|disruptive editing]]",icon:"fas fa-exclamation",description:"Default warning for making disruptive edits but may be good faith.",summary:"[[WP:DE|disruptive editing]]",auto:n,templates:[{name:"1",template:"uw-disruptive1"},{name:"2",template:"uw-disruptive2"},{name:"3",template:"uw-disruptive3"},{name:"4",template:"uw-generic4",generic:"''Disruptive editing. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Editing tests",name:"editing tests",icon:"fas fa-flask",description:"Making test edits on live articles.",summary:"test edits",auto:n,templates:[{name:"1",template:"uw-test1"},{name:"2",template:"uw-test2"},{name:"3",template:"uw-test3"},{name:"4",template:"uw-generic4",generic:"''Test edits. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Commentary",name:"commentary",icon:"fas fa-comment-alt",description:"Adding opinion or commentary to articles.",summary:"commentary / talking in article",auto:n,templates:[{name:"1",template:"uw-talkinarticle1"},{name:"2",template:"uw-talkinarticle2"},{name:"3",template:"uw-talkinarticle3"},{name:"4",template:"uw-generic4",generic:"''Adding commentary to articles. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Inappropriate jokes",name:"inappropriate humor",icon:"fas fa-grin-squint",description:"Adding inappropriate humor to an article.",summary:"inappropriate humor",auto:n,templates:[{name:"1",template:"uw-joke1"},{name:"2",template:"uw-joke2"},{name:"3",template:"uw-joke3"},{name:"4",template:"uw-joke4"},{name:"4im",template:"uw-joke4im"}]},{reportable:!0,queueType:["edit"],title:"Deleting",name:"unexplained deletion",icon:"fas fa-trash",description:"Used when a user does not explain deletion of part of an article.",summary:"unexplained deletion",auto:n,templates:[{name:"1",template:"uw-delete1"},{name:"2",template:"uw-delete2"},{name:"3",template:"uw-delete3"},{name:"4",template:"uw-delete4"},{name:"4im",template:"uw-delete4im"}]}]},"Content Issues":{title:"Content Issues",icon:"fas fa-file-alt",description:"Warnings for different types of content issues.",warnings:[{reportable:!0,queueType:["edit"],title:"Unsourced",name:"unsourced changes",icon:"fas fa-question",description:"Warning for unsourced content.",summary:"unsourced changes",auto:n,templates:[{name:"1",template:"uw-unsourced1"},{name:"2",template:"uw-unsourced2"},{name:"3",template:"uw-unsourced3"},{name:"4",template:"uw-unsourced4"}]},{reportable:!0,queueType:["edit"],title:"Unsourced (BLP)",name:"unsourced [[WP:BLP|biographies of living persons']] changes",icon:"fas fa-person-circle-question",description:"Warning for unsourced BLP content.",summary:"unsourced [[WP:BLP|biographies of living persons']] changes",auto:n,templates:[{name:"1",template:"uw-biog1"},{name:"2",template:"uw-biog2"},{name:"3",template:"uw-biog3"},{name:"4",template:"uw-biog4"},{name:"4im",template:"uw-biog4im"}]},{reportable:!0,queueType:["edit"],title:"Unsourced genre",name:"unsourced genre changes",icon:"fas fa-music",description:"Warning for unsourced genre changes.",summary:"unsourced genre changes",auto:n,templates:[{name:"1",template:"uw-genre1"},{name:"2",template:"uw-genre2"},{name:"3",template:"uw-genre3"},{name:"4",template:"uw-genre4"}]},{reportable:!0,queueType:["edit"],title:"Original research",name:"[[WP:OR|original research]]",icon:"fas fa-lightbulb",description:"Adding original research or synthesis.",summary:"[[WP:OR|original research]]",auto:n,templates:[{name:"1",template:"uw-nor1"},{name:"2",template:"uw-nor2"},{name:"3",template:"uw-nor3"},{name:"4",template:"uw-nor4"}]},{reportable:!0,queueType:["edit"],title:"POV",name:"[[WP:NPOV|non-neutral changes]]",icon:"fas fa-balance-scale-left",description:"Adding content which violates the neutral point of view policy.",summary:"[[WP:NPOV|non-neutral changes]]",auto:n,templates:[{name:"1",template:"uw-npov1"},{name:"2",template:"uw-npov2"},{name:"3",template:"uw-npov3"},{name:"4",template:"uw-npov4"}]},{reportable:!0,queueType:["edit"],title:"Censoring",name:"[[WP:NOTCENSORED|censoring content]]",icon:"fas fa-ban",description:"Censoring topically-relevant content.",summary:"[[WP:NOTCENSORED|censoring content]]",auto:n,templates:[{name:"1",template:"uw-notcensored1"},{name:"2",template:"uw-notcensored2"},{name:"3",template:"uw-notcensored3"},{name:"4",template:"uw-notcensored4"}]},{reportable:!0,queueType:["edit"],title:"AI-generated",name:"[[WP:LLM|AI-generated content]]",icon:"fas fa-robot",description:"Adding AI-generated content.",summary:"[[WP:LLM|AI-generated content]]",auto:n,templates:[{name:"1",template:"uw-ai1"},{name:"2",template:"uw-ai2"},{name:"3",template:"uw-ai3"},{name:"4",template:"uw-ai4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==0}},{reportable:!0,queueType:["edit"],title:"AI-generated (talk)",name:"[[WP:LLM|AI-generated content]] in a discussion",icon:"fas fa-robot",description:"Writing an AI-generated comment.",summary:"[[WP:LLM|AI-generated content]] in a discussion",auto:n,templates:[{name:"1",template:"uw-aitalk1"},{name:"2",template:"uw-aitalk2"},{name:"3",template:"uw-aitalk3"},{name:"4",template:"uw-aitalk4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==1}},{reportable:!0,queueType:["edit"],title:"MOS violation",name:"[[WP:MOS|manual of style]] violation",icon:"fas fa-spell-check",description:"Not following the Manual of Style.",summary:"[[WP:MOS|manual of style]] violation",auto:n,templates:[{name:"1",template:"uw-mos1"},{name:"2",template:"uw-mos2"},{name:"3",template:"uw-mos3"},{name:"4",template:"uw-mos4"}]},{reportable:!1,queueType:["edit"],title:"English variant",name:"[[WP:ENGVAR|different English variant]]",icon:"fas fa-globe",description:"Content added in a different English variant than the rest of the article.",summary:"[[WP:ENGVAR|different English variant]]",auto:"notice",templates:[{name:"notice",template:"uw-engvar"}]},{reportable:!1,queueType:["edit"],title:"Not English",name:"non-English content",icon:"fas fa-language",description:"Content added in a language other than English.",summary:"non-English content",auto:"notice",templates:[{name:"notice",template:"uw-lang-noteng"}]}]},Conduct:{title:"Conduct",icon:"fas fa-user-shield",description:"Warnings for different types of conduct issues.",warnings:[{reportable:!0,queueType:["edit"],title:"Personal attacks",name:"[[WP:NPA|personal attacks]]",icon:"fas fa-bomb",description:"Personal attacks towards another user.",summary:"[[WP:NPA|personal attacks]]",auto:n,templates:[{name:"1",template:"uw-npa1"},{name:"2",template:"uw-npa2"},{name:"3",template:"uw-npa3"},{name:"4",template:"uw-npa4"},{name:"4im",template:"uw-npa4im"}]},{reportable:!0,queueType:["edit"],title:"Harassment",name:"[[WP:HARASS|harassment]]",icon:"fas fa-shield-alt",description:"Harassment of another user.",summary:"[[WP:HARASS|harassment]] of another user",auto:n,templates:[{name:"1",template:"uw-harass1"},{name:"2",template:"uw-harass2"},{name:"3",template:"uw-harass3"},{name:"4",template:"uw-harass4"},{name:"4im",template:"uw-harass4im"}]},{reportable:!0,queueType:["edit"],title:"TPO",name:"[[WP:TPO|removing or editing]] others' posts",icon:"fas fa-hand-paper",description:"Removing or editing others' posts.",summary:"[[WP:TPO|removing or editing]] others' posts",auto:n,templates:[{name:"1",template:"uw-tpo1"},{name:"2",template:"uw-tpo2"},{name:"3",template:"uw-tpo3"},{name:"4",template:"uw-tpo4"},{name:"4im",template:"uw-tpo4im"}]},{reportable:!0,queueType:["edit"],title:"Chatting",name:"inappropriate use of article talk pages",icon:"fas fa-comments",description:"Using article talk pages for inappropriate discussion.",summary:"inappropriate use of article talk pages",auto:n,templates:[{name:"1",template:"uw-chat1"},{name:"2",template:"uw-chat2"},{name:"3",template:"uw-chat3"},{name:"4",template:"uw-chat4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==1}},{reportable:!0,queueType:["edit"],title:"Owning",name:"assuming [[WP:OWN|ownership of articles]]",icon:"fas fa-user-shield",description:"Assuming ownership of articles.",summary:"assuming [[WP:OWN|ownership of articles]]",auto:n,templates:[{name:"1",template:"uw-own1"},{name:"2",template:"uw-own2"},{name:"3",template:"uw-own3"},{name:"4",template:"uw-own4"}]},{reportable:!0,queueType:["edit"],title:"AfD removal",name:"removing AfD templates or comments",icon:"fas fa-gavel",description:"Removing AfD templates or other users' comments from AfD discussions.",summary:"removing AfD templates or comments",auto:n,templates:[{name:"1",template:"uw-afd1"},{name:"2",template:"uw-afd2"},{name:"3",template:"uw-afd3"},{name:"4",template:"uw-afd4"}]},{reportable:!1,queueType:["edit"],title:"Edit warring",name:"[[WP:EW|edit warring]]",icon:"fas fa-jet-fighter",description:"Engaging in edit warring.",summary:"[[WP:EW|edit warring]]",auto(e){var t;return+(null==e||null===(t=e.user)||void 0===t?void 0:t.edits)<500?"notice":"warning"},templates:[{name:"notice",template:"uw-ew-soft",color:"grey"},{name:"warning",template:"uw-ew",color:"#ff4500"}]},{reportable:!0,queueType:["edit"],title:"Gaming the system",name:"[[WP:GAME|gaming the system]]",icon:"fas fa-chess-knight",description:"Attempting to game Wikipedia's policies or guidelines.",summary:"[[WP:GAME|gaming the system]]",auto:n,templates:[{name:"1",template:"uw-gaming1"},{name:"2",template:"uw-gaming2"},{name:"3",template:"uw-gaming3"},{name:"4",template:"uw-gaming4"},{name:"4im",template:"uw-gaming4im"}]}]},Promotional:{title:"Promotional",icon:"fas fa-bullhorn",description:"Warnings for promotional content.",warnings:[{reportable:!0,queueType:["edit"],title:"Advertising",name:"[[WP:PROMO|advertising or promotion]]",icon:"fas fa-ad",description:"Adding advertising or promotional content.",summary:"[[WP:PROMO|advertising or promotion]]",auto:n,templates:[{name:"1",template:"uw-advert1"},{name:"2",template:"uw-advert2"},{name:"3",template:"uw-advert3"},{name:"4",template:"uw-advert4"},{name:"4im",template:"uw-advert4im"}]},{reportable:!0,queueType:["edit"],title:"Spam links",name:"adding [[WP:ELNO|inappropriate links]]",icon:"fas fa-link",description:"Adding spam or promotional links.",summary:"adding [[WP:ELNO|inappropriate links]]",auto:n,templates:[{name:"1",template:"uw-spam1"},{name:"2",template:"uw-spam2"},{name:"3",template:"uw-spam3"},{name:"4",template:"uw-spam4"},{name:"4im",template:"uw-spam4im"}]},{reportable:!1,queueType:["edit"],title:"COI Edit",name:"editing with a [[WP:COI|conflict of interest]]",icon:"fas fa-user-tie",description:"Editing with a conflict of interest.",summary:"editing with a [[WP:COI|conflict of interest]]",auto:"notice",templates:[{name:"notice",template:"uw-coi"},{name:"warning",template:"uw-coi-warn"},{name:"username",template:"uw-coi-username"}]},{reportable:!1,queueType:["logevent"],title:"COI Log",name:"apparent [[WP:COI|conflict of interest]]",icon:"fas fa-user-tie",description:"Apparent conflict of interest.",summary:"apparent [[WP:COI|conflict of interest]]",auto:"username",templates:[{name:"username",template:"uw-coi-username"}]}]},"Abuse Log":{title:"Abuse Log",icon:"fas fa-shield-virus",description:"Warnings for triggering edit filters.",warnings:[{reportable:!0,queueType:["abuselog"],title:"Attempt",name:"triggering an edit filter",icon:"fas fa-vial",description:"Triggering an edit filter.",auto:n,templates:[{name:"1",template:"uw-attempt1"},{name:"2",template:"uw-attempt2"},{name:"3",template:"uw-attempt3"},{name:"4",template:"uw-attempt4"},{name:"4im",template:"uw-attempt4im"}],show:e=>!Boolean(null==e?void 0:e.revid)}]},"Edit Summary":{title:"Edit Summary",icon:"fas fa-pen-alt",description:"Warnings for inappropriate edit summaries.",warnings:[{reportable:!1,queueType:["edit"],title:"No edit summary",name:"no [[WP:ES|edit summary]] provided",icon:"fas fa-pen-nib",description:"Making an edit without providing an edit summary.",summary:"no [[WP:ES|edit summary]] provided",auto(e){var t;return+(null==e||null===(t=e.user)||void 0===t?void 0:t.edits)<500?"newcomer":"experienced"},templates:[{name:"notice",template:"uw-es"},{name:"experienced",template:"uw-es2"}]},{reportable:!0,queueType:["edit","logevent","abuselog"],title:"Inappropriate edit summary",name:"inappropriate [[WP:ES|edit summary]]",icon:"fas fa-pen-alt",description:"Using an inappropriate edit summary.",summary:"inappropriate [[WP:ES|edit summary]]",auto:n,templates:[{name:"1",template:"uw-bes1"},{name:"2",template:"uw-bes2"},{name:"3",template:"uw-bes3"},{name:"4",template:"uw-bes4"},{name:"4im",template:"uw-bes4im"}]},{reportable:!0,queueType:["edit","logevent","abuselog"],title:"Misleading edit summary",name:"misleading [[WP:ES|edit summary]]",icon:"fas fa-mask",description:"Using a misleading edit summary.",summary:"misleading [[WP:ES|edit summary]]",auto:n,templates:[{name:"1",template:"uw-mislead1"},{name:"2",template:"uw-mislead2"},{name:"3",template:"uw-mislead3"},{name:"4",template:"uw-generic4",generic:"''Misleading edit summary. ([[WP:WikiShield|WS]])''"}]},{reportable:!1,queueType:["edit","abuselog"],title:"Minor edit abuse",name:"improper use of [[WP:ME|minor edit]] checkbox",icon:"fas fa-minus",description:"Non-minor edit marked as minor",summary:"improper use of [[WP:ME|minor edit]] checkbox",auto:"notice",templates:[{name:"notice",template:"uw-minor"}]}]}},i={};for(const[e,t]of Object.entries(s)){const e=t.warnings.length;for(let n=0;n<e;n++){const e=t.warnings[n];i[e.title]=e}}const a=t.warningsLookup=i},863(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.welcomes=void 0;const n=t.welcomes={Auto:{title:"Auto",template:e=>{}},Default:{title:"Default",template:"Welcome",sign:!0},Basic:{title:"Basic",template:"W-basic",sign:!1},"Non-Latin":{title:"Non-Latin",template:"Welcome-non-latin",sign:!0},"Vandalism fighter":{title:"Vandalism fighter",template:"Welcome-vandalism fighter",sign:!1},Personal:{title:"Personal",template:"Welcome-personal",sign:!0},Cookie:{title:"Cookie",template:"Welcome cookie",sign:!0},Kitten:{title:"Kitten",template:"Welcome kitten",sign:!1},Graphical:{title:"Graphical",template:"W-graphical",sign:!1},Screen:{title:"Screen",template:"W-screen",sign:!1},Autobiography:{title:"Autobiography",template:"Welcome-auto",sign:!0},COI:{title:"COI",template:"Welcome-COI",sign:!0}};n.Auto.template=e=>!n["Non-Latin"].hide&&/[^\u0000-\u007F]/.test(e.name)?"Non-Latin":"Default"},4153(e,t,n){var s=n(8878);void 0===window.electron?(window.isElectron=!1,window.electron={mwapiLoader:async()=>{window.dispatchEvent(new CustomEvent("mwapi-loaded",{detail:{server:window.location.host,username:mw.user.getName(),pendingChangesServers:s.MediaWikiAPI.pendingChangesServers,dev:!1}}))},mwapiLoaded:e=>window.addEventListener("mwapi-loaded",t=>{const{server:n,username:s,pendingChangesServers:i,dev:a}=t.detail;e(n,s,i,a)}),mwapi:()=>Promise.reject(new Error("Not running in Electron environment")),menuEnabler:()=>{},setBadgeCount:()=>{},sendNotification:()=>{},localStorage:{get:e=>localStorage.getItem(e),set:(e,t)=>localStorage.setItem(e,t),delete:e=>localStorage.removeItem(e)},copyToClipboard:async e=>{if(navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}},log:e=>console.debug(e),info:e=>console.info(e),warn:e=>console.warn(e),error:e=>console.error(e),errorbox:(e,t)=>alert(`${e}\n\n${t}`),onOpenBrowser:()=>{},onOpenUrl:()=>{},onOpenNotification:()=>{},onOpenChangelog:()=>{},closePopup:e=>e.close(),openExternal:e=>window.open(e,"_blank"),openInBrowser:async e=>{const t=.8*window.screen.availWidth,n=.8*window.screen.availHeight,s=window.screenX+(window.outerWidth-t)/2,i=window.screenY+(window.outerHeight-n)/2,a=window.open(e,"myPopup",`width=${t},height=${n},left=${s},top=${i},resizable=false,scrollbars=true,menubar=false,toolbar=false,location=false,status=false`);return a.focus(),a.addEventListener("beforeunload",()=>{a.closed&&window.dispatchEvent(new CustomEvent("popup-closed",{detail:a}))}),a},onPopupClosed:e=>window.addEventListener("popup-closed",t=>e(t.detail)),onBeforeunload:()=>{},unloaded:()=>{},saveAccount:()=>{},disable:(e,t)=>{alert(`${e}\n\n${t}`),location.reload()}}):(window.isElectron=!0,document.querySelectorAll("[data-electron]").forEach(e=>{"false"===e.dataset.electron&&window.isElectron?e.style.display="none":"true"!==e.dataset.electron||window.isElectron||(e.style.display="none")}))},7411(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{constructor(){super(),e(this,"handleDragStart",(e,t)=>{this.draggedIndex=e,this.placeholderIndex=e,t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e),requestAnimationFrame(()=>this.updateDragState())}),e(this,"handleDragOver",(e,t)=>{if(t.preventDefault(),null===this.draggedIndex||e===this.placeholderIndex)return;const n=[...this.items],s=n[this.draggedIndex];n.splice(this.draggedIndex,1),n.splice(e,0,s),this.items=n,this.draggedIndex=e,this.placeholderIndex=e,this.render()}),e(this,"handleDragEnd",()=>{this.dispatchEvent(new CustomEvent("reorder",{detail:{keys:this.items.map(e=>e.key)},bubbles:!0})),this.draggedIndex=null,this.placeholderIndex=null,this.updateDragState()}),this.items=[],this.draggedIndex=null,this.placeholderIndex=null,this.itemWrappers=[]}connectedCallback(){this.className="draggable-order-list",this.syncItemsFromChildren()}syncItemsFromChildren(){const e=Array.from(this.children);this.items=e.map((e,t)=>({child:e,key:e.dataset.key||e.getAttribute("key")||t})),this.render()}addItem(e,t){this.items.push({child:e,key:t||this.items.length}),this.render()}clearItems(){this.items=[],this.render()}updateDragState(){const e=null!==this.draggedIndex;this.classList.toggle("is-dragging",e),this.itemWrappers.forEach((e,t)=>{e.classList.toggle("dragging",this.draggedIndex===t)})}render(){this.innerHTML="",this.itemWrappers=[],this.items.forEach((e,t)=>{const n=document.createElement("div");n.className="draggable-order-item-wrapper",n.draggable=!0,n.dataset.key=e.key,n.addEventListener("dragstart",e=>this.handleDragStart(t,e)),n.addEventListener("dragover",e=>this.handleDragOver(t,e)),n.addEventListener("dragend",this.handleDragEnd),n.appendChild(e.child),this.appendChild(n),this.itemWrappers.push(n)}),this.updateDragState()}}class n extends HTMLElement{static get observedAttributes(){return["name","enabled"]}constructor(){super(),e(this,"handleToggle",e=>{e.stopPropagation(),this._enabled=!this._enabled,this.updateEnabledState(),this.dispatchEvent(new CustomEvent("toggle",{detail:{enabled:this._enabled},bubbles:!0}))}),this._name="",this._enabled=!0}connectedCallback(){this.render()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"name":this._name=n||"",this.nameSpan&&(this.nameSpan.textContent=this._name);break;case"enabled":this._enabled="false"!==n&&"0"!==n,this.updateEnabledState()}}get name(){return this._name}set name(e){this.setAttribute("name",e)}get enabled(){return this._enabled}set enabled(e){this.setAttribute("enabled",e)}updateEnabledState(){this.classList.toggle("disabled",!this._enabled),this.toggle&&(this.toggle.title=this._enabled?"Click to disable":"Click to enable")}render(){this.className="draggable-order-item",this.innerHTML="",this.nameSpan=document.createElement("span"),this.nameSpan.className="draggable-order-item-name",this.nameSpan.textContent=this._name,this.toggle=document.createElement("div"),this.toggle.className="draggable-order-item-toggle",this.toggle.addEventListener("click",this.handleToggle),this.appendChild(this.nameSpan),this.appendChild(this.toggle),this.updateEnabledState()}}customElements.define("draggable-order-list",t),customElements.define("draggable-order-item",n)},7732(e,t,n){var s=n(3241);class i extends HTMLElement{constructor(){super(),this.duration={years:0,months:0,weeks:0,days:0,hours:0,minutes:0,seconds:0},this.isInfinite=!1}connectedCallback(){this.render(),this.attachEventListeners()}render(){this.innerHTML=`\n <label class="infinity-label">\n <span>Infinite Duration</span>\n </label>\n <div class="duration-inputs">\n ${[{key:"years",label:"Years"},{key:"months",label:"Months"},{key:"weeks",label:"Weeks"},{key:"days",label:"Days"},{key:"hours",label:"Hours"},{key:"minutes",label:"Minutes"},{key:"seconds",label:"Seconds"}].map(e=>`\n <label>\n <span>${e.label}</span>\n <input\n type="number"\n min="0"\n data-unit="${e.key}"\n value="0"\n step="1"\n placeholder="0"\n />\n </label>\n `).join("")}\n </div>\n `}attachEventListeners(){const e=this.querySelector(".infinity-label");e.addEventListener("click",()=>{this.isInfinite=!this.isInfinite,e.classList.toggle("selected",this.isInfinite),this.dispatchChangeEvent()}),this.querySelectorAll('input[type="number"]').forEach(e=>{e.addEventListener("input",e=>{const t=e.target.dataset.unit;this.duration[t]=parseInt(e.target.value,10)||0,this.dispatchChangeEvent()})})}dispatchChangeEvent(){this.dispatchEvent(new CustomEvent("change",{detail:this.getDurationString(),bubbles:!0}))}get value(){return this.getDurationString()}getDurationString(){if(this.isInfinite)return"infinite";let e="";const t={years:"Y",months:"M",weeks:"W",days:"D",hours:"H",minutes:"M",seconds:"S"};for(const[n,s]of Object.entries(this.duration))s>0&&(e+=`${s}${t[n]}`);return e||"0S"}set value(e){if("infinite"===e||"infinity"===e||"∞"===e){this.isInfinite=!0;const e=this.querySelector(".infinity-label");return void(e&&e.classList.add("selected"))}this.isInfinite=!1;const t=this.querySelector(".infinity-label");t&&t.classList.remove("selected");const n=s.expiryRegex.exec(e);if(n)for(const e of Object.keys(this.duration)){const t=n.groups[e];this.duration[e]=t?parseInt(t,10):0;const s=this.querySelector(`input[data-unit="${e}"]`);s&&(s.value=this.duration[e])}}}customElements.define("duration-input",i)},1914(e,t,n){n(7732),n(2784),n(5155),n(7411),n(1731)},5155(e,t){function n(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),t.NumericInput=void 0;class s extends HTMLElement{static get observedAttributes(){return["value","min","max","step"]}constructor(){super(),n(this,"handleMinus",()=>{const e=Number(this.inputValue),t=Math.round(100*Math.max(e-this.step,this.min))/100;this.updateValue(t)}),n(this,"handlePlus",()=>{const e=Number(this.inputValue),t=Math.round(100*Math.min(e+this.step,this.max))/100;this.updateValue(t)}),n(this,"handleInputChange",()=>{const e=this.input.value;if(isNaN(Number(e)))return void(this.input.value=this.inputValue);let t=Math.round(100*Math.min(Math.max(Number(e),this.min),this.max))/100;t=this.step>=1?Math.round(t):t,this.updateValue(t)}),n(this,"handleKeyUp",e=>{"enter"===e.key.toLowerCase()&&(this.handleInputChange(),e.target.blur())}),n(this,"handleInput",e=>{this.inputValue=e.target.value}),this.inputValue=0,this._min=-1/0,this._max=1/0,this._step=1}connectedCallback(){this.render(),this.setupEventListeners()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"value":this.inputValue=Number(n)||0,this.input&&(this.input.value=this.inputValue);break;case"min":this._min=Number(null!=n?n:-1/0);break;case"max":this._max=Number(null!=n?n:1/0);break;case"step":this._step=Number(null!=n?n:1)}}get value(){return this.inputValue}set value(e){this.setAttribute("value",e)}get min(){return this._min}get max(){return this._max}get step(){return this._step}updateValue(e){this.inputValue=e,this.input.value=e,this.dispatchEvent(new CustomEvent("change",{detail:{value:e},bubbles:!0}))}setupEventListeners(){this.minusBtn.addEventListener("click",this.handleMinus),this.plusBtn.addEventListener("click",this.handlePlus),this.input.addEventListener("input",this.handleInput),this.input.addEventListener("blur",this.handleInputChange),this.input.addEventListener("keyup",this.handleKeyUp),this.input.addEventListener("wheel",e=>{e.preventDefault(),e.deltaY<0?this.handlePlus():e.deltaY>0&&this.handleMinus()})}render(){this.className="numeric-input-container",this.minusBtn=document.createElement("span"),this.minusBtn.className="fa fa-minus numeric-input-button",this.input=document.createElement("input"),this.input.type="text",this.input.className="numeric-input",this.input.value=this.inputValue,this.input.autocomplete="off",this.plusBtn=document.createElement("span"),this.plusBtn.className="fa fa-plus numeric-input-button",this.appendChild(this.minusBtn),this.appendChild(this.input),this.appendChild(this.plusBtn)}}t.NumericInput=s,customElements.define("numeric-input",s)},2784(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{static get observedAttributes(){return["value","checked"]}constructor(){super(),e(this,"handleClick",()=>{this._value=!this._value,this.updateState(),this.dispatchEvent(new CustomEvent("change",{detail:{value:this._value,checked:this._value},bubbles:!0}))}),this._value=!1}connectedCallback(){this.render(),this.updateState()}attributeChangedCallback(e,t,n){t!==n&&("value"!==e&&"checked"!==e||(this._value="true"===n||"1"===n||""===n,this.updateState()))}get value(){return this._value}set value(e){this._value=!!e,this.setAttribute("value",this._value),this.updateState()}get checked(){return this._value}set checked(e){this.value=e}updateState(){this.classList.toggle("active",this._value)}render(){this.classList.add("settings-toggle"),this.innerHTML="";const e=document.createElement("div");e.className="toggle-switch";const t=document.createElement("div");t.className="toggle-slider",e.appendChild(t),this.appendChild(e),this.addEventListener("click",this.handleClick)}}customElements.define("toggle-input",t)},1731(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{static get observedAttributes(){return["title","description","value"]}constructor(){super(),e(this,"handleVolumeChange",e=>{const t=Math.max(0,Math.min(1,parseFloat(e.target.value)));this._value=t,this.slider.value=t,this.input.value=t.toFixed(2),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0}))}),this._title="",this._description="",this._value=.5,this._sound="",this._preview=null}connectedCallback(){this.render()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"title":this._title=n||"",this.titleEl&&(this.titleEl.textContent=this._title);break;case"description":this._description=n||"",this.descEl&&(this.descEl.textContent=this._description);break;case"value":this._value=Math.max(0,Math.min(1,parseFloat(n))),this.slider&&(this.slider.value=this._value),this.input&&(this.input.value=this._value.toFixed(2))}}get title(){return this._title}set title(e){this.setAttribute("title",e)}get value(){return this._value}set value(e){this.setAttribute("value",e)}setPreview(e,t){this._preview={audio:e,path:t},this.render()}render(){this.className="volume-control",this.innerHTML="";const e=document.createElement("div");e.className="volume-control-header";const t=document.createElement("div");if(t.className="volume-control-info",this.titleEl=document.createElement("div"),this.titleEl.className="volume-control-title",this.titleEl.textContent=this._title,this.descEl=document.createElement("div"),this.descEl.className="volume-control-desc",this.descEl.textContent=this._description,t.appendChild(this.titleEl),t.appendChild(this.descEl),e.appendChild(t),this._preview){const t=document.createElement("button");t.className="volume-control-preview",t.title="Preview sound",t.addEventListener("click",()=>{if(t.classList.contains("playing"))return;t.classList.add("playing");const e=t.querySelector("i");e&&(e.className="fa fa-stop");const n=new AbortController;t.onclick=()=>n.abort(),this._preview.audio.stopPreviews(),this._preview.audio.playSound(this._preview.path,n.signal,!0).finally(()=>{t.onclick=null,t.classList.remove("playing"),e&&(e.className="fa fa-play")})});const n=document.createElement("i");n.className="fa fa-play",t.appendChild(n),e.appendChild(t)}this.appendChild(e);const n=document.createElement("div");n.className="volume-control-slider-container",this.slider=document.createElement("input"),this.slider.type="range",this.slider.className="volume-control-slider",this.slider.min="0",this.slider.max="1",this.slider.step="0.01",this.slider.value=this._value,this.slider.autocomplete="off",this.slider.addEventListener("input",this.handleVolumeChange),n.appendChild(this.slider),this.input=document.createElement("input"),this.input.type="number",this.input.className="volume-control-input",this.input.min="0",this.input.max="1",this.input.step="0.01",this.input.value=this._value.toFixed(2),this.input.autocomplete="off",this.input.addEventListener("input",this.handleVolumeChange),n.appendChild(this.input),this.appendChild(n)}}customElements.define("volume-control",t)},8816(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.run=r,n(4153),n(1914);var s=n(7054),i=n(9501),a=n(691);function r(){addEventListener("click",()=>window.ineractedWithPage=!0,{once:!0}),addEventListener("wheel",e=>{e.target.closest(".no-scroll")||"INPUT"===e.target.tagName&&"number"===e.target.type&&(e.stopPropagation(),e.target.value=Number(e.target.value)+(e.deltaY<0?1:-1),e.target.dispatchEvent(new Event("input")))},{passive:!0}),electron.menuEnabler(),electron.mwapiLoaded(async(e,t,n,r)=>{if(i.StorageManager.okay(null,electron)){var o;document.querySelector("#rollback-needed .request-link").href=null!==(o=await fetch("https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q7765871&props=sitelinks/urls&format=json&origin=*").then(e=>e.json()).then(t=>{var n;return(null===(n=Object.values(t.entities.Q7765871.sitelinks).find(t=>t.url.startsWith(`https://${e}/wiki/`)))||void 0===n?void 0:n.url)||null}).catch(()=>null))&&void 0!==o?o:"https://www.wikidata.org/wiki/Q7765871";const i=new s.WikiShield(window.isMobile,e,t,n,r);document.body.classList.toggle("mobile",window.isMobile),electron.onOpenBrowser(()=>i.open(null,!1)),electron.onOpenUrl(e=>i.open(e,!1)),electron.onOpenNotification(e=>{const t=new URL(e);if(t.searchParams.has("markasread")){const e=i.notifications.find(null,+t.searchParams.get("markasread"));e&&i.notifications.read(e.type,e.notification)}i.open(e)}),electron.menuEnabler({browser:!0}),i.on("ready",async()=>{{const{editcount:e,registrationdate:t}=await i.api.account();(e<1e3||Date.now()-new Date(t).getTime()<6048e5)&&"LuniZunie"!==this.api.username&&(alert("WikiShield requires an account that is at least 7 days old and has at least 1,000 edits to function. Please meet these requirements and try again."),electron.isElectron?window.close():location.reload())}electron.onBeforeunload(()=>{i.backup(),electron.unloaded()}),window.addEventListener("beforeunload",()=>i.backup());const e=new a.Killswitch(i);e.on("kill",()=>{alert("WikiShield has been temporarily disabled. Please contact the development team for more information."),electron.isElectron?window.close():location.reload()}),e.on("force-update",()=>{alert("The current version of WikiShield is no longer supported. Please update to the latest version to continue using WikiShield."),electron.isElectron?window.close():location.reload()}),e.on("update",()=>{electron.sendNotification({title:"WikiShield Update",body:"A new version of WikiShield is available. Please update to the latest version for the best experience."},"")}),e.on("unsafe",()=>{alert("Could not verify the integrity of WikiShield. Make sure you are connected to the internet. If the problem persists, please contact the development team."),electron.isElectron?window.close():location.reload()}),e.on("okay",async()=>{addEventListener("keydown",e=>i.controller(e)),addEventListener("keyup",e=>i.controller(e)),await i.init()},{once:!0}),e.check().then(()=>e.monitor(1e4))},{once:!0})}else alert("An error has occurred with the WikiShield storage system that could lead to data loss. For that reason, WikiShield has been automatically disabled. Please report this immediately to the development team."),electron.isElectron?window.close():location.reload()}),electron.mwapiLoader().catch(e=>{alert(`An error occurred while loading the WikiShield API:\n\n${e.stack||e}`),electron.isElectron?window.close():location.reload()})}window.isMobile=!1,window.arePopupsBlocked=(()=>{let e;try{return e=window.open("about:blank","_blank","width=100,height=100,left=-100,top=-100"),!e||e.closed||void 0===e.closed?!0:(e.close(),!1)}catch(e){return!0}})(),window.isElectron&&r()},4784(e,t){function n(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function s(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Dialog=void 0;var i=new WeakSet;function a(e){null!=e&&e.parentElement&&(e.classList.add("hidden"),setTimeout(()=>{e.parentElement&&e.remove()},300))}async function r(){if(this.dialogs.processing||0===this.dialogs.queue.length)return;this.dialogs.processing=!0;const{fn:e,resolve:t,reject:n}=this.dialogs.queue.shift();try{this.dialogs.active=!0;const n=await e();this.dialogs.active=null,t(n)}catch(e){this.dialogs.active=null,n(e)}finally{this.dialogs.processing=!1,requestAnimationFrame(()=>s(i,this,r).call(this))}}function o(e,t=!1){return new Promise((n,a)=>{t&&this.dialogs.active?e().then(n).catch(a):(this.dialogs.queue.push({fn:e,child:t,resolve:n,reject:a}),s(i,this,r).call(this))})}function l(e,t,n="",s=""){return new Promise(i=>{const a=document.createElement("div");a.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal"),a.appendChild(r);const o=document.createElement("div");o.classList.add("confirmation-modal-header"),r.appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal-title"),l.textContent=e,o.appendChild(l);const d=document.createElement("div");d.classList.add("confirmation-modal-body"),d.innerHTML=t,r.appendChild(d);const c=document.createElement("input");c.type="text",c.classList.add("confirmation-modal-input"),c.placeholder=n,c.value=s,d.appendChild(c),c.focus(),c.select();const u=document.createElement("div");u.classList.add("confirmation-modal-footer"),r.appendChild(u);const p=document.createElement("button");p.classList.add("confirmation-modal-button","confirmation-modal-button-cancel"),p.style.setProperty("--background","211, 51, 51"),p.textContent="Cancel",u.appendChild(p);const g=document.createElement("button");g.classList.add("confirmation-modal-button","confirmation-modal-button-submit"),g.style.setProperty("--background","51, 153, 211"),g.textContent="Submit",u.appendChild(g);const h=e=>{document.removeEventListener("keydown",m,!0),a.classList.add("closing"),r.classList.add("closing"),setTimeout(()=>{a.remove(),i(e)},200)},m=e=>{if("Enter"===e.key)return e.preventDefault(),e.stopPropagation(),h(c.value),!1;if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),h(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",m,!0),p.addEventListener("click",()=>h(null)),g.addEventListener("click",()=>h(c.value)),a.addEventListener("click",e=>{e.target===a&&h(null)})})}function d(e){return new Promise(t=>{const n=e=>{document.removeEventListener("keydown",s,!0),i.classList.add("closing"),a.classList.add("closing"),setTimeout(()=>{i.remove(),t(e)},200)},s=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),n(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",s,!0);const i=document.createElement("div");i.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(i);const a=document.createElement("div");a.classList.add("confirmation-modal"),i.appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal-header"),a.appendChild(r);const o=document.createElement("div");o.classList.add("confirmation-modal-title"),o.textContent="Report to UAA",r.appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal-body"),l.innerHTML="Select reason for reporting <span class='confirmation-modal-username'></span> to UAA:",a.appendChild(l),l.querySelector(".confirmation-modal-username").textContent=e;const d=document.createElement("div");d.classList.add("confirmation-modal-footer","confirmation-modal-footer-vertical"),a.appendChild(d),["Disruptive","Offensive","Promotional","Misleading"].forEach(e=>{const t=`${e} username`,s=document.createElement("button");s.classList.add("confirmation-modal-button","confirmation-modal-button-reason"),s.textContent=t,s.addEventListener("click",()=>n(t)),d.appendChild(s)});const c=document.createElement("button");c.classList.add("confirmation-modal-button","confirmation-modal-button-cancel"),c.style.setProperty("--background","211, 51, 51"),c.textContent="Cancel",c.addEventListener("click",()=>n(null)),d.appendChild(c),i.addEventListener("click",e=>{e.target===i&&n(null)})})}function c(e,t,n=null,s=!1){return new Promise(i=>{const a=e=>{document.removeEventListener("keydown",r,!0),o.classList.add("closing"),l.classList.add("closing"),setTimeout(()=>{o.remove(),i(e)},200)},r=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),a(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",r,!0);const o=document.createElement("div");o.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal"),o.appendChild(l);const d=document.createElement("div");d.classList.add("confirmation-modal-header"),l.appendChild(d);const c=document.createElement("div");c.classList.add("confirmation-modal-title"),c.textContent=e,d.appendChild(c);const u=document.createElement("div");u.classList.add("confirmation-modal-body"),u.innerHTML=t,l.appendChild(u);const p=document.createElement("div");if(p.classList.add("confirmation-modal-footer"),l.appendChild(p),n&&!s){const s=document.createElement("button");s.classList.add("confirmation-modal-button","confirmation-modal-button-uaa"),s.style.setProperty("--background","211, 51, 51"),s.textContent="Report to UAA",p.appendChild(s),s.addEventListener("click",()=>{document.removeEventListener("keydown",r,!0),o.classList.add("closing"),l.classList.add("closing"),setTimeout(async()=>{o.remove();const s=await this.UAA(n,!0);s?this.ws.execute({name:"reportToUAA",params:{reportMessage:s}},void 0,void 0,{user:{name:n}}):i(await this.confirm(e,t,n,!1,!0))},200)})}const g=document.createElement("div");g.classList.add("confirmation-modal-footer-right"),p.appendChild(g);const h=document.createElement("button");h.classList.add("confirmation-modal-button","confirmation-modal-button-no"),h.textContent="No",h.addEventListener("click",()=>a(!1)),g.appendChild(h);const m=document.createElement("button");m.classList.add("confirmation-modal-button","confirmation-modal-button-yes"),m.style.setProperty("--background","51, 102, 204"),m.textContent="Yes",m.addEventListener("click",()=>a(!0)),g.appendChild(m),o.addEventListener("click",e=>{e.target===o&&a(null)}),requestAnimationFrame(()=>m.focus())})}function u(e,t){return new Promise(async n=>{const s=document.createElement("div");s.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(s);const i=document.createElement("div");i.classList.add("confirmation-modal"),s.appendChild(i);const a=document.createElement("div");a.classList.add("confirmation-modal-header"),a.textContent=e,i.appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal-body"),r.innerHTML='<div class="dialog-loading">\n <div class="dialog-spinner"></div>\n <div class="dialog-loading-text">Loading...</div>\n </div>',i.appendChild(r);const o=()=>{document.removeEventListener("keydown",l,!0),s.classList.add("closing"),i.classList.add("closing"),setTimeout(()=>{s.remove(),n()},200)},l=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),o(),!1};document.addEventListener("keydown",l,!0),s.addEventListener("click",e=>{e.target===s&&o()}),t instanceof Promise?t.then(e=>{r&&(r.innerHTML=e)}).catch(()=>{r&&(r.innerHTML="Failed to load content")}):r.innerHTML=t})}t.Dialog=class{constructor(e){n(this,i),this.ws=e,this.dialogs={processing:!1,active:null,queue:[]},this.popups=[],addEventListener("focus",()=>{this.popups.length>0&&(this.popups.forEach(e=>electron.closePopup(e)),this.popups=[],requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())}))}),electron.onPopupClosed(e=>{const t=this.popups.indexOf(e);-1!==t&&this.popups.splice(t,1),0===this.popups.length&&requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())})})}controller(e){}check(){if(0===this.popups.length)return requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())});requestAnimationFrame(()=>this.check())}toast(e,t,n="default",r=5e3){const o=this.ws.store.settings.zen_mode;if(o.enabled&&!o.toasts.enabled)return!1;const l=document.createElement("div");l.classList.add("toast-alert",n);const d=document.createElement("div");d.classList.add("toast-icon"),l.appendChild(d);const c=document.createElement("i");switch(c.classList.add("fa"),d.appendChild(c),n){case"success":c.classList.add("fa-check");break;case"warning":c.classList.add("fa-exclamation-triangle");break;case"error":c.classList.add("fa-xmark");break;default:c.classList.add("fa-info-circle")}const u=document.createElement("div");u.classList.add("toast-content"),l.appendChild(u);const p=document.createElement("div");p.classList.add("toast-title"),p.textContent=e,u.appendChild(p);const g=document.createElement("div");g.classList.add("toast-message"),g.textContent=t,u.appendChild(g);const h=document.createElement("div");h.classList.add("toast-close"),h.addEventListener("click",()=>{s(i,this,a).call(this,l)}),l.appendChild(h);const m=document.createElement("i");return m.classList.add("fa","fa-xmark"),h.appendChild(m),document.body.querySelector("#app").appendChild(l),setTimeout(()=>{this.ws.audio.playSound(["notification","toast"]),l.classList.add("show")},10),r>0&&setTimeout(()=>s(i,this,a).call(this,l),r),!0}input(e,t,n="",a="",r=!1){return s(i,this,o).call(this,()=>s(i,this,l).call(this,e,t,n,a),r)}UAA(e,t=!1){return s(i,this,o).call(this,()=>s(i,this,d).call(this,e),t)}confirm(e,t,n=null,a=!1,r=!1){return s(i,this,o).call(this,()=>s(i,this,c).call(this,e,t,n,a),r)}show(e,t){return s(i,this,o).call(this,()=>s(i,this,u).call(this,e,t))}}},8469(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.GUI=void 0;var s=n(4192),i=n(4041),a=n(7054),r=n(2069),o=n(4784),l=n(8921),d=n(9117),c=n(372),u=n(955),p=n(7698);function g(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function h(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e,t){return e.get(v(e,t))}function v(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var f=new WeakMap,b=new WeakSet;class w{constructor(e){var t,n;g(t=this,n=b),n.add(t),function(e,t,n){g(e,t),t.set(e,n)}(this,f,{$pc:void 0,$bottom:void 0,$diff:void 0,top:null,left:null,margin:null}),this.ws=e,this.dialog=new o.Dialog(this.ws),this.events=new l.EventManager(this.ws),this.settings=new d.Settings(this.ws),this.intervals={DEFCON:null,outdated:null},this.controllers={current:null}}async build(){this.updateDEFCON(),document.documentElement.style.colorScheme={light:"only light",auto:"light dark",dark:"only dark"}[this.ws.store.UI.theme.app]||"light dark";const e={code:["ArrowUp","ArrowUp","ArrowDown","ArrowDown","ArrowLeft","ArrowRight","ArrowLeft","ArrowRight","b","a"],index:0,function:t=>{t.key!==e.code[e.index]?e.index=t.key===e.code[0]?1:0:++e.index===e.code.length&&(e.index=0,this.ws.open("https://ws.luni.me/konami-easter-egg","force"))}};addEventListener("keydown",e.function),this.updateAccessibility(),document.querySelector("#initial").classList.remove("hidden"),document.querySelectorAll(".VERSION").forEach(e=>e.textContent=a.WikiShield.config.version),Math.random()<.01&&(document.querySelector("#wikishield-sikiwhield").textContent="SikiWhield");const t=new AbortController;let n;const s=new Promise(e=>n=e);let i;this.ws.audio.playSound(["startup"],t.signal,!1,()=>n()),await s;const r=this.ws.store.settings.performance.startup;if("always_off"!==r){const e=document.getElementById("dots-canvas"),t=e.getContext("2d"),n=Math.min(devicePixelRatio||1,2);class s{constructor(){h(this,"radius",2),this.x=Math.random()*e.width,this.y=Math.random()*e.height,this.vx=.5*(Math.random()-.5),this.vy=.5*(Math.random()-.5),this.color=s.colors[Math.random()*s.colors.length|0],this.fill=`rgba(${this.color}, 0.8)`,this.shadow=`rgba(${this.color}, 0.8)`}update(){this.x+=this.vx,this.y+=this.vy,this.x<0?this.x=e.width:this.x>e.width&&(this.x=0),this.y<0?this.y=e.height:this.y>e.height&&(this.y=0)}draw(){t.beginPath(),t.arc(this.x,this.y,this.radius,0,2*Math.PI),t.fillStyle=this.fill,t.fill()}}h(s,"dots",[]),h(s,"target",0),h(s,"colors",["102, 126, 234","240, 147, 251","118, 75, 162","217, 70, 239"]);let a=null;const o=()=>{a||(a=requestAnimationFrame(()=>{a=null;const i=e.width,r=e.height;e.width=Math.floor(innerWidth*n),e.height=Math.floor(innerHeight*n),e.style.width=`${innerWidth}px`,e.style.height=`${innerHeight}px`,t.setTransform(1,0,0,1,0,0),t.scale(n,n);const o=e.width/(i||e.width),l=e.height/(r||e.height);if(s.dots.forEach(e=>{e.x*=o,e.y*=l}),s.target=Math.floor(innerWidth*innerHeight/7e3),s.target=Math.max(40,Math.min(250,s.target)),s.target>s.dots.length)for(let e=s.dots.length;e<s.target;e++)s.dots.push(new s);else s.target<s.dots.length&&(s.dots.length=s.target)}))};o(),addEventListener("resize",o);const l=160,d=30,c=500;let u=null,p=performance.now();const g=new Array(15).fill(1e3/60),m=()=>{{const n=performance.now(),a=n-p;p=n,g.shift(),g.push(a);const o=[...g].sort((e,t)=>e-t).slice(2,-2),l=1e3/(o.reduce((e,t)=>e+t,0)/o.length);if("adaptive"===r){if(l<d){if(null===u&&(u=n),n-u>=c)return i&&cancelAnimationFrame(i),i=null,void t.clearRect(0,0,e.width,e.height)}else u=null;l<45&&s.dots.length>60&&(s.dots.length=Math.max(60,Math.floor(.9*s.dots.length)),s.target=s.dots.length)}}t.clearRect(0,0,e.width,e.height),s.dots.forEach(e=>{e.update(),e.draw()});const n=Math.ceil(innerWidth/l),a=Math.ceil(innerHeight/l),o=new Array(n*a);for(let e=0;e<o.length;e++)o[e]=[];s.dots.forEach((e,t)=>{const s=Math.max(0,Math.min(n-1,Math.floor(e.x/l))),i=Math.max(0,Math.min(a-1,Math.floor(e.y/l)));o[i*n+s].push(t)});const h=innerWidth/2,v=innerHeight/2,f=(e,n,s,i,a)=>{const r=[0];Math.max(e,s)>innerWidth&&r.push(-innerWidth),Math.min(e,s)<0&&r.push(innerWidth);const o=[0];Math.max(n,i)>innerHeight&&o.push(-innerHeight),Math.min(n,i)<0&&o.push(innerHeight),t.lineWidth=1,t.strokeStyle=a;for(const a of r)for(const r of o)t.beginPath(),t.moveTo(e+a,n+r),t.lineTo(s+a,i+r),t.stroke()};for(let e=0;e<a;e++)for(let t=0;t<n;t++){const i=o[e*n+t];if(0!==i.length)for(let r=-1;r<=1;r++){const l=(e+r+a)%a;for(let e=-1;e<=1;e++){const a=o[l*n+(t+e+n)%n];if(0!==a.length)for(let e=0;e<i.length;e++){const t=s.dots[i[e]];for(let n=0;n<a.length;n++){const r=a[n];if(r<=i[e])continue;const o=s.dots[r];let l=t.x-o.x,d=t.y-o.y;l>h&&(l-=innerWidth),l<-h&&(l+=innerWidth),d>v&&(d-=innerHeight),d<-v&&(d+=innerHeight);const c=l*l+d*d;if(c<22500){const e=.4*(1-Math.sqrt(c)/150),n=t.color.split(","),s=o.color.split(","),i=(parseInt(n[0])+parseInt(s[0]))/2,a=(parseInt(n[1])+parseInt(s[1]))/2,r=(parseInt(n[2])+parseInt(s[2]))/2;f(t.x,t.y,t.x-l,t.y-d,`rgba(${i}, ${a}, ${r}, ${e})`)}}}}}}i=requestAnimationFrame(m)};m()}this.ws.rights.rollback||"LuniZunie"===this.ws.api.username?(document.querySelector("#rollback-needed").classList.add("hidden"),document.querySelector("#start-button").classList.remove("hidden")):(document.querySelector("#rollback-needed").classList.remove("hidden"),document.querySelector("#start-button").classList.add("hidden")),document.querySelector("#start-button").addEventListener("click",()=>{window.removeEventListener("keydown",e.function),t.abort(),this.ws.audio.playSound(["ui","click"]),i&&cancelAnimationFrame(i),this.ws.start()}),window.addEventListener("click",e=>{[...document.querySelectorAll(".tooltip.buttons")].forEach(e=>e.remove());const t=e.target.closest("[href]");if(t){const n=new URL(t.href,location.href);if(n.origin===location.origin&&n.pathname===location.pathname)return;if(t.dataset.multipleHrefs)try{const[e,n=""]=t.dataset.multipleHrefs.split(";"),s=Object.fromEntries(n.split("&").map(e=>{const[t,n]=e.split("=");return[t,decodeURIComponent(n)]}));switch(e){case"page":{const e=s.title,n=+s.id;this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Revision",i.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:Permalink/${n}`),e.altKey),t.remove()}),t.appendChild(i);const a=document.createElement("div");a.classList.add("button"),a.innerText="Diff",a.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:Diff/${n}`),e.altKey),t.remove()}),t.appendChild(a)})}break;case"page-abuse":{const e=s.title,n=+s.id;this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Details",i.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:AbuseLog/${n}`),e.altKey),t.remove()}),t.appendChild(i);const a=document.createElement("div");a.classList.add("button"),a.innerText="Examine",a.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:AbuseFilter/examine/log/${n}`),e.altKey),t.remove()}),t.appendChild(a)})}break;case"log":{const e=s.title,n=JSON.parse(s.log);this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Log",i.addEventListener("click",s=>{const i=this.ws.page(`Special:Log/${encodeURIComponent(n.user)}?page=${encodeURIComponent(e)}&type=${n.type}&wptime=${n.timestamp}&limit=1`,!1,!1),a=this.ws.open(i,s.altKey);t.remove(),a.addEventListener("load",()=>{a.scroll({behavior:"smooth",top:a.document.body.scrollHeight})},{once:!0})}),t.appendChild(i)})}break;case"user":{const e=s.name;this.createTooltip(t,"buttons",null,null,null,t=>{const n=document.createElement("div");n.classList.add("button"),n.innerText="User talk",n.addEventListener("click",n=>{this.ws.open(this.ws.page(`User talk:${e}`),n.altKey),t.remove()}),t.appendChild(n);const s=document.createElement("div");s.classList.add("button"),s.innerText="User contribs",s.addEventListener("click",n=>{this.ws.open(this.ws.page(`Special:Contribs/${e}`),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="User page",i.addEventListener("click",n=>{this.ws.open(this.ws.page(`User:${e}`),n.altKey),t.remove()}),t.appendChild(i)})}break;case"email":this.createTooltip(t,"buttons",null,null,null,e=>{const t=document.createElement("div");t.classList.add("button"),t.innerText="Emergency",t.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Emergency"),t.altKey),e.remove()}),e.appendChild(t);const n=document.createElement("div");n.classList.add("button"),n.innerText="ArbCom",n.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Arbitration Committee"),t.altKey),e.remove()}),e.appendChild(n);const s=document.createElement("div");s.classList.add("button"),s.innerText="Oversight",s.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Oversight"),t.altKey),e.remove()}),e.appendChild(s)})}}catch(n){this.ws.open(t.getAttribute("href"),e.altKey)}finally{e.preventDefault()}else this.ws.open(t.getAttribute("href"),e.altKey);e.preventDefault()}}),document.querySelector("#loading").classList.add("hidden")}async start(){this.intervals.DEFCON=setInterval(this.updateDEFCON.bind(this),6e4),document.querySelector("#DEFCON").addEventListener("click",e=>{this.ws.open("https://en.wikipedia.org/w/index.php?tagfilter=mw-manual-revert%7Cmw-rollback%7Cmw-undo&title=Special%3ARecentChanges&urlversion=2",e.altKey)}),this.settings.start(),document.querySelector("#app").classList.remove("hidden"),document.querySelector("#initial").classList.add("hidden"),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation();const n=e.closest(".bottom-tool-item"),s=document.querySelector(`#${n.dataset.menu}-menu`),i=s.classList.contains("show");switch(n.dataset.menu){case"revert":s.innerHTML="",this.createWarnMenu("reverts",s,this.ws.queue.current.item);break;case"warn":s.innerHTML="",this.createWarnMenu("warnings",s,this.ws.queue.current.item);break;case"page":{var a;const e=this.ws.queue.current.item,t=!0===(null==e||null===(a=e.page)||void 0===a?void 0:a.watched);document.querySelector("#page-watch").classList.toggle("hidden",t),document.querySelector("#page-unwatch").classList.toggle("hidden",!t)}}this.closeMenus(),i||(s.classList.add("show"),e.classList.add("active"),this.positionBottomMenu(n,s))})}),document.querySelectorAll(".submenu-trigger").forEach(e=>{let t=(0,s.generateRandomUUID)();e.addEventListener("mouseenter",()=>{t=null;const n=e.closest(".bottom-tool-menu");n&&n.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show"));const s=e.querySelector(".submenu");s&&(this.events.submenu(s,s.dataset.eventName),s.classList.add("show"),this.positionSubmenu(s,e))}),e.addEventListener("mouseleave",()=>{const n=(0,s.generateRandomUUID)();t=n,setTimeout(()=>{if(t!==n)return;const s=e.querySelector(".submenu");s&&s.classList.remove("show")},500)})}),document.querySelectorAll(".menu-option:not(.submenu-trigger)").forEach(e=>{e.addEventListener("click",()=>this.closeMenus())}),document.querySelectorAll(".submenu").forEach(e=>{e.addEventListener("click",e=>e.stopPropagation())}),document.querySelectorAll("#queue-tabs > .queue-tab").forEach(e=>this.addTooltipListener(e));{const e=["alert","message"];e.forEach(e=>{const t=document.querySelector(`#${e}s-icon`);this.addTooltipListener(t),t.addEventListener("click",()=>{const t=document.querySelector(`#${e}s-panel`);t.classList.toggle("show"),t.classList.contains("show")&&this.ws.notifications.seen(e)}),document.querySelector(`#mark-all-${e}s-read`).addEventListener("click",t=>{this.ws.notifications.read(e)})}),document.addEventListener("click",t=>{for(const n of e){const e=document.querySelector(`#${n}s-panel`),s=document.querySelector(`#${n}s-icon`);null!=e&&e.contains(t.target)||null!=s&&s.contains(t.target)||null==e||e.classList.remove("show")}t.target.closest(".bottom-tool-menu")||t.target.closest(".confirmation-modal-overlay")||this.closeMenus()})}const e=document.querySelector("#latest-edits-tab");e.addEventListener("click",()=>this.updateDiffDisplay(this.ws.queue.current.item,!1)),this.addTooltipListener(e);const t=document.querySelector("#consecutive-edits-tab");t.addEventListener("click",()=>this.updateDiffDisplay(this.ws.queue.current.item,!0)),this.addTooltipListener(t),document.querySelector("#pending-changes-container > .accept").addEventListener("click",async e=>{await this.ws.gui.settings.waitForClose();const t=await this.dialog.input("Accept Pending Changes","Enter an optional edit summary for accepting this change:","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"next-item",params:{}},{name:"accept-pending-edit",params:{summary:t}}]})}),document.querySelector("#pending-changes-container > .reject").addEventListener("click",async e=>{await this.ws.gui.settings.waitForClose();const t=await this.dialog.input("Reject Pending Changes","Enter an optional edit summary for rejecting this change:","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"next-item",params:{}},{name:"reject-pending-edit",params:{summary:t}}]})}),document.querySelectorAll("#bottom-tools [data-tooltip]").forEach(e=>this.addTooltipListener(e));{const e=document.querySelector("#queue");{const t=this.ws.store.UI.queue.width;t&&(e.style.width=t,document.querySelector("#right-container").style.width=`calc(100% - ${t})`)}const t=document.querySelector("#right-details");{const e=this.ws.store.UI.details.width;e&&(t.style.width=e,document.querySelector("#main-container").style.width=`calc(100% - ${e})`)}const n={active:null,section:null,x:null,width:null,windowWidth:null},s=(e,t,s)=>{s.preventDefault(),n.active=e,n.section=t,n.x=s.clientX,n.width=t.getBoundingClientRect().width,n.windowWidth=innerWidth},i=document.querySelector("#queue-width-adjust");i.addEventListener("pointerdown",t=>s(i,e,t));const a=document.querySelector("#details-width-adjust");a.addEventListener("pointerdown",e=>s(a,t,e)),addEventListener("pointerup",()=>{n.active===i?this.ws.store.UI.queue.width=e.style.width:n.active===a&&(this.ws.store.UI.details.width=t.style.width),n.active=null,n.section=null}),addEventListener("pointermove",e=>{if(!n.active)return;const t=e.clientX-n.x;let s;n.active===i?s=n.width+t:n.active===a&&(s=n.width-t);const r=.1*n.windowWidth,o=.3*n.windowWidth;s=Math.max(r,Math.min(o,s));const l=s/n.windowWidth*100;n.section.style.width=`${l}vw`,n.active===i?document.querySelector("#right-container").style.width=`calc(100% - ${l}vw)`:n.active===a&&(document.querySelector("#main-container").style.width=`calc(100% - ${l}vw)`)})}const n=a.WikiShield.config.changelog.version;var i,r;(n.endsWith("!")||n!==this.ws.store.changelog)&&(this.ws.store.changelog=n.replace(/!$/,""),null===(i=(r=electron).open)||void 0===i||i.call(r,"changelog"));this.addTooltipListener(document.querySelector("#settings-icon")),document.querySelectorAll("#queue-top-right > span").forEach(e=>this.addTooltipListener(e)),this.updateZenMode(),this.reorderQueues(),this.newCurrentItem(null),document.querySelector("#settings-icon").addEventListener("click",()=>{this.settings.open()}),this.events.button(document.querySelector("#clear-queue"),"clear-queue"),this.events.button(document.querySelector("#previous-item-button"),"previous-item"),this.events.button(document.querySelector("#next-item-button"),"next-item"),this.events.button(document.querySelector("#user-open-user-page"),"open-user-page"),this.events.button(document.querySelector("#user-open-user-talk"),"open-user-talk"),this.events.button(document.querySelector("#user-view-contribs"),"open-user-contributions"),this.events.button(document.querySelector("#user-view-filter-log"),"open-filter-log"),this.events.button(document.querySelector("#user-whitelist"),"whitelist-user"),this.events.button(document.querySelector("#user-unwhitelist"),"unwhitelist-user"),this.events.button(document.querySelector("#user-highlight"),"highlight-user"),this.events.button(document.querySelector("#user-unhighlight"),"unhighlight-user"),this.events.submenu(document.querySelector("#user-welcome .submenu"),"welcome-user"),this.events.submenu(document.querySelector("#user-report-aiv .submenu"),"report-user-to-aiv"),this.events.submenu(document.querySelector("#user-report-uaa .submenu"),"report-user-to-uaa"),this.events.submenu(document.querySelector("#user-request-global-block .submenu"),"request-global-block"),this.events.submenu(document.querySelector("#user-request-global-lock .submenu"),"request-global-lock"),this.events.submenu(document.querySelector("#user-new-talk-topic .submenu"),"send-message-to-user-talk"),this.events.button(document.querySelector("#page-open-page"),"open-page"),this.events.button(document.querySelector("#page-open-talk"),"open-page-talk"),this.events.button(document.querySelector("#page-watch"),"watch-page"),this.events.button(document.querySelector("#page-unwatch"),"unwatch-page"),this.events.button(document.querySelector("#page-whitelist"),"whitelist-page"),this.events.button(document.querySelector("#page-unwhitelist"),"unwhitelist-page"),this.events.button(document.querySelector("#page-highlight"),"highlight-page"),this.events.button(document.querySelector("#page-unhighlight"),"unhighlight-page"),this.events.submenu(document.querySelector("#page-request-protection .submenu"),"request-page-protection"),this.events.button(document.querySelector("#page-view-history"),"open-page-history"),this.events.submenu(document.querySelector("#page-new-talk-topic .submenu"),"send-message-to-page-talk"),this.events.button(document.querySelector("#edit-view-revision"),"open-revision"),this.events.button(document.querySelector("#edit-view-diff"),"open-diff"),this.events.button(document.querySelector("#edit-thank-user"),"thank-user"),this.events.submenu(document.querySelector("#edit-rollback .submenu"),"rollback-edit"),this.events.submenu(document.querySelector("#edit-rollback-goodfaith .submenu"),"rollback-goodfaith-edit"),this.events.submenu(document.querySelector("#edit-undo .submenu"),"undo-edit"),this.events.button(document.querySelector("#copy-link"),"copy-link"),this.events.button(document.querySelector("#refresh-user-contributions"),"refresh-user-contributions"),this.events.button(document.querySelector("#user-contributions > .footer"),"open-user-contributions"),this.events.button(document.querySelector("#refresh-page-history"),"refresh-page-history"),this.events.button(document.querySelector("#page-history > .footer"),"open-page-history"),c.Queue.types.forEach(e=>{this.events.button(document.querySelector(`#queue-tab-${e}`),`switch-to-${e}-queue`)}),this.cache(),this.animation(),this.update(),this.renderQueue(),electron.menuEnabler({browser:!0,settings:{preferences:!0},help:{changelog:!0}})}cache(){m(f,this).$pc=document.querySelector("#pending-changes-container"),m(f,this).$bottom=document.querySelector("#bottom-tools"),m(f,this).$diff=document.querySelector("#diff-container > table")}animation(){try{var e,t;const s=m(f,this);if(null!==(e=s.$pc)&&void 0!==e&&e.isConnected||(s.$pc=document.querySelector("#pending-changes-container")),null!==(t=s.$bottom)&&void 0!==t&&t.isConnected||(s.$bottom=document.querySelector("#bottom-tools")),s.$pc&&s.$bottom){var n;const e=s.$bottom.getBoundingClientRect(),t=e.top-s.$pc.offsetHeight,i=(e.left+e.right)/2;if(s.top!==t&&(s.$pc.style.top=`${t}px`,s.top=t),s.left!==i&&(s.$pc.style.left=`${i}px`,s.left=i),null!==(n=s.$diff)&&void 0!==n&&n.isConnected||(s.$diff=document.querySelector("#diff-container > table")),s.$diff){const t=window.innerHeight-e.top;s.marginBottom!==t&&(s.$diff.style.marginBottom=`${t}px`,s.marginBottom=t)}}}catch(e){console.error("Error in animation loop:",e)}requestAnimationFrame(()=>this.animation())}update(){try{const e=new Date;document.querySelectorAll("[data-time]").forEach(t=>{const n=new Date(t.dataset.time);switch(t.dataset.timeFormat){case"notification":t.textContent=this.ws.util.formatNotificationTime(n,"timeNow"in t.dataset?new Date(t.dataset.timeNow):e)+(t.dataset.timePostfix||"");break;case"duration":t.textContent=this.ws.util.formatDuration(n,"timeNow"in t.dataset?new Date(t.dataset.timeNow):e)+(t.dataset.timePostfix||"")}})}catch(e){console.error("Error updating time elements:",e)}setTimeout(()=>this.update(),1e3)}async updateDEFCON(){var e;const t=await this.ws.getDEFCON(),n=document.querySelector("#DEFCON");n.title=`DEFCON-${null!==t.level?t.level:"N/A"} (${t.info?`${t.info} revert${1===+t.info?"":"s"} per minute`:"No data"})`;const s=n.querySelector(".dot");s.className="dot",null!==t.level&&s.classList.add(`DEFCON-${t.level}`),document.querySelector(".DEFCON-RPM").textContent=null!==(e=t.info)&&void 0!==e?e:"N/A"}generateItemHTML(e,t=!1){const n=this.getORESColor(e.ores),s="sizediff"in e?this.ws.util.getChangeColor(e.sizediff):void 0,a=(0,i.CreateDOMElement)("div");{const t=(0,i.CreateDOMElement)("div",{class:"item-color",style:{"--ores-color":n},dataset:{ores:e.ores}});a.appendChild(t)}{var r,o,l;const t=(0,i.CreateDOMElement)("div",{class:"item-body",style:{"--ores-color":n,"--diff-color":s},datset:{ores:e.ores}});a.appendChild(t);{const n=(0,i.CreateDOMElement)("div",{class:"header"});t.appendChild(n);{const t=this.ws.store.highlight.pages.has(e.page.title),s=(0,i.CreateDOMElement)("span",{class:"page-title"+(t?" highlighted":""),content:e.page.title,dataset:t?{tooltip:"Page is highlighted",tooltipDelay:500}:{}});this.addTooltipListener(s),n.appendChild(s);const a=(0,i.CreateDOMElement)("i",{class:"fas fa-file-lines"});s.prepend(a)}{const t=(0,i.CreateDOMElement)("span",{class:"timestamp"});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-clock",style:{"font-size":"11px"}});t.appendChild(s);const a=(0,i.CreateDOMElement)("span",{content:this.ws.util.formatNotificationTime(new Date(e.timestamp)),dataset:{tooltip:new Date(e.timestamp).toLocaleString(),tooltipDelay:500,time:e.timestamp,timeFormat:"notification"}});this.addTooltipListener(a),t.appendChild(a)}}{var d;const n=(0,i.CreateDOMElement)("div",{class:"meta"});t.appendChild(n);const s=null!==(d=e.performer)&&void 0!==d?d:e.user;{const t=s.blocked,a=this.ws.util.expiryToDate(null==t?void 0:t.expiry),r=this.ws.store.highlight.users.has(s.name),o=void 0===s.talk,l=(0,i.CreateDOMElement)("span",{class:"user-chip"+(!1===(null==t?void 0:t.partial)?" blocked":"")+(r?" highlighted":"")+(o?" empty-talk":""),content:e.user.name,dataset:!1===(null==t?void 0:t.partial)?{tooltip:`Blocked ${a===1/0?"indefinitely":`until ${a.toLocaleString()}`} (${t.reason})`,tooltipDelay:500}:r?{tooltip:"User is highlighted",tooltipDelay:500}:o?{tooltip:"User has an empty talk page",tooltipDelay:500}:{}});this.addTooltipListener(l),n.appendChild(l);const d=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(s.anon?"user-secret":"user"),style:{"font-size":"11px"}});l.prepend(d)}{const t=(0,i.CreateDOMElement)("div",{class:"chips"});if(n.appendChild(t),"abuselog"===e.type){const n=["disallow","warn","showcaptcha","tag","none"],s=n.length;let a=s-1;for(let t=0;t<s;t++)if(e.origin.result.has(n[t])){a=t;break}const r=(0,i.CreateDOMElement)("span",{class:"ores-chip",dataset:{tooltip:`Action taken: ${n[a]}`,tooltipDelay:500}});this.addTooltipListener(r),t.appendChild(r);const o=(0,i.CreateDOMElement)("i",{class:`fas fa-${["ban","exclamation-triangle","robot","tag","check"][a]}`,style:{"font-size":"11px"}});r.prepend(o)}else{const n=(0,i.CreateDOMElement)("span",{class:"ores-chip",content:Number.isNaN(e.ores)?"-":Math.round(100*e.ores),dataset:{tooltip:"Score",tooltipDelay:500}});this.addTooltipListener(n),t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-fire",style:{"font-size":"11px"}});n.prepend(s)}{const n=(0,i.CreateDOMElement)("div",{class:"diff-chips"});if(t.appendChild(n),e.minor){const e=(0,i.CreateDOMElement)("span",{class:"minor-chip",dataset:{tooltip:"Minor edit",tooltipDelay:500}});this.addTooltipListener(e),n.appendChild(e);const t=(0,i.CreateDOMElement)("i",{class:"fas fa-m",style:{"font-size":"11px"}});e.appendChild(t)}if("sizediff"in e){const t=(0,i.CreateDOMElement)("span",{class:"diff-chip",content:Math.abs(e.sizediff).toLocaleString(),dataset:{tooltip:"Size difference",tooltipDelay:500}});if(this.addTooltipListener(t),n.appendChild(t),0!==e.sizediff){const n=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.sizediff>0?"plus":"minus"),style:{"font-size":"11px"}});t.prepend(n)}}}}}if(e.has_comment){const n=(0,i.CreateDOMElement)("div",{class:"item-comment"});t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"11px"}});n.appendChild(s);const a=(0,i.CreateDOMElement)("span",{class:"text",html:e.comment,dataset:{tooltip:e.comment,tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(a),n.appendChild(a)}const c=null!==(r=null!==(o=e.tags)&&void 0!==o?o:null===(l=e.filters)||void 0===l?void 0:l.map(e=>`${e.filter} (${"-1"===e.id?"private":e.id})`))&&void 0!==r?r:[];if(c.length>0){const e=(0,i.CreateDOMElement)("div",{class:"item-tags"});t.appendChild(e),c.forEach(t=>{const n=(0,i.CreateDOMElement)("span",{class:"tag",content:t});e.appendChild(n)})}}if(t){const e=(0,i.CreateDOMElement)("div",{class:"remove-button"});a.appendChild(e);const t=(0,i.CreateDOMElement)("i",{class:"fas fa-xmark"});e.appendChild(t)}return a.innerHTML}generateEditDetails(e,t=!1){if(!e)return void(document.querySelector("#edit-details").innerHTML="<div class='central'>Nothing selected</div>");const n="edit"===c.Queue.groups[e.type]?this.ws.queue.pending.get(e.id):null,s=document.querySelector("#edit-details");s.style.setProperty("--diff-color","sizediff"in e?this.ws.util.getChangeColor(e.sizediff):void 0),s.innerHTML="";{const t=(0,i.CreateDOMElement)("div",{class:"header"});s.appendChild(t);{const n=this.ws.store.highlight.pages.has(e.page.title),s=(0,i.CreateDOMElement)("span",{class:"page-title"+(n?" highlighted":""),dataset:n?{tooltip:"Page is highlighted",tooltipDelay:500}:{}});this.addTooltipListener(s),t.appendChild(s);const a=(0,i.CreateDOMElement)("i",{class:"fas fa-file-lines"});let r;switch(s.appendChild(a),c.Queue.groups[e.type]){case"edit":r="page";break;case"logevent":r="log";break;case"abuselog":r="page-abuse"}const o=(0,i.CreateDOMElement)("a",{content:e.page.title,dataset:{multipleHrefs:`${r};title=${encodeURIComponent(e.page.title)}&${"log"===r?`log=${JSON.stringify(e)}`:`id=${e.id}`}`,tooltip:e.page.title,tooltipDelay:500},attributes:{href:this.ws.page(e.page.title)}});this.addTooltipListener(o),s.appendChild(o)}{var a;const s=(0,i.CreateDOMElement)("div",{class:"meta"});t.appendChild(s);const l=null!==(a=e.performer)&&void 0!==a?a:e.user;{var o;const e=Object.keys(null!==(o=null==n?void 0:n.users)&&void 0!==o?o:{}).filter(e=>e!==l.name),t=l.blocked,a=this.ws.util.expiryToDate(null==t?void 0:t.expiry),d=this.ws.store.highlight.users.has(l.name),c=void 0===l.talk,u=(0,i.CreateDOMElement)("span",{class:"user-chip"+(!1===(null==t?void 0:t.partial)?" blocked":"")+(d?" highlighted":"")+(c?" empty-talk":""),dataset:!1===(null==t?void 0:t.partial)?{tooltip:`Blocked ${a===1/0?"indefinitely":`until ${a.toLocaleString()}`} (${t.reason})`,tooltipDelay:500}:d?{tooltip:"User is highlighted",tooltipDelay:500}:c?{tooltip:"User has an empty talk page",tooltipDelay:500}:{}});this.addTooltipListener(u),s.appendChild(u);const p=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.length>0?"users":l.anon?"user-secret":"user")});u.appendChild(p);const g=(0,i.CreateDOMElement)("a",{content:l.name,dataset:{multipleHrefs:`user;name=${encodeURIComponent(l.name)}`,tooltip:l.name,tooltipDelay:500},attributes:{href:this.ws.page(`User:${l.name}`)}});if(this.addTooltipListener(g),u.appendChild(g),e.length>0){const t=(0,i.CreateDOMElement)("span",{class:"other-users",content:` and ${e.length} ${r.Text.pluralize("other",e.length)}`,dataset:{tooltip:e.join(", "),tooltipDelay:500}});this.addTooltipListener(t),u.appendChild(t)}}}}{var l;const a=(0,i.CreateDOMElement)("div",{class:"subheader"});if(s.appendChild(a),(null==n?void 0:n.count)>1||t&&(null===(l=e.consecutive)||void 0===l?void 0:l.count)>1){const t=(0,i.CreateDOMElement)("div",{class:"item-comment"});a.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comments",style:{"font-size":"11px"}});t.appendChild(s);const o=null!=n?n:e.consecutive,l=(0,i.CreateDOMElement)("span",{class:"text",content:`${o.count} ${r.Text.pluralize("edit",o.count)} over the course of `,dataset:{tooltip:o.edits.map(e=>{const t=(0,i.CreateDOMElement)("div",{style:{display:"flex","flex-direction":"column",gap:"6px"}});{const n=(0,i.CreateDOMElement)("div",{style:{display:"flex","align-items":"center",gap:"6px",width:"100%","justify-content":"space-between","font-size":"13px"}});t.appendChild(n);{const t=(0,i.CreateDOMElement)("span",{style:{display:"flex","align-items":"center",gap:"4px","font-weight":"500"},content:e.user});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.anon?"user-secret":"user"),style:{"font-size":"11px",opacity:"0.7"}});t.prepend(s)}{const t=(0,i.CreateDOMElement)("span",{style:{display:"flex","align-items":"center",gap:"4px","font-size":"12px",opacity:"0.75"},content:this.ws.util.formatNotificationTime(new Date(e.timestamp)),dataset:{time:e.timestamp,timeFormat:"notification"}});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-clock",style:{"font-size":"10px",opacity:"0.7"}});t.prepend(s)}}{const n=(0,i.CreateDOMElement)("div",{style:{display:"flex","align-items":"flex-start",gap:"4px","font-size":"12px",opacity:"0.85",padding:"2px 0"},content:e.comment||"No edit summary"});t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"10px",opacity:"0.7","flex-shrink":"0","margin-top":"2px"}});n.prepend(s)}return t.outerHTML}).join("<br>"),tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(l),t.appendChild(l);const d=(0,i.CreateDOMElement)("span",{class:"time",content:this.ws.util.formatDuration(new Date(o.timestamp.old),new Date(o.timestamp.new)),dataset:{tooltip:`${new Date(o.timestamp.old).toLocaleString()}—${new Date(o.timestamp.new).toLocaleString()}`,tooltipHtml:!0,tooltipDelay:500,time:o.timestamp.old,timeNow:o.timestamp.new,timeFormat:"duration"}});this.addTooltipListener(d),t.appendChild(d)}else if(e.has_comment){const t=(0,i.CreateDOMElement)("div",{class:"item-comment"});a.appendChild(t);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"11px"}});t.appendChild(n);const s=(0,i.CreateDOMElement)("span",{class:"text",html:e.comment,dataset:{tooltip:e.comment,tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(s),t.appendChild(s)}else{const e=(0,i.CreateDOMElement)("div",{class:"item-comment none",content:"No edit summary"});a.appendChild(e)}{const t=(0,i.CreateDOMElement)("div",{class:"meta"});if(a.appendChild(t),e.minor){const e=(0,i.CreateDOMElement)("span",{class:"minor-chip",dataset:{tooltip:"Minor edit",tooltipDelay:500}});this.addTooltipListener(e),t.appendChild(e);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-m",style:{"font-size":"11px"}});e.appendChild(n)}if("sizediff"in e){const n=(0,i.CreateDOMElement)("span",{class:"diff-chip",content:Math.abs(e.sizediff).toLocaleString(),dataset:{tooltip:"Size difference",tooltipDelay:500}});if(this.addTooltipListener(n),t.appendChild(n),0!==e.sizediff){const t=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.sizediff>0?"plus":"minus"),style:{"font-size":"11px"}});n.prepend(t)}}}}}renderQueue(e=null,t=null,n=null){var s,a,r;if(document.querySelector("#previous-item-button").classList.toggle("disabled",!this.ws.queue.canGoPrevious()),document.querySelector("#next-item-button").classList.toggle("disabled",!this.ws.queue.canGoNext()),null!=e||(e=this.ws.queue.current.queue),null!=t||(t=this.ws.queue.current.item),null!=n||(n=this.ws.queue.current.type),this.updateQueueTabs(),n!==this.ws.queue.current.type)return;const o=document.querySelector("#queue-items");if(0===e.length){var l,d;const e=document.createElement("div");return e.classList.add("queue-empty"),e.textContent="No items in queue",o.innerHTML=e.outerHTML,void((null===(l=this.ws.queue.queues[n].previous)||void 0===l?void 0:l.id)!==(null===(d=t)||void 0===d?void 0:d.id)&&(this.ws.queue.queues[n].previous=t,this.newCurrentItem(t)))}o.querySelectorAll(".queue-empty").forEach(e=>e.remove());const c=new Map;for(const e of o.children)c.set(+e.dataset.id,e);let u=null;for(const s of e){var p;let i=c.get(s.id);var g;if(!i)i=document.createElement("div"),i.classList.add("queue-item"),i.dataset.id=s.id,i.dataset.type=n,i.innerHTML=this.generateItemHTML(s,"pending"!==n),null===(g=i.querySelector(".remove-button"))||void 0===g||g.addEventListener("click",i=>{i.stopPropagation();const a=e.findIndex(e=>e.id===s.id);var r;a>=0&&(s.id===(null===(r=t)||void 0===r?void 0:r.id)?this.ws.queue.next():(e.splice(a,1),this.ws.queue.queues[n].history.push({...s,history:performance.now()}),this.removeQueueItem(n,s.id),this.renderQueue()))}),s.mentions.has&&this.ws.store.settings.username_highlighting.enabled&&(i.classList.add("mentions-me"),i.dataset.tooltip="This queue item contains your username",this.addTooltipListener(i)),i.addEventListener("click",()=>{this.ws.queue.queues[n].item=s,this.ws.current=this.ws.queue.queues[n],this.renderQueue()}),o.appendChild(i),c.set(s.id,i),i.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e));null===u?i!==o.firstChild&&o.insertBefore(i,o.firstChild):i.previousSibling!==u&&o.insertBefore(i,u.nextSibling),i.classList.toggle("current",s.id===(null===(p=t)||void 0===p?void 0:p.id)),u=i}for(const[t,n]of c.entries())e.some(e=>e.id===t)||n.remove();let h=null;for(const t of e){if(!1===t.history)break;h=t}if(null===(s=o.querySelector(".historical-bar"))||void 0===s||s.remove(),null!==h){const e=(0,i.CreateDOMElement)("div",{class:"historical-bar"});o.insertBefore(e,c.get(h.id).nextSibling);const t=(0,i.CreateDOMElement)("span",{class:"label"});e.appendChild(t);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-box-archive",attributes:{title:"All items above this line have been viewed"}});t.appendChild(n)}(null===(a=this.ws.queue.queues[n].previous)||void 0===a?void 0:a.id)!==(null===(r=t)||void 0===r?void 0:r.id)&&(this.ws.queue.queues[n].previous=t,this.newCurrentItem(t))}removeQueueItem(e,t){const n=document.querySelector(`.queue-item[data-type="${e}"][data-id="${t}"]`);n&&(n.remove(),this.updateQueueTabs([e]))}clearQueueItems(){document.querySelector("#queue-items").innerHTML="",this.renderQueue()}updateHiddenItems(e){if(void 0===e&&(e=this.ws.queue.current.item),null===e)return this.ws.store.UI.hide_tools,document.querySelectorAll("[data-queue-type]").forEach(e=>e.classList.add("hidden"));let t=e.type;"abuselog"===t&&e.revid&&(t="edit");const n=c.Queue.groups[t];document.querySelectorAll("[data-queue-type]").forEach(e=>{const t=e.dataset.queueType||"*";"*"===t?e.classList.remove("hidden"):e.classList.toggle("hidden",!t.split(",").includes(n))})}async newCurrentItem(e=null,t=!1){var n,s;null===(n=this.controllers.current)||void 0===n||n.abort();const a=new AbortController;this.controllers.current=a,null!==e&&(this.updateDiffDisplay("loading"),await this.ws.queue.propagate(e,!0)),this.stopOutdatedCheck(),this.toggleEditWarNotice((null==e?void 0:e.reverts)>=3,(null==e?void 0:e.reverts)||0),this.toggleOutdatedNotice(!1),this.togglePendingNotice(!1),this.closeMenus(),this.removeTooltips(),document.querySelectorAll("#right-top > div > :not(.hidden)").forEach(e=>e.classList.add("hidden"));const r=document.querySelector("#user-contributions > .queue-list");r.innerHTML="";const o=document.querySelector("#page-history > .queue-list");if(o.innerHTML="",document.querySelector("#user-contributions > .header > .pills").innerHTML="",document.querySelector("#page-history > .header > .pills").innerHTML="",document.querySelector("#pending-changes-container").classList.toggle("hidden",!(this.ws.rights.review&&this.ws.queue.pending.has(null==e?void 0:e.id))),this.updateHiddenItems(e),null===e)return this.generateEditDetails(),document.querySelector("#diff-container").innerHTML="",document.querySelector("#diff-scroll-up").classList.add("hidden"),document.querySelector("#diff-scroll-down").classList.add("hidden"),document.querySelector("#ai-analysis-container").classList.add("hidden"),void([...document.querySelectorAll("#queue-tabs > .queue-tab")].every(e=>"none"===getComputedStyle(e).display)&&(document.querySelector("#diff-container").innerHTML='\n\t\t\t\t\t<div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; color: grey;">\n\t\t\t\t\t\t<div style="font-size: 48px; margin-bottom: 16px;">\n\t\t\t\t\t\t\t<i class="fas fa-shield-alt"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style="font-size: 24px; margin-bottom: 8px; text-align: center;">\n\t\t\t\t\t\t\tNo queues are enabled\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style="font-size: 14px; text-align: center; max-width: 100%; margin-top: 10px;">\n\t\t\t\t\t\t\tI heard there was a WikiShield,<br>\n\t\t\t\t\t\t\tWhich entered an oversaturated field,<br>\n\t\t\t\t\t\t\tBut you don’t ever use Huggle, do you?<br>\n\t\t\t\t\t\t\tWell it simplifies any AIV,<br>\n\t\t\t\t\t\t\tBut superintendence matters to me\n\t\t\t\t\t\t\t<span style="display: block; margin-top: 8px;">— User:WikiMacaroons</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t'));const l=e.type,d=c.Queue.groups[l];if(!t&&"abuselog"===l&&!e.revid){const t=async()=>{a.signal.aborted||this.ws.api.getAbuseLogRevid(e.id).then(n=>{var s,i;n&&(e.revid=n,e.id===(null===(i=this.ws.queue.current.item)||void 0===i?void 0:i.id)&&this.newCurrentItem(this.ws.queue.current.item,!0));e.id===(null===(s=this.ws.queue.current.item)||void 0===s?void 0:s.id)&&setTimeout(()=>t(),1e3)})};t()}const u=null==e||null===(s=e.page)||void 0===s?void 0:s.watched;if(document.querySelector("#page-watch").classList.toggle("hidden",!0===u),document.querySelector("#page-unwatch").classList.toggle("hidden",!0!==u),document.querySelector("#user-report-uaa").classList.toggle("hidden",null==e?void 0:e.user.anon),document.querySelector("#user-request-global-lock").classList.toggle("hidden",null==e?void 0:e.user.anon),this.ws.AI){const t=this.ws.store;null===e.AI.edit&&t.settings.AI.edit_analysis.enabled&&this.ws.AI.analyze.edit(e).then(t=>{e.AI.edit=t}).catch(t=>{e.AI.edit={error:t.message}}).finally(()=>{var t;e.id===(null===(t=this.ws.queue.current.item)||void 0===t?void 0:t.id)&&this.updateAIAnalysisDisplay(e.AI.edit)}),null!==e.AI.username||e.user.anon||t.whitelist.users.has(e.user)||!t.settings.AI.username_analysis.enabled||this.ws.AI.analyze.username(e).then(t=>{e.AI.username=t,t.flag&&this.ws.queue.promptUAA(e,t)}).catch(t=>{e.AI.username={error:t.message}})}if(this.updateAIAnalysisDisplay(e.AI.edit),!e.seen)switch(e.seen=!0,this.ws.store.statistics.edits_reviewed.total++,this.ws.queue.current.type){case"recent":this.ws.store.statistics.recent_changes_reviewed.total++;break;case"pending":this.ws.store.statistics.pending_changes_reviewed.total++;break;case"watchlist":this.ws.store.statistics.watchlist_changes_reviewed.total++;break;case"users":this.ws.store.statistics.users_reviewed.total++;break;case"abuselog":this.ws.store.statistics.abuselogs_reviewed.total++}{const t=(0,i.CreateDOMElement)("div",{class:"pill",content:`${e.user.edits.toLocaleString()} edit${1===e.user.edits?"":"s"}`});document.querySelector("#user-contributions > .header > .pills").appendChild(t)}if("0"!==e.user.warning){const t=(0,i.CreateDOMElement)("div",{class:`pill uw-${e.user.warning}`});document.querySelector("#user-contributions > .header > .pills").appendChild(t),t.textContent=`uw-${e.user.warning}`;const n=e.user.warnings;if(n.length>0){const s=document.createElement("div"),i=document.createElement("div");i.classList.add("tooltip-title"),i.textContent=`Warnings for ${e.user.name}`,s.appendChild(i);for(const e of n){const t=document.createElement("div");t.classList.add("tooltip-item","user-warnings"),s.appendChild(t);const n=document.createElement("span");n.classList.add("tooltip-item-level"),n.textContent=`${e.template}${e.level}`,t.appendChild(n);const i=document.createElement("div");i.classList.add("tooltip-item-details"),t.appendChild(i);const a=document.createElement("span");a.classList.add("tooltip-item-user"),a.textContent=e.username?`by User:${e.username}`:"by Unknown",i.appendChild(a),i.appendChild(document.createElement("br"));const r=document.createElement("span");r.classList.add("tooltip-item-date"),i.appendChild(r),e.timestamp?(r.dataset.time=e.timestamp,r.dataset.timeFormat="notification",r.textContent=this.ws.util.formatNotificationTime(new Date(e.timestamp))):r.textContent="Date unknown"}t.dataset.tooltip=s.innerHTML,t.dataset.tooltipHtml=!0}this.addTooltipListener(t)}const p=e.user.blocks;if(p.length>0){const t=(0,i.CreateDOMElement)("div",{class:"pill ub"});document.querySelector("#user-contributions > .header > .pills").appendChild(t);const n=document.createElement("div"),s=document.createElement("div");s.classList.add("tooltip-title"),s.textContent=`Blocks for ${e.user.name}`,n.appendChild(s);for(const e of p){var g;const t=document.createElement("div");t.classList.add("tooltip-item","user-blocks"),n.appendChild(t);const s=document.createElement("span");s.classList.add("tooltip-item-level"),s.innerHTML=e.parsedcomment||"No reason provided",t.appendChild(s);const i=document.createElement("div");i.classList.add("tooltip-item-details"),t.appendChild(i);const a=document.createElement("span");a.classList.add("tooltip-item-user"),a.textContent=e.user?`by User:${e.user}`:"by Unknown",i.appendChild(a),i.appendChild(document.createElement("br"));const r=document.createElement("span");r.classList.add("tooltip-item-time"),i.appendChild(r);const o=document.createElement("span");e.timestamp?(o.dataset.time=e.timestamp,o.dataset.timeFormat="notification",o.textContent=this.ws.util.formatNotificationTime(new Date(e.timestamp))):o.textContent="Date unknown",r.appendChild(o);const l=document.createElement("span");l.textContent=`(for ${(null===(g=e.params)||void 0===g?void 0:g.duration)||"an unknown duration"})`,r.appendChild(l)}t.classList.remove("hidden"),t.textContent=`${p.length} block${1===p.length?"":"s"}`,t.dataset.tooltip=n.innerHTML,t.dataset.tooltipHtml=!0,this.addTooltipListener(t)}{const t=document.querySelector("#user-whitelist"),n=document.querySelector("#user-unwhitelist");if(t&&n){const s=()=>{const s=this.ws.store.whitelist.users.has(e.user.name);t.classList.toggle("hidden",s),n.classList.toggle("hidden",!s)};t.onclick=s,n.onclick=s,s()}const s=document.querySelector("#user-highlight"),i=document.querySelector("#user-unhighlight");if(s&&i){const t=()=>{const t=this.ws.store.highlight.users.has(e.user.name);s.classList.toggle("hidden",t),i.classList.toggle("hidden",!t)};s.onclick=t,i.onclick=t,t()}}{const t=document.querySelector("#page-whitelist"),n=document.querySelector("#page-unwhitelist");if(t&&n){const s=()=>{const s=this.ws.store.whitelist.pages.has(e.page.title);t.classList.toggle("hidden",s),n.classList.toggle("hidden",!s)};t.onclick=s,n.onclick=s,s()}const s=document.querySelector("#page-highlight"),i=document.querySelector("#page-unhighlight");if(s&&i){const t=()=>{const t=this.ws.store.highlight.pages.has(e.page.title);s.classList.toggle("hidden",t),i.classList.toggle("hidden",!t)};s.onclick=t,i.onclick=t,t()}}(async t=>{const n=e.user.contributions;for(const e of n){var s;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(s=this.ws.queue.current.item.revid)&&void 0!==s?s:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML({page:{title:e.title},user:{name:e.user},comment:"Loading...",timestamp:e.timestamp,sizediff:0,ores:NaN,tags:e.tags||[],type:"edit"}),r.appendChild(t),requestAnimationFrame(()=>t.classList.remove("no-transition"))}if(e.page.cached_contributions){const s=await e.page.cached_contributions;if(t.aborted)return;n.some((e,t)=>{var n;return e.id!==(null===(n=s[t])||void 0===n?void 0:n.id)})&&delete e.page.cached_contributions}e.user.cached_contributions||(e.user.cached_contributions=this.ws.queue.generate("edit",n,!0));const i=await e.user.cached_contributions;if(!t.aborted){r.innerHTML="";for(const e of i.sort((e,t)=>new Date(t.timestamp)-new Date(e.timestamp))){var a;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(a=this.ws.queue.current.item.revid)&&void 0!==a?a:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML(e),r.appendChild(t),t.addEventListener("mouseover",()=>this.ws.queue.propagate(e,!0)),t.addEventListener("click",()=>this.ws.queue.loadFromItem(e)),t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e)),requestAnimationFrame(()=>t.classList.remove("no-transition"))}}})(a.signal).catch(e=>{a.signal.aborted||console.error("Error loading contributions:",e)});switch(d){case"edit":{var h;if(this.startOutdatedCheck(e),!this.ws.queue.pending.has(e.id))(null===(h=e.consecutive)||void 0===h?void 0:h.count)>=2&&(document.querySelector("#latest-edits-tab").classList.remove("hidden"),document.querySelector("#consecutive-edits-tab").classList.remove("hidden"));const t=e.page.protection;if(t.protected||this.ws.queue.pending.has(e.id)){const n=(0,i.CreateDOMElement)("div",{class:"pill"});if(document.querySelector("#page-history > .header > .pills").appendChild(n),t.protected){let e,s;switch(t.level){case"sysop":e="F",s="Requires sysop right to edit";break;case"template":e="T",s="Requires template editor to edit";break;case"extendedconfirmed":e="EC",s="Requires extended confirmed right to edit";break;case"autoconfirmed":e="AC",s="Requires autoconfirmed right to edit";break;default:e="?",s="Uknown protection level"}n.innerHTML=`<i class="fas fa-lock"></i> <span class="protection-icon" data-tooltip="${s}">${e}</span>`,this.addTooltipListener(n.querySelector("[data-tooltip]"))}else if(this.ws.queue.pending.has(e.id)){var m;const t=(null===(m=this.ws.queue.pending.get(e.id).pending.stability)||void 0===m?void 0:m.parsedcomment)||"No comment provided",s=document.createElement("span");s.classList.add("protection-icon"),s.innerHTML="<i class='fas fa-lock'></i> PC",s.dataset.tooltip=t,s.dataset.tooltipHtml=!0,n.appendChild(s),this.addTooltipListener(n.querySelector("[data-tooltip]"))}}for(const t of e.page.metadata){const e=(0,i.CreateDOMElement)("div",{class:"pill",content:t});document.querySelector("#page-history > .header > .pills").appendChild(e)}}break;case"logevent":break;case"abuselog":{e.revid&&this.startOutdatedCheck(e);const t=document.querySelector("#protection-indicator");if(t){const n=e.page.protection;if(n.protected){let e,s;switch(n.level){case"sysop":e="P",s="Requires sysop right to edit";break;case"extendedconfirmed":e="X",s="Requires extended confirmed right to edit";break;case"autoconfirmed":e="A",s="Requires autoconfirmed right to edit";break;default:e="?",s="Uknown protection level"}t.innerHTML=`<span class="protection-icon" data-tooltip="${s}">${e}</span>`,this.addTooltipListener(t.querySelector("[data-tooltip]"))}else if(this.ws.queue.pending.has(e.id)){var v;const n=(null===(v=this.ws.queue.pending.get(e.id).pending.stability)||void 0===v?void 0:v.parsedcomment)||"No comment provided",s=document.createElement("span");s.classList.add("protection-icon"),s.textContent="PC",s.dataset.tooltip=n,s.dataset.tooltipHtml=!0,t.appendChild(s),this.addTooltipListener(t.querySelector("[data-tooltip]"))}else t.innerHTML=""}}}if("edit"===d||"abuselog"===d){(async t=>{const n=e.page.history;for(const e of n){var s;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(s=this.ws.queue.current.item.revid)&&void 0!==s?s:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML({page:{title:e.title},user:{name:e.user},comment:"Loading...",timestamp:e.timestamp,sizediff:0,ores:NaN,tags:e.tags||[],type:"edit"}),o.appendChild(t),requestAnimationFrame(()=>t.classList.remove("no-transition"))}if(e.page.cached_history){const s=await e.page.cached_history;if(t.aborted)return;n.some((e,t)=>{var n;return e.id!==(null===(n=s[t])||void 0===n?void 0:n.id)})&&delete e.page.cached_history}e.page.cached_history||(e.page.cached_history=this.ws.queue.generate("edit",n,!0));const i=await e.page.cached_history;if(!t.aborted){o.innerHTML="";for(const e of i.sort((e,t)=>new Date(t.timestamp)-new Date(e.timestamp))){var a;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(a=this.ws.queue.current.item.revid)&&void 0!==a?a:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML(e),o.appendChild(t),t.addEventListener("mouseover",()=>this.ws.queue.propagate(e,!0)),t.addEventListener("click",()=>this.ws.queue.loadFromItem(e)),t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e)),requestAnimationFrame(()=>t.classList.remove("no-transition"))}}})(a.signal).catch(e=>{a.signal.aborted||console.error("Error loading history:",e)})}this.updateDiffDisplay(e,!1)}updateDiffDisplay(e,t){var n;this.ws.mobile&&(t=!0);const s=document.querySelector("#diff-container");if(!e)return document.querySelector("#diff-scroll-up").classList.add("hidden"),void document.querySelector("#diff-scroll-down").classList.add("hidden");if("loading"===e){const e=document.createElement("div");e.className="loading-container";const t=document.createElement("div");t.className="loading-spinner",e.appendChild(t);const n=document.createElement("i");n.className="fas fa-spinner fa-spin",t.appendChild(n);const i=document.createElement("div");return i.className="loading-text animate-loading-dots",i.textContent="Loading edit",e.appendChild(i),void(s.innerHTML=e.outerHTML)}switch(document.querySelectorAll("#right-top > .tabs > .tab.selected").forEach(e=>e.classList.remove("selected")),this.generateEditDetails(e,t),c.Queue.groups[e.type]){case"edit":var i,a;if(this.ws.queue.pending.get(e.id))s.innerHTML=`<table>${null!==(i=e.diff)&&void 0!==i?i:"<em>No diff available</em>"}</table>`;else if(t&&(null===(a=e.consecutive)||void 0===a?void 0:a.count)>1){var r,o;document.querySelector("#consecutive-edits-tab").classList.add("selected"),null===(r=e.consecutive.diff)||void 0===r||r?s.innerHTML=`<table>${null!==(o=e.consecutive.diff)&&void 0!==o?o:"<em>No diff available</em>"}</table>`:s.innerHTML="<table><em>No difference</em></table>"}else{var l;document.querySelector("#latest-edits-tab").classList.add("selected"),s.innerHTML=`<table>${null!==(l=e.diff)&&void 0!==l?l:"<em>No diff available</em>"}</table>`}if(this.ws.store.settings.username_highlighting.enabled){const t=this.ws.api.username;t&&(e.mentions.diff&&s.querySelectorAll("td").forEach(e=>{e.textContent&&this.ws.util.match(t,e.textContent)&&e.classList.add("ws-username-highlight")}),e.mentions.comment&&e.comment&&this.ws.util.match(t,e.comment)&&document.querySelector("#edit-details > .subheader > .item-comment > .text").classList.add("ws-username-highlight"))}break;case"logevent":if("users"===e.type){s.innerHTML="";const t=e.user.profanity,n=document.createElement("div");n.classList.add("profanity"),s.appendChild(n);const i=document.createElement("div");{i.classList.add("profanity-header"),n.appendChild(i);const e=document.createElement("div");{e.classList.add("profanity-score"),i.appendChild(e);const n=document.createElement("span");n.classList.add("score-label"),n.textContent="Profanity Score:",e.appendChild(n);const s=document.createElement("span");s.classList.add("score-value"),s.textContent=t.finalScore,e.appendChild(s)}const s=document.createElement("div");{s.classList.add("profanity-risk",`risk-${t.risk.toLowerCase()}`),i.appendChild(s);const e=document.createElement("span");switch(e.classList.add("fa"),t.risk){case"No":e.classList.add("fa-smile");break;case"Low":e.classList.add("fa-thumbs-up");break;case"Medium":e.classList.add("fa-meh");break;case"High":e.classList.add("fa-thumbs-down");break;case"Critical":e.classList.add("fa-skull-crossbones")}s.appendChild(e);const n=document.createElement("span");n.textContent=`${t.risk} risk`,s.appendChild(n)}}const a=t.matches;if(a.length>0){const e=document.createElement("div");e.classList.add("profanity-matches-header"),n.appendChild(e);const t=document.createElement("span");t.classList.add("fa","fa-search"),e.appendChild(t);const s=document.createElement("span");s.textContent=`Matched Terms (${a.length})`,e.appendChild(s);const i=document.createElement("div");i.classList.add("profanity-matches-list"),n.appendChild(i);for(const e of a){const t=document.createElement("div");{t.classList.add("profanity-match"),i.appendChild(t);const n=document.createElement("div");{n.classList.add("match-header"),t.appendChild(n);const s=document.createElement("span");s.classList.add("match-text"),s.textContent=e.match,n.appendChild(s);const i=document.createElement("span");i.classList.add("fa","fa-arrow-right"),n.appendChild(i);const a=document.createElement("span");a.classList.add("match-name"),a.textContent=e.name,n.appendChild(a)}const s=document.createElement("div");{s.classList.add("match-details"),t.appendChild(s);const n=document.createElement("div");{n.classList.add("match-stat"),s.appendChild(n);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Confidence",n.appendChild(t);const i=document.createElement("span");i.classList.add("stat-value"),i.dataset.tooltip="How certain we are this is a match.",i.dataset.tooltipDelay=500,i.textContent=`${Math.round(100*e.confidence)}%`,n.appendChild(i)}const i=document.createElement("div");{i.classList.add("match-stat"),s.appendChild(i);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Obfuscation",i.appendChild(t);const n=document.createElement("span");n.classList.add("stat-value"),n.dataset.tooltip="How much the term was altered from its original form.",n.dataset.tooltipDelay=500,n.textContent=`${Math.round(100*e.obfuscation)}%`,i.appendChild(n)}const a=document.createElement("div");{a.classList.add("match-stat"),s.appendChild(a);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Severity",a.appendChild(t);const n=document.createElement("span");n.classList.add("stat-value",`severity-${e.severity}`),n.dataset.tooltip="How severe this term is considered.",n.dataset.tooltipDelay=500,n.textContent=e.severity,a.appendChild(n)}}if(e.note){const n=document.createElement("div");{n.classList.add("match-note"),t.appendChild(n);const s=document.createElement("span");s.classList.add("fa","fa-info-circle"),n.appendChild(s);const i=document.createElement("span");i.classList.add("note-text"),i.textContent=e.note,n.appendChild(i)}}}t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e))}}else{const e=document.createElement("div");e.classList.add("profanity-no-matches"),n.appendChild(e);const t=document.createElement("span");t.classList.add("fa","fa-check-circle"),e.appendChild(t);const s=document.createElement("span");s.textContent="No profanity detected.",e.appendChild(s)}}break;case"abuselog":var d;if(s.innerHTML=`<table>${null!==(d=e.diff)&&void 0!==d?d:"<em>No diff available</em>"}</table>`,this.ws.store.settings.username_highlighting.enabled){const t=this.ws.api.username;t&&(e.mentions.diff&&s.querySelectorAll("td").forEach(e=>{e.textContent&&this.ws.util.match(t,e.textContent)&&e.classList.add("ws-username-highlight")}),e.mentions.comment&&e.comment&&this.ws.util.match(t,e.comment)&&document.querySelector("#edit-details > .subheader > .item-comment > .text").classList.add("ws-username-highlight"))}}s.querySelectorAll(":is(.mw-diff-movedpara-left, .mw-diff-movedpara-right)").forEach(e=>{const t=e.href.split("#")[1];delete e.href,e.innerHTML=e.classList.contains("mw-diff-movedpara-left")?">":"<",e.addEventListener("click",e=>{e.preventDefault();const n=s.querySelector(`a[name="${t}"]`);if(n){const e=n.getBoundingClientRect(),t=s.getBoundingClientRect(),i=e.top-t.top+s.scrollTop-(t.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),s.querySelectorAll(".flash-highlight").forEach(e=>e.classList.remove("flash-highlight"));const a=n.parentElement.parentElement;a.classList.add("flash-highlight"),setTimeout(()=>{var e;return null==a||null===(e=a.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)}})});const u=s.querySelectorAll(".diff-addedline, .diff-deletedline"),p=null!==(n=s.querySelectorAll(":is(.diff-addedline, .diff-deletedline) .diffchange")[0])&&void 0!==n?n:u[0];p?requestAnimationFrame(()=>{const e=p.getBoundingClientRect(),t=s.getBoundingClientRect(),n=e.top-t.top+s.scrollTop-(t.height-e.height)/2;function i(){const e=s.querySelectorAll(":is(.diff-addedline, .diff-deletedline) .diffchange");let t=null,n=null;const i=s.getBoundingClientRect();for(const s of e){let e=!1,a=!1;const r=s.getBoundingClientRect();r.bottom<i.top&&(e=!0),r.top>i.bottom&&(a=!0),e&&a||(e&&(t=s),null===n&&a&&(n=s))}const a=document.querySelector("#diff-scroll-up");a.classList.toggle("hidden",!t),a.onclick=()=>{const e=t.getBoundingClientRect(),n=s.getBoundingClientRect(),i=e.top-n.top+s.scrollTop-(n.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),t.classList.add("flash-highlight"),setTimeout(()=>{var e;return null===(e=t)||void 0===e||null===(e=e.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)};const r=document.querySelector("#diff-scroll-down");r.classList.toggle("hidden",!n),r.onclick=()=>{const e=n.getBoundingClientRect(),t=s.getBoundingClientRect(),i=e.top-t.top+s.scrollTop-(t.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),n.classList.add("flash-highlight"),setTimeout(()=>{var e;return null===(e=n)||void 0===e||null===(e=e.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)}}s.scrollTo({top:Math.max(0,n),behavior:"smooth"}),i(),s.onscroll=()=>requestAnimationFrame(i),window.onresize=()=>requestAnimationFrame(i)}):(document.querySelector("#diff-scroll-up").classList.add("hidden"),document.querySelector("#diff-scroll-down").classList.add("hidden"))}updateAIAnalysisDisplay(e){const t=document.querySelector("#ai-analysis-container");if(!t||!e)return t.classList.add("hidden");if(t.classList.remove("hidden"),e.error){const n=t.querySelector(":scope > .header > .assessment");n.textContent="Error",n.className="assessment error",t.querySelector(":scope > .header > .confidence").textContent="",t.querySelector(":scope > .explanation").textContent=e.error;t.querySelector(":scope > .issues").innerHTML=""}else{const n=t.querySelector(":scope > .header > .assessment");n.textContent=e.assessment,n.className=`assessment ${e.assessment.toLowerCase().replace(/\s+/g,"-")}`,t.querySelector(":scope > .header > .confidence").textContent=`${Math.round(100*(e.confidence||0))}% confidence`;const s=v(b,this,y).call(this,e.explanation||"No explanation provided.");t.querySelector(":scope > .explanation").innerHTML=s;const i=t.querySelector(":scope > .issues");i.innerHTML="";for(const t of e.issues||[]){const e=document.createElement("div");e.classList.add("issue",t.severity.toLowerCase().replace(/\s+/g,"-")),e.textContent=t.policy,i.appendChild(e)}t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e))}}async outdated(e){let t=e.type,n=e.id;if("abuselog"===t&&e.revid&&(t="edit",n=e.revid),"edit"!==c.Queue.groups[t])return this.toggleOutdatedNotice(!1),void this.togglePendingNotice(!1);if("pending"===e.type)return this.togglePendingNotice(!this.ws.queue.pending.has(n),!0);if(!e.pending&&"pending"===this.ws.queue.type)return this.togglePendingNotice(!0,!1);try{var s;const t=(await this.ws.api.getLatestIds([e.page.title]))[e.page.title];(null===(s=this.ws.queue.current.item)||void 0===s?void 0:s.id)===e.id&&this.toggleOutdatedNotice(t>n,t,e.page.title,n)}catch(e){console.error("Error checking if edit is outdated:",e),this.toggleOutdatedNotice(!1)}}startOutdatedCheck(e){this.stopOutdatedCheck(),this.outdated(e),this.intervals.outdated=setInterval(()=>{var t;e.id===(null===(t=this.ws.queue.current.item)||void 0===t?void 0:t.id)?this.outdated(e):this.stopOutdatedCheck()},1e3)}stopOutdatedCheck(){this.intervals.outdated&&(clearInterval(this.intervals.outdated),this.intervals.outdated=null),this.toggleOutdatedNotice(!1),this.togglePendingNotice(!1)}toggleEditWarNotice(e,t){const n=document.querySelector("#edit-war-notice");if(null!=e||(e=!n),e!==Boolean(n))if(e){const e=document.createElement("div");e.id="edit-war-notice",e.classList.add("notice","edit-war");const n=document.createElement("span");n.classList.add("fa","fa-warning"),e.appendChild(n);const s=document.createElement("span");s.classList.add("text"),s.innerHTML=`<b>3RR:</b> You have made ${t} reverts on this page in the last 24 hours.`,e.appendChild(s);const i=document.querySelector("#diff-container");i.parentElement.insertBefore(e,i)}else{const e=document.querySelector("#edit-war-notice");e&&e.remove()}}toggleOutdatedNotice(e,t,n,s){const i=document.querySelector("#outdated-notice");if(null!=e||(e=!i),e!==Boolean(i))if(e){const e=document.createElement("div");e.id="outdated-notice",e.classList.add("notice","outdated"),e.dataset.id=t,e.dataset.page=n;const s=document.createElement("span");s.classList.add("fa","fa-clock-rotate-left"),e.appendChild(s);const i=document.createElement("span");i.classList.add("text"),i.textContent="Newer revision available on this page.",e.appendChild(i);const a=document.createElement("span");a.classList.add("button"),a.innerHTML="<i class='fas fa-redo restore'></i> Restore this revision",a.addEventListener("click",async e=>{e.preventDefault();const t=await this.dialog.input("Restore Edit","Are you sure you want to restore this revision? This will create a new edit that reverts the page to this revision.","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"restore-edit",params:{summary:t}}]})}),e.appendChild(a);const r=document.createElement("span");r.classList.add("button"),r.innerHTML="View latest <i class='fas fa-arrow-right'></i>",r.addEventListener("click",t=>{t.preventDefault();const n=e.dataset.page,s=+e.dataset.id;n&&s&&this.ws.queue.loadFromRevision(n,s)}),e.appendChild(r);const o=document.querySelector("#diff-container");o.parentElement.insertBefore(e,o)}else{const e=document.querySelector("#outdated-notice");e&&e.remove()}else i&&(i.dataset.id=t,i.dataset.page=n)}togglePendingNotice(e,t){const n=document.querySelector("#pending-notice");if(null!=e||(e=!n),e!==Boolean(n))if(e){const e=document.createElement("div");e.id="pending-notice",e.classList.add("notice","outdated","pending");const n=document.createElement("span");n.classList.add("fa","fa-shield-alt"),e.appendChild(n);const s=document.createElement("span");s.classList.add("text"),s.textContent=t?"This revision cannot be reviewed because it is outdated":"This revision cannot be reviewed because it is not pending review",e.appendChild(s);const i=document.querySelector("#diff-container");i.parentElement.insertBefore(e,i)}else{const e=document.querySelector("#pending-notice");e&&e.remove()}}getORESColor(e){if(isNaN(e)||e<0)return"rgba(128, 128, 128, .5)";e=Math.min(Math.max(e||0,0),1);const t=w.palettes[this.ws.store.UI.theme.palette];return t[e*(t.length-1)|0]}updatePalette(){document.querySelectorAll("[data-ores]").forEach(e=>{e.style.setProperty("--ores-color",this.getORESColor(parseFloat(e.dataset.ores)))})}updateZenMode(){this.ws.notifications.count();const e=this.ws.store.settings.zen_mode;e.enabled&&e.music.enabled&&window.isElectron?this.ws.audio.zengine.start():this.ws.audio.zengine.stop(),document.querySelectorAll("[data-zen-show]").forEach(t=>{const n=t.dataset.zenShow.split(",");e.enabled&&!n.some(t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.enabled})?t.style.display="none":t.style.display=""})}updateAccessibility(){document.body.classList.toggle("colorblind-mode",this.ws.store.settings.accessibility.colorblind),document.body.classList.toggle("dyslexia-font",this.ws.store.settings.accessibility.dyslexia),document.body.classList.toggle("high-contrast",this.ws.store.settings.accessibility.high_contrast),document.body.classList.toggle("reduce-motion",this.ws.store.settings.accessibility.reduce_motion)}reorderQueues(){var e;const t=c.Queue.types.map(e=>({name:e,...this.ws.store.settings.queue[e]}));t.sort((e,t)=>e.order-t.order),t.forEach(e=>{const t=document.querySelector(`#queue-tab-${e.name}`);t&&(t.style.display=e.enabled?"":"none",t.parentElement.appendChild(t))});const n=t.find(e=>e.name===this.ws.queue.current.type)?this.ws.queue.current.type:null===(e=t.find(e=>e.enabled))||void 0===e?void 0:e.name;if(n)this.ws.queue.switch(n);else{const e=document.createElement("div");e.classList.add("queue-empty"),e.textContent="No items in queue",document.querySelector("#queue-items").innerHTML=e.outerHTML,this.newCurrentItem(null),this.ws.queue.switch("void")}}updateQueueTabs(e=c.Queue.types){const t=this.ws.queue.queues;e.forEach(e=>{const n=document.querySelector(`#queue-tab-${e}`);if(!n||!t[e])return;const s=n.querySelector(":scope > span > .icon-count"),i=t[e].queue.length;s.classList.toggle("hidden",0===i),s.textContent=i,n.classList.toggle("mentions-me",this.ws.store.settings.username_highlighting.enabled&&t[e].queue.some(e=>e.mentions.has))})}createTooltip(e,t="",n="",s=!1,i=10,a=null){const r=document.createElement("div");r.className=`tooltip ${t}`,r.style.opacity=0,s?r.innerHTML=n:r.textContent=n,document.body.querySelector("#app").appendChild(r),"function"==typeof a&&a(r),r.offsetHeight;const o=r.getBoundingClientRect(),l=o.width,d=o.height,c=e.getBoundingClientRect(),u=innerWidth,p=innerHeight,g=[["bottom",(c.left+c.right)/2-l/2,c.bottom+10,!0],["top",(c.left+c.right)/2-l/2,c.top-d-10,!0],["right",c.right+10,(c.top+c.bottom)/2-d/2,!0],["left",c.left-l-10,(c.top+c.bottom)/2-d/2,!0]];let h=null,m=-1/0;for(const[e,t,n,s]of g){let e=t,i=n;if(e>=0&&e+l<=u&&i>=0&&i+d<=p){m=100,h=[e,i];break}if(s){const s=Math.max(0,Math.min(e,u-l)),a=Math.max(0,Math.min(i,p-d)),r=!(s+l<=c.left||s>=c.right||a+d<=c.top||a>=c.bottom),o=Math.abs(s-t)+Math.abs(a-n),g=r?-50-o:50-o/10;g>m&&(m=g,h=[s,a])}}return h?(r.style.left=`${h[0]}px`,r.style.top=`${h[1]}px`):(r.style.left=`${Math.max(0,Math.min((c.left+c.right)/2-l/2,u-l))}px`,r.style.top=`${Math.max(0,Math.min((c.top+c.bottom)/2-d/2,p-d))}px`),e.addEventListener("mousewheel",e=>r.scrollBy({left:e.deltaX,top:e.deltaY,behavior:"smooth"})),setTimeout(()=>r.style.opacity=1,i),r}removeTooltips(){document.querySelectorAll(".tooltip").forEach(e=>e.remove())}addTooltipListener(e){if(!e.dataset.tooltip)return;let t;e.addEventListener("mouseenter",()=>{e.dataset.tooltip&&(t&&t.remove(),t=this.createTooltip(e,"",e.dataset.tooltip,"true"===e.dataset.tooltipHtml,+e.dataset.tooltipDelay||100))}),e.addEventListener("mouseleave",()=>{t&&(t.remove(),t=null)})}positionBottomMenu(e,t){t.style.left="",t.style.right="",t.style.top="",t.style.bottom="";const n=()=>{if(!t.classList.contains("show"))return;const s=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=innerWidth,r=innerHeight;i.left+s.width<=a?(t.style.left=`${i.left}px`,t.style.right="auto"):(t.style.right=a-i.right+"px",t.style.left="auto");i.top>=s.height?(t.style.bottom=r-i.top+"px",t.style.top="auto"):(t.style.top=`${i.bottom}px`,t.style.bottom="auto"),requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionSubmenu(e,t){e.style.left="",e.style.right="",e.style.top="",e.style.bottom="";const n=()=>{if(!e.classList.contains("show"))return;const s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left;o<s.width+20&&l>o&&(e.style.left="auto",e.style.right="calc(100% + 4px)");const d=r-i.bottom,c=i.top;s.bottom>r&&c>d&&(e.style.top="auto",e.style.bottom="0"),requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionLevelsMenu(e,t){t.style.left="",t.style.right="",t.style.top="",t.style.bottom="";const n=()=>{if(!t.classList.contains("show"))return;const s=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left,d=o>=s.width+8,c=l>=s.width+8;d?(t.style.left=`${i.right+8}px`,t.style.right="auto"):c?(t.style.right=a-i.left+8+"px",t.style.left="auto"):o>l?(t.style.left=`${i.right+8}px`,t.style.right="auto"):(t.style.right=a-i.left+8+"px",t.style.left="auto");const u=Math.max(Math.min(i.top+(i.height-s.height)/2,r-s.height-8),8);t.style.top=`${u}px`,t.style.bottom="auto",requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionWarningSubmenu(e,t){e.style.left="",e.style.right="",e.style.top="",e.style.bottom="";const n=()=>{if(!e.classList.contains("show"))return;const s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left,d=o>=s.width+8,c=l>=s.width+8;d?(e.style.left=`${i.right+8}px`,e.style.right="auto"):c?(e.style.right=a-i.left+8+"px",e.style.left="auto"):o>l?(e.style.left=`${i.right+8}px`,e.style.right="auto"):(e.style.right=a-i.left+8+"px",e.style.left="auto");const u=Math.max(Math.min(i.top+(i.height-s.height)/2,r-s.height-8),8);e.style.top=`${u}px`,e.style.bottom="auto",requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}createWarningItem(e,t,n,s,i=!1){const a=this.ws.store.favorite[s],r=document.createElement("div");r.classList.add("warning-menu-item"),i?(r.draggable=!0,r.classList.add("favorite-item")):r.classList.add("submenu-option"),r.dataset.warning=e.title;const o=document.createElement("span");o.classList.add("favorite-star"),a.includes(e.title)?(o.classList.add("favorited"),o.innerHTML="<i class='fas fa-star'></i>"):o.innerHTML="<i class='fa-regular fa-star'></i>",r.appendChild(o),o.addEventListener("click",t=>{t.stopPropagation();const n=a.indexOf(e.title),l="reverts"===s?document.querySelector("#revert-menu > .warning-menu"):document.querySelector("#warn-menu > .warning-menu");if(-1===n){a.push(e.title),o.classList.add("favorited","spin"),o.innerHTML="<i class='fas fa-star'></i>";let t=l.querySelector(".favorites-section");if(!t){t=document.createElement("div"),t.className="favorites-section";const e=document.createElement("div");e.className="favorites-header",e.innerHTML='<span class="icon fas fa-star"></span><span>Favorites</span>',t.appendChild(e);const n=document.createElement("div");n.className="favorites-container",t.appendChild(n),l.insertBefore(t,l.firstChild);const s=document.createElement("div");s.className="favorites-separator",l.insertBefore(s,t.nextSibling)}const n=l.__executeCallbacks__;n&&t.querySelector(".favorites-container").appendChild(this.createWarningItem(e,n.executeWithWarn,n.executeNoWarn,s,!0))}else if(a.splice(n,1),o.classList.remove("favorited"),o.classList.add("spin"),o.innerHTML="<i class='fa-regular fa-star'></i>",i){r.remove();const t=l.querySelector(".favorites-section");var d;if(0===(null==t?void 0:t.querySelector(".favorites-container").children.length))t.remove(),null===(d=l.querySelector(".favorites-separator"))||void 0===d||d.remove();const n=document.body.querySelector(`.warning-menu-item:not(.favorite-item)[data-warning="${e.title}"]`);if(n){const e=n.querySelector(".favorite-star");e.classList.remove("favorited"),e.innerHTML="<i class='fa-regular fa-star'></i>",e.classList.add("spin"),setTimeout(()=>e.classList.remove("spin"),500)}}else{const t=l.querySelector(".favorites-section");if(t){const n=t.querySelector(`[data-warning="${e.title}"]`);var c;if(n)if(n.remove(),0===t.querySelector(".favorites-container").children.length)t.remove(),null===(c=l.querySelector(".favorites-separator"))||void 0===c||c.remove()}}setTimeout(()=>o.classList.remove("spin"),500)});const l=document.createElement("span");l.className=`icon ${e.icon}`,r.appendChild(l);const d=document.createElement("span");d.className="warning-menu-title",d.textContent=e.title,r.appendChild(d);const c=document.createElement("span");if(c.className="fas fa-circle-question",c.dataset.tooltip=`${e.description} (click for template preview)`,r.appendChild(c),this.addTooltipListener(c),c.addEventListener("click",async t=>{t.preventDefault(),t.stopPropagation();const n=this.ws;this.dialog.show(e.title,async function(){return(await Promise.allSettled(e.templates.map(e=>{const t=n.queue.current.item;return n.api.parse(`{{${e.template}|${t.page.title}}}`,`User:${t.user.name}`,!0)}))).map(e=>{let t="";t="fulfilled"===e.status?e.value:`<em>Error loading template preview: ${e.reason}</em>`;const s=(new DOMParser).parseFromString(t,"text/html").body;return s.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${n.server}`).href)}),s.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${n.server}`).href)}),s.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,s]=e.trim().split(/\s+/,2),i=new URL(t,`https://${n.server}`).href;return s?`${i} ${s}`:i}).join(", ");e.setAttribute("srcset",t)}),s.innerHTML}).join("<div style='height: 1px; background: #0004; margin: 8px 0;'></div>")}())}),!i){const i=document.createElement("div");if(i.classList.add("warning-menu-buttons"),"reverts"===s){const t=document.createElement("span");t.className="warning-menu-button warning-menu-no-warn-button",t.textContent="no warn",i.appendChild(t),t.addEventListener("click",async t=>{t.stopPropagation(),await n(e.title)})}const a=document.createElement("span");a.className="warning-menu-button warning-menu-levels-button",a.textContent="advanced",i.appendChild(a),r.appendChild(i);const o=document.createElement("div");o.className="levels-menu";for(const n of e.templates){if(n.generic)continue;const s=document.createElement("span");s.className=`levels-menu-item colorize-level colorize-level-${n.name}`,s.textContent=n.name,o.appendChild(s),s.addEventListener("click",async()=>await t(e.title,n.name))}document.body.querySelector("#app").appendChild(o),a.addEventListener("click",e=>{e.stopPropagation();const t=o.classList.contains("show");document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show")),t||(o.classList.add("show"),this.positionLevelsMenu(a,o))})}return r.addEventListener("click",async n=>{n.target.closest(".warning-menu-button")||n.target.closest(".favorite-star")||await t(e.title,"auto")}),i&&(r.addEventListener("dragstart",t=>{t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e.title),r.classList.add("dragging")}),r.addEventListener("dragend",()=>{r.classList.remove("dragging")}),r.addEventListener("dragover",e=>{e.preventDefault(),e.dataTransfer.dropEffect="move";const t=document.querySelector(".dragging");if(t&&t!==r){const n=r.getBoundingClientRect(),s=n.top+n.height/2;e.clientY<s?r.parentNode.insertBefore(t,r):r.parentNode.insertBefore(t,r.nextSibling)}}),r.addEventListener("drop",e=>{e.preventDefault();const t=Array.from(r.closest(".favorites-section").querySelectorAll(".favorite-item"));this.ws.store.favorite[s]=t.map(e=>e.dataset.warning)})),r}createWarnMenu(e,t,n){var s,i,a;removeEventListener("keydown",this.warningMenuKeyListener),document.querySelectorAll(".levels-menu").forEach(e=>e.remove()),document.querySelectorAll(".warning-submenu").forEach(e=>e.remove());const r=document.createElement("div");r.className="warning-menu",t.appendChild(r),r.addEventListener("click",e=>{e.target.closest(".warning-submenu")||document.body.querySelectorAll(".warning-submenu.show").forEach(e=>e.classList.remove("show")),e.target.closest(".levels-menu")||document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show"))});const o=async(t,n)=>{const s=(0,u.getWarningFromLookup)(t),i=this.ws.store.settings.auto_report;await this.ws.execute({actions:[{name:"next-item",params:{}},"reverts"===e?{name:"rollback-edit",params:{summary:s.summary}}:{},{name:"warn-user",params:{warning:t,level:n}},{name:"highlight-user",params:{}}].concat(i.enabled&&s.reportable&&i.for.has(t)?[{name:"if",condition:{name:"user-final-warning"},actions:[{name:"report-user-to-aiv",params:{reportMessage:"Vandalism past final warning"}}]}]:[])})},l=async e=>{const t=(0,u.getWarningFromLookup)(e);await this.ws.execute({actions:[{name:"next-item",params:{}},{name:"rollback-edit",params:{summary:t.summary}}]})},d=null!==(s=null===(i=this.ws.queue.current.item)||void 0===i?void 0:i.type)&&void 0!==s?s:this.ws.queue.current.type;let p=c.Queue.groups[d];if("abuselog"===d&&null!==(a=this.ws.queue.current.item)&&void 0!==a&&a.revid&&(p="edit"),r.__executeCallbacks__={executeWithWarn:o,executeNoWarn:l},this.ws.store.favorite.reverts.length>0){const t=document.createElement("div");t.className="favorites-section";const s=document.createElement("div");s.className="favorites-header",s.innerHTML='<span class="icon fas fa-star"></span><span>Favorites</span>',t.appendChild(s);const i=document.createElement("div");i.className="favorites-container",t.appendChild(i);const a=Object.values(u.warningsLookup).filter(e=>e.queueType.includes(p)&&(!n||"function"!=typeof e.show||e.show(n)));for(const t of this.ws.store.favorite[e]){const n=a.find(e=>e.title===t);if(n){const t=this.createWarningItem(n,o,l,e,!0);i.appendChild(t)}}r.appendChild(t);const d=document.createElement("div");d.className="favorites-separator",r.appendChild(d)}let g=0;for(const[,t]of Object.entries(u.warnings)){let s=0;const i=[];for(const e of t.warnings)("function"!=typeof e.show||e.show(n))&&e.queueType.includes(p)&&(i.push(e),s++,g++);if(0===s)continue;const a=document.createElement("div");a.className="menu-option submenu-trigger";const d=document.createElement("span");d.className=`icon ${t.icon}`,a.appendChild(d);const c=document.createElement("span");c.textContent=t.title,a.appendChild(c);const u=document.createElement("span");u.className="submenu-arrow fas fa-chevron-right",a.appendChild(u),r.appendChild(a);const h=document.createElement("div");h.className="warning-submenu submenu",document.body.querySelector("#app").appendChild(h);for(const t of i){const n=this.createWarningItem(t,o,l,e,!1);h.appendChild(n)}a.addEventListener("click",e=>{e.stopPropagation();const t=h.classList.contains("show");document.body.querySelectorAll(".warning-submenu.show").forEach(e=>{e!==h&&(e.classList.remove("show"),document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show")))}),t?(a.classList.remove("focus-opened"),h.classList.remove("show"),document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show"))):(a.classList.add("focus-opened"),h.classList.add("show"),this.positionWarningSubmenu(h,a))})}if(0===g){const e=document.createElement("div");e.className="warning-menu-no-items",e.textContent="No warnings available for this edit.",r.appendChild(e)}addEventListener("keydown",this.warningMenuKeyListener)}warningMenuKeyListener(e){if("Tab"===e.key){const t=document.querySelector("#warn-menu.show, #revert-menu.show");if(t){if(t.querySelector(":scope > div > .menu-option.focus-opened")){const t=document.body.querySelector(".submenu.show");if(t){const n=t.querySelectorAll(":scope > .warning-menu-item");if(n.length>0){const s=(Array.from(n).indexOf(t.querySelector(".focus-visible"))+(e.shiftKey?-1:1)+n.length)%n.length;document.querySelectorAll(".focus-visible").forEach(e=>e.classList.remove("focus-visible")),n[s].classList.add("focus-visible"),e.preventDefault()}}}else{const n=t.querySelectorAll(":scope > div > .favorites-section > .favorites-container > .warning-menu-item,\n\t\t\t\t\t\t :scope > div > .menu-option");if(n.length>0){const s=(Array.from(n).indexOf(t.querySelector(".focus-visible"))+(e.shiftKey?-1:1)+n.length)%n.length;document.querySelectorAll(".focus-visible").forEach(e=>e.classList.remove("focus-visible")),n[s].classList.add("focus-visible"),e.preventDefault()}}}}else if("Enter"===e.key){if(document.querySelector("#warn-menu.show, #revert-menu.show")){const t=document.querySelector(".focus-visible");t&&(t.click(),e.preventDefault())}}else if("Escape"===e.key){if(document.querySelector("#warn-menu.show, #revert-menu.show")){const t=document.querySelector(".focus-opened");t?(t.classList.remove("focus-opened"),t.classList.add("focus-visible"),t.click()):(document.querySelectorAll(".bottom-tool-menu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>e.classList.remove("active")),document.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".levels-menu").forEach(e=>e.classList.remove("show"))),e.preventDefault()}}}closeMenus(){document.querySelectorAll(".bottom-tool-menu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>e.classList.remove("active")),document.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".levels-menu").forEach(e=>e.classList.remove("show"))}}function y(e){const t=new Set(["B","I","EM","STRONG","CODE","SPAN","BR"]),n=document.createElement("div");n.innerHTML=e;const s=e=>{const n=[...e.childNodes];for(const e of n)if(e.nodeType===Node.ELEMENT_NODE)if(t.has(e.tagName)){for(;e.attributes.length>0;)e.removeAttribute(e.attributes[0].name);s(e)}else e.replaceWith(...e.childNodes)};return s(n),n.innerHTML}t.GUI=w,h(w,"palettes",{traffic:(0,p.BuildPalette)(1e3,"#78c675","#fdff7a","#fcff54","#fbff12","#ffc619","#ff8812","#f56214","#f73214","#fc0303","#fc0303"),magma:(0,p.BuildPalette)(1e3,"#000004","#1b0c41","#4a0c6b","#781c6d","#a52c60","#cf4446","#ed6925","#fb9b06","#f7d13d","#fcffa4"),plasma:(0,p.BuildPalette)(1e3,"#0d0887","#46039f","#7201a8","#9c179e","#bd3786","#d8576b","#ed7953","#fb9f3a","#fdca26","#f0f921"),viridis:(0,p.BuildPalette)(1e3,"#440154","#3b528b","#21918c","#5ec962","#fde725"),natural:(0,p.BuildPalette)(1e3,"#ffffff","#18ff18"),cool:(0,p.BuildPalette)(1e3,"#ffffff","#1818ff"),heat:(0,p.BuildPalette)(1e3,"#ffffff","#ff1818"),grey:(0,p.BuildPalette)(1e3,"#000000","#ffffff")})},4674(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Notifications=void 0;t.Notifications=class{constructor(e){this.ws=e,this.first={},["alert","message"].forEach(e=>{this[e]=[],this.update(e),this.first[e]=!0,this.load(e)})}find(e,t){if(!1===(null!=e&&e)){let e=this.alert.find(e=>e.id===t);return e?{type:"alert",notification:e}:(e=this.message.find(e=>e.id===t),e?{type:"message",notification:e}:void 0)}return this[e].find(e=>e.id===t)}async load(e){try{const t=(await this.ws.api.continuous({action:"query",meta:"notifications",notlimit:"max",notprop:"list",notfilter:"!read",notsections:e,notformat:"model"})).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.notifications)||void 0===t?void 0:t.list)||[]});await Promise.all(t.map(async e=>this.ws.api.parse(e["*"].body,void 0,void 0,!0).then(t=>{var n;return null!==(n=void(e["*"].parsed=t))&&void 0!==n?n:e})));let n=!1;for(const s of t)this[e].some(e=>e.id===s.id&&e.read===s.read)||(this[e].unshift(s),n=!0);if(n){const t=this.ws.store.settings.zen_mode;t.enabled&&!t[`${e}s`].enabled||this.ws.audio.playSound(["notification",e]),this.update(e)}}finally{setTimeout(()=>this.load(e),1e4)}}update(e){this.count();const t=this[e],n=t.filter(e=>!e.read),s=this.ws.store.settings.zen_mode;s.enabled&&!s[`${e}s`].enabled||n.filter(e=>!e.seen&&!e.notified).forEach(t=>{t.notified=!0,this.first[e]||electron.sendNotification({title:this.ws.util.textify(t["*"].header),body:this.ws.util.textify(t["*"].body)},t["*"].links.primary.url)}),this.first[e]=!1;const i=document.querySelector(`#${e}s-count`),a=document.querySelector(`#${e}s-list`);i.textContent=n.length,i.classList.toggle("hidden",0===n.length),0===t.length?a.innerHTML=`<div class="notifications-empty">No new ${e}s</div>`:(a.innerHTML="",t.forEach(t=>{const n=t["*"];{const s=document.createElement("div");s.classList.add("notification"),s.classList.add(t.read?"read":"unread"),s.addEventListener("click",()=>{this.read(e,t),this.ws.open(n.links.primary.url)});{const e=document.createElement("div");e.classList.add("notification-icon"),e.innerHTML=`<img src="${new URL(n.iconUrl,`https://${this.ws.server}/`).toString()}" alt="icon">`,s.appendChild(e)}{const e=document.createElement("div");e.classList.add("notification-content"),s.appendChild(e);{const t=document.createElement("div");t.classList.add("notification-header"),t.innerHTML=this.ws.util.truncate(n.header,100),e.appendChild(t)}{const t=document.createElement("div");t.classList.add("notification-body"),t.innerHTML=n.parsed,e.appendChild(t),t.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,n]=e.trim().split(/\s+/,2),s=new URL(t,`https://${this.ws.server}`).href;return n?`${s} ${n}`:s}).join(", ");e.setAttribute("srcset",t)}),t.querySelectorAll("a").forEach(e=>{e.target="_blank"})}{const t=document.createElement("div");t.classList.add("notification-links"),n.links.secondary.forEach(e=>{const n=document.createElement("a");n.href=e.url,n.target="_blank",n.textContent=e.label,t.appendChild(n)}),e.appendChild(t)}}{const n=document.createElement("div");if(n.classList.add("notification-right"),s.appendChild(n),!t.read){const s=document.createElement("div");s.classList.add("notification-unread-indicator"),s.addEventListener("click",n=>{n.stopPropagation(),this.read(e,t)}),n.appendChild(s)}{const e=document.createElement("div");e.classList.add("notification-timestamp"),e.dataset.time=t.timestamp.utciso8601,e.dataset.timeFormat="notification",e.textContent=this.ws.util.formatNotificationTime(new Date(t.timestamp.utciso8601)),n.appendChild(e)}}a.appendChild(s)}}))}seen(e){this.ws.api.postWithToken({action:"echomarkseen",type:e}),this[e].forEach(e=>e.seen=!0)}read(e,t){t?(t.read=!0,this.update(e),this.ws.api.postWithToken({action:"echomarkread",sections:e,list:t.id})):(this[e].forEach(e=>e.read=!0),this.update(e),this.ws.api.postWithToken({action:"echomarkread",sections:e,all:!0}))}count(){var e,t;const n=this.ws.store.settings.zen_mode;let s=0;n.enabled&&!n.alerts.enabled||(s+=(null===(e=this.alert)||void 0===e?void 0:e.filter(e=>!e.read).length)||0),n.enabled&&!n.messages.enabled||(s+=(null===(t=this.message)||void 0===t?void 0:t.filter(e=>!e.read).length)||0),electron.setBadgeCount(s),document.title=s>0?`(${s}) WikiShield`:"WikiShield"}}},6151(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ProgressBar=void 0;t.ProgressBar=class{constructor(){this.$bar=document.createElement("div"),this.$bar.classList.add("progress-bar"),this.$bar.style.opacity=1,document.querySelector("#progress-bar-container").appendChild(this.$bar),this.$overlay=document.createElement("div"),this.$overlay.classList.add("progress-bar-overlay"),this.$overlay.style.width="0%",this.$bar.appendChild(this.$overlay),this.$text=document.createElement("div"),this.$text.classList.add("progress-bar-text"),this.$bar.appendChild(this.$text)}set(e,t,n){this.$text.textContent=e,this.$overlay.style.width=100*Math.min(Math.max(t,0),1)+"%",this.$bar.classList.toggle("error",n),t>=1&&setTimeout(()=>{this.$bar.style.opacity=0,setTimeout(()=>this.$bar.remove(),300)},1700)}}},9117(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Settings=void 0;var s=n(8678),i=n(870),a=n(9808),r=n(985),o=n(372),l=n(7054),d=n(4018),c=(n(9501),n(955)),u=n(5564),p=n(2069),g=n(8469);function h(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function m(e,t,n){return e.set(f(e,t),n),n}function v(e,t){return e.get(f(e,t))}function f(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var b=new WeakMap,w=new WeakMap,y=new WeakMap;t.Settings=class{constructor(e){h(this,b,void 0),h(this,w,void 0),h(this,y,void 0),this.ws=e,this.ws.api.getTags().then(e=>{this.wikipediaTags=e})}get active(){return document.querySelector("#settings-container > .settings > .settings-right > div:not(.hidden)")}controller(e){const t=e.key.toLowerCase();if(v(b,this)){if("escape"===t)return v(b,this).call(this,"escape",!0);if("control"===t||"shift"===t||"alt"===t||a.controls.has(t))switch(e.preventDefault(),e.type){case"keydown":v(b,this).call(this,(0,a.buildShortcut)(e),!1);break;case"keyup":v(b,this).call(this,(0,a.buildShortcut)(e),!0)}}else"escape"===t&&"keydown"===e.type&&this.close()}collapsible(e,t,n,s=!0){const i=document.createElement("div");i.className="settings-section collapsible",e.appendChild(i);const a=document.createElement("div");a.className="settings-section-header collapse-title",a.textContent=t(s),i.appendChild(a);const r=document.createElement("div");r.className="collapse-content collapsible",i.appendChild(r);const o=document.createElement("div");o.className="settings-section-desc",o.textContent=n,r.appendChild(o),s?(r.style.height="0px",r.style.opacity=0,r.style.overflow="hidden",i.classList.add("collapsed")):(r.style.height="auto",r.style.opacity=1,r.style.overflow="visible",i.classList.remove("collapsed"));let l,d,c,u,p,g,h=!1;const m=e=>{d||(d=e);const t=e-d,n=Math.min(t/300,1),i=(a=n)<.5?2*a*a:(4-2*a)*a-1;var a;const o=c+(p-c)*i,v=u+(g-u)*i;r.style.height=`${o}px`,r.style.opacity=v,n<1?l=requestAnimationFrame(m):(s?r.style.overflow="hidden":(r.style.height="auto",r.style.overflow="visible"),h=!1,l=null,d=null)};return a.addEventListener("click",()=>{if(h){cancelAnimationFrame(l);const e=r.getBoundingClientRect().height;c=e,u=parseFloat(getComputedStyle(r).opacity)}else c=s?0:r.scrollHeight,u=s?0:1;s=!s,a.textContent=t(s),i.classList.toggle("collapsed",s),r.style.overflow="hidden",s?(p=0,g=0):(p=r.scrollHeight,g=1),h=!0,d=null,l=requestAnimationFrame(m)}),r}start(){electron.onOpenChangelog(()=>{var e;return null!==(e=void this.open())&&void 0!==e?e:this.changelog()});let e=0;document.querySelector("#settings-container").addEventListener("click",t=>{"settings-container"!==t.target.id||(e=Math.max(0,e))||this.close()}),document.querySelector("#settings-general-button").addEventListener("click",this.general.bind(this)),document.querySelector("#settings-audio-button").addEventListener("click",this.audio.bind(this)),document.querySelector("#settings-controls-button").addEventListener("click",this.controls.bind(this)),document.querySelector("#settings-zen-button").addEventListener("click",this.zen.bind(this)),document.querySelector("#settings-app-button").addEventListener("click",this.app.bind(this)),document.querySelector("#settings-queue-button").addEventListener("click",this.queue.bind(this)),document.querySelector("#settings-accessibility-button").addEventListener("click",this.accessibility.bind(this)),document.querySelector("#settings-AI-button").addEventListener("click",this.AI.bind(this)),document.querySelector("#settings-auto-reporting-button").addEventListener("click",this.autoReporting.bind(this)),document.querySelector("#settings-gadgets-button").addEventListener("click",this.gadgets.bind(this)),document.querySelector("#settings-whitelist-users-button").addEventListener("click",this.whitelist.bind(this,"user")),document.querySelector("#settings-whitelist-pages-button").addEventListener("click",this.whitelist.bind(this,"page")),document.querySelector("#settings-whitelist-tags-button").addEventListener("click",this.whitelist.bind(this,"tag")),document.querySelector("#settings-highlight-users-button").addEventListener("click",this.highlight.bind(this,"user")),document.querySelector("#settings-highlight-pages-button").addEventListener("click",this.highlight.bind(this,"page")),document.querySelector("#settings-highlight-tags-button").addEventListener("click",this.highlight.bind(this,"tag")),document.querySelector("#settings-statistics-button").addEventListener("click",this.statistics.bind(this)),document.querySelector("#settings-save-button").addEventListener("click",this.save.bind(this)),document.querySelector("#settings-changelog-button").addEventListener("click",this.changelog.bind(this)),document.querySelector("#settings-about-button").addEventListener("click",this.about.bind(this));{if(!window.isElectron){const e=document.querySelector("#settings-launch-behavior");document.querySelectorAll("#settings-launch-behavior .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-launch-behavior [data-value=${"true"===electron.localStorage.get("WikiShield:OpenExternally")?"new_page":"current_page"}]`).classList.add("selected");const t=e.querySelector("[data-value=current_page]");t.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),t.classList.add("selected"),electron.localStorage.set("WikiShield:OpenExternally",!1)});const n=e.querySelector("[data-value=new_page]");n.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),n.classList.add("selected"),electron.localStorage.set("WikiShield:OpenExternally",!0)})}const t=document.querySelector("#settings-ores-bias"),n=t.querySelector(".settings-slider-track"),s=t.querySelector(".settings-slider-thumb"),i=t.querySelector(".settings-slider-label-left"),a=i.querySelector(".percent"),r=t.querySelector(".settings-slider-label-right"),o=r.querySelector(".percent"),l=e=>{this.ws.store.settings.queue.ores_bias=+e.toFixed(2),e=Math.max(0,Math.min(100,Math.round(100*e))),s.style.left=`${e}%`,n.style.setProperty("--fill",`${e}%`);const t=100-e;a.textContent=`${t}%`,i.classList.toggle("active",t>0);const l=e;o.textContent=`${l}%`,r.classList.toggle("active",l>0)},d=e=>{const t=n.getBoundingClientRect();return(e.clientX-t.left)/t.width};n.addEventListener("click",e=>l(d(e)));let c=!1;s.addEventListener("mousedown",t=>{t.preventDefault(),c=!0,e++,s.classList.add("dragging")}),window.addEventListener("mousemove",e=>{c&&l(d(e))}),window.addEventListener("mouseup",()=>{c&&(c=!1,e--,s.classList.remove("dragging"))}),l(this.ws.store.settings.queue.ores_bias)}{const e=document.querySelector("#settings-maximum-edit-count");e.value=this.ws.store.settings.queue.max_edits,e.addEventListener("change",e=>{const t=+e.target.value;this.ws.store.settings.queue.max_edits=t;for(const[e,n]of this.ws.queue.bypass.entries())n<=t&&this.ws.queue.bypass.delete(e)});const t=document.querySelector("#settings-maximum-queue-size");t.value=this.ws.store.settings.queue.max_size,t.addEventListener("change",e=>this.ws.store.settings.queue.max_size=+e.target.value);const n=document.querySelector("#settings-minimum-ores-score");n.value=this.ws.store.settings.queue.min_ores,n.addEventListener("change",e=>this.ws.store.settings.queue.min_ores=+e.target.value);const s=document.querySelector("#settings-watchlist-expiry");s.value=this.ws.store.settings.expiry.watchlist,s.addEventListener("change",e=>this.ws.store.settings.expiry.watchlist=e.target.value);const i=document.querySelector("#settings-namespaces-container");i.innerHTML="",d.namespaces.forEach(e=>{const t=document.createElement("div");t.className="namespace-item",t.dataset.namespaceId=e.id,t.innerHTML=`\n\t\t\t\t\t<label class="checkbox-box">\n\t\t\t\t\t\t<input type="checkbox" autoComplete="off">\n\t\t\t\t\t\t<div class="checkmark"></div>\n\t\t\t\t\t</label>\n\t\t\t\t\t<span class="namespace-name">${e.name}</span>\n\t\t\t\t`;const n=t.querySelector("input[type=checkbox]");n.checked=this.ws.store.settings.namespaces.includes(e.id),n.addEventListener("change",t=>{if(t.target.checked)this.ws.store.settings.namespaces.includes(e.id)||this.ws.store.settings.namespaces.push(e.id);else{const t=this.ws.store.settings.namespaces.indexOf(e.id);-1!==t&&this.ws.store.settings.namespaces.splice(t,1)}}),i.appendChild(t)})}{const e=document.querySelector("#settings-ORES-alert-toggle");e.value=this.ws.store.settings.audio.ores_alert.enabled,e.addEventListener("change",t=>{this.ws.store.settings.audio.ores_alert.enabled=e.value});const t=document.querySelector("#settings-ORES-alert-threshold");t.value=this.ws.store.settings.audio.ores_alert.threshold,t.addEventListener("change",e=>{this.ws.store.settings.audio.ores_alert.threshold=+t.value});const n=document.querySelector("#settings-master-volume");n.value=this.ws.store.settings.audio.volume.master,n.addEventListener("change",e=>{this.ws.store.settings.audio.volume.master=+n.value});const s={sound:(e,t,n,s,i)=>{const a=["master",...t].join("."),r=document.createElement("volume-control");r.setAttribute("title",n),r.setAttribute("description",s),i&&r.setPreview(this.ws.audio,t),r.value=this.ws.store.settings.audio.volume[a],r.addEventListener("change",()=>{const e=this.ws.store.settings.audio.volume[a];this.ws.store.settings.audio.volume[a]=r.value,e!==r.value&&this.ws.audio.onvolumechanged()}),e.appendChild(r)},category:(e,t,n,s)=>{const i=["master",...t].join("."),a=this.collapsible(e,e=>n,s,!0),r=document.createElement("volume-control");r.setAttribute("title","Category Volume"),r.value=this.ws.store.settings.audio.volume[i],r.addEventListener("change",()=>{const e=this.ws.store.settings.audio.volume[i];this.ws.store.settings.audio.volume[i]=r.value,e!==r.value&&this.ws.audio.onvolumechanged()}),a.appendChild(r);const o=document.createElement("div");return o.className="settings-content",a.appendChild(o),o}},i=(e,t,n)=>{for(const[r,o]of Object.entries(e))switch(o.type){case"sound":var a;s.sound(n,[...t,r],o.title,o.description,null===(a=o.preview)||void 0===a||a);break;case"category":i(o.properties,[...t,r],s.category(n,[...t,r],o.title,o.description))}};i(this.ws.audio.audio,[],document.querySelector("#settings-sounds-container"))}{const e=document.querySelector("#repeat-control-scripts-toggle");e.value=this.ws.store.settings.repeat_control_scripts,e.addEventListener("change",t=>this.ws.store.settings.repeat_control_scripts=e.value),document.querySelector("#settings-new-control-script").addEventListener("click",async()=>{this.ws.store.control_scripts.unshift({keys:[],actions:[]}),this.controls()})}{const e=document.querySelector("#settings-zen-mode");e.value=this.ws.store.settings.zen_mode.enabled,e.addEventListener("change",t=>{this.ws.store.settings.zen_mode.enabled=e.value,this.ws.gui.updateZenMode()});const t=document.querySelector("#settings-zen-mode-sound");t.value=this.ws.store.settings.zen_mode.sound.enabled,t.addEventListener("change",e=>{this.ws.store.settings.zen_mode.sound.enabled=t.value,this.ws.gui.updateZenMode()});const n=document.querySelector("#settings-zen-mode-music");n.value=this.ws.store.settings.zen_mode.music.enabled,n.addEventListener("change",e=>{this.ws.store.settings.zen_mode.music.enabled=n.value,this.ws.gui.updateZenMode()});const s=document.querySelector("#settings-zen-mode-alerts");s.value=this.ws.store.settings.zen_mode.alerts.enabled,s.addEventListener("change",e=>{this.ws.store.settings.zen_mode.alerts.enabled=s.value,this.ws.gui.updateZenMode()});const i=document.querySelector("#settings-zen-mode-messages");i.value=this.ws.store.settings.zen_mode.messages.enabled,i.addEventListener("change",e=>{this.ws.store.settings.zen_mode.messages.enabled=i.value,this.ws.gui.updateZenMode()});const a=document.querySelector("#settings-zen-mode-toasts");a.value=this.ws.store.settings.zen_mode.toasts.enabled,a.addEventListener("change",e=>{this.ws.store.settings.zen_mode.toasts.enabled=a.value,this.ws.gui.updateZenMode()});const r=document.querySelector("#settings-zen-mode-badges");r.value=this.ws.store.settings.zen_mode.badges.enabled,r.addEventListener("change",e=>{this.ws.store.settings.zen_mode.badges.enabled=r.value,this.ws.gui.updateZenMode()})}{const e=document.querySelector("#settings-startup-performance");document.querySelectorAll("#settings-startup-performance .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-startup-performance [data-value=${this.ws.store.settings.performance.startup}]`).classList.add("selected");const t=e.querySelector("[data-value=always_off]");t.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),t.classList.add("selected"),this.ws.store.settings.performance.startup="always_off"});const n=e.querySelector("[data-value=adaptive]");n.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),n.classList.add("selected"),this.ws.store.settings.performance.startup="adaptive"});const s=e.querySelector("[data-value=always_on]");s.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),s.classList.add("selected"),this.ws.store.settings.performance.startup="always_on"})}{const e=document.querySelector("#settings-queues");o.Queue.types.map(e=>({type:e,data:this.ws.store.settings.queue[e]})).sort((e,t)=>e.data.order-t.data.order).forEach(t=>{var n;const s=document.createElement("draggable-order-item");s.setAttribute("key",t.type),s.setAttribute("name",null!==(n={recent:"Recent changes",pending:"Pending changes",users:"User creations",watchlist:"Watchlist",abuselog:"Abuse log"}[t.type])&&void 0!==n?n:t.type),s.enabled=t.data.enabled,e.addItem(s,t.type)}),e.addEventListener("toggle",e=>{var t;const n=null===(t=e.target.closest("draggable-order-item"))||void 0===t?void 0:t.getAttribute("key");n&&(this.ws.store.settings.queue[n].enabled=e.detail.enabled,this.ws.gui.reorderQueues())}),e.addEventListener("reorder",e=>{e.detail.keys.forEach((e,t)=>{this.ws.store.settings.queue[e].order=t,this.ws.gui.reorderQueues()})});const t=document.querySelector("#settings-palette-selector");Object.entries(g.GUI.palettes).forEach(([e,n])=>{const s=document.createElement("div");s.className="palette-option",s.classList.toggle("selected",this.ws.store.UI.theme.palette===e),s.dataset.palette=e,s.addEventListener("click",()=>{document.querySelectorAll(".palette-option.selected").forEach(e=>e.classList.remove("selected")),s.classList.add("selected"),this.ws.store.UI.theme.palette=e,this.ws.gui.updatePalette()}),t.appendChild(s);const i=document.createElement("div");i.className="palette-name",i.textContent=new p.Text(e).case(p.Text.Case.Title).get(),s.appendChild(i);const a=document.createElement("div");a.className="palette-preview",s.appendChild(a);const r=n.length,o=document.createElement("canvas");o.width=r,o.height=1;const l=o.getContext("2d"),d=l.createImageData(r,1);n.forEach((e,t)=>{const n=e.match(/\d+/g).map(e=>parseInt(e,10)),s=4*t;d.data[s]=n[0],d.data[s+1]=n[1],d.data[s+2]=n[2],d.data[s+3]=255}),l.putImageData(d,0,0),a.appendChild(o)})}{const e=document.querySelector("#settings-dyslexia-font");e.value=this.ws.store.settings.accessibility.dyslexia,e.addEventListener("change",t=>{this.ws.store.settings.accessibility.dyslexia=e.value,this.ws.gui.updateAccessibility()});const t=document.querySelector("#settings-reduce-motion");t.value=this.ws.store.settings.accessibility.reduce_motion,t.addEventListener("change",e=>{this.ws.store.settings.accessibility.reduce_motion=t.value,this.ws.gui.updateAccessibility()})}{const e=document.querySelector("#settings-AI-toggle");e.value=this.ws.store.settings.AI.enabled,e.addEventListener("change",t=>{var n;if(null===(n=this.ws.AI)||void 0===n||n.cancel.all(!0),this.ws.store.settings.AI.enabled=e.value,this.ws.store.settings.AI.enabled)if("Ollama"===this.ws.store.settings.AI.provider)this.ws.AI=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);else this.ws.AI=null;else this.ws.AI=null});const t=document.querySelector("#settings-AI-edit-analysis-toggle");t.value=this.ws.store.settings.AI.edit_analysis.enabled,t.addEventListener("change",e=>this.ws.store.settings.AI.edit_analysis.enabled=e.target.value);const n=document.querySelector("#settings-AI-username-analysis-toggle");n.value=this.ws.store.settings.AI.username_analysis.enabled,n.addEventListener("change",e=>this.ws.store.settings.AI.username_analysis.enabled=e.target.value);const i=document.querySelector("#ollama-url-input");i.value=this.ws.store.settings.AI.Ollama.server,i.addEventListener("change",e=>{this.ws.store.settings.AI.Ollama.server=i.value.trim(),"Ollama"===this.ws.store.settings.AI.provider&&this.ws.AI&&this.ws.AI.cancel.all(!0)});const a=document.querySelector("#settings-ollama-test-connection");a.addEventListener("click",async()=>{var e;if(a.disabled)return;a.disabled=!0;const t=document.querySelector("#settings-ollama-connection-status"),n=t.parentElement;let i;if(n.classList.add("testing"),n.classList.remove("connected","failed"),t.classList.add("animate-loading-dots"),t.textContent="Testing connection","Ollama"===this.ws.store.settings.AI.provider)i=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);null===(e=this.ws.AI)||void 0===e||e.cancel.all(!0),i instanceof s.AI&&await i.test()?(n.classList.add("connected"),n.classList.remove("testing","failed"),t.innerHTML="<span class='fa fa-check-circle'></span> Connected!"):(n.classList.add("failed"),n.classList.remove("testing","connected"),t.innerHTML="<span class='fa fa-times-circle'></span> Failed to connect.<br><small>Make sure you have followed the setup instructions (see below)</small>"),t.classList.remove("animate-loading-dots"),a.disabled=!1});const r=document.querySelector("#settings-ollama-refresh-models");r.addEventListener("click",async()=>{var e;if(r.disabled)return;r.disabled=!0;const t=document.querySelector("#settings-ollama-models"),n=document.querySelector("#settings-ollama-models-status"),i=n.parentElement;n.textContent="Searching",i.classList.add("searching","animate-loading-dots"),i.classList.remove("none","error"),null===(e=this.ws.AI)||void 0===e||e.cancel.all(!0);try{let e;if("Ollama"===this.ws.store.settings.AI.provider)e=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);const a=e instanceof s.AI&&await e.models()||[];a.length>0?(i.classList.remove("searching","none","error","animate-loading-dots"),n.innerHTML=`<span class="fa fa-check-circle"></span> Found ${a.length} ${new p.Text("model").get(a.length)}.`,t.innerHTML="",a.forEach(e=>{const n=e.name===this.ws.store.settings.AI.Ollama.model,s=document.createElement("div");s.className="model",s.classList.toggle("selected",n),s.dataset.model=e.name,t.appendChild(s);const i=document.createElement("div");i.className="model-top",s.appendChild(i);const a=document.createElement("span");a.className="indicator fa",a.classList.add(n?"fa-check-circle":"fa-circle"),i.appendChild(a);const r=document.createElement("span");r.className="model-name",r.textContent=e.name,i.appendChild(r);const o=document.createElement("span");o.className="psuedo-indicator fa fa-circle",i.appendChild(o);const l=document.createElement("div");l.className="model-bottom",s.appendChild(l);const d=document.createElement("span");d.className="model-size",d.textContent=this.ws.util.formatBytes(e.size),l.appendChild(d);const c=document.createElement("span");c.className="model-modified",c.textContent=new Date(e.modified_at).toLocaleDateString(),l.appendChild(c),s.addEventListener("click",()=>{var n;if(null===(n=this.ws.AI)||void 0===n||n.cancel.all(!0),"Ollama"===this.ws.store.settings.AI.provider)this.ws.store.settings.AI.Ollama.model=e.name;t.querySelectorAll(".model.selected").forEach(e=>{e.classList.remove("selected");const t=e.querySelector(".indicator");t.classList.remove("fa-circle"),t.classList.add("fa-check-circle")}),s.classList.add("selected");const i=s.querySelector(".indicator");i.classList.remove("fa-circle"),i.classList.add("fa-check-circle")})})):(i.classList.add("none"),i.classList.remove("searching","error","animate-loading-dots"),n.textContent="No models found.")}catch(e){i.classList.add("error"),i.classList.remove("searching","none","animate-loading-dots"),n.innerHTML="<span class='fa fa-times-circle'></span> Error fetching models."}r.disabled=!1})}{const e=document.querySelector("#settings-auto-reporting-toggle");e.value=this.ws.store.settings.auto_report.enabled,e.addEventListener("change",t=>{this.ws.store.settings.auto_report.enabled=e.value});const t=document.querySelector("#settings-auto-reporting-warnings-container");Object.entries(c.warningsLookup).filter(([e,t])=>t.reportable).sort((e,t)=>e[1].title.localeCompare(t[1].title)).forEach(([e,n])=>{const s=document.createElement("div");s.className="auto-reportable-warning-item",s.innerHTML=`\n\t\t\t\t\t\t<label class="checkbox-box" data-warning-key="${e}">\n\t\t\t\t\t\t\t<input type="checkbox" autoComplete="off" ${this.ws.store.settings.auto_report.for.has(e)?"checked":""}>\n\t\t\t\t\t\t\t<div class="checkmark"></div>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<span class="checkbox-name">${n.title}</span>\n\t\t\t\t\t`,s.querySelector("input[type=checkbox]").addEventListener("change",t=>{t.target.checked?this.ws.store.settings.auto_report.for.has(e)||this.ws.store.settings.auto_report.for.add(e):this.ws.store.settings.auto_report.for.delete(e)}),t.appendChild(s)})}{const e=document.querySelector("#settings-auto-welcome-toggle");e.value=this.ws.store.settings.auto_welcome.enabled,e.addEventListener("change",t=>{this.ws.store.settings.auto_welcome.enabled=e.value});const t=document.querySelector("#settings-wikipedia-popups-toggle");t.value=this.ws.store.settings.wikipedia_popups.enabled,t.addEventListener("change",e=>{this.ws.store.settings.wikipedia_popups.enabled=t.value}),window.arePopupsBlocked&&document.querySelector("#wikipedia-popups-toggle").classList.add("disabled");const n=document.querySelector("#talk-page-thanks-for-temporary-users-toggle");n.value=this.ws.store.settings.talk_page_thanks_for_temporary_users.enabled,n.addEventListener("change",e=>{this.ws.store.settings.talk_page_thanks_for_temporary_users.enabled=n.value});const s=document.querySelector("#settings-username-highlighting-toggle");s.value=this.ws.store.settings.username_highlighting.enabled,s.addEventListener("change",e=>{this.ws.store.settings.username_highlighting.enabled=s.value});const i=document.querySelector("#settings-username-highlighting-fuzzy-toggle");i.value=this.ws.store.settings.username_highlighting.fuzzy,i.addEventListener("change",e=>{this.ws.store.settings.username_highlighting.fuzzy=i.value})}{const e=document.querySelector("#settings-save-status");document.querySelector("#settings-export-button").addEventListener("click",async t=>{try{const t=this.ws.export();await electron.copyToClipboard(t),e.classList.remove("hidden","error","info"),e.classList.add("success"),e.innerHTML='\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-check-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Settings exported successfully!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">The base64 string has been copied to your clipboard.</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t'}catch(t){e.classList.remove("hidden","success","info"),e.classList.add("error"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-times-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Export failed!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">${t.message}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}});document.querySelector("#settings-import-button").addEventListener("click",async t=>{try{const t=await this.ws.gui.dialog.input("Import Settings","Please paste the base64 string of your exported settings below:");if(!t)throw new Error("No input provided.");const n=await this.ws.noinit(t),[s,i]=n.reduce((e,t)=>(t.expected?e[0].push(t):e[1].push(t),e),[[],[]]);e.classList.remove("hidden","error","info"),e.classList.add("success"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-check-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Settings imported successfully!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">\n\t\t\t\t\t\t\t\t\t${i.length>0?`<br><br><strong>Encountered ${new p.Text("%n issue").get(i.length)}:</strong><br>${i.map(e=>`- ${e.message}`).join("<br>")}`:""}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}catch(t){e.classList.remove("hidden","success","info"),e.classList.add("error"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-times-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Import failed!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">${t.message}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}});document.querySelector("#settings-reset-button").addEventListener("click",async t=>{await this.ws.gui.dialog.confirm("Reset Settings","Are you sure you want to reset all settings to their default values? This action cannot be undone.","Reset Settings",!0)&&(this.ws.noinit("e30="),e.classList.remove("hidden","error","success"),e.classList.add("info"),e.innerHTML='\n\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t<i class="fa fa-info-circle status-icon"></i>\n\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t<div class="status-title">Settings reset successfully.</div>\n\t\t\t\t\t\t\t<div class="status-desc">All settings have been restored to their default values.</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t')})}document.querySelectorAll("#settings-container > .settings > .settings-right > .about [data-link]").forEach(e=>{e.addEventListener("click",t=>this.ws.open(e.dataset.link,t.altKey))})}update(){document.querySelector("#settings-maximum-edit-count").value=this.ws.store.settings.queue.max_edits,document.querySelector("#settings-maximum-queue-size").value=this.ws.store.settings.queue.max_size,document.querySelector("#settings-minimum-ores-score").value=this.ws.store.settings.queue.min_ores,document.querySelector("#settings-watchlist-expiry").value=this.ws.store.settings.expiry.watchlist,document.querySelectorAll("#settings-namespaces-container .namespace-item").forEach(e=>{const t=parseInt(e.dataset.namespaceId,10);e.querySelector("input[type=checkbox]").checked=this.ws.store.settings.namespaces.includes(t)}),document.querySelector("#settings-zen-mode").value=this.ws.store.settings.zen_mode.enabled,document.querySelector("#settings-zen-mode-sound").value=this.ws.store.settings.zen_mode.sound.enabled,document.querySelector("#settings-zen-mode-music").value=this.ws.store.settings.zen_mode.music.enabled,document.querySelector("#settings-zen-mode-alerts").value=this.ws.store.settings.zen_mode.alerts.enabled,document.querySelector("#settings-zen-mode-messages").value=this.ws.store.settings.zen_mode.messages.enabled,document.querySelector("#settings-zen-mode-toasts").value=this.ws.store.settings.zen_mode.toasts.enabled,document.querySelector("#settings-zen-mode-badges").value=this.ws.store.settings.zen_mode.badges.enabled,document.querySelectorAll("#settings-startup-performance .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-startup-performance [data-value=${this.ws.store.settings.performance.startup}]`).classList.add("selected");{const e=document.querySelector("#settings-queues");e.clearItems(),o.Queue.types.map(e=>({type:e,data:this.ws.store.settings.queue[e]})).sort((e,t)=>e.data.order-t.data.order).forEach(t=>{var n;const s=document.createElement("draggable-order-item");s.setAttribute("key",t.type),s.setAttribute("name",null!==(n={recent:"Recent changes",pending:"Pending changes",users:"User creations",watchlist:"Watchlist"}[t.type])&&void 0!==n?n:t.type),s.enabled=t.data.enabled,e.addItem(s,t.type)}),document.querySelectorAll(".palette-option").forEach(e=>{e.classList.toggle("selected",e.dataset.palette===this.ws.store.UI.theme.palette)})}document.querySelector("#settings-AI-toggle").value=this.ws.store.settings.AI.enabled,document.querySelector("#settings-AI-edit-analysis-toggle").value=this.ws.store.settings.AI.edit_analysis.enabled,document.querySelector("#settings-AI-username-analysis-toggle").value=this.ws.store.settings.AI.username_analysis.enabled,document.querySelector("#ollama-url-input").value=this.ws.store.settings.AI.Ollama.server;{const e=document.querySelector("#settings-ollama-connection-status"),t=e.parentElement;e.innerHTML="",t.classList.remove("testing","connected","failed")}{document.querySelector("#settings-ollama-models").querySelectorAll(".model").forEach(e=>e.remove());const e=document.querySelector("#settings-ollama-models-status"),t=e.parentElement;e.innerHTML="",t.classList.remove("searching","none","error")}document.querySelector("#settings-auto-reporting-toggle").value=this.ws.store.settings.auto_report.enabled,document.querySelectorAll("#settings-auto-reporting-warnings-container .auto-reportable-warning-item").forEach(e=>{const t=e.querySelector("label").dataset.warningKey;e.querySelector("input[type=checkbox]").checked=this.ws.store.settings.auto_report.for.has(t)}),document.querySelector("#settings-auto-welcome-toggle").value=this.ws.store.settings.auto_welcome.enabled,document.querySelector("#settings-wikipedia-popups-toggle").value=this.ws.store.settings.wikipedia_popups.enabled,document.querySelector("#settings-username-highlighting-toggle").value=this.ws.store.settings.username_highlighting.enabled,document.querySelector("#settings-username-highlighting-fuzzy-toggle").value=this.ws.store.settings.username_highlighting.fuzzy}open(){document.querySelector("#settings-container").classList.add("show"),this.general(),m(y,this,new Promise(e=>{m(w,this,e)}))}close(){this.deselect(),this.ws.audio.stopPreviews(),document.querySelector("#settings-container").classList.remove("show"),v(w,this)&&(v(w,this).call(this),m(w,this,null))}waitForClose(){return v(y,this)}deselect(){document.querySelectorAll("#settings-container > .settings > .settings-left .settings-left-menu-item.selected").forEach(e=>e.classList.remove("selected")),document.querySelectorAll("#settings-container > .settings > .settings-right > :not(.hidden)").forEach(e=>e.classList.add("hidden"))}general(){this.deselect(),document.querySelector("#settings-general-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .general").classList.remove("hidden")}performance(){this.deselect(),document.querySelector("#settings-performance-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .performance").classList.remove("hidden")}audio(){this.deselect(),document.querySelector("#settings-audio-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .audio").classList.remove("hidden")}controls(){this.deselect(),document.querySelector("#settings-controls-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .controls").classList.remove("hidden");{const e=(t,n)=>{if(n.actions.includes(t))return n;for(const s of n.actions)if("if"===s.name||"if not"===s.name){const n=e(t,s);if(n)return n}return null},t=(n,s,a,o)=>{const l=document.createElement("div");if(l.className="control-action",n.appendChild(l),"if"===s.name||"if not"===s.name){var d,c,p;l.innerHTML=`\n\t\t\t\t\t\t<div class="control-action-title">\n\t\t\t\t\t\t\t<div class="control-action-title-left">\n\t\t\t\t\t\t\t\t<span class="fas fa-circle-question"></span>\n\t\t\t\t\t\t\t\t${"if"===s.name?"If":"If not"} <select></select> <span class="params"></span> then:\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="control-action-title-right">\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-up move-action-up"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-down move-action-down"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-trash-can delete-action"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`;const e=l.querySelector("select");Object.entries(i.conditions).forEach(([t,n])=>{e.innerHTML+="title"in n?`<option value="${t}">${n.title}</option>`:`<option value="${t}">${t}</option>`});const n=null!==(d=s.condition)&&void 0!==d?d:{name:Object.keys(i.conditions)[0],params:{}};null!==(c=n.name)&&void 0!==c||(n.name=Object.keys(i.conditions)[0]),null!==(p=n.params)&&void 0!==p||(n.params={}),e.value=n.name,e.addEventListener("change",t=>{n.name=e.value,o()});const r=new Map;for(const e of(0,u.sortDependencies)((null===(g=(h=i.conditions[n.name]).parameters)||void 0===g?void 0:g.call(h))||[])){var g,h;const t=document.createElement("div");t.className="condition-parameter",l.querySelector(".params").appendChild(t);const s={};for(const t of null!==(m=e.dependencies)&&void 0!==m?m:[]){var m;s[t]=n.params[t]}const i="function"==typeof e.default?e.default(s):e.default;let a=null;switch(e.type){case"choice":{const o=document.createElement("select");o.dataset.paramid=e.id,t.appendChild(o);const l="function"==typeof e.options?e.options(s):e.options;for(const e of null!=l?l:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(void 0!==n.params[e.id]){o.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(o.value=i,n.params[e.id]=i);a=()=>{const t={};for(const i of null!==(s=e.dependencies)&&void 0!==s?s:[]){var s;t[i]=n.params[i]}const i=o.value,a="function"==typeof e.options?e.options(t):e.options;o.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(a.includes(i))o.value=i;else{const s="function"==typeof e.default?e.default(t):e.default;o.value=s,n.params[e.id]=s}},o.addEventListener("change",()=>{n.params[e.id]=o.value;for(const t of r.get(e.id)||[])t()})}break;case"text":{const s=document.createElement("input");if(s.type="text",s.dataset.paramid=e.id,t.appendChild(s),void 0!==n.params[e.id]){s.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.value=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=s.value;for(const t of r.get(e.id)||[])t()})}break;case"boolean":{const s=document.createElement("input");if(s.type="checkbox",s.dataset.paramid=e.id,t.appendChild(s),void 0!==n.params[e.id]){s.checked=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.checked=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=s.checked;for(const t of r.get(e.id)||[])t()})}break;case"number":{const s=document.createElement("input");if(s.type="number",s.dataset.paramid=e.id,"min"in e&&(s.min=e.min),"max"in e&&(s.max=e.max),t.appendChild(s),void 0!==n.params[e.id]){s.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.value=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=parseFloat(s.value);for(const t of r.get(e.id)||[])t()})}}if("function"==typeof a)for(const t of null!==(v=e.dependencies)&&void 0!==v?v:[]){var v;r.has(t)||r.set(t,[]),r.get(t).push(a)}}for(const e of s.actions)t(l,e,a,o)}else{const e=r.events[s.name];l.innerHTML=`\n\t\t\t\t\t\t<div class="control-action-title">\n\t\t\t\t\t\t\t<div class="control-action-title-left">\n\t\t\t\t\t\t\t\t<span class="${"icon"in e?e.icon:"fas fa-bolt"}"></span>\n\t\t\t\t\t\t\t\t${"title"in e?e.title:s.name}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="control-action-title-right">\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-up move-action-up"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-down move-action-down"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-trash-can delete-action"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`;const t=new Map;for(const n of(0,u.sortDependencies)((null===(f=e.parameters)||void 0===f?void 0:f.call(e))||[])){var f;const e=document.createElement("div");e.className="action-parameter",e.innerHTML=`<div class="parameter-title">${n.title}</div>`,l.appendChild(e);const i={};for(const e of null!==(b=n.dependencies)&&void 0!==b?b:[]){var b;i[e]=s.params[e]}const a="function"==typeof n.default?n.default(i):n.default;let r=null;switch(n.type){case"choice":{const o=document.createElement("select");o.dataset.paramid=n.id,e.appendChild(o);const l="function"==typeof n.options?n.options(i):n.options;for(const e of null!=l?l:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(void 0!==s.params[n.id]){o.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(o.value=a,s.params[n.id]=a);r=()=>{const e={};for(const i of null!==(t=n.dependencies)&&void 0!==t?t:[]){var t;e[i]=s.params[i]}const i=o.value,a="function"==typeof n.options?n.options(e):n.options;o.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(a.includes(i))o.value=i;else{const t="function"==typeof n.default?n.default(e):n.default;o.value=t,s.params[n.id]=t}},o.addEventListener("change",()=>{s.params[n.id]=o.value;for(const e of t.get(n.id)||[])e()})}break;case"text":{const i=document.createElement("input");if(i.type="text",i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.value=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.value;for(const e of t.get(n.id)||[])e()})}break;case"boolean":{const i=document.createElement("input");if(i.type="checkbox",i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.checked=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.checked=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.checked;for(const e of t.get(n.id)||[])e()})}break;case"duration":{const i=document.createElement("duration-input");if(i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.value=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.value;for(const e of t.get(n.id)||[])e()})}}if("function"==typeof r)for(const e of null!==(w=n.dependencies)&&void 0!==w?w:[]){var w;t.has(e)||t.set(e,[]),t.get(e).push(r)}}}l.querySelector(".move-action-up").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]);const t=e(s,a),n=t.actions.indexOf(s);if(0===t.actions.indexOf(s)){if("if"!==t.name&&"if not"!==t.name)return;const i=e(t,a);i.actions.splice(i.actions.indexOf(t),0,s),t.actions.splice(n,1)}else{const e=t.actions[n-1];"if"===e.name||"if not"===e.name?(e.actions.push(s),t.actions.splice(n,1)):(t.actions.splice(n,1),t.actions.splice(n-1,0,s))}o()}),l.querySelector(".move-action-down").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]);const t=e(s,a),n=t.actions.indexOf(s);if(t.actions.indexOf(s)===t.actions.length-1){if("if"!==t.name&&"if not"!==t.name)return;const i=e(t,a);i.actions.splice(i.actions.indexOf(t)+1,0,s),t.actions.splice(n,1)}else{const e=t.actions[n+1];"if"===e.name||"if not"===e.name?(e.actions.unshift(s),t.actions.splice(n,1)):(t.actions.splice(n,1),t.actions.splice(n+1,0,s))}o()}),l.querySelector(".delete-action").addEventListener("click",async t=>{if(this.ws.audio.playSound(["ui","click"]),t.shiftKey||await this.ws.gui.dialog.confirm("Delete Action","Are you sure you want to delete this action?<br><small>Tip: Hold <code><Shift></code> while clicking to skip this confirmation.</small>",null,!0)){const t=e(s,a);t.actions.splice(t.actions.indexOf(s),1),o()}})},n=()=>{const e=new Set,t=new Set;this.ws.store.control_scripts.forEach(n=>{n.keys.forEach(n=>{e.has(n)?t.add(n):e.add(n)})}),document.querySelectorAll(".control-keys div[data-key]").forEach(e=>{e.classList.toggle("duplicate",t.has(e.dataset.key))})},s=(e,o)=>{e.innerHTML='\n\t\t\t\t\t<div class="control-container">\n\t\t\t\t\t\t<div class="control-container-title">When these keys are pressed</div>\n\t\t\t\t\t\t<div class="control-keys"></div>\n\t\t\t\t\t\t<div class="control-container-title margin-top">Complete these actions</div>\n\t\t\t\t\t\t<div class="control-actions"></div>\n\t\t\t\t\t</div>\n\t\t\t\t';const l=e.querySelector(".control-keys");for(const t of o.keys){const i=document.createElement("div");i.dataset.key=t,i.innerHTML=`\n\t\t\t\t\t\t<span class="key-elem-title">${" "===t?"space":t}</span>\n\t\t\t\t\t\t<span class="fas fa-trash-can remove"></span>\n\t\t\t\t\t`,l.appendChild(i),i.querySelector(".remove").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),o.keys.splice(o.keys.indexOf(t),1),s(e,o),n()})}const d=document.createElement("div");d.className="add",d.innerHTML='<span class="fas fa-plus"></span>',l.appendChild(d),d.addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),document.querySelectorAll(".key-select").forEach(e=>e.remove());const t=document.createElement("div");t.className="key-select animate-loading-dots",t.textContent="Press a key",l.insertBefore(t,d);const i=()=>{t.remove(),m(b,this,null)};t.addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),i()}),m(b,this,(r,l,d)=>{if("escape"===r)i();else if(l){if(!(0,a.validateShortcut)(r))return i(),void this.ws.gui.dialog.toast("Invalid Key","The key you pressed is not a valid shortcut key.","error");o.keys.includes(r)||o.keys.push(r),i(),s(e,o),n()}else t.textContent=r||"Press a key"})});const c=e.querySelector(".control-actions");for(const e of o.actions)t(c,e,o,()=>{this.controls()});const u=document.createElement("div");u.className="control-bottom-container",u.innerHTML='\n\t\t\t\t\t<div class="add-action-button"></div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<button class="add-action-button control-delete" style="--background: 211, 51, 51;">Delete</button>\n\t\t\t\t\t</div>\n\t\t\t\t',c.appendChild(u),u.querySelector(".control-delete").addEventListener("click",async e=>{this.ws.audio.playSound(["ui","click"]),(e.shiftKey||await this.ws.gui.dialog.confirm("Delete Control Script","Are you sure you want to delete this control script? This action cannot be undone?<br><small>Tip: Hold <code><Shift></code> while clicking to skip this confirmation.</small>",null,!0))&&(this.ws.store.control_scripts.splice(this.ws.store.control_scripts.indexOf(o),1),this.controls())});const p=()=>{const t=u.querySelector(".add-action-button");t.innerHTML='<button class="add-action-button new-button"><span class="fa fa-plus"></span> Add Action</button>',t.querySelector(".new-button").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),t.innerHTML='\n\t\t\t\t\t\t\t<select style="height: 35px;"></select>\n\t\t\t\t\t\t\t<button class="add-action-button cancel-button" style="margin-left: 10px;">Cancel</button>\n\t\t\t\t\t\t\t<button class="add-action-button create-button" style="margin-left: 10px;">Create</button>\n\t\t\t\t\t\t';const n=t.querySelector("select");n.innerHTML+='<option value="if">If Condition</option>',n.innerHTML+='<option value="if not">If Not Condition</option>',Object.entries(r.events).forEach(([e,t])=>{n.innerHTML+="title"in t?`<option value="${e}">${t.title}</option>`:`<option value="${e}">${e}</option>`}),t.querySelector(".cancel-button").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),p()}),t.querySelector(".create-button").addEventListener("click",()=>{if(this.ws.audio.playSound(["ui","click"]),"if"===n.value||"if not"===n.value||n.value in r.events){const t={name:n.value,params:{}};"if"!==n.value&&"if not"!==n.value||(t.condition={name:Object.keys(i.conditions)[0]},t.actions=[]),o.actions.push(t),s(e,o)}})})};p()},o=document.querySelector("#settings-container > .settings > .settings-right > .controls");o.querySelectorAll(".control-script-item").forEach(e=>e.remove());for(const e of this.ws.store.control_scripts){const t=document.createElement("div");t.className="settings-section control-script-item",o.appendChild(t),s(t,e)}n()}}zen(){this.deselect(),document.querySelector("#settings-zen-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .zen").classList.remove("hidden")}app(){this.deselect(),document.querySelector("#settings-app-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .app").classList.remove("hidden")}queue(){this.deselect(),document.querySelector("#settings-queue-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .queue").classList.remove("hidden")}accessibility(){this.deselect(),document.querySelector("#settings-accessibility-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .accessibility").classList.remove("hidden")}AI(){this.deselect(),document.querySelector("#settings-AI-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .AI").classList.remove("hidden")}autoReporting(){this.deselect(),document.querySelector("#settings-auto-reporting-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .auto-reporting").classList.remove("hidden")}gadgets(){this.deselect(),document.querySelector("#settings-gadgets-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .gadgets").classList.remove("hidden")}whitelist(e){this.deselect(),document.querySelector(`#settings-whitelist-${e}s-button`).classList.add("selected"),document.querySelector(`#settings-container > .settings > .settings-right > .whitelist.${e}s`).classList.remove("hidden");{const t=document.querySelector(`#settings-whitelist-${e}s-expiry`);t.value=this.ws.store.settings.expiry.whitelist[`${e}s`],t.addEventListener("change",t=>this.ws.store.settings.expiry.whitelist[`${e}s`]=t.target.value);const n=document.querySelector(`#settings-whitelist-${e}s-input`),s=()=>{const t=n.value.trim();t&&(n.value="",this.ws.store.whitelist[`${e}s`].set(t,[Date.now(),this.ws.util.expiryToDate(this.ws.store.settings.expiry.whitelist[`${e}s`]).valueOf()]),this.ws.store.statistics.items_whitelisted.total++,this.ws.store.statistics.items_whitelisted[`${e}s`]++,this.ws.gui.renderQueue(),this.whitelist(e))};if("tag"===e&&this.wikipediaTags){const e=this.wikipediaTags.map(e=>e.name).sort();for(const t of e){const e=document.createElement("option");e.value=t,e.textContent=t,n.appendChild(e)}n.setAttribute("list",n.id+"-datalist");const t=document.createElement("datalist");t.id=n.id+"-datalist",n.parentElement.appendChild(t);for(const n of e){const e=document.createElement("option");e.value=n,t.appendChild(e)}}document.querySelector(`#settings-whitelist-${e}s-add-button`).addEventListener("click",s),n.addEventListener("keydown",e=>{"Enter"===e.key&&(s(),e.preventDefault())})}{const t=document.querySelector(`#settings-whitelist-${e}s-list`);t.innerHTML="";const n=t=>{switch(e){case"user":return this.ws.page(`Special:Contributions/${t}`);case"page":return this.ws.page(t);case"tag":return this.ws.page(`Special:Tags/${t}`)}},s=[...this.ws.store.whitelist[`${e}s`]].sort((e,t)=>t[1][1]-e[1][1]);for(const[i,a]of s){const s=document.createElement("div"),r=new Date(a[0]),o=a[1]===1/0?"Never":`${new Date(a[1]).toLocaleDateString()} ${new Date(a[1]).toLocaleTimeString()}`;s.innerHTML=`\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<a href="${n(i)}">${i}</a>\n\t\t\t\t\t\t<span>Added: ${r.toLocaleDateString()} ${r.toLocaleTimeString()}</span>\n\t\t\t\t\t\t<span class="${Date.now()>a[1]?"expired":""}">\n\t\t\t\t\t\t\t${Date.now()>a[1]?"Expired":"Expires"}: ${o}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class="add-action-button remove-button" title="Remove from whitelisted list"><span class="fa fa-trash"></span></button>\n\t\t\t\t`,s.querySelector(".remove-button").addEventListener("click",()=>{this.ws.store.whitelist[`${e}s`].delete(i),this.ws.gui.renderQueue(),this.whitelist(e)}),t.appendChild(s)}0===s.length&&(t.innerHTML=`<div class="empty">No whitelisted ${e}s.</div>`)}}highlight(e){this.deselect(),document.querySelector(`#settings-highlight-${e}s-button`).classList.add("selected"),document.querySelector(`#settings-container > .settings > .settings-right > .highlight.${e}s`).classList.remove("hidden");{const t=document.querySelector(`#settings-highlight-${e}s-expiry`);t.value=this.ws.store.settings.expiry.highlight[`${e}s`],t.addEventListener("change",t=>this.ws.store.settings.expiry.highlight[`${e}s`]=t.target.value);const n=document.querySelector(`#settings-highlight-${e}s-input`),s=()=>{const t=n.value.trim();t&&(n.value="",this.ws.store.highlight[`${e}s`].set(t,[Date.now(),this.ws.util.expiryToDate(this.ws.store.settings.expiry.highlight[`${e}s`]).valueOf()]),this.ws.store.statistics.items_highlighted.total++,this.ws.store.statistics.items_highlighted[`${e}s`]++,this.ws.gui.renderQueue(),this.highlight(e))};if("tag"===e&&this.wikipediaTags){const e=this.wikipediaTags.map(e=>e.name).sort();for(const t of e){const e=document.createElement("option");e.value=t,e.textContent=t,n.appendChild(e)}n.setAttribute("list",n.id+"-datalist");const t=document.createElement("datalist");t.id=n.id+"-datalist",n.parentElement.appendChild(t);for(const n of e){const e=document.createElement("option");e.value=n,t.appendChild(e)}}document.querySelector(`#settings-highlight-${e}s-add-button`).addEventListener("click",s),n.addEventListener("keydown",e=>{"Enter"===e.key&&(s(),e.preventDefault())})}{const t=document.querySelector(`#settings-highlight-${e}s-list`);t.innerHTML="";const n=t=>{switch(e){case"user":return this.ws.page(`Special:Contributions/${t}`);case"page":return this.ws.page(t);case"tag":return this.ws.page(`Special:Tags/${t}`)}},s=[...this.ws.store.highlight[`${e}s`]].sort((e,t)=>t[1][1]-e[1][1]);for(const[i,a]of s){const s=document.createElement("div"),r=new Date(a[0]),o=a[1]===1/0?"Never":`${new Date(a[1]).toLocaleDateString()} ${new Date(a[1]).toLocaleTimeString()}`;s.innerHTML=`\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<a href="${n(i)}">${i}</a>\n\t\t\t\t\t\t<span>Added: ${r.toLocaleDateString()} ${r.toLocaleTimeString()}</span>\n\t\t\t\t\t\t<span class="${Date.now()>a[1]?"expired":""}">\n\t\t\t\t\t\t\t${Date.now()>a[1]?"Expired":"Expires"}: ${o}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class="add-action-button remove-button" title="Remove from highlighted list"><span class="fa fa-trash"></span></button>\n\t\t\t\t`,s.querySelector(".remove-button").addEventListener("click",()=>{this.ws.store.highlight[`${e}s`].delete(i),this.ws.gui.renderQueue(),this.highlight(e)}),t.appendChild(s)}0===s.length&&(t.innerHTML=`<div class="empty">No highlighted ${e}s.</div>`)}}statistics(){this.deselect(),document.querySelector("#settings-statistics-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .statistics").classList.remove("hidden");document.querySelector("#reset-statistics-button").addEventListener("click",async()=>{await this.ws.gui.dialog.confirm("Reset statistics","Are you sure you want to reset all statistics? This action cannot be undone.",void 0,!0)&&(this.ws.store.statistics={},this.ws.storage.load(this.ws.store),this.ws.time.load=performance.now(),this.statistics())});const e=this.ws.store.statistics;document.querySelector("#stats-total-reviewed").textContent=(e.edits_reviewed.total||0).toLocaleString();document.querySelector("#stats-thanks-percentage").textContent=(e.edits_reviewed.thanked/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-recent-changes-reviewed").textContent=(e.recent_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-recent-changes-percentage").textContent=(e.recent_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-reviewed").textContent=(e.pending_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-pending-changes-accepted").textContent=(e.pending_changes_reviewed.accepted||0).toLocaleString();document.querySelector("#stats-pending-changes-accepted-percentage").textContent=(e.pending_changes_reviewed.accepted/e.pending_changes_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-rejected").textContent=(e.pending_changes_reviewed.rejected||0).toLocaleString();document.querySelector("#stats-pending-changes-rejected-percentage").textContent=(e.pending_changes_reviewed.rejected/e.pending_changes_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-percentage").textContent=(e.pending_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-user-creations-reviewed").textContent=(e.users_reviewed.total||0).toLocaleString();document.querySelector("#stats-user-creations-percentage").textContent=(e.users_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-watchlist-changes-reviewed").textContent=(e.watchlist_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-watchlist-changes-percentage").textContent=(e.watchlist_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-abuselog-changes-reviewed").textContent=(e.abuselogs_reviewed.total||0).toLocaleString();document.querySelector("#stats-abuselog-changes-percentage").textContent=(e.abuselogs_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-reverts-made").textContent=(e.reverts_made.total||0).toLocaleString();document.querySelector("#stats-reverts-percentage").textContent=(e.reverts_made.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-goodfaith-reverts-percentage").textContent=(e.reverts_made.good_faith/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-recent-reverts-percentage").textContent=(e.reverts_made.from_recent_changes/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-pending-reverts-percentage").textContent=(e.reverts_made.from_pending_changes/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-watchlist-reverts-percentage").textContent=(e.reverts_made.from_watchlist/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-abuselog-reverts-percentage").textContent=(e.reverts_made.from_abuselogs/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-other-reverts-percentage").textContent=(e.reverts_made.from_loaded_edits/e.reverts_made.total*100||0).toFixed(2);{document.querySelector("#stats-users-welcomed").textContent=(e.users_welcomed.total||0).toLocaleString();const t=document.querySelector("#stats-users-welcomed-message");e.edits_reviewed.total===e.users_welcomed.total?t.textContent=`You welcome every user whose edit you review! (${e.users_welcomed.total.toLocaleString()})`:0===e.users_welcomed.total?t.innerHTML="For every Infinity edits you review, you still won’t welcome a new user.":t.textContent=`For every ${(e.edits_reviewed.total/e.users_welcomed.total||0).toFixed(3)} edits you review, you welcome a new user.`}document.querySelector("#stats-warnings").textContent=(e.warnings_issued.total||0).toLocaleString();document.querySelector("#stats-warning-1-percentage").textContent=(e.warnings_issued.level_1/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-2-percentage").textContent=(e.warnings_issued.level_2/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-3-percentage").textContent=(e.warnings_issued.level_3/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-4-percentage").textContent=(e.warnings_issued.level_4/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-4im-percentage").textContent=(e.warnings_issued.level_4im/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-reports").textContent=(e.reports_filed.total||0).toLocaleString();document.querySelector("#stats-AIV-reports-percentage").textContent=(e.reports_filed.AIV/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-UAA-reports-percentage").textContent=(e.reports_filed.UAA/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-global-block-reports-percentage").textContent=(e.reports_filed.global_block/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-global-lock-reports-percentage").textContent=(e.reports_filed.global_lock/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-RFPP-reports-percentage").textContent=(e.reports_filed.RFPP/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-pages-watched").textContent=(e.watchlist.watched||0).toLocaleString();document.querySelector("#stats-pages-unwatched").textContent=(e.watchlist.unwatched||0).toLocaleString();document.querySelector("#stats-items-whitelisted").textContent=(e.items_whitelisted.total||0).toLocaleString();document.querySelector("#stats-users-whitelisted").textContent=(e.items_whitelisted.users||0).toLocaleString();document.querySelector("#stats-users-whitelisted-percentage").textContent=(e.items_whitelisted.users/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-pages-whitelisted").textContent=(e.items_whitelisted.pages||0).toLocaleString();document.querySelector("#stats-pages-whitelisted-percentage").textContent=(e.items_whitelisted.pages/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-tags-whitelisted").textContent=(e.items_whitelisted.tags||0).toLocaleString();document.querySelector("#stats-tags-whitelisted-percentage").textContent=(e.items_whitelisted.tags/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-items-highlighted").textContent=(e.items_highlighted.total||0).toLocaleString();document.querySelector("#stats-users-highlighted").textContent=(e.items_highlighted.users||0).toLocaleString();document.querySelector("#stats-users-highlighted-percentage").textContent=(e.items_highlighted.users/e.items_highlighted.total*100||0).toFixed(2);document.querySelector("#stats-pages-highlighted").textContent=(e.items_highlighted.pages||0).toLocaleString();document.querySelector("#stats-pages-highlighted-percentage").textContent=(e.items_highlighted.pages/e.items_highlighted.total*100||0).toFixed(2);document.querySelector("#stats-tags-highlighted").textContent=(e.items_highlighted.tags||0).toLocaleString();document.querySelector("#stats-tags-highlighted-percentage").textContent=(e.items_highlighted.tags/e.items_highlighted.total*100||0).toFixed(2);{const t=e.session_time+(performance.now()-this.ws.time.load);document.querySelector("#stats-session-time").textContent=(e=>{const t=Math.floor(e/1e3),n=Math.floor(t/86400),s=Math.floor(t%86400/3600),i=Math.floor(t%3600/60);let a="";return n>0&&(a+=`${n}d `),s>0&&(a+=`${s}h `),i>0&&(a+=`${i}m `),a+=t%60+"s",a.trim()})(t);document.querySelector("#stats-reports-per-day").textContent=(e.reports_filed.total/(t/864e5||1)||0).toFixed(2);document.querySelector("#stats-reverts-per-hour").textContent=(e.reverts_made.total/(t/36e5||1)||0).toFixed(2);document.querySelector("#stats-reviews-per-minute").textContent=(e.edits_reviewed.total/(t/6e4||1)||0).toFixed(2)}}save(){this.deselect(),document.querySelector("#settings-save-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .save").classList.remove("hidden"),document.querySelector("#settings-save-status").classList.add("hidden")}changelog(){this.deselect(),document.querySelector("#settings-changelog-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .changelog").classList.remove("hidden");const e=document.querySelector("#settings-container > .settings > .settings-right > .changelog > div > .changelog-content");e.innerHTML="<em class='animate-loading-dots'>Loading changelog</em>",l.WikiShield.config.changelog.HTML.then(t=>e.innerHTML=t)}about(){this.deselect(),document.querySelector("#settings-about-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .about").classList.remove("hidden"),document.querySelector("#settings-about-version").textContent=l.WikiShield.config.version,document.querySelectorAll("#settings-container > .settings > .settings-right > .about > .randomize").forEach(e=>{for(let t=e.children.length;t>=0;t--)e.appendChild(e.children[Math.random()*t|0])})}}},7698(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BuildPalette=function(e,...t){const n=document.createElement("canvas");n.width=e,n.height=1;const s=n.getContext("2d"),i=s.createLinearGradient(0,0,n.width,0),a=1/(t.length-1);t.forEach((e,t)=>{i.addColorStop(a*t,e)}),s.fillStyle=i,s.fillRect(0,0,n.width,n.height);const r=s.getImageData(0,0,n.width,1).data;return Array.from({length:e},(e,t)=>{const n=4*t;return`rgb(${r[n]}, ${r[n+1]}, ${r[n+2]})`})}},3241(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.expiryRegex=t.Utility=void 0;var s=n(4551);function i(){i=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,s,i){var r=RegExp(e,s);return t.set(r,i||t.get(e)),a(r,n.prototype)}function s(e,n){var s=t.get(n);return Object.keys(s).reduce(function(t,n){var i=s[n];if("number"==typeof i)t[n]=e[i];else{for(var a=0;void 0===e[i[a]]&&a+1<i.length;)a++;t[n]=e[i[a]]}return t},Object.create(null))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&a(e,t)}(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);if(n){n.groups=s(n,this);var i=n.indices;i&&(i.groups=s(i,this))}return n},n.prototype[Symbol.replace]=function(n,i){if("string"==typeof i){var a=t.get(this);return e[Symbol.replace].call(this,n,i.replace(/\$<([^>]+)(>|$)/g,function(e,t,n){if(""===n)return e;var s=a[t];return Array.isArray(s)?"$"+s.join("$"):"number"==typeof s?"$"+s:""}))}if("function"==typeof i){var r=this;return e[Symbol.replace].call(this,n,function(){var e=arguments;return"object"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(s(e,r)),i.apply(this,e)})}return e[Symbol.replace].call(this,n,i)},i.apply(this,arguments)}function a(e,t){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},a(e,t)}const r=t.expiryRegex=i(/(infinity|^(([0-9]+)Y)?(([0-9]+)M)?(([0-9]+)W)?(([0-9]+)D)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?)$/,{years:3,months:5,weeks:7,days:9,hours:11,minutes:13,seconds:15});t.Utility=class{constructor(e){this.ws=e}escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}escape(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}utcString(e){if(e===1/0)return"indefinite";const t=this.padString;return`${e.getUTCFullYear()}-${t(e.getUTCMonth()+1,2)}-${t(e.getUTCDate(),2)}T${t(e.getUTCHours(),2)}:${t(e.getUTCMinutes(),2)}:${t(e.getUTCSeconds(),2)}`}padString(e,t){for(e=e.toString();e.length<t;)e=`0${e}`;return e}getMonth(e){return["January","February","March","April","May","June","July","August","September","October","November","December"][e]}monthSectionName(){return`${this.getMonth((new Date).getUTCMonth())} ${(new Date).getUTCFullYear()}`}escape(e){return(e||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}textify(e){const t=document.createElement("div");return t.innerHTML=e,t.textContent||t.innerText||""}pageLink(e,t=!1,n=!0){return t?`https://${this.ws.server}/w/index.php${e}`:`https://${this.ws.server}/wiki/${n?encodeURIComponent(e):e}`}truncate(e,t){return(0,s.truncate)(e,t)}formatBytes(e){if(0===e)return"0 B";const t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(2))+" "+["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB","RiB","QiB"][t]}getChangeColor(e){if(0===e)return"#888";if(e>0)return e>=1e3?"#00b894":e>=500?"#00d4a1":e>=100?"#26de81":"#55efc4";{const t=Math.abs(e);return t>=1e3?"#d63031":t>=500?"#e74c3c":t>=100?"#ff6b6b":"#ff8787"}}getChangeString(e){return e>0?"+"+e:0===e?"0":`–${Math.abs(e).toString()}`}formatNotificationTime(e,t=new Date){const n=Math.floor((t-e)/1e3);return n<=0?"Now":n<60?`${n}s ago`:n<3600?`${Math.floor(n/60)}m ago`:n<86400?`${Math.floor(n/3600)}h ago`:n<2592e3?`${Math.floor(n/86400)}d ago`:n<31536e3?`${Math.floor(n/2592e3)}mo ago`:`${Math.floor(n/31536e3)}y ago`}formatDuration(e,t=new Date){const n=Math.floor((t-e)/1e3);return n<=0?"0s":n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m`:n<86400?`${Math.floor(n/3600)}h`:n<2592e3?`${Math.floor(n/86400)}d`:n<31536e3?`${Math.floor(n/2592e3)}mo`:`${Math.floor(n/31536e3)}y`}match(e,t){return this.ws.store.settings.username_highlighting.fuzzy?function(e,t,n){const s=e.length,i=t.length;if(0===s)return!0;if(0===i)return s<=n;let a=new Array(i+1).fill(0),r=new Array(i+1).fill(0);for(let e=0;e<=i;e++)a[e]=0;for(let o=1;o<=s;o++){r[0]=o;let l=r[0];for(let d=1;d<=i;d++){const i=e[o-1]===t[d-1]?0:1,c=a[d]+1,u=r[d-1]+1,p=a[d-1]+i,g=Math.min(c,u,p);if(r[d]=g,g<l&&(l=g),o===s&&g<=n)return!0}if(l>n)return!1;[a,r]=[r,a]}return!1}(e,t,2):t.toLowerCase().includes(e.toLowerCase())}isIPv4Address(e){const t="(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|0?[0-9]{1,2})";return new RegExp(`^(${t}\\.){3}${t}$`).test(e)}isIPv6Address(e){return!!new RegExp("^(?::(?::|(?::[0-9A-Fa-f]{1,4}){1,7})|[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){0,6}::|[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){7})$").test(e)||new RegExp("^[0-9A-Fa-f]{1,4}(?:::?[0-9A-Fa-f]{1,4}){1,6}$").test(e)&&/::/.test(e)&&!/::.*::/.test(e)}isIPAddress(e){return this.isIPv4Address(e)||this.isIPv6Address(e)}isTempAccount(e){return/^~[0-9]{4,}(-[0-9A-Fa-f]{5})*(-[0-9A-Fa-f]{1,5})$/.test(e)}expiryToDate(e){if("infinity"===e)return 1/0;const t=new Date,n=r.exec(e);return n?new Date(t.getFullYear()+(parseInt(n.groups.years)||0),t.getMonth()+(parseInt(n.groups.months)||0),t.getDate()+7*(parseInt(n.groups.weeks)||0)+(parseInt(n.groups.days)||0),t.getHours()+(parseInt(n.groups.hours)||0),t.getMinutes()+(parseInt(n.groups.minutes)||0),t.getSeconds()+(parseInt(n.groups.seconds)||0)):t}getPageSections(e){const t=e.split("\n"),n=[];let s={title:"",heading:"",level:0,content:""};for(const e of t){const t=/^(=+)\s*(.*?)\s*\1\s*$/.exec(e);t?(""!==s.title&&n.push(s),s={title:t[2],heading:t[0],level:t[1].length,content:""}):(""!==s.content&&(s.content+="\n"),s.content+=e)}return""===s.content&&""===s.title||n.push(s),n}}},5564(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.sortDependencies=function(e){const t=new Map(e.map(e=>[e.id,e])),n=new Set,s=new Set,i=[],a=(e,r)=>{if(n.has(e))return;if(s.has(e)){const t=r.indexOf(e),n=r.slice(t).concat(e).join(" -> ");throw new Error(`Cyclic dependency detected: ${n}`)}const o=t.get(e);if(!o)throw new Error(`Unknown dependency: ${e}`);s.add(e),r.push(e);const l=o.dependencies||[];for(const e of l)a(e,r);r.pop(),n.add(e),s.delete(e),i.push(o)};for(const t of e)n.has(t.id)||a(t.id,[]);return i}},2069(e,t){var n;function s(e,t,n){i(e,t),t.set(e,n)}function i(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function a(e,t){return e.get(o(e,t))}function r(e,t,n){return e.set(o(e,t),n),n}function o(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),t.Text=void 0;class d{}l(d,"Lower",Symbol("lower case")),l(d,"Upper",Symbol("UPPER CASE")),l(d,"Title",Symbol("Title Case")),l(d,"Sentence",Symbol("Sentence case")),l(d,"Camel",Symbol("camelCase")),l(d,"Pascal",Symbol("PascalCase")),l(d,"Snake",Symbol("snake_Case")),l(d,"Split",Symbol("split,case"));var c=new WeakMap,u=new WeakMap,p=new WeakMap,g=new WeakSet;class h{static pluralize(e,t,n){return new h(e).plural(n).get(t)}constructor(e,t=d.Sentence){var n,a;i(n=this,a=g),a.add(n),s(this,c,!1),s(this,u,void 0),s(this,p,void 0);const l=m.call(h,e,t);r(c,this,l.inSentenceCase),r(u,this,l.words),r(p,this,o(g,this,v).call(this))}plural(){return r(p,this,o(g,this,v).apply(this,arguments)),this}case(e=d.Sentence){const t=t=>{switch(e){case d.Lower:return t.map(e=>e.toLowerCase()).join(" ");case d.Upper:return t.map(e=>e.toUpperCase()).join(" ");case d.Title:return t.map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ");case d.Sentence:if(a(c,this))return t.join(" ");let e=!0;return t.map(t=>{let n=e?t.charAt(0).toUpperCase()+t.slice(1).toLowerCase():t.toLowerCase();return e=/[.!?]$/.test(t),n}).join(" ");case d.Camel:return t.map((e,t)=>0===t?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("");case d.Pascal:return t.map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("");case d.Snake:return t.map(e=>e.toLowerCase()).join("_");case d.Split:return t;default:throw new TypeError("Invalid case type, must be a Case value")}},[n,s]=[t(a(u,this)),t(a(p,this))];return Object.freeze({get:(e=1)=>(Number.isNaN(Number(e))||1===e||1n===e||"1"===e?n:s).replace(/(?<!\\)%n/g,e)})}get(e=1){return this.case().get(e)}}function m(e,t){const n=(e=>{switch(t){case d.Lower:case d.Upper:case d.Title:case d.Sentence:return e.split(/\s+/);case d.Camel:case d.Pascal:return e.split(/(?=[A-Z])/);case d.Snake:return e.split(/_/g);case d.Split:throw new TypeError("Split case is only used for output, not input");default:throw new TypeError("Invalid case type, must be a Case value")}})(e.toString().trim());return t===d.Sentence?{inSentenceCase:!0,words:n.map(e=>e.trim()).filter(e=>e.length>0)}:{inSentenceCase:!1,words:n.map(e=>e.trim().toLowerCase()).filter(e=>e.length>0)}}function v(e){if(null==e||e){const e=[...a(u,this)],t=e.length-1;return e[t]=(e=>{let t;return t=e.replace(/(?<=sh?|ch|x|z|[^aeiou]o)$/i,"es"),t!==e?t:(t=e.replace(/(?<=[^aeiou])y$/i,"ies"),t!==e?t:(t=e.replace(/fe?$/i,"ves"),t!==e?t:`${e}s`))})(a(u,this)[t]),e}if(!1===e)return[...a(u,this)];if(e instanceof n)return e.case(d.Split).get();throw new TypeError("Invalid plural argument, must be boolean or Text instance")}t.Text=h,n=h,l(h,"Case",d)},8878(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.MediaWikiAPI=void 0;var s=n(1289),i=n(4551),a=n(2852),r=n(6873),o=n(505),l=n(8582);const d=console,c=new Set(l.__servers__.filter(e=>e.tag).map(e=>e.host)),u=new Set(l.__servers__.filter(e=>e.pending_changes).map(e=>e.host));class p{static get pendingChangesServers(){return Array.from(u)}static hasPendingChanges(e){return u.has(e)}static chunk(e,t=50){const n=[],s=e.length;for(let i=0;i<s;i+=t)n.push(e.slice(i,i+t));return n}static paramify(e){return Array.isArray(e)||(e=[e]),[...new Set(e)]}static join(e){return e.join("|").replace(/\|\|+/g,"|")}static getUsername(e,t){return e.fetch(`https://${t}/w/api.php`,{action:"query",meta:"userinfo",uiprop:"name",format:"json",formatversion:2},void 0,"POST",!0).then(e=>{var t;return(null==e||null===(t=e.query)||void 0===t||null===(t=t.userinfo)||void 0===t?void 0:t.name)||null})}constructor(e,t,n,s){var i,o;this.glob=e,this.oauth=t,this.server=n,this.username=s,this.tokens={},null!==(o=(i=p.cache)[n])&&void 0!==o||(i[n]={parse:new r.Trie({size:1e3}),pending:new a.Memory({size:2500,timeout:36e5}),abuse:new a.Memory({size:2500,timeout:9e5}),ores:new a.Memory({size:1e4,timeout:9e5}),diff:new a.Memory({size:500,timeout:3e5})})}get cache(){return p.cache[this.server]}build(e={},t=null){return{tags:c.has(null!=t?t:this.server)?"WikiShield script":"",assertuser:this.username,discussiontoolsautosubscribe:"no",...e}}user(e){return`[[Special:Contribs/${e}|${e}]] ([[User talk:${e}|talk]])`}revision(e){return`[[Special:Diff/${e}|${e}]]`}centralAuthUser(e){return`[[Special:CentralAuth/${e}|${e}]]`}summary(e,t){const n=" ([[:en:WP:WikiShield|WS]])",s=`${e}${t?`: ${t}`:""}`;return`${(0,i.truncate)(s,473)}${n}`}async post(e,t=!1,n=null){try{const s=await this.oauth.fetch(`https://${n||this.server}/w/api.php`,this.build({...e,format:"json",formatversion:2},n),void 0,"POST",t,n);if(s.error){if("alreadyrolled"===s.error.code||"editconflict"===s.error.code)return"editconflict";if("missingcontent"===s.error.code&&"compare"===e.action)return{compare:{body:""}};throw new Error(`API Error: ${s.error.code} - ${s.error.info}`)}return s}catch(t){throw d.error("Error in API POST request:",t,JSON.stringify(e)),t}}async continuous(e,t,n,s){try{let i=null;const a=[];do{const r=await this.post({...e,...i||{}},n,s);a.push(r),i=r.continue||null,"function"==typeof t&&!0===await t(r,a)&&(i=!1)}while(i);return{stopped:null!==i,responses:a}}catch(t){return d.error("Error in API continuous request:",t,JSON.stringify(e)),{stopped:!0,responses:[]}}}async getToken(e="csrf",t,n){const s=`${null!=n?n:this.server}:${e}`;if(void 0!==this.tokens[s])return this.tokens[s];try{return this.tokens[s]=this.post({action:"query",meta:"tokens",type:e},t,n).then(t=>{var n;return(null==t||null===(n=t.query)||void 0===n||null===(n=n.tokens)||void 0===n?void 0:n[`${e}token`])||null})}catch(e){throw d.error("Error fetching token:",e),e}}async postWithToken(e,t="csrf",n,s){try{return await this.post({...e,token:await this.getToken(t,n,s)},n,s)}catch(i){if("badtoken"===i&&!attempted){delete this.tokens[`${null!=s?s:this.server}:${t}`];try{return await this.postWithToken(e,t,n,s,!0)}catch(e){throw d.error("Post with token error after retry:",e),e}}throw d.error("Post with token error:",i),i}}async account(e,t){try{var n;return(null===(n=await this.post({action:"query",meta:"userinfo",uiprop:"*"},e,t))||void 0===n||null===(n=n.query)||void 0===n?void 0:n.userinfo)||{}}catch(e){var s;return null!==(s=void d.error("Error fetching account info:",e))&&void 0!==s?s:{}}}async getGlobalUserInfo(e,t,n){try{var s;return(null===(s=(await this.post({action:"query",meta:"globaluserinfo",guiuser:e,guiprop:"groups|rights"},t,n)).query)||void 0===s?void 0:s.globaluserinfo)||{}}catch(e){var i;return null!==(i=void d.error("Error fetching global user info:",e))&&void 0!==i?i:{}}}async markWatchlistSeen(e,t,n,s){try{await this.postWithToken({action:"setnotificationtimestamp",titles:e,newerthanrevid:t},"csrf",n,s)}catch(e){var i;return null!==(i=void d.error("Error marking watchlist item as seen:",e))&&void 0!==i?i:{valid:!1,reason:e.message}}}async append(e,t,n,s,i=null,a,r){const o=async(e,t,n,s,i=null,a,r)=>{try{if(null!==i){return{needsCheck:!0,text:(await this.getPagesContent([e],a,r))[e]||""}}return"editconflict"===await this.postWithToken({action:"edit",title:e,...null===(null!=t?t:null)?{}:{section:t},appendtext:`\n${n}`,summary:s},"csrf",a,r)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var o;return null!==(o=void d.error("Error appending to section:",e))&&void 0!==o?o:{valid:!1,reason:e.message}}};if("function"==typeof i){const l=await o(e,t,n,s,!0,a,r);if(l.needsCheck){const d=await i(l.text);return d.valid?await o(e,t,n,s,null,a,r):{valid:!1,reason:d.reason||"Append check failed."}}return l}return await o(e,t,n,s,null,a,r)}async editSection(e,t,n,s,i,a=null,r,o){const l=async(e,t,n,s,i,a=null,r,o)=>{try{if(null!==a){return{needsCheck:!0,text:(await this.getPagesContent([e],r,o))[e]||""}}return"editconflict"===await this.postWithToken({action:"edit",title:e,section:t,sectiontitle:n,text:s,summary:i},"csrf",r,o)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var l;return null!==(l=void d.error("Error editing section:",e))&&void 0!==l?l:{valid:!1,reason:e.message}}};if("function"==typeof a){const d=await l(e,t,n,s,i,!0,r,o);if(d.needsCheck){const c=await a(d.text);return c.valid?await l(e,t,n,s,i,null,r,o):{valid:!1,reason:c.reason||"Edit section check failed."}}return d}return await l(e,t,n,s,i,null,r,o)}async acceptPendingEdit(e,t,n,s){try{return await this.postWithToken({action:"review",revid:e,comment:t},"csrf",n,s),{valid:!0}}catch(e){return{valid:!1,reason:"Edit could not be accepted."}}}async rejectPendingEdit(e,t,n,s,i,a){try{const r=(await this.getRevisionsContent([t],i,a))[t]||"";return"editconflict"===await this.postWithToken({action:"edit",title:n,text:r,summary:s,baserevid:e},"csrf",i,a)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){return{valid:!1,reason:"Edit could not be rejected."}}}async rollbackEdit(e,t,n,s,i){try{var a;const r=await this.postWithToken({action:"rollback",title:e,user:t,summary:n},"rollback",s,i);if("editconflict"===r)return{valid:!1,reason:"Edit conflict."};if("onlyauthor"===r)return{valid:!1,reason:"Cannot rollback edits as the no other user has edited the page."};if(null===(a=r.rollback)||void 0===a||!a.revid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,r.rollback.revid,s,i)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var r;return null!==(r=void d.error("Error rolling back edit:",e))&&void 0!==r?r:{valid:!1,reason:e.message}}}async undoEdit(e,t,n,s,i){try{var a;const r=await this.postWithToken({action:"edit",title:e,undo:t,summary:n},"csrf",s,i);if("editconflict"===r)return{valid:!1,reason:"Edit conflict."};if(null===(a=r.edit)||void 0===a||!a.newrevid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,r.edit.newrevid,s,i)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var r;return null!==(r=void d.error("Error undoing edit:",e))&&void 0!==r?r:{valid:!1,reason:e.message}}}async restoreEdit(e,t,n,i,a){try{var r;const o=(0,s.convertToUTCString)(new Date),l=(await this.getRevisionsContent([t],i,a))[t]||"",d=await this.postWithToken({action:"edit",title:e,text:l,summary:n,starttimestamp:o},"csrf",i,a);if("editconflict"===d)return{valid:!1,reason:"Edit conflict."};if(null===(r=d.edit)||void 0===r||!r.newrevid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,d.edit.newrevid,i,a)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var o;return null!==(o=void d.error("Error restoring edit:",e))&&void 0!==o?o:{valid:!1,reason:e.message}}}async thankRevision(e,t,n){try{return await this.postWithToken({action:"thank",rev:e},"csrf",t,n),{valid:!0}}catch(e){var s;return null!==(s=void d.error("Error thanking revision:",e))&&void 0!==s?s:{valid:!1,reason:e.message}}}async watchPage(e,t,n,s){try{return await this.postWithToken({action:"watch",title:e,expiry:t},"watch",n,s),{valid:!0}}catch(e){var i;return null!==(i=void d.error("Error watching page:",e))&&void 0!==i?i:{valid:!1,reason:e.message}}}async unwatchPage(e,t,n){try{return await this.postWithToken({action:"watch",title:e,unwatch:!0},"watch",t,n),{valid:!0}}catch(e){var s;return null!==(s=void d.error("Error unwatching page:",e))&&void 0!==s?s:{valid:!1,reason:e.message}}}async parse(e,t,n=!1,s=!1,i,a){null!=t||(t=void 0);const r=[t,e,n,s].filter(e=>void 0!==e);if(this.cache.parse.has(...r))return this.cache.parse.get(...r);try{var o;const l=null===(o=await this.post({action:"parse",prop:"text",preview:n,...s?{summary:e}:{text:e},title:t,contentmodel:"wikitext",disablelimitreport:!0,disableeditsection:!0,disabletoc:!0},i,a))||void 0===o||null===(o=o.parse)||void 0===o?void 0:o[s?"parsedsummary":"text"];return this.cache.parse.set(...r,l),l}catch(e){var l;return null!==(l=void d.error("Error parsing wikitext:",e))&&void 0!==l?l:""}}async getTags(e,t){try{return(await this.continuous({action:"query",list:"tags",tglimit:"max"},void 0,e,t)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.tags)||[]})}catch(e){var n;return null!==(n=void d.error("Error fetching revisions between IDs:",e))&&void 0!==n?n:[]}}async getPagesContent(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"content",rvslots:"*",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=(null===(i=t.revisions)||void 0===i||null===(i=i[0])||void 0===i||null===(i=i.slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content)||""}return r}catch(e){var a;return null!==(a=void d.error("Error fetching pages content:",e))&&void 0!==a?a:{}}}async getRevisionsContent(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|content",rvslots:"*",revids:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s;for(const e of t.revisions||[]){var i;r[e.revid]=(null===(i=e.slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content)||""}}return r}catch(e){var a;return null!==(a=void d.error("Error fetching revisions content:",e))&&void 0!==a?a:{}}}async getLatestIds(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=(null===(i=t.revisions)||void 0===i||null===(i=i[0])||void 0===i?void 0:i.revid)||null}return r}catch(e){var a;return null!==(a=void d.error("Error fetching latest IDs:",e))&&void 0!==a?a:{}}}async getRevisionsBetween(e,t,n,s,i){try{return(await this.continuous({action:"query",prop:"revisions",titles:e,rvstartid:n,rvendid:t,rvprop:"title|ids|flags|user|timestamp|comment|parsedcomment|size|tags",rvlimit:"max"},void 0,s,i)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions)||[]})}catch(e){var a;return null!==(a=void d.error("Error fetching revisions between IDs:",e))&&void 0!==a?a:[]}}async getEditCounts(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",list:"users",usprop:"editcount",ususers:p.join(e)},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.users)||[]){var s;a[t.name]=t.editcount}return a}catch(e){var i;return null!==(i=void d.error("Error fetching edit counts:",e))&&void 0!==i?i:{}}}async areUsersBlocked(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",list:"blocks",bkusers:p.join(e),bkprop:"id|user|by|reason|expiry|flags"},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.blocks)||[]){var s;a[t.user]=t}return a}catch(e){var i;return null!==(i=void d.error("Error fetching blocked users:",e))&&void 0!==i?i:{}}}async isUserGloballyLocked(e,t,n){try{var s;return!0===(null===(s=(await this.post({action:"query",meta:"globaluserinfo",guiuser:e},t,n)).query)||void 0===s||null===(s=s.globaluserinfo)||void 0===s?void 0:s.locked)}catch(e){var i;return null!==(i=void d.error("Error checking if user is globally locked:",e))&&void 0!==i&&i}}async getContributions(e,t=10,n,s){try{var i;return(null===(i=(await this.post({action:"query",list:"usercontribs",ucuser:e,uclimit:t,ucprop:"ids|title|timestamp|comment|parsedcomment|flags|tags|sizediff|flags"},n,s)).query)||void 0===i?void 0:i.usercontribs)||[]}catch(e){var a;return null!==(a=void d.error("Error fetching contributions:",e))&&void 0!==a?a:[]}}async getBlocks(e,t,n){try{return(await this.continuous({action:"query",list:"logevents",letype:"block",letitle:`User:${e}`,leaction:"block/block",lelimit:"max",leprop:"id|timestamp|details|user|comment|parsedcomment"},void 0,t,n)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.logevents)||[]})}catch(e){var s;return null!==(s=void d.error("Error fetching blocks:",e))&&void 0!==s?s:[]}}async pagesExist(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"content",rvslots:"*",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=t.missing||null===(i=t.revisions)||void 0===i||null===(i=i[0].slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content}return r}catch(e){var a;return null!==(a=void d.error("Error checking page existence:",e))&&void 0!==a?a:[]}}async getPagesDetails(e,t,n){e=p.paramify(e);try{const o=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.continuous({action:"query",prop:"info|categories|templates",titles:p.join(e),inprop:"protection|watched",cllimit:"max",tllimit:"max",tlnamespace:"10"},void 0,t,n))),l={};for(const e of o)if("fulfilled"===e.status)for(const t of e.value.responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.pages)||[]})){var s,i,a,r;null!==(i=l[s=t.title])&&void 0!==i||(l[s]={protection:null,watched:!1,categories:[],metadata:[]});let e=(null===(a=l[t.title])||void 0===a||null===(a=a.protection)||void 0===a?void 0:a.level)||null;for(const n of t.protection||[])"edit"===n.type&&("sysop"===n.level||"sysop"===e?e="sysop":"autoconfirmed"===n.level||"autoconfirmed"===e?e="autoconfirmed":"extendedconfirmed"!==n.level&&"extendedconfirmed"!==e||(e="extendedconfirmed"));const n=[];for(const e of t.templates||[]){const t=e.title.replace(/^Template:/i,"");t.match(/^use\s/i)&&n.push(t)}l[t.title]={protection:null===e?{protected:!1}:{protected:!0,level:e},watched:!0===t.watched||l[t.title].watched,categories:l[t.title].categories.concat((null===(r=t.categories)||void 0===r?void 0:r.map(e=>e.title))||[]),metadata:l[t.title].metadata.concat(n)}}return l}catch(e){var o;return null!==(o=void d.error("Error fetching page details:",e))&&void 0!==o?o:{}}}async getHistory(e,t=10,n,s){try{var i;const a=null===(i=(await this.post({action:"query",prop:"revisions",titles:e,rvlimit:t+1,rvprop:"ids|user|timestamp|comment|parsedcomment|flags|tags|size|flags"},n,s)).query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];if(null==a||!a.revisions)return[];const r=a.revisions.length,o=Math.min(t,r||0);for(let e=0;e<o;e++){const t=a.revisions[e];t.ns=a.ns,t.pageid=a.pageid,t.title=a.title,t.sizediff=e+1<r?t.size-a.revisions[e+1].size:t.size}return a.revisions.slice(0,o)}catch(e){var a;return null!==(a=void d.error("Error fetching page history:",e))&&void 0!==a?a:[]}}async countPageReverts(e,t,n,i){const a=e=>"mw-undo"===e||"mw-rollback"===e||"mw-manual-revert"===e;try{const o=await this.continuous({action:"query",prop:"revisions",titles:e,rvdir:"newer",rvstart:(0,s.convertToUTCString)(new Date(Date.now()-864e5)),rvprop:"tags",rvuser:t,rvlimit:"max"},void 0,n,i);let l=0;for(const e of o.responses){var r;l+=(null===(r=e.query)||void 0===r||null===(r=r.pages)||void 0===r||null===(r=r[0])||void 0===r||null===(r=r.revisions)||void 0===r?void 0:r.filter(e=>e.tags.some(a)).length)||0}return l}catch(e){var o;return null!==(o=void d.error("Error counting page reverts:",e))&&void 0!==o?o:0}}async getORES(e,t,n,s){e=p.paramify(e);try{const a={};e=e.filter(e=>{var t;const n=this.cache.ores.get(e);return!n||null!==(t=void(a[e]=n))&&void 0!==t&&t});const r=p.chunk(e,50),l=await Promise.allSettled(r.map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|oresscores",rvslots:"*",revids:p.join(e)},n,s)));for(const e of l)if("fulfilled"===e.status)for(const t of(null===(i=e.value.query)||void 0===i?void 0:i.pages)||[]){var i;for(const e of t.revisions||[])a[e.revid]=e.oresscores||{}}return o.ORES.extract(a,t)}catch(e){var a;return null!==(a=void d.error("Error fetching ORES scores:",e))&&void 0!==a?a:{}}}async extractORES(e,t=.5){return o.ORES.extract(e,t)}async getDiff(e,t,n="table",s,i){null!=e||(e=!1);const a=`${n}@${e}-${t}`;if(this.cache.diff.has(a))return this.cache.diff.get(a);try{var r;const o={action:"compare",prop:"diff",difftype:n,torev:t};0==e?(o.fromslots="main",o["fromtext-main"]=""):o.fromrev=e;const l=(null===(r=(await this.post(o,s,i)).compare)||void 0===r?void 0:r.body)||"";return this.cache.diff.set(a,l),l}catch(e){var o;return null!==(o=void d.error("Error fetching diff:",e))&&void 0!==o?o:""}}async getWikitextDiff(e,t,n="table",s,i){null!=e||(e=!1);try{var a;return(null===(a=(await this.post({action:"compare",prop:"diff",difftype:n,fromslots:"main","fromtext-main":!1===e?"":e,toslots:"main","totext-main":t},s,i)).compare)||void 0===a?void 0:a.body)||""}catch(e){var r;return null!==(r=void d.error("Error fetching wikitext diff:",e))&&void 0!==r?r:""}}async getSizeDiff(e,t,n,s){try{var i;const a=await(null===(i=this.post({action:"query",prop:"revisions",rvprop:"size",revids:`${e}|${t}`},n,s).query)||void 0===i||null===(i=i.pages)||void 0===i||null===(i=i[0])||void 0===i?void 0:i.revisions)||[];return 0===a.length?0:1===a.length?a[0].size:a[1].size-a[0].size}catch(e){var a;return null!==(a=void d.error("Error fetching size diff:",e))&&void 0!==a?a:0}}async getRevision(e,t,n,s){try{var i,a,r;const o=null===(i=(await this.post({action:"query",prop:"revisions",titles:e,rvprop:"ids|user|comment|parsedcomment|timestamp|size|tags|flags",rvslots:"*",rvstartid:t,rvlimit:2},n,s)).query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];if(null==o||null===(a=o.revisions)||void 0===a||!a.length)return{};const l=o.revisions[0];return{revid:l.revid,parentid:l.parentid,user:l.user,parsedcomment:l.parsedcomment,comment:l.comment,timestamp:l.timestamp,size:l.size,oldlen:(null===(r=o.revisions[1])||void 0===r?void 0:r.size)||0,minor:l.minor||!1,tags:l.tags||[]}}catch(e){var o;return null!==(o=void d.error("Error fetching revision:",e))&&void 0!==o?o:{}}}async getRevisions(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|user|comment|parsedcomment|timestamp|size|tags|flags|oresscores",rvslots:"*",revids:p.join(e)},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s;for(const e of t.revisions||[])a[e.revid]=e}return a}catch(e){var i;return null!==(i=void d.error("Error fetching revisions:",e))&&void 0!==i?i:{}}}async getConsecutiveEdits(e,t,n,s,i){try{var a,r;const o=await this.continuous({action:"query",prop:"revisions",titles:e,rvprop:"ids|timestamp|user|size|parsedcomment",rvlimit:"max",rvstartid:t},e=>{var t;return null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions.some(e=>e.user!==n)},s,i),l=o.responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions)||[]});let d,c;const u=l[0];if((null==u?void 0:u.user)!==n)return{count:0,sizediff:0,timestamp:{new:null,old:null},diff:null,edits:[]};const p={count:0,sizediff:0,timestamp:{new:null,old:null},diff:null,edits:[]},g=l.length;for(let e=0;e<g;e++){const t=l[e];if(c=t,t.user!==n)break;p.edits.push(t),d=t,p.count++,p.sizediff+=e+1<g?t.size-l[e+1].size||0:t.size||0}return p.timestamp.new=(null==u?void 0:u.timestamp)||null,p.timestamp.old=(null===(a=d)||void 0===a?void 0:a.timestamp)||null,o.stopped?p.diff=await this.getDiff((null===(r=c)||void 0===r?void 0:r.revid)||null,u.revid,"table",s,i):p.diff=await this.getDiff(null,u.revid,"table",s,i),p}catch(e){return d.error("Get consecutive edits error:",e),{count:0,sizediff:0,timestamp:{new:null,old:null},diff:null}}}async parseUsers(e,t,n,s){e=p.paramify(e);const i=Array.from({length:e.length},()=>({user:{}}));try{const a=[];return a.push(this.getEditCounts(e,n,s).then(t=>{e.forEach((e,n)=>i[n].user.edits=t[e]||0)}),this.areUsersBlocked(e,n,s).then(t=>{e.forEach((e,n)=>i[n].user.blocked=t[e]||null)}),this.pagesExist(e.map(e=>`User talk:${e}`),n,s).then(t=>{e.forEach((e,n)=>i[n].user.talk=t[`User talk:${e}`])})),t||a.push((async()=>{await Promise.all(e.map(async(e,t)=>{[i[t].user.contributions,i[t].user.blocks]=await Promise.all([this.getContributions(e,void 0,n,s),this.getBlocks(e,n,s)])}))})()),await Promise.all(a),i}catch(e){var a;return null!==(a=void d.error("Parse user error:",e))&&void 0!==a?a:i}}async parseEdits(e,t,n,s,i){e=p.paramify(e);const a=p.paramify(e.map(e=>e.item.user)),r=p.paramify(e.map(e=>e.item.revid)),o=p.paramify(e.map(e=>e.item.title)),l=e.map(({item:e,prior:t})=>({item:e,prior:t,data:{user:{},page:{},edit:{}}}));try{const d=[];return d.push(this.parseUsers(a,t,s,i).then(t=>{e.forEach((e,n)=>{const s=a.indexOf(e.item.user);l[n].data.user=t[s].user})}),this.getPagesDetails(o,s,i).then(t=>{e.forEach((e,n)=>{var s,i,a,r;l[n].data.page.protection=(null===(s=t[e.item.title])||void 0===s?void 0:s.protection)||{protected:!1},l[n].data.page.watched=(null===(i=t[e.item.title])||void 0===i?void 0:i.watched)||!1,l[n].data.page.categories=(null===(a=t[e.item.title])||void 0===a?void 0:a.categories)||[],l[n].data.page.metadata=(null===(r=t[e.item.title])||void 0===r?void 0:r.metadata)||[]})}),this.getORES(r,n,s,i).then(t=>{e.forEach((e,n)=>{l[n].data.edit.ores=t[e.item.revid]||0})})),t||d.push((async()=>{await Promise.all(e.map(async(e,t)=>{[l[t].data.page.consecutive,l[t].data.page.reverts,l[t].data.page.history,l[t].data.edit.diff]=await Promise.all([this.getConsecutiveEdits(e.item.title,e.item.revid,e.item.user,s,i),this.countPageReverts(e.item.title,this.username,s,i),this.getHistory(e.item.title,void 0,s,i),this.getDiff(e.prior||null,e.item.revid,"table",s,i)])}))})()),await Promise.all(d),l}catch(e){var c;return null!==(c=void d.error("Parse edit error:",e))&&void 0!==c?c:l}}async parseAbuselogs(e,t,n,s){e=p.paramify(e);const i=p.paramify(e.map(e=>e.user)),a=p.paramify(e.map(e=>e.title)),r=e.map(e=>({item:e,data:{user:{},page:{},edit:{}}}));try{const o=[];return o.push((async()=>{await Promise.all(e.map(async(e,t)=>{[r[t].data.parsedcomment]=await Promise.all([this.parse(e.comment,void 0,!1,!0,n,s)])}))})(),this.parseUsers(i,t,n,s).then(t=>{e.forEach((e,n)=>{const s=i.indexOf(e.user);r[n].data.user=t[s].user})}),this.getPagesDetails(a,n,s).then(t=>{e.forEach((e,n)=>{var s,i,a,o;r[n].data.page.protection=(null===(s=t[e.title])||void 0===s?void 0:s.protection)||{protected:!1},r[n].data.page.watched=(null===(i=t[e.title])||void 0===i?void 0:i.watched)||!1,r[n].data.page.categories=(null===(a=t[e.title])||void 0===a?void 0:a.categories)||[],r[n].data.page.metadata=(null===(o=t[e.title])||void 0===o?void 0:o.metadata)||[]})})),t||o.push((async()=>{await Promise.all(e.map(async(e,t)=>{[r[t].data.page.reverts,r[t].data.page.history,r[t].data.edit.diff]=await Promise.all([this.countPageReverts(e.title,this.username,n,s),this.getHistory(e.title,void 0,n,s),e.diff?this.getWikitextDiff(e.diff.old,e.diff.new,"table",n,s):Promise.resolve(null)])}))})()),await Promise.all(o),r}catch(e){var o;return null!==(o=void d.error("Parse abuselog error:",e))&&void 0!==o?o:r}}async getAbuseLogRevid(e,t,n){try{var s,i;return(null===(i=((null===(s=(await this.post({action:"query",list:"abuselog",afllogids:e,aflprop:"ids|revid"},t,n)).query)||void 0===s?void 0:s.abuselog)||[]).find(t=>t.id===e))||void 0===i?void 0:i.revid)||null}catch(e){var a;return null!==(a=void d.error("Error fetching abuse log revids:",e))&&void 0!==a?a:{}}}async feeds(e=null,t=null,n=null,s=null,i=null){[e,t,n,s,i]=[e,t,n,s,i].map(e=>"object"==typeof e?e:{});try{const a={action:"query",list:[]};null!==e&&(a.list.push("recentchanges"),a.rctype="edit",a.rcprop="title|ids|sizes|flags|user|timestamp|comment|parsedcomment|tags|oresscores",a.rcshow="!bot",a.rcnamespace=e.ns||"*",e.since&&(a.rcstart=e.since),a.rcdir=e.since?"newer":"older",a.rclimit="max"),null!==t&&u.has(this.server)&&(a.list.push("oldreviewedpages"),a.ornamespace=t.ns||"*",a.orlimit="max"),null!==n&&(a.list.push("logevents"),a.letype="newusers",a.wlprop="ids|title|type|user|timestamp|comment|details|parsedcomment",n.since&&(a.lestart=n.since),a.ledir=n.since?"newer":"older",a.lelimit="max"),null!==s&&(a.list.push("watchlist"),a.wltype="edit",a.wlprop="title|ids|sizes|flags|user|timestamp|comment|tags|oresscores|parsedcomment",a.wlexcludeuser=this.username,a.wlnamespace=s.ns||"*",s.since&&(a.wlstart=s.since),a.wldir=s.since?"newer":"older",a.wllimit="max"),null!==i&&(a.list.push("abuselog"),a.aflnamespace=i.ns||"*",i.since&&(a.aflstart=i.since),a.afldir=i.since?"newer":"older",a.aflprop="ids|user|title|action|result|timestamp|hidden|revid|filter|details",a.afllimit="max"),a.list=p.join(a.list);const r={recent:[],pending:[],users:[],watchlist:[],abuselog:[]};if((await this.continuous(a)).responses.forEach(e=>{const t=e.query||{};t.recentchanges&&(r.recent=r.recent.concat(t.recentchanges)),t.oldreviewedpages&&(r.pending=r.pending.concat(t.oldreviewedpages)),t.logevents&&(r.users=r.users.concat(t.logevents.filter(e=>!e.temp))),t.watchlist&&(r.watchlist=r.watchlist.concat(t.watchlist)),t.abuselog&&(r.abuselog=r.abuselog.concat(t.abuselog))}),r.pending=r.pending.slice(0,10),r.pending.length>0){const e=new Map,n={};if(await Promise.allSettled(r.pending.map(async t=>{var s,i,a;this.cache.pending.has(t.revid)||this.cache.pending.set(t.revid,await this.post({action:"query",prop:"revisions",titles:t.title,rvstartid:t.revid,rvlimit:1,rvprop:"ids|flags|user|timestamp|comment|parsedcomment|size|tags"}));const r=this.cache.pending.get(t.revid);e.has(t.title)||e.set(t.title,this.post({action:"query",list:"logevents",letype:"stable",leprop:"ids|title|type|user|timestamp|comment|details|parsedcomment",letitle:t.title,lelimit:1})),t.stability=(null===(s=await e.get(t.title))||void 0===s||null===(s=s.query)||void 0===s||null===(s=s.logevents)||void 0===s?void 0:s[0])||{};const o=null===(i=r.query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];n[t.title]={title:t.title,sizediff:t.diff_size,...null===(a=o.revisions)||void 0===a?void 0:a[0],pending:t}})),r.pending=Object.values(n),!0===t.full){const e={};await Promise.allSettled(r.pending.map(async t=>{const n=await this.getRevisionsBetween(t.title,t.pending.stable_revid,t.revid);if(n.length<2)return;const s=n.pop();e[t.title]={count:n.length,users:n.reduce((e,t)=>(t.user in e?e[t.user]++:e[t.user]=1,e),{}),edits:n,revid:t.revid,prior:s.revid,sizediff:t.size-s.size,timestamp:{new:t.timestamp,old:n[n.length-1].timestamp},pending:t.pending}})),r.pending=e}}if(r.abuselog.length>0){const e={};r.abuselog.forEach(t=>{if("edit"!==t.action)return;const n=`${t.user}|${t.title}|${t.timestamp}`;n in e?e[n].push(t):e[n]=[t]});const t=[];await Promise.allSettled(Object.entries(e).map(async([,e])=>{var n,s,i,a,r;const o=e[e.length-1],l=new Set(e.flatMap(e=>e.result.split(","))),d=e.find(e=>""!==e.revid&&void 0!==e.revid),c=e.find(e=>Object.keys(e.details).length);t.push({id:o.id,revision:void 0!==d,private:!c,result:l,action:o.action,revid:null!==(n=null==d?void 0:d.revid)&&void 0!==n?n:null,diff:c.details?{new:c.details.new_wikitext,old:c.details.old_wikitext,size:c.details.edit_delta}:null,timestamp:o.timestamp,comment:null!==(s=null==c||null===(i=c.details)||void 0===i?void 0:i.summary)&&void 0!==s?s:null,user:o.user,editcount:null!==(a=null==c||null===(r=c.details)||void 0===r?void 0:r.user_editcount)&&void 0!==a?a:null,ns:o.ns,title:o.title,entries:e})})),r.abuselog=t}return r}catch(e){return d.error("Feeds error:",e),{recent:[],pending:t.full?{}:[],users:[],watchlist:[],abuselog:[]}}}}var g,h,m;t.MediaWikiAPI=p,g=p,m={},(h=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(h="cache"))in g?Object.defineProperty(g,h,{value:m,enumerable:!0,configurable:!0,writable:!0}):g[h]=m},2486(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.build=async function(){document.head.querySelectorAll("link[rel=icon]").forEach(e=>e.remove()),document.head.querySelectorAll("link[rel=stylesheet]").forEach(e=>e.remove()),document.head.querySelectorAll("style").forEach(e=>e.remove());const e=(new DOMParser).parseFromString(s.default,"text/html");document.title=e.title,e.head.querySelectorAll("link[rel=stylesheet]").forEach(e=>{document.head.appendChild(Object.assign(document.createElement("link"),{rel:"stylesheet",href:e.href}))}),e.head.querySelectorAll("link[rel=icon]").forEach(e=>{document.head.appendChild(Object.assign(document.createElement("link"),{rel:"icon",href:e.href}))});[i.default,a.default].filter(Boolean).forEach(e=>{const t=document.createElement("style");t.textContent=e,document.head.appendChild(t)});document.body.innerHTML=e.body.innerHTML,await new Promise(requestAnimationFrame),document.querySelectorAll("[data-electron]").forEach(e=>{"false"===e.dataset.electron&&window.isElectron?e.style.display="none":"true"!==e.dataset.electron||window.isElectron||(e.style.display="none")})};var s=r(n(5540)),i=r(n(4279)),a=r(n(2459));function r(e){return e&&e.__esModule?e:{default:e}}},4112(e,t){function n(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function s(e,t){return e.get(a(e,t))}function i(e,t,n){return e.set(a(e,t),n),n}function a(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.MediaWikiOAuth2=void 0;var r=new WeakMap,o=new WeakMap;class l{constructor(e){n(this,r,void 0),n(this,o,0),i(r,this,Date.now()),this.delay=e,this.last=0}get count(){return s(o,this)}per(e=1){return Math.floor(s(o,this)/((Date.now()-s(r,this))/e))||0}call(e,t=!1){var n;i(o,this,(n=s(o,this),n++,n));const a=Date.now(),r=Math.max(0,this.last+this.delay-a);return this.last=a+r,t||0===r?e():new Promise(t=>setTimeout(async()=>t(await e()),r))}}t.MediaWikiOAuth2=class{constructor(e){this.userAgent=e,this.throttle=new l(0),this.api=new mw.Api}getOrigin(e){const t=`${location.protocol}//${location.host}`;try{const n=new URL(e);if(`${n.protocol}//${n.host}`===t)return}catch(e){}return t}async fetch(e,t={},n=null,s="POST",i){return await this.throttle.call(async()=>{const n=this.getOrigin(e);return n&&(e+=(e.includes("?")?"&":"?")+`origin=${encodeURIComponent(n)}`),await this.api.ajax({...t,origin:n},{url:e,method:s,...n?{xhrFields:{withCredentials:!0}}:{}}).catch(e=>{throw console.error(`[WikiShield] Failed to parse "OAuth2" response (rpm: ${this.throttle.per(6e4)}):`,e),e})},i)}}},505(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ORES=void 0;t.ORES=class{static extract(e,t=.5){const n=[{key:"goodfaith",field:"false",bias:t},{key:"damaging",field:"true",bias:1-t}],s={};for(const[t,r]of Object.entries(e)){const e=[];for(const t of n){var i,a;const n=r[t.key];if(!n)continue;let s=null!==(i=null===(a=n.probability)||void 0===a?void 0:a[t.field])&&void 0!==i?i:n[t.field];void 0===s&&void 0!==n.prediction&&(s=+n.prediction),void 0===s||isNaN(s)||e.push(s*(t.bias||0))}s[t]=0===e.length?NaN:e.reduce((e,t)=>e+t,0)/e.length}return s}}},8582(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.__servers__=void 0;t.__servers__=[{name:"English",host:"en.wikipedia.org",language_code:"en",tag:!0,pending_changes:!0},{name:"seperator"},{name:"Test",host:"test2.wikipedia.org",language_code:"en",tag:!1,pending_changes:!0}]},2535(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.API=void 0;var s=n(4551),i=n(8878),a=n(4112);function r(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function o(e,t,n){return e.set(d(e,t),n),n}function l(e,t){return e.get(d(e,t))}function d(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}const c=new Set([]);let u=t.API=void 0;var p,g,h,m;window.isElectron?t.API=(p=new WeakMap,g=new WeakMap,h=new WeakMap,u=class{static chunk(e,t=50){const n=[],s=e.length;for(let i=0;i<s;i+=t)n.push(e.slice(i,i+t));return n}static paramify(e){return Array.isArray(e)||(e=[e]),[...new Set(e)].filter(e=>"string"==typeof e&&e.trim())}get username(){return l(h,this)}get hasPendingChanges(){return c.has(l(g,this))}constructor(e,t,n,s){r(this,p,null),r(this,g,null),r(this,h,null),o(p,this,e),o(g,this,t),o(h,this,n);for(const e of s)c.add(e)}build(e={}){return{assertuser:l(h,this),discussiontoolsautosubscribe:"no",...e}}summary(e,t){const n=" ([[:en:WP:WikiShield|WS]])",i=`${e}${t?`: ${t}`:""}`;return`${(0,s.truncate)(i,473)}${n}`}user(e){return`[[Special:Contribs/${e}|${e}]] ([[User talk:${e}|talk]])`}revision(e){return`[[Special:Diff/${e}|${e}]]`}centralAuthUser(e){return`[[Special:CentralAuth/${e}|${e}]]`}async post(e,t,n){try{return await electron.mwapi("post",e,t,n)}catch(e){var s;if("assertnameduserfailed"===e||null!==(s=e.message)&&void 0!==s&&s.includes("assertnameduserfailed"))return l(p,this).disable("Invalid account","Your account was logged out or changed.");throw e}}async continuous(e,t,n,s){try{let i=null;const a=[];do{const r=await this.post({...e,...i||{}},n,s);if(a.push(r),i=r.continue||null,"function"==typeof t&&!0===await t(r,a)){i=!0;break}}while(i);return{stopped:null!==i,responses:a}}catch(e){return console.error("Continuous error:",e),{stopped:!0,responses:[]}}}async getToken(e="csrf",t,n){return await electron.mwapi("getToken",e,t,n)}async postWithToken(e,t="csrf",n,s){return await electron.mwapi("postWithToken",e,t,n,s)}async account(e,t){return await electron.mwapi("account",e,t)}async getGlobalUserInfo(e,t,n){return await electron.mwapi("getGlobalUserInfo",e,t,n)}async markWatchlistSeen(e,t,n,s){return await electron.mwapi("markWatchlistSeen",e,t,n,s)}async append(e,t,n,s,i,a,r){if("function"==typeof i){const o=await electron.mwapi("append",e,t,n,s,!0,a,r);if(o.needsCheck){const l=await i(o.text);return l.valid?await electron.mwapi("append",e,t,n,s,void 0,a,r):{valid:!1,reason:l.reason||"Append check failed."}}return o}return await electron.mwapi("append",e,t,n,s,void 0,a,r)}async editSection(e,t,n,s,i,a,r,o){if("function"==typeof a){const l=await electron.mwapi("editSection",e,t,n,s,i,!0,r,o);if(l.needsCheck){const d=await a(l.text);return d.valid?await electron.mwapi("editSection",e,t,n,s,i,void 0,r,o):{valid:!1,reason:d.reason||"Edit section check failed."}}return l}return await electron.mwapi("editSection",e,t,n,s,i,void 0,r,o)}async acceptPendingEdit(e,t,n,s){return await electron.mwapi("acceptPendingEdit",e,t,n,s)}async rejectPendingEdit(e,t,n,s,i,a){return await electron.mwapi("rejectPendingEdit",e,t,n,s,i,a)}async rollbackEdit(e,t,n,s,i){return await electron.mwapi("rollbackEdit",e,t,n,s,i)}async undoEdit(e,t,n,s,i){return await electron.mwapi("undoEdit",e,t,n,s,i)}async restoreEdit(e,t,n,s,i){return await electron.mwapi("restoreEdit",e,t,n,s,i)}async thankRevision(e,t,n){return await electron.mwapi("thankRevision",e,t,n)}async watchPage(e,t,n,s){return await electron.mwapi("watchPage",e,t,n,s)}async unwatchPage(e,t,n){return await electron.mwapi("unwatchPage",e,t,n)}async parse(e,t,n=!1,s,i){return await electron.mwapi("parse",e,t,n,s,i)}async getTags(e,t){return await electron.mwapi("getTags",e,t)}async getPagesContent(e,t,n){return await electron.mwapi("getPagesContent",e,t,n)}async getRevisionContent(e,t,n){return await electron.mwapi("getRevisionContent",e,t,n)}async getLatestIds(e,t,n){return await electron.mwapi("getLatestIds",e,t,n)}async getEditCounts(e,t,n){return await electron.mwapi("getEditCounts",e,t,n)}async areUsersBlocked(e,t,n){return await electron.mwapi("areUsersBlocked",e,t,n)}async isUserGloballyLocked(e,t,n){return await electron.mwapi("isUserGloballyLocked",e,t,n)}async getContributions(e,t,n,s){return await electron.mwapi("getContributions",e,t,n,s)}async getBlocks(e,t,n){return await electron.mwapi("getBlocks",e,t,n)}async pagesExist(e,t,n){return await electron.mwapi("pagesExist",e,t,n)}async getPagesDetails(e,t,n){return await electron.mwapi("getPagesDetails",e,t,n)}async countPageReverts(e,t,n,s){return await electron.mwapi("countPageReverts",e,t,n,s)}async getHistory(e,t,n,s){return await electron.mwapi("getHistory",e,t,n,s)}async getORES(e,t,n,s){return await electron.mwapi("getORES",e,t,n,s)}async extractORES(e,t){return await electron.mwapi("extractORES",e,t)}async getDiff(e,t,n,s,i){return await electron.mwapi("getDiff",e,t,n,s,i)}async getRevision(e,t,n,s){return await electron.mwapi("getRevision",e,t,n,s)}async getRevisionsBetween(e,t,n,s,i){return await electron.mwapi("getRevisionsBetween",e,t,n,s,i)}async parseUsers(e,t,n,s){return await electron.mwapi("parseUsers",e,t,n,s)}async parseEdits(e,t,n,s,i){return await electron.mwapi("parseEdits",e,t,n,s,i)}async parseAbuselogs(e,t,n,s){return await electron.mwapi("parseAbuselogs",e,t,n,s)}async getConsecutiveEdits(e,t,n,s,i){return await electron.mwapi("getConsecutiveEdits",e,t,n,s,i)}async getAbuseLogRevid(e,t,n){return await electron.mwapi("getAbuseLogRevid",e,t,n)}async feeds(e,t,n,s,i){return await electron.mwapi("feeds",e,t,n,s,i)}}):t.API=(m=new WeakMap,u=class extends i.MediaWikiAPI{get hasPendingChanges(){return c.has(this.server)}constructor(e,t,n,s){super(e,new a.MediaWikiOAuth2(`WikiShield (${t}; ${n})`),t,n),r(this,m,null),o(m,this,e),this.server=t,this.username=n;for(const e of s)c.add(e)}})},691(e,t){function n(e,t,n){s(e,t),t.set(e,n)}function s(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function i(e,t){return e.get(r(e,t))}function a(e,t,n){return e.set(r(e,t),n),n}function r(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Killswitch=void 0;var o=new WeakMap,l=new WeakMap,d=new WeakMap,c=new WeakSet;function u(e){if(i(d,this)[e])for(const n of i(d,this)[e])try{n.callback()}catch(e){}finally{var t;!0===(null===(t=n.options)||void 0===t?void 0:t.once)&&(i(d,this)[e]=i(d,this)[e].filter(e=>e!==n))}return this}t.Killswitch=class{constructor(e){var t,i;s(t=this,i=c),i.add(t),n(this,o,null),n(this,l,null),n(this,d,{okay:[],unsafe:[],update:[],"force-update":[],kill:[]}),a(o,this,e.api)}on(e,t,n={}){return i(d,this)[e]&&i(d,this)[e].push({callback:t,options:n}),this}async check(){try{var e,t,n,s,a,l,d;const m=null!==(e=null===(t=await i(o,this).getPagesContent([p._],!0,"en.wikipedia.org"))||void 0===t?void 0:t[p._])&&void 0!==e?e:"",v=null===(n=JSON.parse(m))||void 0===n?void 0:n.WikiShield;if(!v)throw new Error("No killswitch found");if(v.disabled)return r(c,this,u).call(this,"kill");const f=null!==(s=null===(a=v.reload)||void 0===a?void 0:a.soft)&&void 0!==s?s:0;return(null!==(l=null===(d=v.reload)||void 0===d?void 0:d.hard)&&void 0!==l?l:0)>h._?r(c,this,u).call(this,"force-update"):f>g._?(g._=f,r(c,this,u).call(this,"update")):r(c,this,u).call(this,"okay")}catch(e){return r(c,this,u).call(this,"unsafe")}}monitor(e=1e4){return i(l,this)&&clearInterval(i(l,this)),a(l,this,setInterval(()=>this.check(),+e)),this}};var p={_:"User:LuniZunie/JSON/Killswitch.json"},g={_:11},h={_:1}}},t={};function n(s){var i=t[s];if(void 0!==i)return i.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}var s=n(8816),i=n(2486);{var a;function r(){(0,i.build)().then(()=>{(0,s.run)(),window.onpopstate=e=>{var t;"WikiShield"!==(null===(t=e.state)||void 0===t?void 0:t.page)&&(window.location.reload(),window.onpopstate=null)}}).catch(e=>{console.error("[WikiShield] Error during build:",e),alert("An error occurred while starting WikiShield. Please check the console for details.")})}const o=mw.util.addPortletLink("p-personal",mw.util.getUrl("Wikipedia:WikiShield/run"),"WikiShield","pt-wikishield","WikiShield",void 0,"#pt-preferences");if(o){const l=o.querySelector(":scope > a > span");l&&(l.innerHTML="WS",l.style.fontWeight="bold",l.style.color="var(--color-base, #202122)",l.style.maskImage="none",l.style.webkitMaskImage="none",l.style.background="transparent",l.style.height="auto"),"true"!==electron.localStorage.get("WikiShield:OpenExternally")&&o.addEventListener("click",e=>{e.ctrlKey||e.metaKey||e.shiftKey||e.altKey||(e.preventDefault(),history.pushState({page:"WikiShield"},"",location.href),r())})}switch(addEventListener("popstate",e=>{var t;"WikiShield"===(null===(t=e.state)||void 0===t?void 0:t.page)&&r()}),null===(a=history.state)||void 0===a?void 0:a.page){case"WikiShield":history.replaceState(null,"",location.href);break;case"WikiShield-reload":history.replaceState({page:"WikiShield"},"",location.href),r()}"Wikipedia:WikiShield/run"===mw.config.get("wgRelevantPageName")&&"view"===mw.config.get("wgAction")&&(history.pushState({page:"WikiShield"},"",location.href),r())}}();/*</nowiki>*/
7nflx69gfnihk01dx4rcjf42pp1uyx8
619566
619565
2026-08-01T18:15:04Z
LuniZunie
25284
shit
619566
javascript
text/javascript
// Code is available at https://github.com/LuniZunie/WikiShield-App
/*<nowiki>*/!function(){"use strict";var e={4279(e){e.exports="@import url('https://fonts.googleapis.com/css2?family=Varela+Round&display=swap');\r\n\r\n:root {\r\n\t--max-z-index: 2147483647;\r\n\r\n --body-color: rgba(241, 245, 255, 1);\r\n --body-background: rgba(20, 20, 30, 1);\r\n\r\n font-family: 'Inter', sans-serif;\r\n \tfont-optical-sizing: auto;\r\n -webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n* {\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n::-webkit-scrollbar {\r\n\twidth: 10px;\r\n\theight: 10px;\r\n}\r\n\r\n::-webkit-scrollbar-track {\r\n\tbackground: transparent;\r\n}\r\n\r\n::-webkit-scrollbar-thumb {\r\n\tborder: 2px solid transparent;\r\n border-radius: 10px;\r\n\r\n\t/* Theme dependent */\r\n\tbackground: rgba(255, 255, 255, .1);\r\n\tbackground-clip: content-box;\r\n\r\n\t&:hover {\r\n\t\tborder: 2px solid transparent;\r\n\t\tborder-radius: 10px;\r\n\r\n\t\t/* Theme dependent */\r\n\t\tbackground: rgba(255, 255, 255, .2);\r\n\t\tbackground-clip: content-box;\r\n\t}\r\n}\r\n\r\nhtml, body {\r\n width: 100%;\r\n\theight: 100%;\r\n\r\n\toverflow: hidden;\r\n\r\n /* Theme dependent */\r\n background: linear-gradient(135deg,\r\n\t\trgba(20, 30, 48, 1),\r\n\t\trgba(36, 59, 85, 1)\r\n\t);\r\n}\r\n\r\n@keyframes loading-dots {\r\n\t0%, 100% {\r\n\t\tcontent: '';\r\n\t}\r\n\t25% {\r\n\t\tcontent: '.';\r\n\t}\r\n\t50% {\r\n\t\tcontent: '..';\r\n\t}\r\n\t75% {\r\n\t\tcontent: '...';\r\n\t}\r\n}\r\n\r\n.animate-loading-dots::after {\r\n\tcontent: '';\r\n\r\n\tdisplay: inline-block;\r\n\r\n\tanimation: loading-dots 1.5s steps(3, start) infinite;\r\n}"},5540(e){e.exports='<!DOCTYPE html>\r\n<html lang="en">\r\n <head>\r\n <meta charset="UTF-8">\r\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\r\n <meta http-equiv="Content-Security-Policy">\r\n\r\n <title>WikiShield</title>\r\n <link rel="icon" href="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" type="image/png">\r\n\r\n <link rel="stylesheet" href="https://fonts.cdnfonts.com/css/open-dyslexic">\r\n <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.0/css/all.min.css">\r\n\r\n <link rel="stylesheet" href="../common/style.css">\r\n <link rel="stylesheet" href="style.css">\r\n\r\n <script type="module" src="script.js"><\/script>\r\n </head>\r\n <body>\r\n <div id="loading">\r\n <img class="icon" src="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" alt="WikiShield Logo">\r\n </div>\r\n <div id="initial" class="hidden">\r\n\t\t\t<canvas id="dots-canvas"></canvas>\r\n\t\t\t<div id="welcome-container" class="shimmer shimmer-border">\r\n\t\t\t\t<div class="shield-container">\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="shield-icon">\r\n\t\t\t\t\t\t<img src="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" alt="WikiShield Logo">\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<h1>Welcome to <span id="wikishield-sikiwhield">WikiShield</span></h1>\r\n\t\t\t\t<div class="about-links">\r\n\t\t\t\t\t<a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="about-link">About</a>\r\n\t\t\t\t\t<a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia talk:WikiShield" target="_blank" class="about-link">Discuss</a>\r\n\t\t\t\t\t<span class="about-link">v<span class="VERSION"></span></span>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div id="rollback-needed" class="hidden">\r\n\t\t\t\t\t<p><span class="fa fa-exclamation-triangle"></span> You must have rollback or admin rights to use this script.</p>\r\n\t\t\t\t\t<p>You can apply for rollback rights <a rel="noopener" class="request-link" href="https://www.wikidata.org/wiki/Q7765871" target="_blank">here</a>.</p>\r\n\t\t\t\t</div>\r\n\t\t\t\t<button type="button" id="start-button">\r\n\t\t\t\t\tStart WikiShield <i class="fas fa-arrow-right"></i>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n <div id="app" class="hidden">\r\n <div id="container">\r\n <div id="queue">\r\n <div id="queue-top">\r\n <div id="queue-top-left" class="queue-button-cluster" data-zen-show="alerts,messages">\r\n <span class="fa fa-bell" id="alerts-icon" data-tooltip="Alerts" data-zen-show="alerts">\r\n <span id="alerts-count" class="icon-count hidden red" data-zen-show="badges"></span>\r\n </span>\r\n <span class="fa fa-inbox" id="messages-icon" data-tooltip="Messages" data-zen-show="messages">\r\n <span id="messages-count" class="icon-count hidden blue" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="DEFCON">\r\n <div class="dot"></div>\r\n <span><span class="DEFCON-RPM">0</span> RPM</span>\r\n </div>\r\n <div id="queue-top-right" class="queue-button-cluster">\r\n <span class="fa fa-envelope" id="email-button" data-tooltip="Email Emergency, ArbCom, or Oversight" data-multiple-hrefs="email" href></span>\r\n <span class="fa fa-gear" id="settings-icon" data-tooltip="Settings"></span>\r\n </div>\r\n </div>\r\n <div id="queue-tabs">\r\n <div id="queue-tab-recent" class="queue-tab selected" data-tooltip="Recent edits">\r\n <span class="fas fa-stopwatch">\r\n <span class="icon-count hidden gray" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-pending" class="queue-tab" data-tooltip="Pending edits">\r\n <span class="fas fa-flag">\r\n <span class="icon-count hidden orange" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-users" class="queue-tab" data-tooltip="User creation logs">\r\n <span class="fas fa-user">\r\n <span class="icon-count hidden green" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-watchlist" class="queue-tab" data-tooltip="Watchlist edits">\r\n <span class="fas fa-book-bookmark">\r\n <span class="icon-count hidden blue" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-abuselog" class="queue-tab" data-tooltip="Abuse logs">\r\n <span class="fas fa-filter-circle-xmark">\r\n <span class="icon-count hidden red" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n </div>\r\n <div id="queue-items" class="queue-list">\r\n <div class="queue-empty">\r\n No edits in queue.\r\n </div>\r\n </div>\r\n <div class="width-adjust" id="queue-width-adjust"></div>\r\n <div id="clear-queue">\r\n <span class="fa fa-trash"></span>\r\n </div>\r\n </div>\r\n <div id="alerts-panel" class="notification-panel">\r\n <div id="alerts-header" class="notification-header">\r\n <span>Alerts</span>\r\n <span id="mark-all-alerts-read" class="mark-all-read">Mark all as read</span>\r\n </div>\r\n <div id="alerts-list" class="notification-list"></div>\r\n </div>\r\n <div id="messages-panel" class="notification-panel">\r\n <div id="messages-header" class="notification-header">\r\n <span>Messages</span>\r\n <span id="mark-all-messages-read" class="mark-all-read">Mark all as read</span>\r\n </div>\r\n <div id="messages-list" class="notification-list"></div>\r\n </div>\r\n <div id="right-container">\r\n <div id="right-content">\r\n <div id="main-container">\r\n <div id="edit-details">\r\n <div class="central">Nothing selected</div>\r\n </div>\r\n <div id="previous-item-button" class="nav-item-button">\r\n <i class="fas fa-chevron-left"></i>\r\n </div>\r\n <div id="next-item-button" class="nav-item-button">\r\n <i class="fas fa-chevron-right"></i>\r\n </div>\r\n <div id="ai-analysis-container" class="hidden shimmer shimmer-border">\r\n <div class="header">\r\n <i class="fas fa-robot"></i>\r\n <span class="title">AI Analysis</span>\r\n <span class="assessment"></span>\r\n <span class="confidence"></span>\r\n </div>\r\n <div class="explanation"></div>\r\n <div class="issues"></div>\r\n </div>\r\n <div id="diff-scroll-up" class="diff-scroll-button hidden">\r\n <i class="fas fa-chevron-up"></i>\r\n </div>\r\n <div id="diff-container"></div>\r\n <div id="diff-scroll-down" class="diff-scroll-button hidden">\r\n <i class="fas fa-chevron-down"></i>\r\n </div>\r\n <div id="pending-changes-container" class="hidden">\r\n <div class="accept">Accept</div>\r\n <div class="reject">Reject</div>\r\n </div>\r\n <div id="progress-bar-container"></div>\r\n <div id="bottom-tools" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-item" data-menu="revert" data-queue-type="edit">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-undo"></i>\r\n <span>Revert</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="warn" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-exclamation-triangle"></i>\r\n <span>Warn</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="user" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-user"></i>\r\n <span>User</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="page" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-file-lines"></i>\r\n <span>Page</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="edit" data-queue-type="edit">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-pen-to-square"></i>\r\n <span>Edit</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div id="copy-link" data-tooltip="Copy link" data-queue-type="edit,logevent,abuselog">\r\n <div>\r\n <i class="fas fa-link"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div id="right-details">\r\n <div id="right-top">\r\n <div class="tabs">\r\n <div id="latest-edits-tab" class="tab hidden selected" data-tooltip="Latest edit">\r\n <i class="fas fa-user"></i>\r\n </div>\r\n <div id="consecutive-edits-tab" class="tab hidden" data-tooltip="Consecutive edits">\r\n <i class="fas fa-users"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="icons"></div>\r\n </div>\r\n\r\n <div id="user-contributions" class="section" data-queue-type="edit,logevent,abuselog">\r\n <div class="header">\r\n <div class="title"><i id="refresh-user-contributions" class="fas fa-rotate"></i> Contributions</div>\r\n <div class="pills">\r\n\r\n </div>\r\n </div>\r\n <div class="queue-list">\r\n\r\n </div>\r\n <div class="footer">\r\n <span>View all contributions</span>\r\n <i class="fas fa-arrow-right"></i>\r\n </div>\r\n </div>\r\n\r\n <div id="page-history" class="section" data-queue-type="edit,abuselog">\r\n <div class="header">\r\n <div class="title"><i id="refresh-page-history" class="fas fa-rotate"></i> Page History</div>\r\n <div class="pills">\r\n\r\n </div>\r\n </div>\r\n <div class="queue-list">\r\n\r\n </div>\r\n <div class="footer">\r\n <span>View full page history</span>\r\n <i class="fas fa-arrow-right"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="width-adjust" id="details-width-adjust"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-menu" id="revert-menu"></div>\r\n <div class="bottom-tool-menu" id="warn-menu"></div>\r\n <div class="bottom-tool-menu" id="user-menu">\r\n <div id="user-open-user-page" class="menu-option">\r\n <i class="fas fa-user-circle"></i>\r\n <span>Open user page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-open-user-talk" class="menu-option">\r\n <i class="fas fa-comments"></i>\r\n <span>Open user talk</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-view-contribs" class="menu-option">\r\n <i class="fas fa-list"></i>\r\n <span>View contributions</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-view-filter-log" class="menu-option">\r\n <i class="fas fa-filter"></i>\r\n <span>View filter log</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-whitelist" class="menu-option">\r\n <i class="fas fa-check"></i>\r\n <span>Whitelist user</span>\r\n </div>\r\n <div id="user-unwhitelist" class="menu-option hidden">\r\n <i class="fas fa-xmark"></i>\r\n <span>Unwhitelist user</span>\r\n </div>\r\n <div id="user-highlight" class="menu-option">\r\n <i class="fas fa-star"></i>\r\n <span>Highlight user</span>\r\n </div>\r\n <div id="user-unhighlight" class="menu-option hidden">\r\n <i class="fas fa-star"></i>\r\n <span>Unhighlight user</span>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-welcome" class="menu-option submenu-trigger">\r\n <i class="fas fa-paper-plane"></i>\r\n <span>Welcome</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-report-aiv" class="menu-option submenu-trigger">\r\n <i class="fas fa-flag"></i>\r\n <span>Report (AIV)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-report-uaa" class="menu-option submenu-trigger">\r\n <i class="fas fa-user-slash"></i>\r\n <span>Report (UAA)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-request-global-block" class="menu-option submenu-trigger">\r\n <i class="fas fa-ban"></i>\r\n <span>Request global block</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-request-global-lock" class="menu-option submenu-trigger">\r\n <i class="fas fa-lock"></i>\r\n <span>Request global lock</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-new-talk-topic" class="menu-option submenu-trigger">\r\n <i class="fas fa-envelope"></i>\r\n <span>Message user</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n <div class="bottom-tool-menu" id="page-menu">\r\n <div id="page-open-page" class="menu-option">\r\n <i class="fas fa-file"></i>\r\n <span>Open page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="page-open-talk" class="menu-option">\r\n <i class="fas fa-comments"></i>\r\n <span>Open talk page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="page-view-history" class="menu-option">\r\n <i class="fas fa-clock-rotate-left"></i>\r\n <span>View page history</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-watch" class="menu-option">\r\n <i class="fas fa-eye"></i>\r\n <span>Watch page</span>\r\n </div>\r\n <div id="page-unwatch" class="menu-option">\r\n <i class="fas fa-eye-slash"></i>\r\n <span>Unwatch page</span>\r\n </div>\r\n <div id="page-whitelist" class="menu-option">\r\n <i class="fas fa-check"></i>\r\n <span>Whitelist page</span>\r\n </div>\r\n <div id="page-unwhitelist" class="menu-option hidden">\r\n <i class="fas fa-xmark"></i>\r\n <span>Unwhitelist page</span>\r\n </div>\r\n <div id="page-highlight" class="menu-option">\r\n <i class="fas fa-star"></i>\r\n <span>Highlight page</span>\r\n </div>\r\n <div id="page-unhighlight" class="menu-option hidden">\r\n <i class="fas fa-star"></i>\r\n <span>Unhighlight page</span>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-request-protection" class="menu-option submenu-trigger">\r\n <i class="fas fa-shield-halved"></i>\r\n <span>Request protection</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-new-talk-topic" class="menu-option submenu-trigger">\r\n <i class="fas fa-envelope"></i>\r\n <span>New talk page topic</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n <div class="bottom-tool-menu" id="edit-menu">\r\n <div id="edit-view-revision" class="menu-option">\r\n <i class="fas fa-eye"></i>\r\n <span>View revision</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="edit-view-diff" class="menu-option">\r\n <i class="fas fa-code-compare"></i>\r\n <span>View diff</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="edit-thank-user" class="menu-option">\r\n <i class="fas fa-heart"></i>\r\n <span>Thank user</span>\r\n </div>\r\n <div id="edit-rollback" class="menu-option submenu-trigger">\r\n <i class="fas fa-rotate-left"></i>\r\n <span>Rollback</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="edit-rollback-goodfaith" class="menu-option submenu-trigger">\r\n <i class="fas fa-handshake"></i>\r\n <span>Rollback (good faith)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="edit-undo" class="menu-option submenu-trigger">\r\n <i class="fas fa-arrow-rotate-left"></i>\r\n <span>Undo</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n\r\n <div id="settings-container">\r\n <div class="settings">\r\n <div class="settings-left">\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>CORE</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-general-button">\r\n <span><i class="fas fa-gear"></i>General</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-audio-button">\r\n <span><i class="fas fa-volume-high"></i>Audio</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-controls-button">\r\n <span><i class="fas fa-keyboard"></i>Controls</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-zen-button">\r\n <span><i class="fas fa-spa"></i>Zen Mode</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>APPEARANCE</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-app-button">\r\n <span><i class="fas fa-palette"></i>App</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-queue-button">\r\n <span><i class="fas fa-list"></i>Queue</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-accessibility-button">\r\n <span><i class="fas fa-universal-access"></i>Accessibility</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>TOOLS</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-auto-reporting-button">\r\n <span><i class="fas fa-flag"></i>Auto Reporting</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-gadgets-button">\r\n <span><i class="fas fa-toolbox"></i>Gadgets</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-AI-button">\r\n <span><i class="fas fa-robot"></i>AI Analysis</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>WHITELIST</span>\r\n </div>\r\n <div class="settings-left-menu-compact">\r\n <div class="settings-left-menu-item" id="settings-whitelist-users-button">\r\n <i class="fas fa-user" title="Users"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-whitelist-pages-button">\r\n <i class="fas fa-file" title="Pages"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-whitelist-tags-button">\r\n <i class="fas fa-tag" title="Tags"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>HIGHLIGHT</span>\r\n </div>\r\n <div class="settings-left-menu-compact">\r\n <div class="settings-left-menu-item" id="settings-highlight-users-button">\r\n <i class="fas fa-user" title="Users"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-highlight-pages-button">\r\n <i class="fas fa-file" title="Pages"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-highlight-tags-button">\r\n <i class="fas fa-tag" title="Tags"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>DATA</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-statistics-button">\r\n <span><i class="fas fa-chart-area"></i>Statistics</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-save-button">\r\n <span><i class="fas fa-floppy-disk"></i>Save</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>WIKISHIELD</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-changelog-button">\r\n <span><i class="fas fa-file-alt"></i>Changelog</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-about-button">\r\n <span><i class="fas fa-info"></i>About</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="settings-right">\r\n <div class="general hidden">\r\n <div class="settings-section" data-electron="false">\r\n <div class="settings-section-title">Launch behavior</div>\r\n <div class="settings-section-desc">Choose whether WikiShield should open in the current tab or a new tab when launched.</div>\r\n <div id="settings-launch-behavior" class="settings-radio-group">\r\n <div class="settings-radio-option selected" data-value="current_page">Run on current page</div>\r\n <div class="settings-radio-option" data-value="new_page">Run on <a href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield/run">/Run</a> page</div>\r\n </div>\r\n </div>\r\n <div class="settings-compact-grid">\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Maximum edit count</div>\r\n <div class="settings-section-desc">Edits from users with more than this number of total edits will not be shown unless that user is highlighted.</div>\r\n <numeric-input id="settings-maximum-edit-count" step="5" min="0" value="50"></numeric-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Maximum queue size</div>\r\n <div class="settings-section-desc">Maximum number of edits to keep in the queue for review. Higher values may impact performance.</div>\r\n <numeric-input id="settings-maximum-queue-size" step="10" min="0" value="100"></numeric-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Minimum ORES score</div>\r\n <div class="settings-section-desc">Minimum ORES score required for an edit to appear in the recent changes queue.</div>\r\n <numeric-input id="settings-minimum-ores-score" step="0.05" min="0" max="1" value="0"></numeric-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">ORES bias</div>\r\n <div class="settings-section-desc">\r\n Select how ORES scores are calculated for edits in the recent changes queue. "Badfaith" is how likely an edit is to be made in bad faith, "Damaging" is how likely an edit is to be damaging.\r\n </div>\r\n <div id="settings-ores-bias" class="settings-slider">\r\n <div class="settings-slider-labels">\r\n <div class="settings-slider-label-left active">Badfaith<span class="percent">50%</span></div>\r\n <div class="settings-slider-label-right active">Damaging<span class="percent">50%</span></div>\r\n </div>\r\n <div class="settings-slider-track">\r\n <div class="settings-slider-thumb"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Watchlist expiry</div>\r\n <div class="settings-section-desc">Amount of time to leave warned user\'s talk pages on your watchlist.</div>\r\n <duration-input id="settings-watchlist-expiry"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Namespaces to monitor</div>\r\n <div class="settings-section-desc">Select which namespaces WikiShield should monitor for recent changes and pending changes.</div>\r\n <div id="settings-namespaces-container" class="checkbox-container">\r\n \x3c!-- Namespace checkboxes will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="audio hidden">\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-header">\r\n <span class="settings-section-header-icon">ORES</span>\r\n <span>ORES Alerts</span>\r\n </div>\r\n <div class="settings-section compact inline" id="sound-alert-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Sound alerts for high ORES scores</div>\r\n <div class="settings-section-desc">Play a sound when an edit above the threshold is added to the queue</div>\r\n </div>\r\n <toggle-input id="settings-ORES-alert-toggle" value="false"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="sound-alert-ores-score">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">ORES score threshold</div>\r\n <div class="settings-section-desc">Play a sound alert when an edit with an ORES score above this value is added</div>\r\n </div>\r\n <numeric-input id="settings-ORES-alert-threshold" step="0.05" min="0" max="1" value="0.9"></numeric-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Volume</div>\r\n <volume-control\r\n id="settings-master-volume"\r\n title="Master Volume"\r\n description="Controls the overall volume of all sounds"\r\n value="1"\r\n ></volume-control>\r\n <div id="settings-sounds-container" class="settings-section">\r\n \x3c!-- Individual sound settings will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="controls hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Keyboard shortcuts</div>\r\n <div class="settings-section-desc">Customize keyboard shortcuts for various actions in WikiShield.</div>\r\n <div class="settings-section compact inline" id="repeat-control-scripts">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Repeat control scripts</div>\r\n <div class="settings-section-desc">Allow control scripts to be triggered repeatedly when holding down keys</div>\r\n </div>\r\n <toggle-input id="repeat-control-scripts-toggle" value="true"></toggle-input>\r\n </div>\r\n <button type="button" id="settings-new-control-script" class="add-action-button new-control-script"><span class="fa fa-plus"></span> Add new action</button>\r\n </div>\r\n </div>\r\n <div class="zen hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Zen Mode</div>\r\n <div class="settings-section-desc">Your distraction-free editing experience.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable Zen Mode</div>\r\n <div class="settings-section-desc">Reduce on-screen distractions while reviewing edits.</div>\r\n </div>\r\n <toggle-input id="settings-zen-mode" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Customize Zen Mode</div>\r\n <div class="settings-compact-grid">\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Sound</div>\r\n <div class="settings-section-desc">Play sound in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-sound" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact" data-electron="true">\r\n <div class="settings-section-title">Music</div>\r\n <div class="settings-section-desc">Play background music in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-music" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Alerts</div>\r\n <div class="settings-section-desc">Show alerts in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-alerts" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Messages</div>\r\n <div class="settings-section-desc">Show messages in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-messages" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Toasts</div>\r\n <div class="settings-section-desc">Show toasts in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-toasts" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Badges</div>\r\n <div class="settings-section-desc">Show badges in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-badges" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="app hidden">\r\n \x3c!-- <div class="settings-section">\r\n <div class="settings-section-title">App theme</div>\r\n <div class="settings-section-desc">Choose between light mode, dark mode, or automatic switching based on system settings.</div>\r\n <div id="settings-app-theme" class="settings-radio-group">\r\n <div class="settings-radio-option" data-value="light">Light mode</div>\r\n <div class="settings-radio-option selected" data-value="auto">Auto</div>\r\n <div class="settings-radio-option" data-value="dark">Dark mode</div>\r\n </div>\r\n </div> --\x3e\r\n <div class="settings-section">\r\n <div class="settings-section-title">Startup animation</div>\r\n <div class="settings-section-desc">Enable or disable the startup animation when launching WikiShield.</div>\r\n <div id="settings-startup-performance" class="settings-radio-group">\r\n <div class="settings-radio-option" data-value="always_off">Always off</div>\r\n <div class="settings-radio-option selected" data-value="adaptive">Adaptive (recommended)</div>\r\n <div class="settings-radio-option" data-value="always_on">Always on</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="queue hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Queues</div>\r\n <div class="settings-section-desc">Enable or disable different edit queues, and customize their order.</div>\r\n <draggable-order-list id="settings-queues">\r\n \x3c!-- Queue items will be populated here --\x3e\r\n </draggable-order-list>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Color palette</div>\r\n <div class="settings-section-desc">Select the color palette used for highlighting users and pages.</div>\r\n <div id="settings-palette-selector" class="palette-selector">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class="accessibility hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Accessibility Options</div>\r\n <div class="settings-section-desc">Customize accessibility features for better usability.</div>\r\n <div class="settings-compact-grid">\r\n \x3c!-- <div class="settings-section compact">\r\n <div class="settings-section-title">Colorblind Mode</div>\r\n <div class="settings-section-desc">Add indicators to help distinguish colors for colorblind users.</div>\r\n <toggle-input id="settings-colorblind-mode" value="false"></toggle-input>\r\n </div> --\x3e\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Dyslexia Friendly Font</div>\r\n <div class="settings-section-desc">Use a font that is easier to read for users with dyslexia.</div>\r\n <toggle-input id="settings-dyslexia-font" value="false"></toggle-input>\r\n </div>\r\n \x3c!-- <div class="settings-section compact">\r\n <div class="settings-section-title">High Contrast Mode</div>\r\n <div class="settings-section-desc">Increase contrast for better visibility.</div>\r\n <toggle-input id="settings-high-contrast-mode" value="false"></toggle-input>\r\n </div> --\x3e\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Reduce Motion</div>\r\n <div class="settings-section-desc">Minimize motion effects for users sensitive to motion.</div>\r\n <toggle-input id="settings-reduce-motion" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="auto-reporting hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Enable Auto Reporting</div>\r\n <div class="settings-section-desc">Automatically report edits that receive certain warnings.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Auto Reporting</div>\r\n <div class="settings-section-desc">When enabled, edits that trigger selected warnings will be automatically reported.</div>\r\n </div>\r\n <toggle-input id="settings-auto-reporting-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Auto Reporting Warnings</div>\r\n <div class="settings-section-desc">Select which warnings should trigger automatic reporting.</div>\r\n <div id="settings-auto-reporting-warnings-container" class="checkbox-container">\r\n \x3c!-- Checkboxes will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="gadgets hidden">\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Gadgets</div>\r\n <div class="settings-section-desc">Toggle various Wikishield features.</div>\r\n <div class="settings-section compact inline" id="auto-welcome-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Automatic welcoming of new users</div>\r\n <div class="settings-section-desc">Automatically welcome new users with empty talk pages when moving past their constructive edits</div>\r\n </div>\r\n <toggle-input id="settings-auto-welcome-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="wikipedia-popups-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Popups</div>\r\n <div class="settings-section-desc">When enabled, links will be opened in a new window. Otherwise, they will be opened in your default browser.<span class="disabled-note">This feature is disabled on your browser</span></div>\r\n </div>\r\n <toggle-input id="settings-wikipedia-popups-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="talk-page-thanks-for-temporary-users-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Send talk page thanks for temporary users</div>\r\n <div class="settings-section-desc">If enabled, when you thank a temporary user with an empty talk page, WikiShield will send them a welcoming thank you message in addition to the standard thank you message.</div>\r\n </div>\r\n <toggle-input id="settings-edit-summaries-toggle" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Username Highlighting</div>\r\n <div class="settings-section compact inline" id="username-highlighting-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable username highlighting</div>\r\n <div class="settings-section-desc">Highlights usernames in edit summaries, edit diffs, and user creation logs.</div>\r\n </div>\r\n <toggle-input id="settings-username-highlighting-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="username-highlighting-mode-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Toggle fuzzy matching mode</div>\r\n <div class="settings-section-desc">\r\n When enabled, highlights similar usernames. Not recommended for users with short usernames.<br/>\r\n <strong>NOTE:</strong> This may cause performance issues for those with long usernames, or users on weaker devices.\r\n </div>\r\n </div>\r\n <toggle-input id="settings-username-highlighting-fuzzy-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="AI hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">AI Analysis</div>\r\n <div class="settings-section-desc">Configure AI-powered analysis features.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable Ollama AI Analysis (<a href="https://ollama.com">ollama.com</a>)</div>\r\n <div class="settings-section-desc">Use local AI models with complete privacy.</div>\r\n </div>\r\n <toggle-input id="settings-AI-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-header">\r\n <span class="settings-section-header-icon">Tools</span>\r\n </div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Edit Analysis</div>\r\n <div class="settings-section-desc">Suggests actions to take on edits.</div>\r\n </div>\r\n <toggle-input id="settings-AI-edit-analysis-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Username Analysis</div>\r\n <div class="settings-section-desc">Flags potentially problematic usernames and prompts you to report them to UAA</div>\r\n </div>\r\n <toggle-input id="settings-AI-username-analysis-toggle" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-server-url">\r\n <div class="settings-section-title">Server URL</div>\r\n <div class="settings-section-desc">The URL of your local Ollama server</div>\r\n <div class="text-input-container">\r\n <input title="Ollama URL" type="text" id="ollama-url-input" autoComplete="off">\r\n <button type="button" id="settings-ollama-test-connection">Test Connection</button>\r\n </div>\r\n <div class="settings-section compact connection-status-container">\r\n <p id="settings-ollama-connection-status"></p>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-model-select">\r\n <div class="settings-section-title">\r\n Model Selection\r\n <button type="button" id="settings-ollama-refresh-models">\r\n <span class="fa fa-sync"></span> Refresh Models\r\n </button>\r\n </div>\r\n <div class="settings-section-desc">Select which Ollama model to use for edit analysis</div>\r\n <div class="settings-section compact models-container">\r\n <p id="settings-ollama-models-status">Click "Refresh Models" to load available models</p>\r\n <div id="settings-ollama-models"></div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-setup">\r\n <div class="settings-section-title">Setup required</div>\r\n <div class="settings-section-desc">\r\n <details>\r\n <summary><strong>Windows (Permanent)</strong></summary>\r\n <ol class="pad-list">\r\n <li>Press <code>Win + R</code>, type <code>sysdm.cpl</code>, and press Enter</li>\r\n <li>Go to the "Advanced" tab and click on "Environment Variables"</li>\r\n <li>Create a new variable under "System variables"</li>\r\n <li>Set the name to <code>OLLAMA_HOST</code> and the value to <code>http://127.0.0.11434</code>\r\n <ul class="pad-list">\r\n <li><strong>NOTE:</strong> You can change the port (11434) if that port is already in use, but make sure to update the "Server URL" setting in WikiShield accordingly</li>\r\n </ul>\r\n </li>\r\n <li>Click "OK" to save the variable</li>\r\n <li>Create another variable under "System variables"</li>\r\n <li>Set the name to <code>OLLAMA_ORIGINS</code> and the value to <code>https://*.wikipedia.org</code></li>\r\n <li>Click "OK" to save the variable, you can now close the Environment Variables and System Properties windows</li>\r\n <li>Restart Ollama</li>\r\n </ol>\r\n </details>\r\n\r\n <details>\r\n <summary><strong>Windows (Temporary)</strong></summary>\r\n <pre>\r\n$env:OLLAMA_HOST="http://127.0.0.11434"\r\n$env:OLLAMA_ORIGINS="https://*.wikipedia.org"\r\nollama serve</pre>\r\n </details>\r\n\r\n <details>\r\n <summary><strong>macOS / Linux</strong></summary>\r\n Add the following to <code>~/.bashrc</code> or <code>~/.zshrc</code>:\r\n <pre>\r\nexport OLLAMA_HOST="http://127.0.0.11434"\r\nexport OLLAMA_ORIGINS="https://*.wikipedia.org"</pre>\r\n Then run:\r\n <pre>source ~/.bashrc && ollama serve</pre>\r\n </details>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="whitelist users hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted users</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted user is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-users-expiry" label="Default expiry for whitelisted users"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Users</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted users.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-users-input" placeholder="Add user to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-users-add-button">Add user</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-users-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted users will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="whitelist pages hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted pages</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted page is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-pages-expiry" label="Default expiry for whitelisted pages"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Pages</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted pages.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-pages-input" placeholder="Add page to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-pages-add-button">Add page</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-pages-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted pages will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="whitelist tags hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted tags</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted tag is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-tags-expiry" label="Default expiry for whitelisted tags"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Tags</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted tags.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-tags-input" placeholder="Add tag to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-tags-add-button">Add tag</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-tags-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted tags will be populated here --\x3e\r\n </div>\r\n </div>\r\n\r\n <div class="highlight users hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted users</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted user is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-users-expiry" label="Default expiry for highlighted users"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Users</div>\r\n <div class="settings-section-desc">Manage your list of highlighted users.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-users-input" placeholder="Add user to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-users-add-button">Add user</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-users-list" class="settings-section list-container">\r\n \x3c!-- Highlighted users will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="highlight pages hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted pages</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted page is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-pages-expiry" label="Default expiry for highlighted pages"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Pages</div>\r\n <div class="settings-section-desc">Manage your list of highlighted pages.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-pages-input" placeholder="Add page to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-pages-add-button">Add page</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-pages-list" class="settings-section list-container">\r\n \x3c!-- Highlighted pages will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="highlight tags hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted tags</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted tag is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-tags-expiry" label="Default expiry for highlighted tags"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Tags</div>\r\n <div class="settings-section-desc">Manage your list of highlighted tags.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-tags-input" placeholder="Add tag to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-tags-add-button">Add tag</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-tags-list" class="settings-section list-container">\r\n \x3c!-- Highlighted tags will be populated here --\x3e\r\n </div>\r\n </div>\r\n\r\n <div class="statistics hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">\r\n Statistics Overview\r\n <button type="button" id="reset-statistics-button">Reset Statistics</button>\r\n </div>\r\n <div class="stats-grid">\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-total-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Edits Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n You have thanked <span id="stats-thanks-percentage"></span>% of the edits you reviewed\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-recent-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Recent Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n Recent changes make up <span id="stats-recent-changes-percentage"></span>% of your reviewed edits\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-pending-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Pending Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n You have accepted <span id="stats-pending-changes-accepted"></span> (\r\n <span id="stats-pending-changes-accepted-percentage"></span>%\r\n ) pending changes\r\n </div>\r\n <div class="stat-sublabel">\r\n You have rejected <span id="stats-pending-changes-rejected"></span> (\r\n <span id="stats-pending-changes-rejected-percentage"></span>%\r\n ) pending changes from entering the public eye\r\n </div>\r\n <div class="stat-sublabel">\r\n Out of all the edits you’ve reviewed, <span id="stats-pending-changes-percentage"></span>% of them were pending review\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-user-creations-reviewed" class="stat-value"></div>\r\n <div class="stat-label">User Creations Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-user-creations-percentage"></span>% of your reviews came from user creations\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-watchlist-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Watchlist Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-watchlist-changes-percentage"></span>% of your reviews came from your watchlist\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-abuselog-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Abuse Log Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-abuselog-changes-percentage"></span>% of your reviews came from your abuse log\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-reverts-made" class="stat-value"></div>\r\n <div class="stat-label">Reverts Made</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-reverts-percentage"></span>% of edits that cross your path are reverted by you\r\n </div>\r\n <div class="stat-sublabel">\r\n You assumed good faith <span id="stats-goodfaith-reverts-percentage"></span>% of the time\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-recent-reverts-percentage"></span>% of your reverts were from recent changes\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pending-reverts-percentage"></span>% of your reverts were pending\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-watchlist-reverts-percentage"></span>% of your reverts were from your watchlist\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-abuselog-reverts-percentage"></span>% of your reverts were from your abuse log\r\n </div>\r\n <div class="stat-sublabel">\r\n …and the last <span id="stats-other-reverts-percentage"></span>% weren’t even in your queue!\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-users-welcomed" class="stat-value"></div>\r\n <div class="stat-label">Users Welcomed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-welcomed-message"></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-warnings" class="stat-value"></div>\r\n <div class="stat-label">Warnings Issued</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-1-percentage"></span>% were level 1\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-2-percentage"></span>% were level 2\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-3-percentage"></span>% were level 3\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-4-percentage"></span>% were level 4\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-4im-percentage"></span>% were level 4im\r\n </div>\r\n <div class="stat-sublabel">\r\n …and the rest we were too lazy to track =)\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-reports" class="stat-value"></div>\r\n <div class="stat-label">Reports Filed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n AIV accounted for <span id="stats-AIV-reports-percentage"></span>% of your reports\r\n </div>\r\n <div class="stat-sublabel">\r\n another <span id="stats-UAA-reports-percentage"></span>% were for UAA\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-global-block-reports-percentage"></span>% were for global block requests\r\n </div>\r\n <div class="stat-sublabel">\r\n while <span id="stats-global-lock-reports-percentage"></span>% were for global lock requests\r\n </div>\r\n <div class="stat-sublabel">\r\n finally, <span id="stats-RFPP-reports-percentage"></span>% were posted at RFPP\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-pages-watched" class="stat-value"></div>\r\n <div class="stat-label">Pages Watched</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-unwatched"></span> pages were annoying enough to be unwatched\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-items-whitelisted" class="stat-value"></div>\r\n <div class="stat-label">Items Whitelisted</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-whitelisted"></span> (\r\n <span id="stats-users-whitelisted-percentage"></span>%\r\n ) were users\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-whitelisted"></span> (\r\n <span id="stats-pages-whitelisted-percentage"></span>%\r\n ) were pages\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-tags-whitelisted"></span> (\r\n <span id="stats-tags-whitelisted-percentage"></span>%\r\n ) were tags\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-items-highlighted" class="stat-value"></div>\r\n <div class="stat-label">Items Highlighted</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-highlighted"></span> (\r\n <span id="stats-users-highlighted-percentage"></span>%\r\n ) were users\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-highlighted"></span> (\r\n <span id="stats-pages-highlighted-percentage"></span>%\r\n ) were pages\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-tags-highlighted"></span> (\r\n <span id="stats-tags-highlighted-percentage"></span>%\r\n ) were tags\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-session-time" class="stat-value"></div>\r\n <div class="stat-label">Session Time</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-reports-per-day"></span> reports per day\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-reverts-per-hour"></span> reverts per hour\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-reviews-per-minute"></span> reviews per minute\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="save hidden">\r\n <div class="save settings-section">\r\n <div class="save-settings-header">\r\n <div class="settings-section-title">Save Settings</div>\r\n <div class="settings-section-desc">Manage how and where your WikiShield settings are stored.</div>\r\n </div>\r\n\r\n <div class="save-settings-content">\r\n <div class="save-settings-card data-management-card">\r\n <div class="card-header">\r\n <div class="card-icon">\r\n <i class="fa fa-database"></i>\r\n </div>\r\n <div class="card-header-content">\r\n <div class="card-title">Data Management</div>\r\n <div class="card-desc">Import, export, or reset your WikiShield settings. Settings are encoded as base64 for easy sharing.</div>\r\n </div>\r\n </div>\r\n\r\n <div class="card-body">\r\n <div class="action-buttons-grid">\r\n <button type="button" id="settings-export-button" class="action-card export-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-download"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Export Settings</div>\r\n <div class="action-card-desc">Save your configuration</div>\r\n </div>\r\n </button>\r\n\r\n <button type="button" id="settings-import-button" class="action-card import-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-upload"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Import Settings</div>\r\n <div class="action-card-desc">Load saved configuration</div>\r\n </div>\r\n </button>\r\n\r\n <button type="button" id="settings-reset-button" class="action-card reset-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-undo"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Reset Settings</div>\r\n <div class="action-card-desc">Restore to defaults</div>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div id="settings-save-status" class="status-message hidden"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="changelog hidden">\r\n <div class="settings-section">\r\n <div class="changelog-content">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class="about hidden">\r\n <div class="settings-section">\r\n <div class="about-content">\r\n <div class="about-version">\r\n <span class="fa fa-shield-alt"></span>\r\n <span>WikiShield v<span id="settings-about-version"></span></span>\r\n </div>\r\n\r\n <div class="about-tagline">\r\n <p>A powerful, real-time patrolling tool for Wikipedia editors</p>\r\n </div>\r\n\r\n <div class="about-links">\r\n <a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="link-card docs">\r\n <div class="link-card-icon">\r\n <span class="fa fa-book"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Documentation</div>\r\n <div class="link-card-desc">Learn how to use WikiShield</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n <a rel="noopener" href="https://github.com/LuniZunie/WikiShield-App" target="_blank" class="link-card source">\r\n <div class="link-card-icon">\r\n <span class="fa fa-code-branch"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Source Code</div>\r\n <div class="link-card-desc">View on GitHub</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n <a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia_talk:WikiShield" target="_blank" class="link-card feedback">\r\n <div class="link-card-icon">\r\n <span class="fa fa-comments"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Feedback</div>\r\n <div class="link-card-desc">Share your thoughts</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n </div>\r\n\r\n <div class="about-footer">\r\n <div class="footer-divider"></div>\r\n <div class="about-credits">\r\n <div>\r\n <div class="credit-card" data-link="https://about.luni.me">\r\n <div class="credit-icon">\r\n <span class="fa fa-code"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">LuniZunie</div>\r\n <div class="credit-role">Lead Developer</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:Ingenuity">\r\n <div class="credit-icon">\r\n <span class="fa fa-lightbulb"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">Ingenuity</div>\r\n <div class="credit-role">Original Creator</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:MSK">\r\n <div class="credit-icon">\r\n <span class="fa fa-database"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">MSK</div>\r\n <div class="credit-role">Backend</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:pro-anti-air">\r\n <div class="credit-icon">\r\n <span class="fa fa-book"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">Pro-anti-air</div>\r\n <div class="credit-role">Documentation</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:Chaotic_Enby">\r\n <div class="credit-icon">\r\n <span class="fa fa-paint-brush"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">Chaotic Enby</div>\r\n <div class="credit-role">Logo Design</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:HurricaneZeta">\r\n <div class="credit-icon">\r\n <span class="fa fa-paint-brush"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">HurricaneZeta</div>\r\n <div class="credit-role">Logo Design</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="copyright-card" data-link="https://sound-effects.bbcrewind.co.uk">\r\n <div class="copyright-title">Nature sounds</div>\r\n <div class="copyright-desc">bbc.co.uk – © copyright 2026 BBC</div>\r\n </div>\r\n <div class="copyright-card" data-link="https://pixabay.com/sound-effects">\r\n <div class="copyright-title">Sound effects</div>\r\n <div class="copyright-desc">pixabay.com – CC0 License</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </body>\r\n</html>'},2459(e){e.exports="@keyframes startup {\n\tfrom {\n\t\topacity: 0;\n\t}\n\tto {\n\t\topacity: 1;\n\t}\n}\n\n@keyframes particles {\n\t0%, 100% {\n\t\ttransform: translate(0, 0) rotate(0deg);\n\t}\n\t33% {\n\t\ttransform: translate(30px, -30px) rotate(120deg);\n\t}\n\t66% {\n\t\ttransform: translate(-20px, 20px) rotate(240deg);\n\t}\n}\n\n@keyframes container-fade-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(30px) scale(.95);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0) scale(1);\n\t}\n}\n\n@keyframes border-glow {\n\t0%, 100% {\n\t\tbox-shadow:\n\t\t\t0 20px 60px rgba(0, 0, 0, .5),\n\t\t\t0 0 40px rgba(102, 126, 234, .4),\n\t\t\t0 0 80px rgba(240, 147, 251, .3),\n\t\t\tinset 0 0 60px rgba(102, 126, 234, .15),\n\t\t\tinset 0 1px 0 rgba(255, 255, 255, .2);\n\t}\n\t50% {\n\t\tbox-shadow:\n\t\t\t0 20px 60px rgba(0, 0, 0, .5),\n\t\t\t0 0 60px rgba(240, 147, 251, .6),\n\t\t\t0 0 120px rgba(102, 126, 234, .4),\n\t\t\tinset 0 0 80px rgba(240, 147, 251, .2),\n\t\t\tinset 0 1px 0 rgba(255, 255, 255, .3);\n\t}\n}\n\n@keyframes shield-entrance {\n\t0% {\n\t\topacity: 0;\n\t\ttransform: scale(0) rotate(-180deg);\n\t}\n\t60% {\n\t\topacity: 1;\n\t\ttransform: scale(1.15) rotate(10deg);\n\t}\n\t100% {\n\t\topacity: 1;\n\t\ttransform: scale(1) rotate(0deg);\n\t}\n}\n\n@keyframes shield-float {\n\t0%, 100% {\n\t\ttransform: translate(-50%, -50%) translateY(0px);\n\t}\n\t50% {\n\t\ttransform: translate(-50%, -50%) translateY(-10px);\n\t}\n}\n\n@keyframes pulse {\n\t0% {\n\t\ttransform: translate(-50%, -50%) scale(.8);\n\t\topacity: 0;\n\t}\n\t50% {\n\t\ttransform: translate(-50%, -50%) scale(1);\n\t\topacity: 0.8;\n\t}\n\t100% {\n\t\ttransform: translate(-50%, -50%) scale(1.5);\n\t\topacity: 0;\n\t}\n}\n\n@keyframes sparkle {\n\t0%, 100% {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n\t50% {\n\t\ttransform: scale(1.5);\n\t\topacity: 1;\n\t}\n}\n\n@keyframes title-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(-20px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes links-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(-10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes warning-fade-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: scale(.95);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: scale(1);\n\t}\n}\n\n@keyframes button-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(40px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes fade-in {\n\tfrom {\n\t\topacity: 0;\n\t}\n\tto {\n\t\topacity: 1;\n\t}\n}\n@keyframes fade-out {\n\tfrom {\n\t\topacity: 1;\n\t}\n\tto {\n\t\topacity: 0;\n\t}\n}\n\n@keyframes scale-in {\n\tfrom {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n\tto {\n\t\ttransform: scale(1);\n\t\topacity: 1;\n\t}\n}\n@keyframes scale-out {\n\tfrom {\n\t\ttransform: scale(1);\n\t\topacity: 1;\n\t}\n\tto {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n}\n\n@keyframes scale-x {\n from {\n transform: scaleX(0);\n }\n to {\n transform: scaleX(1);\n }\n}\n\n@keyframes bottom-tool-menu-enter {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n@keyframes bottom-tool-submenu-enter {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateX(-10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateX(0);\n\t}\n}\n\n@keyframes toast-alert-enter {\n\t0% {\n\t\topacity: 0;\n\t\ttransform: translateX(100%) scale(.8);\n\t}\n\t60% {\n\t\topacity: 1;\n\t\ttransform: translateX(-10px) scale(1.05);\n\t}\n\t100% {\n\t\topacity: 1;\n\t\ttransform: translateX(0) scale(1);\n\t}\n}\n@keyframes toast-alert-leave {\n\t0% {\n\t\topacity: 1;\n\t\ttransform: translateX(0) scale(1);\n\t}\n\t100% {\n\t\topacity: 0;\n\t\ttransform: translateX(150%) scale(.7);\n\t}\n}\n\n@keyframes music-toast-enter {\n from {\n opacity: 0;\n transform: translateX(150%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n@keyframes music-toast-leave {\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(150%);\n }\n}\n\n@keyframes tooltip-enter {\n from {\n\t\ttransform: scale(.8);\n\t}\n\tto {\n\t\ttransform: scale(1);\n\t}\n}\n\n@keyframes star-spin {\n 0% {\n transform: rotate(0deg) scale(1);\n }\n 50% {\n transform: rotate(180deg) scale(1.3);\n }\n 100% {\n transform: rotate(360deg) scale(1);\n }\n}\n\n@keyframes flash-highlight {\n 0%, 100% {\n filter: brightness(1);\n }\n 50% {\n filter: brightness(.5);\n }\n}\n\n@keyframes logo-loader {\n 0%, 100% {\n transform: scale(1);\n\n /* Theme dependent */\n filter: drop-shadow(0 0 10px rgba(102, 126, 234, .4));\n }\n 50% {\n transform: scale(1.5);\n\n /* Theme dependent */\n filter: drop-shadow(0 0 20px rgba(102, 126, 234, .6));\n }\n}\n\n@keyframes refresh-rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse-DEFCON {\n 0% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.15);\n }\n 100% {\n transform: scale(1);\n }\n}\n\nbody {\n --transparency: 1;\n\n font-size: clamp(10px, 3vw, 16px);\n\n /* Theme dependent */\n color: rgba(241, 245, 255, 1);\n background: rgba(20, 20, 30, 1);\n\n &.dyslexia-font {\n font-family: \"Open-Dyslexic\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n\n *:not(.fa):not(.fas):not(.far):not(.fal):not(.fab) {\n font-family: \"Open-Dyslexic\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n }\n }\n\n &.reduce-motion * {\n animation-duration: 0.001s !important;\n transition-duration: 0.001s !important;\n }\n\n & a {\n text-decoration: none;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 0.9);\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n &:active {\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n }\n }\n\n & > #popup-blocker {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 1);\n\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n animation: fade-in .2s ease;\n }\n\n & > #loading {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 2);\n\n opacity: 1;\n\n transition: opacity .5s ease;\n\n /* Theme dependent */\n background: rgba(20, 20, 30, 1);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n\n & > .icon {\n width: 100vmin;\n }\n }\n\n & > .icon {\n aspect-ratio: 1 / 1;\n width: 12.5vmin;\n\n animation: logo-loader 2s ease-in-out infinite;\n\n transition: width .5s cubic-bezier(0.6, -0.28, 0.735, 0.045);\n }\n }\n\n & > #initial {\n display: flex;\n align-items: center;\n\t justify-content: center;\n\n width: 100%;\n height: 100%;\n\n position: relative;\n\n overflow: hidden;\n\n /* Theme dependent */\n background: rgba(20, 20, 30, 1);\n\n &.hidden {\n display: none;\n }\n\n &:before {\n content: '';\n position: absolute;\n inset: 0;\n z-index: 0;\n background:\n radial-gradient(circle at 20% 50%, rgba(102, 126, 234, .08) 0%, transparent 50%),\n radial-gradient(circle at 80% 80%, rgba(118, 75, 162, .06) 0%, transparent 50%);\n pointer-events: none;\n }\n\n &:not(.hidden) {\n animation: startup 1.2s ease-out;\n\n & > #welcome-container {\n animation: container-fade-in 1.2s ease-out;\n\n & > .shield-container {\n animation: shield-entrance 1.5s ease 2s forwards;\n }\n\n & > h1 {\n animation: title-fade-in 0.8s ease-out 0.5s both;\n }\n\n & > .about-links {\n animation: link-slide-in 0.8s ease-out 0.7s both;\n }\n\n & > #rollback-needed {\n animation: warning-fade-in 1s ease-out 0.7s both;\n }\n\n & > button {\n animation: button-slide-in 2s ease-out 1s both;\n }\n }\n }\n\n & > #dots-canvas {\n width: 100%;\n height: 100%;\n\n position: absolute;\n z-index: 0;\n left: 0;\n top: 0;\n }\n\n & > #welcome-container {\n padding: 48px;\n\n border-radius: 16px;\n\n max-width: 480px;\n\n position: relative;\n z-index: 2;\n\n text-align: center;\n\n overflow: hidden;\n\n /* Theme dependent */\n border: 1px solid rgba(143, 163, 255, .15);\n box-shadow:\n 0 12px 40px rgba(0, 0, 0, .4),\n inset 0 1px 0px rgba(255, 255, 255, .08),\n inset 0 -1px 0px rgba(0, 0, 0, .2);\n\n background: linear-gradient(135deg,\n rgba(30, 34, 45, .7),\n rgba(25, 25, 36, .5)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n & * {\n position: relative;\n z-index: 1;\n }\n\n & > .shield-container {\n width: 100px;\n height: 100px;\n\n position: relative;\n\n margin: 0 auto 24px;\n\n opacity: 0;\n\n & > .glow-ring {\n width: 240px;\n height: 240px;\n\n position: absolute;\n left: 50%;\n top: 50%;\n\n border: 2px solid;\n border-radius: 50%;\n\n transform: translate(-50%, -50%);\n\n animation: pulse 2.5s ease-in-out infinite;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n\n &:nth-child(2) {\n animation-delay: 0.4s;\n border-color: rgba(118, 75, 162, .25);\n }\n &:nth-child(3) {\n animation-delay: 0.8s;\n border-color: rgba(143, 163, 255, .2);\n }\n }\n\n & > .sparkle {\n width: 5px;\n height: 5px;\n\n position: absolute;\n\n border-radius: 50%;\n\n animation: sparkle 2s ease-in-out infinite;\n\n &:nth-child(4) {\n top: 15%;\n left: 25%;\n\n animation-delay: 0s;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .6);\n box-shadow: 0 0 8px rgba(143, 163, 255, .6);\n }\n &:nth-child(5) {\n top: 25%;\n left: 18%;\n\n animation-delay: 0.4s;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .6);\n box-shadow: 0 0 8px rgba(102, 126, 234, .6);\n }\n &:nth-child(6) {\n bottom: 20%;\n\t left: 30%;\n\n animation-delay: 0.8s;\n\n /* Theme dependent */\n background: rgba(118, 75, 162, .5);\n box-shadow: 0 0 8px rgba(118, 75, 162, .5);\n }\n &:nth-child(7) {\n bottom: 25%;\n right: 25%;\n\n animation-delay: 1.2s;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .5);\n box-shadow: 0 0 8px rgba(143, 163, 255, .5);\n }\n }\n\n & > .shield-icon {\n width: 100px;\n\n position: absolute;\n z-index: 2;\n left: 50%;\n top: 50%;\n\n transform: translate(-50%, -50%);\n\n animation: shield-float 3s ease-in-out infinite;\n\n /* Theme dependent */\n filter: drop-shadow(0 0 8px rgba(102, 126, 234, .3));\n\n & > img {\n width: 100%;\n height: 100%;\n }\n }\n }\n\n & > h1 {\n margin: 0 0 8px 0;\n\n font-size: 2.2em;\n font-weight: 700;\n line-height: 1.2;\n\n /* Theme dependent */\n color: rgba(241, 245, 255, 1);\n }\n\n & > .subtitle {\n margin: 0 0 24px 0;\n\n font-size: 0.95em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(160, 170, 200, 0.8);\n }\n\n & > .about-links {\n display: flex;\n justify-content: center;\n gap: 12px;\n flex-wrap: wrap;\n\n margin: 24px 0;\n\n & > .about-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n\n padding: 8px 14px;\n\n border: 1px solid;\n border-radius: 8px;\n\n font-size: 0.85em;\n font-weight: 500;\n text-decoration: none;\n\n transition: background .2s ease,\n transform .2s ease,\n color .2s ease,\n border-color .2s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, 0.9);\n background: rgba(102, 126, 234, .1);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n border-color: rgba(102, 126, 234, .4);\n background: rgba(102, 126, 234, .2);\n }\n }\n }\n\n & > #rollback-needed {\n margin: 20px 0;\n padding: 16px;\n\n border: 1px solid;\n border-radius: 12px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(247, 76, 60, .3);\n box-shadow:\n 0 4px 12px rgba(0, 0, 0, .2),\n\t\t inset 0 1px 0 rgba(255, 255, 255, .05);\n background: rgba(247, 76, 60, .08);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n display: none;\n }\n\n & p {\n margin: 6px 0;\n\n font-weight: 400;\n font-size: 0.9em;\n\n /* Theme dependent */\n color: rgba(247, 76, 60, 0.95);\n }\n & a {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n &:hover {\n text-decoration: underline;\n }\n }\n }\n\n & > button {\n cursor: pointer;\n\n width: 100%;\n\n padding: 12px 24px;\n\n border: 2px solid transparent;\n border-radius: 10px;\n\n position: relative;\n\n font-size: 1em;\n font-weight: 700;\n color: rgba(143, 163, 255, 1);\n letter-spacing: 0.5px;\n\n overflow: hidden;\n\n opacity: 1;\n\n transition: all .25s ease;\n\n /* Theme dependent */\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 0.8), rgba(118, 75, 162, 0.8)) border-box;\n box-shadow:\n 0 0 10px rgba(102, 126, 234, .6),\n 0 0 20px rgba(118, 75, 162, .3),\n inset 0 0 10px rgba(102, 126, 234, .1);\n\n &.hidden {\n display: none;\n }\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(160, 180, 255, 1);\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 75, 162, 1)) border-box;\n box-shadow:\n 0 0 15px rgba(102, 126, 234, .8),\n 0 0 30px rgba(118, 75, 162, .5),\n inset 0 0 15px rgba(102, 126, 234, .2);\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 0.7), rgba(118, 75, 162, 0.7)) border-box;\n box-shadow:\n 0 0 8px rgba(102, 126, 234, .5),\n 0 0 16px rgba(118, 75, 162, .3),\n inset 0 0 8px rgba(102, 126, 234, .1);\n }\n\n &::before {\n content: \"\";\n\n width: 100%;\n height: 100%;\n\n position: absolute;\n left: -100%;\n top: 0;\n\n transition: left .4s ease;\n\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1),\n transparent\n );\n }\n\n & > i {\n margin-right: 6px;\n font-size: 14px;\n transition: transform 0.3s ease;\n }\n\n &:hover > i {\n transform: translateX(2px);\n }\n }\n }\n }\n\n & > #app {\n width: 100%;\n height: 100%;\n\n line-height: 1.5;\n color: var(--body-color);\n\n overflow: hidden;\n\n background: var(--body-background);\n\n &.hidden {\n display: none;\n }\n\n & > #container {\n display: flex;\n width: 100%;\n height: 100%;\n\n margin: 0;\n\n overflow: hidden;\n\n & > #queue {\n width: 15vw;\n height: 100%;\n\n position: relative;\n\n border-right: 1px solid;\n\n /* Theme dependent */\n border-right-color: rgba(58, 61, 74, 1);\n\n & > #queue-top {\n -webkit-user-select: none;\n user-select: none;\n\n container-type: inline-size;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 69px;\n\n position: relative;\n z-index: 2;\n\n overflow: auto hidden;\n\n border-bottom: 2px solid;\n border-right: 1px solid;\n border-bottom-right-radius: 8px;\n\n padding: 10px;\n\n /* Theme dependent */\n border-color: rgba(54, 62, 81, 1);\n\n background: rgba(41, 47, 60, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .queue-button-cluster {\n display: flex;\n align-items: center;\n gap: 20px;\n\n padding: 10px 14px;\n\n border: 1px solid;\n border-radius: 14px;\n\n font-size: 1.2em;\n\n /* Theme dependent */\n border-color: rgba(143, 143, 255, .2);\n background: rgba(143, 143, 255, .1);\n\n & > .fa {\n position: relative;\n }\n\n & > span {\n cursor: pointer;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > #DEFCON {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n padding: 4px 14px;\n\n border: 1px solid;\n border-radius: 14px;\n\n /* Theme dependent */\n border-color: rgba(143, 143, 255, .2);\n background: rgba(143, 143, 255, .1);\n\n & > .dot {\n flex: 0 0 auto;\n\n width: 10px;\n height: 10px;\n\n border-radius: 50%;\n\n animation: pulse-DEFCON 2s ease-in-out infinite;\n\n /* Theme dependent */\n background: rgba(100, 100, 100, 1);\n box-shadow: 0 0 0 4px rgba(100, 100, 100, .15);\n\n &.DEFCON-1 {\n background: rgba(255, 75, 75, 1);\n box-shadow: 0 0 0 4px rgba(255, 75, 75, .3);\n }\n &.DEFCON-2 {\n background: rgba(255, 165, 0, 1);\n box-shadow: 0 0 0 4px rgba(255, 165, 0, .3);\n }\n &.DEFCON-3 {\n background: rgba(255, 255, 0, 1);\n box-shadow: 0 0 0 4px rgba(255, 255, 0, .3);\n }\n &.DEFCON-4 {\n background: rgba(75, 255, 75, 1);\n box-shadow: 0 0 0 4px rgba(75, 255, 75, .3);\n }\n &.DEFCON-5 {\n background: rgba(75, 255, 255, 1);\n box-shadow: 0 0 0 4px rgba(75, 255, 255, .3);\n }\n }\n\n & > span {\n overflow: auto hidden;\n\n white-space: nowrap;\n font-size: 13px;\n font-weight: 500;\n }\n }\n }\n\n & > #queue-tabs {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-around;\n gap: 8px;\n\n position: relative;\n z-index: 2;\n\n border-radius: 0 0 12px 12px;\n padding: 10px 12px;\n\n overflow: hidden;\n\n /* Theme dependent */\n background: transparent;\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .queue-tab {\n cursor: pointer;\n\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n\n position: relative;\n\n border-radius: 50%;\n padding: 8px 14px;\n\n font-size: 1.4em;\n\n transition: transform .18s ease,\n color .18s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .85);\n\n &::after {\n content: \"\";\n\n height: 3px;\n\n position: absolute;\n left: 10px;\n right: 10px;\n bottom: 0;\n\n border-radius: 2px;\n\n transform: scaleX(0);\n\n transition: transform .22s cubic-bezier(.2, .9, .27, 1);\n\n /* Theme dependent */\n opacity: .95;\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, 1),\n rgba(118, 75, 162, 1)\n );\n }\n\n &:hover, &:focus-visible {\n transform: translateY(-2px);\n }\n\n &:not(.selected).mentions-me::after {\n animation: scale-x 1s ease-in-out infinite;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(244, 196, 32, 1),\n rgba(255, 107, 107, 1)\n );\n }\n\n &.selected {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n\n &::after {\n transform: scaleX(1);\n }\n }\n\n &.hidden {\n display: none;\n }\n\n & > .fas {\n position: relative;\n }\n }\n }\n\n & > .queue-list {\n height: calc(100% - 60px);\n\n position: relative;\n top: -60px;\n\n padding-top: 60px;\n padding-bottom: 10px;\n }\n\n & > .width-adjust {\n touch-action: none;\n cursor: col-resize;\n\n width: 10px;\n height: 100%;\n\n position: absolute;\n right: -5px;\n top: 0;\n z-index: 3;\n }\n\n & > #clear-queue {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 8px;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n left: 8px;\n bottom: 8px;\n z-index: 2;\n\n border: 1px solid;\n border-radius: 50%;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease,\n color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > div {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n }\n }\n }\n\n & > #right-container {\n display: flex;\n flex-wrap: wrap;\n width: calc(100% - 15vw);\n\n & > #right-content {\n display: flex;\n width: 100%;\n height: 100%;\n\n & > #main-container {\n display: flex;\n flex-direction: column;\n gap: 0px;\n width: calc(100% - 15vw);\n height: 100%;\n\n padding-top: 69px;\n\n position: relative;\n\n & > #edit-details {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 4px;\n\n width: calc(100% - 20vmin);\n height: 69px;\n\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n z-index: 2;\n\n margin-inline: auto;\n\n border: 1px solid;\n border-top: none;\n border-radius: 8px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n\n padding: 8px;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease;\n\n /* Theme dependent */\n background: rgba(30, 34, 45, 1);\n border-color: rgba(143, 163, 255, .2);\n box-shadow:\n 0 4px 12px rgba(0, 0, 0, .2),\n inset 0 1px 0px rgba(255, 255, 255, .05);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > .central {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n flex: 1;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: .75rem;\n\n width: 100%;\n\n font-size: 1em;\n\n & > .page-title {\n display: flex;\n align-items: center;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n /* Theme dependent */\n color: rgba(119, 166, 215, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > i {\n font-size: .9em;\n\n line-height: inherit;\n }\n\n & > a {\n color: inherit;\n\n white-space: nowrap;\n text-overflow: ellipsis;\n\n overflow: hidden;\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .75rem;\n\n & > .user-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n\n &.blocked {\n font-style: italic;\n text-decoration: line-through;\n\n opacity: .7;\n }\n &.empty-talk {\n /* Theme dependent */\n color: rgba(221, 105, 116, 1);\n }\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > a {\n color: inherit;\n }\n }\n\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px 8px;\n\n border: 1px solid;\n border-radius: calc(1rem + 4px);\n\n font-size: .8em;\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--diff-color);\n border-color: color-mix(in srgb, var(--diff-color) 20%, transparent);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n\n & > .subheader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: .75rem;\n\n width: 100%;\n\n font-size: .9em;\n\n & > .item-comment {\n display: flex;\n align-items: center;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n\n &.none {\n opacity: .6;\n }\n\n & > i {\n flex-shrink: 0;\n\n opacity: .6;\n }\n\n & > .text {\n white-space: nowrap;\n\n overflow: auto hidden;\n\n &.none {\n opacity: .6;\n }\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 4px;\n\n & > .minor-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 5px .5rem;\n\n border-radius: .375rem;\n\n font-size: .85rem;\n\n /* Theme dependent */\n color: rgba(175, 175, 175, 1);\n background: rgba(175, 175, 175, .15);\n }\n\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px 8px;\n\n border: 1px solid;\n border-radius: .375rem;\n\n font-size: .8em;\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--diff-color);\n border-color: color-mix(in srgb, var(--diff-color) 20%, transparent);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n }\n\n & > .nav-item-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 41px;\n height: 41px;\n\n position: absolute;\n top: 14px;\n z-index: 2;\n\n border-radius: 50%;\n border: 1px solid;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.disabled {\n pointer-events: none;\n\n opacity: 0;\n }\n\n &#previous-item-button {\n left: calc(5vmin - calc(41px / 2));\n }\n &#next-item-button {\n right: calc(5vmin - calc(41px / 2));\n }\n\n & > i {\n font-size: 16px;\n }\n }\n\n & > #ai-analysis-container {\n flex-shrink: 0;\n\n border: 1px solid;\n\n border-radius: 12px;\n margin: 12px;\n margin-bottom: 0;\n padding: 10px;\n\n overflow: none;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .2);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3),\n inset 0 1px 0px rgba(255, 255, 255, .08),\n inset 0 -1px 0px rgba(0, 0, 0, .3);\n\n background: linear-gradient(135deg,\n rgba(30, 34, 45, .7),\n rgba(25, 25, 36, .5)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.hidden {\n display: none;\n }\n\n & > .header {\n display: flex;\n align-items: center;\n gap: 6px;\n\n margin-bottom: 8px;\n\n & > .fa {\n font-size: 1.1em;\n }\n\n & > .title {\n font-size: .95em;\n letter-spacing: .3px;\n }\n\n & > .assessment {\n border-radius: 6px;\n padding: 3px 8px;\n\n font-size: .8em;\n font-weight: 700;\n\n &.low {\n /* Theme dependent */\n background: rgba(76, 175, 80, .25);\n }\n &.review {\n /* Theme dependent */\n background: rgba(255, 193, 7, .25);\n }\n &.suspicious {\n /* Theme dependent */\n background: rgba(244, 67, 54, .25);\n }\n &.bad {\n /* Theme dependent */\n background: rgba(211, 47, 47, .25);\n }\n &.error {\n /* Theme dependent */\n background: rgba(158, 158, 158, .25);\n }\n }\n\n & > .confidence {\n border-radius: 6px;\n padding: 3px 8px;\n\n font-size: .75em;\n font-weight: 600;\n }\n }\n\n & > .explanation {\n border-left: 3px solid;\n\n border-radius: 4px;\n margin-bottom: 6px;\n padding: 6px 8px;\n\n font-size: .8em;\n line-height: 1.3;\n\n /* Theme dependent */\n border-left-color: rgba(143, 163, 255, .4);\n }\n\n & > .issues {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n\n & > .issue {\n border-radius: 6px;\n padding: 4px 10px;\n\n font-size: .75em;\n font-weight: 600;\n\n &.low {\n /* Theme dependent */\n background: rgba(76, 175, 80, .25);\n }\n &.medium {\n /* Theme dependent */\n background: rgba(255, 193, 7, .25);\n }\n &.high {\n /* Theme dependent */\n background: rgba(244, 67, 54, .25);\n }\n &.critical {\n /* Theme dependent */\n background: rgba(211, 47, 47, .25);\n }\n }\n }\n }\n\n & > .notice {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: 8px;\n\n border-left: 4px solid;\n border-radius: 4px;\n\n margin: 10px;\n padding: 8px 12px;\n\n font-size: .9em;\n\n overflow: auto hidden;\n\n &.edit-war {\n /* Theme dependent */\n color: rgba(120, 27, 20, 1);\n border-left-color: rgba(247, 50, 20, 1);\n background: rgba(255, 205, 199, 1);\n }\n\n &.outdated {\n /* Theme dependent */\n color: rgba(102, 77, 3, 1);\n border-left-color: rgba(255, 193, 7, 1);\n background: rgba(255, 243, 205, 1);\n\n &.pending {\n /* Theme dependent */\n color: rgba(12, 84, 96, 1);\n border-left-color: rgba(23, 162, 184, 1);\n background: rgba(209, 236, 241, 1);\n }\n }\n\n & > .text {\n flex: 1;\n }\n\n & > .button {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n gap: 8px;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 6px 14px;\n\n font-size: .85em;\n font-weight: 600;\n white-space: nowrap;\n text-decoration: none;\n\n transition: color .2s ease,\n border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n color: rgba(102, 77, 3, 1);\n border-color: rgba(255, 193, 7, .35);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .1);\n\n background: rgba(255, 235, 159, .45);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > i {\n font-size: 14px;\n\n transition: transform .3s ease;\n }\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n color: rgba(80, 60, 0, 1);\n border-color: rgba(255, 193, 7, .6);\n box-shadow: 0 4px 16px rgba(255, 193, 7, .25);\n\n background: rgba(255, 235, 159, .65);\n\n & > i {\n transform: translateX(3px);\n\n &.restore {\n transform: rotateZ(180deg);\n }\n }\n }\n }\n\n &::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, .2);\n }\n }\n\n & > .diff-scroll-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n left: 8px;\n z-index: 2;\n\n border-radius: 50%;\n border: 1px solid;\n\n opacity: 1;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > i {\n font-size: 16px;\n }\n\n &#diff-scroll-up {\n top: 77px;\n }\n &#diff-scroll-down {\n bottom: 8px;\n }\n }\n\n & > #diff-container {\n flex: 1;\n\n padding: 12px;\n\n scroll-behavior: smooth;\n overflow: hidden auto;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(20, 22, 28, .3),\n transparent\n );\n\n & > .loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n height: 100%;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n\n & > .loading-spinner {\n margin-bottom: 24px;\n\n font-size: 56px;\n\n animation: logo-loader 2s ease-in-out infinite;\n }\n\n & > .loading-text {\n margin-bottom: 12px;\n\n font-size: 1.1em;\n text-align: center;\n font-weight: 500;\n letter-spacing: .3px;\n\n /* Theme dependent */\n color: rgba(160, 170, 200, 1);\n }\n }\n\n & > table {\n width: 100%;\n\n border: 1px solid;\n border-collapse: separate;\n border-spacing: 0;\n\n border-radius: 14px;\n margin-bottom: 24px;\n\n overflow: hidden;\n\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: .8em;\n line-height: 1.6;\n vertical-align: baseline;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .15);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .4),\n inset 0 1px 0px rgba(255, 255, 255, .1),\n inset 0 -1px 0px rgba(0, 0, 0, .2),\n 0 0 0 1px rgba(143, 163, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(35, 40, 52, .5),\n rgba(30, 35, 48, .4)\n );\n -webkit-backdrop-filter: blur(16px) saturate(110%);\n backdrop-filter: blur(16px) saturate(110%);\n\n & > tbody {\n .mw-diff-movedpara-left, .mw-diff-movedpara-right {\n text-decoration: none;\n }\n\n & > tr {\n border: none;\n\n overflow-wrap: anywhere;\n\n transition: background .25s ease;\n\n &:hover {\n & > td {\n /* Theme dependent */\n background: rgba(143, 163, 255, .12);\n }\n }\n\n &:not(.diff-addedline, .diff-deletedline) {\n & > td {\n /* Theme dependent */\n background: rgba(255, 255, 255, .02);\n }\n }\n\n .flash-highlight {\n animation: flash-highlight 1s ease-out infinite;\n }\n\n & > td {\n border: none;\n\n overflow-wrap: anywhere;\n\n transition: background .25s ease,\n color .25s ease;\n\n &:not(.diff-marker) {\n width: 50%;\n\n padding: 10px 14px;\n\n transition: background .25s ease;\n\n /* Theme dependent */\n color: rgba(200, 210, 230, 1);\n }\n\n &.diff-lineno {\n -webkit-user-select: none;\n user-select: none;\n\n border-bottom: 1px solid;\n\n padding: 10px 12px;\n\n font-size: .85em;\n font-weight: 600;\n text-align: center;\n letter-spacing: .6px;\n\n /* Theme dependent */\n border-bottom-color: rgba(143, 163, 255, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .12),\n rgba(158, 115, 212, .08)\n );\n }\n\n &.diff-marker {\n -webkit-user-select: none;\n user-select: none;\n\n width: 40px;\n\n border-right: 1px solid;\n\n padding: 10px 8px;\n\n font-weight: 700;\n text-align: center;\n\n /* Theme dependent */\n border-right-color: rgba(143, 163, 255, .15);\n\n color: rgba(160, 170, 200, .9);\n\n background: linear-gradient(90deg,\n rgba(40, 45, 60, .3),\n rgba(35, 40, 52, .2)\n );\n\n &::before {\n content: attr(data-marker);\n }\n }\n\n &.diff-empty {\n /* Theme dependent */\n background: rgba(20, 25, 35, .3);\n }\n\n &:is(.diff-addedline, .diff-deletedline) {\n position: relative;\n\n border-left: 4px solid;\n\n transition: background .25s ease,\n border-left-color .25s ease,\n box-shadow .25s ease;\n\n &.diff-addedline {\n /* Theme dependent */\n border-left-color: rgba(76, 175, 80, .9);\n\n background: rgba(76, 175, 80, .12);\n\n transition: background .25s ease;\n\n &:hover {\n /* Theme dependent */\n border-left-color: rgba(129, 199, 132, 1);\n background: rgba(129, 199, 132, .18);\n box-shadow: inset 0 0 12px rgba(76, 175, 80, .15);\n }\n }\n &.diff-deletedline {\n /* Theme dependent */\n border-left-color: rgba(244, 67, 54, .9);\n\n background: rgba(244, 67, 54, .12);\n\n transition: background .25s ease;\n\n &:hover {\n /* Theme dependent */\n border-left-color: rgba(255, 112, 97, 1);\n background: rgba(255, 112, 97, .18);\n box-shadow: inset 0 0 12px rgba(244, 67, 54, .15);\n }\n }\n }\n\n & > div {\n & > :is(ins, del) {\n border-radius: 6px;\n padding: 2px 6px;\n\n font-weight: 600;\n text-decoration: none;\n\n transition: background .25s ease,\n transform .15s ease;\n }\n\n & > ins {\n /* Theme dependent */\n background: rgba(130, 169, 26, .55);\n\n &:hover {\n /* Theme dependent */\n background: rgba(139, 195, 74, .6);\n\n transform: scale(1.08);\n }\n }\n & > del {\n /* Theme dependent */\n background: rgba(244, 67, 54, .55);\n\n &:hover {\n /* Theme dependent */\n background: rgba(255, 112, 97, .6);\n\n transform: scale(1.08);\n }\n }\n }\n\n a {\n text-decoration: none;\n\n /* Theme dependent */\n color: rgba(107, 163, 216, 1);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n text-decoration: underline;\n }\n }\n }\n }\n }\n }\n }\n\n & > #pending-changes-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n position: fixed;\n z-index: 2;\n\n transform: translateX(-50%);\n\n &.hidden {\n display: none;\n }\n\n & > :is(.accept, .reject) {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n gap: 8px;\n\n border: 1px solid;\n\n border-radius: 10px 10px 0 0;\n padding: 8px 12px;\n\n font-size: .95em;\n font-weight: 600;\n line-height: 1;\n text-decoration: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease,\n border-color .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.accept {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .14);\n box-shadow: 0 10px 26px rgba(46, 125, 50, .12),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .25),\n rgba(56, 142, 60, .15)\n );\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n box-shadow: 0 14px 30px rgba(46, 125, 50, .2),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n }\n &:active {\n /* Theme dependent */\n box-shadow: 0 6px 20px rgba(46, 125, 50, .1),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n }\n }\n &.reject {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, .14);\n box-shadow: 0 10px 26px rgba(155, 40, 34, .12),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n background: linear-gradient(135deg,\n rgba(244, 67, 54, .25),\n rgba(211, 47, 47, .15)\n );\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n box-shadow: 0 14px 30px rgba(155, 40, 34, .2),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n }\n &:active {\n /* Theme dependent */\n box-shadow: 0 6px 20px rgba(155, 40, 34, .1),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n }\n }\n }\n }\n\n & > #progress-bar-container {\n pointer-events: none;\n\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-direction: column;\n\n position: absolute;\n top: 0px;\n bottom: 56px;\n right: 0px;\n\n padding: 0;\n\n overflow: hidden;\n\n & > .progress-bar {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 180px;\n height: 32px;\n\n position: relative;\n\n border: 1px solid;\n\n border-radius: 16px;\n margin-bottom: 10px;\n margin-right: 10px;\n\n overflow: hidden;\n\n font-size: .85em;\n font-weight: 400;\n\n opacity: 1;\n\n transition: width .3s ease,\n opacity .3s ease,\n border-color .3s ease,\n box-shadow .4s cubic-bezier(.4, 0, .2, 1),\n background .4s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .15),\n 0 2px 4px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .1),\n rgba(158, 115, 212, .1)\n );\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.error {\n /* Theme dependent */\n border-color: rgba(239, 68, 68, .8);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .15),\n 0 2px 4px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(255, 68, 68, .1),\n rgba(220, 38, 38, .1)\n );\n\n & > .progress-bar-overlay {\n /* Theme dependent */\n box-shadow: inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(255, 68, 68, .6),\n rgba(220, 38, 38, .6)\n );\n }\n }\n\n & > .progress-bar-overlay {\n width: 0;\n height: 100%;\n\n position: absolute;\n left: 0;\n top: 0;\n\n border-radius: 16px;\n\n transition: width .4s cubic-bezier(.4, 0, .2, 1),\n box-shadow .4s cubic-bezier(.4, 0, .2, 1),\n background .4s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n box-shadow: inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .6),\n rgba(158, 115, 212, .6)\n );\n }\n\n & > .progress-bar-text {\n max-width: 100%;\n\n position: relative;\n\n padding: 0 12px;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n white-space: nowrap;\n\n /* Theme dependent */\n text-shadow: 0 1px 2px rgba(0, 0, 0, .2);\n\n color: rgba(255, 255, 255, 1);\n }\n }\n }\n\n & > #bottom-tools {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n\n max-width: calc(100% - 20vmin);\n width: fit-content;\n\n position: absolute;\n left: 0;\n right: 0;\n bottom: 8px;\n z-index: 2;\n\n margin-inline: auto;\n\n border: 1px solid;\n border-radius: 16px;\n\n padding: 8px;\n\n overflow: auto hidden;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > .bottom-tool-item {\n position: relative;\n\n white-space: nowrap;\n\n transition: opacity .2s ease;\n\n &.hidden {\n pointer-events: none;\n\n opacity: .2;\n }\n\n & > .bottom-tool-trigger {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-size: .9em;\n font-weight: 400;\n\n background: transparent;\n\n transition: color .2s ease,\n background .2s ease;\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(255, 255, 255, .08);\n }\n\n &.active {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n\n & > .bottom-tool-chevron {\n transform: rotate(180deg);\n }\n }\n\n & > .bottom-tool-chevron {\n font-size: .75em;\n\n transition: transform .2s ease;\n }\n }\n }\n\n & > .bottom-tool-action {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n\n transition: color .2s ease,\n background .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .9);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(255, 255, 255, .08);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: .2;\n }\n }\n }\n\n & > #copy-link {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 8px;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n right: 8px;\n bottom: 8px;\n z-index: 2;\n\n border: 1px solid;\n border-radius: 50%;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease,\n color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > div {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n }\n }\n }\n\n & > #right-details {\n width: 15vw;\n\n position: relative;\n\n border-left: 1px solid;\n\n /* Theme dependent */\n border-left-color: rgba(54, 62, 81, 1);\n\n & > #right-top {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n align-content: center;\n justify-content: center;\n\n width: 100%;\n height: 69px;\n\n border-bottom: 2px solid;\n border-left: 1px solid;\n border-bottom-left-radius: 8px;\n\n padding: 8px 15px;\n\n /* Theme dependent */\n border-color: rgba(54, 62, 81, 1);\n\n background: rgba(41, 47, 60, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .tabs {\n display: flex;\n justify-content: center;\n width: 100%;\n\n & > .tab {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border: 2px solid;\n\n padding: 10px;\n\n opacity: .75;\n\n transition: background .35s cubic-bezier(.4, 0, .2, 1),\n opacity .35s cubic-bezier(.4, 0, .2, 1),\n box-shadow .35s cubic-bezier(.4, 0, .2, 1),\n border-color .35s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: inset 0 2px 6px rgba(0, 0, 0, .4);\n\n background: rgba(60, 63, 75, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n &:hover, &:focus-visible {\n opacity: 1;\n }\n\n &.selected {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5),\n inset 0 1px 2px rgba(0, 0, 0, .2);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25),\n rgba(118, 75, 162, .25)\n );\n }\n\n &.hidden {\n display: none;\n }\n\n &:first-child {\n border-radius: 10px 0 0 10px;\n }\n &:last-child {\n border-radius: 0 10px 10px 0;\n }\n }\n }\n\n & > .icons {\n display: flex;\n justify-content: center;\n width: 100%;\n\n font-size: 1.4em;\n\n & > .hidden {\n display: none;\n }\n }\n }\n\n & > .section {\n display: flex;\n flex-direction: column;\n height: calc(50% - calc(69px / 2) - 15px);\n\n margin: 10px 10px 0 10px;\n\n border: 1px solid;\n border-radius: 16px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n background: rgba(30, 35, 45, .8);\n\n &.hidden {\n display: none;\n }\n\n & > .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n\n padding: 14px 14px 12px;\n\n border-bottom: 1px solid;\n\n /* Theme dependent */\n border-bottom-color: rgba(143, 163, 255, .2);\n background: rgba(30, 35, 45, .8);\n\n & > .title {\n font-weight: 600;\n font-size: .85em;\n text-transform: uppercase;\n letter-spacing: .07em;\n white-space: nowrap;\n\n & > i {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n cursor: pointer;\n\n margin-right: 4px;\n\n font-size: .9em;\n\n transition: transform .5s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n transform: rotate(180deg);\n }\n }\n }\n\n & > .pills {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-shrink: 0;\n\n & > .pill {\n border: 1px solid;\n border-radius: 10px;\n padding: 4px 8px;\n\n font-size: .75em;\n font-weight: 500;\n\n white-space: nowrap;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(224, 228, 240, 1);\n background: rgba(140, 132, 255, .1);\n\n &.uw-1 {\n /* Theme dependent */\n border-color: rgba(107, 163, 216, .8);\n background: rgba(107, 163, 216, .1);\n color: rgba(107, 163, 216, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .8);\n background: rgba(143, 163, 255, .15);\n color: rgba(143, 163, 255, 1);\n }\n }\n &.uw-2 {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .8);\n background: rgba(255, 193, 7, .1);\n color: rgba(255, 193, 7, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n color: rgba(255, 193, 7, 1);\n }\n }\n &.uw-3 {\n /* Theme dependent */\n border-color: rgba(255, 87, 34, .8);\n background: rgba(255, 87, 34, .1);\n color: rgba(255, 87, 34, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 87, 34, 1);\n background: rgba(255, 87, 34, .15);\n color: rgba(255, 87, 34, 1);\n }\n }\n &.uw-4 {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, .8);\n background: rgba(244, 67, 54, .1);\n color: rgba(244, 67, 54, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, 1);\n background: rgba(244, 67, 54, .15);\n color: rgba(244, 67, 54, 1);\n }\n }\n &.uw-4im {\n /* Theme dependent */\n border-color: rgba(178, 34, 34, .8);\n background: rgba(178, 34, 34, .1);\n color: rgba(178, 34, 34, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(178, 34, 34, 1);\n background: rgba(178, 34, 34, .15);\n color: rgba(178, 34, 34, 1);\n }\n }\n\n &.ub {\n /* Theme dependent */\n border-color: rgba(255, 99, 132, .8);\n background: rgba(255, 99, 132, .1);\n color: rgba(255, 99, 132, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 99, 132, 1);\n background: rgba(255, 99, 132, .15);\n color: rgba(255, 99, 132, 1);\n }\n }\n }\n }\n }\n\n & > .queue-list {\n flex: 1;\n height: 100%;\n\n padding: 4px;\n\n /* Theme dependent */\n background: rgba(20, 22, 28, .3);\n }\n\n & > .footer {\n cursor: pointer;\n\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n\n padding: 10px 14px;\n\n border-top: 1px solid;\n\n font-size: .85em;\n\n transition: background .2s ease;\n\n /* Theme dependent */\n background: rgba(30, 35, 45, .8);\n border-top-color: rgba(143, 163, 255, .2);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n background: rgba(255, 255, 255, .08);\n\n & > i {\n transform: translateX(3px);\n }\n }\n\n & > i {\n transition: transform .2s ease;\n }\n }\n }\n\n &:has(#user-contributions.hidden) {\n & > #page-history {\n height: calc(100% - 89px);\n }\n }\n &:has(#page-history.hidden) {\n & > #user-contributions {\n height: calc(100% - 89px);\n }\n }\n\n & > .width-adjust {\n touch-action: none;\n cursor: col-resize;\n\n width: 10px;\n height: 100%;\n\n position: absolute;\n left: -5px;\n top: 0;\n z-index: 3;\n }\n\n & > .height-adjust {\n touch-action: none;\n cursor: row-resize;\n\n height: 10px;\n width: 100%;\n\n position: absolute;\n left: 0;\n top: calc(50% - 5px);\n z-index: 3;\n }\n }\n }\n }\n }\n\n & > .bottom-tool-menu {\n display: none;\n max-width: calc(100vw - 40px);\n min-width: 200px;\n\n position: absolute;\n left: 0;\n bottom: calc(100% + 8px);\n z-index: 3;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 6px;\n\n overflow-y: visible;\n\n animation: bottom-tool-menu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5);\n\n background: rgba(35, 38, 48, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.show {\n display: block;\n }\n\n & > .menu-option {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border-radius: 8px;\n padding: 10px 12px;\n\n font-size: .9em;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.hidden {\n display: none;\n }\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n\n & > i:first-child {\n opacity: 1;\n }\n\n & > :is(.menu-option-icon, .menu-option-chevron) {\n opacity: 1;\n }\n }\n\n & > i:first-child {\n width: 18px;\n\n font-size: 1.1em;\n text-align: center;\n\n opacity: .8;\n\n transition: opacity .2s ease;\n }\n\n & > span {\n flex: 1;\n }\n\n & > :is(.menu-option-icon, .menu-option-chevron) {\n margin-left: auto;\n\n font-size: .85em;\n\n opacity: .5;\n\n transition: opacity .2s ease;\n }\n\n & > .submenu {\n cursor: default;\n\n display: none;\n min-width: 240px;\n\n position: absolute;\n left: calc(100% + 4px);\n top: -6px;\n z-index: 4;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 6px;\n\n color: var(--body-color);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5);\n\n background: rgba(35, 38, 48, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.show {\n display: block;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n }\n\n & > .bottom-subcontent-title {\n border-bottom: 1px solid;\n\n margin-bottom: 12px;\n padding-bottom: 8px;\n\n font-size: .95em;\n font-weight: 600;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .1);\n }\n\n & > .bottom-subcontent-input-title {\n margin: 10px 0 2px 0;\n\n font-size: .9em;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n\n & > :is(select, input[type=\"text\"]) {\n width: 100%;\n\n font-size: .9em;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n }\n\n & > .bottom-subcontent-button {\n --background: 123, 143, 245;\n\n display: block;\n width: 100%;\n\n margin: 10px 0 2px 0;\n\n font-size: .9em;\n font-weight: 600;\n }\n }\n }\n\n &:is(#revert-menu, #warn-menu) {\n max-height: calc(100vh - 120px);\n\n overflow: hidden auto;\n\n & > .warning-menu {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 280px;\n\n position: relative;\n\n border-radius: 12px;\n padding: 8px;\n\n & > .warning-menu-no-items {\n text-align: center;\n padding: 20px;\n\n font-size: .9em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .7);\n }\n\n & > .favorites-section {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 4px;\n\n & > .favorites-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n\n font-size: .85em;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n\n /* Theme dependent */\n color: rgba(255, 193, 7, .9);\n\n & > .icon {\n font-size: 1.1em;\n }\n }\n\n & > .favorites-container {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n }\n\n & > .favorites-separator {\n height: 1px;\n margin: 8px 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1) 20%,\n rgba(255, 255, 255, .1) 80%,\n transparent\n );\n }\n\n & > .favorites-section:not(:has(.warning-menu-item)) {\n display: none;\n\n & ~ .favorites-separator {\n display: none;\n }\n }\n\n & > .menu-option {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n font-size: .95em;\n\n transition: border-color .2s ease,\n background .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n color: rgba(224, 228, 240, 1);\n background: rgba(40, 43, 52, .4);\n\n &:hover, &.focus-visible {\n transform: translateX(3px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n color: rgba(143, 163, 255, 1);\n background: rgba(102, 126, 234, .12);\n\n & > .icon {\n opacity: 1;\n transform: scale(1.1);\n }\n\n & > .submenu-arrow {\n opacity: 1;\n transform: translateX(2px);\n }\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n background: rgba(102, 126, 234, .15);\n }\n\n & > .icon {\n flex-shrink: 0;\n width: 20px;\n\n text-align: center;\n font-size: 1.1em;\n\n opacity: .85;\n\n transition: opacity .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n\n & > span:not(.icon):not(.submenu-arrow) {\n flex: 1;\n\n font-weight: 500;\n }\n\n & > .submenu-arrow {\n flex-shrink: 0;\n\n font-size: .8em;\n\n opacity: .5;\n\n transition: opacity .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .8);\n }\n }\n }\n }\n }\n\n & > .warning-submenu {\n display: none;\n max-width: calc(100vw - 60px);\n min-width: 420px;\n max-height: calc(100vh - 120px);\n\n position: absolute;\n z-index: 5;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 8px;\n\n overflow-y: auto;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 12px 48px rgba(0, 0, 0, .6),\n 0 0 0 1px rgba(255, 255, 255, .05);\n\n background: rgba(30, 33, 42, .98);\n -webkit-backdrop-filter: blur(25px);\n backdrop-filter: blur(25px);\n\n &.show {\n display: flex;\n flex-direction: column;\n gap: 3px;\n }\n }\n\n .warning-menu-item {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n font-size: .95em;\n\n transition: border-color .2s ease,\n background .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n background: rgba(40, 43, 52, .4);\n\n &:hover, &.focus-visible {\n transform: translateX(3px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n background: rgba(102, 126, 234, .12);\n }\n\n &.favorite-item {\n cursor: grab;\n\n &:active {\n cursor: grabbing;\n }\n\n &.dragging {\n opacity: 0.5;\n transform: scale(0.95);\n }\n }\n\n & > .favorite-star {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border-radius: 4px;\n\n font-size: 1.2em;\n line-height: 1;\n\n transition: transform .2s cubic-bezier(.4, 0, .2, 1),\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .4);\n\n &:hover {\n transform: scale(1.2);\n\n /* Theme dependent */\n color: rgba(255, 193, 7, .8);\n }\n\n &.favorited {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n\n &:hover {\n /* Theme dependent */\n color: rgba(255, 152, 0, 1);\n }\n }\n\n &.spin {\n animation: star-spin 0.5s cubic-bezier(.4, 0, .2, 1);\n }\n }\n\n & > .icon {\n flex-shrink: 0;\n width: 20px;\n\n text-align: center;\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n\n & > .warning-menu-title {\n flex: 1;\n\n font-size: .92em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 228, 240, 1);\n }\n\n & > .fa-circle-question {\n flex-shrink: 0;\n\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .6);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .warning-menu-buttons {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n\n margin-left: 8px;\n }\n\n & > .warning-menu-buttons > .warning-menu-button {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 7px 14px;\n\n font-size: .82em;\n font-weight: 500;\n text-transform: capitalize;\n\n transition: border-color .2s ease,\n background .2s ease,\n color .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, .95);\n background: rgba(102, 126, 234, .1);\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n color: rgba(143, 163, 255, 1);\n background: rgba(102, 126, 234, .22);\n }\n\n &:active {\n transform: translateY(0);\n }\n\n &.warning-menu-no-warn-button {\n /* Theme dependent */\n border-color: rgba(255, 152, 0, .2);\n color: rgba(255, 193, 7, .95);\n background: rgba(255, 152, 0, .1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 152, 0, .4);\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 152, 0, .22);\n }\n }\n }\n }\n\n & > .levels-menu {\n display: none;\n min-width: 0px;\n\n position: fixed;\n z-index: 5;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 8px;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .6),\n 0 0 0 1px rgba(255, 255, 255, .05);\n\n background: rgba(28, 30, 38, .98);\n -webkit-backdrop-filter: blur(24px);\n backdrop-filter: blur(24px);\n\n &.show {\n display: flex;\n gap: 6px;\n }\n\n & > .levels-menu-item {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n border-radius: 8px;\n padding: 6px 14px;\n\n font-size: .95em;\n font-weight: 600;\n text-align: center;\n white-space: nowrap;\n\n transition: all .2s cubic-bezier(.4, 0, .2, 1);\n\n background: rgba(255, 255, 255, .05);\n border: 1px solid rgba(255, 255, 255, .1);\n\n &:hover {\n transform: translateY(-2px);\n background: rgba(255, 255, 255, .08);\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n\n &:active {\n transform: translateY(0);\n }\n }\n }\n\n .queue-list {\n overflow: hidden auto;\n\n &:is(#user-contributions-content, #page-history-content) {\n & > .queue-item {\n margin: 4px 0;\n }\n }\n\n & > .queue-empty {\n text-align: center;\n padding: 40px 20px;\n font-size: 1em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n }\n\n & > .historical-bar {\n height: 4px;\n width: 100%;\n\n position: relative;\n\n margin: 8px 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1) 20%,\n rgba(255, 255, 255, .1) 80%,\n transparent\n );\n\n & > .label {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n font-size: 1em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .8);\n }\n }\n\n & > .queue-item {\n cursor: pointer;\n\n display: flex;\n\n position: relative;\n\n border: 1px solid;\n border-radius: .75rem;\n\n margin: 4px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .4);\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n background .2s ease;\n\n &:hover, &:focus-within {\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 4px 12px oklch(0 0 0 / 0.3);\n\n background: rgba(40, 43, 52, .6);\n }\n\n &.current {\n /* Theme dependent */\n border-color: linear-gradient(90deg,\n rgba(40, 43, 52, .4),\n rgba(40, 43, 82, .6)\n );\n box-shadow: 0 0 0 1px rgba(60, 63, 122, 1) inset;\n\n background: rgba(40, 43, 82, .6);\n\n & > .item-body {\n & > .item-tags {\n & > .tag {\n /* Theme dependent */\n color: rgba(145, 145, 165, 1);\n background: rgba(60, 63, 122, .4);\n border-color: rgba(60, 63, 122, .6);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .4);\n border-color: rgba(255, 193, 7, .6);\n }\n }\n }\n }\n }\n\n &.mentions-me {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n box-shadow: 0 0 0 1px rgba(255, 193, 7, 1) inset;\n\n background: rgba(40, 43, 52, .6);\n }\n\n & > .item-color {\n --ores-color: rgba(128, 128, 128, 1);\n\n flex-shrink: 0;\n width: 4px;\n\n position: relative;\n\n opacity: .85;\n\n /* Theme dependent */\n background: var(--ores-color);\n }\n\n & > .item-body {\n --ores-color: rgba(128, 128, 128, 1);\n --diff-color: rgba(128, 128, 128, 1);\n\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: .5rem;\n\n min-width: 0;\n\n padding: .75rem 1rem;\n\n & > .header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: .75rem;\n\n & > .page-title {\n display: flex;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n font-size: clamp(.825rem, .85rem + .35vw, .95rem);\n font-weight: 600;\n\n word-wrap: break-word;\n word-break: break-word;\n\n line-height: 1.35;\n\n /* Theme dependent */\n color: rgba(205, 204, 202, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > i {\n font-size: .9em;\n\n line-height: inherit;\n }\n }\n\n & > .timestamp {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: 4px;\n\n min-width: 3ex;\n\n padding-top: 1px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n white-space: nowrap;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .75rem;\n\n width: 100%;\n\n & > .user-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n font-weight: 500;\n\n hyphens: auto;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n\n &.blocked {\n font-style: italic;\n text-decoration: line-through;\n\n opacity: .7;\n }\n &.empty-talk {\n /* Theme dependent */\n color: rgba(221, 105, 116, 1);\n }\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n }\n\n & > .chips {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-grow: 1;\n gap: 4px;\n\n & > .ores-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--ores-color);\n background: color-mix(in srgb, var(--ores-color) 15%, transparent);\n }\n\n & > .diff-chips {\n display: flex;\n align-items: center;\n gap: 4px;\n\n & > .minor-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 5px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n /* Theme dependent */\n color: rgba(175, 175, 175, 1);\n background: rgba(175, 175, 175, .15);\n }\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n /* Theme dependent */\n color: var(--diff-color);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n }\n\n & > .item-comment {\n display: flex;\n align-items: center;\n gap: 4px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n overflow: hidden;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n\n & > i {\n flex-shrink: 0;\n\n opacity: .6;\n }\n\n & > .text {\n font-style: italic;\n white-space: nowrap;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n &.none {\n opacity: .6;\n }\n }\n }\n\n & > .item-tags {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .5rem;\n\n & > .tag {\n display: flex;\n align-items: center;\n gap: 2px;\n\n padding: 1px .5rem;\n\n border: 1px solid;\n border-radius: .375rem;\n\n font-size: .7rem;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(135, 135, 135, 1);\n background: rgba(45, 44, 51, 1);\n border-color: rgba(38, 37, 35, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n border-color: rgba(255, 193, 7, .4);\n }\n }\n }\n }\n\n & > .remove-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 32px;\n height: 32px;\n\n position: absolute;\n right: 0px;\n bottom: 0px;\n\n border-top-left-radius: 8px;\n\n line-height: 1;\n\n transition: color .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .7);\n background: rgba(255, 255, 255, 0);\n\n &:hover {\n /* Theme dependent */\n color: rgba(255, 70, 0, 1);\n background: rgba(255, 70, 0, .15);\n }\n }\n }\n }\n\n .tooltip {\n min-width: 0;\n max-height: 80vh;\n\n position: fixed;\n left: 0;\n top: 0;\n z-index: calc(var(--max-z-index) - 3);\n\n border: 2px solid;\n\n border-radius: 8px;\n padding: 4px 6px;\n\n overflow-wrap: break-word;\n overflow: hidden auto;\n\n font-size: .95em;\n line-height: 1.45;\n word-wrap: break-word;\n white-space: normal;\n\n animation: tooltip-enter .1s ease-out forwards;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n box-shadow: 0 10px 30px rgba(6, 12, 24, .6),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n color: rgba(234, 240, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .03),\n rgba(255, 255, 255, .01)\n );\n -webkit-backdrop-filter: blur(14px) brightness(.7);\n backdrop-filter: blur(14px) brightness(.7);\n\n &:not(.buttons) {\n pointer-events: none;\n\n max-width: 460px;\n }\n\n &.buttons {\n display: flex;\n flex-direction: row;\n gap: 8px;\n\n z-index: calc(var(--max-z-index) - 2);\n\n white-space: nowrap;\n\n & > .button {\n cursor: pointer;\n\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 4px 8px;\n\n font-size: .95em;\n font-weight: 500;\n letter-spacing: .3px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(255, 255, 255, .05);\n\n color: rgba(240, 245, 255, .92);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .08),\n rgba(255, 255, 255, .02)\n );\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .4),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .14),\n rgba(255, 255, 255, .06)\n );\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n box-shadow: 0 1px 4px rgba(0, 0, 0, .3),\n inset 0 1px 2px rgba(0, 0, 0, .2);\n }\n }\n }\n\n & > .tooltip-title {\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-bottom: 1px solid;\n\n border-radius: 6px;\n margin-bottom: 12px;\n padding: 8px 10px;\n\n font-size: 1.04em;\n font-weight: 700;\n letter-spacing: .25px;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .05);\n\n color: rgba(255, 255, 255, .92);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .02),\n rgba(0, 0, 0, .04)\n );\n -webkit-backdrop-filter: blur(6px);\n backdrop-filter: blur(6px);\n }\n\n & > .tooltip-item {\n display: flex;\n flex-direction: column;\n\n position: relative;\n\n border: 1px solid;\n\n border-radius: 10px;\n margin: 10px 0;\n padding: 10px 12px;\n\n overflow: hidden;\n overflow-wrap: anywhere;\n\n word-wrap: break-word;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .04);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .075),\n rgba(0, 0, 0, .25)\n );\n\n &:is(.user-warnings, .user-blocks) {\n & > .tooltip-item-level {\n display: block;\n width: 100%;\n\n border-bottom: 1px solid;\n\n border-radius: 6px 6px 0 0;\n padding: 6px 10px;\n\n font-size: .95em;\n font-weight: 700;\n letter-spacing: .3px;\n\n /* Theme dependent */\n border-bottom: 1px solid rgba(255, 255, 120, .25);\n\n color: rgba(255, 255, 120, .95);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 120 .22),\n rgba(255, 255, 120, .08)\n );\n }\n\n & > .tooltip-item-details {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n\n & > :is(.tooltip-item-user, .tooltip-item-time) {\n font-size: .82em;\n font-weight: 400;\n\n opacity: .8;\n\n &.tooltip-item-user {\n /* Theme dependent */\n color: rgba(150, 210, 255, .9);\n }\n &.tooltip-item-time {\n /* Theme dependent */\n color: rgba(220, 225, 235, .9);\n\n & > span:not(:first-of-type) {\n margin-left: 1ex;\n }\n }\n }\n }\n }\n\n & > .tooltip-more {\n border-top: 1px solid;\n\n border-radius: 8px;\n margin-top: 14px;\n padding-top: 10px;\n\n font-size: .92em;\n font-style: italic;\n text-align: center;\n\n opacity: .95;\n\n /* Theme dependent */\n border-top-color: rgba(255, 255, 255, .04);\n\n color: rgba(240, 240, 255, .75);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .015),\n rgba(0, 0, 0, .03)\n );\n -webkit-backdrop-filter: blur(4px);\n backdrop-filter: blur(4px);\n }\n }\n }\n\n .confirmation-modal-overlay {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 6);\n\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n animation: fade-in .2s ease-out;\n\n &.closing {\n animation: fade-out .2s ease-out forwards;\n }\n\n & > .confirmation-modal {\n max-width: 500px;\n min-width: 400px;\n\n border: 1px solid;\n\n border-radius: 16px;\n\n word-wrap: break-word;\n\n animation: scale-in .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 12px 48px rgba(0, 0, 0, .7),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: rgba(41, 47, 60, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.closing {\n animation: scale-out .2s ease-out forwards;\n }\n\n & > .confirmation-modal-header {\n border-bottom: 1px solid;\n\n padding: 20px 24px;\n\n /* Theme dependent */\n border-bottom-color: rgba(54, 62, 81, 1);\n\n & > .confirmation-modal-title {\n font-size: 1.2em;\n font-weight: 700;\n }\n }\n\n & > .confirmation-modal-body {\n max-height: 70vh;\n\n padding: 24px;\n\n line-height: 1.5;\n\n overflow: hidden auto;\n\n /* Theme dependent */\n color: rgba(187, 187, 187, 1);\n\n & > .confirmation-modal-username {\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(91, 154, 255, 1);\n }\n\n & > .confirmation-modal-input {\n width: 100%;\n\n border: 1px solid;\n border-radius: 4px;\n\n margin-top: 10px;\n padding: 8px;\n\n /* Theme dependent */\n color: white;\n border-color: rgba(255, 255, 255, .2);\n background: rgba(0, 0, 0, .3);\n }\n }\n\n & > .confirmation-modal-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n\n border-top: 1px solid;\n\n padding: 16px 24px;\n\n /* Theme dependent */\n border-top-color: rgba(54, 62, 81, 1);\n\n & > .confirmation-modal-footer-right {\n display: flex;\n gap: 12px;\n }\n\n &.confirmation-modal-footer-vertical {\n flex-direction: column;\n align-items: stretch;\n\n & > .confirmation-modal-button {\n width: 100%;\n }\n }\n }\n\n .confirmation-modal-button {\n font-size: .95em;\n font-weight: 500;\n }\n }\n }\n\n .notification-panel {\n pointer-events: none;\n\n display: flex;\n flex-direction: column;\n width: 480px;\n max-height: 600px;\n\n position: absolute;\n left: 15px;\n top: 55px;\n z-index: calc(var(--max-z-index) - 9);\n\n border: 1px solid;\n border-radius: 18px;\n\n overflow: hidden;\n\n opacity: 0;\n\n transform: translateY(-20px) scale(.95);\n\n transition: opacity .3s ease,\n transform .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 20px 60px rgba(0, 0, 0, .8),\n 0 0 0 1px rgba(255, 255, 255, .08),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n\n background: rgba(25, 27, 36, .96);\n -webkit-backdrop-filter: blur(25px) brightness(0.95);\n backdrop-filter: blur(25px) brightness(0.95);\n\n a {\n /* Theme dependent */\n color: rgba(120, 170, 255, 1);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(160, 195, 255, 1);\n }\n\n &:visited {\n /* Theme dependent */\n color: rgba(150, 185, 255, 1);\n }\n }\n\n &.show {\n pointer-events: auto;\n\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n & > .notification-header {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n border-bottom: 1px solid;\n\n padding: 18px 22px;\n\n font-size: 1.12em;\n font-weight: 700;\n letter-spacing: 0.3px;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .08);\n\n color: rgba(245, 245, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(120, 145, 255, .12),\n rgba(140, 100, 200, .08)\n );\n\n & > .mark-all-read {\n cursor: pointer;\n\n font-size: 0.78em;\n font-weight: 500;\n letter-spacing: 0.2px;\n\n padding: 6px 12px;\n border-radius: 6px;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(120, 170, 255, 1);\n background: rgba(120, 170, 255, .08);\n\n &:hover {\n /* Theme dependent */\n background: rgba(120, 170, 255, .15);\n color: rgba(160, 200, 255, 1);\n }\n\n &:active {\n opacity: .85;\n }\n }\n }\n\n & > .notification-list {\n max-height: 520px;\n\n overflow: hidden auto;\n\n padding: 8px;\n\n & > .notifications-empty {\n padding: 40px 20px;\n\n text-align: center;\n\n font-size: 0.95em;\n\n /* Theme dependent */\n color: rgba(120, 125, 145, 1);\n\n & strong {\n /* Theme dependent */\n color: rgba(150, 155, 175, 1);\n }\n }\n\n & > .notification {\n cursor: pointer;\n\n display: flex;\n align-items: flex-start;\n gap: 14px;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 14px 18px;\n margin-bottom: 8px;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n\n background: linear-gradient(135deg,\n rgba(50, 55, 75, .4),\n rgba(40, 45, 65, .3)\n );\n\n &:hover {\n opacity: 1;\n\n /* Theme dependent */\n border-color: rgba(120, 170, 255, .3);\n box-shadow: 0 8px 24px rgba(120, 170, 255, .15),\n inset 0 1px 0 rgba(255, 255, 255, .04);\n\n background: linear-gradient(135deg,\n rgba(80, 100, 160, .15),\n rgba(70, 85, 145, .1)\n );\n\n transform: translateY(-2px);\n }\n\n &.unread {\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(120, 170, 255, .5);\n box-shadow: 0 0 20px rgba(120, 170, 255, .2),\n inset 0 1px 0 rgba(255, 255, 255, .06);\n\n background: linear-gradient(135deg,\n rgba(120, 170, 255, .1),\n rgba(100, 145, 255, .05)\n );\n }\n\n &.read {\n opacity: .72;\n\n border-color: rgba(255, 255, 255, .04);\n }\n\n & > .notification-icon {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n\n border-radius: 10px;\n\n overflow: hidden;\n\n background: rgba(60, 75, 120, .5);\n\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n\n & > .notification-content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 5px;\n\n & > .notification-header {\n margin: 0;\n\n font-size: .95rem;\n font-weight: 600;\n letter-spacing: 0.2px;\n\n /* Theme dependent */\n color: rgba(235, 240, 255, 1);\n }\n\n & > .notification-body {\n font-size: .82rem;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 180, 205, 1);\n }\n\n & > .notification-links {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n\n margin-top: 6px;\n\n & > a {\n border: none;\n\n padding: 4px 8px;\n border-radius: 5px;\n\n font-size: .8rem;\n font-weight: 500;\n text-decoration: none;\n\n background: rgba(120, 170, 255, .12);\n opacity: 1;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n color: rgba(140, 185, 255, 1);\n\n &:hover {\n opacity: 1;\n\n background: rgba(120, 170, 255, .22);\n\n /* Theme dependent */\n color: rgba(180, 210, 255, 1);\n }\n\n &:active {\n opacity: .85;\n\n transform: scale(0.98);\n }\n }\n }\n }\n\n & > .notification-right {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n height: 100%;\n gap: 10px;\n\n & > .notification-unread-indicator {\n cursor: pointer;\n\n position: relative;\n\n width: 12px;\n height: 12px;\n\n border-radius: 50%;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n background: rgba(120, 170, 255, 1);\n box-shadow: 0 0 8px rgba(120, 170, 255, .5);\n\n &:hover, &:focus {\n transform: scale(1.35);\n\n /* Theme dependent */\n box-shadow: 0 0 16px rgba(120, 170, 255, .8);\n }\n\n &::after {\n content: '';\n\n cursor: pointer;\n\n position: absolute;\n\n top: -5px;\n left: -5px;\n bottom: -5px;\n right: -5px;\n }\n }\n\n & > .notification-timestamp {\n font-size: .72rem;\n font-weight: 500;\n\n opacity: .8;\n\n white-space: nowrap;\n\n /* Theme dependent */\n color: rgba(140, 150, 175, 1);\n }\n }\n }\n }\n }\n\n .icon-count {\n --color: 255, 255, 255;\n --background: 255, 255, 255;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n\n position: absolute;\n right: -11px;\n top: -11px;\n z-index: 3;\n\n border: 1px solid;\n\n border-radius: 50%;\n padding: 0 8px;\n\n font-family: sans-serif;\n font-size: 12px;\n font-weight: 600;\n line-height: 1;\n\n transition: transform .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(var(--background), .3);\n box-shadow: 0 8px 24px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(var(--background), .15);\n\n color: rgba(--color, 1);\n text-shadow: 0 1px 0 rgba(0, 0, 0, .35);\n\n background: linear-gradient(135deg,\n rgba(var(--background), .7),\n rgba(var(--background), .5)\n );\n -webkit-backdrop-filter: blur(6px) brightness(0%);\n backdrop-filter: blur(6px) brightness(0%);\n\n &.red {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 255, 60, 60;\n }\n &.green {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 60, 205, 80;\n }\n &.blue {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 60, 120, 255;\n }\n &.yellow {\n /* Theme dependent */\n --color: 30, 30, 30;\n --background: 255, 215, 60;\n }\n &.orange {\n /* Theme dependent */\n --color: 30, 30, 30;\n --background: 255, 165, 60;\n }\n &:is(.gray, .grey) {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 150, 150, 150;\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n\n transform: scale(0);\n }\n }\n\n .toast-alert {\n display: flex;\n align-items: center;\n gap: 14px;\n max-width: 500px;\n min-width: 320px;\n\n position: fixed;\n right: 20px;\n bottom: 20px;\n z-index: calc(var(--max-z-index) - 4);\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 14px 20px;\n\n opacity: 0;\n\n transform: translateX(100%) scale(.8);\n\n animation: toast-alert-enter .5s cubic-bezier(.68, -.55, .265, 1.55);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 12px 40px rgba(0, 0, 0, .2),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n color: rgba(255, 255, 255, 1);\n\n -webkit-backdrop-filter: blur(25px) saturate(180%);\n backdrop-filter: blur(25px) saturate(180%);\n\n &.success {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(76, 175, 80, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .25),\n rgba(56, 142, 60, .25)\n );\n }\n &.warning {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(255, 152, 0, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(255, 152, 0, .25),\n rgba(245, 124, 0, .25)\n );\n }\n &.error {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(244, 67, 54, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(244, 67, 54, .25),\n rgba(211, 47, 47, .25)\n );\n }\n &.dev {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(156, 39, 176, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(156, 39, 176, .25),\n rgba(123, 31, 162, .25)\n );\n }\n\n &.show {\n opacity: 1;\n\n transform: translateX(0) scale(1);\n }\n\n &.hidden {\n animation: toast-alert-leave .4s cubic-bezier(.6, -.28, .735, .045) forwards;\n }\n\n & > .toast-icon {\n flex-shrink: 0;\n\n font-size: 1.8em;\n\n /* Theme dependent */\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .3));\n }\n\n & > .toast-content {\n flex: 1;\n\n & > .toast-title {\n margin-bottom: 4px;\n\n font-size: 1.05em;\n font-weight: 700;\n letter-spacing: .3px;\n }\n\n & > .toast-message {\n font-size: .9em;\n line-height: 1.4;\n\n opacity: .95;\n }\n }\n\n & > .toast-close {\n cursor: pointer;\n\n flex-shrink: 0;\n\n border-radius: 6px;\n padding: 4px;\n\n font-size: 1.3em;\n\n background: transparent;\n opacity: .8;\n\n transition: opacity .2s ease,\n transform .2s ease,\n background .2s ease;\n\n &:hover {\n opacity: 1;\n\n transform: scale(1.1);\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .15);\n }\n }\n }\n\n .minor-indicator {\n border: 1px solid;\n\n border-radius: 4px;\n margin-right: 4px;\n padding: 0 4px;\n\n font-size: .9em;\n font-weight: 700;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n color: rgba(153, 153, 153, 1);\n\n background: rgba(60, 64, 76, .9);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n\n .menu-divider {\n height: 1px;\n\n margin: 6px 8px;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n }\n\n .profanity {\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n margin: 20px;\n padding: 20px;\n\n border-radius: 12px;\n border: 1px solid;\n\n /* Theme dependent */\n background: rgba(35, 38, 48, .8);\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .3);\n\n & > .profanity-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n\n padding-bottom: 16px;\n border-bottom: 1px solid;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .1);\n\n & > .profanity-score {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n & > .score-label {\n font-size: .85em;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: .5px;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n }\n\n & > .score-value {\n font-size: 2em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(255, 200, 100, 1);\n }\n }\n\n & > .profanity-risk {\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 10px 16px;\n\n font-size: .95em;\n font-weight: 600;\n\n /* Theme dependent */\n background: rgba(60, 64, 76, .6);\n\n &.risk-high {\n /* Theme dependent */\n color: rgba(255, 100, 100, 1);\n background: rgba(211, 47, 47, .2);\n border: 1px solid rgba(211, 47, 47, .4);\n }\n\n &.risk-medium {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n border: 1px solid rgba(255, 193, 7, .3);\n }\n\n &.risk-low {\n /* Theme dependent */\n color: rgba(100, 200, 255, 1);\n background: rgba(66, 165, 245, .15);\n border: 1px solid rgba(66, 165, 245, .3);\n }\n }\n }\n\n & > .profanity-matches-header {\n display: flex;\n align-items: center;\n gap: 8px;\n\n font-size: 1.05em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n }\n\n & > .profanity-matches-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n & > .profanity-match {\n display: flex;\n flex-direction: column;\n gap: 10px;\n\n border-radius: 8px;\n padding: 12px 14px;\n border-left: 3px solid;\n\n transition: background .2s ease,\n border-color .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n background: rgba(45, 50, 62, .7);\n border-left-color: rgba(255, 150, 150, .5);\n\n &:hover {\n transform: translateX(4px);\n\n /* Theme dependent */\n background: rgba(50, 56, 70, .85);\n border-left-color: rgba(255, 150, 150, .8);\n }\n\n & > .match-header {\n display: flex;\n align-items: center;\n gap: 8px;\n\n font-size: .95em;\n\n & > .match-text {\n font-family: 'Courier New', monospace;\n font-weight: 600;\n\n border-radius: 4px;\n padding: 4px 8px;\n\n /* Theme dependent */\n color: rgba(255, 180, 180, 1);\n background: rgba(211, 47, 47, .2);\n }\n\n & > .match-arrow {\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .match-name {\n font-family: 'Courier New', monospace;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n }\n\n & > .match-details {\n display: flex;\n gap: 16px;\n\n & > .match-stat {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n & > .stat-label {\n font-size: .75em;\n text-transform: uppercase;\n letter-spacing: .5px;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .stat-value {\n font-size: .9em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n\n &.severity-critical {\n /* Theme dependent */\n color: rgba(255, 100, 100, 1);\n }\n &.severity-high {\n /* Theme dependent */\n color: rgba(255, 150, 100, 1);\n }\n\n &.severity-medium {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n &.severity-low {\n /* Theme dependent */\n color: rgba(100, 200, 255, 1);\n }\n }\n }\n }\n\n & > .match-note {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n\n margin-top: 6px;\n padding: 10px 12px;\n border-radius: 6px;\n\n font-size: .85em;\n line-height: 1.5;\n\n /* Theme dependent */\n background: rgba(30, 33, 43, .6);\n border: 1px solid rgba(100, 150, 255, .2);\n\n & > .fa {\n margin-top: 2px;\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(100, 150, 255, .8);\n }\n\n & > .note-text {\n flex: 1;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(180, 190, 210, 1);\n }\n }\n }\n }\n\n & > .profanity-no-matches {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n\n padding: 20px;\n\n font-size: 1em;\n\n /* Theme dependent */\n color: rgba(100, 200, 100, 1);\n }\n }\n\n & > #settings-container {\n z-index: calc(var(--max-z-index) - 7);\n\n pointer-events: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n\n opacity: 0;\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.show {\n pointer-events: auto;\n\n opacity: 1;\n\n & > .settings {\n transform: scale(1);\n }\n }\n\n & > .settings {\n display: flex;\n max-width: 1100px;\n width: 90vw;\n\n border: 1px solid;\n\n border-radius: 20px;\n\n overflow: hidden;\n\n transform: scale(.75);\n\n transition: transform .1s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(30, 33, 42, .95);\n -webkit-backdrop-filter: blur(30px);\n backdrop-filter: blur(30px);\n\n & > div {\n height: 80vh;\n\n &.settings-left {\n width: 250px;\n\n border-right: 1px solid;\n\n padding: 20px 0;\n\n overflow-y: auto;\n\n /* Theme dependent */\n border-right-color: rgba(255, 255, 255, .1);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .02),\n rgba(255, 255, 255, .05)\n );\n\n & > .settings-category {\n &:not(:last-child) {\n margin-bottom: 20px;\n }\n\n & > .settings-category-header {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n margin-bottom: 4px;\n padding: 12px 20px;\n\n font-size: .7em;\n font-weight: 800;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n }\n\n & > .settings-left-menu-compact {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n\n padding: 0 12px;\n\n & > .settings-left-menu-item {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n border-radius: 10px;\n padding: 12px;\n\n font-size: 1.2em;\n font-weight: 500;\n\n transition: background .2s ease,\n color .2s ease,\n box-shadow .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n\n &:first-child {\n margin-left: 12px;\n }\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n }\n\n &.selected {\n font-weight: 600;\n\n /* Theme dependent */\n box-shadow: 0 0 20px rgba(102, 126, 234, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n }\n }\n\n & > .settings-left-menu-item {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n border-radius: 10px;\n margin: 2px 12px;\n padding: 12px 20px;\n\n font-size: .95em;\n font-weight: 500;\n\n transition: background .2s ease,\n color .2s ease,\n box-shadow .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n }\n\n &.selected {\n font-weight: 600;\n\n /* Theme dependent */\n box-shadow: 0 0 20px rgba(102, 126, 234, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n\n & > span > i {\n height: 1em;\n aspect-ratio: 1 / 1;\n\n margin-right: 12px;\n\n text-align: center;\n }\n }\n }\n }\n\n &.settings-right {\n flex: 1;\n\n padding: 20px 30px;\n\n overflow-y: auto;\n\n /* Theme dependent */\n background: rgba(20, 22, 28, .5);\n\n & > .hidden {\n display: none;\n }\n\n a {\n color: rgba(143, 163, 255, 1);\n\n &:hover {\n color: rgba(176, 192, 255, 1);\n }\n }\n\n pre, code {\n border-radius: 4px;\n padding: 2px 4px;\n\n font-size: .95em;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .15);\n }\n\n .settings-compact-grid {\n & > .compact {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n & > .numeric-input-container {\n & > .numeric-input {\n width: calc(100% - 70px);\n }\n }\n\n & > select {\n width: 100%;\n }\n }\n }\n\n .settings-section, .settings-toggles-section {\n display: block;\n\n border: 1px solid;\n\n border-radius: 16px;\n padding: 25px;\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3);\n\n background: rgba(35, 38, 48, .8);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n\n .settings-section-title {\n margin-bottom: 5px;\n\n font-size: 1em;\n font-weight: 700;\n letter-spacing: -.5px;\n\n &.collapse-title {\n margin-bottom: 0;\n }\n }\n\n .settings-section-desc {\n margin-bottom: 0;\n\n font-size: .85em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n .pad-list {\n margin: 8px 0;\n padding-left: 20px;\n }\n\n &:not(:last-child) {\n margin-bottom: 30px;\n }\n\n &.compact {\n margin-bottom: 0;\n padding: 18px;\n\n & > .settings-section-title {\n font-size: 1.05em;\n\n &.collapse-title {\n margin-bottom: 15px;\n }\n }\n\n & > .settings-section-desc {\n margin-bottom: 12px;\n\n font-size: .85em;\n }\n }\n\n &.inline {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n padding: 14px 16px;\n\n /* Theme dependent */\n background: rgba(35, 38, 48, .6);\n\n &:not(:last-child) {\n margin-bottom: 12px;\n }\n\n & > .settings-section-content {\n flex: 1;\n }\n }\n\n &.collapsed {\n & > .collapse-title::after {\n transform: rotate(-180deg);\n }\n }\n\n & > .collapse-title {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n &::after{\n content: \"\\f077\";\n\n float: right;\n\n font-family: \"Font Awesome 6 Free\";\n font-weight: 900;\n\n transition: transform .2s ease;\n }\n }\n\n & > .collapsible-content {\n padding: initial;\n\n overflow: hidden;\n\n transition: padding .2s ease;\n\n &.collapsed {\n padding: 0;\n }\n }\n\n & > .settings-section-title {\n margin-bottom: 15px;\n\n font-size: 1.4em;\n font-weight: 700;\n letter-spacing: -.5px;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.collapse-title {\n margin-bottom: 8px;\n }\n }\n\n & > .settings-section-header {\n display: flex;\n align-items: center;\n gap: 10px;\n\n margin-bottom: 15px;\n\n font-size: 1.2em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.collapse-title {\n margin-bottom: 0;\n }\n\n & > .settings-section-header-icon {\n font-size: 1.3em;\n\n /* Theme dependent */\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .2));\n }\n }\n\n & > .settings-section-desc {\n margin-bottom: 20px;\n\n font-size: .95em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n .checkbox-container {\n display: flex;\n flex-wrap: wrap;\n\n & > div {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 200px;\n\n margin-bottom: 8px;\n\n &:hover {\n & > .checkbox-box {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .checkbox-box {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: block;\n\n position: relative;\n\n border-radius: 5px;\n\n font-size: .95em;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(213, 213, 213, 1);\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n position: absolute;\n width: 0;\n height: 0;\n\n border-radius: 5px;\n\n opacity: 0;\n\n &:checked ~ .checkmark {\n /* Theme dependent */\n background: linear-gradient(45deg,\n rgba(100, 61, 219, 1),\n rgba(217, 21, 239, 1)\n );\n\n &::after {\n opacity: 1;\n }\n }\n }\n\n & > .checkmark {\n width: 1.3em;\n height: 1.3em;\n\n position: relative;\n left: 0;\n top: 0;\n\n border-radius: 5px;\n\n transition: background .2s ease;\n\n /* Theme dependent */\n background: rgba(204, 204, 204, 1);\n\n &::after {\n content: \"\";\n\n width: .25em;\n height: .5em;\n\n position: absolute;\n left: .45em;\n top: .25em;\n\n border-width: 0 .15em .15em 0;\n border-style: solid;\n\n opacity: 0;\n\n transform: rotate(45deg);\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, 1);\n }\n }\n }\n }\n }\n\n .numeric-input-container {\n display: flex;\n\n & > .numeric-input-button {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 35px;\n height: 35px;\n\n border: 1px solid;\n\n border-radius: 8px;\n\n font-size: 1.3em;\n\n transition: background .2s ease,\n border-color .2s ease,\n color .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n color: rgba(192, 192, 192, 1);\n\n background: rgba(50, 54, 66, .8);\n\n &:hover {\n transform: scale(1.05);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n }\n\n & > .numeric-input {\n width: 100px;\n\n border-radius: 8px;\n margin: 0 5px;\n padding: 6px 12px;\n\n font-size: 1.1em;\n }\n }\n\n .volume-control {\n display: block;\n\n border: 1px solid;\n\n border-radius: 12px;\n margin: 20px 0;\n padding: 20px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n & > .volume-control-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 20px;\n\n margin-bottom: 16px;\n\n & > .volume-control-info {\n flex: 1;\n\n & > .volume-control-title {\n margin-bottom: 6px;\n\n font-size: 1.05em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .volume-control-desc {\n font-size: .9em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n & > .volume-control-preview {\n --background: 123, 143, 245;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 10px 18px;\n\n font-size: .9em;\n font-weight: 500;\n }\n }\n\n & > .volume-control-slider-container {\n display: flex;\n align-items: center;\n gap: 16px;\n\n & > .volume-control-slider {\n flex: 1;\n height: 6px;\n\n outline: none;\n\n border-radius: 3px;\n\n -webkit-appearance: none;\n appearance: none;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n\n &::-webkit-slider-thumb {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n\n border-radius: 50%;\n\n -webkit-appearance: none;\n appearance: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 6px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 10px rgba(102, 126, 234, .5);\n }\n }\n\n &::-moz-range-thumb {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n\n border: none;\n\n border-radius: 50%;\n\n -webkit-appearance: none;\n appearance: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 6px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 10px rgba(102, 126, 234, .5);\n }\n }\n }\n\n & > .volume-control-input {\n width: 70px;\n\n border-radius: 8px;\n padding: 8px 12px;\n\n font-size: .95em;\n text-align: center;\n }\n }\n }\n\n .settings-toggle {\n cursor: pointer;\n\n flex-shrink: 0;\n width: 60px;\n height: 32px;\n\n position: relative;\n\n &:hover {\n & > .toggle-switch {\n transform: scale(1.02);\n }\n }\n\n &.active {\n & > .toggle-switch {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5),\n inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n & > .toggle-slider {\n left: 30px;\n\n /* Theme dependent */\n box-shadow: 0 4px 10px rgba(0, 0, 0, .3),\n 0 2px 4px rgba(0, 0, 0, .2);\n }\n }\n }\n\n & > .toggle-switch {\n width: 100%;\n height: 100%;\n\n position: relative;\n\n border: 2px solid;\n\n border-radius: 16px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: inset 0 2px 6px rgba(0, 0, 0, .4);\n\n background: rgba(60, 63, 75, .8);\n\n & > .toggle-slider {\n width: 24px;\n height: 24px;\n\n position: absolute;\n left: 2px;\n top: 2px;\n\n border-radius: 50%;\n\n transition: left .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 3px 8px rgba(0, 0, 0, .25),\n 0 1px 2px rgba(0, 0, 0, .15);\n\n background: rgba(255, 255, 255, 1);\n }\n }\n }\n\n .settings-radio-group {\n display: flex;\n flex-direction: row;\n gap: 12px;\n\n border-radius: 100vh;\n padding: 8px;\n\n /* Theme dependent */\n background: rgba(40, 43, 52, .7);\n\n & > .settings-radio-option {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n flex: 1;\n\n text-align: center;\n\n border-radius: 100vh;\n padding: 10px 16px;\n\n font-size: .9em;\n font-weight: 600;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &:hover {\n /* Theme dependent */\n background: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, 1);\n }\n\n &.selected {\n /* Theme dependent */\n background: rgba(102, 126, 234, .3);\n color: rgba(224, 224, 224, 1);\n }\n }\n }\n\n .settings-slider {\n display: flex;\n flex-direction: column;\n gap: 14px;\n\n border-radius: 14px;\n padding: 16px 20px;\n\n /* Theme dependent */\n background: rgba(40, 43, 52, .7);\n\n & > .settings-slider-labels {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n }\n\n & > .settings-slider-labels > .settings-slider-label-left,\n & > .settings-slider-labels > .settings-slider-label-right {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n font-size: .9em;\n font-weight: 600;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &.active {\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .percent {\n font-size: .85em;\n font-weight: 500;\n font-variant-numeric: tabular-nums;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n }\n\n & > .settings-slider-labels > .settings-slider-label-right {\n text-align: right;\n }\n\n & > .settings-slider-track {\n cursor: pointer;\n\n height: 8px;\n\n position: relative;\n\n border-radius: 100vh;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .08);\n\n &::before {\n content: '';\n\n width: var(--fill, 50%);\n height: 100%;\n\n position: absolute;\n left: 0;\n top: 0;\n\n border-radius: 100vh;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(102, 126, 234, .6),\n rgba(118, 75, 162, .6)\n );\n }\n\n & > .settings-slider-thumb {\n cursor: grab;\n\n width: 22px;\n height: 22px;\n\n position: absolute;\n top: 50%;\n\n border: 2px solid;\n\n border-radius: 50%;\n\n transform: translate(-50%, -50%);\n\n transition: transform .15s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .4),\n 0 0 12px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: translate(-50%, -50%) scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 12px rgba(0, 0, 0, .5),\n 0 0 20px rgba(102, 126, 234, .5);\n }\n\n &:active, &.dragging {\n cursor: grabbing;\n\n transform: translate(-50%, -50%) scale(1.2);\n\n /* Theme dependent */\n box-shadow: 0 4px 16px rgba(0, 0, 0, .5),\n 0 0 24px rgba(102, 126, 234, .6);\n }\n }\n }\n }\n\n .palette-selector {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n\n margin-top: 20px;\n\n & > .palette-option {\n cursor: pointer;\n\n border: 2px solid;\n\n border-radius: 12px;\n padding: 12px;\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 20px rgba(20, 20, 30, .4);\n }\n\n &.selected {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, 1);\n box-shadow: 0 0 20px rgba(102, 126, 234, .4);\n }\n\n & > .palette-name {\n pointer-events: none;\n\n font-size: .9em;\n font-weight: 600;\n text-align: center;\n }\n\n & > .palette-preview {\n pointer-events: none;\n\n display: flex;\n gap: 4px;\n height: 40px;\n\n border-radius: 8px;\n margin-bottom: 12px;\n\n overflow: hidden;\n\n & > canvas {\n flex: 1;\n width: 100%;\n height: 100%;\n }\n }\n }\n }\n\n .tracklist {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n\n & > .track {\n position: relative;\n\n border-radius: 8px;\n\n overflow: hidden;\n\n & > .thumbnail {\n display: block;\n width: 100%;\n aspect-ratio: 1 / 1;\n\n overflow: hidden;\n\n & > img {\n display: block;\n width: 100%;\n height: 100%;\n\n overflow: hidden;\n }\n }\n\n & > .info {\n display: flex;\n flex-direction: column;\n gap: 3px;\n\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n\n padding: 10px 12px;\n\n /* Theme dependent */\n background: linear-gradient(180deg,\n rgba(0, 0, 0, 0),\n rgba(0, 0, 0, .35),\n rgba(0, 0, 0, .65)\n );\n\n & > .title {\n font-size: .95em;\n font-weight: 600;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n white-space: nowrap;\n\n /* Theme dependent */\n text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n\n color: rgba(255, 255, 255, 1);\n }\n\n & > :is(.artist, .length) {\n font-size: .8em;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .9);\n }\n }\n\n & > .preview-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n width: 40px;\n height: 40px;\n\n position: absolute;\n right: 8px;\n top: 8px;\n\n border-radius: 50%;\n padding: 0;\n }\n }\n }\n\n .control-container {\n border: 1px solid;\n\n border-radius: 12px;\n margin-bottom: 15px;\n padding: 18px 22px;\n\n font-size: .9em;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n & > .control-container-title {\n margin-bottom: 12px;\n\n font-size: 1.1em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.margin-top {\n margin-top: 10px;\n }\n }\n\n & > .control-keys {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n\n & > div {\n display: flex;\n align-items: center;\n width: max-content;\n\n border: 1px solid;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-weight: 500;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .3);\n\n color: rgba(192, 192, 192, 1);\n\n background: rgba(50, 54, 66, .9);\n\n &:not(.key-select):hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 12px rgba(20, 20, 30, .4);\n\n background: rgba(60, 64, 78, .95);\n }\n\n &.key-select {\n border: 2px dashed;\n\n font-style: italic;\n\n /* Theme dependent */\n border-color: rgba(192, 192, 192, .6);\n box-shadow: 0 0 10px rgba(192, 192, 192, .4);\n\n background: rgba(192, 192, 192, .1);\n }\n\n &.duplicate {\n border: 2px dashed;\n\n /* Theme dependent */\n border-color: rgba(255, 87, 34, 1);\n box-shadow: 0 0 10px rgba(255, 87, 34, .5);\n\n background: rgba(255, 87, 34, .1);\n }\n\n & > .key-elem-title {\n margin-right: 10px;\n }\n\n &.add, & > .remove {\n cursor: pointer;\n }\n }\n }\n\n & > .control-actions {\n .control-action {\n border-left: 2px solid;\n\n margin-top: 12px;\n padding-left: 16px;\n\n /* Theme dependent */\n border-left-color: rgba(102, 126, 234, .5);\n\n & > .control-action-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n margin-bottom: 8px;\n\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n span {\n margin-right: 5px;\n }\n\n & > .control-action-title-left {\n white-space: nowrap;\n\n overflow-x: auto;\n\n & > span {\n width: 17px;\n }\n\n & > select {\n border-radius: 6px;\n margin: 0 5px;\n padding: 6px 10px;\n }\n\n & > .params {\n font-size: .85em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n\n & > .condition-parameter {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n\n margin: 0 4px;\n\n & > select,\n & > input:not([type=checkbox]) {\n border-radius: 6px;\n padding: 6px 10px;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n }\n }\n }\n }\n\n & > .control-action-title-right {\n display: flex;\n\n & > span {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display:flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n\n border-radius: 5px;\n margin-right: 0;\n\n font-size: 1.2em;\n\n transition: background .1s ease;\n\n &:hover {\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n }\n }\n }\n }\n\n & > .action-parameter {\n border: 1px solid;\n\n border-radius: 8px;\n margin-top: 10px;\n padding: 12px 14px;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(40, 43, 52, .3);\n\n & > .parameter-title {\n margin-bottom: 8px;\n\n font-size: .9em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(180, 190, 210, 1);\n }\n\n & > select,\n & > input:not([type=checkbox]),\n & > duration-input {\n width: 100%;\n\n border-radius: 6px;\n padding: 8px 12px;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 20px;\n height: 20px;\n }\n }\n }\n\n & > .control-bottom-container {\n display: flex;\n justify-content: space-between;\n\n margin-top: 10px;\n\n & > div {\n display: flex;\n\n & > .add-action-button {\n width: max-content;\n\n border-radius: 8px;\n padding: 8px 16px;\n\n font-weight: 500;\n }\n }\n }\n }\n }\n\n .text-input-container {\n display: flex;\n gap: 12px;\n\n border-style: 2px dashed;\n\n border-radius: 12px;\n margin-top: 18px;\n padding: 16px;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .35);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 0.15),\n rgba(118, 75, 162, 0.15)\n );\n\n & > input[type=\"text\"] {\n flex: 1;\n\n border-style: dashed;\n\n border-radius: 10px;\n padding: 10px 16px;\n\n font-size: .95em;\n\n &:focus {\n border-style: solid;\n }\n }\n }\n\n .stats-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n\n margin-top: 20px;\n\n & > .stat-card {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n width: 100%;\n height: 150px;\n\n background-color: transparent;\n\n perspective: 1000px;\n\n transition: transform .3s ease;\n\n &:hover, &:active {\n transform: scale(1.05);\n\n & > .inside {\n transform: rotateY(180deg);\n\n &::before {\n opacity: 1;\n }\n }\n }\n\n & > .inside {\n width: 100%;\n height: 100%;\n\n position: relative;\n\n transform-style: preserve-3d;\n\n transition: transform 0.8s linear(\n 0, 0.005, 0.02 2.2%, 0.046 4.5%, 0.182 11.5%,\n 0.318 16.3%, 0.459 20.6%, 0.601 24.6%, 0.738 28.6%,\n 0.863 32.7%, 0.954 37%, 1.015 41.8%, 1.049 47.4%,\n 1.059, 1.047 57.3%, 1.03 63.5%, 1.012 70.9%,\n 1.002 79.5%, 1\n );\n\n &::before {\n inset: -2px;\n\n border-radius: 14px;\n padding: 2px;\n\n opacity: 0;\n\n transition: opacity .3s ease;\n }\n\n & > :is(.front, .back) {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n\n position: absolute;\n\n border: 2px solid;\n\n border-radius: 12px;\n padding: 20px;\n\n text-align: center;\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .25);\n\n &.front {\n justify-content: center;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .15),\n rgba(118, 75, 162, .15)\n );\n }\n &.back {\n transform: rotateY(180deg);\n\n overflow: hidden auto;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(118, 75, 162, .15),\n rgba(102, 126, 234, .15)\n );\n\n &::-webkit-scrollbar {\n width: 8px;\n }\n &::-webkit-scrollbar-thumb {\n border-radius: 4px;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .4);\n }\n &::-webkit-scrollbar-track {\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n }\n }\n\n & > .stat-value {\n margin-bottom: 8px;\n\n font-size: 2.2em;\n font-weight: 700;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n /* Theme independent */\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n\n & > .stat-label {\n margin-bottom: 4px;\n\n font-size: .95em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .stat-sublabel {\n font-size: .8em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n\n &:not(:last-child) {\n margin-bottom: 8px;\n }\n }\n }\n }\n }\n }\n\n .changelog-content {\n & > .changelog-header {\n border-bottom: 2px solid;\n\n padding-bottom: 24px;\n margin-bottom: 8px;\n\n text-align: center;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n\n & > h1 {\n margin: 0 0 10px 0;\n\n font-size: 2.5em;\n font-weight: 800;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n\n & > i {\n margin-right: 12px;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n }\n\n & > .changelog-subtitle {\n margin: 0 0 20px 0;\n\n font-size: 1.1em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .9);\n }\n\n & > .changelog-nav {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n gap: 8px;\n\n & > .changelog-nav-item {\n cursor: pointer;\n\n border: 1px solid;\n border-radius: 20px;\n padding: 6px 16px;\n\n font-size: .85em;\n font-weight: 600;\n text-decoration: none;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n color: rgba(200, 200, 200, .9);\n background: rgba(102, 126, 234, .08);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .6);\n color: rgba(255, 255, 255, 1);\n background: rgba(102, 126, 234, .2);\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .8);\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .3),\n rgba(118, 168, 255, .3)\n );\n box-shadow: 0 0 12px rgba(102, 126, 234, .3);\n }\n }\n }\n }\n\n & > .changelog-divider {\n height: 2px;\n\n margin: 48px auto 8px;\n\n border-radius: 1px;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(102, 126, 234, .4) 20%,\n rgba(118, 168, 255, .4) 50%,\n rgba(102, 126, 234, .4) 80%,\n transparent\n );\n }\n\n & > .changelog-version {\n margin-top: 32px;\n padding: 24px;\n\n border: 1px solid;\n border-radius: 16px;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n background: rgba(30, 33, 42, .4);\n\n & > .changelog-version-header {\n margin-bottom: 24px;\n padding-bottom: 16px;\n\n border-bottom: 1px solid;\n\n text-align: center;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n\n & > .version-badge-row {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n\n margin-bottom: 12px;\n\n & > .version-badge {\n display: inline-block;\n\n border: 1px solid;\n border-radius: 20px;\n padding: 4px 16px;\n\n font-size: .8em;\n font-weight: 700;\n font-family: 'Courier New', monospace;\n letter-spacing: .5px;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n color: rgba(118, 168, 255, 1);\n background: rgba(102, 126, 234, .12);\n }\n\n & > .version-tag {\n display: inline-block;\n\n border-radius: 20px;\n padding: 4px 12px;\n\n font-size: .7em;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 1px;\n\n &.latest {\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .8),\n rgba(118, 168, 255, .8)\n );\n box-shadow: 0 2px 8px rgba(102, 126, 234, .4);\n }\n }\n }\n\n & > h1 {\n margin: 0 0 8px 0;\n\n font-size: 1.6em;\n font-weight: 800;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n\n & > .changelog-version-subtitle {\n margin: 0;\n\n font-size: .9em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .7);\n\n & > i {\n margin-right: 4px;\n }\n }\n }\n\n & > .changelog-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 24px;\n\n margin: 0 auto;\n padding: 0;\n\n & > .card {\n position: relative;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 20px;\n\n overflow: hidden;\n\n transition: border-color .3s ease,\n box-shadow .3s ease,\n background .3s ease,\n transform .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n\n background: rgba(40, 43, 52, .6);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n\n &::before {\n content: '';\n\n height: 3px;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n\n opacity: 0;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(102, 126, 234, .8),\n rgba(118, 168, 255, .8)\n );\n }\n\n &:hover {\n transform: translateY(-4px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5),\n 0 0 0 1px rgba(102, 126, 234, .2);\n\n background: rgba(40, 43, 52, .85);\n\n &::before {\n opacity: 1;\n }\n\n & > .card-icon {\n transform: scale(1.1) rotate(5deg);\n }\n }\n\n &.featured {\n grid-column: 1 / -1;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n background: linear-gradient(135deg,\n rgba(40, 43, 52, .8),\n rgba(50, 53, 62, .8)\n );\n\n &::before {\n opacity: 1;\n }\n\n & > .card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25),\n rgba(118, 168, 255, .25)\n );\n }\n }\n\n & > .card-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n\n border-radius: 12px;\n margin-bottom: 16px;\n\n transition: transform .3s ease;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .15);\n\n & > i {\n font-size: 24px;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 168, 255, 1)\n );\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n }\n\n & > h2 {\n margin: 0 0 12px 0;\n\n font-size: 1.35em;\n font-weight: 700;\n letter-spacing: -0.02em;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .95);\n }\n\n & > p {\n margin: 0 0 16px 0;\n\n font-size: .95em;\n line-height: 1.6em;\n\n /* Theme dependent */\n color: rgba(118, 168, 255, .9);\n }\n\n & > ul {\n margin: 0;\n padding-left: 24px;\n\n font-size: .9em;\n line-height: 1.7em;\n\n /* Theme dependent */\n color: rgba(229, 229, 229, .9);\n\n & > li {\n margin-bottom: 8px;\n padding-left: 4px;\n\n &::marker {\n /* Theme dependent */\n color: rgba(102, 126, 234, .8);\n }\n\n &:last-child {\n margin-bottom: 0;\n }\n\n & > strong {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n }\n\n & > code {\n border-radius: 4px;\n padding: 2px 6px;\n\n font-family: 'Courier New', monospace;\n font-size: .9em;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .15);\n color: rgba(118, 168, 255, 1);\n }\n\n & > ul {\n margin-top: 6px;\n padding-left: 20px;\n\n & > li {\n font-size: .95em;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .85);\n }\n }\n }\n }\n }\n }\n }\n }\n\n .about-content {\n display: flex;\n flex-direction: column;\n gap: 0;\n\n border: 1px solid;\n\n border-radius: 16px;\n padding: 0;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .25);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .4),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n background: linear-gradient(135deg,\n rgba(30, 33, 42, .95),\n rgba(25, 28, 36, .9)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n & > .about-version {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n\n padding: 32px;\n\n font-size: 1.3em;\n font-weight: 700;\n letter-spacing: .5px;\n\n /* Theme dependent */\n box-shadow: 0 4px 20px rgba(143, 163, 255, .25),\n inset 0 1px 0 rgba(255, 255, 255, .15),\n inset 0 -1px 0 rgba(0, 0, 0, .3);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .25),\n rgba(118, 75, 162, .2)\n );\n\n & > .fa {\n font-size: 1.5em;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n filter: drop-shadow(0 2px 8px rgba(143, 163, 255, .6));\n }\n }\n\n & > .about-tagline {\n padding: 24px 32px;\n\n text-align: center;\n\n /* Theme dependent */\n border-bottom: 1px solid rgba(255, 255, 255, .08);\n\n & > p {\n margin: 0;\n\n font-size: 1.05em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(180, 185, 200, 1);\n }\n }\n\n & > .about-links {\n display: flex;\n flex-direction: column;\n gap: 0;\n\n padding: 16px;\n\n & > .link-card {\n display: flex;\n align-items: center;\n gap: 16px;\n\n border: 1px solid;\n border-radius: 12px;\n margin-bottom: 12px;\n padding: 16px 20px;\n\n text-decoration: none;\n\n transition:\n border-color .3s ease,\n box-shadow .3s ease,\n background .3s ease,\n transform .3s ease,\n border-left-color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n border-left: 3px solid rgba(143, 163, 255, .35);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, .06),\n rgba(40, 43, 52, .6) 40%\n );\n\n &:last-child {\n margin-bottom: 0;\n }\n\n &:hover {\n transform: translateX(6px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .5);\n border-left-color: rgba(143, 163, 255, .8);\n box-shadow: 0 6px 24px rgba(143, 163, 255, .2),\n 0 2px 12px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(255, 255, 255, .1);\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, .15),\n rgba(118, 75, 162, .08) 50%\n );\n\n & > .link-card-icon {\n transform: scale(1.1);\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .25);\n }\n\n & > .link-card-arrow {\n transform: translateX(4px);\n\n opacity: 1;\n }\n }\n\n & > .link-card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n\n border-radius: 10px;\n\n font-size: 1.3em;\n\n transition:\n transform .3s ease,\n background .3s ease;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .15);\n\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .link-card-content {\n flex: 1;\n text-align: left;\n\n & > .link-card-title {\n margin-bottom: 4px;\n\n font-size: 1em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n }\n\n & > .link-card-desc {\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(160, 160, 160, 1);\n }\n }\n\n & > .link-card-arrow {\n font-size: 1.2em;\n\n opacity: .5;\n\n transition:\n transform .3s ease,\n opacity .3s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > .about-footer {\n padding: 0;\n\n & > .footer-divider {\n height: 1px;\n\n margin: 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(143, 163, 255, .3) 20%,\n rgba(143, 163, 255, .3) 80%,\n transparent\n );\n }\n\n & > .about-credits {\n padding: 24px;\n\n & > div {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(max(280px, calc(50% - 6px)), 1fr));\n gap: 12px;\n\n &:not(:last-child) {\n margin-bottom: 12px;\n }\n\n & > .credit-card {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 14px;\n\n border: 1px solid;\n border-radius: 14px;\n padding: 14px 16px;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n border-top: 2px solid rgba(143, 163, 255, .18);\n\n background: linear-gradient(180deg,\n rgba(143, 163, 255, .06),\n rgba(40, 43, 52, .4) 30%\n );\n\n &:hover {\n transform: translateY(-3px) scale(1.01);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .3);\n border-top-color: rgba(143, 163, 255, .5);\n box-shadow: 0 6px 20px rgba(143, 163, 255, .18),\n 0 2px 8px rgba(0, 0, 0, .25);\n\n background: linear-gradient(180deg,\n rgba(143, 163, 255, .1),\n rgba(40, 43, 52, .6) 40%\n );\n }\n\n & > .credit-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 42px;\n height: 42px;\n\n border-radius: 50%;\n\n font-size: 1.1em;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .15)\n );\n\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .credit-info {\n flex: 1;\n min-width: 0;\n text-align: left;\n\n & > .credit-name {\n position: relative;\n overflow: hidden;\n\n margin-bottom: 2px;\n\n font-size: .95em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n\n & > span {\n display: inline-block;\n white-space: nowrap;\n }\n }\n\n & > .credit-role {\n font-size: .8em;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n /* Theme dependent */\n color: rgba(160, 160, 160, 1);\n }\n }\n\n &:hover {\n & > .credit-info {\n & > .credit-name > span {\n animation: scroll-text 3s linear infinite;\n }\n }\n }\n }\n\n & > .copyright-card {\n cursor: pointer;\n\n display: flex;\n flex-direction: column;\n gap: 4px;\n flex: 1;\n\n border: 1px solid;\n border-radius: 12px;\n padding: 16px;\n\n text-align: center;\n overflow: hidden;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .04);\n\n background: rgba(35, 38, 46, .3);\n\n & > .copyright-title {\n margin-bottom: 2px;\n\n font-size: .9em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n\n & > .copyright-desc {\n font-size: .75em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(140, 140, 140, 1);\n }\n }\n }\n }\n }\n }\n\n &#ollama-server-url {\n & > .connection-status-container {\n border: 1px solid;\n\n margin-top: 10px;\n\n transition: border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n &:has(#settings-ollama-connection-status:empty) {\n display: none;\n }\n\n &.testing {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .7);\n box-shadow: 0 2px 8px rgba(255, 193, 7, .4);\n\n background: rgba(255, 193, 7, .1);\n }\n &.connected {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .7);\n box-shadow: 0 2px 8px rgba(76, 175, 80, .4);\n\n background: rgba(76, 175, 80, .1);\n }\n &.failed {\n /* Theme dependent */\n border-color: rgba(211, 47, 47, .7);\n box-shadow: 0 2px 8px rgba(211, 47, 47, .4);\n\n background: rgba(211, 47, 47, .1);\n }\n\n & > #settings-connection-status {\n font-size: .9em;\n }\n }\n }\n\n &#ollama-model-select {\n .models-container {\n border: 1px solid;\n\n margin-top: 10px;\n\n text-align: center;\n\n transition: border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n &.searching {\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .7);\n box-shadow: 0 2px 8px rgba(143, 163, 255, .4);\n\n background: rgba(143, 163, 255, .1);\n }\n &.none {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .7);\n box-shadow: 0 2px 8px rgba(255, 193, 7, .4);\n\n background: rgba(255, 193, 7, .1);\n }\n &.error {\n /* Theme dependent */\n border-color: rgba(211, 47, 47, .7);\n box-shadow: 0 2px 8px rgba(211, 47, 47, .4);\n\n background: rgba(211, 47, 47, .1);\n }\n\n & > p {\n font-size: .9em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n & > #settings-ollama-models {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 8px;\n\n &:not(:empty) {\n margin-top: 8px;\n }\n\n & > .model {\n cursor: pointer;\n\n border: 2px solid;\n\n border-radius: 8px;\n padding: 12px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, 1);\n box-shadow: 0 4px 12px rgba(20, 20, 30, .4);\n\n background: rgba(50, 54, 66, .9);\n }\n\n &.selected {\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 0 15px rgba(143, 163, 255, .5);\n\n background: rgba(143, 163, 255, .1);\n\n & > .model-top {\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > .model-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n\n & > .fa {\n /* Theme dependent */\n color: rgba(128, 128, 128, .5);\n }\n\n & > .model-name {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .pseudo-indicator {\n pointer-events: none;\n\n opacity: 0;\n }\n }\n\n & > .model-bottom {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n }\n }\n }\n\n &#ollama-setup {\n & > .settings-section-title {\n /* Theme dependent */\n color: rgba(255, 54, 34, 1);\n }\n & > .settings-section-desc {\n border-left: 4px solid;\n\n border-radius: 6px;\n padding: 10px;\n\n /* Theme dependent */\n border-left-color: rgba(255, 193, 7, 1);\n\n background: rgba(255, 193, 7, .125);\n\n color: rgba(225, 225, 225, 1);\n }\n }\n\n &.save {\n & > .save-settings-header {\n margin-bottom: 16px;\n }\n\n & > .save-settings-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .save-settings-card {\n border: 1px solid;\n border-radius: 12px;\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(40, 43, 52, .5);\n box-shadow: 0 2px 12px rgba(0, 0, 0, .2);\n\n transition: border-color .3s ease, box-shadow .3s ease;\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3);\n }\n\n & > .card-header {\n display: flex;\n align-items: center;\n gap: 12px;\n\n padding: 14px 16px;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(50, 54, 66, .6),\n rgba(40, 43, 52, .6)\n );\n border-bottom: 1px solid rgba(255, 255, 255, .06);\n\n & > .card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n\n border-radius: 10px;\n\n font-size: 1.25em;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .2)\n );\n color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 12px rgba(143, 163, 255, .15);\n }\n\n & > .card-header-content {\n flex: 1;\n\n & > .card-title {\n font-size: 1.1em;\n font-weight: 700;\n margin-bottom: 2px;\n\n /* Theme dependent */\n color: rgba(232, 232, 232, 1);\n }\n\n & > .card-desc {\n font-size: .9em;\n line-height: 1.5;\n\n /* Theme dependent */\n color: rgba(187, 187, 187, 1);\n }\n }\n\n & > .card-toggle {\n flex-shrink: 0;\n }\n }\n\n & > .card-body {\n padding: 12px;\n\n & > .action-buttons-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 10px;\n\n & > .action-card {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(46, 52, 66, .6);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .15);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 8px 24px rgba(0, 0, 0, .25);\n background: rgba(56, 62, 76, .7);\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n box-shadow: 0 2px 8px rgba(0, 0, 0, .15);\n }\n\n & > .action-card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n\n border-radius: 8px;\n\n font-size: 1.15em;\n flex-shrink: 0;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n }\n\n & > .action-card-content {\n flex: 1;\n\n & > .action-card-title {\n font-size: .95em;\n font-weight: 600;\n margin-bottom: 1px;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .action-card-desc {\n font-size: .85em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n &.export-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .2),\n rgba(56, 142, 60, .2)\n );\n color: rgba(76, 175, 80, 1);\n }\n }\n\n &.import-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .2)\n );\n color: rgba(143, 163, 255, 1);\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .5);\n background: rgba(76, 175, 80, .1);\n\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .3),\n rgba(56, 142, 60, .3)\n );\n color: rgba(76, 175, 80, 1);\n }\n }\n }\n\n &.reset-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(211, 47, 47, .2),\n rgba(183, 28, 28, .2)\n );\n color: rgba(211, 47, 47, 1);\n }\n }\n }\n }\n\n & > .status-message {\n border-radius: 10px;\n margin-top: 12px;\n padding: 12px 14px;\n\n animation: scale-in .3s ease;\n\n &.hidden {\n display: none;\n }\n\n & > .status-content {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n\n & > .status-icon {\n font-size: 1.25em;\n flex-shrink: 0;\n margin-top: 1px;\n }\n\n & > .status-text {\n flex: 1;\n\n & > .status-title {\n font-size: .95em;\n font-weight: 700;\n margin-bottom: 2px;\n\n /* Theme dependent */\n color: rgba(240, 240, 240, 1);\n }\n\n & > .status-desc {\n font-size: .9em;\n line-height: 1.5;\n\n /* Theme dependent */\n color: rgba(210, 210, 210, 1);\n }\n }\n }\n\n &.success {\n /* Theme dependent */\n border: 1px solid rgba(76, 175, 80, .4);\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .15),\n rgba(56, 142, 60, .1)\n );\n box-shadow: 0 4px 16px rgba(76, 175, 80, .2);\n\n & > .status-content > .status-icon {\n color: rgba(76, 175, 80, 1);\n }\n }\n\n &.error {\n /* Theme dependent */\n border: 1px solid rgba(211, 47, 47, .4);\n background: linear-gradient(135deg,\n rgba(211, 47, 47, .15),\n rgba(183, 28, 28, .1)\n );\n box-shadow: 0 4px 16px rgba(211, 47, 47, .2);\n\n & > .status-content > .status-icon {\n color: rgba(211, 47, 47, 1);\n }\n }\n\n &.info {\n /* Theme dependent */\n border: 1px solid rgba(255, 193, 7, .4);\n background: linear-gradient(135deg,\n rgba(255, 193, 7, .15),\n rgba(255, 152, 0, .1)\n );\n box-shadow: 0 4px 16px rgba(255, 193, 7, .2);\n\n & > .status-content > .status-icon {\n color: rgba(255, 193, 7, 1);\n }\n }\n }\n\n & > .import-textarea {\n width: 100%;\n min-height: 140px;\n\n border: 2px solid;\n\n border-radius: 10px;\n margin-top: 12px;\n padding: 12px 14px;\n\n font-family: 'Courier New', Consolas, monospace;\n font-size: .88em;\n line-height: 1.6;\n\n resize: vertical;\n\n animation: scale-in .3s ease;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .3);\n background: rgba(20, 23, 32, .8);\n color: rgba(220, 220, 220, 1);\n box-shadow: inset 0 2px 8px rgba(0, 0, 0, .3);\n\n &:focus {\n outline: none;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .6);\n box-shadow: inset 0 2px 8px rgba(0, 0, 0, .3),\n 0 0 0 3px rgba(143, 163, 255, .15);\n }\n\n &.hidden {\n display: none;\n }\n\n &::placeholder {\n /* Theme dependent */\n color: rgba(130, 130, 130, 1);\n }\n }\n }\n }\n }\n\n .disabled-note {\n display: none;\n\n font-size: .85em;\n margin-top: 4px;\n\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n\n .disabled-note {\n display: block;\n }\n }\n }\n\n .list-container {\n & > div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n border: 1px solid;\n\n border-radius: 8px;\n margin-bottom: 8px;\n padding: 8px;\n padding-left: 15px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n &.empty {\n padding: 20px;\n\n text-align: center;\n\n opacity: .6;\n }\n\n & > div {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n a > {\n font-weight: 600;\n word-break: break-all;\n }\n\n & > span {\n font-size: .85em;\n\n opacity: .7;\n }\n\n & > .add-action-button {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n\n border-radius: 6px;\n\n font-size: 1em;\n\n transition: background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n\n &:hover {\n /* Theme dependent */\n background: rgba(102, 126, 234, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n &:active {\n /* Theme dependent */\n background: rgba(102, 126, 234, .3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n }\n\n &.remove-button {\n /* Theme dependent */\n background: rgba(211, 47, 47, .1);\n\n &:hover {\n /* Theme dependent */\n background: rgba(211, 47, 47, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n &:active {\n /* Theme dependent */\n background: rgba(211, 47, 47, .3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n }\n }\n }\n }\n }\n }\n\n .settings-compact-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 18px;\n\n margin-bottom: 25px;\n }\n\n .draggable-order-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n &.is-dragging .draggable-order-item {\n pointer-events: none;\n\n &:hover {\n transform: none;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: none;\n\n background: rgba(40, 43, 52, .8);\n\n &::before {\n opacity: .5;\n\n color: inherit;\n }\n }\n }\n\n & > .draggable-order-item-wrapper {\n position: relative;\n\n transition: transform .2s cubic-bezier(0.2, 0, 0, 1);\n\n &.dragging {\n z-index: 4;\n\n &::after {\n content: '';\n\n width: 100%;\n height: 100%;\n\n border: 2px dashed;\n\n border-radius: 10px;\n\n position: absolute;\n top: 0;\n left: 0;\n\n pointer-events: none;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .8);\n box-shadow: 0 0 20px rgba(102, 126, 234, .4),\n inset 0 0 20px rgba(102, 126, 234, .15);\n\n background: rgba(102, 126, 234, .1);\n }\n\n & > .draggable-order-item {\n visibility: hidden;\n }\n }\n }\n\n .draggable-order-item {\n cursor: grab;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 14px;\n\n border: 1px solid;\n\n border-radius: 10px;\n padding: 14px 18px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .8);\n\n &::before {\n content: '\\f0c9';\n\n font-family: 'Font Awesome 6 Free';\n font-size: .9em;\n font-weight: 900;\n\n opacity: .5;\n\n transition: opacity .2s ease,\n color .2s ease;\n }\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 6px 24px rgba(0, 0, 0, .4);\n\n background: rgba(50, 54, 66, .9);\n\n &::before {\n opacity: .8;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n &:active {\n cursor: grabbing;\n\n transform: scale(1.02);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .6);\n box-shadow: 0 8px 32px rgba(102, 126, 234, .3);\n\n background: rgba(60, 65, 80, .95);\n }\n\n &.disabled {\n opacity: .5;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .05);\n\n background: rgba(30, 32, 38, .6);\n\n & > .draggable-order-item-name {\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .draggable-order-item-toggle {\n /* Theme dependent */\n background: rgba(80, 80, 80, .5);\n\n &::before {\n transform: translateX(0);\n\n /* Theme dependent */\n background: rgba(120, 120, 120, 1);\n }\n }\n\n &:hover {\n opacity: .7;\n\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n }\n }\n\n & > .draggable-order-item-name {\n flex: 1;\n\n font-size: .95em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(230, 230, 230, 1);\n }\n\n & > .draggable-order-item-toggle {\n cursor: pointer;\n\n flex-shrink: 0;\n width: 44px;\n height: 24px;\n\n border-radius: 100vh;\n\n position: relative;\n\n transition: background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .8),\n rgba(118, 75, 162, .8)\n );\n box-shadow: 0 2px 8px rgba(102, 126, 234, .3);\n\n &::before {\n content: '';\n\n width: 18px;\n height: 18px;\n\n border-radius: 50%;\n\n position: absolute;\n top: 3px;\n left: 3px;\n\n transform: translateX(20px);\n\n transition: transform .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, 1);\n box-shadow: 0 2px 4px rgba(0, 0, 0, .2);\n }\n\n &:hover {\n /* Theme dependent */\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5);\n }\n }\n }\n }\n }\n }\n }\n }\n\n select, input:not([type=range]), textarea, button {\n border: 1px solid transparent;\n\n border-radius: 8px;\n padding: 8px 12px;\n\n font-family: inherit;\n font-size: inherit;\n color: var(--color, inherit);\n\n transition: border .2s ease,\n background .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 8px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .3), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), .9);\n\n &:hover {\n /* Theme dependent */\n box-shadow: 0 4px 12px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .4), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), 1);\n }\n &:not(input, textarea):active {\n /* Theme dependent */\n box-shadow: 0 1px 4px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .2), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), .95);\n }\n\n &[type=number] {\n -moz-appearance: textfield;\n appearance: textfield;\n\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n appearance: none;\n\n margin: 0;\n }\n }\n }\n\n button {\n cursor: pointer !important;\n\n &:hover {\n transform: translateY(-2px);\n }\n &:active {\n transform: translateY(0);\n }\n }\n\n duration-input {\n display: flex;\n flex-direction: column;\n gap: 12px;\n width: 100%;\n\n border: 1px solid;\n border-radius: 12px;\n padding: 16px;\n\n font-family: inherit;\n font-size: .9em;\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n background: rgba(40, 43, 52, .7);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n background: rgba(40, 43, 52, .85);\n }\n\n & > .infinity-label {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 10px 14px;\n\n font-weight: 500;\n font-size: .95em;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(220, 220, 220, 1);\n background: rgba(35, 38, 48, .6);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .2);\n\n &::after {\n content: '\\f00c';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n\n position: absolute;\n top: 50%;\n right: 12px;\n\n font-size: 13px;\n line-height: 1;\n\n opacity: 0;\n transform: translateY(-50%) scale(0);\n\n transition: all .2s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n & > span {\n flex: 1;\n letter-spacing: .3px;\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n background: rgba(45, 48, 58, .8);\n box-shadow: 0 3px 10px rgba(0, 0, 0, .3);\n }\n\n &.selected {\n border-color: rgba(102, 126, 234, .5);\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .2) 0%,\n rgba(118, 75, 162, .2) 100%\n );\n box-shadow: 0 3px 12px rgba(102, 126, 234, .25),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n &::after {\n opacity: 1;\n transform: translateY(-50%) scale(1);\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .6);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25) 0%,\n rgba(118, 75, 162, .25) 100%\n );\n box-shadow: 0 4px 16px rgba(102, 126, 234, .35),\n inset 0 1px 0 rgba(255, 255, 255, .1);\n }\n }\n }\n\n & > .duration-inputs {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 10px;\n\n opacity: 1;\n transform: scale(1);\n\n transition: opacity .2s ease,\n transform .2s cubic-bezier(.4, 0, .2, 1);\n\n & > label {\n display: flex;\n flex-direction: column;\n gap: 6px;\n\n & > span {\n font-size: .75em;\n font-weight: 600;\n letter-spacing: .5px;\n text-align: center;\n text-transform: uppercase;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .85);\n }\n\n & > input {\n cursor: text;\n\n width: 100%;\n\n border: 1px solid;\n border-radius: 6px;\n padding: 8px 10px;\n\n font-family: 'Segoe UI', system-ui, sans-serif;\n font-size: .95em;\n font-weight: 500;\n text-align: center;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(230, 230, 230, 1);\n background: rgba(30, 33, 42, .9);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .2),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n\n &::placeholder {\n color: rgba(150, 154, 170, .6);\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n background: rgba(35, 38, 48, 1);\n box-shadow: 0 3px 8px rgba(0, 0, 0, .25),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n }\n\n &:focus {\n outline: none;\n border-color: rgba(102, 126, 234, .6);\n background: rgba(40, 43, 52, 1);\n box-shadow: 0 0 0 2px rgba(102, 126, 234, .2),\n 0 2px 10px rgba(102, 126, 234, .15),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n }\n\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n }\n }\n\n &:has(.infinity-label.selected) > .duration-inputs {\n opacity: .4;\n transform: scale(.98);\n pointer-events: none;\n }\n }\n\n #reset-statistics-button {\n float: right;\n\n font-size: 1rem;\n\n /* Theme dependent */\n --background: 211, 51, 51;\n }\n\n #settings-ollama-refresh-models {\n float: right;\n\n font-size: 1rem;\n }\n }\n\n .ws-username-highlight {\n position: relative;\n\n &::before {\n content: \"\";\n\n pointer-events: none;\n\n position: absolute;\n inset: 0;\n\n border-radius: 10px;\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n }\n }\n\n &.mobile {\n #queue {\n display: none !important;\n }\n\n #right-details {\n display: none !important;\n }\n\n #right-container {\n width: 100% !important;\n\n #main-container {\n width: 100% !important;\n }\n }\n }\n}\n\n@container (max-width: 300px) {\n #DEFCON {\n padding: 8px 14px !important;\n\n & > span {\n display: none;\n }\n }\n}\n\n@container (max-width: 225px) {\n #DEFCON {\n display: none !important;\n }\n}"},4192(e,t){function n(){return crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}Object.defineProperty(t,"__esModule",{value:!0}),t.generateRandomUUID=function(){return 0===s.length?n():s.pop()};const s=[];"function"==typeof requestIdleCallback&&requestIdleCallback(function e(){s.length<256&&s.push(n()),requestIdleCallback(e)})},4041(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.CreateDOMElement=function(e,t={}){const n=document.createElement(e);"id"in t&&(n.id=t.id);"class"in t&&(n.className=t.class);"text"in t&&(n.textContent=t.text);"html"in t&&(n.innerHTML=t.html);"content"in t&&n.append(t.content);"value"in t&&(n.value=t.value);if("attributes"in t)for(const[e,s]of Object.entries(t.attributes||{}))n.setAttribute(e,s);if("dataset"in t)for(const[e,s]of Object.entries(t.dataset||{}))n.dataset[e]=s;if("style"in t)for(const[e,s]of Object.entries(t.style||{}))n.style.setProperty(e,s);return n}},5643(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.fullTrim=void 0;t.fullTrim=e=>{const t=e.split("\n"),n=t.length;let s=!0,i=1/0,a=[],r=[];for(let e=0;e<n;e++){const n=t[e];if(""===n.trim()){if(s)continue;a.push("")}else{s?s=!1:(r=r.concat(a),a=[]);const e=n.match(/^(\s*)/)[0].length;i=Math.min(i,e),r.push(n)}}const o=r.length;if(0===o)return"";const l=[];for(let e=0;e<o;e++){const t=r[e].trimEnd();""===t?l.push(""):l.push(t.slice(i))}return l.join("\n")}},2852(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Memory=void 0;t.Memory=class{constructor(e={}){this.order=[],this.store=new Map,this.timeouts=new Map,"timeout"in e&&(this.timeout=e.timeout),"size"in e&&(this.maxSize=e.size)}clear(){this.order=[],this.store.clear(),this.timeouts.clear()}has(e){return this.store.has(e)}get(e){return this.store.get(e)}set(e,t){const n=this.order.indexOf(e);-1!==n&&this.order.splice(n,1),this.order.push(e),this.store.set(e,t),this.timeouts.has(e)&&clearTimeout(this.timeouts.get(e)),void 0!==this.timeout&&this.timeouts.set(e,setTimeout(()=>{this.delete(e)},this.timeout)),void 0!==this.maxSize&&this.store.size>this.maxSize&&this.delete(this.order.shift())}add(e){this.store.has(e)||this.set(e,!0)}delete(e){const t=this.order.indexOf(e);-1!==t&&this.order.splice(t,1),this.store.delete(e),clearTimeout(this.timeouts.get(e)),this.timeouts.delete(e)}size(){return this.store.size}}},2595(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Stack=void 0;t.Stack=class{constructor(e=50){this.items=[],this.maxSize=e}push(e){this.items.push(e),this.items.length>this.maxSize&&this.items.shift()}pop(){return this.items.pop()}unshift(e){this.items.unshift(e),this.items.length>this.maxSize&&this.items.pop()}shift(){return this.items.shift()}peek(){return this.items[this.items.length-1]}clear(){this.items=[]}get length(){return this.items.length}set length(e){this.items.length=Math.min(e,this.maxSize)}}},6873(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Trie=void 0;var s=n(4192);function i(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function a(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var r=new WeakSet;function o(e){var t;this.timeouts.has(e)&&clearTimeout(this.timeouts.get(e)),this.timeouts.delete(e);const n=this.order[e];delete this.order[e];const s=[{children:this.store}];let i=this.store;for(const e of n){const t=i.get(e);s.push(t),i=t.children}const a=s.pop();if(a.defined=!1,delete a.value,!((null===(t=a.children)||void 0===t?void 0:t.size)>0))for(let e=s.length-1;e>=0;e--){const t=s[e],i=n.pop();if(t.children.delete(i),t.children.size>0||t.defined)break;t.terminal=!0,delete t.children}}t.Trie=class{constructor(e={}){i(this,r),this.order={},this.store=new Map,this.timeouts=new Map,"timeout"in e&&(this.timeout=e.timeout),"size"in e&&(this.maxSize=e.size)}clear(){this.order={},this.store.clear(),this.timeouts.clear()}has(...e){var t;const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return!1;const e=s.get(t);if(e.terminal)return!1;s=e.children}return!0===(null===(t=s.get(n))||void 0===t?void 0:t.defined)}get(...e){var t;const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.value}set(...e){var t;const n=e.pop();let i=((e,t)=>{const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.UUID})(e);delete this.order[i],void 0===i&&(i=(0,s.generateRandomUUID)());const l=e.pop();let d=this.store;for(const t of e)if(d.has(t)){var c;const e=d.get(t);e.terminal=!1,null!==(c=e.children)&&void 0!==c||(e.children=new Map),d=e.children}else{const e={defined:!1,terminal:!1,children:new Map};d.set(t,e),d=e.children}const u=null!==(t=d.get(l))&&void 0!==t?t:{terminal:!0};u.UUID=i,u.defined=!0,u.value=n,d.set(l,u),this.order[i]=e.concat([l]),this.timeouts.has(i)&&clearTimeout(this.timeouts.get(i)),void 0!==this.timeout&&this.timeouts.set(i,setTimeout(()=>{a(r,this,o).call(this,i)},this.timeout)),void 0!==this.maxSize&&Object.keys(this.order).length>this.maxSize&&a(r,this,o).call(this,this.order.shift())}add(e){this.store.has(e)||this.set(e,!0)}delete(...e){const t=((e,t)=>{const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.UUID})(e);void 0!==t&&a(r,this,o).call(this,t)}size(){return Object.keys(this.order).length}}},4551(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.truncate=function(e,t){return e.length>t?`${e.substring(0,t-3).trimEnd()}...`:e}},1289(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.convertToUTCString=void 0;t.convertToUTCString=e=>`${e.getUTCFullYear().toString().padStart(4,"0")}-${(e.getUTCMonth()+1).toString().padStart(2,"0")}-${e.getUTCDate().toString().padStart(2,"0")}T${e.getUTCHours().toString().padStart(2,"0")}:${e.getUTCMinutes().toString().padStart(2,"0")}:${e.getUTCSeconds().toString().padStart(2,"0")}`},8678(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Ollama=t.AI=void 0;var s=n(4018),i=n(5643);function a(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function r(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=new WeakSet;class l{static registerProvider(e,t){l.providers[e]=t}setup(e,t){if(this.analysis[e].has(t.id)){const n=this.analysis[e].get(t.id);return n.count++,n.request}const n=new AbortController,s=this.fetch(e,t,n.signal);return this.analysis[e].set(t.id,{request:s,abortController:n,count:1}),s.finally(()=>{this.analysis[e].delete(t.id)}),s}async fetch(e,t,n){return{error:"No service has been selected"}}constructor(e,t){a(this,o),r(this,"analysis",{edit:new Map,username:new Map}),r(this,"cache",{username:new Set}),r(this,"analyze",{edit:e=>this.setup("edit",e),username:e=>this.cache.username.has(e.user.name)?Promise.resolve({flag:!1,confidence:1,issues:[],explanation:"Username previously analyzed."}):(this.cache.username.add(e.user.name),this.setup("username",e))}),r(this,"cancel",{all:(e=!0)=>{if(!0===e)for(const e of Object.keys(this.analysis))for(const n of null===(t=this.analysis[e])||void 0===t?void 0:t.keys()){var t;this.cancel[e](n)}else for(const t of null===(n=this.analysis[e])||void 0===n?void 0:n.keys()){var n;this.cancel[e](t)}},edit:e=>{const t=this.analysis.edit.get(e);t&&(t.count--,t.count<=0&&(t.abortController.abort("Edit analysis canceled by user"),this.analysis.edit.delete(e)))},username:e=>{const t=this.analysis.username.get(e);t&&(t.count--,t.count<=0&&(t.abortController.abort("Username analysis canceled by user"),this.analysis.username.delete(e)))}}),r(this,"prompt",{edit:async e=>{var t,n;const a=function(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}(o,this,d).call(this,e.diff),r=null!==(t=s.namespaces.find(t=>t.id===e.ns))&&void 0!==t?t:s.namespaces[0];let l="registered";e.user.temp?l="temporary (unregistered)":e.user.ip&&(l="IP (unregistered)");const c=e.page.categories.join(", ")||"(none)",u=e.page.categories.some(e=>/living people/i.test(e));return(0,i.fullTrim)(`\nYou are an automated Wikipedia item reviewer. Analyze the following item and determine whether the CHANGES INTRODUCED violate Wikipedia policy.\n\nCRITICAL: You are evaluating what this item CHANGED, not the page content before it. The diff shows removed lines (prefixed "-") and added lines (prefixed "+"). Only ADDED content can be a new violation. Removing bad content is a GOOD item. Adding references, citations, and sources is GOOD — it improves verifiability, not the opposite.\n\nitem CONTEXT:\n- Page: "${e.page.title}" (${r.name} namespace)\n- Categories: ${c}${u?"\n- ⚠ BLP: This page is about a living person. Unsourced negative claims are a serious concern.":""}\n- User: "${e.user.name}" (${l}, warning level: ${e.user.warning}/4)\n- ORES vandalism probability: ${(100*e.ores).toFixed(0)}%\n- Size change: ${e.sizediff>0?"+":""}${e.sizediff} bytes\n- Flagged minor: ${e.minor?"yes":"no"}\n- Summary: ${e.comment||"(empty)"}\n- Tags: ${(null===(n=e.tags)||void 0===n?void 0:n.join(", "))||"(none)"}\n\nWHAT TO CHECK:\n1. VANDALISM: Does the item add nonsense, profanity as attacks, hoaxes, blanking, or deliberate misinformation? (WP:VANDALISM)\n2. NPOV: Does the item add clearly biased or one-sided language that is not presented neutrally? (WP:NPOV)\n3. VERIFIABILITY: Does the item add claims that are extraordinary or contentious WITHOUT any sourcing? Note: adding "<ref>" tags, URLs, or citation templates is adding sources — this is the OPPOSITE of a verifiability problem. (WP:V)\n4. ORIGINAL RESEARCH: Does the item add novel analysis, synthesis, or unpublished interpretation not attributable to any source? Simply adding text IS NOT original research if it restates commonly known facts or is sourced. Adding citations is NEVER original research. (WP:NOR)\n5. BLP: If this is a BLP article, does the item add unsourced or poorly-sourced negative material about the subject? (WP:BLP)\n\nWHAT IS NOT A VIOLATION:\n- Adding references, citations, "<ref>" tags, or URLs (this IMPROVES the article)\n- Removing vandalism or bad content\n- Fixing grammar, spelling, formatting, or wikilinks\n- Content about controversial topics written in a neutral, encyclopedic tone\n- Wikipedia is NOT censored — explicit content on appropriate pages is allowed (WP:NOTCENSORED)\n- Absent or auto-generated item summaries (e.g. "/* Section name */") are normal, not violations\n- ORES scores and warning levels are hints — do NOT treat them as evidence by themselves\n\nASSESSMENT SCALE:\n- "Good": No policy issues. Normal constructive item.\n- "Review": Minor concerns; a human should glance at it.\n- "Suspicious": Likely problematic; warrants close scrutiny.\n- "Bad": Clear policy violation.\n\nWhen in doubt between two ratings, choose the LESS severe one. Most items on Wikipedia are constructive — reflect that in your assessments.\n\nFor issues, use short policy codes (e.g. "WP:VANDALISM", "WP:NPOV", "WP:BLP"). Keep your explanation to 1-3 sentences.\n\nFORMATTING: Write your explanation as inline HTML with properly opened AND closed tags. Never use self-closing tags like <code/> or <b/> — always use an opening and closing pair.\nExample: <b>Clear vandalism</b> — added <code>lol hacked</code> which violates <i>WP:VANDALISM</i>.\nAllowed tags: <b>...</b>, <i>...</i>, <code>...</code>. No markdown, no block tags.\n\nDIFF:\n${a}\n`)},username:async e=>{var t;return(0,i.fullTrim)(`\nYou are an automated Wikipedia username policy reviewer. Determine whether the username below violates Wikipedia's username policy.\n\nUSERNAME: ${e.user.name}\nPAGE CONTEXT: ${(null===(t=e.page)||void 0===t?void 0:t.title)||"(unknown)"}\n\nThe page context is provided ONLY to check for potential conflict-of-interest (e.g. a user named "AcmeCorp" iteming the Acme Corporation article). A controversial page topic does NOT make the username problematic.\n\nVIOLATION CATEGORIES (flag ONLY if the username clearly and unambiguously fits one):\n\n1. Offensive — The name is unambiguously profane, threatening, sexually explicit, or promotes vandalism. Merely edgy, weird, or humorous names do NOT qualify. (WP:U#OFFENSIVE)\n2. Disruptive — The name clearly declares intent to disrupt or vandalize (e.g. "I Will Vandalize"). (WP:U#DISRUPTIVE)\n3. Libelous — The name makes a clearly false or disparaging claim about a specific real person, or reveals private personal information. (WP:U#LIBEL)\n4. Misleading — The name impersonates a specific real person, or falsely claims special permissions by including terms like "admin", "sysop", "bureaucrat", "checkuser". (WP:U#MISLEADING)\n5. Promotional — The name is a URL or email address whose clear purpose is advertising or revenue. Containing a brand name alone is NOT enough. (WP:U#PROMO)\n6. Shared — The name unambiguously represents a company, organization, or role rather than an individual (e.g. "XYZ Foundation", "Secretary of ABC"). Names like "JohnAtAcme" or "AcmeFan123" are fine — they clearly identify an individual. (WP:U#SHARED)\n\nDECISION RULES:\n- Flag ONLY clear, unambiguous violations. Borderline = no flag.\n- Numbers at the end of a username (e.g. "itemor2847", "WikiFan99") are completely normal and NOT a violation of any kind.\n- Creative, odd, humorous, or meaningless usernames are NOT violations.\n- Containing a real word that could be offensive in some context is NOT enough — the name must be clearly and intentionally offensive.\n- When in doubt: do NOT flag. Set flag to false.\n- If not flagging, set explanation to "No violation."\n\nFORMATTING: Write your explanation as inline HTML with properly opened AND closed tags. Never use self-closing tags like <code/> or <b/> — always use an opening and closing pair.\nExample: Username contains <code>sysop</code> which falsely implies <i>WP:U#MISLEADING</i> permissions.\nAllowed tags: <b>...</b>, <i>...</i>, <code>...</code>. No markdown, no block tags.\n`)}}),this.ws=e,this.settings=e.store.settings.AI,this.config=t}async test(){return!1}async models(){return[]}}function d(e){var t;const n=document.createElement("div");n.innerHTML=e;const s=[];for(const e of n.querySelectorAll("tr")){const t=e.querySelector(".diff-deletedline"),n=e.querySelector(".diff-addedline"),i=e.querySelector(".diff-context");t&&s.push(`- ${t.textContent.trim()}`),n?s.push(`+ ${n.textContent.trim()}`):i&&s.push(` ${i.textContent.trim()}`)}return s.length>0?s.join("\n"):(null===(t=n.textContent)||void 0===t?void 0:t.trim())||""}t.AI=l,r(l,"providers",{});const c={type:"object",properties:{issues:{type:"array",items:{type:"object",properties:{policy:{type:"string"},severity:{type:"string",enum:["Low","Medium","High","Critical"]}},required:["policy","severity"]}},explanation:{type:"string"},assessment:{type:"string",enum:["Good","Review","Suspicious","Bad"]},confidence:{type:"number",minimum:0,maximum:1}},required:["assessment","confidence","issues","explanation"]},u={type:"object",properties:{issues:{type:"array",items:{type:"object",properties:{policy:{type:"string",enum:["Offensive","Disruptive","Libelous","Misleading","Promotional","Shared"]},severity:{type:"string",enum:["Low","Medium","High","Critical"]}},required:["policy","severity"]}},explanation:{type:"string"},flag:{type:"boolean"},confidence:{type:"number",minimum:0,maximum:1}},required:["flag","confidence","issues","explanation"]};class p extends l{async test(){try{return(await fetch(`${this.config.server}/api/version`,{method:"GET"})).ok}catch(e){return!1}}async models(){try{const e=await fetch(`${this.config.server}/api/tags`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!e.ok)throw new Error(`Ollama API error: ${e.status} ${e.statusText}`);return(await e.json()).models||[]}catch(e){throw e}}async fetch(e,t,n=null){try{const s=this.prompt[e](t),i={method:"POST",headers:{"Content-Type":"application/json"}},a={model:this.config.model,prompt:await s,stream:!1,options:{temperature:.1,top_p:.9,num_predict:1024},format:"edit"===e?c:u};let r;i.body=JSON.stringify(a),n&&(i.signal=n);try{if(r=await fetch(`${this.config.server}/api/generate`,i),!r.ok)throw new Error(`Ollama API error: ${r.status} ${r.statusText}`);const e=await r.json();if(!e.response)throw new Error("Empty response from Ollama");return JSON.parse(e.response)}catch(e){return{error:e.message||"Ollama request failed"}}}catch(e){return{error:e.message||"Ollama request failed"}}}}t.Ollama=p,l.registerProvider("Ollama",p)},8169(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.AudioManager=void 0;var s=n(4192),i=n(1258);const a={startup:{type:"sound",title:"Startup Sound",description:"Sound played when WikiShield starts up.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/startup.wav"},music:{type:"category",title:"Music",description:"Background music tracks.",volume:1,properties:{zen_mode:{type:"sound",title:"Zen Mode",description:"Background audio played in Zen mode.",volume:1,data:"custom://zen_mode",preview:!1}}},ui:{type:"category",title:"User Interface Sounds",description:"Sounds used for user interface interactions.",volume:1,properties:{click:{type:"sound",title:"Click Sound",description:"Sound played when clicking on interface elements.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/click.wav"}}},queue:{type:"category",title:"Queue Sounds",description:"Sounds played for queue events.",volume:1,properties:{ores:{type:"sound",title:"ORES Alert",description:"Sound played due to a high ORES score.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/ores.wav"},mention:{type:"sound",title:"Mention Alert",description:"Sound played when your username is mentioned in an edit.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/mention.wav"}}},notification:{type:"category",title:"Notification Sounds",description:"Sounds played for various notifications.",volume:1,properties:{alert:{type:"sound",title:"Alert Sound",description:"Sound played for alerts.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/alert.wav"},message:{type:"sound",title:"Message Sound",description:"Sound played for messages.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/message.wav"},toast:{type:"sound",title:"Toast Sound",description:"Sound played for toast notifications.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/toast.wav"}}},action:{type:"category",title:"Action Sounds",description:"Sounds played for various user actions.",volume:1,properties:{default:{type:"sound",title:"Default Action Sound",description:"Sound played for default actions.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/action.wav"},failed:{type:"sound",title:"Failed Action Sound",description:"Sound played when an action fails.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/failed.wav"},report:{type:"sound",title:"Report Action Sound",description:"Sound played for report actions.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/report.wav"}}}};t.AudioManager=class{constructor(e){this.ws=e,this.audio=a,this.soundEffects=new Map,this.previews=new Map,this.previewing=!1}async init(){this.zengine=new i.Zengine,this.zengine.debug=this.ws.__DEV__,await this.zengine.init(),this.zengine.setMasterVolume(this.ws.store.settings.audio.volume["master.music.zen_mode"])}async playSound(e,t,n=!1,i){if(!n){const e=this.ws.store.settings.zen_mode;if(e.enabled&&!e.sound.enabled)return}const a=this.getSound(e);if(!a||!a.data)return;const r=this.getVolume(e),o=new Audio(a.data);o.volume=!n&&this.previewing?0:r,"mediaSession"in navigator&&(navigator.mediaSession.setActionHandler("play",()=>{}),navigator.mediaSession.setActionHandler("pause",()=>{}),navigator.mediaSession.setActionHandler("previoustrack",()=>{}),navigator.mediaSession.setActionHandler("nexttrack",()=>{}));const l=(0,s.generateRandomUUID)();n&&(this.muteId=l,this.previewing=!0,this.stopPreviews(),this._muteAll(),this.previews.set(o,e)),this.soundEffects.set(o,e);const d=new Promise((e,t)=>{o.resolve=e,o.reject=t});o.onended=()=>{o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))},o.onerror=()=>{o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))};let c=!1;return o.onplay=()=>{c||(c=!0,i&&i())},null==t||t.addEventListener("abort",()=>{o.pause(),o.src="",o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))}),window.ineractedWithPage?await o.play():null==i||i(),d}async previewSound(e){const t=this.getSound(e);if(!t||!t.data)return;this._muteAll();const n=new Audio(t.data);n.volume=this.getVolume(e),this.previews.set(n,e);const s=()=>{this.previews.delete(n),0===this.previews.size&&this._unmuteAll()};n.onended=s,n.onerror=s,window.ineractedWithPage&&await n.play()}stopPreviews(){for(const e of this.previews.keys())e.resolve(),e.pause(),e.onended=null,e.onerror=null,e.src="";this.previews.clear(),this._unmuteAll()}onvolumechanged(){if(this.zengine.setMasterVolume(this.ws.store.settings.audio.volume["master.music.zen_mode"]),this.previewing)for(const[e,t]of this.previews.entries()){const n=this.getVolume(t);e.volume=n}else for(const[e,t]of this.soundEffects.entries()){const n=this.getVolume(t);e.volume=n}}_muteAll(){for(const e of this.soundEffects.keys())e.volume=0}_unmuteAll(){for(const[e,t]of this.soundEffects.entries())e.volume=this.getVolume(t)}getSound(e){let t={type:"category",properties:this.audio};for(const n of e){if("category"!==t.type)return null;if(t=t.properties[n],!t)return null}return t}getVolume(e){const t=this.ws.store.settings.audio.volume;let n=t.master,s={type:"category",properties:this.audio};const i=["master"];for(const a of e){if(i.push(a),"category"!==s.type)return n;if(s=s.properties[a],!s)break;const e=t[i.join(".")];void 0!==e&&(n*=e)}return n}}},1258(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Zengine=void 0;class n{constructor(){this.audioContext=null,this.masterGain=null,this.isPlaying=!1,this.debug=!1,this.layers={bass:{oscillators:[],gains:[],compressor:null},pad:{oscillators:[],gains:[],filter:null,reverb:null}},this.nextChordTimeout=null,this.baseFrequency=65.41,this.currentKey=0,this.chordLibrary={maj7:{bass:[0],pad:[0,7,11,16,19],tension:.1},min7:{bass:[0],pad:[0,7,10,15,19],tension:.15},maj9:{bass:[0],pad:[0,7,11,14,19],tension:.12},min9:{bass:[0],pad:[0,7,10,14,19],tension:.18},sus2:{bass:[0],pad:[0,7,12,14,19],tension:.25},sus4:{bass:[0],pad:[0,7,12,17,19],tension:.28},add9:{bass:[0],pad:[0,7,14,16,21],tension:.15},madd9:{bass:[0],pad:[0,7,14,15,21],tension:.2},openvoice:{bass:[0],pad:[0,7,12,19,24],tension:.08},"6add9":{bass:[0],pad:[0,7,9,14,19],tension:.18}},this.chordCompatibility={maj7:["maj9","min7","sus2","add9","openvoice","6add9"],min7:["maj7","min9","sus4","madd9","openvoice"],maj9:["maj7","add9","sus2","6add9","openvoice"],min9:["min7","madd9","sus2","maj9"],sus2:["maj7","maj9","add9","openvoice","sus4"],sus4:["maj7","sus2","min7","openvoice"],add9:["maj9","sus2","maj7","openvoice","6add9"],madd9:["min9","min7","add9","sus2"],openvoice:["sus2","maj7","add9","maj9"],"6add9":["maj7","maj9","add9","sus2"]},this.currentChordName="maj7",this.currentTension=.1}init(){this.audioContext||(this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.masterGain=this.audioContext.createGain(),this.masterGain.connect(this.audioContext.destination),this.masterGain.gain.value=.2,this.setupLayerEffects())}async start(){this.isPlaying||(this.init(),"suspended"===this.audioContext.state&&await this.audioContext.resume(),this.isPlaying=!0,this.currentKey=Math.floor(12*Math.random()),this.playNextChord())}setupLayerEffects(){const e=this.audioContext.createDynamicsCompressor();e.threshold.value=-30,e.knee.value=40,e.ratio.value=12,e.attack.value=.003,e.release.value=.25,e.connect(this.masterGain),this.layers.bass.compressor=e;const t=this.audioContext.createBiquadFilter();t.type="lowpass",t.frequency.value=1200,t.Q.value=.5;const n=this.audioContext.createDelay(2);n.delayTime.value=.4;const s=this.audioContext.createGain();s.gain.value=.3,t.connect(n),n.connect(s),s.connect(t),t.connect(this.masterGain),this.layers.pad.filter=t,this.layers.pad.reverb={delay:n,gain:s}}playNextChord(){if(!this.isPlaying)return;const e=this.chooseNextChord(),t=this.currentChordName;if(this.currentChordName=e,this.currentTension=this.chordLibrary[e].tension,this.debug&&console.log("[MusicEngine] Chord changed",{from:t,to:e,tension:this.currentTension,key:this.currentKey,timestamp:this.audioContext.currentTime}),Math.random()<.08){const e=this.currentKey;this.currentKey=(this.currentKey+[2,5,7][Math.floor(3*Math.random())])%12,this.debug&&console.log("[MusicEngine] Key changed",{from:e,to:this.currentKey})}this.transitionToChord(e);const n=12e3+1e4*Math.random();this.nextChordTimeout=setTimeout(()=>this.playNextChord(),n)}chooseNextChord(){const e=this.chordCompatibility[this.currentChordName]||Object.keys(this.chordLibrary),t=e.map(e=>({name:e,weight:this.chordLibrary[e].tension<.2?2:1})),n=t.reduce((e,t)=>e+t.weight,0);let s=Math.random()*n;for(const e of t)if(s-=e.weight,s<=0)return e.name;return e[0]}transitionToChord(e){const t=this.chordLibrary[e];if(!t)return;const n=6+3*Math.random();["bass","pad"].forEach(e=>this.createLayer(e,t[e],n))}createLayer(e,t,n){if(null==t||!t.length)return;const s=this.audioContext.currentTime,i=this.layers[e];if(i.gains&&i.gains.length>0){const e=[...i.oscillators],t=[...i.gains];t.forEach(e=>{try{e.gain.cancelScheduledValues(s),e.gain.setValueAtTime(e.gain.value,s),e.gain.linearRampToValueAtTime(0,s+n)}catch(e){}}),setTimeout(()=>{e.forEach(e=>{try{e.stop(),e.disconnect()}catch(e){}}),t.forEach(e=>{try{e.disconnect()}catch(e){}})},1e3*n+100)}const a=[],r=[],o=[];t.forEach((t,l)=>{const d=this.baseFrequency*Math.pow(2,(this.currentKey+t)/12);o.push(d);const c=this.audioContext.createOscillator();c.type="bass"===e?"sine":"triangle",c.frequency.value=d,c.detune.value=6*(Math.random()-.5);const u=this.audioContext.createGain();u.gain.value=0,c.connect(u),"bass"===e&&i.compressor?u.connect(i.compressor):i.filter&&u.connect(i.filter),c.start(s),a.push(c),r.push(u);const p="bass"===e?.15:.08-.01*l;u.gain.setValueAtTime(0,s),u.gain.linearRampToValueAtTime(p,s+n)}),this.debug&&console.log("[MusicEngine] Layer created",{layer:e,frequencies:o,volumes:r.map(e=>e.gain.value),fadeDuration:n}),i.oscillators=a,i.gains=r}stop(){this.isPlaying=!1,this.nextChordTimeout&&clearTimeout(this.nextChordTimeout),this.debug&&console.log("[MusicEngine] Stopping music engine",{timestamp:this.audioContext.currentTime});const e=this.audioContext.currentTime;if(Object.values(this.layers).forEach(t=>{t.gains&&t.gains.forEach(t=>{try{t.gain.setValueAtTime(t.gain.value,e),t.gain.linearRampToValueAtTime(0,e+.5)}catch(e){}}),t.oscillators&&setTimeout(()=>{t.oscillators.forEach(e=>{try{e.stop(),e.disconnect()}catch(e){}}),t.oscillators=[],t.gains&&(t.gains.forEach(e=>{try{e.disconnect()}catch(e){}}),t.gains=[])},550)}),this.masterGain)try{this.masterGain.gain.setValueAtTime(this.masterGain.gain.value,e),this.masterGain.gain.linearRampToValueAtTime(0,e+.5)}catch(e){}}setMasterVolume(e){if(this.masterGain){const t=this.masterGain.gain.value;this.masterGain.gain.value=e,this.debug&&console.log("[MusicEngine] Master volume changed",{from:t,to:e})}}}t.Zengine=class{constructor(){this.audioContext=null,this.sounds=[],this.activeSounds=new Map,this.masterGainNode=null,this.isRunning=!1,this.currentEnvironment=null,this.eventLoopInterval=null,this.activityLevel=4,this.musicEngine=null,this.debug=!1}async init(){this.musicEngine=new n,this.musicEngine.init(),this.musicEngine.debug=this.debug;const e=await fetch("https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/bbc-sounds.json"),t=await e.json();return this.sounds=this.categorizeSounds(t),this.debug&&console.log("[Zengine] Initialized",{soundCount:this.sounds.length,categories:[...new Set(this.sounds.map(e=>e.category))]}),this.sounds.length}categorizeSounds(e){return e.map(e=>{var t;const n=(e.tags||[]).map(e=>e.toLowerCase()),s=(e.description||"").toLowerCase(),i=parseFloat((null===(t=e.technicalMetadata)||void 0===t?void 0:t.duration)||e.duration)||0,a=this.detectCategory(n,s),r=i>60?"ambient":i>15?"feature":"event";return{id:e.id,duration:i,description:e.description,category:a,role:r}})}detectCategory(e,t){const n=[...e,t].join(" ");return/rain|drizzle/i.test(n)?"rain":/ocean|sea|wave/i.test(n)?"ocean":/stream|river|water/i.test(n)?"water-flow":/wind|breeze/i.test(n)?"wind":/bird/i.test(n)?"bird":/cricket|insect/i.test(n)?"insect":"other"}generateEnvironment(){const e=[{name:"Gentle Rain",requiredAmbient:["rain"],commonCategories:["bird"],weather:"rain"},{name:"Ocean Shore",requiredAmbient:["ocean"],commonCategories:["bird","wind"],weather:"clear"},{name:"Forest Stream",requiredAmbient:["water-flow"],commonCategories:["bird","insect"],weather:"clear"}],t=e[Math.floor(Math.random()*e.length)];return this.debug&&console.log("[Zengine] Environment generated",{name:t.name,weather:t.weather,ambientRequirements:t.requiredAmbient,commonSounds:t.commonCategories}),t}getEnvironmentSounds(e){return{ambient:this.sounds.filter(t=>"ambient"===t.role&&e.requiredAmbient.includes(t.category)),events:this.sounds.filter(t=>"event"===t.role&&e.commonCategories.includes(t.category))}}async start(){this.isRunning||(0===this.sounds.length&&await this.init(),this.musicEngine.isPlaying||await this.musicEngine.start(),this.audioContext||(this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.masterGainNode=this.audioContext.createGain(),this.masterGainNode.connect(this.audioContext.destination),this.masterGainNode.gain.value=.3),"suspended"===this.audioContext.state&&await this.audioContext.resume(),this.isRunning=!0,this.currentEnvironment=this.generateEnvironment(),this.debug&&console.log("[Zengine] Engine started",{environment:this.currentEnvironment.name,audioContextState:this.audioContext.state}),await this.startAmbientLayers(),this.startEventLoop())}async startAmbientLayers(){const e=this.getEnvironmentSounds(this.currentEnvironment),t=Math.min(e.ambient.length,2);for(let n=0;n<t;n++){const t=e.ambient[Math.floor(Math.random()*e.ambient.length)];this.activeSounds.has(t.id)||await this.playSound(t,"ambient",.35+.1*Math.random())}}startEventLoop(){this.eventLoopInterval=setInterval(()=>this.processEvents(),3e3),this.debug&&console.log("[Zengine] Event loop started")}async processEvents(){if(!this.isRunning)return;const e=this.getEnvironmentSounds(this.currentEnvironment);if(Array.from(this.activeSounds.values()).filter(e=>"ambient"!==e.role).length<this.activityLevel&&e.events.length>0&&Math.random()<.5){const t=e.events[Math.floor(Math.random()*e.events.length)];await this.playSound(t,"event",.12+.08*Math.random())}}async playSound(e,t,n){if(!this.activeSounds.has(e.id))try{const s=e.url||`https://sound-effects-media.bbcrewind.co.uk/mp3/${e.id}.mp3`,i=new Audio;i.crossOrigin="anonymous",i.src=s,i.preload="auto";const a=this.audioContext.createMediaElementSource(i),r=this.audioContext.createGain();r.gain.value=n,a.connect(r),r.connect(this.masterGainNode),this.activeSounds.set(e.id,{sound:e,audio:i,source:a,gainNode:r,role:t,volume:n}),this.debug&&console.log("[Zengine] Sound started playing",{soundId:e.id,description:e.description,role:t,volume:n,category:e.category,duration:e.duration,activeCount:this.activeSounds.size}),i.addEventListener("ended",()=>{this.removeSound(e.id),"ambient"===t&&this.isRunning&&setTimeout(()=>this.playSound(e,t,n),1e3)}),i.addEventListener("error",()=>this.removeSound(e.id)),await i.play()}catch(t){console.error("[Zengine] Sound error:",e.id,t)}}removeSound(e){const t=this.activeSounds.get(e);if(t){try{t.audio.pause(),t.gainNode.disconnect(),t.source.disconnect()}catch(e){}this.debug&&console.log("[Zengine] Sound removed",{soundId:e,description:t.sound.description,activeCount:this.activeSounds.size-1}),this.activeSounds.delete(e)}}stop(){this.musicEngine.isPlaying&&this.musicEngine.stop(),this.isRunning=!1,this.eventLoopInterval&&(clearInterval(this.eventLoopInterval),this.eventLoopInterval=null),this.debug&&console.log("[Zengine] Engine stopping",{activeSounds:this.activeSounds.size}),this.activeSounds.forEach((e,t)=>{try{e.audio.pause(),e.audio.currentTime=0}catch(e){}const n=this.audioContext.currentTime;e.gainNode.gain.cancelScheduledValues(n),e.gainNode.gain.setValueAtTime(e.gainNode.gain.value,n),e.gainNode.gain.linearRampToValueAtTime(0,n+.5),setTimeout(()=>this.removeSound(t),500)}),this.audioContext&&"running"===this.audioContext.state&&this.audioContext.suspend(),this.debug&&console.log("[Zengine] Engine stopped")}setMasterVolume(e){if(this.masterGainNode){const t=this.masterGainNode.gain.value;this.masterGainNode.gain.value=e,this.debug&&console.log("[Zengine] Master volume changed",{from:t,to:e,musicEngineVolume:.25*e})}this.musicEngine.setMasterVolume(.25*e)}}},870(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.conditions=void 0;var s=n(372);t.conditions={true:{title:"True",check:(e,t,n)=>!0},false:{title:"False",check:(e,t,n)=>!1},"account-admin":{title:"You are an admin",check:(e,t,n)=>!0===e.groups.sysop},"item-selected":{title:"An item is selected",check:(e,t,n)=>null!==t},"edit-selected":{title:"An edit is selected",check:(e,t,n)=>"edit"===s.Queue.groups[null==t?void 0:t.type]},"logevent-selected":{title:"A logentry is selected",check:(e,t,n)=>"logevent"===s.Queue.groups[null==t?void 0:t.type]},revertable:{title:"Current item is revertable",check:(e,t,n)=>{let i=null==t?void 0:t.type;return"abuselog"===i&&null!=t&&t.revid&&(i="edit"),"edit"===s.Queue.groups[i]}},pending:{title:"Current item is pending review",check:(e,t,n)=>!!e.queue.pending.has(null==t?void 0:t.id)},"user-registered":{title:"Selected user is registered",check:(e,t,n)=>{var s;return!1===(null==t||null===(s=t.user)||void 0===s?void 0:s.anon)}},"user-ip":{title:"Selected user is an IP address",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.ip)}},"user-temp":{title:"Selected user is a temporary account",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.temp)}},"user-empty-talk":{title:"Selected user's talk page is empty",check:(e,t,n)=>{var s;return void 0===(null==t||null===(s=t.user)||void 0===s?void 0:s.talk)}},"user-blocked":{title:"Selected user is blocked",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.blocked)}},"user-edit-count":{title:"Selected user's edit count is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"count",title:"Edit count",type:"number",default:0}],check:(e,t,n)=>{var s,i;const a=-1===(null==t||null===(s=t.user)||void 0===s?void 0:s.editcount)?1/0:(null==t||null===(i=t.user)||void 0===i?void 0:i.editcount)||0,r=Number(n.count);switch(n.condition){case"<":return a<r;case"≤":return a<=r;case"=":return a===r;case"≥":return a>=r;case">":return a>r;default:return!1}}},"user-final-warning":{title:"Selected user at final warning level",check:(e,t,n)=>{var s,i;return"4"===(null==t||null===(s=t.user)||void 0===s?void 0:s.warning)||"4im"===(null==t||null===(i=t.user)||void 0===i?void 0:i.warning)}},"user-has-warnings":{title:"Selected user has no warnings",check:(e,t,n)=>{var s;return"0"!==(null==t||null===(s=t.user)||void 0===s?void 0:s.warning)}},"edit-pending":{title:"Edit is pending",check:(e,t,n)=>e.queue.pending.has(null==t?void 0:t.id)},"edit-minor":{title:"Edit is marked as minor",check:(e,t,n)=>!0===(null==t?void 0:t.minor)},"edit-size":{title:"Edit size is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"size",title:"Size",type:"number",default:0}],check:(e,t,n)=>{const s=(null==t?void 0:t.sizediff)||0,i=Number(n.size);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"abs-edit-size":{title:"Absolute edit size is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"size",title:"Size",type:"number",min:0,default:0}],check:(e,t,n)=>{const s=Math.abs((null==t?void 0:t.sizediff)||0),i=Number(n.size);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"edit-ores-score":{title:"Edit ORES score is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"score",title:"Score",type:"number",min:0,max:1,default:0}],check:(e,t,n)=>{const s=(null==t?void 0:t.ores_score)||0,i=Number(n.score);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"user-highlighted":{title:"Selected user is highlighted",check:(e,t,n)=>{var s;return e.store.highlight.users.has(null==t||null===(s=t.user)||void 0===s?void 0:s.name)}},"user-whitelisted":{title:"Selected user is whitelisted",check:(e,t,n)=>{var s;return e.store.whitelist.users.has(null==t||null===(s=t.user)||void 0===s?void 0:s.name)}},"page-highlighted":{title:"Selected page is highlighted",check:(e,t,n)=>{var s;return e.store.highlight.pages.has(null==t||null===(s=t.page)||void 0===s?void 0:s.title)}},"page-whitelisted":{title:"Selected page is whitelisted",check:(e,t,n)=>{var s;return e.store.whitelist.pages.has(null==t||null===(s=t.page)||void 0===s?void 0:s.title)}},"page-watched":{title:"Selected page is watched",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.page)||void 0===s?void 0:s.watched)}},"tag-highlighted":{title:"Selected edit has a highlighted tag",check:(e,t,n)=>{for(const n of(null==t?void 0:t.tags)||[])if(e.store.highlight.tags.has(n))return!0;return!1}},"tag-whitelisted":{title:"Selected edit has a whitelisted tag",check:(e,t,n)=>{for(const n of t.tags||[])if(e.store.whitelist.tags.has(n))return!0;return!1}},"in-recent-queue":{title:"In recent changes queue",check:(e,t,n)=>"recent"===e.queue.current.type},"in-pending-queue":{title:"In pending changes queue",check:(e,t,n)=>"pending"===e.queue.current.type},"in-user-queue":{title:"In user creations queue",check:(e,t,n)=>"users"===e.queue.current.type},"in-watchlist-queue":{title:"In watchlist queue",check:(e,t,n)=>"watchlist"===e.queue.current.type}}},9808(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.validateShortcut=t.controls=t.buildShortcut=void 0;const n=t.controls=new Set(["!","@","#","$","%","^","&","*","(",")","1","2","3","4","5","6","7","8","9","0","q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m","-","=","[","]","\\",";","'",",",".","/","_","+","{","}","|",":",'"',"<",">","?"," ","arrowleft","arrowup","arrowdown","arrowright"]);t.buildShortcut=e=>{const t=[];["ctrl","shift","alt","meta"].forEach(n=>{e[`${n}Key`]&&t.push(n)});const s=e.key.toLowerCase();return n.has(s)&&t.push(s),t.join("+")};t.validateShortcut=e=>{const t=e.toLowerCase().split("+");if(0===t.length)return!1;const s=new Set;for(const e of t){if(s.has(e))return!1;if(s.add(e),"ctrl"!==e&&"shift"!==e&&"alt"!==e&&!n.has(e))return!1}return t.some(e=>"ctrl"!==e&&"shift"!==e&&"alt"!==e)}},985(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.events=void 0;var s=n(372),i=n(7054),a=n(955),r=n(863),o=n(5643);t.events={"next-item":{title:"Go to next item",icon:"fas fa-arrow-right",script:(e,t,n)=>(e.queue.next(),{valid:!0})},"previous-item":{title:"Go to previous item",icon:"fas fa-arrow-left",script:(e,t,n)=>(e.queue.previous(),{valid:!0})},"clear-queue":{title:"Clear queue",icon:"fas fa-trash-can",valid:(e,t,n)=>"pending"===e.queue.current.type?{valid:!1,reason:"Pending edits queue cannot be cleared."}:{valid:!0},script:(e,t,n)=>(e.queue.clear(e.queue.current.type),{valid:!0})},"next-queue":{title:"Go to next queue",icon:"fas fa-forward",script:(e,t,n)=>{const i=s.Queue.types.map(t=>({name:t,...e.store.settings.queue[t]}));i.sort((e,t)=>e.order-t.order);const a=i.filter(e=>e.enabled);if(0===a.length)return{valid:!1,reason:"No queues are enabled."};const r=a.findIndex(t=>t.name===e.queue.current.type);return e.queue.switch(a[(r+1)%a.length].name),{valid:!0}}},"previous-queue":{title:"Go to previous queue",icon:"fas fa-forward",script:(e,t,n)=>{const i=s.Queue.types.map(t=>({name:t,...e.store.settings.queue[t]}));i.sort((e,t)=>e.order-t.order);const a=i.filter(e=>e.enabled);if(0===a.length)return{valid:!1,reason:"No queues are enabled."};const r=a.findIndex(t=>t.name===e.queue.current.type);return e.queue.switch(a[(r-1+a.length)%a.length].name),{valid:!0}}},"accept-pending-edit":{title:"Accept pending edit",icon:"fas fa-check",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Accepting pending edit",valid:(e,t,n)=>t?e.rights.review?e.queue.pending.has(t.id)?{valid:!0}:{valid:!1,reason:"This edit is not pending review."}:{valid:!1,reason:"You do not have permission to review pending changes."}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{const s=e.queue.pending.get(t.id);if(!s)return{valid:!1,reason:"Pending edit not found."};const i=`${s.count||""} pending revision${1===s.count?"":"s"}`,a=Object.entries(s.users||{}).map(t=>[e.api.user(t[0]),t[1]]);a.sort((e,t)=>t[1]-e[1]);const r=Math.max(a.reduce((e,t)=>{const n=t[0].length;return e[0]+n<=250?[e[0]+n,e[1]+1]:e},[0,0])[1],1);let o="";const l=a.length;if(l>r){const e=a.slice(0,r).map(e=>e[0]),t=l-e.length;o=`${e.join(", ")}, and ${t} other${1===t?"":"s"}`}else o=(e=>{switch(e.length){case 0:case 1:return e[0]||"";case 2:return`${e[0]} and ${e[1]}`;default:return`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}})(a.map(e=>e[0]));return await e.api.acceptPendingEdit(t.pending.revid,e.api.summary(`Accepted ${i} by ${o}`,n.summary))},successful:(e,t,n)=>{e.store.statistics.pending_changes_reviewed.accepted++}},"reject-pending-edit":{title:"Reject pending edit",icon:"fas fa-xmark",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Rejecting pending edit",valid:(e,t,n)=>t?e.rights.review?e.queue.pending.has(t.id)?{valid:!0}:{valid:!1,reason:"This edit is not pending review."}:{valid:!1,reason:"You do not have permission to review pending changes."}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{const s=e.queue.pending.get(t.id);if(!s)return{valid:!1,reason:"Pending edit not found."};const i=`${s.count||""} pending revision${1===s.count?"":"s"}`,a=Object.entries(s.users||{}).map(t=>[e.api.user(t[0]),t[1]]);a.sort((e,t)=>t[1]-e[1]);const r=Math.max(a.reduce((e,t)=>{const n=t[0].length;return e[0]+n<=250?[e[0]+n,e[1]+1]:e},[0,0])[1],1);let o="";const l=a.length;if(l>r){const e=a.slice(0,r).map(e=>e[0]),t=l-e.length;o=`${e.join(", ")}, and ${t} other${1===t?"":"s"}`}else o=(e=>{switch(e.length){case 0:case 1:return e[0]||"";case 2:return`${e[0]} and ${e[1]}`;default:return`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}})(a.map(e=>e[0]));return await e.api.rejectPendingEdit(t.id,s.prior,t.page.title,e.api.summary(`Rejected ${i} by ${o} to [[Special:Diff/${s.prior}|last stable revision]]`,n.summary))},successful:(e,t,n)=>{e.store.statistics.pending_changes_reviewed.rejected++}},revert:{title:"Revert and auto warn/report",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]}],progress:"Reverting edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;if("abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i])return{valid:!1,reason:"Edit can only be reverted when an edit is selected."};return"summary"in(0,a.getWarningFromLookup)(n.warning)?{valid:!0}:{valid:!1,reason:"Selected warning template does not support reverting."}},script:async(e,t,n)=>{var r;const l=(0,a.getWarningFromLookup)(n.warning);if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Reverting yourself","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to revert their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to revert the edit on it?`)||null!==(r=t.tags)&&void 0!==r&&r.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to revert it?"))return{valid:!1,reason:"Revert cancelled by user."};const d=await(async()=>await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted edits by ${e.api.user(t.user.name)}`,l.summary)))();if(!d.valid)return d;switch(e.store.statistics.reverts_made.total++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}let c,u;const p=await(async()=>{const n=`User talk:${t.user.name}`,i=e.util.monthSectionName(),a=(await e.api.getPagesContent([n]))[n]||"",r=e.util.getPageSections(a);c=e.queue.getWarningHistory(a).map(e=>e.template);let o="new";const d=r.length;for(let e=0;e<d;e++)r[e].title===i&&(o=e+1);let p;u=e.queue.getWarningLevel(a),p="string"==typeof l.auto?l.auto:"function"==typeof l.auto?l.auto(t,u):l.auto[u];const g=l.templates.find(e=>e.name===p.toString());if(!g)return{valid:!0};c.push(g.template);let h="Message about ";"edit"===s.Queue.groups[t.type]?h+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?h+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:h+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:h+=`[[${t.page.title}]]`;let m="";m="new"===o?`{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`:`${r[o-1].heading}\n${r[o-1].content}\n\n{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`;const v=await e.api.editSection(n,o,i,m,e.api.summary(h,`${l.name} (${g.name})`));if(v.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(p)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,p),e.store.statistics.warnings_issued.total++,p){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return v})();if(!p.valid)return p;if(("4"===u||"4im"===u)&&l.reportable&&e.store.settings.auto_report.enabled&&e.store.settings.auto_report.for.has(n.warning)){if(!(await(async()=>{if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const n=c.some(e=>"uw-attempt"===e.toLowerCase());return await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – Vandalism past final warning. ${n?`See also {{subst:filter log|username=${t.user.name}}}.`:""}~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})})()).valid)return{valid:!0};e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}return{valid:!0}}},"warn-and-report":{title:"Auto warn/report",icon:"fas fa-exclamation-triangle",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]}],progress:"Warning user",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{var r;const l=(0,a.getWarningFromLookup)(n.warning);if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Warning yourself","You are about to warn yourself. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to warn them?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to warn the user about the edit on it?`)||null!==(r=t.tags)&&void 0!==r&&r.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to warn the user about it?"))return{valid:!1,reason:"Warn cancelled by user."};let d,c;const u=await(async()=>{const n=`User talk:${t.user.name}`,i=e.util.monthSectionName(),a=(await e.api.getPagesContent([n]))[n]||"",r=e.util.getPageSections(a);d=e.queue.getWarningHistory(a).map(e=>e.template);let o="new";const u=r.length;for(let e=0;e<u;e++)r[e].title===i&&(o=e+1);let p;c=e.queue.getWarningLevel(a),p="string"==typeof l.auto?l.auto:"function"==typeof l.auto?l.auto(t,c):l.auto[c];const g=l.templates.find(e=>e.name===p.toString());if(!g)return{valid:!0};d.push(g.template);let h="Message about ";"edit"===s.Queue.groups[t.type]?h+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?h+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:h+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:h+=`[[${t.page.title}]]`;let m="";m="new"===o?`{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`:`${r[o-1].heading}\n${r[o-1].content}\n\n{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`;const v=await e.api.editSection(n,o,i,m,e.api.summary(h,`${l.name} (${g.name})`));if(v.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(p)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,p),e.store.statistics.warnings_issued.total++,p){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return v})();if(!u.valid)return u;if(("4"===c||"4im"===c)&&l.reportable&&e.store.settings.auto_report.enabled&&e.store.settings.auto_report.for.has(n.warning)){if(!(await(async()=>{if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const n=d.some(e=>"uw-attempt"===e.toLowerCase());return await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – Vandalism past final warning. ${n?`See also {{subst:filter log|username=${t.user.name}}}.`:""}~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})})()).valid)return{valid:!0};e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}return{valid:!0}}},"warn-user":{title:"Warn user",icon:"fas fa-exclamation-triangle",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]},{dependencies:["warning"],id:"level",title:"Warning level",type:"choice",options:e=>["auto",...a.warningsLookup[e.warning].templates.filter(e=>void 0===e.generic).map(e=>e.name)],default:"auto"}],continuity:!0,progress:"Issuing warning to user",valid:(e,t,n)=>{var s;return t?"auto"!==n.level&&null===(null===(s=(0,a.getWarningFromLookup)(n.warning))||void 0===s?void 0:s.templates[n.level])?{valid:!1,reason:"Selected warning template does not support automatic level selection."}:{valid:!0}:{valid:!1,reason:"No item selected."}},script:async(e,t,n)=>{var i;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Warning yourself","You are about to warn yourself. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to warn them?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to warn the user about the edit on it?`)||null!==(i=t.tags)&&void 0!==i&&i.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to warn the user about it?"))return{valid:!1,reason:"Warning cancelled by user."};const r=(0,a.getWarningFromLookup)(n.warning),o=`User talk:${t.user.name}`,l=e.util.monthSectionName(),d=(await e.api.getPagesContent([o]))[o]||"",c=e.util.getPageSections(d);let u="new";const p=c.length;for(let e=0;e<p;e++)c[e].title===l&&(u=e+1);let g;g="auto"===n.level?"string"==typeof r.auto?r.auto:"function"==typeof r.auto?r.auto(t,e.queue.getWarningLevel(d)):r.auto[e.queue.getWarningLevel(d)]:n.level;const h=r.templates.find(e=>e.name===g.toString());if(!h)return"auto"!==n.level?{valid:!1,reason:"Selected warning template does not support the specified level."}:{valid:!0};let m="Message about ";"edit"===s.Queue.groups[t.type]?m+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?m+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:m+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:m+=`[[${t.page.title}]]`;let v="";v="new"===u?`{{subst:${h.template}|${t.page.title}|${h.generic||""}}} ~~~~`:`${c[u-1].heading}\n${c[u-1].content}\n\n{{subst:${h.template}|${t.page.title}|${h.generic||""}}} ~~~~`;const f=await e.api.editSection(o,u,l,v,e.api.summary(m,`${r.name} (${h.name})`));if(f.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(g)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,g),e.store.statistics.warnings_issued.total++,g){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return f}},"rollback-edit":{title:"Rollback edit",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Rolling back edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be rolled back when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Rollbacking own edit","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to rollback their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to rollback the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to rollback it?"))return{valid:!1,reason:"Rollback cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted edits${i}`,n.summary))},successful:(e,t,n)=>{switch(e.store.statistics.reverts_made.total++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}}},"rollback-goodfaith-edit":{title:"Rollback good faith edit",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Rolling back good faith edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be rolled back when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Rollbacking own edit","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to rollback their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to rollback the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to rollback it?"))return{valid:!1,reason:"Rollback cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted [[Wp:AGF|Good faith]] edits${i}`,n.summary))},successful:(e,t,n)=>{switch(e.store.statistics.reverts_made.total++,e.store.statistics.reverts_made.good_faith++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}}},"undo-edit":{title:"Undo edit",icon:"fas fa-undo",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Undoing edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be undone when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Undoing own edit","You are about to undo your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to undo their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to undo the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to undo it?"))return{valid:!1,reason:"Undo cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.undoEdit(t.page.title,t.id,e.api.summary(`Undid revision ${e.api.revision(t.id)}${i}`,n.summary))}},"restore-edit":{title:"Restore edit",icon:"fas fa-redo",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Restoring edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be restored when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>await e.api.restoreEdit(t.page.title,t.id,e.api.summary(`Restored revision ${e.api.revision(t.id)} by ${e.api.user(t.user.name)}`,n.summary))},"send-message-to-user-talk":{title:"Send message to user talk page",icon:"fas fa-comment",parameters:(e,t)=>[{id:"heading",title:"Section heading",type:"text"},{id:"message",title:"Message (sign with ~~~~)",type:"text"}],progress:"Sending message to user talk page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>await e.api.editSection(`User talk:${t.user.name}`,"new",n.heading,n.message,e.api.summary(`Message from ${e.api.username}: ${n.heading}`))},"send-message-to-page-talk":{title:"Send message to page talk page",icon:"fas fa-comment",parameters:(e,t)=>[{id:"heading",title:"Section heading",type:"text"},{id:"message",title:"Message (sign with ~~~~)",type:"text"}],progress:"Sending message to page talk page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{const s=t.page.title.split(":");let i="Talk";s.length>1&&(i=s[0].toLowerCase().includes("talk")?s[0]:`${s[0]} talk`);const a=`${i}:${1===s.length?s[0]:s.slice(1).join(":")}`;return await e.api.editSection(a,"new",n.heading,n.message,e.api.summary(`Message from ${e.api.username}: ${n.heading}`))}},"report-user-to-aiv":{title:"Report user to AIV",icon:"fas fa-flag",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Vandalism past final warning","Vandalism-only account","Vandalism after recent release of block","Spambot or compromised account","Long-term abuse"],default:"Vandalism past final warning"},{id:"summary",title:"Summary (optional)",type:"text"}],continuity:!0,progress:"Reporting user to AIV",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>t.user.name===e.api.username?{valid:!1,reason:"You cannot report yourself, silly!"}:(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to report them?`)?{valid:!1,reason:"User report cancelled by user."}:await e.api.areUsersBlocked([t.user.name])[t.user.name]?{valid:!1,reason:"User cannot be reported because they are blocked."}:await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – ${n.reason}${n.summary?`: ${n.summary}`:"."} ~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})),successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}},"report-user-to-uaa":{title:"Report user to UAA",icon:"fas fa-user-slash",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Disruptive username","Offensive username","Promotional username","Misleading username"],default:"Disruptive username"},{id:"summary",title:"Summary (optional)",type:"text"}],continuity:!0,progress:"Reporting user to UAA",valid:(e,t,n)=>t?t.user.anon?{valid:!1,reason:"User cannot be reported because they are anonymous."}:{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot report yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to report them?`))return{valid:!1,reason:"User report cancelled by user."};if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const s="Offensive username"===n.reason?"offensive username":e.api.user(t.user.name);return await e.api.append(i.WikiShield.config.pages.UAA,null,(0,o.fullTrim)(`\n * {{user-uaa|${t.user.name}}} – ${n.reason}${n.summary?`: ${n.summary}`:"."} ~~~~\n `),e.api.summary(`Reporting ${s}`),n=>{var s;return{valid:!(null!==(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))&&void 0!==s&&s.content.includes(`{{user-uaa|${t.user.name}}`)),reason:"User has already been reported to UAA."}})},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.UAA++}},"request-page-protection":{title:"Request page protection",icon:"fas fa-shield-alt",parameters:(e,t)=>[{id:"level",title:"Protection level",type:"choice",options:[...e.api.hasPendingChanges?["Pending changes protection"]:[],"Semi-protection","Extended-confirmed protection","Full protection","Move protection","Template protection"],default:"Semi-protection"},{id:"reason",title:"Reason",type:"choice",options:["Generic","Persistent vandalism","Disruptive editing","Edit warring","BLP violations","Sockpuppetry","Arbitration enforcement"],default:"Generic"},{id:"duration",title:"Duration",type:"choice",options:["Temporary","Indefinite"],default:"Temporary"},{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Requesting page protection",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Page protection can only be requested for edits."}:{valid:!0}},script:async(e,t,n)=>{if(await e.gui.settings.waitForClose(),e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to request protection for it?`))return{valid:!1,reason:"Page protection request cancelled by user."};const s="Generic"===n.reason?n.summary:`${n.reason} – ${n.summary}`;return await e.api.append(i.WikiShield.config.pages.RFPP,null,`\n${(0,o.fullTrim)(`\n === [[${t.page.title}]] ===\n * {{pagelinks|${t.page.title}}}\n '''${n.duration} ${n.level.toLowerCase()}'''${s?`: ${s}`:""} ~~~~\n `)}`,e.api.summary(`Requesting ${n.level} protection for [[${t.page.title}]]`),n=>({valid:!e.util.getPageSections(n).some(e=>e.title===`[[${t.page.title}]]`),reason:"Page protection has already been requested for this page."}))},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.RFPP++}},"request-global-block":{title:"Request global block",icon:"fas fa-ban",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Generic","Long-term abuse","Cross-wiki abuse","Spam / spambot","Compromised account"],default:"Generic"},{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Requesting global block",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{var s;if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot request a global block for yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to request a global block for them?`))return{valid:!1,reason:"Global block request cancelled by user."};if(await e.api.isUserGloballyLocked(t.user.name))return{valid:!1,reason:"User is globally locked."};const a="Generic"===n.reason?n.summary:`${n.reason}. ${n.summary}`,r=(await e.api.getPagesContent([i.WikiShield.config.pages.SRG],!0,"meta.wikimedia.org"))[i.WikiShield.config.pages.SRG]||"",l=e.util.getPageSections(r);return await e.api.append(i.WikiShield.config.pages.SRG,Number(null===(s=Object.entries(l).find(([,e])=>2===e.level&&"Requests for global (un)block"===e.title))||void 0===s?void 0:s[0])+1||void 0,`\n${(0,o.fullTrim)(`\n === Global block for ${t.user.name} ===\n {{Status}} \x3c!-- Do not remove this template --\x3e\n * {{Luxotool|${t.user.name}}}\n ${a?`${a} `:""} <small>([[:en:WP:WikiShield|WikiShield]])</small> ~~~~\n `)}`,e.api.summary(`Requesting global block for ${e.api.user(t.user.name)}`),n=>{let s=!1,i=[];for(const t of e.util.getPageSections(n))if(2===t.level){if("Requests for global (un)block"===t.title)s=!0;else if(s)break}else s&&3===t.level&&i.push(t);return i=i.filter(e=>!e.content.match(/^{{Status\|not done}}/i)),{valid:!i.some(n=>{const s=n.content;return!!s.match(new RegExp(`{{Luxotool\\|(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}}}`,"i"))||!!s.match(new RegExp(`{{MultiLock\\|(?:[^|}]*\\|)*(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(?:\\|hidename=1)?(?:\\||})`,"i"))}),reason:"User has already been requested for global block."}},!1,"meta.wikimedia.org")},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.global_block++}},"request-global-lock":{title:"Request global lock",icon:"fas fa-lock",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Generic","Long-term abuse","Cross-wiki abuse","Abusive-username","Spam / spambot","Compromised account"],default:"Generic"},{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Requesting global lock",valid:(e,t,n)=>t?t.user.anon?{valid:!1,reason:"Global lock cannot be requested for anonymous users."}:{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{var s;if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot request a global lock for yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to request a global lock for them?`))return{valid:!1,reason:"Global lock request cancelled by user."};if(await e.api.isUserGloballyLocked(t.user.name))return{valid:!1,reason:"User is already globally locked."};const a="Generic"===n.reason?n.summary:`${n.reason}. ${n.summary}`,r="Yes"===n.hide_username?"":` for ${e.api.centralAuthUser(t.user.name)}`,l=(await e.api.getPagesContent([i.WikiShield.config.pages.SRG],!0,"meta.wikimedia.org"))[i.WikiShield.config.pages.SRG]||"",d=e.util.getPageSections(l);return await e.api.append(i.WikiShield.config.pages.SRG,Number(null===(s=Object.entries(d).find(([,e])=>2===e.level&&"Requests for global (un)lock and (un)hiding"===e.title))||void 0===s?void 0:s[0])+1||void 0,`\n${(0,o.fullTrim)(`\n === Global lock${r} ===\n {{Status}} \x3c!-- Do not remove this template --\x3e\n * {{LockHide|${t.user.name}${"Yes"===n.hide_username?"|hidename=1":""}}}\n ${a?`${a} `:""} <small>([[:en:WP:WikiShield|WikiShield]])</small> ~~~~\n `)}`,e.api.summary(`Requesting global lock${r}`),n=>{let s=!1,i=[];for(const t of e.util.getPageSections(n))if(2===t.level){if("Requests for global (un)lock and (un)hiding"===t.title)s=!0;else if(s)break}else s&&3===t.level&&i.push(t);return i=i.filter(e=>!e.content.match(/^{{Status\|not done}}/i)),{valid:!i.some(n=>{const s=n.content;return!!s.match(new RegExp(`{{LockHide\\|(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(\\|hidename=1)?}}`,"i"))||!!s.match(new RegExp(`{{MultiLock\\|(?:[^|}]*\\|)*(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(?:\\|hidename=1)?(?:\\||})`,"i"))}),reason:"User has already been requested for global lock."}},!1,"meta.wikimedia.org")},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.global_lock++}},"thank-user":{title:"Thank user",icon:"fas fa-handshake",progress:"Thanking user",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"User can only be thanked when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{const s=e.api.summary(`Thank you for [[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`),i=`User talk:${t.user.name}`;if(t.user.temp){const n=await e.api.thankRevision(t.id);return(n.valid||e.store.settings.talk_page_thanks_for_temporary_users.enabled)&&void 0===(await e.api.pagesExist(i))[i]&&await e.api.editSection(i,"new","Thank you!","{{subst:Thanks-autosign}}",s),n}return t.user.ip?await e.api.editSection(i,"new","Thank you!","{{subst:Thanks-autosign}}",s):await e.api.thankRevision(t.id)},successful:(e,t,n)=>{e.store.statistics.edits_reviewed.thanked++}},"welcome-user":{title:"Welcome user",icon:"fas fa-paper-plane",parameters:(e,t)=>[{id:"template",title:"Template",type:"choice",options:Object.keys(r.welcomes),default:Object.keys(r.welcomes)[0]}],progress:"Welcoming user",valid:(e,t,n)=>{var s;return t?void 0!==(null===(s=t.user)||void 0===s?void 0:s.talk)?{valid:!1,reason:"User cannot be welcomed because their talk page is not empty."}:{valid:!0}:{valid:!1,reason:"No item selected."}},script:async(e,t,n)=>await(async()=>{const s=`User talk:${t.user.name}`;if(void 0!==(await e.api.pagesExist([s]))[s])return{valid:!1,reason:"User cannot be welcomed because their talk page is not empty."};let i=r.welcomes[n.template];if(!i)return{valid:!1,reason:"Selected welcome template does not exist."};const a=new Set([i]);for(;"function"==typeof(null===(o=i)||void 0===o?void 0:o.template);){var o,l;if(i=r.welcomes[i.template(e,t)],a.has(i))return null!==(l=void e.gui.dialog.toast("REPORT TO DEVELOPER","Uh oh! Something has gone <i>cat</i>astrophically wrong. Please report this to a developer, and include the error code below:<br><br><code>WELCOME_TEMPLATE_LOOP</code>","dev",-1))&&void 0!==l?l:{valid:!1};if(!i)return{valid:!1,reason:"Selected welcome template does not exist."};a.add(i)}const d=`{{subst:${i.template}}}${i.sign?" ~~~~":""}`;return await e.api.append(s,null,d,e.api.summary("Welcome to Wikipedia!"))})(),successful:(e,t,n)=>{e.store.statistics.users_welcomed.total++,e.queue.talks.set(t.user.name,!0),e.gui.renderQueue()}},"watch-page":{title:"Watch page",icon:"fas fa-eye",progress:"Watching page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>await e.api.watchPage(t.page.title,e.util.utcString(e.util.expiryToDate(e.store.settings.expiry.watchlist))),successful:(e,t,n)=>{e.store.statistics.watchlist.watched++,e.queue.watchlist.set(t.page.title,!0)}},"unwatch-page":{title:"Unwatch page",icon:"fas fa-eye-slash",progress:"Unwatching page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>await e.api.unwatchPage(t.page.title),successful:(e,t,n)=>{e.store.statistics.watchlist.unwatched++,e.queue.watchlist.set(t.page.title,!1)}},"whitelist-user":{title:"Add user to whitelist",icon:"fas fa-user-check",progress:"Adding user to whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.users.set(t.user.name,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.whitelist.users).valueOf()]),e.store.statistics.items_whitelisted.total++,e.store.statistics.items_whitelisted.users++,e.gui.renderQueue(),{valid:!0})},"unwhitelist-user":{title:"Remove user from whitelist",icon:"fas fa-user-minus",progress:"Removing user from whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.users.delete(t.user.name),e.gui.renderQueue(),{valid:!0})},"whitelist-page":{title:"Add page to whitelist",icon:"fas fa-check",progress:"Adding page to whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.pages.set(t.page.title,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.whitelist.pages).valueOf()]),e.store.statistics.items_whitelisted.total++,e.store.statistics.items_whitelisted.pages++,e.gui.renderQueue(),{valid:!0})},"unwhitelist-page":{title:"Remove page from whitelist",icon:"fas fa-minus",progress:"Removing page from whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.pages.delete(t.page.title),e.gui.renderQueue(),{valid:!0})},"highlight-user":{title:"Add user to highlighted users",icon:"fas fa-star",progress:"Adding user to highlighted users",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.users.set(t.user.name,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.highlight.users).valueOf()]),e.store.statistics.items_highlighted.total++,e.store.statistics.items_highlighted.users++,e.gui.renderQueue(),{valid:!0})},"unhighlight-user":{title:"Remove user from highlighted users",icon:"fas fa-user-minus",progress:"Removing user from highlighted users",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.users.delete(t.user.name),e.gui.renderQueue(),{valid:!0})},"highlight-page":{title:"Add page to highlighted pages",icon:"fas fa-star",progress:"Adding page to highlighted pages",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.pages.set(t.page.title,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.highlight.pages).valueOf()]),e.store.statistics.items_highlighted.total++,e.store.statistics.items_highlighted.pages++,e.gui.renderQueue(),{valid:!0})},"unhighlight-page":{title:"Remove page from highlighted pages",icon:"fas fa-minus",progress:"Removing page from highlighted pages",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.pages.delete(t.page.title),e.gui.renderQueue(),{valid:!0})},"refresh-user-contributions":{title:"Refresh user contributions",icon:"fas fa-rotate",progress:"Refreshing user contributions",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{try{var s;document.querySelector("#refresh-page-history").classList.add("refreshing");const n=(await e.api.parseUsers([t.user.name]))[0].user;return e.queue.talks.set(t.user.name,n.talk),e.queue.contributions.set(t.user.name,n.contributions),e.queue.blocked.set(t.user.name,n.blocked),e.queue.blocks.set(t.user.name,n.blocks),t.user.edits=Math.max(n.edits,(null===(s=n.contributions)||void 0===s?void 0:s.length)||0),t.user.warning=e.queue.getWarningLevel(n.talk||""),t.user.warnings=e.queue.getWarningHistory(n.talk||""),delete t.user.cached_contributions,e.gui.renderQueue(),e.queue.current.item===t&&e.gui.newCurrentItem(t),{valid:!0}}catch(e){return console.error(e),{valid:!1,reason:"An error occurred while fetching user contributions."}}}},"refresh-page-history":{title:"Refresh page history",icon:"fas fa-rotate",progress:"Refreshing page history",valid:(e,t,n)=>t?"users"===t.type?{valid:!1,reason:"Page history cannot be refreshed for user creations."}:{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{try{document.querySelector("#refresh-page-history").classList.add("refreshing");const[n,s]=await Promise.all([e.api.getHistory(t.page.title),e.api.getPagesDetails(t.page.title)]),i=s[t.page.title];return e.queue.histories.set(t.page.title,n),t.page.metadata=i.metadata,t.page.categories=i.categories,t.page.protection=i.protection,delete t.page.cached_history,e.gui.renderQueue(),e.queue.current.item===t&&e.gui.newCurrentItem(t),{valid:!0}}catch(e){return console.error(e),{valid:!1,reason:"An error occurred while fetching page history."}}}},"open-user-page":{title:"Open user page",icon:"fas fa-circle-user",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`User:${t.user.name}`)),{valid:!0})},"open-user-talk":{title:"Open user talk page",icon:"fas fa-comment",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`User talk:${t.user.name}`)),{valid:!0})},"open-user-contributions":{title:"Open user contributions",icon:"fas fa-list",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`Special:Contributions/${t.user.name}`)),{valid:!0})},"open-user-filter-log":{title:"Open user filter log",icon:"fas fa-filter",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`?title=Special:AbuseLog&wpSearchUser=${encodeURIComponent(t.user.name)}`,!0)),{valid:!0})},"open-page":{title:"Open page",icon:"fas fa-file",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(t.page.title)),{valid:!0})},"open-page-talk":{title:"Open page talk",icon:"fas fa-comments",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=t.page.title.split(":");let i="Talk";s.length>1&&(i=s[0].toLowerCase().includes("talk")?s[0]:`${s[0]} talk`);const a=e.page(`${i}:${1===s.length?s[0]:s.slice(1).join(":")}`);return e.open(a),{valid:!0}}},"open-page-history":{title:"Open page history",icon:"fas fa-clock-rotate-left",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`Special:PageHistory/${t.page.title}`)),{valid:!0})},"open-revision":{title:"Open revision",icon:"fas fa-file-lines",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Revision can only be opened for edits."}:{valid:!0}},script:(e,t,n)=>(e.open(e.page(`Special:Permalink/${t.id}`)),{valid:!0})},"open-diff":{title:"Open diff",icon:"fas fa-code-compare",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Diff can only be opened for edits."}:{valid:!0}},script:(e,t,n)=>(e.open(e.page(`Special:Diff/${t.id}`)),{valid:!0})},"copy-link":{title:"Copy link",icon:"fas fa-link",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{if("edit"===t.group)navigator.clipboard.writeText(e.page(`?diff=${t.id}`,!0));else if("logevent"===t.group)navigator.clipboard.writeText(e.page(`?title=Special:Log&logid=${t.id}`,!0));else{if("abuselog"!==t.group)return e.gui.dialog.toast("Cannot copy link","Please report this issue to a developer, including the error code below:<br><br><code>UNKNOWN_ITEM_GROUP_FOR_LINK_COPY</code>","error",3e3),{valid:!1};t.revid?navigator.clipboard.writeText(e.page(`?diff=${t.revid}`,!0)):navigator.clipboard.writeText(e.page(`?title=Special:AbuseLog/${t.id}`,!0))}return e.gui.dialog.toast("Link copied","The link has been copied to your clipboard.","success",3e3),{valid:!0}}},"open-revert-menu":{title:"Open revert menu",icon:"fas fa-undo",valid:(e,t,n)=>{if(!e.queue.current.item)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Revert menu is only available for edits."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector('[data-menu="revert"]'),i=document.querySelector("#revert-menu");if(i.innerHTML="",e.gui.createWarnMenu("reverts",i,t),s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-warn-menu":{title:"Open warn menu",icon:"fas fa-exclamation-triangle",valid:(e,t,n)=>e.queue.current.item?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="warn"]'),i=document.querySelector("#warn-menu");if(i.innerHTML="",e.gui.createWarnMenu("warnings",i,t),s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-user-menu":{title:"Open user menu",icon:"fas fa-flag",valid:(e,t,n)=>e.queue.current.item?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="user"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-page-menu":{title:"Open page menu",icon:"fas fa-flag",valid:(e,t,n)=>e.queue.current.item?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="page"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-edit-menu":{title:"Open edit menu",icon:"fas fa-flag",valid:(e,t,n)=>{if(!e.queue.current.item)return{valid:!1,reason:"No item selected."};let i=e.queue.current.item.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit menu is only available for edits."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector('[data-menu="edit"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"switch-to-recent-queue":{title:"Switch to recent changes queue",icon:"fas fa-stopwatch",valid:(e,t,n)=>e.store.settings.queue.recent.enabled?{valid:!0}:{valid:!1,reason:"Recent changes queue is not enabled."},script:(e,t,n)=>(e.queue.switch("recent"),{valid:!0})},"switch-to-pending-queue":{title:"Switch to pending changes queue",icon:"fas fa-flag",valid:(e,t,n)=>e.store.settings.queue.pending.enabled?e.rights.review?e.api.hasPendingChanges?{valid:!0}:{valid:!1,reason:"The pending changes extension is not enabled on this wiki."}:{valid:!1,reason:"You do not have permission to review pending changes."}:{valid:!1,reason:"Pending changes queue is not enabled."},script:(e,t,n)=>(e.queue.switch("pending"),{valid:!0})},"switch-to-watchlist-queue":{title:"Switch to watchlist queue",icon:"fas fa-book-bookmark",valid:(e,t,n)=>e.store.settings.queue.watchlist.enabled?{valid:!0}:{valid:!1,reason:"Watchlist queue is not enabled."},script:(e,t,n)=>(e.queue.switch("watchlist"),{valid:!0})},"switch-to-users-queue":{title:"Switch to user creation logs queue",icon:"fas fa-user-plus",valid:(e,t,n)=>e.store.settings.queue.users.enabled?{valid:!0}:{valid:!1,reason:"User creation logs queue is not enabled."},script:(e,t,n)=>(e.queue.switch("users"),{valid:!0})},"switch-to-abuselog-queue":{title:"Switch to abuse log queue",icon:"fas fa-filter-circle-xmark",valid:(e,t,n)=>e.store.settings.queue.abuselog.enabled?{valid:!0}:{valid:!1,reason:"Abuse log queue is not enabled."},script:(e,t,n)=>(e.queue.switch("abuselog"),{valid:!0})},"toggle-zen-mode":{title:"Toggle zen mode",icon:"fas fa-spa",script:(e,t,n)=>{var s;return e.store.settings.zen_mode.enabled=!e.store.settings.zen_mode.enabled,null===(s=document.querySelector("#zen-mode-enable"))||void 0===s||s.classList.toggle("active",e.store.settings.zen_mode.enabled),e.gui.updateZenMode(),{valid:!0}}},"toggle-consecutive-edits":{title:"Toggle consecutive edits",icon:"fas fa-users",valid:(e,t,n)=>{if(!e.queue.current.item)return{valid:!1,reason:"No item selected."};const s=e.queue.current.type;return"recent"!==s&&"watchlist"!==s?{valid:!1,reason:"Consecutive edits can only be viewed in the recent changes or watchlist queues."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector("#consecutive-edits-tab");return s.classList.contains("hidden")||(s.classList.contains("selected")?document.querySelector("#latest-edits-tab").click():s.click()),{valid:!0}}}}},8921(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.EventManager=void 0;var s=n(985),i=n(870),a=n(5564);t.EventManager=class{constructor(e){this.ws=e,this.events=s.events,this.conditions=i.conditions}button(e,t){const n=this.ws;e.addEventListener("click",e=>(e=>{n.gui.selectedMenu=null;const s=n.queue.current.item,i={};for(const o of(null===(a=(r=n.gui.events.events[t]).parameters)||void 0===a?void 0:a.call(r,n,s))||[]){var a,r;"external"===o.id&&(i[o.id]=(null==e?void 0:e.altKey)||!1)}n.execute({actions:[{name:t,params:i}]})})(e))}submenu(e,t){var n,s;const i=this.events[t];e.dataset.eventName=t;const r=this.ws.queue.current,o=`${r.type}:${null===(n=r.item)||void 0===n?void 0:n.id}`,l={};if(e.dataset.eventId===o)for(const t of(null===(d=i.parameters)||void 0===d?void 0:d.call(i,this.ws,this.ws.queue.current.item))||[]){var d;const n=e.querySelector(`[data-paramid="${t.id}"]`);l[t.id]="checkbox"===n.type?n.checked:n.value}else e.dataset.eventId=o;e.innerHTML="";const c=document.createElement("div");c.classList.add("bottom-subcontent-title"),c.textContent=i.title,e.appendChild(c);const u=new Map,p={},g=(0,a.sortDependencies)((null===(s=i.parameters)||void 0===s?void 0:s.call(i,this.ws,this.ws.queue.current.item))||[]);for(const t of g){const n=document.createElement("div");n.classList.add("bottom-subcontent-input-title"),n.textContent=t.title,e.appendChild(n);const s={};for(const e of null!==(h=t.dependencies)&&void 0!==h?h:[]){var h;s[e]=p[e]}const i="function"==typeof t.default?t.default(s):t.default;let a=null;switch(t.type){case"choice":{const n=document.createElement("select");n.dataset.paramid=t.id,e.appendChild(n);const r="function"==typeof t.options?t.options(s):t.options;for(const e of null!=r?r:[]){const t=document.createElement("option");t.value=e,t.textContent=e,n.appendChild(t)}void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),a=()=>{const e={};for(const n of null!==(s=t.dependencies)&&void 0!==s?s:[]){var s;e[n]=p[n]}const i=n.value,a="function"==typeof t.options?t.options(e):t.options;n.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,n.appendChild(t)}if(a.includes(i))n.value=i;else{const s="function"==typeof t.default?t.default(e):t.default;n.value=s,p[t.id]=s}},n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}break;case"text":{const n=document.createElement("input");n.type="text",n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}break;case"boolean":{const n=document.createElement("input");n.type="checkbox",n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.checked=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.checked=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.checked;for(const e of u.get(t.id)||[])e()})}break;case"duration":{const n=document.createElement("duration-input");n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}}if("function"==typeof a)for(const e of null!==(m=t.dependencies)&&void 0!==m?m:[]){var m;u.has(e)||u.set(e,[]),u.get(e).push(a)}}const v=document.createElement("button");v.classList.add("bottom-subcontent-button"),v.textContent="Submit",e.appendChild(v),v.addEventListener("click",()=>{const n={};for(const t of g){const s=e.querySelector(`[data-paramid="${t.id}"]`);n[t.id]=s.value}this.ws.execute({actions:[{name:t,params:n}]}),this.ws.gui.closeMenus()})}}},372(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Queue=void 0;var s=n(2852),i=n(2595),a=n(6400);function r(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return e.get(d(e,t))}function d(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var c=new WeakMap,u=new WeakSet;class p{static areSameGroup(e,t){return this.groups[e]===this.groups[t]}constructor(e){var t,n;r(t=this,n=u),n.add(t),function(e,t,n){r(e,t),t.set(e,n)}(this,c,Promise.resolve()),this.ws=e,this.queues=Object.fromEntries(["void",...p.types].map(t=>[t,{type:t,item:null,previous:null,queue:[],hold:[],repeats:{},history:new i.Stack(100),memory:new s.Memory({size:1e3}),last:{timestamp:e.util.utcString(new Date),id:0}}])),this.cache={simple:new s.Memory({size:1e3}),full:new s.Memory({size:250})},this.current=this.queues[p.types[0]],this.pending=new Map,this.watchlist=new s.Memory({size:1e3}),this.talks=new s.Memory({size:500}),this.warnings=new s.Memory({size:1e3,timeout:864e5}),this.noWelcome=new s.Memory({timeout:36e5}),this.histories=new s.Memory({size:1e3}),this.contributions=new s.Memory({size:1e3}),this.blocks=new s.Memory({size:1e3}),this.blocked=new s.Memory({size:1e4}),this.playedSound={mention:new s.Memory({timeout:6e4})},this.bypass=new s.Memory({timeout:36e5,size:1e4}),this.backoff=2e3}switch(e){var t;this.current.type!==e&&("pending"===this.current.type&&(this.queues.pending.queue=this.queues.pending.queue.filter(e=>this.pending.has(e.id))),document.querySelector("#clear-queue").classList.toggle("hidden","pending"===e),this.current=this.queues[e],this.current.queue.some(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)})||(this.current.item=this.current.queue[0]||null),this.ws.gui.renderQueue(),this.ws.gui.newCurrentItem(this.current.item),document.querySelectorAll("#queue-tabs > .queue-tab.selected").forEach(e=>e.classList.remove("selected")),null===(t=document.querySelector(`#queue-tab-${e}`))||void 0===t||t.classList.add("selected"))}async fetch(){try{const i=this.ws.store.settings.queue;if(i.pending.enabled&&this.ws.rights.review){const e=(await this.ws.api.feeds(null,{ns:"*",full:!0})).pending;this.pending.clear(),Object.values(e).forEach(e=>this.pending.set(e.revid,e)),await this.outdated("pending")}const a=await this.ws.api.feeds(i.recent.enabled?{ns:this.ws.store.settings.namespaces.join("|"),since:this.queues.recent.last.timestamp}:null,i.pending.enabled&&this.ws.rights.review?{ns:"*",full:!1}:null,i.users.enabled?{ns:"*",since:this.queues.users.last.timestamp}:null,i.watchlist.enabled?{ns:"*",since:this.queues.watchlist.last.timestamp}:null,i.abuselog.enabled?{ns:this.ws.store.settings.namespaces.join("|"),since:this.queues.abuselog.last.timestamp}:null),r=this.ws.store.whitelist;for(const i of p.types){var e;const o=this.queues[i].last.id;let l=null!==(e=a[i])&&void 0!==e?e:[];const d=l.reduce((e,t)=>Math.max(e,t.timestamp),0);switch(d&&(this.queues[i].last.timestamp=this.ws.util.utcString(new Date(d))),p.groups[i]){case"edit":{const e=e=>e.revid>o;l="recent"===i?l.filter(t=>e(t)&&!r.pages.has(t.title)):l.filter(e)}break;case"abuselog":l=l.filter(e=>e.id>o);break;case"logevent":l=l.filter(e=>e.logid>o)}l=l.concat(this.queues[i].hold),l.length>25?this.queues[i].hold=l.splice(25).reverse():this.queues[i].hold=[];let c=!1;switch(i){case"recent":{const e=new Set;for(const n of l)for(const s of this.queues[i].queue){var t;e.has(s)||s.id!==(null===(t=this.current.item)||void 0===t?void 0:t.id)&&n.title===s.page.title&&s.id<n.revid&&e.add(s)}for(const t of e){const e=this.queues[i].queue.indexOf(t);e>-1&&(this.queues[i].queue.splice(e,1),this.ws.gui.removeQueueItem(i,t.id))}c=e.size>0}break;case"pending":for(const e of this.queues[i].queue){var n;if((null===(n=this.current.item)||void 0===n?void 0:n.id)!==e.id&&!this.pending.has(e.id)){const t=this.queues[i].queue.indexOf(e);t>-1&&(this.queues[i].queue.splice(t,1),this.ws.gui.removeQueueItem(i,e.id),c=!0)}}break;case"users":l=l.filter(e=>!e.temp);break;case"watchlist":{const e=new Set;for(const t of l)for(const n of this.queues[i].queue){var s;e.has(n)||n.id!==(null===(s=this.current.item)||void 0===s?void 0:s.id)&&(t.title===n.page.title&&n.id<t.revid?e.add(n):n.page.watched||e.add(n))}if(0===l.length)for(const t of this.queues[i].queue)t.page.watched||e.add(t);for(const t of e){const e=this.queues[i].queue.indexOf(t);e>-1&&(this.queues[i].queue.splice(e,1),this.ws.gui.removeQueueItem(i,t.id))}c=e.size>0}}if(0!==l.length)switch(p.groups[i]){case"edit":{this.queues[i].last.id=l.reduce((e,t)=>Math.max(e,t.revid),0);const e=this.ws.store.highlight,t=t=>{var n;return e.users.has(t.user)||e.pages.has(t.title)||(null===(n=t.tags)||void 0===n?void 0:n.some(t=>e.tags.has(t)))};l=l.filter(e=>{var n;return!r.users.has(e.user)&&!(null!==(n=e.tags)&&void 0!==n&&n.some(e=>r.tags.has(e)))&&(!this.bypass.has(e.user)||t(e))});const n={};let[s,a]=await Promise.allSettled(["recent"===i?this.ws.api.getEditCounts(l.map(e=>e.user).filter(e=>!this.bypass.has(e))):Promise.resolve([]),this.ws.api.getORES(l.filter(e=>{var t;if(null===(t=e.oresscores)||void 0===t||!t.length)return!0;n[e.revid]=e.oresscores},this.ws.store.settings.queue.ores_bias).map(e=>e.revid))]);"rejected"===s.status&&console.error("Edit counts failed:",s.reason),s="fulfilled"===s.status?s.value:{},"rejected"===a.status&&console.error("ORES failed:",a.reason),a="fulfilled"===a.status?a.value:{};for(const[e,t]of Object.entries(await this.ws.api.extractORES(n,this.ws.store.settings.queue.ores_bias)))a[e]=t;const o=this.queues[i].repeats,d=[];if("recent"===i){const e=this.ws.store.settings.queue.min_ores,n=this.ws.store.settings.queue.max_edits;l.forEach(r=>{var l,c;if(isNaN(a[r.revid])&&(o[r.revid]||0)<3)return o[r.revid]=(o[r.revid]||0)+1,this.queues[i].hold.push(r);if(delete o[r.revid],this.ws.__DEV__&&"test2.wikipedia.org"===this.ws.server)return d.push(r);const u=null!==(l=null!==(c=s[r.user])&&void 0!==c?c:this.bypass.get(r.user))&&void 0!==l?l:0;u>n?(this.bypass.set(r.user,u),t(r)&&d.push(r)):((a[r.revid]||0)>=e||t(r))&&d.push(r)})}else l.forEach(e=>{if(isNaN(a[e.revid])&&(o[e.revid]||0)<3)return o[e.revid]=(o[e.revid]||0)+1,this.queues[i].hold.push(e);delete o[e.revid],d.push(e)});await this.add(i,d)}break;case"logevent":{let e=0;const t=new Set,n=[];l.forEach(s=>{t.has(s.logid)||(t.add(s.logid),s.logid>e&&(e=s.logid),n.push(s))}),this.queues[i].last.id=e,await this.add(i,n)}break;case"abuselog":{const e=l.filter(e=>null===e.editcount);let t={};e.length>0&&(t=await this.ws.api.getEditCounts(e.map(e=>e.user)));const n=this.ws.store.settings.queue.max_edits;let s=0;const a=[];l.forEach(e=>{var i;((null!==(i=e.editcount)&&void 0!==i?i:t[e.user])||0)>n||(e.id>s&&(s=e.id),a.push(e))}),this.queues[i].last.id=s,await this.add(i,a)}}else c&&this.ws.gui.renderQueue(this.queues[i].queue,this.current.edit,i)}await this.outdated(),this.backoff=p.refresh}catch(e){console.error(e),this.backoff=Math.min(2*this.backoff,12e4)}setTimeout(()=>this.fetch(),this.backoff)}async outdated(){{const e=[];for(const t of this.queues.pending.queue)t!==this.current.item&&(this.pending.has(t.id)||e.push(t));if(e.length>0)for(const t of e){const e=this.queues.pending.queue.indexOf(t);e>-1&&(this.queues.pending.queue.splice(e,1),this.ws.gui.removeQueueItem("pending",t.id))}}const e=new Set,t=["recent","watchlist","abuselog"];for(const n of t)this.queues[n].queue.forEach(t=>{("abuselog"!==n||t.revid)&&e.add(t.page.title)});const n=await this.ws.api.getLatestIds([...e]);for(const e of t){const t=[];for(const s of this.queues[e].queue){let i=s.id;if("abuselog"===e){if(!s.revid)continue;i=s.revid}const a=n[s.page.title];a&&a>i&&t.push([s.id,i])}if(t.length>0)for(const[n,i]of t){var s;const t="abuselog"===e?"revid":"id";if(i===(null===(s=this.queues[e].item)||void 0===s?void 0:s[t]))continue;const a=this.queues[e].queue.findIndex(e=>e[t]===i);a>-1&&(this.queues[e].queue.splice(a,1),this.ws.gui.removeQueueItem(e,n))}}this.ws.gui.renderQueue()}async add(e,t){const n={edit:"revid",logevent:"logid",abuselog:"id"}[p.groups[e]];(t=t.filter(t=>!this.queues[e].memory.has(t[n]))).forEach(t=>this.queues[e].memory.add(t[n]));const s=t.length;if(0===s)return;const i={ores:!1,mention:!1},a=await this.generate(e,t,!1);switch(p.groups[e]){case"edit":{const n=this.ws.store.settings.audio.ores_alert.threshold;for(let r=0;r<s;r++){t[r];const s=a[r];this.queues[e].queue.push(s),"recent"===e&&s.ores>=n&&(i.ores=!0),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}}break;case"logevent":for(let n=0;n<s;n++){t[n];const s=a[n];this.queues[e].queue.push(s),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}break;case"abuselog":for(let n=0;n<s;n++){t[n];const s=a[n];this.queues[e].queue.push(s),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}}this.sort(e),i.ores&&this.ws.store.settings.audio.ores_alert.enabled&&this.ws.audio.playSound(["queue","ores"]),i.mention&&this.ws.store.settings.username_highlighting.enabled&&this.ws.audio.playSound(["queue","mention"]),this.ws.gui.renderQueue(this.queues[e].queue,this.queues[e].item,e)}sort(e){var t;let n=-1;this.queues[e].item&&(n=this.queues[e].queue.findIndex(t=>t===this.queues[e].item));let s=this.queues[e].queue;n>=0&&(s=s.slice(0,n).concat(s.slice(n+1)));const i=this.ws.store.highlight,a=this.ws.store.settings.username_highlighting.enabled;switch(p.groups[e]){case"edit":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return-1;if(t.history)return 1;let n=e.ores;a&&e.mentions.has&&(n+=200),i.users.has(e.user.name)&&(n+=100),i.pages.has(e.page.title)&&(n+=75),n+=50*e.tags.filter(e=>i.tags.has(e)).length;let s=t.ores;return a&&t.mentions.has&&(s+=200),i.users.has(t.user.name)&&(s+=100),i.pages.has(t.page.title)&&(s+=75),s+=50*t.tags.filter(e=>i.tags.has(e)).length,n===s?t.id-e.id:s-n});break;case"logevent":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return 1;if(t.history)return-1;let n=100*(e.user.profanity.clamped||0);a&&e.mentions.has&&(n+=200);let s=100*(t.user.profanity.clamped||0);return a&&t.mentions.has&&(s+=200),n===s?t.id-e.id:s-n});break;case"abuselog":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return 1;if(t.history)return-1;let n=0;i.users.has(e.user.name)&&(n+=100),i.pages.has(e.page.title)&&(n+=75),a&&e.mentions.has&&(n+=200);let s=0;return i.users.has(t.user.name)&&(s+=100),i.pages.has(t.page.title)&&(s+=75),a&&t.mentions.has&&(s+=200),n===s?t.id-e.id:s-n})}const r=new Set(null!==(t=this.queues[e].item)&&void 0!==t&&t.id?[this.queues[e].item.id]:[]);s=s.filter(e=>!r.has(e.id)&&(r.add(e.id),!0)),n>=0&&s.splice(n,0,this.queues[e].item),this.queues[e].queue=[...s.slice(0,this.ws.store.settings.queue.max_size)],this.queues[e].item||(this.queues[e].item=this.queues[e].queue[0])}async generate(e,t,n,s={}){var i;if(0===t.length)return[];const r=null!==(i=null==s?void 0:s.bypass)&&void 0!==i&&i,o=this.ws,l=o.api.username,d=[];switch(p.groups[e]){case"edit":{t=(t=t.filter(e=>{const t=(e=>{if(n){if(this.cache.simple.has(e))return this.cache.simple.get(e);if(this.cache.full.has(e))return this.cache.full.get(e)}else if(this.cache.full.has(e))return this.cache.full.get(e);return null})(e.revid);var s;return!t||(e.pending&&!t.pending&&(t.pending=e.pending),null!==(s=void d.push(t))&&void 0!==s&&s)})).map(e=>{var t;let n=null;return e.pending&&(n=null===(t=this.pending.get(e.revid))||void 0===t?void 0:t.prior),null!=n||(n=e.old_revid||e.parentid),{item:e,prior:n}});const s=await o.api.parseEdits(t,n,this.ws.store.settings.queue.ores_bias,r);for(const t of s){var c;const{item:s,prior:i,data:a}=t,r={comment:!1,diff:!1};if(l&&a.edit.diff){const e=document.createElement("div");e.innerHTML=a.edit.diff,e.textContent&&(r.diff=o.util.match(l,e.textContent))}this.watchlist.set(s.title,a.page.watched),this.histories.set(s.title,a.page.history),this.contributions.set(s.user,a.user.contributions),this.blocks.set(s.user,a.user.blocks),this.blocked.set(s.user,a.user.blocked);const u=["0","1","2","3","4","4im"],g=this.getWarningLevel(a.user.talk||"");u.indexOf(g)>u.indexOf(this.warnings.get(s.user)||"0")&&this.warnings.set(s.user,g);const h={page:{namespace:s.ns,title:s.title,get history(){var e;return null!==(e=o.queue.histories.get(s.title))&&void 0!==e?e:a.page.history},get watched(){var e;return null!==(e=o.queue.watchlist.get(s.title))&&void 0!==e?e:a.page.watched},metadata:a.page.metadata,categories:a.page.categories,protection:a.page.protection},user:{name:s.user,ip:o.util.isIPAddress(s.user),temp:o.util.isTempAccount(s.user),anon:o.util.isIPAddress(s.user)||o.util.isTempAccount(s.user),edits:Math.max(a.user.edits,(null===(c=a.user.contributions)||void 0===c?void 0:c.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(s.user))&&void 0!==e?e:a.user.contributions},warning:this.getWarningLevel(a.user.talk||""),warnings:this.getWarningHistory(a.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(s.user))&&void 0!==e?e:a.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(s.user))&&void 0!==e?e:a.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(s.user))&&void 0!==e?e:a.user.talk}},mentions:r,AI:{edit:null,username:null},id:s.revid,prior:i,timestamp:s.timestamp,comment:s.parsedcomment,minor:s.minor||!1,diff:a.edit.diff,sizediff:("sizediff"in s?s.sizediff:s.newlen-s.oldlen)||0,ores:a.edit.ores,tags:s.tags||[],reverts:a.page.reverts,consecutive:a.page.consecutive,propagating:!1,reviewed:!1,history:!1,pending:s.pending||!1,group:p.groups[e],type:e,simple:n,origin:s};!n&&o.AI&&(o.store.settings.AI.edit_analysis.enabled&&o.AI.analyze.edit(h).then(e=>h.AI.edit=e).catch(e=>h.AI.edit={error:e.message}).finally(()=>{var e;h.id===(null===(e=this.current.item)||void 0===e?void 0:e.id)&&o.gui.updateAIAnalysisDisplay(h.AI.edit)}),h.user.anon||o.store.whitelist.users.has(h.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(h).then(e=>{h.AI.username=e,e.flag&&this.promptUAA(h,e)}).catch(e=>h.AI.username={error:e.message})),d.push(h),n?this.cache.simple.set(s.revid,h):(this.cache.full.set(s.revid,h),this.cache.simple.has(s.revid)&&this.cache.simple.delete(s.revid))}}break;case"logevent":{const s=await o.api.parseUsers(t.map(e=>e.title.replace(/^(User|User talk):/,"")),n,r),i=await o.api.parseUsers(t.map(e=>e.user),n,r);for(let r=0;r<t.length;r++){var u,g;const c=t[r],h=s[r],m=i[r],v=c.title.replace(/^(User|User talk):/,""),f={username:!1,comment:!1};l&&v&&(f.username=o.util.match(l,v)),this.contributions.set(v,h.user.contributions),this.contributions.set(c.user,m.user.contributions),this.blocks.set(v,h.user.blocks),this.blocks.set(c.user,m.user.blocks),this.blocked.set(v,h.user.blocked),this.blocked.set(c.user,m.user.blocked);const b=["0","1","2","3","4","4im"],w=this.getWarningLevel(h.user.talk||"");b.indexOf(w)>b.indexOf(this.warnings.get(v)||"0")&&this.warnings.set(v,w);const y=this.getWarningLevel(m.user.talk||"");b.indexOf(y)>b.indexOf(this.warnings.get(c.user)||"0")&&this.warnings.set(c.user,y);const x=a.profanity.evaluate(v),k={page:{namespace:c.ns,title:c.title,history:[],get watched(){return!1},metadata:[],categories:[],protection:{}},user:{name:v,ip:o.util.isIPAddress(v),temp:o.util.isTempAccount(v),anon:o.util.isIPAddress(v)||o.util.isTempAccount(v),edits:Math.max(h.user.edits,(null===(u=h.user.contributions)||void 0===u?void 0:u.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(v))&&void 0!==e?e:h.user.contributions},warning:this.getWarningLevel(h.user.talk||""),warnings:this.getWarningHistory(h.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(v))&&void 0!==e?e:h.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(v))&&void 0!==e?e:h.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(v))&&void 0!==e?e:h.user.talk},profanity:x},performer:{name:c.user,ip:o.util.isIPAddress(c.user),temp:o.util.isTempAccount(c.user),anon:o.util.isIPAddress(c.user)||o.util.isTempAccount(c.user),edits:Math.max(m.user.edits,(null===(g=m.user.contributions)||void 0===g?void 0:g.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(c.user))&&void 0!==e?e:m.user.contributions},warning:this.getWarningLevel(m.user.talk||""),warnings:this.getWarningHistory(m.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(c.user))&&void 0!==e?e:m.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(c.user))&&void 0!==e?e:m.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(c.user))&&void 0!==e?e:m.user.talk}},mentions:f,AI:{username:null},id:c.logid,timestamp:c.timestamp,comment:c.parsedcomment,ores:x.clamped||0,filters:x.matches.map(e=>({filter:e.name,id:e.match})),propagating:!1,reviewed:!1,history:!1,group:p.groups[e],type:e,simple:n,origin:c};!n&&o.AI&&(k.user.anon||o.store.whitelist.users.has(k.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(k).then(e=>{k.AI.username=e,e.flag&&this.promptUAA(k,e)}).catch(e=>k.AI.username={error:e.message})),d.push(k)}}break;case"abuselog":{const s=await o.api.parseAbuselogs(t,n,r);for(const t of s){var h,m;const{item:s,data:i}=t,a={comment:!1,diff:!1};if(l&&i.edit.diff){const e=document.createElement("div");e.innerHTML=i.edit.diff,e.textContent&&(a.diff=o.util.match(l,e.textContent))}this.watchlist.set(s.title,i.page.watched),this.histories.set(s.title,i.page.history),this.contributions.set(s.user,i.user.contributions),this.blocks.set(s.user,i.user.blocks),this.blocked.set(s.user,i.user.blocked);const r=["0","1","2","3","4","4im"],c=this.getWarningLevel(i.user.talk||"");r.indexOf(c)>r.indexOf(this.warnings.get(s.user)||"0")&&this.warnings.set(s.user,c);const u=["disallow","warn","showcaptcha","tag","none"],g=u.length;let v=g-1;for(let e=0;e<g;e++)if(s.result.has(u[e])){v=e;break}const f={page:{namespace:s.ns,title:s.title,get history(){var e;return null!==(e=o.queue.histories.get(s.title))&&void 0!==e?e:i.page.history},get watched(){var e;return null!==(e=o.queue.watchlist.get(s.title))&&void 0!==e?e:i.page.watched},metadata:i.page.metadata,categories:i.page.categories,protection:i.page.protection},user:{name:s.user,ip:o.util.isIPAddress(s.user),temp:o.util.isTempAccount(s.user),anon:o.util.isIPAddress(s.user)||o.util.isTempAccount(s.user),edits:Math.max(i.user.edits,(null===(h=i.user.contributions)||void 0===h?void 0:h.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(s.user))&&void 0!==e?e:i.user.contributions},warning:this.getWarningLevel(i.user.talk||""),warnings:this.getWarningHistory(i.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(s.user))&&void 0!==e?e:i.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(s.user))&&void 0!==e?e:i.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(s.user))&&void 0!==e?e:i.user.talk}},mentions:a,AI:{edit:null,username:null},id:s.id,revid:s.revid,timestamp:s.timestamp,comment:i.parsedcomment,minor:!1,diff:i.edit.diff,sizediff:null===(m=s.diff)||void 0===m?void 0:m.size,ores:+(1-v/(g-1)).toFixed(2),filters:s.entries.map(e=>({id:(null==e?void 0:e.filter_id)||"-1",filter:null==e?void 0:e.filter}))||[],reverts:i.page.reverts,propagating:!1,reviewed:!1,history:!1,group:p.groups[e],type:e,simple:n,origin:s};!n&&o.AI&&(o.store.settings.AI.edit_analysis.enabled&&i.edit.diff&&o.AI.analyze.edit(f).then(e=>f.AI.edit=e).catch(e=>f.AI.edit={error:e.message}).finally(()=>{var e;f.id===(null===(e=this.current.item)||void 0===e?void 0:e.id)&&o.gui.updateAIAnalysisDisplay(f.AI.edit)}),f.user.anon||o.store.whitelist.users.has(f.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(f).then(e=>{f.AI.username=e,e.flag&&this.promptUAA(f,e)}).catch(e=>f.AI.username={error:e.message})),d.push(f)}}}return d.forEach(e=>{if(e.comment){const t=(new DOMParser).parseFromString(e.comment,"text/html").body;t.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,n]=e.trim().split(/\s+/,2),s=new URL(t,`https://${this.ws.server}`).href;return n?`${s} ${n}`:s}).join(", ");e.setAttribute("srcset",t)}),e.comment=t.innerHTML;const n=(t.textContent||"").trim();e.has_comment=Boolean(n),!1===e.mentions.comment&&(e.mentions.comment=o.util.match(l,n)),e.mentions&&(e.mentions.has=Object.values(e.mentions).some(e=>e))}else e.has_comment=!1}),d}previous(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});if("pending"===this.current.type)return this.current.item=this.current.queue[Math.max(e-1,0)],this.ws.gui.renderQueue();if(e<=0){if(0===this.current.history.length)return;return this.current.queue.unshift(this.current.history.pop()),this.current.item=this.current.queue[0],this.ws.gui.renderQueue()}this.current.item=this.current.queue[e-1],this.ws.gui.renderQueue()}next(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});if(-1===e)return this.current.item=this.current.queue[0],this.ws.gui.renderQueue();if("pending"===this.current.type)return this.current.item=this.current.queue[Math.min(e+1,this.current.queue.length-1)],this.ws.gui.renderQueue();const t=this.current.item,n=p.groups[t.type];if(!t.reviewed&&("edit"===n||"abuselog"===n&&t.revid)){"watchlist"===t.type&&this.ws.api.markWatchlistSeen(t.page.title,t.id);const e="abuselog"===t.type?t.revid:t.id;if(["recent","watchlist","abuselog"].filter(e=>e!==t.type).forEach(t=>{this.queues[t].queue="abuselog"===t?this.queues[t].queue.filter(n=>n.revid!==e||(this.queues[t].history.push({...n,history:performance.now()}),!1)):this.queues[t].queue.filter(n=>n.id!==e||(this.queues[t].history.push({...n,history:performance.now()}),"watchlist"===t&&this.ws.api.markWatchlistSeen(n.page.title,n.id),!1))}),"abuselog"!==n){let e=this.queues.abuselog.queue.filter(e=>t.user.name===e.user.name&&t.page.title===e.page.title&&Math.abs(new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())<1e4);e.length>0&&Promise.allSettled(e.map(async e=>{let t=e.revid;return t||(t=await this.ws.api.getAbuseLogRevid(e.id)),t?(e.revid=t,{id:e.id,revid:t}):null})).then(e=>{const t=e.map(e=>"fulfilled"===e.status?e.value:null).filter(e=>e);this.queues.abuselog.queue=this.queues.abuselog.queue.filter(e=>!t.some(t=>t.revid===e.revid)),"abuselog"===this.current.type&&(t.forEach(e=>this.ws.gui.removeQueueItem("abuselog",e.id)),this.ws.gui.renderQueue(this.queues.abuselog.queue,this.queues.abuselog.item,"abuselog"))}).catch(()=>{})}}t.reviewed=!0,t&&this.ws.AI&&this.ws.AI.cancel.edit(t.id),this.current.queue.splice(e,1),this.ws.gui.removeQueueItem(this.current.type,t.id),0===this.current.queue.length?this.current.item=null:e<this.current.queue.length?this.current.item=this.current.queue[e]:this.current.item=this.current.queue[this.current.queue.length-1],t&&"edit"===p.groups[this.current.type]&&this.promptWelcome(t),this.current.history.push({...t,history:performance.now()}),this.ws.gui.renderQueue()}canGoPrevious(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});return-1===e?this.current.history.length>0:"pending"===this.current.type?e>0:0!==e||this.current.history.length>0}canGoNext(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});return-1===e?Boolean(this.current.queue[0]):"pending"!==this.current.type||e<this.current.queue.length-1}clear(e){"pending"!==e&&(this.queues[e].item=null,this.queues[e].queue=[],this.current.type===e&&(this.ws.gui.newCurrentItem(null),this.ws.gui.clearQueueItems()))}async promptWelcome(e){var t,n,s,i;if(!this.ws.store.settings.auto_welcome.enabled&&null!==(t=e.user)&&void 0!==t&&t.anon&&0!==((null===(n=e.user)||void 0===n?void 0:n.edits)||0)&&void 0!==(null===(s=e.user)||void 0===s?void 0:s.talk)&&!this.noWelcome.has(null===(i=e.user)||void 0===i?void 0:i.name))try{var a;const t=`User talk:${e.user.name}`,n=await this.ws.api.pagesExist([t]);if(void 0!==n[t])return null!==(a=void this.talks.set(e.user.name,n[t]))&&void 0!==a?a:n[t];await this.ws.gui.settings.waitForClose();const s=await this.ws.gui.dialog.confirm("Auto-Welcome User",`Would you like to welcome <span class="confirmation-modal-username">${this.ws.util.escape(e.user.name)}</span>?<br><br>\n\t\t\t\t\t<span style="font-size: 0.9em; color: #888;">Editing: <strong>${this.ws.util.escape(e.page.title)}</strong></span>`,{username:e.user.name,hideUAA:!1});this.noWelcome.add(e.user.name),s&&this.ws.execute({actions:[{name:"welcome-user",params:{template:"Auto"}}]},void 0,void 0,e)}catch(e){console.error("Error during auto-welcome check:",e)}}promptUAA(e,t){var n,s,i;return n=c,s=this,i=l(c,this).then(()=>d(u,this,g).call(this,e,t)).catch(()=>{}),n.set(d(n,s),i),l(c,this)}async propagate(e,t){if(e.propagating)return await e.propagating;if(e.simple){let n;e.propagating=new Promise(e=>n=e);const[s]=await this.generate(e.type,[e.origin],!1,{bypass:t});s.history=e.history,Object.assign(e,s),n(),e.propagating=!1}else this.generate(e.type,[e.origin],!1,{bypass:t}).then(([t])=>{const n=e.revid;t.history=e.history,Object.assign(e,t),e.revid=n})}loadFromItem(e){const t=this.current.type;if(p.areSameGroup(t,"edit")&&("pending"!==t||"edit"!==e.type)){this.queues[t].queue=this.queues[t].queue.filter(t=>t.id!==e.id);const n=this.queues[t].queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});n>-1&&(this.queues[t].queue[n]=e)}this.queues[t].item=this.queues[t].queue.find(t=>t.id===e.id)||e,this.ws.gui.renderQueue()}async loadFromRevision(e,t){try{let n;if(this.ws.gui.updateDiffDisplay("loading"),this.cache.full.has(t))n=this.cache.full.get(t);else{let s;if(this.cache.simple.has(t)){const e=this.cache.simple.get(t);s={revid:e.id,parentid:e.prior,ns:e.page.namespace,title:e.page.title,user:e.user.name,timestamp:e.timestamp,parsedcomment:e.comment,tags:e.origin.tags,sizediff:e.sizediff,minor:e.minor}}else{const n=await this.ws.api.getRevision(e,t,!0);if(!n)throw new Error("Revision not found");s={revid:n.revid,parentid:n.parentid,ns:n.ns,title:e,user:n.user,timestamp:n.timestamp,parsedcomment:n.parsedcomment,tags:n.tags,size:n.size,oldlen:n.oldlen||0,newlen:n.size,minor:n.minor}}[n]=await this.generate("edit",[s],!1,{bypass:!0})}const s=this.current.type;if(p.areSameGroup(s,"edit")&&"pending"!==s&&"abuselog"!==s){this.queues[s].queue=this.queues[s].queue.filter(e=>e.id!==n.id);const e=this.queues[s].queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});e>-1&&(this.queues[s].queue[e]=n)}this.queues[s].item=n,this.ws.gui.renderQueue()}catch(e){console.error("Error loading from revision:",e),document.querySelector("#diff-container").innerHTML=`<div class="error">Failed to load revision: ${this.ws.util.escape(e.message)}</div>`}}getWarningLevel(e){const t=["0","1","2","3","4","4im"];let n="0";const s=this.ws.util.monthSectionName(),i=this.ws.util.getPageSections(e);for(const e of i)if(e.title===s){const s=e.content.match(/<!-- Template:[\w-]+?(\d(?:i?m)?) -->/g);if(null===s)break;const i=[...s.map(e=>{const t=e.match(/<!-- Template:[\w-]+?(\d(?:i?m)?) -->/);return t?t[1].toString():"0"}),n].map(e=>[e,t.indexOf(e)]);n=i.sort((e,t)=>t[1]-e[1])[0][0]}return n}getWarningHistory(e){const t=[],n=this.ws.util.monthSectionName(),s=this.ws.util.getPageSections(e);for(const e of s)if(e.title===n){const n=e.content.matchAll(/<!-- Template:([\w-]+?)(\d(?:i?m)?) -->([^]+?)(?=<!-- Template:|$)/g);for(let s of n){const n=s[1],i=s[2],a=s[3],r=a.match(/(\d{2}:\d{2}.*?\d{4} \(UTC\))/);let o=r?r[1]:null;if(o&&(o=o.replace(/<[^>]*>/g,"")),o){const[,e,t,n,s]=o.match(/(\d{2}:\d{2}), (\d{1,2}) ([A-Za-z]+) (\d{4})/),i=["January","February","March","April","May","June","July","August","September","October","November","December"].indexOf(n);o=new Date(Date.UTC(s,i,t,...e.split(":"))).toUTCString()}else o=null;let l=null;const d=a.match(/\[\[User(?:[ _]talk)?:([^\]|]+)/i);d&&(l=d[1].trim());const c=a.match(/\[\[([^\]]+?)\]\]/),u=c?c[1]:null;t.push({template:n,level:i,timestamp:o,username:l,article:u,section:e.title})}}return t}}async function g(e,t){if(e.user.anon)return;if(this.ws.store.whitelist.users.has(e.user.name))return;if(!t.issues||0===t.issues.length)return;if(!t.explanation)return;const n=t.issues.map(e=>`${e.severity} ${e.policy} violation`).join(", "),s=Math.round(100*t.confidence),i=e.user.name;await this.ws.gui.settings.waitForClose();if(await this.ws.gui.dialog.confirm("Report Username to UAA",`\n\t\t\t\tThe username <span class="confirmation-modal-username">${this.ws.util.escape(i)}</span> for ${n}.<br><br>\n\t\t\t\t<strong>AI Confidence:</strong> ${s}%<br>\n\t\t\t\t<strong>Reasoning:</strong> ${t.explanation}<br>\n\t\t\t`,i)){await this.ws.gui.settings.waitForClose();const t=await this.ws.gui.dialog.UAA(e.user.name);t&&this.ws.execute({actions:[{name:"report-user-to-uaa",params:{reason:t}}]},void 0,void 0,e)}}t.Queue=p,o(p,"refresh",1e3),o(p,"types",["recent","pending","watchlist","abuselog","users"]),o(p,"groups",{void:"void",recent:"edit",pending:"edit",watchlist:"edit",edit:"edit",abuselog:"abuselog",users:"logevent"})},7054(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.WikiShield=void 0;var s=n(7852),i=n(3241),a=n(8169),r=n(2535),o=n(4674),l=n(6151),d=n(372),c=n(8469),u=n(8678),p=n(9501),g=n(9808);function h(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function m(e,t){return e.get(v(e,t))}function v(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var f,b,w,y=new WeakMap,x=new WeakSet;class k{constructor(e,t,n,s,l){var u,g;h(u=this,g=x),g.add(u),function(e,t,n){h(e,t),t.set(e,n)}(this,y,{ready:[]}),this.mobile=e,this.__DEV__=l,this.started=!1,this.server=t,this.storage=new p.StorageManager,this.defaultStorage=new p.StorageManager,this.defaultStorage.load(),this.util=new i.Utility(this),this.api=new r.API(this,t,n,s),this.notifications=new o.Notifications(this),this.rights={},this.groups={},this.api.account().then(async e=>{this.rights=e.rights.reduce((e,t)=>({...e,[t]:!0}),{}),this.groups=e.groups.reduce((e,t)=>({...e,[t]:!0}),{});{const e=this.rights.review&&this.api.hasPendingChanges;document.querySelector("#queue-tab-pending").classList.toggle("hidden",!e),e||"pending"!==this.queue.current.type||this.queue.switch("recent")}await v(x,this,S).call(this),this.cleanup(),setInterval(()=>this.cleanup(),1e4),v(x,this,_).call(this,"ready")}),this.gui=new c.GUI(this),this.queue=new d.Queue(this),this.audio=new a.AudioManager(this),this.time={load:null,save:null}}get store(){return this.storage.data}disable(e,t){electron.disable(e,t)}on(e,t,n={}){return m(y,this)[e]&&m(y,this)[e].push({callback:t,options:n}),this}async init(e=null){return this.gui.build(),await this.audio.init(),await v(x,this,S).call(this,e)}async noinit(e=null){var t;const n=await v(x,this,S).call(this,e);if(null===(t=this.AI)||void 0===t||t.cancel.all(),this.store.settings.AI.enabled)if("Ollama"===this.store.settings.AI.provider)this.AI=new u.AI.providers.Ollama(this,this.store.settings.AI.Ollama);else this.AI=null;else this.AI=null;{const e=this.store.UI.queue.width;document.body.querySelector("#queue").style.width=e,document.body.querySelector("#right-container").style.width=`calc(100% - ${e})`}{const e=this.store.UI.details.width;document.body.querySelector("#right-details").style.width=e,document.body.querySelector("#right-top").style.width=e,document.body.querySelector("#main-container").style.width=`calc(100% - ${e})`}return this.gui.settings.update(),n}async start(){this.gui.start(),this.update(),this.queue.fetch(),this.started=!0}async update(){const e=performance.now();try{await this.api.account().then(e=>{this.rights=e.rights.reduce((e,t)=>({...e,[t]:!0}),{}),this.groups=e.groups.reduce((e,t)=>({...e,[t]:!0}),{})}),await this.api.getGlobalUserInfo(this.api.username).then(e=>{var t;(t=this.rights).rollback||(t.rollback=e.rights.includes("rollback"))}),this.rights.rollback||"LuniZunie"===this.api.username||this.disable("Rollback required","Your account no longer has rollback rights, which are required to use WikiShield.");{const e=this.rights.review&&this.api.hasPendingChanges;document.querySelector("#queue-tab-pending").classList.toggle("hidden",!e),e||"pending"!==this.queue.current.type||this.queue.switch("recent")}this.save()}catch(e){console.error("Update error:",e)}setTimeout(()=>this.update(),Math.max(0,2500-(performance.now()-e)))}cleanup(){const e=Date.now();let t=!1;for(const[,n]of Object.entries(this.store.highlight))for(const[s,i]of n.entries())e>=i[1]&&(n.delete(s),t=!0);for(const[,n]of Object.entries(this.store.whitelist))for(const[s,i]of n.entries())e>=i[1]&&(n.delete(s),t=!0);t&&this.queue.current.item&&this.gui&&this.gui.renderQueue(this.queue.current.queue,this.queue.current.item)}controller(e){var t,n,s;if(this.started){if(this.gui.dialog.dialogs.active)return this.gui.dialog.controller(e);if(this.gui.settings.active)return this.gui.settings.controller(e);if(!("INPUT"===(null===(t=e.target)||void 0===t?void 0:t.tagName)||"TEXTAREA"===(null===(n=e.target)||void 0===n?void 0:n.tagName)||null!==(s=e.target)&&void 0!==s&&s.isContentEditable)&&"keydown"===e.type){if(e.repeat&&!this.store.settings.repeat_control_scripts)return;const t=(0,g.buildShortcut)(e);for(const n of this.store.control_scripts)n.keys.every(e=>e===t)&&(e.preventDefault(),this.execute(n))}}}async execute(e,t=!0,n=null,s=null){const i=(e,t)=>!e.name||("if"===e.name?this.gui.events.conditions[e.condition.name].check(this,t,e.condition.params):"if not"===e.name&&!this.gui.events.conditions[e.condition.name].check(this,t,e.condition.params));if(null===n){null!=s||(s=this.queue.current.item);const t=[e];let a=0;for(;t.length>0;){const e=t[0];if(i(e,s)){if(!e.actions){t.splice(0,1);continue}t.push(...e.actions)}e.name&&"if"!==e.name&&"if not"!==e.name&&this.gui.events.events[e.name].progress&&a++,t.splice(0,1)}if(a>0){let e=0;const t=new l.ProgressBar;n=(n,s)=>{const i="Done"===n?1:e/a;t.set(n,i,s),e++}}else n=e=>{}}if(i(e,s))for(const i of e.actions){if(!("name"in i))continue;const e={...i.params};for(const t of(null===(a=this.gui.events.events[i.name])||void 0===a||null===(r=a.parameters)||void 0===r?void 0:r.call(a,this,s))||[]){var a,r;t.id&&!(t.id in e)&&"default"in t&&(e[t.id]=t.default)}if("if"===i.name||"if not"===i.name)t=await this.execute(i,t,n,s);else{const a=this.gui.events.events[i.name],r=()=>{t=!1,this.audio.playSound(["action","failed"]),a.progress&&n(a.progress,!0)};try{if(t||!a.continuity){var o,d;const t=null!==(o=null===(d=a.valid)||void 0===d?void 0:d.call(a,this,s,e))&&void 0!==o?o:{valid:!0};if(t.valid){a.progress&&(n(a.progress,!1),this.audio.playSound(["action","default"])),this.store.statistics.actions_executed.total++;const t=await a.script(this,s,e);var c;if(!1===t.valid)r(),"reason"in t&&this.gui.dialog.toast("Action failed",t.reason,"error");else this.store.statistics.actions_executed.successful++,null===(c=a.successful)||void 0===c||c.call(a,this,s,e)}else r(),"reason"in t&&this.gui.dialog.toast("Action skipped",t.reason,"error")}}catch(e){r(),this.gui.dialog.toast("Please report to developer",`An error occurred while executing action "${i.name}". Check the console for details.`,"error"),console.error(`Error executing action "${i.name}":`,e.message||String(e))}}}return e.name||n("Done",!t),t}async getDEFCON(){const e="User:EnterpriseyBot/defcon",t=(await this.api.getPagesContent([e]))[e],n=t.match(/level\s*=\s*(\d+)/),s=t.match(/info\s*=\s*([\d.]+)/);return{level:n?Number(n[1]).toLocaleString():null,info:s?Number(s[1]).toLocaleString():null}}export(e=!0){this.time.save=performance.now(),this.store.statistics.session_time+=this.time.save-this.time.load;const{string:t,logs:n}=this.storage.encode();return e&&p.StorageManager.output(n),t}backup(){return this.time.save=performance.now(),this.store.statistics.session_time+=this.time.save-this.time.load,this.time.load=this.time.save,electron.localStorage.set(`WikiShield:BackupStorage-${this.api.username}`,`${Date.now()};${this.export(!1)}`),!0}async save(){this.backup();const e=`${Date.now()};${this.export(!1)}`,t=this.api.username;if(window.isFinite)electron.saveAccount(t,e);else try{const n=await this.api.postWithToken({action:"options",optionname:"userjs-wikishield-storage",optionvalue:e});"success"===(null==n?void 0:n.options)||console.error(`[WikiShield] Failed to save account data for ${t}:`,n)}catch(e){console.error(`[WikiShield] Failed to save account data for ${t}:`,e)}}async load(){try{var e,t;return null!==(e=null===(t=[electron.localStorage.get(`WikiShield:BackupStorage-${this.api.username}`),(await this.api.post({action:"query",meta:"userinfo",uiprop:"options",format:"json"})).query.userinfo.options["userjs-wikishield-storage"]].reduce((e,t)=>{var n,s;null!=t||(t="0;e30=");let i=0,a=t;return t.includes(";")&&([i,a]=t.split(";",2),i=parseInt(i,10)),new Date(i).toLocaleString(),new Date(null!==(n=null==e?void 0:e.timestamp)&&void 0!==n?n:0).toLocaleString(),i>0&&i>(null!==(s=null==e?void 0:e.timestamp)&&void 0!==s?s:0)?{timestamp:i,data:a}:e},null))||void 0===t?void 0:t.data)&&void 0!==e?e:"e30="}catch(e){var n;return null!==(n=void console.error("Failed to load storage from wiki:",e))&&void 0!==n?n:"e30="}}page(e,t,n=!0){return`https://${this.server}/${t?`w/index.php${e}`:`wiki/${n?encodeURIComponent(e):e}`}`}open(e,t){"force"===t?t=!1:window.arePopupsBlocked?t=!0:t||(t=!this.store.settings.wikipedia_popups.enabled),t?electron.openExternal(null!=e?e:"https://google.com/"):electron.openInBrowser(e).then(e=>{e&&requestAnimationFrame(()=>{if(this.gui.dialog.popups.push(e),!document.getElementById("popup-blocker")){const e=document.createElement("div");e.id="popup-blocker",e.innerText="Please close the popup or click anywhere on this page to continue using WikiShield.",document.body.appendChild(e),this.gui.dialog.check()}})})}}function _(e){if(m(y,this)[e])for(const n of m(y,this)[e])try{n.callback()}catch(e){}finally{var t;!0===(null===(t=n.options)||void 0===t?void 0:t.once)&&(m(y,this)[e]=m(y,this)[e].filter(e=>e!==n))}return this}async function S(e=null){const t=this.storage.decode(null!=e?e:await this.load()).logs;var n,s,i;(this.time.load=performance.now(),this.store.settings.AI.enabled)?"Ollama"===this.store.settings.AI.provider?"function"==typeof(null===(n=u.AI.providers)||void 0===n?void 0:n.Ollama)?this.AI=new u.AI.providers.Ollama(this,this.store.settings.AI.Ollama):(console.error("AI.providers.Ollama is not available. Falling back to null."),this.AI=null):(null===(s=this.AI)||void 0===s||s.cancel.all(),this.AI=null):(null===(i=this.AI)||void 0===i||i.cancel.all(),this.AI=null);return t}t.WikiShield=k,f=k,b="config",w={version:s.VERSION,changelog:{version:"6",HTML:fetch("https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/CHANGELOG.html").then(e=>e.text()).catch(()=>"<em>Could not fetch changelog.</em>")},pages:{AIV:"Wikipedia:Administrator intervention against vandalism",UAA:"Wikipedia:Usernames for administrator attention",RFPP:"Wikipedia:Requests for page protection/Increase",SRG:"Steward requests/Global"},config:{refresh:{recent:2e3,pending:2e3,watchlist:2e3,users:2e3},historyCount:10}},(b=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(b))in f?Object.defineProperty(f,b,{value:w,enumerable:!0,configurable:!0,writable:!0}):f[b]=w},4018(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.namespaces=void 0;t.namespaces=[{name:"Main",id:0,analysis_description:{edit:"",username:""}},{name:"Talk",id:1,analysis_description:{edit:"",username:""}},{name:"User",id:2,analysis_description:{edit:"Flag content unrelated to Wikipedia, such as self-promotion. If the page looks like a Wikipedia article, check that it isn't an obvious hoax, and that it is a subpage. Do not follow strict standards for these pages.",username:"Check whether the username matches the base page title. Most often, a user page should only be edited by that user. Consider alternative accounts, like User:Example creating User:Example (alt)."}},{name:"User talk",id:3,analysis_description:{edit:"",username:""}},{name:"Project",id:4,analysis_description:{edit:"",username:""}},{name:"Project talk",id:5,analysis_description:{edit:"",username:""}},{name:"File",id:6,analysis_description:{edit:"",username:""}},{name:"File talk",id:7,analysis_description:{edit:"",username:""}},{name:"MediaWiki",id:8,analysis_description:{edit:"",username:""}},{name:"MediaWiki talk",id:9,analysis_description:{edit:"",username:""}},{name:"Template",id:10,analysis_description:{edit:"",username:""}},{name:"Template talk",id:11,analysis_description:{edit:"",username:""}},{name:"Help",id:12,analysis_description:{edit:"",username:""}},{name:"Help talk",id:13,analysis_description:{edit:"",username:""}},{name:"Category",id:14,analysis_description:{edit:"",username:""}},{name:"Category talk",id:15,analysis_description:{edit:"",username:""}},{name:"Portal",id:100,analysis_description:{edit:"",username:""}},{name:"Portal talk",id:101,analysis_description:{edit:"",username:""}},{name:"Draft",id:118,analysis_description:{edit:"",username:""}},{name:"Draft talk",id:119,analysis_description:{edit:"",username:""}},{name:"MOS",id:126,analysis_description:{edit:"",username:""}},{name:"MOS talk",id:127,analysis_description:{edit:"",username:""}},{name:"TimedText",id:710,analysis_description:{edit:"",username:""}},{name:"TimedText talk",id:711,analysis_description:{edit:"",username:""}},{name:"Module",id:828,analysis_description:{edit:"Check whether the edit is meaningful Lua code. In this namespace, anything that isn't written in Lua can be safely assumed to be vandalism. Be careful about multi-line strings, as they might contain non-Lua code: check the context of the edit to make sure. Additionally, check if the edit introduces any obvious Lua syntax errors.",username:""}},{name:"Module talk",id:829,analysis_description:{edit:"",username:""}},{name:"Event",id:1728,analysis_description:{edit:"",username:""}},{name:"Event talk",id:1729,analysis_description:{edit:"",username:""}}]},6400(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.profanity=void 0;const n="\\*#\\-",s=`[${n}a4]`,i=`[${n}b6]`,a=`[${n}ck]`,r=`[${n}h]`,o=`[${n}i1y]`,l=`[${n}o0]`,d=`[${n}t7]`,c={a:s,b:i,c:a,d:`[${n}d6]`,e:`[${n}e3]`,f:`[${n}f]`,g:`[${n}g9]`,h:r,i:o,j:`[${n}j]`,k:`[${n}k]`,l:`[${n}l1]`,m:`[${n}m]`,n:`[${n}n]`,o:l,p:`[${n}p9]`,q:`[${n}q9]`,r:`[${n}r]`,s:`[${n}sz526]`,t:d,u:`[${n}uv]`,v:`[${n}vu]`,w:`[${n}w]`,x:`[${n}x]`,y:`[${n}y]`,z:`[${n}zs25]`,0:`[${n}0]`,1:`[${n}1]`,2:`[${n}2]`,3:`[${n}3]`,4:`[${n}4]`,5:`[${n}5]`,6:`[${n}6]`,7:`[${n}7]`,8:`[${n}8]`,9:`[${n}9]`};class u{constructor(e={}){this.conversion={};for(const[t,n]of Object.entries(e))for(const e of n)this.conversion[e]&&console.warn(`Profanity lookalike collision: ${e} is already mapped to ${this.conversion[e]}, remapping to ${t}`),this.conversion[e]=t}removeAccents(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}obscureReplacements(e){return e.replace(/(\/[|\\]\/|\\[|\\]\\)/g,"n").replace(/&/g,"and").replace(/zero/g,"0").replace(/one/g,"1").replace(/two/g,"2").replace(/three/g,"3").replace(/four/g,"4").replace(/five/g,"5").replace(/six/g,"6").replace(/seven/g,"7").replace(/eight/g,"8").replace(/nine/g,"9")}parseString(e,t=!1){e=t?e.replace(/[._,;:|]/g," ").replace(/\s+/g," ").toLowerCase():e.replace(/[\s._,;:|]/g,"").toLowerCase(),e=this.removeAccents(e);let n="";for(const t of e)this.conversion[t]?n+=this.conversion[t]:n+=t;return e=this.obscureReplacements(n)}analyzeObfuscation(e,t,n,s,i=!1){const a=e.substring(t,n);let r=0;if(/\s/.test(a)&&!i)return-.95;const o=this.countCaseChanges(a);if(o>0){o/Math.max(1,a.length-1)>.3&&(r+=.3)}if(/[._,;:|]/.test(a)){const e=(a.match(/[._,;:|]/g)||[]).length,t=(a.match(/[a-zA-Z0-9]/g)||[]).length;if(t>0){const n=e/t;n>.3&&(r+=Math.min(.5,.7*n))}}const l=this.checkWordBoundaries(e,t,n,s,i);r+=l;const d=this.checkSubstitution(a,s);if(d>0&&(r+=d),l<0){if(!this.isStandaloneWord(e,t,n)){this.isCamelCaseBoundary(e,t,n)?r+=.2:r-=.2}}return Math.max(-1,Math.min(1,r))}countCaseChanges(e){let t=0;for(let n=1;n<e.length;n++){const s=e[n-1],i=e[n];if(/[a-zA-Z]/.test(s)&&/[a-zA-Z]/.test(i)){s===s.toUpperCase()!==(i===i.toUpperCase())&&t++}}return t}checkWordBoundaries(e,t,n,s,i=!1){const a=t>0?e[t-1]:"",r=n<e.length?e[n]:"",o=e.substring(Math.max(0,t-8),Math.min(e.length,n+8)).toLowerCase(),l=[/WMF/,/pass(word|phrase|port|enger|ion|ive|ed|ing|es|key|code|over|by|able)/i,/class(room|mate|ified|es|ic|y|ification)/i,/grass(land|hopper|y|es)/i,/bass(ist|oon|line|es)/i,/mass(ive|acre|age|es|achusetts)/i,/assign(ment|ed|ing|s|ee|or)/i,/assess(ment|ed|ing|or|s)/i,/assemble|assembly|assertion|asset|assist|assume|assure|associate|association/i,/brass|crass|harass|morass|surpass|trespass|compass|embassy|embarrass/i,/cock(pit|tail|roach|ade|atoo|le|ney)/i,/scunthorpe|penistone|shitterton|lightwater|middlesex|sussex|essex|wessex/i,/dick(ens|inson|son|ey|ie)/i,/analyst|analytics|analyze|canal|banal/i,/therapist|therapeutic|therapy/i,/cumul(ative|us|at)|circum(stance|ference|cise|vent|navigate|scribe)/i,/butter(cup|fly|milk|scotch|fingers|nut)|buttress|button|rebuttal/i,/count(ry|er|ess|down|ing|ed|able|enance|erfeit|erpart)/i,/grape|drape|scrape|landscape|escapade/i,/shell(fish|fire|ter|ed)|eggshell|nutshell|bombshell|seashell/i,/whole(sale|some|hearted)/i,/exchange|exchequer/i,/title|titled|subtitle|entitle/i,/sextant|sextet|bisect|insect|intersect|section|sector/i,/cocktail|peacock|hancock|hitchcock|babcock|woodcock/i,/niger(ia|ian)|montenegro/i,/penisten|penetrat|penal(ty|ize|ise)|penchant|pencil|pendant|penguin|peninsula/i,/manslaughter|slaughterhouse/i,/shitake|shiitake/i,/arsenic|arsenal/i,/cummings|scumble/i,/smother|another|mother(board|land|hood)/i,/wanton|wanting|wanted|warrant/i,/trigger|bigger|digger|jigger|rigger|vigor|figure/i,/ballad|ball(room|park|istic|oon|et|ot|ard|ast)/i,/grape(fruit|vine|shot)/i,/raptor|rapport|rapid|rapier|rapture/i,/killed|killer|skill(ed|ful|s)|killjoy|kiln|kilo(gram|meter|byte|watt)/i,/bomb(ard|astic|shell|er|ing|ay)/i,/hellenic|hello|shell|othello/i,/crack(down|le|ed|ing|erjack)|firecracker/i,/jewel{1,2}/i,/skill/i];for(const e of l)if(e.test(o))return-.8;const d=/[a-zA-Z]/.test(a),c=/[a-zA-Z]/.test(r);if(d&&c){const i=e.substring(Math.max(0,t-8),t).toLowerCase(),a=e.substring(n,Math.min(e.length,n+8)).toLowerCase(),r=e.substring(Math.max(0,t-8),Math.min(e.length,n+8)).toLowerCase();return this.analyzePaddingLikelihood(i,a,s)>=.4||r.length>15&&r===r.toLowerCase()&&!/\s/.test(r)?0:-.5}if(d||c){const i=e.substring(Math.max(0,t-8),t).toLowerCase(),a=e.substring(n,Math.min(e.length,n+8)).toLowerCase();this.analyzePaddingLikelihood(i,a,s);return 0}const u=e.substring(t,n);return/\s/.test(u)&&!i?-.9:0}analyzePaddingLikelihood(e,t,n){let s=0;const i=/[bcdfghjklmnpqrstvwxyz]{3,}/i;(i.test(e)||i.test(t))&&(s+=.4);const a=t.match(/([a-z])\1{1,}/i);if(a&&a[0].length>=2){if(t.indexOf(a[0])>=t.length-3){(!/\b(ll|ss|tt|nn|mm|pp|dd|bb|gg|ff)$/i.test(a[0])||t.length<=3)&&(s+=.35)}}if(e.length<=2&&e.length>0&&(s+=.25),t.length<=3&&t.length>0){/^(er|ed|ing|ion|ly|al|ful|less|ness|ment|s)$/i.test(t)||(s+=.2)}/([qx][^u]|[jqxz]{2}|[bcdfghjklmnpqrstvwxz]{4,})/i.test(e+t)&&(s+=.3);const r=e+t;if(r.length>0){(r.match(/[aeiou]/gi)||[]).length/r.length<.2&&(s+=.3)}return Math.min(1,s)}checkSubstitution(e,t){const n=/[0-9@$!]/;if(!n.test(e))return 0;let s=0;for(const t of e)n.test(t)&&s++;const i=s/e.length;return Math.min(.3,.6*i)}isStandaloneWord(e,t,n){const s=t>0?e[t-1]:" ",i=n<e.length?e[n]:" ",a=/[\s.,;:!?()[\]{}"'`~\-_]/;return a.test(s)&&a.test(i)}isCamelCaseBoundary(e,t,n){if(0===t||n===e.length)return!1;const s=e[t-1],i=e[t],a=e[n-1],r=e[n],o=/[A-Z]/.test(i),l=/[a-z]/.test(s),d=(/[a-z]/.test(r),/[a-z]/.test(a));return!!(l&&o||d&&/[A-Z]/.test(r))}findMatchPosition(e,t,n,s){const i=e.toLowerCase();let a=-1,r=-1,o=-1;for(let n=0;n<=i.length-t.length;n++){const i=this.parseString(e.substring(n,n+t.length+10));if(i.includes(s)){const e=this.calculateSimilarity(s,i.substring(0,s.length));e>o&&(o=e,a=n,r=n+t.length)}}return{start:a,end:r}}calculateSimilarity(e,t){const n=Math.min(e.length,t.length);let s=0;for(let i=0;i<n;i++)e[i]===t[i]&&s++;return s/Math.max(e.length,t.length)}match(e){const t=this.parseString(e),n=[];for(const s of u.hits)if(s.term){const i=s.term,a=s.severity||.5,r=s.note||null,o=s.multiWord||!1;if(1===i.length&&/[^\x00-\x7F]/.test(i))continue;const l=o?this.parseString(e,!0):t,d=i.split("").reduce((e,t)=>{var n;if(o&&" "===t)return e+" *";return e+(null!==(n=c[t])&&void 0!==n?n:t)},""),u=new RegExp(d,"gi");let p;const g=this.buildPositionMap(e,o);for(;null!==(p=u.exec(l));){const t=p[0],l=p.index,d=l+t.length,c=g[l]||l,u=void 0!==g[d-1]?g[d-1]+1:d,h=this.analyzeObfuscation(e,c,u,i,o);let m=this.calculateMatchConfidence(t,i);h<-.5?m*=Math.max(.01,1+4*h):h<-.2?m*=Math.max(.05,1+2.5*h):h>.5&&(m=Math.min(1,m+.08*h));if(m>=Math.max(.05,.2-.015*i.length)){const o=e.substring(c,u);if(s.ignore&&Array.isArray(s.ignore)&&s.ignore.includes(o))continue;n.push({name:i,match:t,confidence:m,obfuscation:h,severity:a,note:r,originalSegment:o})}}}else if(s.regex){const t=e.match(new RegExp(s.regex.source,"g"));if(t)for(const e of t)n.push({name:s.name,match:e,confidence:1,obfuscation:.5,severity:s.severity||.5,note:s.note||"Pattern-based detection with high confidence. Obfuscation is moderate for formatted data.",originalSegment:e})}else s.test&&s.test(e)&&n.push({name:s.name,match:e,confidence:1,obfuscation:.5,severity:s.severity||.5,note:s.note||"Test-based detection with high confidence.",originalSegment:e});return n}buildPositionMap(e,t=!1){const n={};let s=0;for(let i=0;i<e.length;i++){const a=e[i];t?/[\s._,;:|]/.test(a)&&0!==i&&/[\s._,;:|]/.test(e[i-1])||(n[s]=i,s++):/[\s._,;:|]/.test(a)||(n[s]=i,s++)}return n}findOriginalPosition(e,t){let n=0;for(let s=0;s<e.length;s++){const i=e[s];if(!/\s/.test(i)){if(n===t)return s;n++}}return t}calculateMatchConfidence(e,t){const n=/[\*#_\-]/;let s=0,i=0,a=0,r=0;for(const t of e)n.test(t)?(i++,a++,r=Math.max(r,a)):(s++,a=0);const o=s+i;if(0===o)return 0;const l=s/o;if(l<.3)return 0;if(l<.5)return.1*l;const d=r>1?Math.max(.2,1-.2*r):1,c={};for(const t of e)n.test(t)||(c[t]=(c[t]||0)+1);let u=1;for(const e of Object.values(c))e>2&&(u*=Math.max(.4,1-.15*(e-2)));const p=o/t.length,g=p>1.5?Math.max(.2,1-.4*(p-1)):1;return Math.max(0,Math.min(1,l*d*u*g))}score(e){const t=this.match(e);let n=0;for(const e of t)n+=e.confidence;return n}evaluate(e){const t=this.match(e),n=this.parseString(e);if(0===t.length)return{finalScore:0,risk:"No",matches:[],details:{baseScore:0,weightedScore:0,severityScore:0,matchCount:0,averageConfidence:0,averageObfuscation:0,averageSeverity:0,textLength:e.length,densityPenalty:0,repetitionPenalty:0,diversityBonus:0,lengthModifier:1,highConfidenceMatches:0,mediumConfidenceMatches:0,lowConfidenceMatches:0}};let s=0,i=0,a=0,r=0,o=0,l=0;const d=new Set;for(const e of t){const t=e.severity||.5,n=e.confidence;r+=n,l+=Math.pow(n,1.5)*t,o+=e.obfuscation||0,d.add(e.name),n>=.7?s++:n>=.4?i++:a++}const c=r/t.length,u=o/t.length,p=r>0?l/r:0,g=1*s+.35*i+.08*a,h=n.length,m=t.length/Math.max(h/5,1),v=.6*Math.tanh(.3*m),f={};for(const e of n)/[a-z0-9]/.test(e)&&(f[e]=(f[e]||0)+1);let b=0;const w=Object.values(f).reduce((e,t)=>e+t,0);for(const e of Object.values(f))e>3&&(b+=Math.pow((e-3)/w,1.5));const y=Math.min(.8,2*b),x=d.size/t.length,k=x>.6?1*(x-.6):0,_=Math.max(.5,Math.min(1.5,1+Math.log10(Math.max(10,h))/10)),S=u>.4?.5*(u-.4):u<-.2?.4*Math.abs(u):0,q=t.filter(e=>e.severity>=1&&e.confidence>=.5||e.confidence>=.9).length,E=g*p*_;let L=E+.5*l+k+.8*q-(v+y+S);c<.5&&(L*=Math.max(.1,1.5*c)),L>3?L=3+1.5*Math.log10(L-2):L>1.5&&(L=1.5+.8*Math.sqrt(L-1.5)),L=Math.max(0,L);let A="No";return L>=4||q>=2?A="Critical":L>=2.5?A="High":L>=1.5?A="Medium":L>=.5&&(A="Low"),{clamped:Math.max(0,Math.min(1,L/5)),finalScore:Math.round(100*L)/100,risk:A,matches:t,details:{baseScore:Math.round(100*g)/100,weightedScore:Math.round(100*E)/100,severityScore:Math.round(100*l)/100,matchCount:t.length,uniqueMatches:d.size,averageConfidence:Math.round(100*c)/100,averageObfuscation:Math.round(100*u)/100,averageSeverity:Math.round(100*p)/100,textLength:e.length,densityPenalty:Math.round(100*v)/100,repetitionPenalty:Math.round(100*y)/100,diversityBonus:Math.round(100*k)/100,lengthModifier:Math.round(100*_)/100,obfuscationPenalty:Math.round(100*S)/100,criticalPatterns:q,highConfidenceMatches:s,mediumConfidenceMatches:i,lowConfidenceMatches:a}}}}!function(e,t,n){(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(u,"hits",[{name:"URL",regex:/(?:https?:\/\/(?:www\.)?[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*(?:\/[^\s]*)?|(?:www\.)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?:\/[^\s]*)?|[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.(?:com|org|net|edu|gov|mil|int|co|io|ai|app|dev|info|biz|name|pro|museum|aero|coop|jobs|mobi|travel|xxx|ac|ad|ae|af|ag|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)(?:\/[^\s]*)?)/i,severity:.1,note:"URLs in usernames may indicate spam or advertising."},{name:"Phone number",regex:/(\+?\d{1,3}[-.\s]?|\(\+?\d{1,3}\)\s?)?(\d{3}[-.\s]?\d{3}[-.\s]?\d{4}|\d{4}[-.\s]?\d{3}[-.\s]?\d{3})/,severity:.3,note:"The pattern of numbers in this username resemble a phone number. Usernames containing personal information may be considered disruptive."},{name:"Email address",regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/,severity:.3,note:"Email addresses in usernames can indicate spam or contact sharing."},{term:"base64",severity:.2,note:"Base64 encoding may be used to obfuscate content to bypass filters."},{term:"fromhex",severity:.2,note:"Hex encoding may be used to obfuscate content to bypass filters."},{term:"1488",severity:.5,note:"Well-known Neo-Nazi symbol, however the number itself can appear in innocent contexts."},{term:"nazi",severity:1},{term:"swastika",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"卍",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"卐",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿕",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿖",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿗",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿘",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"aryan",severity:.7,note:"Associated with white supremacist ideology, though it can also be in reference to the self-designation of Indo-Iranian peoples."},{term:"fascism",severity:.5},{term:"fascist",severity:.5},{term:"facist",severity:.5},{term:"☭",severity:.5,note:"Hammer and sickle symbol, politically charged but context-dependent."},{term:"✡",severity:.4,note:"Star of David, can be used respectfully or in antisemitic contexts."},{term:"44",severity:.1,note:"Obfuscated symbol of the Nazi SS division. If appears as 'ᛋᛋ' or similar, indicates intent to reference the SS."},{term:"imbo wales",severity:.2,multiWord:!0,note:"Play on 'Jimbo Wales' name, may indicate mockery or impersonation."},{term:"sock",severity:.3,note:"May reference sockpuppet accounts but has innocent meanings."},{term:"puppet",severity:.3,note:"May reference sockpuppet accounts but has innocent meanings."},{term:"sock puppet",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"return",severity:.2,note:"Often used in usernames by sockpuppeteers."},{term:"is back",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"are back",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"timelash",severity:1,note:'Well-known sockpuppeteer ("Timelash") on Wikipedia.'},{term:"my little",severity:.8,multiWord:!0,note:"If related to 'my little pony', indicates sockpuppeteer."},{term:"my little pony",severity:1,multiWord:!0,note:"Well-known sockpuppeteer on Wikipedia."},{term:"friendship is magic",severity:1,multiWord:!0,note:"Well-known sockpuppeteer on Wikipedia."},{term:"anal",severity:.7},{term:"anus",severity:.5},{term:"sex",severity:.3},{term:"secs",severity:.05,note:"Obfuscated form of 'sex'."},{term:"seggs",severity:.2,note:"Obfuscated form of 'sex'."},{term:"willy",severity:.2,note:"Slang for penis."},{term:"wank",severity:.6,note:"British sexual slang for masturbation."},{term:"barf",severity:.3},{term:"bastard",severity:.5},{term:"batty boy",severity:.7,multiWord:!0,note:"Homophobic slur in British/Caribbean English."},{name:"bitch",regex:new RegExp(`${i+o}(${l}|${s})?${d}?${a+r}`),severity:.7},{term:"blow job",severity:.8,multiWord:!0},{term:"blowing",severity:.2,note:"Sexual innuendo but common verb."},{term:"boner",severity:.4},{term:"boob",severity:.4},{term:"booty",severity:.3},{term:"breast",severity:.4,note:"Anatomical term, but can be used inappropriately."},{term:"butt",severity:.2},{term:"bite me",severity:.5,multiWord:!0,note:"Often has defiant or provocative connotation."},{term:"butt plug",severity:.7,multiWord:!0},{term:"bollock",severity:.5,note:"British slang for testicles."},{term:"bollox",severity:.5,note:"Variant spelling of 'bollocks'."},{term:"bollix",severity:.5,note:"Variant spelling of 'bollocks'."},{term:"clit",severity:.3},{term:"cock",severity:.3},{term:"brain dead",severity:.5,multiWord:!0,note:"Derogatory medical reference."},{term:"bukake",severity:.7},{term:"bully",severity:.5,note:"Indicates harassment behavior."},{term:"bullies",severity:.5,note:"Indicates harassment behavior."},{term:"bullied",severity:.3,note:"May indicate victimhood or boasting."},{term:"versus",severity:.4,note:"Combat/conflict framing, but legitimate word."},{term:"bumming",severity:.5,note:"British slang for anal sex or begging."},{term:"bunghole",severity:.5},{term:"cesspool",severity:.3,note:"Derogatory term for filthy place."},{term:"cesspit",severity:.3,note:"Variant of cesspool."},{term:"dick",severity:.7},{term:"prick",severity:.7},{term:"dildo",severity:.7},{term:"censor",severity:.1,note:"May indicate anti-censorship stance."},{term:"ching",severity:.8,note:"Part of racial slur against Asians."},{term:"ching chong",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"ching chang",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"wing wong",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"bot",severity:.4,note:"May indicate automated account claim."},{term:"ox long",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'cock's long'."},{term:"douche",severity:.5},{term:"cunt",severity:.7},{term:"cuck",severity:.4,note:"Derogatory term from manosphere."},{term:"curry munch",severity:.9,multiWord:!0,note:"Racist slur against South Asians."},{term:"crime",severity:.3,note:"Negative connotation but legitimate word."},{term:"pussy",severity:.7},{term:"deeznuts",severity:.3,note:"Crude joke phrase."},{term:"destroy",severity:.3,note:"Aggressive language."},{term:"destruction",severity:.3,note:"Aggressive language."},{term:"diaper",severity:.3,note:"Infantilization or fetish reference."},{term:"diarrhea",severity:.3},{term:"throbbing",severity:.5,note:"Sexual innuendo term."},{term:"dimwit",severity:.3},{term:"doo doo",severity:.3,multiWord:!0},{term:"dookie",severity:.3},{term:"fart",severity:.3},{term:"ejaculat",severity:.7},{term:"erect",severity:.5,note:"Sexual context or legitimate word."},{term:"erotic",severity:.5},{term:"fuck",severity:.8},{term:"phuck",severity:.8,note:'Alternative spelling of "fuck" to bypass detection.'},{term:"orgasm",severity:.7},{term:"rape",severity:1},{term:"lawsuit",severity:.3,note:"Legal threat implication."},{term:"fraud",severity:.5,note:"Accusation of criminal behavior."},{term:"tard",severity:.5,note:"Ableist slur suffix."},{term:"terror",severity:.7,note:"Violence/terrorism reference."},{term:"mike hunt",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'my cunt'."},{term:"mike ox",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'my cock's'."},{term:"masturbat",severity:.7},{term:"nutsack",severity:.5},{term:"ophile",severity:1,note:"Suffix for sexual predator terms like pedophile."},{term:"pedo",severity:.6},{term:"peeing",severity:.3},{term:"peanus",severity:.5,note:"Intentional misspelling of 'penis'."},{term:"penis",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"porn",severity:.7},{term:"piss",severity:.5},{term:"poop",severity:.3},{term:"prison",severity:.3,note:"Criminal context, but legitimate word."},{term:"prostitute",severity:.5,note:"Sexual work reference or insult."},{term:"queer",severity:.5,note:"Can be slur or reclaimed identity."},{term:"rectum",severity:.3,note:"Anatomical term."},{term:"report me",severity:.3,multiWord:!0,note:"Defiant/trolling phrase."},{term:"rimming",severity:.7},{term:"scrotum",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"semen",severity:.7},{term:"slut",severity:.7},{term:"sucks",severity:.3,note:"Mild profanity or legitimate verb."},{term:"sux",severity:.3,note:"Intentional misspelling of 'sucks'."},{term:"vagina",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"vadge",severity:.5,note:"Slang for vagina."},{term:"vomit",severity:.3},{term:"vulva",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"whore",severity:.7},{term:"chink",severity:1},{term:"jew",severity:.3,note:"Legitimate religious/ethnic term but tracked for antisemitic usage patterns."},{term:"nigger",severity:1},{term:"nigga",severity:1},{term:"nigguh",severity:1,note:"Phonetic spelling of racial slur."},{term:"niglet",severity:1},{term:"pajeet",severity:.7,note:"Derogatory term for South Asians."},{term:"slave",severity:.6,note:"Dehumanizing term with historical trauma, but legitimate historical uses."},{term:"master race",severity:1,multiWord:!0,note:"Nazi supremacist ideology phrase."},{term:"inferior race",severity:1,multiWord:!0},{term:"superior race",severity:1,multiWord:!0,note:"White supremacist ideology."},{term:"racist",severity:.8},{term:"racism",severity:.7},{term:"racial",severity:.3,note:"Neutral term but tracked for context in discriminatory language."},{term:"bigot",severity:.7},{term:"fag",severity:.7},{term:"taliban",severity:.7,note:"Terrorist organization reference."},{term:"antisemit",severity:1},{term:"bleed",severity:.3,note:"Can indicate violence or be medical."},{term:"bloody",severity:.3,note:"British profanity or literal blood reference."},{term:"hell",severity:.5,note:"Religious reference used as mild profanity, but legitimate uses."},{term:"damn",severity:.3},{term:"crap",severity:.3},{term:"darn",severity:.1,note:"Mild euphemism for 'damn'."},{term:"shutup",severity:.3,note:"Rude command indicating hostility."},{term:"spastic",severity:.5,note:"Ableist slur in British English, medical term in US."},{term:"disabled",severity:.1,note:"Legitimate disability term but tracked for ableist patterns."},{term:"loser",severity:.3},{term:"abuse",severity:.5,note:"Indicates harmful behavior or accusations."},{term:"spam",severity:.3,note:"Indicates unwanted content or disruption."},{term:"abusi",severity:.5,note:"Variant of 'abuse/abusive'."},{term:"hitler",severity:1},{term:"adolf",severity:.4,note:"Common name but often used in Hitler references."},{term:"gestapo",severity:1},{term:"heil",severity:.8,note:"Nazi salute reference."},{term:"final solution",severity:1,multiWord:!0,note:"Nazi euphemism for genocide."},{term:"death camp",severity:1,multiWord:!0},{term:"concentration camp",severity:1,multiWord:!0,note:"Holocaust reference, legitimate historical use but concerning in usernames."},{term:"gas chamber",severity:1,multiWord:!0},{term:"holocaust",severity:.5,note:"Historical tragedy reference, legitimate historical use."},{term:"zionis",severity:.5,note:"Political term stem, can be antisemitic depending on context."},{term:"fuhrer",severity:1},{term:"reich",severity:.7,note:"Nazi Germany reference, though legitimate German word."},{term:"massacre",severity:.7},{term:"slaughter",severity:.7},{term:"torture",severity:.7},{term:"lynch",severity:1,note:"Racist mob killing reference, though also a surname."},{term:"killer",severity:.5},{term:"mobster",severity:.5,note:"Organized crime reference."},{term:"gangster",severity:.3,note:"Criminal reference or slang."},{term:"druglord",severity:.5,note:"Drug trafficking reference."},{term:"drugs",severity:.3,note:"General term that can be legitimate or problematic."},{term:"meth",severity:.5,note:"Reference to illegal drug, though also shorthand for 'method'."},{term:"cocaine",severity:.5},{term:"heroin",severity:.5},{term:"weed",severity:.3,note:"Marijuana reference with varying legal status, also refers to plants."},{term:"marijuana",severity:.3,note:"Cannabis reference with complex legal status."},{term:"crack",severity:.5,note:"Drug reference or legitimate verb."},{term:"amphetamine",severity:.5},{term:"benzo",severity:.3,note:"Drug abbreviation or name prefix."},{term:"benzodiazepine",severity:.5},{term:"opioid",severity:.3,note:"Drug class, medical term."},{term:"opiate",severity:.3,note:"Drug class, medical term."},{term:"ketamine",severity:.5,note:"Drug reference or medical use."},{term:"rohypnol",severity:.7,note:"Date rape drug reference."},{term:"i like",severity:.2,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"i love",severity:.3,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"i hate",severity:.5,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"young",severity:.2,note:"Age reference with legitimate uses but flagged in combination."},{term:"underage",severity:.8,note:"Age reference with concerning implications in certain contexts."},{term:"teen",severity:.3,note:"Age reference, concerning in some contexts."},{term:"adolescent",severity:.2,note:"Age term, concerning in some contexts."},{term:"preteen",severity:.4,note:"Age reference with concerning implications in certain contexts."},{term:"rapist",severity:1},{term:"raping",severity:1},{term:"incest",severity:1},{term:"cult",severity:.3,note:"Religious/social group term with negative connotation."},{term:"sekt",severity:.3,note:"German for 'sect', cult reference."},{term:"disembowel",severity:1},{term:"behead",severity:1},{term:"traitor",severity:.5,note:"Accusatory term."},{term:"genocide",severity:1},{term:"ethnic clean",severity:1,multiWord:!0,note:"Euphemism for genocide."},{term:"klan",severity:1},{term:"klux",severity:1},{term:"kkk",severity:1},{term:"kill",severity:.5,note:"Violent language, but common word."},{term:"organi",severity:.1,note:"Word stem for organization."},{term:"blog",severity:.1,note:"External site reference."},{term:"group",severity:.1,note:"Organizational term."},{term:"compan",severity:.1,note:"Company stem, spam indicator."},{term:"associat",severity:.1,note:"Association stem."},{term:"industr",severity:.1,note:"Industry stem, spam indicator."},{term:"corporate",severity:.1,note:"Business term, spam indicator."},{term:"famil",severity:.1,note:"Family stem, group indicator."},{term:"task",severity:.1,note:"Organizational term."},{term:"alliance",severity:.1,note:"Group term."},{term:"entertain",severity:.1,note:"Entertainment stem, promotional."},{term:"public",severity:.1,note:"Common term, promotional context."},{term:"private",severity:.1,note:"Common term, organizational."},{term:"troll",severity:.3,note:"Disruptive behavior indicator."},{term:"trolol",severity:.3,note:"Trolling variant/meme."},{term:"grief",severity:.3,note:"Gaming term for harassment."},{term:"password",severity:.3,note:"Security term, suspicious in username."},{term:"admin",severity:.7,note:"Role impersonation."},{term:"sysop",severity:.4,note:"Wikipedia role impersonation."},{term:"bureaucrat",severity:.5,note:"Wikipedia role impersonation."},{term:"moderator",severity:.5,note:"Role impersonation."},{term:"staff",severity:.5,note:"Role impersonation."},{term:"developer",severity:.5,note:"Role impersonation."},{term:"owner",severity:.4,note:"Role impersonation."},{term:"founder",severity:.3,note:"Role impersonation."},{term:"wmf",severity:.2,note:"Wikimedia Foundation impersonation."},{term:"foundation",severity:.3,note:"Organizational impersonation."},{term:"unblock",severity:.1,note:"Suggests blocked user."},{term:"4chan",severity:.5,note:"Imageboard site, trolling association."},{term:"8chan",severity:.3,note:"Controversial imageboard."},{term:"reddit",severity:.3,note:"External site reference."},{term:"plague",severity:.3,note:"Disease/attack term."},{term:"skibidi",severity:.1,note:"Internet meme reference."},{term:"milf",severity:.5},{term:"dilf",severity:.5},{term:"sext",severity:.5,note:"Sending sexual messages."},{term:"thot",severity:.3,note:"Derogatory sexual slang."},{term:"rizz",severity:.1,note:"Gen Z slang for charisma."},{term:"gyatt",severity:.1,note:"Sexualized Gen Z slang."},{term:"noob",severity:.1},{term:"lyric",severity:.1,note:"Possible lyrics website spammer."},{term:"propaganda",severity:.5,note:"Misinformation term."},{term:"asshole",severity:.7},{term:"fucktard",severity:.7},{term:"retard",severity:.7},{term:"imbecile",severity:.5},{term:"moron",severity:.5},{term:"chigga",severity:1},{term:"chigger",severity:1},{term:"wigga",severity:1},{term:"wigger",severity:1},{term:"igga",severity:.7,note:"Potential variant of racial slur.",ignore:["1994","ig94"]},{term:"igger",severity:.7,note:"Potential variant of racial slur."},{term:"mother fuck",severity:.7,multiWord:!0},{term:"bull shit",severity:.6,multiWord:!0},{term:"dumb ass",severity:.5,multiWord:!0},{term:"dumb fuck",severity:.7,multiWord:!0},{term:"goon",severity:.2,multiWord:!1}]);t.profanity=new u({a:["ɑ","𝑎","𝗮","𝕒","𝖆","𝓪","𝚊","𝞪","А","а","𝔞","𝒂","𝘢","𝛼","𝒶","𝙖","𝜶","𝐚","𝖺","🄰","🅰️","🅰","Ⓐ","ⓐ","@"],b:["b","𝑏","𝗯","𝕓","𝖇","𝓫","𝚋","𝞫","Ь","в","𝔟","𝒃","𝘣","𝛃","𝒷","𝙗","𝜷","𝐛","𝖻","🄱","🅱️","🅱","Ⓑ","ⓑ"],c:["c","𝑐","𝗰","𝕔","𝖈","𝓬","𝚌","ϲ","с","𝔠","𝒄","𝘤","𝒸","𝙘","𝐜","𝖼","🄲","Ⓒ","ⓒ"],d:["d","𝑑","𝗱","𝕕","𝖉","𝓭","𝚍","𝞭","ԁ","ԃ","𝔡","𝒅","𝘥","𝛿","𝒹","𝙙","𝜹","𝐝","𝖽","𝝏","🄳","Ⓓ","ⓓ"],e:["e","𝑒","𝗲","𝕖","𝖊","𝓮","𝚎","𝞮","е","𝔢","𝒆","𝘦","𝛆","","𝙚","𝜺","𝐞","𝖾","з","𝝐","🄴","Ⓔ","ⓔ","€"],f:["f","𝑓","𝗳","𝕗","𝖋","𝓯","𝚏","𝞯","ғ","ƒ","𝔣","𝒇","𝘧","𝒻","𝙛","𝜻","𝐟","𝖿","🄵","Ⓕ","ⓕ"],g:["g","𝑔","𝗴","𝕘","𝖌","𝓰","𝚐","ɡ","Ԍ","ԍ","𝔤","𝒈","𝘨","𝙜","𝐠","𝗀","🄶","Ⓖ","ⓖ"],h:["h","𝗵","𝕙","𝖍","𝓱","𝚑","һ","н","𝔥","𝒉","𝘩","ℎ","𝒽","𝙝","𝐡","𝗁","🄷","Ⓗ","ⓗ"],i:["i","𝑖","𝗶","𝕚","𝖎","𝓲","𝚒","𝞲","і","𝔦","𝒊","𝘪","𝒾","𝙞","𝜾","𝐢","𝗂","🄸","ℹ️","ℹ","Ⓘ","ⓘ","!"],j:["j","𝑗","𝗷","𝕛","𝖏","𝓳","𝚳","ј","𝔧","𝒋","𝘫","𝒿","𝙟","𝐣","𝗃","🄹","Ⓙ","ⓙ"],k:["k","𝑘","𝗸","𝕜","𝖐","𝓴","κ","к","𝔨","𝒌","𝘬","𝓀","𝙠","𝝀","𝐤","𝗄","𝞳","𝜿","қ","🄺","Ⓚ","ⓚ"],l:["l","𝑙","𝗹","𝕝","𝖑","𝓵","ⅼ","ӏ","𝔩","𝒍","𝘭","𝓁","𝙡","𝐥","𝗅","🄻","Ⓛ","ⓛ","|"],m:["m","𝑚","𝗺","𝕞","𝖒","𝓶","𝚖","м","𝔪","𝒎","𝘮","𝓂","𝙢","𝐦","𝗆","🄼","Ⓜ️","Ⓜ","ⓜ"],n:["n","𝑛","𝗻","𝕟","𝖓","𝓷","𝚗","ո","п","𝔫","𝒏","𝘯","𝓃","𝙣","𝐧","𝗇","𝞰","𝜼","🄽","Ⓝ","ⓝ"],o:["o","𝑜","𝗼","𝕠","𝖔","𝓸","𝚘","ο","о","𝔬","𝒐","𝘰","𝙤","𝝈","𝐨","𝗈","𝜽","𝝄","𝝓","𝝑","𝝋","🄾","🅾️","🅾","Ⓞ","ⓞ"],p:["p","𝑝","𝗽","𝕡","𝖕","𝓹","𝚙","ρ","р","𝔭","𝒑","𝘱","𝓅","𝙥","𝐩","𝗉","𝝆","🄿","🅿️","🅿","Ⓟ","ⓟ"],q:["q","𝑞","𝗾","𝕢","𝖖","𝓺","𝚚","ԛ","𝔮","𝒒","𝘲","𝓆","𝙦","𝐪","𝗊","🅀","Ⓠ","ⓠ"],r:["r","𝑟","𝗿","𝕣","𝖗","𝓻","𝚛","г","𝔯","𝒓","𝘳","𝓇","𝙧","𝐫","𝗋","𝞽","🅁","Ⓡ","ⓡ"],s:["s","𝑠","𝗌","𝕤","𝖘","𝓼","𝚜","ѕ","𝔰","𝒔","𝘴","𝓈","𝙨","𝐬","🅂","Ⓢ","ⓢ","$"],t:["t","𝑡","𝗍","𝕥","𝖙","𝓽","𝚝","τ","т","𝔱","𝒕","𝘵","𝓉","𝙩","𝐭","𝝉","🅃","Ⓣ","ⓣ","+"],u:["u","𝑢","𝗎","𝕦","𝖚","𝓾","𝚞","υ","𝔲","𝒖","𝘶","𝓊","𝙪","𝐮","𝛍","🅄","Ⓤ","ⓤ"],v:["v","𝑣","𝗏","𝕧","𝖛","𝓿","𝚟","ν","𝔳","𝒗","𝘷","𝓋","𝙫","𝐯","𝞶","𝝂","𝝊","🅅","Ⓥ","ⓥ"],w:["w","𝑤","𝗐","𝕨","𝖜","𝔀","𝚠","ω","ш","𝔴","𝒘","𝘸","𝓌","𝙬","𝐰","𝝎","𝝍","🅆","Ⓦ","ⓦ"],x:["x","𝑥","𝗑","𝕩","𝖝","𝔁","𝚡","χ","х","𝔵","𝒙","𝘹","𝓍","𝙭","𝐱","𝝒","𝝌","🅇","Ⓧ","ⓧ"],y:["y","𝑦","𝗒","𝕪","𝖞","𝔂","𝚢","у","𝔶","𝒚","𝘺","𝓎","𝙮","𝐲","𝞬","𝜸","𝞴","🅈","Ⓨ","ⓨ"],z:["z","𝑧","𝗓","𝕫","𝖟","𝔃","𝚣","ζ","𝔷","𝒛","𝘻","𝓏","𝙯","𝐳","🅉","Ⓩ","ⓩ"],0:["0","𝟎","𝟬","𝟢"],1:["1","𝟏","𝟭","𝟣","①","➀","❶","➊","⓵"],2:["2","𝟐","𝟮","𝟤","②","➁","❷","➋","⓶"],3:["3","𝟑","𝟯","𝟥","③","➂","❸","➌","⓷"],4:["4","𝟒","𝟰","𝟦","④","➃","❹","➍","⓸","ᛋ"],5:["5","𝟓","𝟱","𝟧","⑤","➄","❺","➎","⓹"],6:["6","𝟔","𝟲","𝟨","⑥","➅","❻","➏","⓺"],7:["7","𝟕","𝟳","𝟩","⑦","➆","❼","➐","⓻"],8:["8","𝟖","𝟴","𝟪","⑧","➇","❽","➑","⓼"],9:["9","𝟗","𝟵","𝟫","⑨","➈","❾","➒","⓽"]})},4712(e,t){function n(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function s(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Logger=void 0;var i=new WeakSet;function a(e,t,n=!1){const s=(new Date).toISOString();this.logs.push({type:e,timestamp:s,message:t,expected:n})}t.Logger=class{constructor(){n(this,i),this.logs=[]}getLogs(){return[...this.logs]}log(e,t){s(i,this,a).call(this,"log",e,t)}warn(e,t){s(i,this,a).call(this,"warn",e,t)}error(e,t){s(i,this,a).call(this,"error",e,t)}dev(e,t){s(i,this,a).call(this,"dev",e,t)}}},9501(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.StorageManager=void 0;var s,i,a,r=n(4712),o=n(4029);n(9458),n(7345),n(7704),n(8415);class l{static get versions(){return new Map([[0,o.Version.v0],[1,o.Version.v1],[2,o.Version.v2],[3,o.Version.v3]])}constructor(){this.reset(new r.Logger)}reset(e){return null==e||e.log("Resetting storage to default."),this.data=l.version.default,l.version.init(e,this.data),l.version.validate(),l.version.construct(),this.data}load(e={}){var t,n;const s=new r.Logger;let i=null!==(n=(t=e).version)&&void 0!==n?n:t.version=0;if(i>l.version.number)return window.alert("The storage data is from a newer version of WikiShield. Please update to the latest version so that your data can be loaded correctly."),void window.location.reload();if(l.versions.has(i)){const t=l.version.number;for(;i!==t;){const t=l.versions.get(i+1);if(!("function"==typeof(null==t?void 0:t.constructor)&&new t instanceof o.Version)){s.dev("[MISSING_UPGRADE_METHOD] Uh oh! Something has gone wrong; this message should never appear. Please report this to the WikiShield developers."),e=this.reset(s);break}s.log(`Upgrading storage from version ${i} to ${i+1}`,!0);try{if(!t.init(s,e)){e=this.reset(s);break}(e=t.upgrade()).version=++i}catch(t){s.error(`Error upgrading storage from version ${i} to ${i+1}: ${t}`),e=this.reset(s);break}}i=e.version,s.log(`Initializing storage at version ${i}.`,!0),l.version.init(s,e),s.log(`Validating storage at version ${i}.`,!0),l.version.validate(),s.log(`Constructing storage at version ${i}.`,!0),e=l.version.construct(),s.log(`Storage loaded successfully at version ${i}.`,!0),this.data=e}else s.error(`Storage version ${i} is corrupted or unsupported.`),this.reset(s);return{data:this.data,logs:s.getLogs()}}save(){const e=new r.Logger,t=l.version.number;e.log(`Initializing storage at version ${t}.`,!0),l.version.init(e,this.data),e.log(`Deconstructing storage at version ${t}.`,!0);const n=l.version.deconstruct();return e.log(`Storage saved successfully at version ${t}.`,!0),{data:n,logs:e.getLogs()}}decode(e){try{return this.load(JSON.parse(atob(e.trim()||"e30=")))}catch(e){return this.load({})}}encode(){const{data:e,logs:t}=this.save();return{string:btoa(JSON.stringify(e)),logs:t}}static output(e,t="<unknown>",n=console){var s;const i=!e.some(e=>!e.expected);null==n||null===(s=n.log)||void 0===s||s.call(n,`[${i?" ":"X"}] WikiShield Storage Logs: ${t}`);for(const t of e){var a;let e=`[${t.expected?" ":"X"}][${t.timestamp}][Storage]`,s=t.type;"dev"===s&&(s="error",e=`#DEV# ${e}`),null==n||null===(a=n[s])||void 0===a||a.call(n,`${e} ${t.message}`)}}static okay(e,t=console){var n,s,i,a;null!=e||(e=(new l).load(l.versions.get(0).default));const r=!(null===(n=null===(s=e.logs)||void 0===s||null===(i=s.some)||void 0===i?void 0:i.call(s,e=>!e.expected))||void 0===n||n);return r||(null!==(a=void l.output(e.logs,"Storage Check",t))&&void 0!==a?a:r)}}t.StorageManager=l,s=l,i="version",a=o.Version.v3,(i=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(i))in s?Object.defineProperty(s,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[i]=a},330(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isURL=t.isObject=void 0;t.isObject=e=>null!==e&&"object"==typeof e&&!Array.isArray(e);t.isURL=e=>{try{return new URL(e),!0}catch(e){return!1}}},4029(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Version=void 0;var s=n(4712),i=n(330);function a(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class r{static sanitize(e,t,n=null){var s;const i=e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.loadedData);if(void 0===i)return null!==(s=void this.loadedLogger.warn(`Missing expected key path [ ${e.join(" -> ")} ] in stored data, defaulting to fallback value.`))&&void 0!==s?s:t;if("function"==typeof n){var a;const s=n(i);return void 0===s?null!==(a=void this.loadedLogger.warn(`Invalid value at key path [ ${e.join(" -> ")} ] in stored data, defaulting to fallback value.`))&&void 0!==a?a:t:s}return i}static exists(...e){return void 0!==e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.loadedData)}static deprecated(...e){var t;return!!this.exists(...e)&&(null===(t=void this.loadedLogger.warn(`Skipped deprecated key path [ ${e.join(" -> ")} ] in stored data.`,!0))||void 0===t||t)}static reset(...e){this.loadedLogger.warn(`Resetting key path [ ${e.join(" -> ")} ] in stored data to default value.`);const t=e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.default);if(void 0===t)return void this.loadedLogger.dev(`Could not find default value for key path [ ${e.join(" -> ")} ] in stored data.`);const n=e.pop();e.reduce((e,t)=>(void 0===e[t]&&(e[t]={}),e[t]),this.loadedData)[n]=t}static restrictObject(e,...t){var n;if(!(0,i.isObject)(e))return null!==(n=void this.reset(...t))&&void 0!==n&&n;const s=Object.keys(t.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.default));return Object.keys(e).forEach(n=>{s.includes(n)||(this.loadedLogger.warn(`Removing unexpected key [ ${[...t,n].join(" -> ")} ] from stored data.`),delete e[n])}),!0}static get default(){return{}}static init(e,t){return this.loadedLogger=e,this.loadedData=t,!0}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");return{}}static validate(){var e;const t=this.loadedData;return this.restrictObject(t),t.version===this.number||null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e}}t.Version=r,a(r,"loadedLogger",new s.Logger),a(r,"loadedData",{}),a(r,"number",0)},9458(e,t,n){var s,i,a,r,o=n(4029);o.Version.v0=(s=class extends o.Version{static get default(){return{version:0,changelog:"0",options:{maxQueueSize:50,maxEditCount:50,minimumORESScore:0,enableSoundAlerts:!0,soundAlertORESScore:.95,enableUsernameHighlighting:!0,enableWelcomeLatin:!1,enableAutoWelcome:!1,enableEditAnalysis:!1,enableUsernameAnalysis:!1,enableAutoReporting:!0,selectedAutoReportReasons:{Vandalism:!0,"Subtle vandalism":!0,"Image vandalism":!0,Sandbox:!0,Unsourced:!0,"Unsourced (BLP)":!0,"Unsourced genre":!0,POV:!1,Commentary:!0,"AI-generated":!0,"AI-generated (talk)":!0,"MOS violation":!1,Censoring:!1,Disruption:!0,Deleting:!0,Errors:!0,"Editing tests":!0,Chatting:!1,Jokes:!0,Owning:!1,Advertising:!0,"Spam links":!0,"Personal attacks":!0,TPO:!0,"AfD removal":!0},zen:{enabled:!1,sounds:!0,watchlist:!1,notifications:!0,editCount:!1,toasts:!1},enableCloudStorage:!0,masterVolume:.5,volumes:{click:.5,notification:.5,watchlist:.5,alert:.5,whoosh:.5,warn:.5,rollback:.5,report:.5,thank:.5,protection:.5,block:.5,sparkle:.5,success:.5,error:.5},soundMappings:{click:"click",notification:"notify",watchlist:"ping",alert:"alert",whoosh:"whoosh",warn:"warn",rollback:"rollback",report:"report",thank:"thank",protection:"protection",block:"block",sparkle:"sparkle",success:"success",error:"error"},watchlistExpiry:"1 week",whitelistExpiry:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlightedExpiry:{users:"1 week",pages:"1 week",tags:"1 week"},wiki:"en",namespacesShown:[0],showTemps:!0,showUsers:!0,sortQueueItems:!0,enableOllamaAI:!1,ollamaServerUrl:"http://localhost:11434",ollamaModel:"",controlScripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warningType:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"if",condition:"operatorNonAdmin",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Mentor"}}]}],selectedPalette:0,theme:"theme-light"},statistics:{reviewed:0,reverts:0,reverts:0,reports:0,warnings:0,welcomes:0,whitelisted:0,highlighted:0,blocks:0,sessionStart:Date.now()},whitelist:{users:[],pages:[],tags:[]},highlighted:{users:[],pages:[],tags:[]},queueWidth:"15vw",detailsWidth:"15vw"}}},i=s,r=0,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7345(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(4029);g.Version.v1=(s=class extends g.Version{static get default(){return{version:1,changelog:"3",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,recent:{enabled:!0,order:0},flagged:{enabled:!0,order:1},users:{enabled:!0,order:2},watchlist:{enabled:!0,order:3}},cloud_storage:{enabled:!0},username_highlighting:{enabled:!0,fuzzy:!0},auto_welcome:{enabled:!0},expiry:{watchlist:"1 week",whitelist:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlight:{users:"1 week",pages:"1 week",tags:"1 week"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Unsourced","Unsourced (BLP)","Unsourced genre","Commentary","AI-generated","AI-generated (talk)","Censoring",,"Disruption","Deleting","Errors","Editing tests","Jokes","Advertising","Spam links","Personal attacks","TPO","AfD removal"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.notice":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},notices:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}}},UI:{theme:{palette:0},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warningType:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"if",condition:"operatorNonAdmin",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Auto"}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");this.deprecated("options","enableWelcomeLatin"),this.deprecated("options","volumes","whoosh"),this.deprecated("options","volumes","warn"),this.deprecated("options","volumes","rollback"),this.deprecated("options","volumes","thank"),this.deprecated("options","volumes","sparkle"),this.deprecated("options","volumes","watchlist"),this.deprecated("options","volumes","success"),this.deprecated("options","volumes","error"),this.deprecated("options","soundMappings"),this.deprecated("options","wiki"),this.deprecated("options","showTemps"),this.deprecated("options","showUsers"),this.deprecated("options","sortQueueItems"),this.deprecated("options","theme"),this.deprecated("options","zen","editCount"),this.deprecated("options","zen","watchlist");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:e.settings.performance.startup},namespaces:this.sanitize(["options","namespacesShown"],e.settings.namespaces),queue:{max_size:this.sanitize(["options","maxQueueSize"],e.settings.queue.max_size),max_edits:this.sanitize(["options","maxEditCount"],e.settings.queue.max_edits),min_ores:this.sanitize(["options","minimumORESScore"],e.settings.queue.min_ores),recent:{enabled:e.settings.queue.recent.enabled,order:e.settings.queue.recent.order},flagged:{enabled:e.settings.queue.flagged.enabled,order:e.settings.queue.flagged.order},users:{enabled:e.settings.queue.users.enabled,order:e.settings.queue.users.order},watchlist:{enabled:e.settings.queue.watchlist.enabled,order:e.settings.queue.watchlist.order}},cloud_storage:{enabled:this.sanitize(["options","enableCloudStorage"],e.settings.cloud_storage.enabled)},username_highlighting:{enabled:this.sanitize(["options","enableUsernameHighlighting"],e.settings.username_highlighting.enabled),fuzzy:e.settings.username_highlighting.fuzzy},auto_welcome:{enabled:this.sanitize(["options","enableAutoWelcome"],e.settings.auto_welcome.enabled)},expiry:{watchlist:this.sanitize(["options","watchlistExpiry"],e.settings.expiry.watchlist),whitelist:{users:this.sanitize(["options","whitelistExpiry","users"],e.settings.expiry.whitelist.users),pages:this.sanitize(["options","whitelistExpiry","pages"],e.settings.expiry.whitelist.pages),tags:this.sanitize(["options","whitelistExpiry","tags"],e.settings.expiry.whitelist.tags)},highlight:{users:this.sanitize(["options","highlightedExpiry","users"],e.settings.expiry.highlight.users),pages:this.sanitize(["options","highlightedExpiry","pages"],e.settings.expiry.highlight.pages),tags:this.sanitize(["options","highlightedExpiry","tags"],e.settings.expiry.highlight.tags)}},auto_report:{enabled:this.sanitize(["options","enableAutoReporting"],e.settings.auto_report.enabled),for:this.sanitize(["options","selectedAutoReportReasons"],e.settings.auto_report.for,e=>{if((0,o.isObject)(e))return e["AI-generated"]=e["AI-Generated"],delete e["AI-Generated"],e["AI-generated (talk)"]=e["AI-Generated (talk)"],delete e["AI-Generated (talk)"],Object.keys(e).filter(t=>!0===(null==e?void 0:e[t]))})},AI:{enabled:this.sanitize(["options","enableOllamaAI"],e.settings.AI.enabled),provider:e.settings.AI.provider,edit_analysis:{enabled:this.sanitize(["options","enableEditAnalysis"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["options","enableUsernameAnalysis"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["options","ollamaServerUrl"],e.settings.AI.Ollama.server),model:this.sanitize(["options","ollamaModel"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["options","enableSoundAlerts"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["options","soundAlertORESScore"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["options","masterVolume"],e.settings.audio.volume.master),"master.startup":e.settings.audio.volume["master.startup"],"master.music":e.settings.audio.volume["master.music"],"master.music.zen_mode":e.settings.audio.volume["master.music.zen_mode"],"master.ui":e.settings.audio.volume["master.ui"],"master.ui.click":this.sanitize(["options","volumes","click"],e.settings.audio.volume["master.ui.click"]),"master.queue":e.settings.audio.volume["master.queue"],"master.queue.ores":this.sanitize(["options","volumes","alert"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":e.settings.audio.volume["master.queue.mention"],"master.notification":e.settings.audio.volume["master.notification"],"master.notification.alert":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.alert"]),"master.notification.notice":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.notice"]),"master.notification.toast":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.toast"]),"master.action":e.settings.audio.volume["master.action"],"master.action.default":e.settings.audio.volume["master.action.default"],"master.action.failed":e.settings.audio.volume["master.action.failed"],"master.action.report":this.sanitize(["options","volumes","report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["options","volumes","block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["options","volumes","protection"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["options","zen","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["options","zen","sounds"],e.settings.zen_mode.sound.enabled)},music:{enabled:e.settings.zen_mode.music.enabled},alerts:{enabled:this.sanitize(["options","zen","notifications"],e.settings.zen_mode.alerts.enabled)},notices:{enabled:this.sanitize(["options","zen","notifications"],e.settings.zen_mode.notices.enabled)},toasts:{enabled:this.sanitize(["options","zen","toasts"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:e.settings.zen_mode.badges.enabled}}},UI:{theme:{palette:this.sanitize(["options","selectedPalette"],e.UI.theme.palette)},queue:{width:this.sanitize(["queueWidth"],e.UI.queue.width)},details:{width:this.sanitize(["detailsWidth"],e.UI.details.width)}},control_scripts:this.sanitize(["options","controlScripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name){if(!(e.condition in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else switch(e.name){case"welcome":if(!(0,o.isObject)(e.params))return!0;switch(e.params.template){case"Links":e.params.template="Graphical";break;case"Latin":e.params.template="Non-Latin";break;case"Mentor":return this.loadedLogger.warn(`Skipped deprecated "Mentor" welcome template at key [${[...n,s,"params","template"].join(" -> ")}].`,!0),!1}break;case"warn":if(!(0,o.isObject)(e.params))return!0;switch(e.params.warningType){case"AI-Generated":e.params.warningType="AI-generated";break;case"AI-Generated (talk)":e.params.warningType="AI-generated (talk)"}}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:e.statistics.edits_reviewed.total,thanked:e.statistics.edits_reviewed.thanked},recent_changes_reviewed:{total:e.statistics.recent_changes_reviewed.total},pending_changes_reviewed:{total:e.statistics.pending_changes_reviewed.total,accepted:e.statistics.pending_changes_reviewed.accepted,rejected:e.statistics.pending_changes_reviewed.rejected},watchlist_changes_reviewed:{total:e.statistics.watchlist_changes_reviewed.total},users_reviewed:{total:e.statistics.users_reviewed.total},reverts_made:{total:e.statistics.reverts_made.total,good_faith:e.statistics.reverts_made.good_faith,from_recent_changes:e.statistics.reverts_made.from_recent_changes,from_pending_changes:e.statistics.reverts_made.from_pending_changes,from_watchlist:e.statistics.reverts_made.from_watchlist,from_loaded_edits:e.statistics.reverts_made.from_loaded_edits},users_welcomed:{total:e.statistics.users_welcomed.total},warnings_issued:{total:e.statistics.warnings_issued.total,level_1:e.statistics.warnings_issued.level_1,level_2:e.statistics.warnings_issued.level_2,level_3:e.statistics.warnings_issued.level_3,level_4:e.statistics.warnings_issued.level_4,level_4im:e.statistics.warnings_issued.level_4im},reports_filed:{total:e.statistics.reports_filed.total,AIV:e.statistics.reports_filed.AIV,UAA:e.statistics.reports_filed.UAA,RFPP:e.statistics.reports_filed.RFPP},watchlist:{watched:e.statistics.watchlist.watched,unwatched:e.statistics.watchlist.unwatched},items_whitelisted:{total:e.statistics.items_whitelisted.total,users:e.statistics.items_whitelisted.users,pages:e.statistics.items_whitelisted.pages,tags:e.statistics.items_whitelisted.tags},items_highlighted:{total:e.statistics.items_highlighted.total,users:e.statistics.items_highlighted.users,pages:e.statistics.items_highlighted.pages,tags:e.statistics.items_highlighted.tags},blocks_issued:{total:e.statistics.blocks_issued.total},pages_protected:{total:e.statistics.pages_protected.total},actions_executed:{total:e.statistics.actions_executed.total,successful:e.statistics.actions_executed.successful},session_time:e.statistics.session_time},highlight:{users:this.sanitize(["highlighted","users"],e.highlight.users),pages:this.sanitize(["highlighted","pages"],e.highlight.pages),tags:this.sanitize(["highlighted","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),t.version!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const g=t.settings.namespaces;Array.isArray(g)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const h=t.settings.queue;this.restrictObject(h,"settings","queue");{const m=t.settings.queue.max_size;"number"==typeof m&&Number.isInteger(m)&&m>0||this.reset("settings","queue","max_size")}{const v=t.settings.queue.max_edits;"number"==typeof v&&Number.isInteger(v)&&v>0||this.reset("settings","queue","max_edits")}{const f=t.settings.queue.min_ores;"number"==typeof f&&f>=0&&f<=1||this.reset("settings","queue","min_ores")}["recent","flagged","users","watchlist"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const b=t.settings.cloud_storage;this.restrictObject(b,"settings","cloud_storage");"boolean"!=typeof t.settings.cloud_storage.enabled&&this.reset("settings","cloud_storage","enabled")}{const w=t.settings.username_highlighting;this.restrictObject(w,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const y=t.settings.auto_welcome;this.restrictObject(y,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const x=new Set(["none","1 hour","1 day","1 week","1 month","3 months","6 months","indefinite"]),k=t.settings.expiry;this.restrictObject(k,"settings","expiry");{const _=t.settings.expiry.watchlist;x.has(_)||this.reset("settings","expiry","watchlist")}{const S=t.settings.expiry.whitelist;this.restrictObject(S,"settings","expiry","whitelist");{const q=t.settings.expiry.whitelist.users;x.has(q)||this.reset("settings","expiry","whitelist","users")}{const E=t.settings.expiry.whitelist.pages;x.has(E)||this.reset("settings","expiry","whitelist","pages")}{const L=t.settings.expiry.whitelist.tags;x.has(L)||this.reset("settings","expiry","whitelist","tags")}}{const A=t.settings.expiry.highlight;this.restrictObject(A,"settings","expiry","highlight");{const T=t.settings.expiry.highlight.users;x.has(T)||this.reset("settings","expiry","highlight","users")}{const C=t.settings.expiry.highlight.pages;x.has(C)||this.reset("settings","expiry","highlight","pages")}{const z=t.settings.expiry.highlight.tags;x.has(z)||this.reset("settings","expiry","highlight","tags")}}}{const $=t.settings.auto_report;this.restrictObject($,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const M=t.settings.auto_report.for;Array.isArray(M)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const O=t.settings.AI;this.restrictObject(O,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const I=t.settings.AI.edit_analysis;this.restrictObject(I,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const P=t.settings.AI.username_analysis;this.restrictObject(P,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const j=t.settings.AI.Ollama;this.restrictObject(j,"settings","AI","Ollama");{const W=t.settings.AI.Ollama.server;(0,o.isURL)(W)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const N=t.settings.audio;this.restrictObject(N,"settings","audio");{const D=t.settings.audio.ores_alert;this.restrictObject(D,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const R=t.settings.audio.ores_alert.threshold;"number"==typeof R&&R>=0&&R<=1||this.reset("settings","audio","ores_alert","threshold")}}{const U=t.settings.audio.volume;this.restrictObject(U,"settings","audio","volume");const H=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.notice","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const F of H){const V=t.settings.audio.volume[F];"number"==typeof V&&V>=0&&V<=1||this.reset("settings","audio","volume",F)}}}{const B=t.settings.zen_mode;this.restrictObject(B,"settings","zen_mode");"boolean"!=typeof B.enabled&&this.reset("settings","zen_mode","enabled");{const G=t.settings.zen_mode.sound;this.restrictObject(G,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const Q=t.settings.zen_mode.music;this.restrictObject(Q,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const Y=t.settings.zen_mode.alerts;this.restrictObject(Y,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const Z=t.settings.zen_mode.notices;this.restrictObject(Z,"settings","zen_mode","notices");"boolean"!=typeof t.settings.zen_mode.notices.enabled&&this.reset("settings","zen_mode","notices","enabled")}{const K=t.settings.zen_mode.toasts;this.restrictObject(K,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const X=t.settings.zen_mode.badges;this.restrictObject(X,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}}{const J=t.UI;this.restrictObject(J,"UI");{const ee=t.UI.theme;this.restrictObject(ee,"UI","theme");{const te=t.UI.theme.palette;"number"==typeof te&&Number.isInteger(te)&&te>=0&&te<=3||this.reset("UI","theme","palette")}}{const ne=t.UI.queue;this.restrictObject(ne,"UI","queue");{const se=t.UI.queue.width;"string"==typeof se&&se.endsWith("vw")||this.reset("UI","queue","width");const ie=parseFloat(se.slice(0,-2));"number"==typeof ie&&!isNaN(ie)&&ie>=10&&ie<=30||this.reset("UI","queue","width")}}{const ae=t.UI.details;this.restrictObject(ae,"UI","details");{const re=t.UI.details.width;"string"==typeof re&&re.endsWith("vw")||this.reset("UI","details","width");const oe=parseFloat(re.slice(0,-2));"number"==typeof oe&&!isNaN(oe)&&oe>=10&&oe<=30||this.reset("UI","details","width")}}}{const le=t.control_scripts;function de(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name){var i;if(!(e.condition in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${e.condition} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]),e.actions=de.call(this,e.actions,...t,n,"actions")}else{var a;if(!(e.name in c.events))return this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`),!1;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=null!==(a=c.events[e.name].parameters)&&void 0!==a?a:[],i=new Set;for(const a of s)i.add(a.id),"choice"===a.type&&(a.id in e.params||(this.loadedLogger.warn(`Resetting missing choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]),a.options.includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]));for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(le)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>p.controls.has(e)),t.control_scripts[n].actions=de.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const ce=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,ue=t.statistics;this.restrictObject(ue,"statistics");{const pe=t.statistics.edits_reviewed;this.restrictObject(pe,"statistics","edits_reviewed");ce(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");ce(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const ge=t.statistics.recent_changes_reviewed;this.restrictObject(ge,"statistics","recent_changes_reviewed");ce(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const he=t.statistics.pending_changes_reviewed;this.restrictObject(he,"statistics","pending_changes_reviewed");ce(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");ce(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");ce(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const me=t.statistics.watchlist_changes_reviewed;this.restrictObject(me,"statistics","watchlist_changes_reviewed");ce(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const ve=t.statistics.users_reviewed;this.restrictObject(ve,"statistics","users_reviewed");ce(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const fe=t.statistics.reverts_made;this.restrictObject(fe,"statistics","reverts_made");ce(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");ce(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");ce(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");ce(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");ce(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");ce(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const be=t.statistics.users_welcomed;this.restrictObject(be,"statistics","users_welcomed");ce(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const we=t.statistics.warnings_issued;this.restrictObject(we,"statistics","warnings_issued");ce(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");ce(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");ce(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");ce(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");ce(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");ce(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const ye=t.statistics.reports_filed;this.restrictObject(ye,"statistics","reports_filed");ce(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");ce(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");ce(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");ce(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP")}{const xe=t.statistics.watchlist;this.restrictObject(xe,"statistics","watchlist");ce(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");ce(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const ke=t.statistics.items_whitelisted;this.restrictObject(ke,"statistics","items_whitelisted");ce(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");ce(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");ce(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");ce(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const _e=t.statistics.items_highlighted;this.restrictObject(_e,"statistics","items_highlighted");ce(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");ce(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");ce(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");ce(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const Se=t.statistics.blocks_issued;this.restrictObject(Se,"statistics","blocks_issued");ce(t.statistics.blocks_issued.total)||this.reset("statistics","blocks_issued","total")}{const qe=t.statistics.pages_protected;this.restrictObject(qe,"statistics","pages_protected");ce(t.statistics.pages_protected.total)||this.reset("statistics","pages_protected","total")}{const Ee=t.statistics.actions_executed;this.restrictObject(Ee,"statistics","actions_executed");ce(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");ce(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const Le=t.statistics.session_time;"number"==typeof Le&&Le>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const Ae=t.highlight;this.restrictObject(Ae,"highlight");{const Te=t.highlight.users;Array.isArray(Te)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const Ce=t.highlight.pages;Array.isArray(Ce)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const ze=t.highlight.tags;Array.isArray(ze)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const $e=t.whitelist;this.restrictObject($e,"whitelist");{const Me=t.whitelist.users;Array.isArray(Me)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const Oe=t.whitelist.pages;Array.isArray(Oe)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const Ie=t.whitelist.tags;Array.isArray(Ie)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=1,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7704(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(4029);g.Version.v2=(s=class extends g.Version{static get default(){return{version:2,changelog:"6",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,recent:{enabled:!0,order:0},flagged:{enabled:!0,order:1},users:{enabled:!0,order:2},watchlist:{enabled:!0,order:3}},cloud_storage:{enabled:!0},username_highlighting:{enabled:!0,fuzzy:!0},wikipedia_popups:{enabled:!0},auto_welcome:{enabled:!1},expiry:{watchlist:"1 week",whitelist:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlight:{users:"1 week",pages:"1 week",tags:"1 week"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Deliberate errors","Disruptive editing","Editing tests","Commentary","Inappropriate jokes","Deleting","Unsourced","Unsourced (BLP)","Unsourced genre","Original research","Censoring","AI-generated","AI-generated (talk)","Personal attacks","Harassment","TPO",,"AfD removal","Advertising","Spam links","Inappropriate edit summary","Misleading edit summary"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.notice":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},notices:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}},repeat_control_scripts:!0},UI:{theme:{palette:0},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warning:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Auto"}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]},favorite:{warnings:[],reverts:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:this.sanitize(["settings","performance","startup"],e.settings.performance.startup)},namespaces:this.sanitize(["settings","namespaces"],e.settings.namespaces),queue:{max_size:this.sanitize(["settings","queue","max_size"],e.settings.queue.max_size),max_edits:this.sanitize(["settings","queue","max_edits"],e.settings.queue.max_edits),min_ores:this.sanitize(["settings","queue","min_ores"],e.settings.queue.min_ores),recent:{enabled:this.sanitize(["settings","queue","recent","enabled"],e.settings.queue.recent.enabled),order:this.sanitize(["settings","queue","recent","order"],e.settings.queue.recent.order)},flagged:{enabled:this.sanitize(["settings","queue","flagged","enabled"],e.settings.queue.flagged.enabled),order:this.sanitize(["settings","queue","flagged","order"],e.settings.queue.flagged.order)},users:{enabled:this.sanitize(["settings","queue","users","enabled"],e.settings.queue.users.enabled),order:this.sanitize(["settings","queue","users","order"],e.settings.queue.users.order)},watchlist:{enabled:this.sanitize(["settings","queue","watchlist","enabled"],e.settings.queue.watchlist.enabled),order:this.sanitize(["settings","queue","watchlist","order"],e.settings.queue.watchlist.order)}},cloud_storage:{enabled:this.sanitize(["settings","cloud_storage","enabled"],e.settings.cloud_storage.enabled)},username_highlighting:{enabled:this.sanitize(["settings","username_highlighting","enabled"],e.settings.username_highlighting.enabled),fuzzy:this.sanitize(["settings","username_highlighting","fuzzy"],e.settings.username_highlighting.fuzzy)},wikipedia_popups:{enabled:e.settings.wikipedia_popups.enabled},auto_welcome:{enabled:this.sanitize(["settings","auto_welcome","enabled"],e.settings.auto_welcome.enabled)},expiry:{watchlist:this.sanitize(["settings","expiry","watchlist"],e.settings.expiry.watchlist),whitelist:{users:this.sanitize(["settings","expiry","whitelist","users"],e.settings.expiry.whitelist.users),pages:this.sanitize(["settings","expiry","whitelist","pages"],e.settings.expiry.whitelist.pages),tags:this.sanitize(["settings","expiry","whitelist","tags"],e.settings.expiry.whitelist.tags)},highlight:{users:this.sanitize(["settings","expiry","highlight","users"],e.settings.expiry.highlight.users),pages:this.sanitize(["settings","expiry","highlight","pages"],e.settings.expiry.highlight.pages),tags:this.sanitize(["settings","expiry","highlight","tags"],e.settings.expiry.highlight.tags)}},auto_report:{enabled:this.sanitize(["settings","auto_report","enabled"],e.settings.auto_report.enabled),for:this.sanitize(["settings","auto_report","for"],e.settings.auto_report.for,e=>{if(!Array.isArray(e))return;const t=new Set(["Harassment","Inappropriate edit summary","Original research"]);return e.forEach(e=>{switch(e){case"Errors":return void t.add("Deliberate errors");case"Disruption":return void t.add("Disruptive editing");case"Jokes":return void t.add("Inappropriate jokes")}t.add(e)}),[...t]})},AI:{enabled:this.sanitize(["settings","AI","enabled"],e.settings.AI.enabled),provider:this.sanitize(["settings","AI","provider"],e.settings.AI.provider),edit_analysis:{enabled:this.sanitize(["settings","AI","edit_analysis","enabled"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["settings","AI","username_analysis","enabled"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["settings","AI","Ollama","server"],e.settings.AI.Ollama.server),model:this.sanitize(["settings","AI","Ollama","model"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["settings","audio","ores_alert","enabled"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["settings","audio","ores_alert","threshold"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["settings","audio","volume","master"],e.settings.audio.volume.master),"master.startup":this.sanitize(["settings","audio","volume","master.startup"],e.settings.audio.volume["master.startup"]),"master.music":this.sanitize(["settings","audio","volume","master.music"],e.settings.audio.volume["master.music"]),"master.music.zen_mode":this.sanitize(["settings","audio","volume","master.music.zen_mode"],e.settings.audio.volume["master.music.zen_mode"]),"master.ui":this.sanitize(["settings","audio","volume","master.ui"],e.settings.audio.volume["master.ui"]),"master.ui.click":this.sanitize(["settings","audio","volume","master.ui.click"],e.settings.audio.volume["master.ui.click"]),"master.queue":this.sanitize(["settings","audio","volume","master.queue"],e.settings.audio.volume["master.queue"]),"master.queue.ores":this.sanitize(["settings","audio","volume","master.queue.ores"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":this.sanitize(["settings","audio","volume","master.queue.mention"],e.settings.audio.volume["master.queue.mention"]),"master.notification":this.sanitize(["settings","audio","volume","master.notification"],e.settings.audio.volume["master.notification"]),"master.notification.alert":this.sanitize(["settings","audio","volume","master.notification.alert"],e.settings.audio.volume["master.notification.alert"]),"master.notification.notice":this.sanitize(["settings","audio","volume","master.notification.notice"],e.settings.audio.volume["master.notification.notice"]),"master.notification.toast":this.sanitize(["settings","audio","volume","master.notification.toast"],e.settings.audio.volume["master.notification.toast"]),"master.action":this.sanitize(["settings","audio","volume","master.action"],e.settings.audio.volume["master.action"]),"master.action.default":this.sanitize(["settings","audio","volume","master.action.default"],e.settings.audio.volume["master.action.default"]),"master.action.failed":this.sanitize(["settings","audio","volume","master.action.failed"],e.settings.audio.volume["master.action.failed"]),"master.action.report":this.sanitize(["settings","audio","volume","master.action.report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["settings","audio","volume","master.action.block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["settings","audio","volume","master.action.protect"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["settings","zen_mode","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["settings","zen_mode","sound","enabled"],e.settings.zen_mode.sound.enabled)},music:{enabled:this.sanitize(["settings","zen_mode","music","enabled"],e.settings.zen_mode.music.enabled)},alerts:{enabled:this.sanitize(["settings","zen_mode","alerts","enabled"],e.settings.zen_mode.alerts.enabled)},notices:{enabled:this.sanitize(["settings","zen_mode","notices","enabled"],e.settings.zen_mode.notices.enabled)},toasts:{enabled:this.sanitize(["settings","zen_mode","toasts","enabled"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:this.sanitize(["settings","zen_mode","badges","enabled"],e.settings.zen_mode.badges.enabled)}},repeat_control_scripts:e.settings.repeat_control_scripts},UI:{theme:{palette:this.sanitize(["UI","theme","palette"],e.UI.theme.palette)},queue:{width:this.sanitize(["UI","queue","width"],e.UI.queue.width)},details:{width:this.sanitize(["UI","details","width"],e.UI.details.width)}},control_scripts:this.sanitize(["control_scripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name){if(!(e.condition in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else if("warn"===e.name){if(!(0,o.isObject)(e.params))return!0;e.params.warning=e.params.warningType,delete e.params.warningType}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:this.sanitize(["statistics","edits_reviewed","total"],e.statistics.edits_reviewed.total),thanked:this.sanitize(["statistics","edits_reviewed","thanked"],e.statistics.edits_reviewed.thanked)},recent_changes_reviewed:{total:this.sanitize(["statistics","recent_changes_reviewed","total"],e.statistics.recent_changes_reviewed.total)},pending_changes_reviewed:{total:this.sanitize(["statistics","pending_changes_reviewed","total"],e.statistics.pending_changes_reviewed.total),accepted:this.sanitize(["statistics","pending_changes_reviewed","accepted"],e.statistics.pending_changes_reviewed.accepted),rejected:this.sanitize(["statistics","pending_changes_reviewed","rejected"],e.statistics.pending_changes_reviewed.rejected)},watchlist_changes_reviewed:{total:this.sanitize(["statistics","watchlist_changes_reviewed","total"],e.statistics.watchlist_changes_reviewed.total)},users_reviewed:{total:this.sanitize(["statistics","users_reviewed","total"],e.statistics.users_reviewed.total)},reverts_made:{total:this.sanitize(["statistics","reverts_made","total"],e.statistics.reverts_made.total),good_faith:this.sanitize(["statistics","reverts_made","good_faith"],e.statistics.reverts_made.good_faith),from_recent_changes:this.sanitize(["statistics","reverts_made","from_recent_changes"],e.statistics.reverts_made.from_recent_changes),from_pending_changes:this.sanitize(["statistics","reverts_made","from_pending_changes"],e.statistics.reverts_made.from_pending_changes),from_watchlist:this.sanitize(["statistics","reverts_made","from_watchlist"],e.statistics.reverts_made.from_watchlist),from_loaded_edits:this.sanitize(["statistics","reverts_made","from_loaded_edits"],e.statistics.reverts_made.from_loaded_edits)},users_welcomed:{total:this.sanitize(["statistics","users_welcomed","total"],e.statistics.users_welcomed.total)},warnings_issued:{total:this.sanitize(["statistics","warnings_issued","total"],e.statistics.warnings_issued.total),level_1:this.sanitize(["statistics","warnings_issued","level_1"],e.statistics.warnings_issued.level_1),level_2:this.sanitize(["statistics","warnings_issued","level_2"],e.statistics.warnings_issued.level_2),level_3:this.sanitize(["statistics","warnings_issued","level_3"],e.statistics.warnings_issued.level_3),level_4:this.sanitize(["statistics","warnings_issued","level_4"],e.statistics.warnings_issued.level_4),level_4im:this.sanitize(["statistics","warnings_issued","level_4im"],e.statistics.warnings_issued.level_4im)},reports_filed:{total:this.sanitize(["statistics","reports_filed","total"],e.statistics.reports_filed.total),AIV:this.sanitize(["statistics","reports_filed","AIV"],e.statistics.reports_filed.AIV),UAA:this.sanitize(["statistics","reports_filed","UAA"],e.statistics.reports_filed.UAA),RFPP:this.sanitize(["statistics","reports_filed","RFPP"],e.statistics.reports_filed.RFPP)},watchlist:{watched:this.sanitize(["statistics","watchlist","watched"],e.statistics.watchlist.watched),unwatched:this.sanitize(["statistics","watchlist","unwatched"],e.statistics.watchlist.unwatched)},items_whitelisted:{total:this.sanitize(["statistics","items_whitelisted","total"],e.statistics.items_whitelisted.total),users:this.sanitize(["statistics","items_whitelisted","users"],e.statistics.items_whitelisted.users),pages:this.sanitize(["statistics","items_whitelisted","pages"],e.statistics.items_whitelisted.pages),tags:this.sanitize(["statistics","items_whitelisted","tags"],e.statistics.items_whitelisted.tags)},items_highlighted:{total:this.sanitize(["statistics","items_highlighted","total"],e.statistics.items_highlighted.total),users:this.sanitize(["statistics","items_highlighted","users"],e.statistics.items_highlighted.users),pages:this.sanitize(["statistics","items_highlighted","pages"],e.statistics.items_highlighted.pages),tags:this.sanitize(["statistics","items_highlighted","tags"],e.statistics.items_highlighted.tags)},blocks_issued:{total:this.sanitize(["statistics","blocks_issued","total"],e.statistics.blocks_issued.total)},pages_protected:{total:this.sanitize(["statistics","pages_protected","total"],e.statistics.pages_protected.total)},actions_executed:{total:this.sanitize(["statistics","actions_executed","total"],e.statistics.actions_executed.total),successful:this.sanitize(["statistics","actions_executed","successful"],e.statistics.actions_executed.successful)},session_time:this.sanitize(["statistics","session_time"],e.statistics.session_time)},highlight:{users:this.sanitize(["highlight","users"],e.highlight.users),pages:this.sanitize(["highlight","pages"],e.highlight.pages),tags:this.sanitize(["highlight","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)},favorite:{warnings:e.favorite.warnings,reverts:e.favorite.reverts}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),t.version!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const g=t.settings.namespaces;Array.isArray(g)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const h=t.settings.queue;this.restrictObject(h,"settings","queue");{const m=t.settings.queue.max_size;"number"==typeof m&&Number.isInteger(m)&&m>0||this.reset("settings","queue","max_size")}{const v=t.settings.queue.max_edits;"number"==typeof v&&Number.isInteger(v)&&v>0||this.reset("settings","queue","max_edits")}{const f=t.settings.queue.min_ores;"number"==typeof f&&f>=0&&f<=1||this.reset("settings","queue","min_ores")}["recent","flagged","users","watchlist"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const b=t.settings.cloud_storage;this.restrictObject(b,"settings","cloud_storage");"boolean"!=typeof t.settings.cloud_storage.enabled&&this.reset("settings","cloud_storage","enabled")}{const w=t.settings.username_highlighting;this.restrictObject(w,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const y=t.settings.wikipedia_popups;this.restrictObject(y,"settings","wikipedia_popups");"boolean"!=typeof t.settings.wikipedia_popups.enabled&&this.reset("settings","wikipedia_popups","enabled")}{const x=t.settings.auto_welcome;this.restrictObject(x,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const k=new Set(["none","1 hour","1 day","1 week","1 month","3 months","6 months","indefinite"]),_=t.settings.expiry;this.restrictObject(_,"settings","expiry");{const S=t.settings.expiry.watchlist;k.has(S)||this.reset("settings","expiry","watchlist")}{const q=t.settings.expiry.whitelist;this.restrictObject(q,"settings","expiry","whitelist");{const E=t.settings.expiry.whitelist.users;k.has(E)||this.reset("settings","expiry","whitelist","users")}{const L=t.settings.expiry.whitelist.pages;k.has(L)||this.reset("settings","expiry","whitelist","pages")}{const A=t.settings.expiry.whitelist.tags;k.has(A)||this.reset("settings","expiry","whitelist","tags")}}{const T=t.settings.expiry.highlight;this.restrictObject(T,"settings","expiry","highlight");{const C=t.settings.expiry.highlight.users;k.has(C)||this.reset("settings","expiry","highlight","users")}{const z=t.settings.expiry.highlight.pages;k.has(z)||this.reset("settings","expiry","highlight","pages")}{const $=t.settings.expiry.highlight.tags;k.has($)||this.reset("settings","expiry","highlight","tags")}}}{const M=t.settings.auto_report;this.restrictObject(M,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const O=t.settings.auto_report.for;Array.isArray(O)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const I=t.settings.AI;this.restrictObject(I,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const P=t.settings.AI.edit_analysis;this.restrictObject(P,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const j=t.settings.AI.username_analysis;this.restrictObject(j,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const W=t.settings.AI.Ollama;this.restrictObject(W,"settings","AI","Ollama");{const N=t.settings.AI.Ollama.server;(0,o.isURL)(N)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const D=t.settings.audio;this.restrictObject(D,"settings","audio");{const R=t.settings.audio.ores_alert;this.restrictObject(R,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const U=t.settings.audio.ores_alert.threshold;"number"==typeof U&&U>=0&&U<=1||this.reset("settings","audio","ores_alert","threshold")}}{const H=t.settings.audio.volume;this.restrictObject(H,"settings","audio","volume");const F=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.notice","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const V of F){const B=t.settings.audio.volume[V];"number"==typeof B&&B>=0&&B<=1||this.reset("settings","audio","volume",V)}}}{const G=t.settings.zen_mode;this.restrictObject(G,"settings","zen_mode");"boolean"!=typeof G.enabled&&this.reset("settings","zen_mode","enabled");{const Q=t.settings.zen_mode.sound;this.restrictObject(Q,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const Y=t.settings.zen_mode.music;this.restrictObject(Y,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const Z=t.settings.zen_mode.alerts;this.restrictObject(Z,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const K=t.settings.zen_mode.notices;this.restrictObject(K,"settings","zen_mode","notices");"boolean"!=typeof t.settings.zen_mode.notices.enabled&&this.reset("settings","zen_mode","notices","enabled")}{const X=t.settings.zen_mode.toasts;this.restrictObject(X,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const J=t.settings.zen_mode.badges;this.restrictObject(J,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}"boolean"!=typeof t.settings.repeat_control_scripts&&this.reset("settings","repeat_control_scripts")}{const ee=t.UI;this.restrictObject(ee,"UI");{const te=t.UI.theme;this.restrictObject(te,"UI","theme");{const ne=t.UI.theme.palette;"number"==typeof ne&&Number.isInteger(ne)&&ne>=0&&ne<=3||this.reset("UI","theme","palette")}}{const se=t.UI.queue;this.restrictObject(se,"UI","queue");{const ie=t.UI.queue.width;"string"==typeof ie&&ie.endsWith("vw")||this.reset("UI","queue","width");const ae=parseFloat(ie.slice(0,-2));"number"==typeof ae&&!isNaN(ae)&&ae>=10&&ae<=30||this.reset("UI","queue","width")}}{const re=t.UI.details;this.restrictObject(re,"UI","details");{const oe=t.UI.details.width;"string"==typeof oe&&oe.endsWith("vw")||this.reset("UI","details","width");const le=parseFloat(oe.slice(0,-2));"number"==typeof le&&!isNaN(le)&&le>=10&&le<=30||this.reset("UI","details","width")}}}{const de=t.control_scripts;function ce(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name){var i;if(!(e.condition in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${e.condition} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]),e.actions=ce.call(this,e.actions,...t,n,"actions")}else{var a,r;if(!(e.name in c.events))return null!==(a=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`))&&void 0!==a&&a;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=null!==(r=c.events[e.name].parameters)&&void 0!==r?r:[],i=new Set;for(const a of s)i.add(a.id),"choice"===a.type&&(a.id in e.params||(this.loadedLogger.warn(`Resetting missing choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]),a.options.includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]));for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(de)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>p.controls.has(e)),t.control_scripts[n].actions=ce.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const ue=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,pe=t.statistics;this.restrictObject(pe,"statistics");{const ge=t.statistics.edits_reviewed;this.restrictObject(ge,"statistics","edits_reviewed");ue(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");ue(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const he=t.statistics.recent_changes_reviewed;this.restrictObject(he,"statistics","recent_changes_reviewed");ue(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const me=t.statistics.pending_changes_reviewed;this.restrictObject(me,"statistics","pending_changes_reviewed");ue(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");ue(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");ue(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const ve=t.statistics.watchlist_changes_reviewed;this.restrictObject(ve,"statistics","watchlist_changes_reviewed");ue(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const fe=t.statistics.users_reviewed;this.restrictObject(fe,"statistics","users_reviewed");ue(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const be=t.statistics.reverts_made;this.restrictObject(be,"statistics","reverts_made");ue(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");ue(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");ue(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");ue(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");ue(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");ue(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const we=t.statistics.users_welcomed;this.restrictObject(we,"statistics","users_welcomed");ue(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const ye=t.statistics.warnings_issued;this.restrictObject(ye,"statistics","warnings_issued");ue(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");ue(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");ue(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");ue(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");ue(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");ue(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const xe=t.statistics.reports_filed;this.restrictObject(xe,"statistics","reports_filed");ue(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");ue(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");ue(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");ue(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP")}{const ke=t.statistics.watchlist;this.restrictObject(ke,"statistics","watchlist");ue(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");ue(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const _e=t.statistics.items_whitelisted;this.restrictObject(_e,"statistics","items_whitelisted");ue(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");ue(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");ue(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");ue(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const Se=t.statistics.items_highlighted;this.restrictObject(Se,"statistics","items_highlighted");ue(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");ue(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");ue(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");ue(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const qe=t.statistics.blocks_issued;this.restrictObject(qe,"statistics","blocks_issued");ue(t.statistics.blocks_issued.total)||this.reset("statistics","blocks_issued","total")}{const Ee=t.statistics.pages_protected;this.restrictObject(Ee,"statistics","pages_protected");ue(t.statistics.pages_protected.total)||this.reset("statistics","pages_protected","total")}{const Le=t.statistics.actions_executed;this.restrictObject(Le,"statistics","actions_executed");ue(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");ue(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const Ae=t.statistics.session_time;"number"==typeof Ae&&Ae>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const Te=t.highlight;this.restrictObject(Te,"highlight");{const Ce=t.highlight.users;Array.isArray(Ce)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const ze=t.highlight.pages;Array.isArray(ze)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const $e=t.highlight.tags;Array.isArray($e)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const Me=t.whitelist;this.restrictObject(Me,"whitelist");{const Oe=t.whitelist.users;Array.isArray(Oe)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const Ie=t.whitelist.pages;Array.isArray(Ie)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const Pe=t.whitelist.tags;Array.isArray(Pe)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}{const je=t.favorite;this.restrictObject(je,"favorite");{const We=t.favorite.warnings;Array.isArray(We)||this.reset("favorite","warnings"),t.favorite.warnings=t.favorite.warnings.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite warning [ ${e} ] from stored data.`),t})}{const Ne=t.favorite.reverts;Array.isArray(Ne)||this.reset("favorite","reverts"),t.favorite.reverts=t.favorite.reverts.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite revert [ ${e} ] from stored data.`),t})}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=2,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},8415(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(3241),h=n(5564),m=n(8469),v=n(4029);v.Version.v3=(s=class extends v.Version{static get default(){return{version:3,changelog:"6",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,ores_bias:.5,recent:{enabled:!0,order:0},pending:{enabled:!0,order:1},users:{enabled:!1,order:2},watchlist:{enabled:!0,order:3},abuselog:{enabled:!0,order:4}},username_highlighting:{enabled:!0,fuzzy:!1},wikipedia_popups:{enabled:!0},auto_welcome:{enabled:!1},talk_page_thanks_for_temporary_users:{enabled:!0},expiry:{watchlist:"1W",whitelist:{users:"infinity",pages:"infinity",tags:"infinity"},highlight:{users:"1W",pages:"1W",tags:"1W"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Deliberate errors","Disruptive editing","Editing tests","Commentary","Inappropriate jokes","Deleting","Unsourced","Unsourced (BLP)","Unsourced genre","Original research","Censoring","AI-generated","AI-generated (talk)","Personal attacks","Harassment","TPO","AfD removal","Advertising","Spam links","Attempt","Inappropriate edit summary","Misleading edit summary"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.message":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},messages:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}},accessibility:{colorblind:!1,dyslexia:!1,high_contrast:!1,reduce_motion:!1},repeat_control_scripts:!0},UI:{theme:{app:"auto",palette:"traffic"},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"," "],actions:[{name:"next-item",params:{}}]},{keys:["arrowleft"],actions:[{name:"previous-item",params:{}}]},{keys:["q"],actions:[{name:"next-item",params:{}},{name:"revert",params:{warning:"Vandalism"}},{name:"highlight-user",params:{}}]},{keys:["h"],actions:[{name:"open-page-history",params:{}}]},{keys:["c"],actions:[{name:"open-user-contributions",params:{}}]},{keys:["t"],actions:[{name:"thank-user",params:{}}]},{keys:["w"],actions:[{name:"welcome-user",params:{}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},abuselogs_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_abuselogs:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0,global_blocks:0,global_locks:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]},favorite:{warnings:[],reverts:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");this.deprecated("settings","cloud_storage");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:this.sanitize(["settings","performance","startup"],e.settings.performance.startup)},namespaces:this.sanitize(["settings","namespaces"],e.settings.namespaces),queue:{max_size:this.sanitize(["settings","queue","max_size"],e.settings.queue.max_size),max_edits:this.sanitize(["settings","queue","max_edits"],e.settings.queue.max_edits),min_ores:this.sanitize(["settings","queue","min_ores"],e.settings.queue.min_ores),ores_bias:e.settings.queue.ores_bias,recent:{enabled:this.sanitize(["settings","queue","recent","enabled"],e.settings.queue.recent.enabled),order:this.sanitize(["settings","queue","recent","order"],e.settings.queue.recent.order)},pending:{enabled:this.sanitize(["settings","queue","flagged","enabled"],e.settings.queue.pending.enabled),order:this.sanitize(["settings","queue","flagged","order"],e.settings.queue.pending.order)},users:{enabled:this.sanitize(["settings","queue","users","enabled"],e.settings.queue.users.enabled),order:this.sanitize(["settings","queue","users","order"],e.settings.queue.users.order)},watchlist:{enabled:this.sanitize(["settings","queue","watchlist","enabled"],e.settings.queue.watchlist.enabled),order:this.sanitize(["settings","queue","watchlist","order"],e.settings.queue.watchlist.order)},abuselog:{enabled:e.settings.queue.abuselog.enabled,order:e.settings.queue.abuselog.order}},username_highlighting:{enabled:this.sanitize(["settings","username_highlighting","enabled"],e.settings.username_highlighting.enabled),fuzzy:this.sanitize(["settings","username_highlighting","fuzzy"],e.settings.username_highlighting.fuzzy)},wikipedia_popups:{enabled:e.settings.wikipedia_popups.enabled},auto_welcome:{enabled:this.sanitize(["settings","auto_welcome","enabled"],e.settings.auto_welcome.enabled)},talk_page_thanks_for_temporary_users:{enabled:e.settings.talk_page_thanks_for_temporary_users.enabled},expiry:{watchlist:this.sanitize(["settings","expiry","watchlist"],e.settings.expiry.watchlist,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),whitelist:{users:this.sanitize(["settings","expiry","whitelist","users"],e.settings.expiry.whitelist.users,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),pages:this.sanitize(["settings","expiry","whitelist","pages"],e.settings.expiry.whitelist.pages,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),tags:this.sanitize(["settings","expiry","whitelist","tags"],e.settings.expiry.whitelist.tags,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e]))},highlight:{users:this.sanitize(["settings","expiry","highlight","users"],e.settings.expiry.highlight.users,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),pages:this.sanitize(["settings","expiry","highlight","pages"],e.settings.expiry.highlight.pages,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),tags:this.sanitize(["settings","expiry","highlight","tags"],e.settings.expiry.highlight.tags,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e]))}},auto_report:{enabled:this.sanitize(["settings","auto_report","enabled"],e.settings.auto_report.enabled),for:this.sanitize(["settings","auto_report","for"],e.settings.auto_report.for,e=>{if(!Array.isArray(e))return;const t=new Set(["Attempt"]);return e.forEach(e=>t.add(e)),[...t]})},AI:{enabled:this.sanitize(["settings","AI","enabled"],e.settings.AI.enabled),provider:this.sanitize(["settings","AI","provider"],e.settings.AI.provider),edit_analysis:{enabled:this.sanitize(["settings","AI","edit_analysis","enabled"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["settings","AI","username_analysis","enabled"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["settings","AI","Ollama","server"],e.settings.AI.Ollama.server),model:this.sanitize(["settings","AI","Ollama","model"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["settings","audio","ores_alert","enabled"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["settings","audio","ores_alert","threshold"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["settings","audio","volume","master"],e.settings.audio.volume.master),"master.startup":this.sanitize(["settings","audio","volume","master.startup"],e.settings.audio.volume["master.startup"]),"master.music":this.sanitize(["settings","audio","volume","master.music"],e.settings.audio.volume["master.music"]),"master.music.zen_mode":this.sanitize(["settings","audio","volume","master.music.zen_mode"],e.settings.audio.volume["master.music.zen_mode"]),"master.ui":this.sanitize(["settings","audio","volume","master.ui"],e.settings.audio.volume["master.ui"]),"master.ui.click":this.sanitize(["settings","audio","volume","master.ui.click"],e.settings.audio.volume["master.ui.click"]),"master.queue":this.sanitize(["settings","audio","volume","master.queue"],e.settings.audio.volume["master.queue"]),"master.queue.ores":this.sanitize(["settings","audio","volume","master.queue.ores"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":this.sanitize(["settings","audio","volume","master.queue.mention"],e.settings.audio.volume["master.queue.mention"]),"master.notification":this.sanitize(["settings","audio","volume","master.notification"],e.settings.audio.volume["master.notification"]),"master.notification.alert":this.sanitize(["settings","audio","volume","master.notification.alert"],e.settings.audio.volume["master.notification.alert"]),"master.notification.message":this.sanitize(["settings","audio","volume","master.notification.notice"],e.settings.audio.volume["master.notification.message"]),"master.notification.toast":this.sanitize(["settings","audio","volume","master.notification.toast"],e.settings.audio.volume["master.notification.toast"]),"master.action":this.sanitize(["settings","audio","volume","master.action"],e.settings.audio.volume["master.action"]),"master.action.default":this.sanitize(["settings","audio","volume","master.action.default"],e.settings.audio.volume["master.action.default"]),"master.action.failed":this.sanitize(["settings","audio","volume","master.action.failed"],e.settings.audio.volume["master.action.failed"]),"master.action.report":this.sanitize(["settings","audio","volume","master.action.report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["settings","audio","volume","master.action.block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["settings","audio","volume","master.action.protect"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["settings","zen_mode","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["settings","zen_mode","sound","enabled"],e.settings.zen_mode.sound.enabled)},music:{enabled:this.sanitize(["settings","zen_mode","music","enabled"],e.settings.zen_mode.music.enabled)},alerts:{enabled:this.sanitize(["settings","zen_mode","alerts","enabled"],e.settings.zen_mode.alerts.enabled)},messages:{enabled:this.sanitize(["settings","zen_mode","notices","enabled"],e.settings.zen_mode.messages.enabled)},toasts:{enabled:this.sanitize(["settings","zen_mode","toasts","enabled"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:this.sanitize(["settings","zen_mode","badges","enabled"],e.settings.zen_mode.badges.enabled)}},accessibility:{colorblind:e.settings.accessibility.colorblind,dyslexia:e.settings.accessibility.dyslexia,high_contrast:e.settings.accessibility.high_contrast,reduce_motion:e.settings.accessibility.reduce_motion},repeat_control_scripts:this.sanitize(["settings","repeat_control_scripts"],e.settings.repeat_control_scripts)},UI:{theme:{app:e.UI.theme.app,palette:this.sanitize(["UI","theme","palette"],e.UI.theme.palette,t=>["traffic","heat","natural","cool"][t]||e.UI.theme.palette)},queue:{width:this.sanitize(["UI","queue","width"],e.UI.queue.width)},details:{width:this.sanitize(["UI","details","width"],e.UI.details.width)}},control_scripts:this.sanitize(["control_scripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name||"if not"===e.name){var i,a;const r="if not"===e.name,o=()=>e.name=r?"if":"if not";switch("string"==typeof e.condition&&(e.condition={name:e.condition,params:{}}),null!==(a=(i=e.condition).params)&&void 0!==a||(i.params={}),e.condition.name){case"operatorNonAdmin":o();case"operatorAdmin":e.condition.name="account-admin";break;case"userIsHighlighted":e.condition.name="username-highlighted";break;case"userIsWhitelisted":e.condition.name="username-whitelisted";break;case"pageIsWhitelisted":e.condition.name="page-whitelisted";break;case"userIsAnon":o();case"userIsRegistered":e.codition.name="user-registered";break;case"userIsIP":e.condition.name="user-ip";break;case"userIsTemp":e.condition.name="user-temp";break;case"userHasEmptyTalkPage":e.condition.name="user-empty-talk";break;case"editIsMajor":o();case"editIsMinor":e.condition.name="edit-minor";break;case"editSizeNegative":e.condition.name="edit-size",e.condition.params={condition:"<",size:0};break;case"editSizePositive":e.condition.name="edit-size",e.condition.params={condition:">",size:0};break;case"editSizeLarge":e.condition.name="abs-edit-size",e.condition.params={condition:"≥",size:1e3};break;case"userEditCountLow":e.condition.name="user-edit-count",e.condition.params={condition:"<",count:10};break;case"userEditCountHigh":e.condition.name="user-edit-count",e.condition.params={condition:"≥",count:100};break;case"atFinalWarning":e.condition.name="user-final-warning";break;case"userNoWarnings":o();case"userHasWarnings":e.condition.name="user-has-warnings"}if(!(e.condition.name in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else{var r;switch(null!==(r=e.params)&&void 0!==r||(e.params={}),e.name){case"toggleZenMode":e.name="toggle-zen-mode";break;case"acceptFlaggedEdit":if(e.name="accept-pending-edit",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.reason,delete e.params.reason;break;case"rejectFlaggedEdit":if(e.name="reject-pending-edit",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.reason,delete e.params.reason;break;case"prevEdit":e.name="previous-item";break;case"nextEdit":e.name="next-item";break;case"deleteQueue":e.name="clear-queue";break;case"openRevertMenu":e.name="open-revert-menu";break;case"openWarnMenu":e.name="open-warn-menu";break;case"openUserPage":e.name="open-user-page";break;case"openUserTalk":e.name="open-user-talk";break;case"openUserContribs":e.name="open-user-contributions";break;case"openFilterLog":e.name="open-user-filter-log";break;case"openPage":e.name="open-page";break;case"openTalk":e.name="open-page-talk";break;case"openHistory":e.name="open-page-history";break;case"openRevision":e.name="open-revision";break;case"openDiff":e.name="open-diff";break;case"switchToRecentQueue":e.name="switch-to-recent-queue";break;case"switchToFlaggedQueue":e.name="switch-to-pending-queue";break;case"switchToUsersQueue":e.name="switch-to-users-queue";break;case"switchToWatchlistQueue":e.name="switch-to-watchlist-queue";break;case"watchPage":e.name="watch-page";break;case"unwatchPage":e.name="unwatch-page";break;case"whitelistUser":e.name="whitelist-user";break;case"whitelistPage":e.name="whitelist-page";break;case"unwhitelistUser":e.name="unwhitelist-user";break;case"unwhitelistPage":e.name="unwhitelist-page";break;case"highlightUser":e.name="highlight-user";break;case"highlightPage":e.name="highlight-page";break;case"unwhitelistUser":e.name="unhighlight-user";break;case"unwhitelistPage":e.name="unhighlight-page";break;case"thankUser":e.name="thank-user";break;case"warn":e.name="warn-user";break;case"rollback":if(e.name="rollback-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"rollbackGoodFaith":if(e.name="rollback-goodfaith-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"undo":if(e.name="undo-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"reportToAIV":if(e.name="report-user-to-aiv",!(0,o.isObject)(e.params))return!0;e.params.reason=e.params.reportMessage,delete e.params.reportMessage,e.params.summary=e.params.comment,delete e.params.comment;break;case"reportToUAA":if(e.name="report-user-to-uaa",!(0,o.isObject)(e.params))return!0;e.params.reason=e.params.reportMessage,delete e.params.reportMessage,e.params.summary=e.params.comment,delete e.params.comment;break;case"requestProtection":if(e.name="request-page-protection",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.comment,delete e.params.comment;break;case"welcome":e.name="welcome-user";break;case"toggleConsecutive":e.name="toggle-consecutive-edits";break;case"block":return this.loadedLogger.warn(`Skipping deprecated action 'block' in control script at ${[...n,s].join(" -> ")}.`),!1;case"protect":return this.loadedLogger.warn(`Skipping deprecated action 'protect' in control script at ${[...n,s].join(" -> ")}.`),!1;case"openSettings":return this.loadedLogger.warn(`Skipping deprecated action 'openSettings' in control script at ${[...n,s].join(" -> ")}.`),!1}}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:this.sanitize(["statistics","edits_reviewed","total"],e.statistics.edits_reviewed.total),thanked:this.sanitize(["statistics","edits_reviewed","thanked"],e.statistics.edits_reviewed.thanked)},recent_changes_reviewed:{total:this.sanitize(["statistics","recent_changes_reviewed","total"],e.statistics.recent_changes_reviewed.total)},pending_changes_reviewed:{total:this.sanitize(["statistics","pending_changes_reviewed","total"],e.statistics.pending_changes_reviewed.total),accepted:this.sanitize(["statistics","pending_changes_reviewed","accepted"],e.statistics.pending_changes_reviewed.accepted),rejected:this.sanitize(["statistics","pending_changes_reviewed","rejected"],e.statistics.pending_changes_reviewed.rejected)},watchlist_changes_reviewed:{total:this.sanitize(["statistics","watchlist_changes_reviewed","total"],e.statistics.watchlist_changes_reviewed.total)},users_reviewed:{total:this.sanitize(["statistics","users_reviewed","total"],e.statistics.users_reviewed.total)},abuselogs_reviewed:{total:e.statistics.abuselogs_reviewed.total},reverts_made:{total:this.sanitize(["statistics","reverts_made","total"],e.statistics.reverts_made.total),good_faith:this.sanitize(["statistics","reverts_made","good_faith"],e.statistics.reverts_made.good_faith),from_recent_changes:this.sanitize(["statistics","reverts_made","from_recent_changes"],e.statistics.reverts_made.from_recent_changes),from_pending_changes:this.sanitize(["statistics","reverts_made","from_pending_changes"],e.statistics.reverts_made.from_pending_changes),from_watchlist:this.sanitize(["statistics","reverts_made","from_watchlist"],e.statistics.reverts_made.from_watchlist),from_abuselogs:e.statistics.reverts_made.from_abuselogs,from_loaded_edits:this.sanitize(["statistics","reverts_made","from_loaded_edits"],e.statistics.reverts_made.from_loaded_edits)},users_welcomed:{total:this.sanitize(["statistics","users_welcomed","total"],e.statistics.users_welcomed.total)},warnings_issued:{total:this.sanitize(["statistics","warnings_issued","total"],e.statistics.warnings_issued.total),level_1:this.sanitize(["statistics","warnings_issued","level_1"],e.statistics.warnings_issued.level_1),level_2:this.sanitize(["statistics","warnings_issued","level_2"],e.statistics.warnings_issued.level_2),level_3:this.sanitize(["statistics","warnings_issued","level_3"],e.statistics.warnings_issued.level_3),level_4:this.sanitize(["statistics","warnings_issued","level_4"],e.statistics.warnings_issued.level_4),level_4im:this.sanitize(["statistics","warnings_issued","level_4im"],e.statistics.warnings_issued.level_4im)},reports_filed:{total:this.sanitize(["statistics","reports_filed","total"],e.statistics.reports_filed.total),AIV:this.sanitize(["statistics","reports_filed","AIV"],e.statistics.reports_filed.AIV),UAA:this.sanitize(["statistics","reports_filed","UAA"],e.statistics.reports_filed.UAA),RFPP:this.sanitize(["statistics","reports_filed","RFPP"],e.statistics.reports_filed.RFPP),global_blocks:e.statistics.reports_filed.global_blocks,global_locks:e.statistics.reports_filed.global_locks},watchlist:{watched:this.sanitize(["statistics","watchlist","watched"],e.statistics.watchlist.watched),unwatched:this.sanitize(["statistics","watchlist","unwatched"],e.statistics.watchlist.unwatched)},items_whitelisted:{total:this.sanitize(["statistics","items_whitelisted","total"],e.statistics.items_whitelisted.total),users:this.sanitize(["statistics","items_whitelisted","users"],e.statistics.items_whitelisted.users),pages:this.sanitize(["statistics","items_whitelisted","pages"],e.statistics.items_whitelisted.pages),tags:this.sanitize(["statistics","items_whitelisted","tags"],e.statistics.items_whitelisted.tags)},items_highlighted:{total:this.sanitize(["statistics","items_highlighted","total"],e.statistics.items_highlighted.total),users:this.sanitize(["statistics","items_highlighted","users"],e.statistics.items_highlighted.users),pages:this.sanitize(["statistics","items_highlighted","pages"],e.statistics.items_highlighted.pages),tags:this.sanitize(["statistics","items_highlighted","tags"],e.statistics.items_highlighted.tags)},blocks_issued:{total:this.sanitize(["statistics","blocks_issued","total"],e.statistics.blocks_issued.total)},pages_protected:{total:this.sanitize(["statistics","pages_protected","total"],e.statistics.pages_protected.total)},actions_executed:{total:this.sanitize(["statistics","actions_executed","total"],e.statistics.actions_executed.total),successful:this.sanitize(["statistics","actions_executed","successful"],e.statistics.actions_executed.successful)},session_time:this.sanitize(["statistics","session_time"],e.statistics.session_time)},highlight:{users:this.sanitize(["highlight","users"],e.highlight.users),pages:this.sanitize(["highlight","pages"],e.highlight.pages),tags:this.sanitize(["highlight","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)},favorite:{warnings:this.sanitize(["favorite","warnings"],e.favorite.warnings),reverts:this.sanitize(["favorite","reverts"],e.favorite.reverts)}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),(null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const v=t.settings.namespaces;Array.isArray(v)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const f=t.settings.queue;this.restrictObject(f,"settings","queue");{const b=t.settings.queue.max_size;"number"==typeof b&&Number.isInteger(b)&&b>0||this.reset("settings","queue","max_size")}{const w=t.settings.queue.max_edits;"number"==typeof w&&Number.isInteger(w)&&w>0||this.reset("settings","queue","max_edits")}{const y=t.settings.queue.min_ores;"number"==typeof y&&y>=0&&y<=1||this.reset("settings","queue","min_ores")}{const x=t.settings.queue.ores_bias;"number"==typeof x&&x>=0&&x<=1||this.reset("settings","queue","ores_bias")}["recent","pending","users","watchlist","abuselog"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const k=t.settings.username_highlighting;this.restrictObject(k,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const _=t.settings.wikipedia_popups;this.restrictObject(_,"settings","wikipedia_popups");"boolean"!=typeof t.settings.wikipedia_popups.enabled&&this.reset("settings","wikipedia_popups","enabled")}{const S=t.settings.auto_welcome;this.restrictObject(S,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const q=t.settings.talk_page_thanks_for_temporary_users;this.restrictObject(q,"settings","talk_page_thanks_for_temporary_users");"boolean"!=typeof t.settings.talk_page_thanks_for_temporary_users.enabled&&this.reset("settings","talk_page_thanks_for_temporary_users","enabled")}{const E=t.settings.expiry;this.restrictObject(E,"settings","expiry");{const L=t.settings.expiry.watchlist;g.expiryRegex.test(L)||this.reset("settings","expiry","watchlist")}{const A=t.settings.expiry.whitelist;this.restrictObject(A,"settings","expiry","whitelist");{const T=t.settings.expiry.whitelist.users;g.expiryRegex.test(T)||this.reset("settings","expiry","whitelist","users")}{const C=t.settings.expiry.whitelist.pages;g.expiryRegex.test(C)||this.reset("settings","expiry","whitelist","pages")}{const z=t.settings.expiry.whitelist.tags;g.expiryRegex.test(z)||this.reset("settings","expiry","whitelist","tags")}}{const $=t.settings.expiry.highlight;this.restrictObject($,"settings","expiry","highlight");{const M=t.settings.expiry.highlight.users;g.expiryRegex.test(M)||this.reset("settings","expiry","highlight","users")}{const O=t.settings.expiry.highlight.pages;g.expiryRegex.test(O)||this.reset("settings","expiry","highlight","pages")}{const I=t.settings.expiry.highlight.tags;g.expiryRegex.test(I)||this.reset("settings","expiry","highlight","tags")}}}{const P=t.settings.auto_report;this.restrictObject(P,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const j=t.settings.auto_report.for;Array.isArray(j)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const W=t.settings.AI;this.restrictObject(W,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const N=t.settings.AI.edit_analysis;this.restrictObject(N,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const D=t.settings.AI.username_analysis;this.restrictObject(D,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const R=t.settings.AI.Ollama;this.restrictObject(R,"settings","AI","Ollama");{const U=t.settings.AI.Ollama.server;(0,o.isURL)(U)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const H=t.settings.audio;this.restrictObject(H,"settings","audio");{const F=t.settings.audio.ores_alert;this.restrictObject(F,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const V=t.settings.audio.ores_alert.threshold;"number"==typeof V&&V>=0&&V<=1||this.reset("settings","audio","ores_alert","threshold")}}{const B=t.settings.audio.volume;this.restrictObject(B,"settings","audio","volume");const G=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.message","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const Q of G){const Y=t.settings.audio.volume[Q];"number"==typeof Y&&Y>=0&&Y<=1||this.reset("settings","audio","volume",Q)}}}{const Z=t.settings.zen_mode;this.restrictObject(Z,"settings","zen_mode");"boolean"!=typeof Z.enabled&&this.reset("settings","zen_mode","enabled");{const K=t.settings.zen_mode.sound;this.restrictObject(K,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const X=t.settings.zen_mode.music;this.restrictObject(X,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const J=t.settings.zen_mode.alerts;this.restrictObject(J,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const ee=t.settings.zen_mode.messages;this.restrictObject(ee,"settings","zen_mode","messages");"boolean"!=typeof t.settings.zen_mode.messages.enabled&&this.reset("settings","zen_mode","messages","enabled")}{const te=t.settings.zen_mode.toasts;this.restrictObject(te,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const ne=t.settings.zen_mode.badges;this.restrictObject(ne,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}{const se=t.settings.accessibility;this.restrictObject(se,"settings","accessibility");"boolean"!=typeof t.settings.accessibility.colorblind&&this.reset("settings","accessibility","colorblind");"boolean"!=typeof t.settings.accessibility.dyslexia&&this.reset("settings","accessibility","dyslexia");"boolean"!=typeof t.settings.accessibility.high_contrast&&this.reset("settings","accessibility","high_contrast");"boolean"!=typeof t.settings.accessibility.reduce_motion&&this.reset("settings","accessibility","reduce_motion")}"boolean"!=typeof t.settings.repeat_control_scripts&&this.reset("settings","repeat_control_scripts")}{const ie=t.UI;this.restrictObject(ie,"UI");{const ae=t.UI.theme;this.restrictObject(ae,"UI","theme");{const re=t.UI.theme.app;["light","dark","auto"].includes(re)||this.reset("UI","theme","app")}t.UI.theme.palette in m.GUI.palettes||this.reset("UI","theme","palette")}{const oe=t.UI.queue;this.restrictObject(oe,"UI","queue");{const le=t.UI.queue.width;"string"==typeof le&&le.endsWith("vw")||this.reset("UI","queue","width");const de=parseFloat(le.slice(0,-2));"number"==typeof de&&!isNaN(de)&&de>=10&&de<=30||this.reset("UI","queue","width")}}{const ce=t.UI.details;this.restrictObject(ce,"UI","details");{const ue=t.UI.details.width;"string"==typeof ue&&ue.endsWith("vw")||this.reset("UI","details","width");const pe=parseFloat(ue.slice(0,-2));"number"==typeof pe&&!isNaN(pe)&&pe>=10&&pe<=30||this.reset("UI","details","width")}}}{const ge=t.control_scripts;function he(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name||"if not"===e.name){var i,a,r,l;const s=e.condition;if(!(s.name in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${s.name} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]);const o=(0,h.sortDependencies)(null!==(a=null===(r=(l=u.conditions[s.name]).parameters)||void 0===r?void 0:r.call(l))&&void 0!==a?a:[]),c=new Set;for(const e of o){const i={};for(const t of null!==(d=e.dependencies)&&void 0!==d?d:[]){var d;i[t]=s.params[t]}const a="function"==typeof e.default?e.default(i):e.default;if(e.id in s.params||"default"in e&&(this.loadedLogger.warn(`Resetting missing parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a),c.add(e.id),"default"in e)switch(e.type){case"choice":("function"==typeof e.options?e.options(i):e.options).includes(s.params[e.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"text":"string"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid text parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"boolean":"boolean"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid boolean parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"number":"number"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid number parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a)}}for(const e of Object.keys(s.params))c.has(e)||(this.loadedLogger.warn(`Removing invalid parameter [ ${e} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete s.params[e]);e.actions=he.call(this,e.actions,...t,n,"actions")}else{var p,m,v,f;if(!(e.name in c.events))return null!==(p=void this.loadedLogger.warn(`Removing invalid action [ ${e.name} ] at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`))&&void 0!==p&&p;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=(0,h.sortDependencies)(null!==(m=null===(v=(f=c.events[e.name]).parameters)||void 0===v?void 0:v.call(f))&&void 0!==m?m:[]),i=new Set;for(const a of s){const s={};for(const t of null!==(b=a.dependencies)&&void 0!==b?b:[]){var b;s[t]=e.params[t]}const r="function"==typeof a.default?a.default(s):a.default;if(a.id in e.params||"default"in a&&(this.loadedLogger.warn(`Resetting missing parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r),i.add(a.id),"default"in a)switch(a.type){case"choice":("function"==typeof a.options?a.options(s):a.options).includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"text":"string"!=typeof e.params[a.id]&&(this.loadedLogger.warn(`Resetting invalid text parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"boolean":"boolean"!=typeof e.params[a.id]&&(this.loadedLogger.warn(`Resetting invalid boolean parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"duration":"string"==typeof e.params[a.id]&&g.expiryRegex.test(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid duration parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r)}}for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(ge)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>(0,p.validateShortcut)(e)),t.control_scripts[n].actions=he.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const me=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,ve=t.statistics;this.restrictObject(ve,"statistics");{const fe=t.statistics.edits_reviewed;this.restrictObject(fe,"statistics","edits_reviewed");me(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");me(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const be=t.statistics.recent_changes_reviewed;this.restrictObject(be,"statistics","recent_changes_reviewed");me(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const we=t.statistics.pending_changes_reviewed;this.restrictObject(we,"statistics","pending_changes_reviewed");me(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");me(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");me(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const ye=t.statistics.watchlist_changes_reviewed;this.restrictObject(ye,"statistics","watchlist_changes_reviewed");me(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const xe=t.statistics.users_reviewed;this.restrictObject(xe,"statistics","users_reviewed");me(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const ke=t.statistics.abuselogs_reviewed;this.restrictObject(ke,"statistics","abuselogs_reviewed");me(t.statistics.abuselogs_reviewed.total)||this.reset("statistics","abuselogs_reviewed","total")}{const _e=t.statistics.reverts_made;this.restrictObject(_e,"statistics","reverts_made");me(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");me(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");me(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");me(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");me(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");me(t.statistics.reverts_made.from_abuselogs)||this.reset("statistics","reverts_made","from_abuselogs");me(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const Se=t.statistics.users_welcomed;this.restrictObject(Se,"statistics","users_welcomed");me(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const qe=t.statistics.warnings_issued;this.restrictObject(qe,"statistics","warnings_issued");me(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");me(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");me(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");me(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");me(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");me(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const Ee=t.statistics.reports_filed;this.restrictObject(Ee,"statistics","reports_filed");me(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");me(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");me(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");me(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP");me(t.statistics.reports_filed.global_blocks)||this.reset("statistics","reports_filed","global_blocks");me(t.statistics.reports_filed.global_locks)||this.reset("statistics","reports_filed","global_locks")}{const Le=t.statistics.watchlist;this.restrictObject(Le,"statistics","watchlist");me(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");me(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const Ae=t.statistics.items_whitelisted;this.restrictObject(Ae,"statistics","items_whitelisted");me(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");me(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");me(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");me(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const Te=t.statistics.items_highlighted;this.restrictObject(Te,"statistics","items_highlighted");me(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");me(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");me(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");me(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const Ce=t.statistics.actions_executed;this.restrictObject(Ce,"statistics","actions_executed");me(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");me(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const ze=t.statistics.session_time;"number"==typeof ze&&ze>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const $e=t.highlight;this.restrictObject($e,"highlight");{const Me=t.highlight.users;Array.isArray(Me)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const Oe=t.highlight.pages;Array.isArray(Oe)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const Ie=t.highlight.tags;Array.isArray(Ie)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const Pe=t.whitelist;this.restrictObject(Pe,"whitelist");{const je=t.whitelist.users;Array.isArray(je)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const We=t.whitelist.pages;Array.isArray(We)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const Ne=t.whitelist.tags;Array.isArray(Ne)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}{const De=t.favorite;this.restrictObject(De,"favorite");{const Re=t.favorite.warnings;Array.isArray(Re)||this.reset("favorite","warnings"),t.favorite.warnings=t.favorite.warnings.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite warning [ ${e} ] from stored data.`),t})}{const Ue=t.favorite.reverts;Array.isArray(Ue)||this.reset("favorite","reverts"),t.favorite.reverts=t.favorite.reverts.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite revert [ ${e} ] from stored data.`),t})}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=3,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7852(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0;t.VERSION="2.0.11"},955(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getWarningFromLookup=function(e){return a[e]},t.warningsLookup=t.warnings=t.warningTemplateColors=void 0;t.warningTemplateColors={0:"grey",1:"#4169e1",2:"#ff8c00",3:"#ff4500",4:"#b22222","4im":"#000000"};const n={0:"1",1:"2",2:"3",3:"4",4:"report","4im":"report"},s=t.warnings={Vandalism:{title:"Vandalism",icon:"fas fa-skull-crossbones",description:"Warnings for different types of vandalism.",warnings:[{reportable:!0,queueType:["edit"],title:"Vandalism",name:"vandalism",icon:"fas fa-skull-crossbones",description:"Warning for general vandalism.",summary:"vandalism",auto:n,templates:[{name:"1",template:"uw-vandalism1"},{name:"2",template:"uw-vandalism2"},{name:"3",template:"uw-vandalism3"},{name:"4",template:"uw-vandalism4"},{name:"4im",template:"uw-vandalism4im"}]},{reportable:!0,queueType:["edit"],title:"Subtle vandalism",name:"subtle vandalism",icon:"fas fa-user-secret",description:"Warning for subtle vandalism.",summary:"subtle vandalism",auto:n,templates:[{name:"1",template:"uw-subtle1"},{name:"2",template:"uw-subtle2"},{name:"3",template:"uw-subtle3"},{name:"4",template:"uw-subtle4"}]},{reportable:!0,queueType:["edit"],title:"Image vandalism",name:"image vandalism",icon:"fas fa-image",description:"Warning for image vandalism.",summary:"image vandalism",auto:n,templates:[{name:"1",template:"uw-image1"},{name:"2",template:"uw-image2"},{name:"3",template:"uw-image3"},{name:"4",template:"uw-image4"},{name:"4im",template:"uw-image4im"}]},{reportable:!0,queueType:["edit"],title:"Sandbox",name:"[[WP:BADSAND|inappropriate]] sandbox use",icon:"fas fa-vial",description:"Warning for vandalism, libelous, or defamatory content added to sandbox",summary:"[[WP:BADSAND|inappropriate]] sandbox use",auto:n,templates:[{name:"1",template:"uw-sandbox1"},{name:"2",template:"uw-sandbox2"},{name:"3",template:"uw-sandbox3"},{name:"4",template:"uw-sandbox4"},{name:"4im",template:"uw-sandbox4im"}]},{reportable:!0,queueType:["edit"],title:"Deliberate errors",name:"deliberate errors",icon:"fas fa-bug",description:"Adding deliberate errors to articles.",summary:"deliberate errors",auto:n,templates:[{name:"1",template:"uw-error1"},{name:"2",template:"uw-error2"},{name:"3",template:"uw-error3"},{name:"4",template:"uw-error4"}]}]},Disruption:{title:"Disruption",icon:"fas fa-exclamation",description:"Warnings for different types of disruptive behavior.",warnings:[{reportable:!0,queueType:["edit"],title:"Disruptive editing",name:"[[WP:DE|disruptive editing]]",icon:"fas fa-exclamation",description:"Default warning for making disruptive edits but may be good faith.",summary:"[[WP:DE|disruptive editing]]",auto:n,templates:[{name:"1",template:"uw-disruptive1"},{name:"2",template:"uw-disruptive2"},{name:"3",template:"uw-disruptive3"},{name:"4",template:"uw-generic4",generic:"''Disruptive editing. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Editing tests",name:"editing tests",icon:"fas fa-flask",description:"Making test edits on live articles.",summary:"test edits",auto:n,templates:[{name:"1",template:"uw-test1"},{name:"2",template:"uw-test2"},{name:"3",template:"uw-test3"},{name:"4",template:"uw-generic4",generic:"''Test edits. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Commentary",name:"commentary",icon:"fas fa-comment-alt",description:"Adding opinion or commentary to articles.",summary:"commentary / talking in article",auto:n,templates:[{name:"1",template:"uw-talkinarticle1"},{name:"2",template:"uw-talkinarticle2"},{name:"3",template:"uw-talkinarticle3"},{name:"4",template:"uw-generic4",generic:"''Adding commentary to articles. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Inappropriate jokes",name:"inappropriate humor",icon:"fas fa-grin-squint",description:"Adding inappropriate humor to an article.",summary:"inappropriate humor",auto:n,templates:[{name:"1",template:"uw-joke1"},{name:"2",template:"uw-joke2"},{name:"3",template:"uw-joke3"},{name:"4",template:"uw-joke4"},{name:"4im",template:"uw-joke4im"}]},{reportable:!0,queueType:["edit"],title:"Deleting",name:"unexplained deletion",icon:"fas fa-trash",description:"Used when a user does not explain deletion of part of an article.",summary:"unexplained deletion",auto:n,templates:[{name:"1",template:"uw-delete1"},{name:"2",template:"uw-delete2"},{name:"3",template:"uw-delete3"},{name:"4",template:"uw-delete4"},{name:"4im",template:"uw-delete4im"}]}]},"Content Issues":{title:"Content Issues",icon:"fas fa-file-alt",description:"Warnings for different types of content issues.",warnings:[{reportable:!0,queueType:["edit"],title:"Unsourced",name:"unsourced changes",icon:"fas fa-question",description:"Warning for unsourced content.",summary:"unsourced changes",auto:n,templates:[{name:"1",template:"uw-unsourced1"},{name:"2",template:"uw-unsourced2"},{name:"3",template:"uw-unsourced3"},{name:"4",template:"uw-unsourced4"}]},{reportable:!0,queueType:["edit"],title:"Unsourced (BLP)",name:"unsourced [[WP:BLP|biographies of living persons']] changes",icon:"fas fa-person-circle-question",description:"Warning for unsourced BLP content.",summary:"unsourced [[WP:BLP|biographies of living persons']] changes",auto:n,templates:[{name:"1",template:"uw-biog1"},{name:"2",template:"uw-biog2"},{name:"3",template:"uw-biog3"},{name:"4",template:"uw-biog4"},{name:"4im",template:"uw-biog4im"}]},{reportable:!0,queueType:["edit"],title:"Unsourced genre",name:"unsourced genre changes",icon:"fas fa-music",description:"Warning for unsourced genre changes.",summary:"unsourced genre changes",auto:n,templates:[{name:"1",template:"uw-genre1"},{name:"2",template:"uw-genre2"},{name:"3",template:"uw-genre3"},{name:"4",template:"uw-genre4"}]},{reportable:!0,queueType:["edit"],title:"Original research",name:"[[WP:OR|original research]]",icon:"fas fa-lightbulb",description:"Adding original research or synthesis.",summary:"[[WP:OR|original research]]",auto:n,templates:[{name:"1",template:"uw-nor1"},{name:"2",template:"uw-nor2"},{name:"3",template:"uw-nor3"},{name:"4",template:"uw-nor4"}]},{reportable:!0,queueType:["edit"],title:"POV",name:"[[WP:NPOV|non-neutral changes]]",icon:"fas fa-balance-scale-left",description:"Adding content which violates the neutral point of view policy.",summary:"[[WP:NPOV|non-neutral changes]]",auto:n,templates:[{name:"1",template:"uw-npov1"},{name:"2",template:"uw-npov2"},{name:"3",template:"uw-npov3"},{name:"4",template:"uw-npov4"}]},{reportable:!0,queueType:["edit"],title:"Censoring",name:"[[WP:NOTCENSORED|censoring content]]",icon:"fas fa-ban",description:"Censoring topically-relevant content.",summary:"[[WP:NOTCENSORED|censoring content]]",auto:n,templates:[{name:"1",template:"uw-notcensored1"},{name:"2",template:"uw-notcensored2"},{name:"3",template:"uw-notcensored3"},{name:"4",template:"uw-notcensored4"}]},{reportable:!0,queueType:["edit"],title:"AI-generated",name:"[[WP:LLM|AI-generated content]]",icon:"fas fa-robot",description:"Adding AI-generated content.",summary:"[[WP:LLM|AI-generated content]]",auto:n,templates:[{name:"1",template:"uw-ai1"},{name:"2",template:"uw-ai2"},{name:"3",template:"uw-ai3"},{name:"4",template:"uw-ai4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==0}},{reportable:!0,queueType:["edit"],title:"AI-generated (talk)",name:"[[WP:LLM|AI-generated content]] in a discussion",icon:"fas fa-robot",description:"Writing an AI-generated comment.",summary:"[[WP:LLM|AI-generated content]] in a discussion",auto:n,templates:[{name:"1",template:"uw-aitalk1"},{name:"2",template:"uw-aitalk2"},{name:"3",template:"uw-aitalk3"},{name:"4",template:"uw-aitalk4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==1}},{reportable:!0,queueType:["edit"],title:"MOS violation",name:"[[WP:MOS|manual of style]] violation",icon:"fas fa-spell-check",description:"Not following the Manual of Style.",summary:"[[WP:MOS|manual of style]] violation",auto:n,templates:[{name:"1",template:"uw-mos1"},{name:"2",template:"uw-mos2"},{name:"3",template:"uw-mos3"},{name:"4",template:"uw-mos4"}]},{reportable:!1,queueType:["edit"],title:"English variant",name:"[[WP:ENGVAR|different English variant]]",icon:"fas fa-globe",description:"Content added in a different English variant than the rest of the article.",summary:"[[WP:ENGVAR|different English variant]]",auto:"notice",templates:[{name:"notice",template:"uw-engvar"}]},{reportable:!1,queueType:["edit"],title:"Not English",name:"non-English content",icon:"fas fa-language",description:"Content added in a language other than English.",summary:"non-English content",auto:"notice",templates:[{name:"notice",template:"uw-lang-noteng"}]}]},Conduct:{title:"Conduct",icon:"fas fa-user-shield",description:"Warnings for different types of conduct issues.",warnings:[{reportable:!0,queueType:["edit"],title:"Personal attacks",name:"[[WP:NPA|personal attacks]]",icon:"fas fa-bomb",description:"Personal attacks towards another user.",summary:"[[WP:NPA|personal attacks]]",auto:n,templates:[{name:"1",template:"uw-npa1"},{name:"2",template:"uw-npa2"},{name:"3",template:"uw-npa3"},{name:"4",template:"uw-npa4"},{name:"4im",template:"uw-npa4im"}]},{reportable:!0,queueType:["edit"],title:"Harassment",name:"[[WP:HARASS|harassment]]",icon:"fas fa-shield-alt",description:"Harassment of another user.",summary:"[[WP:HARASS|harassment]] of another user",auto:n,templates:[{name:"1",template:"uw-harass1"},{name:"2",template:"uw-harass2"},{name:"3",template:"uw-harass3"},{name:"4",template:"uw-harass4"},{name:"4im",template:"uw-harass4im"}]},{reportable:!0,queueType:["edit"],title:"TPO",name:"[[WP:TPO|removing or editing]] others' posts",icon:"fas fa-hand-paper",description:"Removing or editing others' posts.",summary:"[[WP:TPO|removing or editing]] others' posts",auto:n,templates:[{name:"1",template:"uw-tpo1"},{name:"2",template:"uw-tpo2"},{name:"3",template:"uw-tpo3"},{name:"4",template:"uw-tpo4"},{name:"4im",template:"uw-tpo4im"}]},{reportable:!0,queueType:["edit"],title:"Chatting",name:"inappropriate use of article talk pages",icon:"fas fa-comments",description:"Using article talk pages for inappropriate discussion.",summary:"inappropriate use of article talk pages",auto:n,templates:[{name:"1",template:"uw-chat1"},{name:"2",template:"uw-chat2"},{name:"3",template:"uw-chat3"},{name:"4",template:"uw-chat4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==1}},{reportable:!0,queueType:["edit"],title:"Owning",name:"assuming [[WP:OWN|ownership of articles]]",icon:"fas fa-user-shield",description:"Assuming ownership of articles.",summary:"assuming [[WP:OWN|ownership of articles]]",auto:n,templates:[{name:"1",template:"uw-own1"},{name:"2",template:"uw-own2"},{name:"3",template:"uw-own3"},{name:"4",template:"uw-own4"}]},{reportable:!0,queueType:["edit"],title:"AfD removal",name:"removing AfD templates or comments",icon:"fas fa-gavel",description:"Removing AfD templates or other users' comments from AfD discussions.",summary:"removing AfD templates or comments",auto:n,templates:[{name:"1",template:"uw-afd1"},{name:"2",template:"uw-afd2"},{name:"3",template:"uw-afd3"},{name:"4",template:"uw-afd4"}]},{reportable:!1,queueType:["edit"],title:"Edit warring",name:"[[WP:EW|edit warring]]",icon:"fas fa-jet-fighter",description:"Engaging in edit warring.",summary:"[[WP:EW|edit warring]]",auto(e){var t;return+(null==e||null===(t=e.user)||void 0===t?void 0:t.edits)<500?"notice":"warning"},templates:[{name:"notice",template:"uw-ew-soft",color:"grey"},{name:"warning",template:"uw-ew",color:"#ff4500"}]},{reportable:!0,queueType:["edit"],title:"Gaming the system",name:"[[WP:GAME|gaming the system]]",icon:"fas fa-chess-knight",description:"Attempting to game Wikipedia's policies or guidelines.",summary:"[[WP:GAME|gaming the system]]",auto:n,templates:[{name:"1",template:"uw-gaming1"},{name:"2",template:"uw-gaming2"},{name:"3",template:"uw-gaming3"},{name:"4",template:"uw-gaming4"},{name:"4im",template:"uw-gaming4im"}]}]},Promotional:{title:"Promotional",icon:"fas fa-bullhorn",description:"Warnings for promotional content.",warnings:[{reportable:!0,queueType:["edit"],title:"Advertising",name:"[[WP:PROMO|advertising or promotion]]",icon:"fas fa-ad",description:"Adding advertising or promotional content.",summary:"[[WP:PROMO|advertising or promotion]]",auto:n,templates:[{name:"1",template:"uw-advert1"},{name:"2",template:"uw-advert2"},{name:"3",template:"uw-advert3"},{name:"4",template:"uw-advert4"},{name:"4im",template:"uw-advert4im"}]},{reportable:!0,queueType:["edit"],title:"Spam links",name:"adding [[WP:ELNO|inappropriate links]]",icon:"fas fa-link",description:"Adding spam or promotional links.",summary:"adding [[WP:ELNO|inappropriate links]]",auto:n,templates:[{name:"1",template:"uw-spam1"},{name:"2",template:"uw-spam2"},{name:"3",template:"uw-spam3"},{name:"4",template:"uw-spam4"},{name:"4im",template:"uw-spam4im"}]},{reportable:!1,queueType:["edit"],title:"COI Edit",name:"editing with a [[WP:COI|conflict of interest]]",icon:"fas fa-user-tie",description:"Editing with a conflict of interest.",summary:"editing with a [[WP:COI|conflict of interest]]",auto:"notice",templates:[{name:"notice",template:"uw-coi"},{name:"warning",template:"uw-coi-warn"},{name:"username",template:"uw-coi-username"}]},{reportable:!1,queueType:["logevent"],title:"COI Log",name:"apparent [[WP:COI|conflict of interest]]",icon:"fas fa-user-tie",description:"Apparent conflict of interest.",summary:"apparent [[WP:COI|conflict of interest]]",auto:"username",templates:[{name:"username",template:"uw-coi-username"}]}]},"Abuse Log":{title:"Abuse Log",icon:"fas fa-shield-virus",description:"Warnings for triggering edit filters.",warnings:[{reportable:!0,queueType:["abuselog"],title:"Attempt",name:"triggering an edit filter",icon:"fas fa-vial",description:"Triggering an edit filter.",auto:n,templates:[{name:"1",template:"uw-attempt1"},{name:"2",template:"uw-attempt2"},{name:"3",template:"uw-attempt3"},{name:"4",template:"uw-attempt4"},{name:"4im",template:"uw-attempt4im"}],show:e=>!Boolean(null==e?void 0:e.revid)}]},"Edit Summary":{title:"Edit Summary",icon:"fas fa-pen-alt",description:"Warnings for inappropriate edit summaries.",warnings:[{reportable:!1,queueType:["edit"],title:"No edit summary",name:"no [[WP:ES|edit summary]] provided",icon:"fas fa-pen-nib",description:"Making an edit without providing an edit summary.",summary:"no [[WP:ES|edit summary]] provided",auto(e){var t;return+(null==e||null===(t=e.user)||void 0===t?void 0:t.edits)<500?"newcomer":"experienced"},templates:[{name:"notice",template:"uw-es"},{name:"experienced",template:"uw-es2"}]},{reportable:!0,queueType:["edit","logevent","abuselog"],title:"Inappropriate edit summary",name:"inappropriate [[WP:ES|edit summary]]",icon:"fas fa-pen-alt",description:"Using an inappropriate edit summary.",summary:"inappropriate [[WP:ES|edit summary]]",auto:n,templates:[{name:"1",template:"uw-bes1"},{name:"2",template:"uw-bes2"},{name:"3",template:"uw-bes3"},{name:"4",template:"uw-bes4"},{name:"4im",template:"uw-bes4im"}]},{reportable:!0,queueType:["edit","logevent","abuselog"],title:"Misleading edit summary",name:"misleading [[WP:ES|edit summary]]",icon:"fas fa-mask",description:"Using a misleading edit summary.",summary:"misleading [[WP:ES|edit summary]]",auto:n,templates:[{name:"1",template:"uw-mislead1"},{name:"2",template:"uw-mislead2"},{name:"3",template:"uw-mislead3"},{name:"4",template:"uw-generic4",generic:"''Misleading edit summary. ([[WP:WikiShield|WS]])''"}]},{reportable:!1,queueType:["edit","abuselog"],title:"Minor edit abuse",name:"improper use of [[WP:ME|minor edit]] checkbox",icon:"fas fa-minus",description:"Non-minor edit marked as minor",summary:"improper use of [[WP:ME|minor edit]] checkbox",auto:"notice",templates:[{name:"notice",template:"uw-minor"}]}]}},i={};for(const[e,t]of Object.entries(s)){const e=t.warnings.length;for(let n=0;n<e;n++){const e=t.warnings[n];i[e.title]=e}}const a=t.warningsLookup=i},863(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.welcomes=void 0;const n=t.welcomes={Auto:{title:"Auto",template:e=>{}},Default:{title:"Default",template:"Welcome",sign:!0},Basic:{title:"Basic",template:"W-basic",sign:!1},"Non-Latin":{title:"Non-Latin",template:"Welcome-non-latin",sign:!0},"Vandalism fighter":{title:"Vandalism fighter",template:"Welcome-vandalism fighter",sign:!1},Personal:{title:"Personal",template:"Welcome-personal",sign:!0},Cookie:{title:"Cookie",template:"Welcome cookie",sign:!0},Kitten:{title:"Kitten",template:"Welcome kitten",sign:!1},Graphical:{title:"Graphical",template:"W-graphical",sign:!1},Screen:{title:"Screen",template:"W-screen",sign:!1},Autobiography:{title:"Autobiography",template:"Welcome-auto",sign:!0},COI:{title:"COI",template:"Welcome-COI",sign:!0}};n.Auto.template=e=>!n["Non-Latin"].hide&&/[^\u0000-\u007F]/.test(e.name)?"Non-Latin":"Default"},4153(e,t,n){var s=n(8878);void 0===window.electron?(window.isElectron=!1,window.electron={mwapiLoader:async()=>{window.dispatchEvent(new CustomEvent("mwapi-loaded",{detail:{server:window.location.host,username:mw.user.getName(),pendingChangesServers:s.MediaWikiAPI.pendingChangesServers,dev:!1}}))},mwapiLoaded:e=>window.addEventListener("mwapi-loaded",t=>{const{server:n,username:s,pendingChangesServers:i,dev:a}=t.detail;e(n,s,i,a)}),mwapi:()=>Promise.reject(new Error("Not running in Electron environment")),menuEnabler:()=>{},setBadgeCount:()=>{},sendNotification:()=>{},localStorage:{get:e=>localStorage.getItem(e),set:(e,t)=>localStorage.setItem(e,t),delete:e=>localStorage.removeItem(e)},copyToClipboard:async e=>{if(navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}},log:e=>console.debug(e),info:e=>console.info(e),warn:e=>console.warn(e),error:e=>console.error(e),errorbox:(e,t)=>alert(`${e}\n\n${t}`),onOpenBrowser:()=>{},onOpenUrl:()=>{},onOpenNotification:()=>{},onOpenChangelog:()=>{},closePopup:e=>e.close(),openExternal:e=>window.open(e,"_blank"),openInBrowser:async e=>{const t=.8*window.screen.availWidth,n=.8*window.screen.availHeight,s=window.screenX+(window.outerWidth-t)/2,i=window.screenY+(window.outerHeight-n)/2,a=window.open(e,"myPopup",`width=${t},height=${n},left=${s},top=${i},resizable=false,scrollbars=true,menubar=false,toolbar=false,location=false,status=false`);return a.focus(),a.addEventListener("beforeunload",()=>{a.closed&&window.dispatchEvent(new CustomEvent("popup-closed",{detail:a}))}),a},onPopupClosed:e=>window.addEventListener("popup-closed",t=>e(t.detail)),onBeforeunload:()=>{},unloaded:()=>{},saveAccount:()=>{},disable:(e,t)=>{alert(`${e}\n\n${t}`),location.reload()}}):(window.isElectron=!0,document.querySelectorAll("[data-electron]").forEach(e=>{"false"===e.dataset.electron&&window.isElectron?e.style.display="none":"true"!==e.dataset.electron||window.isElectron||(e.style.display="none")}))},7411(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{constructor(){super(),e(this,"handleDragStart",(e,t)=>{this.draggedIndex=e,this.placeholderIndex=e,t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e),requestAnimationFrame(()=>this.updateDragState())}),e(this,"handleDragOver",(e,t)=>{if(t.preventDefault(),null===this.draggedIndex||e===this.placeholderIndex)return;const n=[...this.items],s=n[this.draggedIndex];n.splice(this.draggedIndex,1),n.splice(e,0,s),this.items=n,this.draggedIndex=e,this.placeholderIndex=e,this.render()}),e(this,"handleDragEnd",()=>{this.dispatchEvent(new CustomEvent("reorder",{detail:{keys:this.items.map(e=>e.key)},bubbles:!0})),this.draggedIndex=null,this.placeholderIndex=null,this.updateDragState()}),this.items=[],this.draggedIndex=null,this.placeholderIndex=null,this.itemWrappers=[]}connectedCallback(){this.className="draggable-order-list",this.syncItemsFromChildren()}syncItemsFromChildren(){const e=Array.from(this.children);this.items=e.map((e,t)=>({child:e,key:e.dataset.key||e.getAttribute("key")||t})),this.render()}addItem(e,t){this.items.push({child:e,key:t||this.items.length}),this.render()}clearItems(){this.items=[],this.render()}updateDragState(){const e=null!==this.draggedIndex;this.classList.toggle("is-dragging",e),this.itemWrappers.forEach((e,t)=>{e.classList.toggle("dragging",this.draggedIndex===t)})}render(){this.innerHTML="",this.itemWrappers=[],this.items.forEach((e,t)=>{const n=document.createElement("div");n.className="draggable-order-item-wrapper",n.draggable=!0,n.dataset.key=e.key,n.addEventListener("dragstart",e=>this.handleDragStart(t,e)),n.addEventListener("dragover",e=>this.handleDragOver(t,e)),n.addEventListener("dragend",this.handleDragEnd),n.appendChild(e.child),this.appendChild(n),this.itemWrappers.push(n)}),this.updateDragState()}}class n extends HTMLElement{static get observedAttributes(){return["name","enabled"]}constructor(){super(),e(this,"handleToggle",e=>{e.stopPropagation(),this._enabled=!this._enabled,this.updateEnabledState(),this.dispatchEvent(new CustomEvent("toggle",{detail:{enabled:this._enabled},bubbles:!0}))}),this._name="",this._enabled=!0}connectedCallback(){this.render()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"name":this._name=n||"",this.nameSpan&&(this.nameSpan.textContent=this._name);break;case"enabled":this._enabled="false"!==n&&"0"!==n,this.updateEnabledState()}}get name(){return this._name}set name(e){this.setAttribute("name",e)}get enabled(){return this._enabled}set enabled(e){this.setAttribute("enabled",e)}updateEnabledState(){this.classList.toggle("disabled",!this._enabled),this.toggle&&(this.toggle.title=this._enabled?"Click to disable":"Click to enable")}render(){this.className="draggable-order-item",this.innerHTML="",this.nameSpan=document.createElement("span"),this.nameSpan.className="draggable-order-item-name",this.nameSpan.textContent=this._name,this.toggle=document.createElement("div"),this.toggle.className="draggable-order-item-toggle",this.toggle.addEventListener("click",this.handleToggle),this.appendChild(this.nameSpan),this.appendChild(this.toggle),this.updateEnabledState()}}customElements.define("draggable-order-list",t),customElements.define("draggable-order-item",n)},7732(e,t,n){var s=n(3241);class i extends HTMLElement{constructor(){super(),this.duration={years:0,months:0,weeks:0,days:0,hours:0,minutes:0,seconds:0},this.isInfinite=!1}connectedCallback(){this.render(),this.attachEventListeners()}render(){this.innerHTML=`\n <label class="infinity-label">\n <span>Infinite Duration</span>\n </label>\n <div class="duration-inputs">\n ${[{key:"years",label:"Years"},{key:"months",label:"Months"},{key:"weeks",label:"Weeks"},{key:"days",label:"Days"},{key:"hours",label:"Hours"},{key:"minutes",label:"Minutes"},{key:"seconds",label:"Seconds"}].map(e=>`\n <label>\n <span>${e.label}</span>\n <input\n type="number"\n min="0"\n data-unit="${e.key}"\n value="0"\n step="1"\n placeholder="0"\n />\n </label>\n `).join("")}\n </div>\n `}attachEventListeners(){const e=this.querySelector(".infinity-label");e.addEventListener("click",()=>{this.isInfinite=!this.isInfinite,e.classList.toggle("selected",this.isInfinite),this.dispatchChangeEvent()}),this.querySelectorAll('input[type="number"]').forEach(e=>{e.addEventListener("input",e=>{const t=e.target.dataset.unit;this.duration[t]=parseInt(e.target.value,10)||0,this.dispatchChangeEvent()})})}dispatchChangeEvent(){this.dispatchEvent(new CustomEvent("change",{detail:this.getDurationString(),bubbles:!0}))}get value(){return this.getDurationString()}getDurationString(){if(this.isInfinite)return"infinite";let e="";const t={years:"Y",months:"M",weeks:"W",days:"D",hours:"H",minutes:"M",seconds:"S"};for(const[n,s]of Object.entries(this.duration))s>0&&(e+=`${s}${t[n]}`);return e||"0S"}set value(e){if("infinite"===e||"infinity"===e||"∞"===e){this.isInfinite=!0;const e=this.querySelector(".infinity-label");return void(e&&e.classList.add("selected"))}this.isInfinite=!1;const t=this.querySelector(".infinity-label");t&&t.classList.remove("selected");const n=s.expiryRegex.exec(e);if(n)for(const e of Object.keys(this.duration)){const t=n.groups[e];this.duration[e]=t?parseInt(t,10):0;const s=this.querySelector(`input[data-unit="${e}"]`);s&&(s.value=this.duration[e])}}}customElements.define("duration-input",i)},1914(e,t,n){n(7732),n(2784),n(5155),n(7411),n(1731)},5155(e,t){function n(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),t.NumericInput=void 0;class s extends HTMLElement{static get observedAttributes(){return["value","min","max","step"]}constructor(){super(),n(this,"handleMinus",()=>{const e=Number(this.inputValue),t=Math.round(100*Math.max(e-this.step,this.min))/100;this.updateValue(t)}),n(this,"handlePlus",()=>{const e=Number(this.inputValue),t=Math.round(100*Math.min(e+this.step,this.max))/100;this.updateValue(t)}),n(this,"handleInputChange",()=>{const e=this.input.value;if(isNaN(Number(e)))return void(this.input.value=this.inputValue);let t=Math.round(100*Math.min(Math.max(Number(e),this.min),this.max))/100;t=this.step>=1?Math.round(t):t,this.updateValue(t)}),n(this,"handleKeyUp",e=>{"enter"===e.key.toLowerCase()&&(this.handleInputChange(),e.target.blur())}),n(this,"handleInput",e=>{this.inputValue=e.target.value}),this.inputValue=0,this._min=-1/0,this._max=1/0,this._step=1}connectedCallback(){this.render(),this.setupEventListeners()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"value":this.inputValue=Number(n)||0,this.input&&(this.input.value=this.inputValue);break;case"min":this._min=Number(null!=n?n:-1/0);break;case"max":this._max=Number(null!=n?n:1/0);break;case"step":this._step=Number(null!=n?n:1)}}get value(){return this.inputValue}set value(e){this.setAttribute("value",e)}get min(){return this._min}get max(){return this._max}get step(){return this._step}updateValue(e){this.inputValue=e,this.input.value=e,this.dispatchEvent(new CustomEvent("change",{detail:{value:e},bubbles:!0}))}setupEventListeners(){this.minusBtn.addEventListener("click",this.handleMinus),this.plusBtn.addEventListener("click",this.handlePlus),this.input.addEventListener("input",this.handleInput),this.input.addEventListener("blur",this.handleInputChange),this.input.addEventListener("keyup",this.handleKeyUp),this.input.addEventListener("wheel",e=>{e.preventDefault(),e.deltaY<0?this.handlePlus():e.deltaY>0&&this.handleMinus()})}render(){this.className="numeric-input-container",this.minusBtn=document.createElement("span"),this.minusBtn.className="fa fa-minus numeric-input-button",this.input=document.createElement("input"),this.input.type="text",this.input.className="numeric-input",this.input.value=this.inputValue,this.input.autocomplete="off",this.plusBtn=document.createElement("span"),this.plusBtn.className="fa fa-plus numeric-input-button",this.appendChild(this.minusBtn),this.appendChild(this.input),this.appendChild(this.plusBtn)}}t.NumericInput=s,customElements.define("numeric-input",s)},2784(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{static get observedAttributes(){return["value","checked"]}constructor(){super(),e(this,"handleClick",()=>{this._value=!this._value,this.updateState(),this.dispatchEvent(new CustomEvent("change",{detail:{value:this._value,checked:this._value},bubbles:!0}))}),this._value=!1}connectedCallback(){this.render(),this.updateState()}attributeChangedCallback(e,t,n){t!==n&&("value"!==e&&"checked"!==e||(this._value="true"===n||"1"===n||""===n,this.updateState()))}get value(){return this._value}set value(e){this._value=!!e,this.setAttribute("value",this._value),this.updateState()}get checked(){return this._value}set checked(e){this.value=e}updateState(){this.classList.toggle("active",this._value)}render(){this.classList.add("settings-toggle"),this.innerHTML="";const e=document.createElement("div");e.className="toggle-switch";const t=document.createElement("div");t.className="toggle-slider",e.appendChild(t),this.appendChild(e),this.addEventListener("click",this.handleClick)}}customElements.define("toggle-input",t)},1731(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{static get observedAttributes(){return["title","description","value"]}constructor(){super(),e(this,"handleVolumeChange",e=>{const t=Math.max(0,Math.min(1,parseFloat(e.target.value)));this._value=t,this.slider.value=t,this.input.value=t.toFixed(2),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0}))}),this._title="",this._description="",this._value=.5,this._sound="",this._preview=null}connectedCallback(){this.render()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"title":this._title=n||"",this.titleEl&&(this.titleEl.textContent=this._title);break;case"description":this._description=n||"",this.descEl&&(this.descEl.textContent=this._description);break;case"value":this._value=Math.max(0,Math.min(1,parseFloat(n))),this.slider&&(this.slider.value=this._value),this.input&&(this.input.value=this._value.toFixed(2))}}get title(){return this._title}set title(e){this.setAttribute("title",e)}get value(){return this._value}set value(e){this.setAttribute("value",e)}setPreview(e,t){this._preview={audio:e,path:t},this.render()}render(){this.className="volume-control",this.innerHTML="";const e=document.createElement("div");e.className="volume-control-header";const t=document.createElement("div");if(t.className="volume-control-info",this.titleEl=document.createElement("div"),this.titleEl.className="volume-control-title",this.titleEl.textContent=this._title,this.descEl=document.createElement("div"),this.descEl.className="volume-control-desc",this.descEl.textContent=this._description,t.appendChild(this.titleEl),t.appendChild(this.descEl),e.appendChild(t),this._preview){const t=document.createElement("button");t.className="volume-control-preview",t.title="Preview sound",t.addEventListener("click",()=>{if(t.classList.contains("playing"))return;t.classList.add("playing");const e=t.querySelector("i");e&&(e.className="fa fa-stop");const n=new AbortController;t.onclick=()=>n.abort(),this._preview.audio.stopPreviews(),this._preview.audio.playSound(this._preview.path,n.signal,!0).finally(()=>{t.onclick=null,t.classList.remove("playing"),e&&(e.className="fa fa-play")})});const n=document.createElement("i");n.className="fa fa-play",t.appendChild(n),e.appendChild(t)}this.appendChild(e);const n=document.createElement("div");n.className="volume-control-slider-container",this.slider=document.createElement("input"),this.slider.type="range",this.slider.className="volume-control-slider",this.slider.min="0",this.slider.max="1",this.slider.step="0.01",this.slider.value=this._value,this.slider.autocomplete="off",this.slider.addEventListener("input",this.handleVolumeChange),n.appendChild(this.slider),this.input=document.createElement("input"),this.input.type="number",this.input.className="volume-control-input",this.input.min="0",this.input.max="1",this.input.step="0.01",this.input.value=this._value.toFixed(2),this.input.autocomplete="off",this.input.addEventListener("input",this.handleVolumeChange),n.appendChild(this.input),this.appendChild(n)}}customElements.define("volume-control",t)},8816(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.run=r,n(4153),n(1914);var s=n(7054),i=n(9501),a=n(691);function r(){addEventListener("click",()=>window.ineractedWithPage=!0,{once:!0}),addEventListener("wheel",e=>{e.target.closest(".no-scroll")||"INPUT"===e.target.tagName&&"number"===e.target.type&&(e.stopPropagation(),e.target.value=Number(e.target.value)+(e.deltaY<0?1:-1),e.target.dispatchEvent(new Event("input")))},{passive:!0}),electron.menuEnabler(),electron.mwapiLoaded(async(e,t,n,r)=>{if(i.StorageManager.okay(null,electron)){var o;document.querySelector("#rollback-needed .request-link").href=null!==(o=await fetch("https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q7765871&props=sitelinks/urls&format=json&origin=*").then(e=>e.json()).then(t=>{var n;return(null===(n=Object.values(t.entities.Q7765871.sitelinks).find(t=>t.url.startsWith(`https://${e}/wiki/`)))||void 0===n?void 0:n.url)||null}).catch(()=>null))&&void 0!==o?o:"https://www.wikidata.org/wiki/Q7765871";const i=new s.WikiShield(window.isMobile,e,t,n,r);document.body.classList.toggle("mobile",window.isMobile),electron.onOpenBrowser(()=>i.open(null,!1)),electron.onOpenUrl(e=>i.open(e,!1)),electron.onOpenNotification(e=>{const t=new URL(e);if(t.searchParams.has("markasread")){const e=i.notifications.find(null,+t.searchParams.get("markasread"));e&&i.notifications.read(e.type,e.notification)}i.open(e)}),electron.menuEnabler({browser:!0}),i.on("ready",async()=>{{const{editcount:e,registrationdate:n}=await i.api.account();(e<1e3||Date.now()-new Date(n).getTime()<6048e5)&&"LuniZunie"!==t&&(alert("WikiShield requires an account that is at least 7 days old and has at least 1,000 edits to function. Please meet these requirements and try again."),electron.isElectron?window.close():location.reload())}electron.onBeforeunload(()=>{i.backup(),electron.unloaded()}),window.addEventListener("beforeunload",()=>i.backup());const e=new a.Killswitch(i);e.on("kill",()=>{alert("WikiShield has been temporarily disabled. Please contact the development team for more information."),electron.isElectron?window.close():location.reload()}),e.on("force-update",()=>{alert("The current version of WikiShield is no longer supported. Please update to the latest version to continue using WikiShield."),electron.isElectron?window.close():location.reload()}),e.on("update",()=>{electron.sendNotification({title:"WikiShield Update",body:"A new version of WikiShield is available. Please update to the latest version for the best experience."},"")}),e.on("unsafe",()=>{alert("Could not verify the integrity of WikiShield. Make sure you are connected to the internet. If the problem persists, please contact the development team."),electron.isElectron?window.close():location.reload()}),e.on("okay",async()=>{addEventListener("keydown",e=>i.controller(e)),addEventListener("keyup",e=>i.controller(e)),await i.init()},{once:!0}),e.check().then(()=>e.monitor(1e4))},{once:!0})}else alert("An error has occurred with the WikiShield storage system that could lead to data loss. For that reason, WikiShield has been automatically disabled. Please report this immediately to the development team."),electron.isElectron?window.close():location.reload()}),electron.mwapiLoader().catch(e=>{alert(`An error occurred while loading the WikiShield API:\n\n${e.stack||e}`),electron.isElectron?window.close():location.reload()})}window.isMobile=!1,window.arePopupsBlocked=(()=>{let e;try{return e=window.open("about:blank","_blank","width=100,height=100,left=-100,top=-100"),!e||e.closed||void 0===e.closed?!0:(e.close(),!1)}catch(e){return!0}})(),window.isElectron&&r()},4784(e,t){function n(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function s(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Dialog=void 0;var i=new WeakSet;function a(e){null!=e&&e.parentElement&&(e.classList.add("hidden"),setTimeout(()=>{e.parentElement&&e.remove()},300))}async function r(){if(this.dialogs.processing||0===this.dialogs.queue.length)return;this.dialogs.processing=!0;const{fn:e,resolve:t,reject:n}=this.dialogs.queue.shift();try{this.dialogs.active=!0;const n=await e();this.dialogs.active=null,t(n)}catch(e){this.dialogs.active=null,n(e)}finally{this.dialogs.processing=!1,requestAnimationFrame(()=>s(i,this,r).call(this))}}function o(e,t=!1){return new Promise((n,a)=>{t&&this.dialogs.active?e().then(n).catch(a):(this.dialogs.queue.push({fn:e,child:t,resolve:n,reject:a}),s(i,this,r).call(this))})}function l(e,t,n="",s=""){return new Promise(i=>{const a=document.createElement("div");a.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal"),a.appendChild(r);const o=document.createElement("div");o.classList.add("confirmation-modal-header"),r.appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal-title"),l.textContent=e,o.appendChild(l);const d=document.createElement("div");d.classList.add("confirmation-modal-body"),d.innerHTML=t,r.appendChild(d);const c=document.createElement("input");c.type="text",c.classList.add("confirmation-modal-input"),c.placeholder=n,c.value=s,d.appendChild(c),c.focus(),c.select();const u=document.createElement("div");u.classList.add("confirmation-modal-footer"),r.appendChild(u);const p=document.createElement("button");p.classList.add("confirmation-modal-button","confirmation-modal-button-cancel"),p.style.setProperty("--background","211, 51, 51"),p.textContent="Cancel",u.appendChild(p);const g=document.createElement("button");g.classList.add("confirmation-modal-button","confirmation-modal-button-submit"),g.style.setProperty("--background","51, 153, 211"),g.textContent="Submit",u.appendChild(g);const h=e=>{document.removeEventListener("keydown",m,!0),a.classList.add("closing"),r.classList.add("closing"),setTimeout(()=>{a.remove(),i(e)},200)},m=e=>{if("Enter"===e.key)return e.preventDefault(),e.stopPropagation(),h(c.value),!1;if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),h(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",m,!0),p.addEventListener("click",()=>h(null)),g.addEventListener("click",()=>h(c.value)),a.addEventListener("click",e=>{e.target===a&&h(null)})})}function d(e){return new Promise(t=>{const n=e=>{document.removeEventListener("keydown",s,!0),i.classList.add("closing"),a.classList.add("closing"),setTimeout(()=>{i.remove(),t(e)},200)},s=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),n(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",s,!0);const i=document.createElement("div");i.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(i);const a=document.createElement("div");a.classList.add("confirmation-modal"),i.appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal-header"),a.appendChild(r);const o=document.createElement("div");o.classList.add("confirmation-modal-title"),o.textContent="Report to UAA",r.appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal-body"),l.innerHTML="Select reason for reporting <span class='confirmation-modal-username'></span> to UAA:",a.appendChild(l),l.querySelector(".confirmation-modal-username").textContent=e;const d=document.createElement("div");d.classList.add("confirmation-modal-footer","confirmation-modal-footer-vertical"),a.appendChild(d),["Disruptive","Offensive","Promotional","Misleading"].forEach(e=>{const t=`${e} username`,s=document.createElement("button");s.classList.add("confirmation-modal-button","confirmation-modal-button-reason"),s.textContent=t,s.addEventListener("click",()=>n(t)),d.appendChild(s)});const c=document.createElement("button");c.classList.add("confirmation-modal-button","confirmation-modal-button-cancel"),c.style.setProperty("--background","211, 51, 51"),c.textContent="Cancel",c.addEventListener("click",()=>n(null)),d.appendChild(c),i.addEventListener("click",e=>{e.target===i&&n(null)})})}function c(e,t,n=null,s=!1){return new Promise(i=>{const a=e=>{document.removeEventListener("keydown",r,!0),o.classList.add("closing"),l.classList.add("closing"),setTimeout(()=>{o.remove(),i(e)},200)},r=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),a(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",r,!0);const o=document.createElement("div");o.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal"),o.appendChild(l);const d=document.createElement("div");d.classList.add("confirmation-modal-header"),l.appendChild(d);const c=document.createElement("div");c.classList.add("confirmation-modal-title"),c.textContent=e,d.appendChild(c);const u=document.createElement("div");u.classList.add("confirmation-modal-body"),u.innerHTML=t,l.appendChild(u);const p=document.createElement("div");if(p.classList.add("confirmation-modal-footer"),l.appendChild(p),n&&!s){const s=document.createElement("button");s.classList.add("confirmation-modal-button","confirmation-modal-button-uaa"),s.style.setProperty("--background","211, 51, 51"),s.textContent="Report to UAA",p.appendChild(s),s.addEventListener("click",()=>{document.removeEventListener("keydown",r,!0),o.classList.add("closing"),l.classList.add("closing"),setTimeout(async()=>{o.remove();const s=await this.UAA(n,!0);s?this.ws.execute({name:"reportToUAA",params:{reportMessage:s}},void 0,void 0,{user:{name:n}}):i(await this.confirm(e,t,n,!1,!0))},200)})}const g=document.createElement("div");g.classList.add("confirmation-modal-footer-right"),p.appendChild(g);const h=document.createElement("button");h.classList.add("confirmation-modal-button","confirmation-modal-button-no"),h.textContent="No",h.addEventListener("click",()=>a(!1)),g.appendChild(h);const m=document.createElement("button");m.classList.add("confirmation-modal-button","confirmation-modal-button-yes"),m.style.setProperty("--background","51, 102, 204"),m.textContent="Yes",m.addEventListener("click",()=>a(!0)),g.appendChild(m),o.addEventListener("click",e=>{e.target===o&&a(null)}),requestAnimationFrame(()=>m.focus())})}function u(e,t){return new Promise(async n=>{const s=document.createElement("div");s.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(s);const i=document.createElement("div");i.classList.add("confirmation-modal"),s.appendChild(i);const a=document.createElement("div");a.classList.add("confirmation-modal-header"),a.textContent=e,i.appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal-body"),r.innerHTML='<div class="dialog-loading">\n <div class="dialog-spinner"></div>\n <div class="dialog-loading-text">Loading...</div>\n </div>',i.appendChild(r);const o=()=>{document.removeEventListener("keydown",l,!0),s.classList.add("closing"),i.classList.add("closing"),setTimeout(()=>{s.remove(),n()},200)},l=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),o(),!1};document.addEventListener("keydown",l,!0),s.addEventListener("click",e=>{e.target===s&&o()}),t instanceof Promise?t.then(e=>{r&&(r.innerHTML=e)}).catch(()=>{r&&(r.innerHTML="Failed to load content")}):r.innerHTML=t})}t.Dialog=class{constructor(e){n(this,i),this.ws=e,this.dialogs={processing:!1,active:null,queue:[]},this.popups=[],addEventListener("focus",()=>{this.popups.length>0&&(this.popups.forEach(e=>electron.closePopup(e)),this.popups=[],requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())}))}),electron.onPopupClosed(e=>{const t=this.popups.indexOf(e);-1!==t&&this.popups.splice(t,1),0===this.popups.length&&requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())})})}controller(e){}check(){if(0===this.popups.length)return requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())});requestAnimationFrame(()=>this.check())}toast(e,t,n="default",r=5e3){const o=this.ws.store.settings.zen_mode;if(o.enabled&&!o.toasts.enabled)return!1;const l=document.createElement("div");l.classList.add("toast-alert",n);const d=document.createElement("div");d.classList.add("toast-icon"),l.appendChild(d);const c=document.createElement("i");switch(c.classList.add("fa"),d.appendChild(c),n){case"success":c.classList.add("fa-check");break;case"warning":c.classList.add("fa-exclamation-triangle");break;case"error":c.classList.add("fa-xmark");break;default:c.classList.add("fa-info-circle")}const u=document.createElement("div");u.classList.add("toast-content"),l.appendChild(u);const p=document.createElement("div");p.classList.add("toast-title"),p.textContent=e,u.appendChild(p);const g=document.createElement("div");g.classList.add("toast-message"),g.textContent=t,u.appendChild(g);const h=document.createElement("div");h.classList.add("toast-close"),h.addEventListener("click",()=>{s(i,this,a).call(this,l)}),l.appendChild(h);const m=document.createElement("i");return m.classList.add("fa","fa-xmark"),h.appendChild(m),document.body.querySelector("#app").appendChild(l),setTimeout(()=>{this.ws.audio.playSound(["notification","toast"]),l.classList.add("show")},10),r>0&&setTimeout(()=>s(i,this,a).call(this,l),r),!0}input(e,t,n="",a="",r=!1){return s(i,this,o).call(this,()=>s(i,this,l).call(this,e,t,n,a),r)}UAA(e,t=!1){return s(i,this,o).call(this,()=>s(i,this,d).call(this,e),t)}confirm(e,t,n=null,a=!1,r=!1){return s(i,this,o).call(this,()=>s(i,this,c).call(this,e,t,n,a),r)}show(e,t){return s(i,this,o).call(this,()=>s(i,this,u).call(this,e,t))}}},8469(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.GUI=void 0;var s=n(4192),i=n(4041),a=n(7054),r=n(2069),o=n(4784),l=n(8921),d=n(9117),c=n(372),u=n(955),p=n(7698);function g(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function h(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e,t){return e.get(v(e,t))}function v(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var f=new WeakMap,b=new WeakSet;class w{constructor(e){var t,n;g(t=this,n=b),n.add(t),function(e,t,n){g(e,t),t.set(e,n)}(this,f,{$pc:void 0,$bottom:void 0,$diff:void 0,top:null,left:null,margin:null}),this.ws=e,this.dialog=new o.Dialog(this.ws),this.events=new l.EventManager(this.ws),this.settings=new d.Settings(this.ws),this.intervals={DEFCON:null,outdated:null},this.controllers={current:null}}async build(){this.updateDEFCON(),document.documentElement.style.colorScheme={light:"only light",auto:"light dark",dark:"only dark"}[this.ws.store.UI.theme.app]||"light dark";const e={code:["ArrowUp","ArrowUp","ArrowDown","ArrowDown","ArrowLeft","ArrowRight","ArrowLeft","ArrowRight","b","a"],index:0,function:t=>{t.key!==e.code[e.index]?e.index=t.key===e.code[0]?1:0:++e.index===e.code.length&&(e.index=0,this.ws.open("https://ws.luni.me/konami-easter-egg","force"))}};addEventListener("keydown",e.function),this.updateAccessibility(),document.querySelector("#initial").classList.remove("hidden"),document.querySelectorAll(".VERSION").forEach(e=>e.textContent=a.WikiShield.config.version),Math.random()<.01&&(document.querySelector("#wikishield-sikiwhield").textContent="SikiWhield");const t=new AbortController;let n;const s=new Promise(e=>n=e);let i;this.ws.audio.playSound(["startup"],t.signal,!1,()=>n()),await s;const r=this.ws.store.settings.performance.startup;if("always_off"!==r){const e=document.getElementById("dots-canvas"),t=e.getContext("2d"),n=Math.min(devicePixelRatio||1,2);class s{constructor(){h(this,"radius",2),this.x=Math.random()*e.width,this.y=Math.random()*e.height,this.vx=.5*(Math.random()-.5),this.vy=.5*(Math.random()-.5),this.color=s.colors[Math.random()*s.colors.length|0],this.fill=`rgba(${this.color}, 0.8)`,this.shadow=`rgba(${this.color}, 0.8)`}update(){this.x+=this.vx,this.y+=this.vy,this.x<0?this.x=e.width:this.x>e.width&&(this.x=0),this.y<0?this.y=e.height:this.y>e.height&&(this.y=0)}draw(){t.beginPath(),t.arc(this.x,this.y,this.radius,0,2*Math.PI),t.fillStyle=this.fill,t.fill()}}h(s,"dots",[]),h(s,"target",0),h(s,"colors",["102, 126, 234","240, 147, 251","118, 75, 162","217, 70, 239"]);let a=null;const o=()=>{a||(a=requestAnimationFrame(()=>{a=null;const i=e.width,r=e.height;e.width=Math.floor(innerWidth*n),e.height=Math.floor(innerHeight*n),e.style.width=`${innerWidth}px`,e.style.height=`${innerHeight}px`,t.setTransform(1,0,0,1,0,0),t.scale(n,n);const o=e.width/(i||e.width),l=e.height/(r||e.height);if(s.dots.forEach(e=>{e.x*=o,e.y*=l}),s.target=Math.floor(innerWidth*innerHeight/7e3),s.target=Math.max(40,Math.min(250,s.target)),s.target>s.dots.length)for(let e=s.dots.length;e<s.target;e++)s.dots.push(new s);else s.target<s.dots.length&&(s.dots.length=s.target)}))};o(),addEventListener("resize",o);const l=160,d=30,c=500;let u=null,p=performance.now();const g=new Array(15).fill(1e3/60),m=()=>{{const n=performance.now(),a=n-p;p=n,g.shift(),g.push(a);const o=[...g].sort((e,t)=>e-t).slice(2,-2),l=1e3/(o.reduce((e,t)=>e+t,0)/o.length);if("adaptive"===r){if(l<d){if(null===u&&(u=n),n-u>=c)return i&&cancelAnimationFrame(i),i=null,void t.clearRect(0,0,e.width,e.height)}else u=null;l<45&&s.dots.length>60&&(s.dots.length=Math.max(60,Math.floor(.9*s.dots.length)),s.target=s.dots.length)}}t.clearRect(0,0,e.width,e.height),s.dots.forEach(e=>{e.update(),e.draw()});const n=Math.ceil(innerWidth/l),a=Math.ceil(innerHeight/l),o=new Array(n*a);for(let e=0;e<o.length;e++)o[e]=[];s.dots.forEach((e,t)=>{const s=Math.max(0,Math.min(n-1,Math.floor(e.x/l))),i=Math.max(0,Math.min(a-1,Math.floor(e.y/l)));o[i*n+s].push(t)});const h=innerWidth/2,v=innerHeight/2,f=(e,n,s,i,a)=>{const r=[0];Math.max(e,s)>innerWidth&&r.push(-innerWidth),Math.min(e,s)<0&&r.push(innerWidth);const o=[0];Math.max(n,i)>innerHeight&&o.push(-innerHeight),Math.min(n,i)<0&&o.push(innerHeight),t.lineWidth=1,t.strokeStyle=a;for(const a of r)for(const r of o)t.beginPath(),t.moveTo(e+a,n+r),t.lineTo(s+a,i+r),t.stroke()};for(let e=0;e<a;e++)for(let t=0;t<n;t++){const i=o[e*n+t];if(0!==i.length)for(let r=-1;r<=1;r++){const l=(e+r+a)%a;for(let e=-1;e<=1;e++){const a=o[l*n+(t+e+n)%n];if(0!==a.length)for(let e=0;e<i.length;e++){const t=s.dots[i[e]];for(let n=0;n<a.length;n++){const r=a[n];if(r<=i[e])continue;const o=s.dots[r];let l=t.x-o.x,d=t.y-o.y;l>h&&(l-=innerWidth),l<-h&&(l+=innerWidth),d>v&&(d-=innerHeight),d<-v&&(d+=innerHeight);const c=l*l+d*d;if(c<22500){const e=.4*(1-Math.sqrt(c)/150),n=t.color.split(","),s=o.color.split(","),i=(parseInt(n[0])+parseInt(s[0]))/2,a=(parseInt(n[1])+parseInt(s[1]))/2,r=(parseInt(n[2])+parseInt(s[2]))/2;f(t.x,t.y,t.x-l,t.y-d,`rgba(${i}, ${a}, ${r}, ${e})`)}}}}}}i=requestAnimationFrame(m)};m()}this.ws.rights.rollback||"LuniZunie"===this.ws.api.username?(document.querySelector("#rollback-needed").classList.add("hidden"),document.querySelector("#start-button").classList.remove("hidden")):(document.querySelector("#rollback-needed").classList.remove("hidden"),document.querySelector("#start-button").classList.add("hidden")),document.querySelector("#start-button").addEventListener("click",()=>{window.removeEventListener("keydown",e.function),t.abort(),this.ws.audio.playSound(["ui","click"]),i&&cancelAnimationFrame(i),this.ws.start()}),window.addEventListener("click",e=>{[...document.querySelectorAll(".tooltip.buttons")].forEach(e=>e.remove());const t=e.target.closest("[href]");if(t){const n=new URL(t.href,location.href);if(n.origin===location.origin&&n.pathname===location.pathname)return;if(t.dataset.multipleHrefs)try{const[e,n=""]=t.dataset.multipleHrefs.split(";"),s=Object.fromEntries(n.split("&").map(e=>{const[t,n]=e.split("=");return[t,decodeURIComponent(n)]}));switch(e){case"page":{const e=s.title,n=+s.id;this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Revision",i.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:Permalink/${n}`),e.altKey),t.remove()}),t.appendChild(i);const a=document.createElement("div");a.classList.add("button"),a.innerText="Diff",a.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:Diff/${n}`),e.altKey),t.remove()}),t.appendChild(a)})}break;case"page-abuse":{const e=s.title,n=+s.id;this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Details",i.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:AbuseLog/${n}`),e.altKey),t.remove()}),t.appendChild(i);const a=document.createElement("div");a.classList.add("button"),a.innerText="Examine",a.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:AbuseFilter/examine/log/${n}`),e.altKey),t.remove()}),t.appendChild(a)})}break;case"log":{const e=s.title,n=JSON.parse(s.log);this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Log",i.addEventListener("click",s=>{const i=this.ws.page(`Special:Log/${encodeURIComponent(n.user)}?page=${encodeURIComponent(e)}&type=${n.type}&wptime=${n.timestamp}&limit=1`,!1,!1),a=this.ws.open(i,s.altKey);t.remove(),a.addEventListener("load",()=>{a.scroll({behavior:"smooth",top:a.document.body.scrollHeight})},{once:!0})}),t.appendChild(i)})}break;case"user":{const e=s.name;this.createTooltip(t,"buttons",null,null,null,t=>{const n=document.createElement("div");n.classList.add("button"),n.innerText="User talk",n.addEventListener("click",n=>{this.ws.open(this.ws.page(`User talk:${e}`),n.altKey),t.remove()}),t.appendChild(n);const s=document.createElement("div");s.classList.add("button"),s.innerText="User contribs",s.addEventListener("click",n=>{this.ws.open(this.ws.page(`Special:Contribs/${e}`),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="User page",i.addEventListener("click",n=>{this.ws.open(this.ws.page(`User:${e}`),n.altKey),t.remove()}),t.appendChild(i)})}break;case"email":this.createTooltip(t,"buttons",null,null,null,e=>{const t=document.createElement("div");t.classList.add("button"),t.innerText="Emergency",t.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Emergency"),t.altKey),e.remove()}),e.appendChild(t);const n=document.createElement("div");n.classList.add("button"),n.innerText="ArbCom",n.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Arbitration Committee"),t.altKey),e.remove()}),e.appendChild(n);const s=document.createElement("div");s.classList.add("button"),s.innerText="Oversight",s.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Oversight"),t.altKey),e.remove()}),e.appendChild(s)})}}catch(n){this.ws.open(t.getAttribute("href"),e.altKey)}finally{e.preventDefault()}else this.ws.open(t.getAttribute("href"),e.altKey);e.preventDefault()}}),document.querySelector("#loading").classList.add("hidden")}async start(){this.intervals.DEFCON=setInterval(this.updateDEFCON.bind(this),6e4),document.querySelector("#DEFCON").addEventListener("click",e=>{this.ws.open("https://en.wikipedia.org/w/index.php?tagfilter=mw-manual-revert%7Cmw-rollback%7Cmw-undo&title=Special%3ARecentChanges&urlversion=2",e.altKey)}),this.settings.start(),document.querySelector("#app").classList.remove("hidden"),document.querySelector("#initial").classList.add("hidden"),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation();const n=e.closest(".bottom-tool-item"),s=document.querySelector(`#${n.dataset.menu}-menu`),i=s.classList.contains("show");switch(n.dataset.menu){case"revert":s.innerHTML="",this.createWarnMenu("reverts",s,this.ws.queue.current.item);break;case"warn":s.innerHTML="",this.createWarnMenu("warnings",s,this.ws.queue.current.item);break;case"page":{var a;const e=this.ws.queue.current.item,t=!0===(null==e||null===(a=e.page)||void 0===a?void 0:a.watched);document.querySelector("#page-watch").classList.toggle("hidden",t),document.querySelector("#page-unwatch").classList.toggle("hidden",!t)}}this.closeMenus(),i||(s.classList.add("show"),e.classList.add("active"),this.positionBottomMenu(n,s))})}),document.querySelectorAll(".submenu-trigger").forEach(e=>{let t=(0,s.generateRandomUUID)();e.addEventListener("mouseenter",()=>{t=null;const n=e.closest(".bottom-tool-menu");n&&n.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show"));const s=e.querySelector(".submenu");s&&(this.events.submenu(s,s.dataset.eventName),s.classList.add("show"),this.positionSubmenu(s,e))}),e.addEventListener("mouseleave",()=>{const n=(0,s.generateRandomUUID)();t=n,setTimeout(()=>{if(t!==n)return;const s=e.querySelector(".submenu");s&&s.classList.remove("show")},500)})}),document.querySelectorAll(".menu-option:not(.submenu-trigger)").forEach(e=>{e.addEventListener("click",()=>this.closeMenus())}),document.querySelectorAll(".submenu").forEach(e=>{e.addEventListener("click",e=>e.stopPropagation())}),document.querySelectorAll("#queue-tabs > .queue-tab").forEach(e=>this.addTooltipListener(e));{const e=["alert","message"];e.forEach(e=>{const t=document.querySelector(`#${e}s-icon`);this.addTooltipListener(t),t.addEventListener("click",()=>{const t=document.querySelector(`#${e}s-panel`);t.classList.toggle("show"),t.classList.contains("show")&&this.ws.notifications.seen(e)}),document.querySelector(`#mark-all-${e}s-read`).addEventListener("click",t=>{this.ws.notifications.read(e)})}),document.addEventListener("click",t=>{for(const n of e){const e=document.querySelector(`#${n}s-panel`),s=document.querySelector(`#${n}s-icon`);null!=e&&e.contains(t.target)||null!=s&&s.contains(t.target)||null==e||e.classList.remove("show")}t.target.closest(".bottom-tool-menu")||t.target.closest(".confirmation-modal-overlay")||this.closeMenus()})}const e=document.querySelector("#latest-edits-tab");e.addEventListener("click",()=>this.updateDiffDisplay(this.ws.queue.current.item,!1)),this.addTooltipListener(e);const t=document.querySelector("#consecutive-edits-tab");t.addEventListener("click",()=>this.updateDiffDisplay(this.ws.queue.current.item,!0)),this.addTooltipListener(t),document.querySelector("#pending-changes-container > .accept").addEventListener("click",async e=>{await this.ws.gui.settings.waitForClose();const t=await this.dialog.input("Accept Pending Changes","Enter an optional edit summary for accepting this change:","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"next-item",params:{}},{name:"accept-pending-edit",params:{summary:t}}]})}),document.querySelector("#pending-changes-container > .reject").addEventListener("click",async e=>{await this.ws.gui.settings.waitForClose();const t=await this.dialog.input("Reject Pending Changes","Enter an optional edit summary for rejecting this change:","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"next-item",params:{}},{name:"reject-pending-edit",params:{summary:t}}]})}),document.querySelectorAll("#bottom-tools [data-tooltip]").forEach(e=>this.addTooltipListener(e));{const e=document.querySelector("#queue");{const t=this.ws.store.UI.queue.width;t&&(e.style.width=t,document.querySelector("#right-container").style.width=`calc(100% - ${t})`)}const t=document.querySelector("#right-details");{const e=this.ws.store.UI.details.width;e&&(t.style.width=e,document.querySelector("#main-container").style.width=`calc(100% - ${e})`)}const n={active:null,section:null,x:null,width:null,windowWidth:null},s=(e,t,s)=>{s.preventDefault(),n.active=e,n.section=t,n.x=s.clientX,n.width=t.getBoundingClientRect().width,n.windowWidth=innerWidth},i=document.querySelector("#queue-width-adjust");i.addEventListener("pointerdown",t=>s(i,e,t));const a=document.querySelector("#details-width-adjust");a.addEventListener("pointerdown",e=>s(a,t,e)),addEventListener("pointerup",()=>{n.active===i?this.ws.store.UI.queue.width=e.style.width:n.active===a&&(this.ws.store.UI.details.width=t.style.width),n.active=null,n.section=null}),addEventListener("pointermove",e=>{if(!n.active)return;const t=e.clientX-n.x;let s;n.active===i?s=n.width+t:n.active===a&&(s=n.width-t);const r=.1*n.windowWidth,o=.3*n.windowWidth;s=Math.max(r,Math.min(o,s));const l=s/n.windowWidth*100;n.section.style.width=`${l}vw`,n.active===i?document.querySelector("#right-container").style.width=`calc(100% - ${l}vw)`:n.active===a&&(document.querySelector("#main-container").style.width=`calc(100% - ${l}vw)`)})}const n=a.WikiShield.config.changelog.version;var i,r;(n.endsWith("!")||n!==this.ws.store.changelog)&&(this.ws.store.changelog=n.replace(/!$/,""),null===(i=(r=electron).open)||void 0===i||i.call(r,"changelog"));this.addTooltipListener(document.querySelector("#settings-icon")),document.querySelectorAll("#queue-top-right > span").forEach(e=>this.addTooltipListener(e)),this.updateZenMode(),this.reorderQueues(),this.newCurrentItem(null),document.querySelector("#settings-icon").addEventListener("click",()=>{this.settings.open()}),this.events.button(document.querySelector("#clear-queue"),"clear-queue"),this.events.button(document.querySelector("#previous-item-button"),"previous-item"),this.events.button(document.querySelector("#next-item-button"),"next-item"),this.events.button(document.querySelector("#user-open-user-page"),"open-user-page"),this.events.button(document.querySelector("#user-open-user-talk"),"open-user-talk"),this.events.button(document.querySelector("#user-view-contribs"),"open-user-contributions"),this.events.button(document.querySelector("#user-view-filter-log"),"open-filter-log"),this.events.button(document.querySelector("#user-whitelist"),"whitelist-user"),this.events.button(document.querySelector("#user-unwhitelist"),"unwhitelist-user"),this.events.button(document.querySelector("#user-highlight"),"highlight-user"),this.events.button(document.querySelector("#user-unhighlight"),"unhighlight-user"),this.events.submenu(document.querySelector("#user-welcome .submenu"),"welcome-user"),this.events.submenu(document.querySelector("#user-report-aiv .submenu"),"report-user-to-aiv"),this.events.submenu(document.querySelector("#user-report-uaa .submenu"),"report-user-to-uaa"),this.events.submenu(document.querySelector("#user-request-global-block .submenu"),"request-global-block"),this.events.submenu(document.querySelector("#user-request-global-lock .submenu"),"request-global-lock"),this.events.submenu(document.querySelector("#user-new-talk-topic .submenu"),"send-message-to-user-talk"),this.events.button(document.querySelector("#page-open-page"),"open-page"),this.events.button(document.querySelector("#page-open-talk"),"open-page-talk"),this.events.button(document.querySelector("#page-watch"),"watch-page"),this.events.button(document.querySelector("#page-unwatch"),"unwatch-page"),this.events.button(document.querySelector("#page-whitelist"),"whitelist-page"),this.events.button(document.querySelector("#page-unwhitelist"),"unwhitelist-page"),this.events.button(document.querySelector("#page-highlight"),"highlight-page"),this.events.button(document.querySelector("#page-unhighlight"),"unhighlight-page"),this.events.submenu(document.querySelector("#page-request-protection .submenu"),"request-page-protection"),this.events.button(document.querySelector("#page-view-history"),"open-page-history"),this.events.submenu(document.querySelector("#page-new-talk-topic .submenu"),"send-message-to-page-talk"),this.events.button(document.querySelector("#edit-view-revision"),"open-revision"),this.events.button(document.querySelector("#edit-view-diff"),"open-diff"),this.events.button(document.querySelector("#edit-thank-user"),"thank-user"),this.events.submenu(document.querySelector("#edit-rollback .submenu"),"rollback-edit"),this.events.submenu(document.querySelector("#edit-rollback-goodfaith .submenu"),"rollback-goodfaith-edit"),this.events.submenu(document.querySelector("#edit-undo .submenu"),"undo-edit"),this.events.button(document.querySelector("#copy-link"),"copy-link"),this.events.button(document.querySelector("#refresh-user-contributions"),"refresh-user-contributions"),this.events.button(document.querySelector("#user-contributions > .footer"),"open-user-contributions"),this.events.button(document.querySelector("#refresh-page-history"),"refresh-page-history"),this.events.button(document.querySelector("#page-history > .footer"),"open-page-history"),c.Queue.types.forEach(e=>{this.events.button(document.querySelector(`#queue-tab-${e}`),`switch-to-${e}-queue`)}),this.cache(),this.animation(),this.update(),this.renderQueue(),electron.menuEnabler({browser:!0,settings:{preferences:!0},help:{changelog:!0}})}cache(){m(f,this).$pc=document.querySelector("#pending-changes-container"),m(f,this).$bottom=document.querySelector("#bottom-tools"),m(f,this).$diff=document.querySelector("#diff-container > table")}animation(){try{var e,t;const s=m(f,this);if(null!==(e=s.$pc)&&void 0!==e&&e.isConnected||(s.$pc=document.querySelector("#pending-changes-container")),null!==(t=s.$bottom)&&void 0!==t&&t.isConnected||(s.$bottom=document.querySelector("#bottom-tools")),s.$pc&&s.$bottom){var n;const e=s.$bottom.getBoundingClientRect(),t=e.top-s.$pc.offsetHeight,i=(e.left+e.right)/2;if(s.top!==t&&(s.$pc.style.top=`${t}px`,s.top=t),s.left!==i&&(s.$pc.style.left=`${i}px`,s.left=i),null!==(n=s.$diff)&&void 0!==n&&n.isConnected||(s.$diff=document.querySelector("#diff-container > table")),s.$diff){const t=window.innerHeight-e.top;s.marginBottom!==t&&(s.$diff.style.marginBottom=`${t}px`,s.marginBottom=t)}}}catch(e){console.error("Error in animation loop:",e)}requestAnimationFrame(()=>this.animation())}update(){try{const e=new Date;document.querySelectorAll("[data-time]").forEach(t=>{const n=new Date(t.dataset.time);switch(t.dataset.timeFormat){case"notification":t.textContent=this.ws.util.formatNotificationTime(n,"timeNow"in t.dataset?new Date(t.dataset.timeNow):e)+(t.dataset.timePostfix||"");break;case"duration":t.textContent=this.ws.util.formatDuration(n,"timeNow"in t.dataset?new Date(t.dataset.timeNow):e)+(t.dataset.timePostfix||"")}})}catch(e){console.error("Error updating time elements:",e)}setTimeout(()=>this.update(),1e3)}async updateDEFCON(){var e;const t=await this.ws.getDEFCON(),n=document.querySelector("#DEFCON");n.title=`DEFCON-${null!==t.level?t.level:"N/A"} (${t.info?`${t.info} revert${1===+t.info?"":"s"} per minute`:"No data"})`;const s=n.querySelector(".dot");s.className="dot",null!==t.level&&s.classList.add(`DEFCON-${t.level}`),document.querySelector(".DEFCON-RPM").textContent=null!==(e=t.info)&&void 0!==e?e:"N/A"}generateItemHTML(e,t=!1){const n=this.getORESColor(e.ores),s="sizediff"in e?this.ws.util.getChangeColor(e.sizediff):void 0,a=(0,i.CreateDOMElement)("div");{const t=(0,i.CreateDOMElement)("div",{class:"item-color",style:{"--ores-color":n},dataset:{ores:e.ores}});a.appendChild(t)}{var r,o,l;const t=(0,i.CreateDOMElement)("div",{class:"item-body",style:{"--ores-color":n,"--diff-color":s},datset:{ores:e.ores}});a.appendChild(t);{const n=(0,i.CreateDOMElement)("div",{class:"header"});t.appendChild(n);{const t=this.ws.store.highlight.pages.has(e.page.title),s=(0,i.CreateDOMElement)("span",{class:"page-title"+(t?" highlighted":""),content:e.page.title,dataset:t?{tooltip:"Page is highlighted",tooltipDelay:500}:{}});this.addTooltipListener(s),n.appendChild(s);const a=(0,i.CreateDOMElement)("i",{class:"fas fa-file-lines"});s.prepend(a)}{const t=(0,i.CreateDOMElement)("span",{class:"timestamp"});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-clock",style:{"font-size":"11px"}});t.appendChild(s);const a=(0,i.CreateDOMElement)("span",{content:this.ws.util.formatNotificationTime(new Date(e.timestamp)),dataset:{tooltip:new Date(e.timestamp).toLocaleString(),tooltipDelay:500,time:e.timestamp,timeFormat:"notification"}});this.addTooltipListener(a),t.appendChild(a)}}{var d;const n=(0,i.CreateDOMElement)("div",{class:"meta"});t.appendChild(n);const s=null!==(d=e.performer)&&void 0!==d?d:e.user;{const t=s.blocked,a=this.ws.util.expiryToDate(null==t?void 0:t.expiry),r=this.ws.store.highlight.users.has(s.name),o=void 0===s.talk,l=(0,i.CreateDOMElement)("span",{class:"user-chip"+(!1===(null==t?void 0:t.partial)?" blocked":"")+(r?" highlighted":"")+(o?" empty-talk":""),content:e.user.name,dataset:!1===(null==t?void 0:t.partial)?{tooltip:`Blocked ${a===1/0?"indefinitely":`until ${a.toLocaleString()}`} (${t.reason})`,tooltipDelay:500}:r?{tooltip:"User is highlighted",tooltipDelay:500}:o?{tooltip:"User has an empty talk page",tooltipDelay:500}:{}});this.addTooltipListener(l),n.appendChild(l);const d=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(s.anon?"user-secret":"user"),style:{"font-size":"11px"}});l.prepend(d)}{const t=(0,i.CreateDOMElement)("div",{class:"chips"});if(n.appendChild(t),"abuselog"===e.type){const n=["disallow","warn","showcaptcha","tag","none"],s=n.length;let a=s-1;for(let t=0;t<s;t++)if(e.origin.result.has(n[t])){a=t;break}const r=(0,i.CreateDOMElement)("span",{class:"ores-chip",dataset:{tooltip:`Action taken: ${n[a]}`,tooltipDelay:500}});this.addTooltipListener(r),t.appendChild(r);const o=(0,i.CreateDOMElement)("i",{class:`fas fa-${["ban","exclamation-triangle","robot","tag","check"][a]}`,style:{"font-size":"11px"}});r.prepend(o)}else{const n=(0,i.CreateDOMElement)("span",{class:"ores-chip",content:Number.isNaN(e.ores)?"-":Math.round(100*e.ores),dataset:{tooltip:"Score",tooltipDelay:500}});this.addTooltipListener(n),t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-fire",style:{"font-size":"11px"}});n.prepend(s)}{const n=(0,i.CreateDOMElement)("div",{class:"diff-chips"});if(t.appendChild(n),e.minor){const e=(0,i.CreateDOMElement)("span",{class:"minor-chip",dataset:{tooltip:"Minor edit",tooltipDelay:500}});this.addTooltipListener(e),n.appendChild(e);const t=(0,i.CreateDOMElement)("i",{class:"fas fa-m",style:{"font-size":"11px"}});e.appendChild(t)}if("sizediff"in e){const t=(0,i.CreateDOMElement)("span",{class:"diff-chip",content:Math.abs(e.sizediff).toLocaleString(),dataset:{tooltip:"Size difference",tooltipDelay:500}});if(this.addTooltipListener(t),n.appendChild(t),0!==e.sizediff){const n=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.sizediff>0?"plus":"minus"),style:{"font-size":"11px"}});t.prepend(n)}}}}}if(e.has_comment){const n=(0,i.CreateDOMElement)("div",{class:"item-comment"});t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"11px"}});n.appendChild(s);const a=(0,i.CreateDOMElement)("span",{class:"text",html:e.comment,dataset:{tooltip:e.comment,tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(a),n.appendChild(a)}const c=null!==(r=null!==(o=e.tags)&&void 0!==o?o:null===(l=e.filters)||void 0===l?void 0:l.map(e=>`${e.filter} (${"-1"===e.id?"private":e.id})`))&&void 0!==r?r:[];if(c.length>0){const e=(0,i.CreateDOMElement)("div",{class:"item-tags"});t.appendChild(e),c.forEach(t=>{const n=(0,i.CreateDOMElement)("span",{class:"tag",content:t});e.appendChild(n)})}}if(t){const e=(0,i.CreateDOMElement)("div",{class:"remove-button"});a.appendChild(e);const t=(0,i.CreateDOMElement)("i",{class:"fas fa-xmark"});e.appendChild(t)}return a.innerHTML}generateEditDetails(e,t=!1){if(!e)return void(document.querySelector("#edit-details").innerHTML="<div class='central'>Nothing selected</div>");const n="edit"===c.Queue.groups[e.type]?this.ws.queue.pending.get(e.id):null,s=document.querySelector("#edit-details");s.style.setProperty("--diff-color","sizediff"in e?this.ws.util.getChangeColor(e.sizediff):void 0),s.innerHTML="";{const t=(0,i.CreateDOMElement)("div",{class:"header"});s.appendChild(t);{const n=this.ws.store.highlight.pages.has(e.page.title),s=(0,i.CreateDOMElement)("span",{class:"page-title"+(n?" highlighted":""),dataset:n?{tooltip:"Page is highlighted",tooltipDelay:500}:{}});this.addTooltipListener(s),t.appendChild(s);const a=(0,i.CreateDOMElement)("i",{class:"fas fa-file-lines"});let r;switch(s.appendChild(a),c.Queue.groups[e.type]){case"edit":r="page";break;case"logevent":r="log";break;case"abuselog":r="page-abuse"}const o=(0,i.CreateDOMElement)("a",{content:e.page.title,dataset:{multipleHrefs:`${r};title=${encodeURIComponent(e.page.title)}&${"log"===r?`log=${JSON.stringify(e)}`:`id=${e.id}`}`,tooltip:e.page.title,tooltipDelay:500},attributes:{href:this.ws.page(e.page.title)}});this.addTooltipListener(o),s.appendChild(o)}{var a;const s=(0,i.CreateDOMElement)("div",{class:"meta"});t.appendChild(s);const l=null!==(a=e.performer)&&void 0!==a?a:e.user;{var o;const e=Object.keys(null!==(o=null==n?void 0:n.users)&&void 0!==o?o:{}).filter(e=>e!==l.name),t=l.blocked,a=this.ws.util.expiryToDate(null==t?void 0:t.expiry),d=this.ws.store.highlight.users.has(l.name),c=void 0===l.talk,u=(0,i.CreateDOMElement)("span",{class:"user-chip"+(!1===(null==t?void 0:t.partial)?" blocked":"")+(d?" highlighted":"")+(c?" empty-talk":""),dataset:!1===(null==t?void 0:t.partial)?{tooltip:`Blocked ${a===1/0?"indefinitely":`until ${a.toLocaleString()}`} (${t.reason})`,tooltipDelay:500}:d?{tooltip:"User is highlighted",tooltipDelay:500}:c?{tooltip:"User has an empty talk page",tooltipDelay:500}:{}});this.addTooltipListener(u),s.appendChild(u);const p=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.length>0?"users":l.anon?"user-secret":"user")});u.appendChild(p);const g=(0,i.CreateDOMElement)("a",{content:l.name,dataset:{multipleHrefs:`user;name=${encodeURIComponent(l.name)}`,tooltip:l.name,tooltipDelay:500},attributes:{href:this.ws.page(`User:${l.name}`)}});if(this.addTooltipListener(g),u.appendChild(g),e.length>0){const t=(0,i.CreateDOMElement)("span",{class:"other-users",content:` and ${e.length} ${r.Text.pluralize("other",e.length)}`,dataset:{tooltip:e.join(", "),tooltipDelay:500}});this.addTooltipListener(t),u.appendChild(t)}}}}{var l;const a=(0,i.CreateDOMElement)("div",{class:"subheader"});if(s.appendChild(a),(null==n?void 0:n.count)>1||t&&(null===(l=e.consecutive)||void 0===l?void 0:l.count)>1){const t=(0,i.CreateDOMElement)("div",{class:"item-comment"});a.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comments",style:{"font-size":"11px"}});t.appendChild(s);const o=null!=n?n:e.consecutive,l=(0,i.CreateDOMElement)("span",{class:"text",content:`${o.count} ${r.Text.pluralize("edit",o.count)} over the course of `,dataset:{tooltip:o.edits.map(e=>{const t=(0,i.CreateDOMElement)("div",{style:{display:"flex","flex-direction":"column",gap:"6px"}});{const n=(0,i.CreateDOMElement)("div",{style:{display:"flex","align-items":"center",gap:"6px",width:"100%","justify-content":"space-between","font-size":"13px"}});t.appendChild(n);{const t=(0,i.CreateDOMElement)("span",{style:{display:"flex","align-items":"center",gap:"4px","font-weight":"500"},content:e.user});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.anon?"user-secret":"user"),style:{"font-size":"11px",opacity:"0.7"}});t.prepend(s)}{const t=(0,i.CreateDOMElement)("span",{style:{display:"flex","align-items":"center",gap:"4px","font-size":"12px",opacity:"0.75"},content:this.ws.util.formatNotificationTime(new Date(e.timestamp)),dataset:{time:e.timestamp,timeFormat:"notification"}});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-clock",style:{"font-size":"10px",opacity:"0.7"}});t.prepend(s)}}{const n=(0,i.CreateDOMElement)("div",{style:{display:"flex","align-items":"flex-start",gap:"4px","font-size":"12px",opacity:"0.85",padding:"2px 0"},content:e.comment||"No edit summary"});t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"10px",opacity:"0.7","flex-shrink":"0","margin-top":"2px"}});n.prepend(s)}return t.outerHTML}).join("<br>"),tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(l),t.appendChild(l);const d=(0,i.CreateDOMElement)("span",{class:"time",content:this.ws.util.formatDuration(new Date(o.timestamp.old),new Date(o.timestamp.new)),dataset:{tooltip:`${new Date(o.timestamp.old).toLocaleString()}—${new Date(o.timestamp.new).toLocaleString()}`,tooltipHtml:!0,tooltipDelay:500,time:o.timestamp.old,timeNow:o.timestamp.new,timeFormat:"duration"}});this.addTooltipListener(d),t.appendChild(d)}else if(e.has_comment){const t=(0,i.CreateDOMElement)("div",{class:"item-comment"});a.appendChild(t);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"11px"}});t.appendChild(n);const s=(0,i.CreateDOMElement)("span",{class:"text",html:e.comment,dataset:{tooltip:e.comment,tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(s),t.appendChild(s)}else{const e=(0,i.CreateDOMElement)("div",{class:"item-comment none",content:"No edit summary"});a.appendChild(e)}{const t=(0,i.CreateDOMElement)("div",{class:"meta"});if(a.appendChild(t),e.minor){const e=(0,i.CreateDOMElement)("span",{class:"minor-chip",dataset:{tooltip:"Minor edit",tooltipDelay:500}});this.addTooltipListener(e),t.appendChild(e);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-m",style:{"font-size":"11px"}});e.appendChild(n)}if("sizediff"in e){const n=(0,i.CreateDOMElement)("span",{class:"diff-chip",content:Math.abs(e.sizediff).toLocaleString(),dataset:{tooltip:"Size difference",tooltipDelay:500}});if(this.addTooltipListener(n),t.appendChild(n),0!==e.sizediff){const t=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.sizediff>0?"plus":"minus"),style:{"font-size":"11px"}});n.prepend(t)}}}}}renderQueue(e=null,t=null,n=null){var s,a,r;if(document.querySelector("#previous-item-button").classList.toggle("disabled",!this.ws.queue.canGoPrevious()),document.querySelector("#next-item-button").classList.toggle("disabled",!this.ws.queue.canGoNext()),null!=e||(e=this.ws.queue.current.queue),null!=t||(t=this.ws.queue.current.item),null!=n||(n=this.ws.queue.current.type),this.updateQueueTabs(),n!==this.ws.queue.current.type)return;const o=document.querySelector("#queue-items");if(0===e.length){var l,d;const e=document.createElement("div");return e.classList.add("queue-empty"),e.textContent="No items in queue",o.innerHTML=e.outerHTML,void((null===(l=this.ws.queue.queues[n].previous)||void 0===l?void 0:l.id)!==(null===(d=t)||void 0===d?void 0:d.id)&&(this.ws.queue.queues[n].previous=t,this.newCurrentItem(t)))}o.querySelectorAll(".queue-empty").forEach(e=>e.remove());const c=new Map;for(const e of o.children)c.set(+e.dataset.id,e);let u=null;for(const s of e){var p;let i=c.get(s.id);var g;if(!i)i=document.createElement("div"),i.classList.add("queue-item"),i.dataset.id=s.id,i.dataset.type=n,i.innerHTML=this.generateItemHTML(s,"pending"!==n),null===(g=i.querySelector(".remove-button"))||void 0===g||g.addEventListener("click",i=>{i.stopPropagation();const a=e.findIndex(e=>e.id===s.id);var r;a>=0&&(s.id===(null===(r=t)||void 0===r?void 0:r.id)?this.ws.queue.next():(e.splice(a,1),this.ws.queue.queues[n].history.push({...s,history:performance.now()}),this.removeQueueItem(n,s.id),this.renderQueue()))}),s.mentions.has&&this.ws.store.settings.username_highlighting.enabled&&(i.classList.add("mentions-me"),i.dataset.tooltip="This queue item contains your username",this.addTooltipListener(i)),i.addEventListener("click",()=>{this.ws.queue.queues[n].item=s,this.ws.current=this.ws.queue.queues[n],this.renderQueue()}),o.appendChild(i),c.set(s.id,i),i.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e));null===u?i!==o.firstChild&&o.insertBefore(i,o.firstChild):i.previousSibling!==u&&o.insertBefore(i,u.nextSibling),i.classList.toggle("current",s.id===(null===(p=t)||void 0===p?void 0:p.id)),u=i}for(const[t,n]of c.entries())e.some(e=>e.id===t)||n.remove();let h=null;for(const t of e){if(!1===t.history)break;h=t}if(null===(s=o.querySelector(".historical-bar"))||void 0===s||s.remove(),null!==h){const e=(0,i.CreateDOMElement)("div",{class:"historical-bar"});o.insertBefore(e,c.get(h.id).nextSibling);const t=(0,i.CreateDOMElement)("span",{class:"label"});e.appendChild(t);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-box-archive",attributes:{title:"All items above this line have been viewed"}});t.appendChild(n)}(null===(a=this.ws.queue.queues[n].previous)||void 0===a?void 0:a.id)!==(null===(r=t)||void 0===r?void 0:r.id)&&(this.ws.queue.queues[n].previous=t,this.newCurrentItem(t))}removeQueueItem(e,t){const n=document.querySelector(`.queue-item[data-type="${e}"][data-id="${t}"]`);n&&(n.remove(),this.updateQueueTabs([e]))}clearQueueItems(){document.querySelector("#queue-items").innerHTML="",this.renderQueue()}updateHiddenItems(e){if(void 0===e&&(e=this.ws.queue.current.item),null===e)return this.ws.store.UI.hide_tools,document.querySelectorAll("[data-queue-type]").forEach(e=>e.classList.add("hidden"));let t=e.type;"abuselog"===t&&e.revid&&(t="edit");const n=c.Queue.groups[t];document.querySelectorAll("[data-queue-type]").forEach(e=>{const t=e.dataset.queueType||"*";"*"===t?e.classList.remove("hidden"):e.classList.toggle("hidden",!t.split(",").includes(n))})}async newCurrentItem(e=null,t=!1){var n,s;null===(n=this.controllers.current)||void 0===n||n.abort();const a=new AbortController;this.controllers.current=a,null!==e&&(this.updateDiffDisplay("loading"),await this.ws.queue.propagate(e,!0)),this.stopOutdatedCheck(),this.toggleEditWarNotice((null==e?void 0:e.reverts)>=3,(null==e?void 0:e.reverts)||0),this.toggleOutdatedNotice(!1),this.togglePendingNotice(!1),this.closeMenus(),this.removeTooltips(),document.querySelectorAll("#right-top > div > :not(.hidden)").forEach(e=>e.classList.add("hidden"));const r=document.querySelector("#user-contributions > .queue-list");r.innerHTML="";const o=document.querySelector("#page-history > .queue-list");if(o.innerHTML="",document.querySelector("#user-contributions > .header > .pills").innerHTML="",document.querySelector("#page-history > .header > .pills").innerHTML="",document.querySelector("#pending-changes-container").classList.toggle("hidden",!(this.ws.rights.review&&this.ws.queue.pending.has(null==e?void 0:e.id))),this.updateHiddenItems(e),null===e)return this.generateEditDetails(),document.querySelector("#diff-container").innerHTML="",document.querySelector("#diff-scroll-up").classList.add("hidden"),document.querySelector("#diff-scroll-down").classList.add("hidden"),document.querySelector("#ai-analysis-container").classList.add("hidden"),void([...document.querySelectorAll("#queue-tabs > .queue-tab")].every(e=>"none"===getComputedStyle(e).display)&&(document.querySelector("#diff-container").innerHTML='\n\t\t\t\t\t<div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; color: grey;">\n\t\t\t\t\t\t<div style="font-size: 48px; margin-bottom: 16px;">\n\t\t\t\t\t\t\t<i class="fas fa-shield-alt"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style="font-size: 24px; margin-bottom: 8px; text-align: center;">\n\t\t\t\t\t\t\tNo queues are enabled\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style="font-size: 14px; text-align: center; max-width: 100%; margin-top: 10px;">\n\t\t\t\t\t\t\tI heard there was a WikiShield,<br>\n\t\t\t\t\t\t\tWhich entered an oversaturated field,<br>\n\t\t\t\t\t\t\tBut you don’t ever use Huggle, do you?<br>\n\t\t\t\t\t\t\tWell it simplifies any AIV,<br>\n\t\t\t\t\t\t\tBut superintendence matters to me\n\t\t\t\t\t\t\t<span style="display: block; margin-top: 8px;">— User:WikiMacaroons</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t'));const l=e.type,d=c.Queue.groups[l];if(!t&&"abuselog"===l&&!e.revid){const t=async()=>{a.signal.aborted||this.ws.api.getAbuseLogRevid(e.id).then(n=>{var s,i;n&&(e.revid=n,e.id===(null===(i=this.ws.queue.current.item)||void 0===i?void 0:i.id)&&this.newCurrentItem(this.ws.queue.current.item,!0));e.id===(null===(s=this.ws.queue.current.item)||void 0===s?void 0:s.id)&&setTimeout(()=>t(),1e3)})};t()}const u=null==e||null===(s=e.page)||void 0===s?void 0:s.watched;if(document.querySelector("#page-watch").classList.toggle("hidden",!0===u),document.querySelector("#page-unwatch").classList.toggle("hidden",!0!==u),document.querySelector("#user-report-uaa").classList.toggle("hidden",null==e?void 0:e.user.anon),document.querySelector("#user-request-global-lock").classList.toggle("hidden",null==e?void 0:e.user.anon),this.ws.AI){const t=this.ws.store;null===e.AI.edit&&t.settings.AI.edit_analysis.enabled&&this.ws.AI.analyze.edit(e).then(t=>{e.AI.edit=t}).catch(t=>{e.AI.edit={error:t.message}}).finally(()=>{var t;e.id===(null===(t=this.ws.queue.current.item)||void 0===t?void 0:t.id)&&this.updateAIAnalysisDisplay(e.AI.edit)}),null!==e.AI.username||e.user.anon||t.whitelist.users.has(e.user)||!t.settings.AI.username_analysis.enabled||this.ws.AI.analyze.username(e).then(t=>{e.AI.username=t,t.flag&&this.ws.queue.promptUAA(e,t)}).catch(t=>{e.AI.username={error:t.message}})}if(this.updateAIAnalysisDisplay(e.AI.edit),!e.seen)switch(e.seen=!0,this.ws.store.statistics.edits_reviewed.total++,this.ws.queue.current.type){case"recent":this.ws.store.statistics.recent_changes_reviewed.total++;break;case"pending":this.ws.store.statistics.pending_changes_reviewed.total++;break;case"watchlist":this.ws.store.statistics.watchlist_changes_reviewed.total++;break;case"users":this.ws.store.statistics.users_reviewed.total++;break;case"abuselog":this.ws.store.statistics.abuselogs_reviewed.total++}{const t=(0,i.CreateDOMElement)("div",{class:"pill",content:`${e.user.edits.toLocaleString()} edit${1===e.user.edits?"":"s"}`});document.querySelector("#user-contributions > .header > .pills").appendChild(t)}if("0"!==e.user.warning){const t=(0,i.CreateDOMElement)("div",{class:`pill uw-${e.user.warning}`});document.querySelector("#user-contributions > .header > .pills").appendChild(t),t.textContent=`uw-${e.user.warning}`;const n=e.user.warnings;if(n.length>0){const s=document.createElement("div"),i=document.createElement("div");i.classList.add("tooltip-title"),i.textContent=`Warnings for ${e.user.name}`,s.appendChild(i);for(const e of n){const t=document.createElement("div");t.classList.add("tooltip-item","user-warnings"),s.appendChild(t);const n=document.createElement("span");n.classList.add("tooltip-item-level"),n.textContent=`${e.template}${e.level}`,t.appendChild(n);const i=document.createElement("div");i.classList.add("tooltip-item-details"),t.appendChild(i);const a=document.createElement("span");a.classList.add("tooltip-item-user"),a.textContent=e.username?`by User:${e.username}`:"by Unknown",i.appendChild(a),i.appendChild(document.createElement("br"));const r=document.createElement("span");r.classList.add("tooltip-item-date"),i.appendChild(r),e.timestamp?(r.dataset.time=e.timestamp,r.dataset.timeFormat="notification",r.textContent=this.ws.util.formatNotificationTime(new Date(e.timestamp))):r.textContent="Date unknown"}t.dataset.tooltip=s.innerHTML,t.dataset.tooltipHtml=!0}this.addTooltipListener(t)}const p=e.user.blocks;if(p.length>0){const t=(0,i.CreateDOMElement)("div",{class:"pill ub"});document.querySelector("#user-contributions > .header > .pills").appendChild(t);const n=document.createElement("div"),s=document.createElement("div");s.classList.add("tooltip-title"),s.textContent=`Blocks for ${e.user.name}`,n.appendChild(s);for(const e of p){var g;const t=document.createElement("div");t.classList.add("tooltip-item","user-blocks"),n.appendChild(t);const s=document.createElement("span");s.classList.add("tooltip-item-level"),s.innerHTML=e.parsedcomment||"No reason provided",t.appendChild(s);const i=document.createElement("div");i.classList.add("tooltip-item-details"),t.appendChild(i);const a=document.createElement("span");a.classList.add("tooltip-item-user"),a.textContent=e.user?`by User:${e.user}`:"by Unknown",i.appendChild(a),i.appendChild(document.createElement("br"));const r=document.createElement("span");r.classList.add("tooltip-item-time"),i.appendChild(r);const o=document.createElement("span");e.timestamp?(o.dataset.time=e.timestamp,o.dataset.timeFormat="notification",o.textContent=this.ws.util.formatNotificationTime(new Date(e.timestamp))):o.textContent="Date unknown",r.appendChild(o);const l=document.createElement("span");l.textContent=`(for ${(null===(g=e.params)||void 0===g?void 0:g.duration)||"an unknown duration"})`,r.appendChild(l)}t.classList.remove("hidden"),t.textContent=`${p.length} block${1===p.length?"":"s"}`,t.dataset.tooltip=n.innerHTML,t.dataset.tooltipHtml=!0,this.addTooltipListener(t)}{const t=document.querySelector("#user-whitelist"),n=document.querySelector("#user-unwhitelist");if(t&&n){const s=()=>{const s=this.ws.store.whitelist.users.has(e.user.name);t.classList.toggle("hidden",s),n.classList.toggle("hidden",!s)};t.onclick=s,n.onclick=s,s()}const s=document.querySelector("#user-highlight"),i=document.querySelector("#user-unhighlight");if(s&&i){const t=()=>{const t=this.ws.store.highlight.users.has(e.user.name);s.classList.toggle("hidden",t),i.classList.toggle("hidden",!t)};s.onclick=t,i.onclick=t,t()}}{const t=document.querySelector("#page-whitelist"),n=document.querySelector("#page-unwhitelist");if(t&&n){const s=()=>{const s=this.ws.store.whitelist.pages.has(e.page.title);t.classList.toggle("hidden",s),n.classList.toggle("hidden",!s)};t.onclick=s,n.onclick=s,s()}const s=document.querySelector("#page-highlight"),i=document.querySelector("#page-unhighlight");if(s&&i){const t=()=>{const t=this.ws.store.highlight.pages.has(e.page.title);s.classList.toggle("hidden",t),i.classList.toggle("hidden",!t)};s.onclick=t,i.onclick=t,t()}}(async t=>{const n=e.user.contributions;for(const e of n){var s;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(s=this.ws.queue.current.item.revid)&&void 0!==s?s:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML({page:{title:e.title},user:{name:e.user},comment:"Loading...",timestamp:e.timestamp,sizediff:0,ores:NaN,tags:e.tags||[],type:"edit"}),r.appendChild(t),requestAnimationFrame(()=>t.classList.remove("no-transition"))}if(e.page.cached_contributions){const s=await e.page.cached_contributions;if(t.aborted)return;n.some((e,t)=>{var n;return e.id!==(null===(n=s[t])||void 0===n?void 0:n.id)})&&delete e.page.cached_contributions}e.user.cached_contributions||(e.user.cached_contributions=this.ws.queue.generate("edit",n,!0));const i=await e.user.cached_contributions;if(!t.aborted){r.innerHTML="";for(const e of i.sort((e,t)=>new Date(t.timestamp)-new Date(e.timestamp))){var a;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(a=this.ws.queue.current.item.revid)&&void 0!==a?a:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML(e),r.appendChild(t),t.addEventListener("mouseover",()=>this.ws.queue.propagate(e,!0)),t.addEventListener("click",()=>this.ws.queue.loadFromItem(e)),t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e)),requestAnimationFrame(()=>t.classList.remove("no-transition"))}}})(a.signal).catch(e=>{a.signal.aborted||console.error("Error loading contributions:",e)});switch(d){case"edit":{var h;if(this.startOutdatedCheck(e),!this.ws.queue.pending.has(e.id))(null===(h=e.consecutive)||void 0===h?void 0:h.count)>=2&&(document.querySelector("#latest-edits-tab").classList.remove("hidden"),document.querySelector("#consecutive-edits-tab").classList.remove("hidden"));const t=e.page.protection;if(t.protected||this.ws.queue.pending.has(e.id)){const n=(0,i.CreateDOMElement)("div",{class:"pill"});if(document.querySelector("#page-history > .header > .pills").appendChild(n),t.protected){let e,s;switch(t.level){case"sysop":e="F",s="Requires sysop right to edit";break;case"template":e="T",s="Requires template editor to edit";break;case"extendedconfirmed":e="EC",s="Requires extended confirmed right to edit";break;case"autoconfirmed":e="AC",s="Requires autoconfirmed right to edit";break;default:e="?",s="Uknown protection level"}n.innerHTML=`<i class="fas fa-lock"></i> <span class="protection-icon" data-tooltip="${s}">${e}</span>`,this.addTooltipListener(n.querySelector("[data-tooltip]"))}else if(this.ws.queue.pending.has(e.id)){var m;const t=(null===(m=this.ws.queue.pending.get(e.id).pending.stability)||void 0===m?void 0:m.parsedcomment)||"No comment provided",s=document.createElement("span");s.classList.add("protection-icon"),s.innerHTML="<i class='fas fa-lock'></i> PC",s.dataset.tooltip=t,s.dataset.tooltipHtml=!0,n.appendChild(s),this.addTooltipListener(n.querySelector("[data-tooltip]"))}}for(const t of e.page.metadata){const e=(0,i.CreateDOMElement)("div",{class:"pill",content:t});document.querySelector("#page-history > .header > .pills").appendChild(e)}}break;case"logevent":break;case"abuselog":{e.revid&&this.startOutdatedCheck(e);const t=document.querySelector("#protection-indicator");if(t){const n=e.page.protection;if(n.protected){let e,s;switch(n.level){case"sysop":e="P",s="Requires sysop right to edit";break;case"extendedconfirmed":e="X",s="Requires extended confirmed right to edit";break;case"autoconfirmed":e="A",s="Requires autoconfirmed right to edit";break;default:e="?",s="Uknown protection level"}t.innerHTML=`<span class="protection-icon" data-tooltip="${s}">${e}</span>`,this.addTooltipListener(t.querySelector("[data-tooltip]"))}else if(this.ws.queue.pending.has(e.id)){var v;const n=(null===(v=this.ws.queue.pending.get(e.id).pending.stability)||void 0===v?void 0:v.parsedcomment)||"No comment provided",s=document.createElement("span");s.classList.add("protection-icon"),s.textContent="PC",s.dataset.tooltip=n,s.dataset.tooltipHtml=!0,t.appendChild(s),this.addTooltipListener(t.querySelector("[data-tooltip]"))}else t.innerHTML=""}}}if("edit"===d||"abuselog"===d){(async t=>{const n=e.page.history;for(const e of n){var s;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(s=this.ws.queue.current.item.revid)&&void 0!==s?s:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML({page:{title:e.title},user:{name:e.user},comment:"Loading...",timestamp:e.timestamp,sizediff:0,ores:NaN,tags:e.tags||[],type:"edit"}),o.appendChild(t),requestAnimationFrame(()=>t.classList.remove("no-transition"))}if(e.page.cached_history){const s=await e.page.cached_history;if(t.aborted)return;n.some((e,t)=>{var n;return e.id!==(null===(n=s[t])||void 0===n?void 0:n.id)})&&delete e.page.cached_history}e.page.cached_history||(e.page.cached_history=this.ws.queue.generate("edit",n,!0));const i=await e.page.cached_history;if(!t.aborted){o.innerHTML="";for(const e of i.sort((e,t)=>new Date(t.timestamp)-new Date(e.timestamp))){var a;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(a=this.ws.queue.current.item.revid)&&void 0!==a?a:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML(e),o.appendChild(t),t.addEventListener("mouseover",()=>this.ws.queue.propagate(e,!0)),t.addEventListener("click",()=>this.ws.queue.loadFromItem(e)),t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e)),requestAnimationFrame(()=>t.classList.remove("no-transition"))}}})(a.signal).catch(e=>{a.signal.aborted||console.error("Error loading history:",e)})}this.updateDiffDisplay(e,!1)}updateDiffDisplay(e,t){var n;this.ws.mobile&&(t=!0);const s=document.querySelector("#diff-container");if(!e)return document.querySelector("#diff-scroll-up").classList.add("hidden"),void document.querySelector("#diff-scroll-down").classList.add("hidden");if("loading"===e){const e=document.createElement("div");e.className="loading-container";const t=document.createElement("div");t.className="loading-spinner",e.appendChild(t);const n=document.createElement("i");n.className="fas fa-spinner fa-spin",t.appendChild(n);const i=document.createElement("div");return i.className="loading-text animate-loading-dots",i.textContent="Loading edit",e.appendChild(i),void(s.innerHTML=e.outerHTML)}switch(document.querySelectorAll("#right-top > .tabs > .tab.selected").forEach(e=>e.classList.remove("selected")),this.generateEditDetails(e,t),c.Queue.groups[e.type]){case"edit":var i,a;if(this.ws.queue.pending.get(e.id))s.innerHTML=`<table>${null!==(i=e.diff)&&void 0!==i?i:"<em>No diff available</em>"}</table>`;else if(t&&(null===(a=e.consecutive)||void 0===a?void 0:a.count)>1){var r,o;document.querySelector("#consecutive-edits-tab").classList.add("selected"),null===(r=e.consecutive.diff)||void 0===r||r?s.innerHTML=`<table>${null!==(o=e.consecutive.diff)&&void 0!==o?o:"<em>No diff available</em>"}</table>`:s.innerHTML="<table><em>No difference</em></table>"}else{var l;document.querySelector("#latest-edits-tab").classList.add("selected"),s.innerHTML=`<table>${null!==(l=e.diff)&&void 0!==l?l:"<em>No diff available</em>"}</table>`}if(this.ws.store.settings.username_highlighting.enabled){const t=this.ws.api.username;t&&(e.mentions.diff&&s.querySelectorAll("td").forEach(e=>{e.textContent&&this.ws.util.match(t,e.textContent)&&e.classList.add("ws-username-highlight")}),e.mentions.comment&&e.comment&&this.ws.util.match(t,e.comment)&&document.querySelector("#edit-details > .subheader > .item-comment > .text").classList.add("ws-username-highlight"))}break;case"logevent":if("users"===e.type){s.innerHTML="";const t=e.user.profanity,n=document.createElement("div");n.classList.add("profanity"),s.appendChild(n);const i=document.createElement("div");{i.classList.add("profanity-header"),n.appendChild(i);const e=document.createElement("div");{e.classList.add("profanity-score"),i.appendChild(e);const n=document.createElement("span");n.classList.add("score-label"),n.textContent="Profanity Score:",e.appendChild(n);const s=document.createElement("span");s.classList.add("score-value"),s.textContent=t.finalScore,e.appendChild(s)}const s=document.createElement("div");{s.classList.add("profanity-risk",`risk-${t.risk.toLowerCase()}`),i.appendChild(s);const e=document.createElement("span");switch(e.classList.add("fa"),t.risk){case"No":e.classList.add("fa-smile");break;case"Low":e.classList.add("fa-thumbs-up");break;case"Medium":e.classList.add("fa-meh");break;case"High":e.classList.add("fa-thumbs-down");break;case"Critical":e.classList.add("fa-skull-crossbones")}s.appendChild(e);const n=document.createElement("span");n.textContent=`${t.risk} risk`,s.appendChild(n)}}const a=t.matches;if(a.length>0){const e=document.createElement("div");e.classList.add("profanity-matches-header"),n.appendChild(e);const t=document.createElement("span");t.classList.add("fa","fa-search"),e.appendChild(t);const s=document.createElement("span");s.textContent=`Matched Terms (${a.length})`,e.appendChild(s);const i=document.createElement("div");i.classList.add("profanity-matches-list"),n.appendChild(i);for(const e of a){const t=document.createElement("div");{t.classList.add("profanity-match"),i.appendChild(t);const n=document.createElement("div");{n.classList.add("match-header"),t.appendChild(n);const s=document.createElement("span");s.classList.add("match-text"),s.textContent=e.match,n.appendChild(s);const i=document.createElement("span");i.classList.add("fa","fa-arrow-right"),n.appendChild(i);const a=document.createElement("span");a.classList.add("match-name"),a.textContent=e.name,n.appendChild(a)}const s=document.createElement("div");{s.classList.add("match-details"),t.appendChild(s);const n=document.createElement("div");{n.classList.add("match-stat"),s.appendChild(n);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Confidence",n.appendChild(t);const i=document.createElement("span");i.classList.add("stat-value"),i.dataset.tooltip="How certain we are this is a match.",i.dataset.tooltipDelay=500,i.textContent=`${Math.round(100*e.confidence)}%`,n.appendChild(i)}const i=document.createElement("div");{i.classList.add("match-stat"),s.appendChild(i);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Obfuscation",i.appendChild(t);const n=document.createElement("span");n.classList.add("stat-value"),n.dataset.tooltip="How much the term was altered from its original form.",n.dataset.tooltipDelay=500,n.textContent=`${Math.round(100*e.obfuscation)}%`,i.appendChild(n)}const a=document.createElement("div");{a.classList.add("match-stat"),s.appendChild(a);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Severity",a.appendChild(t);const n=document.createElement("span");n.classList.add("stat-value",`severity-${e.severity}`),n.dataset.tooltip="How severe this term is considered.",n.dataset.tooltipDelay=500,n.textContent=e.severity,a.appendChild(n)}}if(e.note){const n=document.createElement("div");{n.classList.add("match-note"),t.appendChild(n);const s=document.createElement("span");s.classList.add("fa","fa-info-circle"),n.appendChild(s);const i=document.createElement("span");i.classList.add("note-text"),i.textContent=e.note,n.appendChild(i)}}}t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e))}}else{const e=document.createElement("div");e.classList.add("profanity-no-matches"),n.appendChild(e);const t=document.createElement("span");t.classList.add("fa","fa-check-circle"),e.appendChild(t);const s=document.createElement("span");s.textContent="No profanity detected.",e.appendChild(s)}}break;case"abuselog":var d;if(s.innerHTML=`<table>${null!==(d=e.diff)&&void 0!==d?d:"<em>No diff available</em>"}</table>`,this.ws.store.settings.username_highlighting.enabled){const t=this.ws.api.username;t&&(e.mentions.diff&&s.querySelectorAll("td").forEach(e=>{e.textContent&&this.ws.util.match(t,e.textContent)&&e.classList.add("ws-username-highlight")}),e.mentions.comment&&e.comment&&this.ws.util.match(t,e.comment)&&document.querySelector("#edit-details > .subheader > .item-comment > .text").classList.add("ws-username-highlight"))}}s.querySelectorAll(":is(.mw-diff-movedpara-left, .mw-diff-movedpara-right)").forEach(e=>{const t=e.href.split("#")[1];delete e.href,e.innerHTML=e.classList.contains("mw-diff-movedpara-left")?">":"<",e.addEventListener("click",e=>{e.preventDefault();const n=s.querySelector(`a[name="${t}"]`);if(n){const e=n.getBoundingClientRect(),t=s.getBoundingClientRect(),i=e.top-t.top+s.scrollTop-(t.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),s.querySelectorAll(".flash-highlight").forEach(e=>e.classList.remove("flash-highlight"));const a=n.parentElement.parentElement;a.classList.add("flash-highlight"),setTimeout(()=>{var e;return null==a||null===(e=a.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)}})});const u=s.querySelectorAll(".diff-addedline, .diff-deletedline"),p=null!==(n=s.querySelectorAll(":is(.diff-addedline, .diff-deletedline) .diffchange")[0])&&void 0!==n?n:u[0];p?requestAnimationFrame(()=>{const e=p.getBoundingClientRect(),t=s.getBoundingClientRect(),n=e.top-t.top+s.scrollTop-(t.height-e.height)/2;function i(){const e=s.querySelectorAll(":is(.diff-addedline, .diff-deletedline) .diffchange");let t=null,n=null;const i=s.getBoundingClientRect();for(const s of e){let e=!1,a=!1;const r=s.getBoundingClientRect();r.bottom<i.top&&(e=!0),r.top>i.bottom&&(a=!0),e&&a||(e&&(t=s),null===n&&a&&(n=s))}const a=document.querySelector("#diff-scroll-up");a.classList.toggle("hidden",!t),a.onclick=()=>{const e=t.getBoundingClientRect(),n=s.getBoundingClientRect(),i=e.top-n.top+s.scrollTop-(n.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),t.classList.add("flash-highlight"),setTimeout(()=>{var e;return null===(e=t)||void 0===e||null===(e=e.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)};const r=document.querySelector("#diff-scroll-down");r.classList.toggle("hidden",!n),r.onclick=()=>{const e=n.getBoundingClientRect(),t=s.getBoundingClientRect(),i=e.top-t.top+s.scrollTop-(t.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),n.classList.add("flash-highlight"),setTimeout(()=>{var e;return null===(e=n)||void 0===e||null===(e=e.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)}}s.scrollTo({top:Math.max(0,n),behavior:"smooth"}),i(),s.onscroll=()=>requestAnimationFrame(i),window.onresize=()=>requestAnimationFrame(i)}):(document.querySelector("#diff-scroll-up").classList.add("hidden"),document.querySelector("#diff-scroll-down").classList.add("hidden"))}updateAIAnalysisDisplay(e){const t=document.querySelector("#ai-analysis-container");if(!t||!e)return t.classList.add("hidden");if(t.classList.remove("hidden"),e.error){const n=t.querySelector(":scope > .header > .assessment");n.textContent="Error",n.className="assessment error",t.querySelector(":scope > .header > .confidence").textContent="",t.querySelector(":scope > .explanation").textContent=e.error;t.querySelector(":scope > .issues").innerHTML=""}else{const n=t.querySelector(":scope > .header > .assessment");n.textContent=e.assessment,n.className=`assessment ${e.assessment.toLowerCase().replace(/\s+/g,"-")}`,t.querySelector(":scope > .header > .confidence").textContent=`${Math.round(100*(e.confidence||0))}% confidence`;const s=v(b,this,y).call(this,e.explanation||"No explanation provided.");t.querySelector(":scope > .explanation").innerHTML=s;const i=t.querySelector(":scope > .issues");i.innerHTML="";for(const t of e.issues||[]){const e=document.createElement("div");e.classList.add("issue",t.severity.toLowerCase().replace(/\s+/g,"-")),e.textContent=t.policy,i.appendChild(e)}t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e))}}async outdated(e){let t=e.type,n=e.id;if("abuselog"===t&&e.revid&&(t="edit",n=e.revid),"edit"!==c.Queue.groups[t])return this.toggleOutdatedNotice(!1),void this.togglePendingNotice(!1);if("pending"===e.type)return this.togglePendingNotice(!this.ws.queue.pending.has(n),!0);if(!e.pending&&"pending"===this.ws.queue.type)return this.togglePendingNotice(!0,!1);try{var s;const t=(await this.ws.api.getLatestIds([e.page.title]))[e.page.title];(null===(s=this.ws.queue.current.item)||void 0===s?void 0:s.id)===e.id&&this.toggleOutdatedNotice(t>n,t,e.page.title,n)}catch(e){console.error("Error checking if edit is outdated:",e),this.toggleOutdatedNotice(!1)}}startOutdatedCheck(e){this.stopOutdatedCheck(),this.outdated(e),this.intervals.outdated=setInterval(()=>{var t;e.id===(null===(t=this.ws.queue.current.item)||void 0===t?void 0:t.id)?this.outdated(e):this.stopOutdatedCheck()},1e3)}stopOutdatedCheck(){this.intervals.outdated&&(clearInterval(this.intervals.outdated),this.intervals.outdated=null),this.toggleOutdatedNotice(!1),this.togglePendingNotice(!1)}toggleEditWarNotice(e,t){const n=document.querySelector("#edit-war-notice");if(null!=e||(e=!n),e!==Boolean(n))if(e){const e=document.createElement("div");e.id="edit-war-notice",e.classList.add("notice","edit-war");const n=document.createElement("span");n.classList.add("fa","fa-warning"),e.appendChild(n);const s=document.createElement("span");s.classList.add("text"),s.innerHTML=`<b>3RR:</b> You have made ${t} reverts on this page in the last 24 hours.`,e.appendChild(s);const i=document.querySelector("#diff-container");i.parentElement.insertBefore(e,i)}else{const e=document.querySelector("#edit-war-notice");e&&e.remove()}}toggleOutdatedNotice(e,t,n,s){const i=document.querySelector("#outdated-notice");if(null!=e||(e=!i),e!==Boolean(i))if(e){const e=document.createElement("div");e.id="outdated-notice",e.classList.add("notice","outdated"),e.dataset.id=t,e.dataset.page=n;const s=document.createElement("span");s.classList.add("fa","fa-clock-rotate-left"),e.appendChild(s);const i=document.createElement("span");i.classList.add("text"),i.textContent="Newer revision available on this page.",e.appendChild(i);const a=document.createElement("span");a.classList.add("button"),a.innerHTML="<i class='fas fa-redo restore'></i> Restore this revision",a.addEventListener("click",async e=>{e.preventDefault();const t=await this.dialog.input("Restore Edit","Are you sure you want to restore this revision? This will create a new edit that reverts the page to this revision.","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"restore-edit",params:{summary:t}}]})}),e.appendChild(a);const r=document.createElement("span");r.classList.add("button"),r.innerHTML="View latest <i class='fas fa-arrow-right'></i>",r.addEventListener("click",t=>{t.preventDefault();const n=e.dataset.page,s=+e.dataset.id;n&&s&&this.ws.queue.loadFromRevision(n,s)}),e.appendChild(r);const o=document.querySelector("#diff-container");o.parentElement.insertBefore(e,o)}else{const e=document.querySelector("#outdated-notice");e&&e.remove()}else i&&(i.dataset.id=t,i.dataset.page=n)}togglePendingNotice(e,t){const n=document.querySelector("#pending-notice");if(null!=e||(e=!n),e!==Boolean(n))if(e){const e=document.createElement("div");e.id="pending-notice",e.classList.add("notice","outdated","pending");const n=document.createElement("span");n.classList.add("fa","fa-shield-alt"),e.appendChild(n);const s=document.createElement("span");s.classList.add("text"),s.textContent=t?"This revision cannot be reviewed because it is outdated":"This revision cannot be reviewed because it is not pending review",e.appendChild(s);const i=document.querySelector("#diff-container");i.parentElement.insertBefore(e,i)}else{const e=document.querySelector("#pending-notice");e&&e.remove()}}getORESColor(e){if(isNaN(e)||e<0)return"rgba(128, 128, 128, .5)";e=Math.min(Math.max(e||0,0),1);const t=w.palettes[this.ws.store.UI.theme.palette];return t[e*(t.length-1)|0]}updatePalette(){document.querySelectorAll("[data-ores]").forEach(e=>{e.style.setProperty("--ores-color",this.getORESColor(parseFloat(e.dataset.ores)))})}updateZenMode(){this.ws.notifications.count();const e=this.ws.store.settings.zen_mode;e.enabled&&e.music.enabled&&window.isElectron?this.ws.audio.zengine.start():this.ws.audio.zengine.stop(),document.querySelectorAll("[data-zen-show]").forEach(t=>{const n=t.dataset.zenShow.split(",");e.enabled&&!n.some(t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.enabled})?t.style.display="none":t.style.display=""})}updateAccessibility(){document.body.classList.toggle("colorblind-mode",this.ws.store.settings.accessibility.colorblind),document.body.classList.toggle("dyslexia-font",this.ws.store.settings.accessibility.dyslexia),document.body.classList.toggle("high-contrast",this.ws.store.settings.accessibility.high_contrast),document.body.classList.toggle("reduce-motion",this.ws.store.settings.accessibility.reduce_motion)}reorderQueues(){var e;const t=c.Queue.types.map(e=>({name:e,...this.ws.store.settings.queue[e]}));t.sort((e,t)=>e.order-t.order),t.forEach(e=>{const t=document.querySelector(`#queue-tab-${e.name}`);t&&(t.style.display=e.enabled?"":"none",t.parentElement.appendChild(t))});const n=t.find(e=>e.name===this.ws.queue.current.type)?this.ws.queue.current.type:null===(e=t.find(e=>e.enabled))||void 0===e?void 0:e.name;if(n)this.ws.queue.switch(n);else{const e=document.createElement("div");e.classList.add("queue-empty"),e.textContent="No items in queue",document.querySelector("#queue-items").innerHTML=e.outerHTML,this.newCurrentItem(null),this.ws.queue.switch("void")}}updateQueueTabs(e=c.Queue.types){const t=this.ws.queue.queues;e.forEach(e=>{const n=document.querySelector(`#queue-tab-${e}`);if(!n||!t[e])return;const s=n.querySelector(":scope > span > .icon-count"),i=t[e].queue.length;s.classList.toggle("hidden",0===i),s.textContent=i,n.classList.toggle("mentions-me",this.ws.store.settings.username_highlighting.enabled&&t[e].queue.some(e=>e.mentions.has))})}createTooltip(e,t="",n="",s=!1,i=10,a=null){const r=document.createElement("div");r.className=`tooltip ${t}`,r.style.opacity=0,s?r.innerHTML=n:r.textContent=n,document.body.querySelector("#app").appendChild(r),"function"==typeof a&&a(r),r.offsetHeight;const o=r.getBoundingClientRect(),l=o.width,d=o.height,c=e.getBoundingClientRect(),u=innerWidth,p=innerHeight,g=[["bottom",(c.left+c.right)/2-l/2,c.bottom+10,!0],["top",(c.left+c.right)/2-l/2,c.top-d-10,!0],["right",c.right+10,(c.top+c.bottom)/2-d/2,!0],["left",c.left-l-10,(c.top+c.bottom)/2-d/2,!0]];let h=null,m=-1/0;for(const[e,t,n,s]of g){let e=t,i=n;if(e>=0&&e+l<=u&&i>=0&&i+d<=p){m=100,h=[e,i];break}if(s){const s=Math.max(0,Math.min(e,u-l)),a=Math.max(0,Math.min(i,p-d)),r=!(s+l<=c.left||s>=c.right||a+d<=c.top||a>=c.bottom),o=Math.abs(s-t)+Math.abs(a-n),g=r?-50-o:50-o/10;g>m&&(m=g,h=[s,a])}}return h?(r.style.left=`${h[0]}px`,r.style.top=`${h[1]}px`):(r.style.left=`${Math.max(0,Math.min((c.left+c.right)/2-l/2,u-l))}px`,r.style.top=`${Math.max(0,Math.min((c.top+c.bottom)/2-d/2,p-d))}px`),e.addEventListener("mousewheel",e=>r.scrollBy({left:e.deltaX,top:e.deltaY,behavior:"smooth"})),setTimeout(()=>r.style.opacity=1,i),r}removeTooltips(){document.querySelectorAll(".tooltip").forEach(e=>e.remove())}addTooltipListener(e){if(!e.dataset.tooltip)return;let t;e.addEventListener("mouseenter",()=>{e.dataset.tooltip&&(t&&t.remove(),t=this.createTooltip(e,"",e.dataset.tooltip,"true"===e.dataset.tooltipHtml,+e.dataset.tooltipDelay||100))}),e.addEventListener("mouseleave",()=>{t&&(t.remove(),t=null)})}positionBottomMenu(e,t){t.style.left="",t.style.right="",t.style.top="",t.style.bottom="";const n=()=>{if(!t.classList.contains("show"))return;const s=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=innerWidth,r=innerHeight;i.left+s.width<=a?(t.style.left=`${i.left}px`,t.style.right="auto"):(t.style.right=a-i.right+"px",t.style.left="auto");i.top>=s.height?(t.style.bottom=r-i.top+"px",t.style.top="auto"):(t.style.top=`${i.bottom}px`,t.style.bottom="auto"),requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionSubmenu(e,t){e.style.left="",e.style.right="",e.style.top="",e.style.bottom="";const n=()=>{if(!e.classList.contains("show"))return;const s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left;o<s.width+20&&l>o&&(e.style.left="auto",e.style.right="calc(100% + 4px)");const d=r-i.bottom,c=i.top;s.bottom>r&&c>d&&(e.style.top="auto",e.style.bottom="0"),requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionLevelsMenu(e,t){t.style.left="",t.style.right="",t.style.top="",t.style.bottom="";const n=()=>{if(!t.classList.contains("show"))return;const s=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left,d=o>=s.width+8,c=l>=s.width+8;d?(t.style.left=`${i.right+8}px`,t.style.right="auto"):c?(t.style.right=a-i.left+8+"px",t.style.left="auto"):o>l?(t.style.left=`${i.right+8}px`,t.style.right="auto"):(t.style.right=a-i.left+8+"px",t.style.left="auto");const u=Math.max(Math.min(i.top+(i.height-s.height)/2,r-s.height-8),8);t.style.top=`${u}px`,t.style.bottom="auto",requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionWarningSubmenu(e,t){e.style.left="",e.style.right="",e.style.top="",e.style.bottom="";const n=()=>{if(!e.classList.contains("show"))return;const s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left,d=o>=s.width+8,c=l>=s.width+8;d?(e.style.left=`${i.right+8}px`,e.style.right="auto"):c?(e.style.right=a-i.left+8+"px",e.style.left="auto"):o>l?(e.style.left=`${i.right+8}px`,e.style.right="auto"):(e.style.right=a-i.left+8+"px",e.style.left="auto");const u=Math.max(Math.min(i.top+(i.height-s.height)/2,r-s.height-8),8);e.style.top=`${u}px`,e.style.bottom="auto",requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}createWarningItem(e,t,n,s,i=!1){const a=this.ws.store.favorite[s],r=document.createElement("div");r.classList.add("warning-menu-item"),i?(r.draggable=!0,r.classList.add("favorite-item")):r.classList.add("submenu-option"),r.dataset.warning=e.title;const o=document.createElement("span");o.classList.add("favorite-star"),a.includes(e.title)?(o.classList.add("favorited"),o.innerHTML="<i class='fas fa-star'></i>"):o.innerHTML="<i class='fa-regular fa-star'></i>",r.appendChild(o),o.addEventListener("click",t=>{t.stopPropagation();const n=a.indexOf(e.title),l="reverts"===s?document.querySelector("#revert-menu > .warning-menu"):document.querySelector("#warn-menu > .warning-menu");if(-1===n){a.push(e.title),o.classList.add("favorited","spin"),o.innerHTML="<i class='fas fa-star'></i>";let t=l.querySelector(".favorites-section");if(!t){t=document.createElement("div"),t.className="favorites-section";const e=document.createElement("div");e.className="favorites-header",e.innerHTML='<span class="icon fas fa-star"></span><span>Favorites</span>',t.appendChild(e);const n=document.createElement("div");n.className="favorites-container",t.appendChild(n),l.insertBefore(t,l.firstChild);const s=document.createElement("div");s.className="favorites-separator",l.insertBefore(s,t.nextSibling)}const n=l.__executeCallbacks__;n&&t.querySelector(".favorites-container").appendChild(this.createWarningItem(e,n.executeWithWarn,n.executeNoWarn,s,!0))}else if(a.splice(n,1),o.classList.remove("favorited"),o.classList.add("spin"),o.innerHTML="<i class='fa-regular fa-star'></i>",i){r.remove();const t=l.querySelector(".favorites-section");var d;if(0===(null==t?void 0:t.querySelector(".favorites-container").children.length))t.remove(),null===(d=l.querySelector(".favorites-separator"))||void 0===d||d.remove();const n=document.body.querySelector(`.warning-menu-item:not(.favorite-item)[data-warning="${e.title}"]`);if(n){const e=n.querySelector(".favorite-star");e.classList.remove("favorited"),e.innerHTML="<i class='fa-regular fa-star'></i>",e.classList.add("spin"),setTimeout(()=>e.classList.remove("spin"),500)}}else{const t=l.querySelector(".favorites-section");if(t){const n=t.querySelector(`[data-warning="${e.title}"]`);var c;if(n)if(n.remove(),0===t.querySelector(".favorites-container").children.length)t.remove(),null===(c=l.querySelector(".favorites-separator"))||void 0===c||c.remove()}}setTimeout(()=>o.classList.remove("spin"),500)});const l=document.createElement("span");l.className=`icon ${e.icon}`,r.appendChild(l);const d=document.createElement("span");d.className="warning-menu-title",d.textContent=e.title,r.appendChild(d);const c=document.createElement("span");if(c.className="fas fa-circle-question",c.dataset.tooltip=`${e.description} (click for template preview)`,r.appendChild(c),this.addTooltipListener(c),c.addEventListener("click",async t=>{t.preventDefault(),t.stopPropagation();const n=this.ws;this.dialog.show(e.title,async function(){return(await Promise.allSettled(e.templates.map(e=>{const t=n.queue.current.item;return n.api.parse(`{{${e.template}|${t.page.title}}}`,`User:${t.user.name}`,!0)}))).map(e=>{let t="";t="fulfilled"===e.status?e.value:`<em>Error loading template preview: ${e.reason}</em>`;const s=(new DOMParser).parseFromString(t,"text/html").body;return s.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${n.server}`).href)}),s.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${n.server}`).href)}),s.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,s]=e.trim().split(/\s+/,2),i=new URL(t,`https://${n.server}`).href;return s?`${i} ${s}`:i}).join(", ");e.setAttribute("srcset",t)}),s.innerHTML}).join("<div style='height: 1px; background: #0004; margin: 8px 0;'></div>")}())}),!i){const i=document.createElement("div");if(i.classList.add("warning-menu-buttons"),"reverts"===s){const t=document.createElement("span");t.className="warning-menu-button warning-menu-no-warn-button",t.textContent="no warn",i.appendChild(t),t.addEventListener("click",async t=>{t.stopPropagation(),await n(e.title)})}const a=document.createElement("span");a.className="warning-menu-button warning-menu-levels-button",a.textContent="advanced",i.appendChild(a),r.appendChild(i);const o=document.createElement("div");o.className="levels-menu";for(const n of e.templates){if(n.generic)continue;const s=document.createElement("span");s.className=`levels-menu-item colorize-level colorize-level-${n.name}`,s.textContent=n.name,o.appendChild(s),s.addEventListener("click",async()=>await t(e.title,n.name))}document.body.querySelector("#app").appendChild(o),a.addEventListener("click",e=>{e.stopPropagation();const t=o.classList.contains("show");document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show")),t||(o.classList.add("show"),this.positionLevelsMenu(a,o))})}return r.addEventListener("click",async n=>{n.target.closest(".warning-menu-button")||n.target.closest(".favorite-star")||await t(e.title,"auto")}),i&&(r.addEventListener("dragstart",t=>{t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e.title),r.classList.add("dragging")}),r.addEventListener("dragend",()=>{r.classList.remove("dragging")}),r.addEventListener("dragover",e=>{e.preventDefault(),e.dataTransfer.dropEffect="move";const t=document.querySelector(".dragging");if(t&&t!==r){const n=r.getBoundingClientRect(),s=n.top+n.height/2;e.clientY<s?r.parentNode.insertBefore(t,r):r.parentNode.insertBefore(t,r.nextSibling)}}),r.addEventListener("drop",e=>{e.preventDefault();const t=Array.from(r.closest(".favorites-section").querySelectorAll(".favorite-item"));this.ws.store.favorite[s]=t.map(e=>e.dataset.warning)})),r}createWarnMenu(e,t,n){var s,i,a;removeEventListener("keydown",this.warningMenuKeyListener),document.querySelectorAll(".levels-menu").forEach(e=>e.remove()),document.querySelectorAll(".warning-submenu").forEach(e=>e.remove());const r=document.createElement("div");r.className="warning-menu",t.appendChild(r),r.addEventListener("click",e=>{e.target.closest(".warning-submenu")||document.body.querySelectorAll(".warning-submenu.show").forEach(e=>e.classList.remove("show")),e.target.closest(".levels-menu")||document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show"))});const o=async(t,n)=>{const s=(0,u.getWarningFromLookup)(t),i=this.ws.store.settings.auto_report;await this.ws.execute({actions:[{name:"next-item",params:{}},"reverts"===e?{name:"rollback-edit",params:{summary:s.summary}}:{},{name:"warn-user",params:{warning:t,level:n}},{name:"highlight-user",params:{}}].concat(i.enabled&&s.reportable&&i.for.has(t)?[{name:"if",condition:{name:"user-final-warning"},actions:[{name:"report-user-to-aiv",params:{reportMessage:"Vandalism past final warning"}}]}]:[])})},l=async e=>{const t=(0,u.getWarningFromLookup)(e);await this.ws.execute({actions:[{name:"next-item",params:{}},{name:"rollback-edit",params:{summary:t.summary}}]})},d=null!==(s=null===(i=this.ws.queue.current.item)||void 0===i?void 0:i.type)&&void 0!==s?s:this.ws.queue.current.type;let p=c.Queue.groups[d];if("abuselog"===d&&null!==(a=this.ws.queue.current.item)&&void 0!==a&&a.revid&&(p="edit"),r.__executeCallbacks__={executeWithWarn:o,executeNoWarn:l},this.ws.store.favorite.reverts.length>0){const t=document.createElement("div");t.className="favorites-section";const s=document.createElement("div");s.className="favorites-header",s.innerHTML='<span class="icon fas fa-star"></span><span>Favorites</span>',t.appendChild(s);const i=document.createElement("div");i.className="favorites-container",t.appendChild(i);const a=Object.values(u.warningsLookup).filter(e=>e.queueType.includes(p)&&(!n||"function"!=typeof e.show||e.show(n)));for(const t of this.ws.store.favorite[e]){const n=a.find(e=>e.title===t);if(n){const t=this.createWarningItem(n,o,l,e,!0);i.appendChild(t)}}r.appendChild(t);const d=document.createElement("div");d.className="favorites-separator",r.appendChild(d)}let g=0;for(const[,t]of Object.entries(u.warnings)){let s=0;const i=[];for(const e of t.warnings)("function"!=typeof e.show||e.show(n))&&e.queueType.includes(p)&&(i.push(e),s++,g++);if(0===s)continue;const a=document.createElement("div");a.className="menu-option submenu-trigger";const d=document.createElement("span");d.className=`icon ${t.icon}`,a.appendChild(d);const c=document.createElement("span");c.textContent=t.title,a.appendChild(c);const u=document.createElement("span");u.className="submenu-arrow fas fa-chevron-right",a.appendChild(u),r.appendChild(a);const h=document.createElement("div");h.className="warning-submenu submenu",document.body.querySelector("#app").appendChild(h);for(const t of i){const n=this.createWarningItem(t,o,l,e,!1);h.appendChild(n)}a.addEventListener("click",e=>{e.stopPropagation();const t=h.classList.contains("show");document.body.querySelectorAll(".warning-submenu.show").forEach(e=>{e!==h&&(e.classList.remove("show"),document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show")))}),t?(a.classList.remove("focus-opened"),h.classList.remove("show"),document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show"))):(a.classList.add("focus-opened"),h.classList.add("show"),this.positionWarningSubmenu(h,a))})}if(0===g){const e=document.createElement("div");e.className="warning-menu-no-items",e.textContent="No warnings available for this edit.",r.appendChild(e)}addEventListener("keydown",this.warningMenuKeyListener)}warningMenuKeyListener(e){if("Tab"===e.key){const t=document.querySelector("#warn-menu.show, #revert-menu.show");if(t){if(t.querySelector(":scope > div > .menu-option.focus-opened")){const t=document.body.querySelector(".submenu.show");if(t){const n=t.querySelectorAll(":scope > .warning-menu-item");if(n.length>0){const s=(Array.from(n).indexOf(t.querySelector(".focus-visible"))+(e.shiftKey?-1:1)+n.length)%n.length;document.querySelectorAll(".focus-visible").forEach(e=>e.classList.remove("focus-visible")),n[s].classList.add("focus-visible"),e.preventDefault()}}}else{const n=t.querySelectorAll(":scope > div > .favorites-section > .favorites-container > .warning-menu-item,\n\t\t\t\t\t\t :scope > div > .menu-option");if(n.length>0){const s=(Array.from(n).indexOf(t.querySelector(".focus-visible"))+(e.shiftKey?-1:1)+n.length)%n.length;document.querySelectorAll(".focus-visible").forEach(e=>e.classList.remove("focus-visible")),n[s].classList.add("focus-visible"),e.preventDefault()}}}}else if("Enter"===e.key){if(document.querySelector("#warn-menu.show, #revert-menu.show")){const t=document.querySelector(".focus-visible");t&&(t.click(),e.preventDefault())}}else if("Escape"===e.key){if(document.querySelector("#warn-menu.show, #revert-menu.show")){const t=document.querySelector(".focus-opened");t?(t.classList.remove("focus-opened"),t.classList.add("focus-visible"),t.click()):(document.querySelectorAll(".bottom-tool-menu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>e.classList.remove("active")),document.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".levels-menu").forEach(e=>e.classList.remove("show"))),e.preventDefault()}}}closeMenus(){document.querySelectorAll(".bottom-tool-menu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>e.classList.remove("active")),document.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".levels-menu").forEach(e=>e.classList.remove("show"))}}function y(e){const t=new Set(["B","I","EM","STRONG","CODE","SPAN","BR"]),n=document.createElement("div");n.innerHTML=e;const s=e=>{const n=[...e.childNodes];for(const e of n)if(e.nodeType===Node.ELEMENT_NODE)if(t.has(e.tagName)){for(;e.attributes.length>0;)e.removeAttribute(e.attributes[0].name);s(e)}else e.replaceWith(...e.childNodes)};return s(n),n.innerHTML}t.GUI=w,h(w,"palettes",{traffic:(0,p.BuildPalette)(1e3,"#78c675","#fdff7a","#fcff54","#fbff12","#ffc619","#ff8812","#f56214","#f73214","#fc0303","#fc0303"),magma:(0,p.BuildPalette)(1e3,"#000004","#1b0c41","#4a0c6b","#781c6d","#a52c60","#cf4446","#ed6925","#fb9b06","#f7d13d","#fcffa4"),plasma:(0,p.BuildPalette)(1e3,"#0d0887","#46039f","#7201a8","#9c179e","#bd3786","#d8576b","#ed7953","#fb9f3a","#fdca26","#f0f921"),viridis:(0,p.BuildPalette)(1e3,"#440154","#3b528b","#21918c","#5ec962","#fde725"),natural:(0,p.BuildPalette)(1e3,"#ffffff","#18ff18"),cool:(0,p.BuildPalette)(1e3,"#ffffff","#1818ff"),heat:(0,p.BuildPalette)(1e3,"#ffffff","#ff1818"),grey:(0,p.BuildPalette)(1e3,"#000000","#ffffff")})},4674(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Notifications=void 0;t.Notifications=class{constructor(e){this.ws=e,this.first={},["alert","message"].forEach(e=>{this[e]=[],this.update(e),this.first[e]=!0,this.load(e)})}find(e,t){if(!1===(null!=e&&e)){let e=this.alert.find(e=>e.id===t);return e?{type:"alert",notification:e}:(e=this.message.find(e=>e.id===t),e?{type:"message",notification:e}:void 0)}return this[e].find(e=>e.id===t)}async load(e){try{const t=(await this.ws.api.continuous({action:"query",meta:"notifications",notlimit:"max",notprop:"list",notfilter:"!read",notsections:e,notformat:"model"})).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.notifications)||void 0===t?void 0:t.list)||[]});await Promise.all(t.map(async e=>this.ws.api.parse(e["*"].body,void 0,void 0,!0).then(t=>{var n;return null!==(n=void(e["*"].parsed=t))&&void 0!==n?n:e})));let n=!1;for(const s of t)this[e].some(e=>e.id===s.id&&e.read===s.read)||(this[e].unshift(s),n=!0);if(n){const t=this.ws.store.settings.zen_mode;t.enabled&&!t[`${e}s`].enabled||this.ws.audio.playSound(["notification",e]),this.update(e)}}finally{setTimeout(()=>this.load(e),1e4)}}update(e){this.count();const t=this[e],n=t.filter(e=>!e.read),s=this.ws.store.settings.zen_mode;s.enabled&&!s[`${e}s`].enabled||n.filter(e=>!e.seen&&!e.notified).forEach(t=>{t.notified=!0,this.first[e]||electron.sendNotification({title:this.ws.util.textify(t["*"].header),body:this.ws.util.textify(t["*"].body)},t["*"].links.primary.url)}),this.first[e]=!1;const i=document.querySelector(`#${e}s-count`),a=document.querySelector(`#${e}s-list`);i.textContent=n.length,i.classList.toggle("hidden",0===n.length),0===t.length?a.innerHTML=`<div class="notifications-empty">No new ${e}s</div>`:(a.innerHTML="",t.forEach(t=>{const n=t["*"];{const s=document.createElement("div");s.classList.add("notification"),s.classList.add(t.read?"read":"unread"),s.addEventListener("click",()=>{this.read(e,t),this.ws.open(n.links.primary.url)});{const e=document.createElement("div");e.classList.add("notification-icon"),e.innerHTML=`<img src="${new URL(n.iconUrl,`https://${this.ws.server}/`).toString()}" alt="icon">`,s.appendChild(e)}{const e=document.createElement("div");e.classList.add("notification-content"),s.appendChild(e);{const t=document.createElement("div");t.classList.add("notification-header"),t.innerHTML=this.ws.util.truncate(n.header,100),e.appendChild(t)}{const t=document.createElement("div");t.classList.add("notification-body"),t.innerHTML=n.parsed,e.appendChild(t),t.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,n]=e.trim().split(/\s+/,2),s=new URL(t,`https://${this.ws.server}`).href;return n?`${s} ${n}`:s}).join(", ");e.setAttribute("srcset",t)}),t.querySelectorAll("a").forEach(e=>{e.target="_blank"})}{const t=document.createElement("div");t.classList.add("notification-links"),n.links.secondary.forEach(e=>{const n=document.createElement("a");n.href=e.url,n.target="_blank",n.textContent=e.label,t.appendChild(n)}),e.appendChild(t)}}{const n=document.createElement("div");if(n.classList.add("notification-right"),s.appendChild(n),!t.read){const s=document.createElement("div");s.classList.add("notification-unread-indicator"),s.addEventListener("click",n=>{n.stopPropagation(),this.read(e,t)}),n.appendChild(s)}{const e=document.createElement("div");e.classList.add("notification-timestamp"),e.dataset.time=t.timestamp.utciso8601,e.dataset.timeFormat="notification",e.textContent=this.ws.util.formatNotificationTime(new Date(t.timestamp.utciso8601)),n.appendChild(e)}}a.appendChild(s)}}))}seen(e){this.ws.api.postWithToken({action:"echomarkseen",type:e}),this[e].forEach(e=>e.seen=!0)}read(e,t){t?(t.read=!0,this.update(e),this.ws.api.postWithToken({action:"echomarkread",sections:e,list:t.id})):(this[e].forEach(e=>e.read=!0),this.update(e),this.ws.api.postWithToken({action:"echomarkread",sections:e,all:!0}))}count(){var e,t;const n=this.ws.store.settings.zen_mode;let s=0;n.enabled&&!n.alerts.enabled||(s+=(null===(e=this.alert)||void 0===e?void 0:e.filter(e=>!e.read).length)||0),n.enabled&&!n.messages.enabled||(s+=(null===(t=this.message)||void 0===t?void 0:t.filter(e=>!e.read).length)||0),electron.setBadgeCount(s),document.title=s>0?`(${s}) WikiShield`:"WikiShield"}}},6151(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ProgressBar=void 0;t.ProgressBar=class{constructor(){this.$bar=document.createElement("div"),this.$bar.classList.add("progress-bar"),this.$bar.style.opacity=1,document.querySelector("#progress-bar-container").appendChild(this.$bar),this.$overlay=document.createElement("div"),this.$overlay.classList.add("progress-bar-overlay"),this.$overlay.style.width="0%",this.$bar.appendChild(this.$overlay),this.$text=document.createElement("div"),this.$text.classList.add("progress-bar-text"),this.$bar.appendChild(this.$text)}set(e,t,n){this.$text.textContent=e,this.$overlay.style.width=100*Math.min(Math.max(t,0),1)+"%",this.$bar.classList.toggle("error",n),t>=1&&setTimeout(()=>{this.$bar.style.opacity=0,setTimeout(()=>this.$bar.remove(),300)},1700)}}},9117(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Settings=void 0;var s=n(8678),i=n(870),a=n(9808),r=n(985),o=n(372),l=n(7054),d=n(4018),c=(n(9501),n(955)),u=n(5564),p=n(2069),g=n(8469);function h(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function m(e,t,n){return e.set(f(e,t),n),n}function v(e,t){return e.get(f(e,t))}function f(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var b=new WeakMap,w=new WeakMap,y=new WeakMap;t.Settings=class{constructor(e){h(this,b,void 0),h(this,w,void 0),h(this,y,void 0),this.ws=e,this.ws.api.getTags().then(e=>{this.wikipediaTags=e})}get active(){return document.querySelector("#settings-container > .settings > .settings-right > div:not(.hidden)")}controller(e){const t=e.key.toLowerCase();if(v(b,this)){if("escape"===t)return v(b,this).call(this,"escape",!0);if("control"===t||"shift"===t||"alt"===t||a.controls.has(t))switch(e.preventDefault(),e.type){case"keydown":v(b,this).call(this,(0,a.buildShortcut)(e),!1);break;case"keyup":v(b,this).call(this,(0,a.buildShortcut)(e),!0)}}else"escape"===t&&"keydown"===e.type&&this.close()}collapsible(e,t,n,s=!0){const i=document.createElement("div");i.className="settings-section collapsible",e.appendChild(i);const a=document.createElement("div");a.className="settings-section-header collapse-title",a.textContent=t(s),i.appendChild(a);const r=document.createElement("div");r.className="collapse-content collapsible",i.appendChild(r);const o=document.createElement("div");o.className="settings-section-desc",o.textContent=n,r.appendChild(o),s?(r.style.height="0px",r.style.opacity=0,r.style.overflow="hidden",i.classList.add("collapsed")):(r.style.height="auto",r.style.opacity=1,r.style.overflow="visible",i.classList.remove("collapsed"));let l,d,c,u,p,g,h=!1;const m=e=>{d||(d=e);const t=e-d,n=Math.min(t/300,1),i=(a=n)<.5?2*a*a:(4-2*a)*a-1;var a;const o=c+(p-c)*i,v=u+(g-u)*i;r.style.height=`${o}px`,r.style.opacity=v,n<1?l=requestAnimationFrame(m):(s?r.style.overflow="hidden":(r.style.height="auto",r.style.overflow="visible"),h=!1,l=null,d=null)};return a.addEventListener("click",()=>{if(h){cancelAnimationFrame(l);const e=r.getBoundingClientRect().height;c=e,u=parseFloat(getComputedStyle(r).opacity)}else c=s?0:r.scrollHeight,u=s?0:1;s=!s,a.textContent=t(s),i.classList.toggle("collapsed",s),r.style.overflow="hidden",s?(p=0,g=0):(p=r.scrollHeight,g=1),h=!0,d=null,l=requestAnimationFrame(m)}),r}start(){electron.onOpenChangelog(()=>{var e;return null!==(e=void this.open())&&void 0!==e?e:this.changelog()});let e=0;document.querySelector("#settings-container").addEventListener("click",t=>{"settings-container"!==t.target.id||(e=Math.max(0,e))||this.close()}),document.querySelector("#settings-general-button").addEventListener("click",this.general.bind(this)),document.querySelector("#settings-audio-button").addEventListener("click",this.audio.bind(this)),document.querySelector("#settings-controls-button").addEventListener("click",this.controls.bind(this)),document.querySelector("#settings-zen-button").addEventListener("click",this.zen.bind(this)),document.querySelector("#settings-app-button").addEventListener("click",this.app.bind(this)),document.querySelector("#settings-queue-button").addEventListener("click",this.queue.bind(this)),document.querySelector("#settings-accessibility-button").addEventListener("click",this.accessibility.bind(this)),document.querySelector("#settings-AI-button").addEventListener("click",this.AI.bind(this)),document.querySelector("#settings-auto-reporting-button").addEventListener("click",this.autoReporting.bind(this)),document.querySelector("#settings-gadgets-button").addEventListener("click",this.gadgets.bind(this)),document.querySelector("#settings-whitelist-users-button").addEventListener("click",this.whitelist.bind(this,"user")),document.querySelector("#settings-whitelist-pages-button").addEventListener("click",this.whitelist.bind(this,"page")),document.querySelector("#settings-whitelist-tags-button").addEventListener("click",this.whitelist.bind(this,"tag")),document.querySelector("#settings-highlight-users-button").addEventListener("click",this.highlight.bind(this,"user")),document.querySelector("#settings-highlight-pages-button").addEventListener("click",this.highlight.bind(this,"page")),document.querySelector("#settings-highlight-tags-button").addEventListener("click",this.highlight.bind(this,"tag")),document.querySelector("#settings-statistics-button").addEventListener("click",this.statistics.bind(this)),document.querySelector("#settings-save-button").addEventListener("click",this.save.bind(this)),document.querySelector("#settings-changelog-button").addEventListener("click",this.changelog.bind(this)),document.querySelector("#settings-about-button").addEventListener("click",this.about.bind(this));{if(!window.isElectron){const e=document.querySelector("#settings-launch-behavior");document.querySelectorAll("#settings-launch-behavior .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-launch-behavior [data-value=${"true"===electron.localStorage.get("WikiShield:OpenExternally")?"new_page":"current_page"}]`).classList.add("selected");const t=e.querySelector("[data-value=current_page]");t.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),t.classList.add("selected"),electron.localStorage.set("WikiShield:OpenExternally",!1)});const n=e.querySelector("[data-value=new_page]");n.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),n.classList.add("selected"),electron.localStorage.set("WikiShield:OpenExternally",!0)})}const t=document.querySelector("#settings-ores-bias"),n=t.querySelector(".settings-slider-track"),s=t.querySelector(".settings-slider-thumb"),i=t.querySelector(".settings-slider-label-left"),a=i.querySelector(".percent"),r=t.querySelector(".settings-slider-label-right"),o=r.querySelector(".percent"),l=e=>{this.ws.store.settings.queue.ores_bias=+e.toFixed(2),e=Math.max(0,Math.min(100,Math.round(100*e))),s.style.left=`${e}%`,n.style.setProperty("--fill",`${e}%`);const t=100-e;a.textContent=`${t}%`,i.classList.toggle("active",t>0);const l=e;o.textContent=`${l}%`,r.classList.toggle("active",l>0)},d=e=>{const t=n.getBoundingClientRect();return(e.clientX-t.left)/t.width};n.addEventListener("click",e=>l(d(e)));let c=!1;s.addEventListener("mousedown",t=>{t.preventDefault(),c=!0,e++,s.classList.add("dragging")}),window.addEventListener("mousemove",e=>{c&&l(d(e))}),window.addEventListener("mouseup",()=>{c&&(c=!1,e--,s.classList.remove("dragging"))}),l(this.ws.store.settings.queue.ores_bias)}{const e=document.querySelector("#settings-maximum-edit-count");e.value=this.ws.store.settings.queue.max_edits,e.addEventListener("change",e=>{const t=+e.target.value;this.ws.store.settings.queue.max_edits=t;for(const[e,n]of this.ws.queue.bypass.entries())n<=t&&this.ws.queue.bypass.delete(e)});const t=document.querySelector("#settings-maximum-queue-size");t.value=this.ws.store.settings.queue.max_size,t.addEventListener("change",e=>this.ws.store.settings.queue.max_size=+e.target.value);const n=document.querySelector("#settings-minimum-ores-score");n.value=this.ws.store.settings.queue.min_ores,n.addEventListener("change",e=>this.ws.store.settings.queue.min_ores=+e.target.value);const s=document.querySelector("#settings-watchlist-expiry");s.value=this.ws.store.settings.expiry.watchlist,s.addEventListener("change",e=>this.ws.store.settings.expiry.watchlist=e.target.value);const i=document.querySelector("#settings-namespaces-container");i.innerHTML="",d.namespaces.forEach(e=>{const t=document.createElement("div");t.className="namespace-item",t.dataset.namespaceId=e.id,t.innerHTML=`\n\t\t\t\t\t<label class="checkbox-box">\n\t\t\t\t\t\t<input type="checkbox" autoComplete="off">\n\t\t\t\t\t\t<div class="checkmark"></div>\n\t\t\t\t\t</label>\n\t\t\t\t\t<span class="namespace-name">${e.name}</span>\n\t\t\t\t`;const n=t.querySelector("input[type=checkbox]");n.checked=this.ws.store.settings.namespaces.includes(e.id),n.addEventListener("change",t=>{if(t.target.checked)this.ws.store.settings.namespaces.includes(e.id)||this.ws.store.settings.namespaces.push(e.id);else{const t=this.ws.store.settings.namespaces.indexOf(e.id);-1!==t&&this.ws.store.settings.namespaces.splice(t,1)}}),i.appendChild(t)})}{const e=document.querySelector("#settings-ORES-alert-toggle");e.value=this.ws.store.settings.audio.ores_alert.enabled,e.addEventListener("change",t=>{this.ws.store.settings.audio.ores_alert.enabled=e.value});const t=document.querySelector("#settings-ORES-alert-threshold");t.value=this.ws.store.settings.audio.ores_alert.threshold,t.addEventListener("change",e=>{this.ws.store.settings.audio.ores_alert.threshold=+t.value});const n=document.querySelector("#settings-master-volume");n.value=this.ws.store.settings.audio.volume.master,n.addEventListener("change",e=>{this.ws.store.settings.audio.volume.master=+n.value});const s={sound:(e,t,n,s,i)=>{const a=["master",...t].join("."),r=document.createElement("volume-control");r.setAttribute("title",n),r.setAttribute("description",s),i&&r.setPreview(this.ws.audio,t),r.value=this.ws.store.settings.audio.volume[a],r.addEventListener("change",()=>{const e=this.ws.store.settings.audio.volume[a];this.ws.store.settings.audio.volume[a]=r.value,e!==r.value&&this.ws.audio.onvolumechanged()}),e.appendChild(r)},category:(e,t,n,s)=>{const i=["master",...t].join("."),a=this.collapsible(e,e=>n,s,!0),r=document.createElement("volume-control");r.setAttribute("title","Category Volume"),r.value=this.ws.store.settings.audio.volume[i],r.addEventListener("change",()=>{const e=this.ws.store.settings.audio.volume[i];this.ws.store.settings.audio.volume[i]=r.value,e!==r.value&&this.ws.audio.onvolumechanged()}),a.appendChild(r);const o=document.createElement("div");return o.className="settings-content",a.appendChild(o),o}},i=(e,t,n)=>{for(const[r,o]of Object.entries(e))switch(o.type){case"sound":var a;s.sound(n,[...t,r],o.title,o.description,null===(a=o.preview)||void 0===a||a);break;case"category":i(o.properties,[...t,r],s.category(n,[...t,r],o.title,o.description))}};i(this.ws.audio.audio,[],document.querySelector("#settings-sounds-container"))}{const e=document.querySelector("#repeat-control-scripts-toggle");e.value=this.ws.store.settings.repeat_control_scripts,e.addEventListener("change",t=>this.ws.store.settings.repeat_control_scripts=e.value),document.querySelector("#settings-new-control-script").addEventListener("click",async()=>{this.ws.store.control_scripts.unshift({keys:[],actions:[]}),this.controls()})}{const e=document.querySelector("#settings-zen-mode");e.value=this.ws.store.settings.zen_mode.enabled,e.addEventListener("change",t=>{this.ws.store.settings.zen_mode.enabled=e.value,this.ws.gui.updateZenMode()});const t=document.querySelector("#settings-zen-mode-sound");t.value=this.ws.store.settings.zen_mode.sound.enabled,t.addEventListener("change",e=>{this.ws.store.settings.zen_mode.sound.enabled=t.value,this.ws.gui.updateZenMode()});const n=document.querySelector("#settings-zen-mode-music");n.value=this.ws.store.settings.zen_mode.music.enabled,n.addEventListener("change",e=>{this.ws.store.settings.zen_mode.music.enabled=n.value,this.ws.gui.updateZenMode()});const s=document.querySelector("#settings-zen-mode-alerts");s.value=this.ws.store.settings.zen_mode.alerts.enabled,s.addEventListener("change",e=>{this.ws.store.settings.zen_mode.alerts.enabled=s.value,this.ws.gui.updateZenMode()});const i=document.querySelector("#settings-zen-mode-messages");i.value=this.ws.store.settings.zen_mode.messages.enabled,i.addEventListener("change",e=>{this.ws.store.settings.zen_mode.messages.enabled=i.value,this.ws.gui.updateZenMode()});const a=document.querySelector("#settings-zen-mode-toasts");a.value=this.ws.store.settings.zen_mode.toasts.enabled,a.addEventListener("change",e=>{this.ws.store.settings.zen_mode.toasts.enabled=a.value,this.ws.gui.updateZenMode()});const r=document.querySelector("#settings-zen-mode-badges");r.value=this.ws.store.settings.zen_mode.badges.enabled,r.addEventListener("change",e=>{this.ws.store.settings.zen_mode.badges.enabled=r.value,this.ws.gui.updateZenMode()})}{const e=document.querySelector("#settings-startup-performance");document.querySelectorAll("#settings-startup-performance .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-startup-performance [data-value=${this.ws.store.settings.performance.startup}]`).classList.add("selected");const t=e.querySelector("[data-value=always_off]");t.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),t.classList.add("selected"),this.ws.store.settings.performance.startup="always_off"});const n=e.querySelector("[data-value=adaptive]");n.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),n.classList.add("selected"),this.ws.store.settings.performance.startup="adaptive"});const s=e.querySelector("[data-value=always_on]");s.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),s.classList.add("selected"),this.ws.store.settings.performance.startup="always_on"})}{const e=document.querySelector("#settings-queues");o.Queue.types.map(e=>({type:e,data:this.ws.store.settings.queue[e]})).sort((e,t)=>e.data.order-t.data.order).forEach(t=>{var n;const s=document.createElement("draggable-order-item");s.setAttribute("key",t.type),s.setAttribute("name",null!==(n={recent:"Recent changes",pending:"Pending changes",users:"User creations",watchlist:"Watchlist",abuselog:"Abuse log"}[t.type])&&void 0!==n?n:t.type),s.enabled=t.data.enabled,e.addItem(s,t.type)}),e.addEventListener("toggle",e=>{var t;const n=null===(t=e.target.closest("draggable-order-item"))||void 0===t?void 0:t.getAttribute("key");n&&(this.ws.store.settings.queue[n].enabled=e.detail.enabled,this.ws.gui.reorderQueues())}),e.addEventListener("reorder",e=>{e.detail.keys.forEach((e,t)=>{this.ws.store.settings.queue[e].order=t,this.ws.gui.reorderQueues()})});const t=document.querySelector("#settings-palette-selector");Object.entries(g.GUI.palettes).forEach(([e,n])=>{const s=document.createElement("div");s.className="palette-option",s.classList.toggle("selected",this.ws.store.UI.theme.palette===e),s.dataset.palette=e,s.addEventListener("click",()=>{document.querySelectorAll(".palette-option.selected").forEach(e=>e.classList.remove("selected")),s.classList.add("selected"),this.ws.store.UI.theme.palette=e,this.ws.gui.updatePalette()}),t.appendChild(s);const i=document.createElement("div");i.className="palette-name",i.textContent=new p.Text(e).case(p.Text.Case.Title).get(),s.appendChild(i);const a=document.createElement("div");a.className="palette-preview",s.appendChild(a);const r=n.length,o=document.createElement("canvas");o.width=r,o.height=1;const l=o.getContext("2d"),d=l.createImageData(r,1);n.forEach((e,t)=>{const n=e.match(/\d+/g).map(e=>parseInt(e,10)),s=4*t;d.data[s]=n[0],d.data[s+1]=n[1],d.data[s+2]=n[2],d.data[s+3]=255}),l.putImageData(d,0,0),a.appendChild(o)})}{const e=document.querySelector("#settings-dyslexia-font");e.value=this.ws.store.settings.accessibility.dyslexia,e.addEventListener("change",t=>{this.ws.store.settings.accessibility.dyslexia=e.value,this.ws.gui.updateAccessibility()});const t=document.querySelector("#settings-reduce-motion");t.value=this.ws.store.settings.accessibility.reduce_motion,t.addEventListener("change",e=>{this.ws.store.settings.accessibility.reduce_motion=t.value,this.ws.gui.updateAccessibility()})}{const e=document.querySelector("#settings-AI-toggle");e.value=this.ws.store.settings.AI.enabled,e.addEventListener("change",t=>{var n;if(null===(n=this.ws.AI)||void 0===n||n.cancel.all(!0),this.ws.store.settings.AI.enabled=e.value,this.ws.store.settings.AI.enabled)if("Ollama"===this.ws.store.settings.AI.provider)this.ws.AI=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);else this.ws.AI=null;else this.ws.AI=null});const t=document.querySelector("#settings-AI-edit-analysis-toggle");t.value=this.ws.store.settings.AI.edit_analysis.enabled,t.addEventListener("change",e=>this.ws.store.settings.AI.edit_analysis.enabled=e.target.value);const n=document.querySelector("#settings-AI-username-analysis-toggle");n.value=this.ws.store.settings.AI.username_analysis.enabled,n.addEventListener("change",e=>this.ws.store.settings.AI.username_analysis.enabled=e.target.value);const i=document.querySelector("#ollama-url-input");i.value=this.ws.store.settings.AI.Ollama.server,i.addEventListener("change",e=>{this.ws.store.settings.AI.Ollama.server=i.value.trim(),"Ollama"===this.ws.store.settings.AI.provider&&this.ws.AI&&this.ws.AI.cancel.all(!0)});const a=document.querySelector("#settings-ollama-test-connection");a.addEventListener("click",async()=>{var e;if(a.disabled)return;a.disabled=!0;const t=document.querySelector("#settings-ollama-connection-status"),n=t.parentElement;let i;if(n.classList.add("testing"),n.classList.remove("connected","failed"),t.classList.add("animate-loading-dots"),t.textContent="Testing connection","Ollama"===this.ws.store.settings.AI.provider)i=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);null===(e=this.ws.AI)||void 0===e||e.cancel.all(!0),i instanceof s.AI&&await i.test()?(n.classList.add("connected"),n.classList.remove("testing","failed"),t.innerHTML="<span class='fa fa-check-circle'></span> Connected!"):(n.classList.add("failed"),n.classList.remove("testing","connected"),t.innerHTML="<span class='fa fa-times-circle'></span> Failed to connect.<br><small>Make sure you have followed the setup instructions (see below)</small>"),t.classList.remove("animate-loading-dots"),a.disabled=!1});const r=document.querySelector("#settings-ollama-refresh-models");r.addEventListener("click",async()=>{var e;if(r.disabled)return;r.disabled=!0;const t=document.querySelector("#settings-ollama-models"),n=document.querySelector("#settings-ollama-models-status"),i=n.parentElement;n.textContent="Searching",i.classList.add("searching","animate-loading-dots"),i.classList.remove("none","error"),null===(e=this.ws.AI)||void 0===e||e.cancel.all(!0);try{let e;if("Ollama"===this.ws.store.settings.AI.provider)e=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);const a=e instanceof s.AI&&await e.models()||[];a.length>0?(i.classList.remove("searching","none","error","animate-loading-dots"),n.innerHTML=`<span class="fa fa-check-circle"></span> Found ${a.length} ${new p.Text("model").get(a.length)}.`,t.innerHTML="",a.forEach(e=>{const n=e.name===this.ws.store.settings.AI.Ollama.model,s=document.createElement("div");s.className="model",s.classList.toggle("selected",n),s.dataset.model=e.name,t.appendChild(s);const i=document.createElement("div");i.className="model-top",s.appendChild(i);const a=document.createElement("span");a.className="indicator fa",a.classList.add(n?"fa-check-circle":"fa-circle"),i.appendChild(a);const r=document.createElement("span");r.className="model-name",r.textContent=e.name,i.appendChild(r);const o=document.createElement("span");o.className="psuedo-indicator fa fa-circle",i.appendChild(o);const l=document.createElement("div");l.className="model-bottom",s.appendChild(l);const d=document.createElement("span");d.className="model-size",d.textContent=this.ws.util.formatBytes(e.size),l.appendChild(d);const c=document.createElement("span");c.className="model-modified",c.textContent=new Date(e.modified_at).toLocaleDateString(),l.appendChild(c),s.addEventListener("click",()=>{var n;if(null===(n=this.ws.AI)||void 0===n||n.cancel.all(!0),"Ollama"===this.ws.store.settings.AI.provider)this.ws.store.settings.AI.Ollama.model=e.name;t.querySelectorAll(".model.selected").forEach(e=>{e.classList.remove("selected");const t=e.querySelector(".indicator");t.classList.remove("fa-circle"),t.classList.add("fa-check-circle")}),s.classList.add("selected");const i=s.querySelector(".indicator");i.classList.remove("fa-circle"),i.classList.add("fa-check-circle")})})):(i.classList.add("none"),i.classList.remove("searching","error","animate-loading-dots"),n.textContent="No models found.")}catch(e){i.classList.add("error"),i.classList.remove("searching","none","animate-loading-dots"),n.innerHTML="<span class='fa fa-times-circle'></span> Error fetching models."}r.disabled=!1})}{const e=document.querySelector("#settings-auto-reporting-toggle");e.value=this.ws.store.settings.auto_report.enabled,e.addEventListener("change",t=>{this.ws.store.settings.auto_report.enabled=e.value});const t=document.querySelector("#settings-auto-reporting-warnings-container");Object.entries(c.warningsLookup).filter(([e,t])=>t.reportable).sort((e,t)=>e[1].title.localeCompare(t[1].title)).forEach(([e,n])=>{const s=document.createElement("div");s.className="auto-reportable-warning-item",s.innerHTML=`\n\t\t\t\t\t\t<label class="checkbox-box" data-warning-key="${e}">\n\t\t\t\t\t\t\t<input type="checkbox" autoComplete="off" ${this.ws.store.settings.auto_report.for.has(e)?"checked":""}>\n\t\t\t\t\t\t\t<div class="checkmark"></div>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<span class="checkbox-name">${n.title}</span>\n\t\t\t\t\t`,s.querySelector("input[type=checkbox]").addEventListener("change",t=>{t.target.checked?this.ws.store.settings.auto_report.for.has(e)||this.ws.store.settings.auto_report.for.add(e):this.ws.store.settings.auto_report.for.delete(e)}),t.appendChild(s)})}{const e=document.querySelector("#settings-auto-welcome-toggle");e.value=this.ws.store.settings.auto_welcome.enabled,e.addEventListener("change",t=>{this.ws.store.settings.auto_welcome.enabled=e.value});const t=document.querySelector("#settings-wikipedia-popups-toggle");t.value=this.ws.store.settings.wikipedia_popups.enabled,t.addEventListener("change",e=>{this.ws.store.settings.wikipedia_popups.enabled=t.value}),window.arePopupsBlocked&&document.querySelector("#wikipedia-popups-toggle").classList.add("disabled");const n=document.querySelector("#talk-page-thanks-for-temporary-users-toggle");n.value=this.ws.store.settings.talk_page_thanks_for_temporary_users.enabled,n.addEventListener("change",e=>{this.ws.store.settings.talk_page_thanks_for_temporary_users.enabled=n.value});const s=document.querySelector("#settings-username-highlighting-toggle");s.value=this.ws.store.settings.username_highlighting.enabled,s.addEventListener("change",e=>{this.ws.store.settings.username_highlighting.enabled=s.value});const i=document.querySelector("#settings-username-highlighting-fuzzy-toggle");i.value=this.ws.store.settings.username_highlighting.fuzzy,i.addEventListener("change",e=>{this.ws.store.settings.username_highlighting.fuzzy=i.value})}{const e=document.querySelector("#settings-save-status");document.querySelector("#settings-export-button").addEventListener("click",async t=>{try{const t=this.ws.export();await electron.copyToClipboard(t),e.classList.remove("hidden","error","info"),e.classList.add("success"),e.innerHTML='\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-check-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Settings exported successfully!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">The base64 string has been copied to your clipboard.</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t'}catch(t){e.classList.remove("hidden","success","info"),e.classList.add("error"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-times-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Export failed!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">${t.message}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}});document.querySelector("#settings-import-button").addEventListener("click",async t=>{try{const t=await this.ws.gui.dialog.input("Import Settings","Please paste the base64 string of your exported settings below:");if(!t)throw new Error("No input provided.");const n=await this.ws.noinit(t),[s,i]=n.reduce((e,t)=>(t.expected?e[0].push(t):e[1].push(t),e),[[],[]]);e.classList.remove("hidden","error","info"),e.classList.add("success"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-check-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Settings imported successfully!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">\n\t\t\t\t\t\t\t\t\t${i.length>0?`<br><br><strong>Encountered ${new p.Text("%n issue").get(i.length)}:</strong><br>${i.map(e=>`- ${e.message}`).join("<br>")}`:""}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}catch(t){e.classList.remove("hidden","success","info"),e.classList.add("error"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-times-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Import failed!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">${t.message}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}});document.querySelector("#settings-reset-button").addEventListener("click",async t=>{await this.ws.gui.dialog.confirm("Reset Settings","Are you sure you want to reset all settings to their default values? This action cannot be undone.","Reset Settings",!0)&&(this.ws.noinit("e30="),e.classList.remove("hidden","error","success"),e.classList.add("info"),e.innerHTML='\n\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t<i class="fa fa-info-circle status-icon"></i>\n\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t<div class="status-title">Settings reset successfully.</div>\n\t\t\t\t\t\t\t<div class="status-desc">All settings have been restored to their default values.</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t')})}document.querySelectorAll("#settings-container > .settings > .settings-right > .about [data-link]").forEach(e=>{e.addEventListener("click",t=>this.ws.open(e.dataset.link,t.altKey))})}update(){document.querySelector("#settings-maximum-edit-count").value=this.ws.store.settings.queue.max_edits,document.querySelector("#settings-maximum-queue-size").value=this.ws.store.settings.queue.max_size,document.querySelector("#settings-minimum-ores-score").value=this.ws.store.settings.queue.min_ores,document.querySelector("#settings-watchlist-expiry").value=this.ws.store.settings.expiry.watchlist,document.querySelectorAll("#settings-namespaces-container .namespace-item").forEach(e=>{const t=parseInt(e.dataset.namespaceId,10);e.querySelector("input[type=checkbox]").checked=this.ws.store.settings.namespaces.includes(t)}),document.querySelector("#settings-zen-mode").value=this.ws.store.settings.zen_mode.enabled,document.querySelector("#settings-zen-mode-sound").value=this.ws.store.settings.zen_mode.sound.enabled,document.querySelector("#settings-zen-mode-music").value=this.ws.store.settings.zen_mode.music.enabled,document.querySelector("#settings-zen-mode-alerts").value=this.ws.store.settings.zen_mode.alerts.enabled,document.querySelector("#settings-zen-mode-messages").value=this.ws.store.settings.zen_mode.messages.enabled,document.querySelector("#settings-zen-mode-toasts").value=this.ws.store.settings.zen_mode.toasts.enabled,document.querySelector("#settings-zen-mode-badges").value=this.ws.store.settings.zen_mode.badges.enabled,document.querySelectorAll("#settings-startup-performance .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-startup-performance [data-value=${this.ws.store.settings.performance.startup}]`).classList.add("selected");{const e=document.querySelector("#settings-queues");e.clearItems(),o.Queue.types.map(e=>({type:e,data:this.ws.store.settings.queue[e]})).sort((e,t)=>e.data.order-t.data.order).forEach(t=>{var n;const s=document.createElement("draggable-order-item");s.setAttribute("key",t.type),s.setAttribute("name",null!==(n={recent:"Recent changes",pending:"Pending changes",users:"User creations",watchlist:"Watchlist"}[t.type])&&void 0!==n?n:t.type),s.enabled=t.data.enabled,e.addItem(s,t.type)}),document.querySelectorAll(".palette-option").forEach(e=>{e.classList.toggle("selected",e.dataset.palette===this.ws.store.UI.theme.palette)})}document.querySelector("#settings-AI-toggle").value=this.ws.store.settings.AI.enabled,document.querySelector("#settings-AI-edit-analysis-toggle").value=this.ws.store.settings.AI.edit_analysis.enabled,document.querySelector("#settings-AI-username-analysis-toggle").value=this.ws.store.settings.AI.username_analysis.enabled,document.querySelector("#ollama-url-input").value=this.ws.store.settings.AI.Ollama.server;{const e=document.querySelector("#settings-ollama-connection-status"),t=e.parentElement;e.innerHTML="",t.classList.remove("testing","connected","failed")}{document.querySelector("#settings-ollama-models").querySelectorAll(".model").forEach(e=>e.remove());const e=document.querySelector("#settings-ollama-models-status"),t=e.parentElement;e.innerHTML="",t.classList.remove("searching","none","error")}document.querySelector("#settings-auto-reporting-toggle").value=this.ws.store.settings.auto_report.enabled,document.querySelectorAll("#settings-auto-reporting-warnings-container .auto-reportable-warning-item").forEach(e=>{const t=e.querySelector("label").dataset.warningKey;e.querySelector("input[type=checkbox]").checked=this.ws.store.settings.auto_report.for.has(t)}),document.querySelector("#settings-auto-welcome-toggle").value=this.ws.store.settings.auto_welcome.enabled,document.querySelector("#settings-wikipedia-popups-toggle").value=this.ws.store.settings.wikipedia_popups.enabled,document.querySelector("#settings-username-highlighting-toggle").value=this.ws.store.settings.username_highlighting.enabled,document.querySelector("#settings-username-highlighting-fuzzy-toggle").value=this.ws.store.settings.username_highlighting.fuzzy}open(){document.querySelector("#settings-container").classList.add("show"),this.general(),m(y,this,new Promise(e=>{m(w,this,e)}))}close(){this.deselect(),this.ws.audio.stopPreviews(),document.querySelector("#settings-container").classList.remove("show"),v(w,this)&&(v(w,this).call(this),m(w,this,null))}waitForClose(){return v(y,this)}deselect(){document.querySelectorAll("#settings-container > .settings > .settings-left .settings-left-menu-item.selected").forEach(e=>e.classList.remove("selected")),document.querySelectorAll("#settings-container > .settings > .settings-right > :not(.hidden)").forEach(e=>e.classList.add("hidden"))}general(){this.deselect(),document.querySelector("#settings-general-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .general").classList.remove("hidden")}performance(){this.deselect(),document.querySelector("#settings-performance-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .performance").classList.remove("hidden")}audio(){this.deselect(),document.querySelector("#settings-audio-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .audio").classList.remove("hidden")}controls(){this.deselect(),document.querySelector("#settings-controls-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .controls").classList.remove("hidden");{const e=(t,n)=>{if(n.actions.includes(t))return n;for(const s of n.actions)if("if"===s.name||"if not"===s.name){const n=e(t,s);if(n)return n}return null},t=(n,s,a,o)=>{const l=document.createElement("div");if(l.className="control-action",n.appendChild(l),"if"===s.name||"if not"===s.name){var d,c,p;l.innerHTML=`\n\t\t\t\t\t\t<div class="control-action-title">\n\t\t\t\t\t\t\t<div class="control-action-title-left">\n\t\t\t\t\t\t\t\t<span class="fas fa-circle-question"></span>\n\t\t\t\t\t\t\t\t${"if"===s.name?"If":"If not"} <select></select> <span class="params"></span> then:\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="control-action-title-right">\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-up move-action-up"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-down move-action-down"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-trash-can delete-action"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`;const e=l.querySelector("select");Object.entries(i.conditions).forEach(([t,n])=>{e.innerHTML+="title"in n?`<option value="${t}">${n.title}</option>`:`<option value="${t}">${t}</option>`});const n=null!==(d=s.condition)&&void 0!==d?d:{name:Object.keys(i.conditions)[0],params:{}};null!==(c=n.name)&&void 0!==c||(n.name=Object.keys(i.conditions)[0]),null!==(p=n.params)&&void 0!==p||(n.params={}),e.value=n.name,e.addEventListener("change",t=>{n.name=e.value,o()});const r=new Map;for(const e of(0,u.sortDependencies)((null===(g=(h=i.conditions[n.name]).parameters)||void 0===g?void 0:g.call(h))||[])){var g,h;const t=document.createElement("div");t.className="condition-parameter",l.querySelector(".params").appendChild(t);const s={};for(const t of null!==(m=e.dependencies)&&void 0!==m?m:[]){var m;s[t]=n.params[t]}const i="function"==typeof e.default?e.default(s):e.default;let a=null;switch(e.type){case"choice":{const o=document.createElement("select");o.dataset.paramid=e.id,t.appendChild(o);const l="function"==typeof e.options?e.options(s):e.options;for(const e of null!=l?l:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(void 0!==n.params[e.id]){o.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(o.value=i,n.params[e.id]=i);a=()=>{const t={};for(const i of null!==(s=e.dependencies)&&void 0!==s?s:[]){var s;t[i]=n.params[i]}const i=o.value,a="function"==typeof e.options?e.options(t):e.options;o.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(a.includes(i))o.value=i;else{const s="function"==typeof e.default?e.default(t):e.default;o.value=s,n.params[e.id]=s}},o.addEventListener("change",()=>{n.params[e.id]=o.value;for(const t of r.get(e.id)||[])t()})}break;case"text":{const s=document.createElement("input");if(s.type="text",s.dataset.paramid=e.id,t.appendChild(s),void 0!==n.params[e.id]){s.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.value=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=s.value;for(const t of r.get(e.id)||[])t()})}break;case"boolean":{const s=document.createElement("input");if(s.type="checkbox",s.dataset.paramid=e.id,t.appendChild(s),void 0!==n.params[e.id]){s.checked=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.checked=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=s.checked;for(const t of r.get(e.id)||[])t()})}break;case"number":{const s=document.createElement("input");if(s.type="number",s.dataset.paramid=e.id,"min"in e&&(s.min=e.min),"max"in e&&(s.max=e.max),t.appendChild(s),void 0!==n.params[e.id]){s.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.value=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=parseFloat(s.value);for(const t of r.get(e.id)||[])t()})}}if("function"==typeof a)for(const t of null!==(v=e.dependencies)&&void 0!==v?v:[]){var v;r.has(t)||r.set(t,[]),r.get(t).push(a)}}for(const e of s.actions)t(l,e,a,o)}else{const e=r.events[s.name];l.innerHTML=`\n\t\t\t\t\t\t<div class="control-action-title">\n\t\t\t\t\t\t\t<div class="control-action-title-left">\n\t\t\t\t\t\t\t\t<span class="${"icon"in e?e.icon:"fas fa-bolt"}"></span>\n\t\t\t\t\t\t\t\t${"title"in e?e.title:s.name}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="control-action-title-right">\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-up move-action-up"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-down move-action-down"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-trash-can delete-action"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`;const t=new Map;for(const n of(0,u.sortDependencies)((null===(f=e.parameters)||void 0===f?void 0:f.call(e))||[])){var f;const e=document.createElement("div");e.className="action-parameter",e.innerHTML=`<div class="parameter-title">${n.title}</div>`,l.appendChild(e);const i={};for(const e of null!==(b=n.dependencies)&&void 0!==b?b:[]){var b;i[e]=s.params[e]}const a="function"==typeof n.default?n.default(i):n.default;let r=null;switch(n.type){case"choice":{const o=document.createElement("select");o.dataset.paramid=n.id,e.appendChild(o);const l="function"==typeof n.options?n.options(i):n.options;for(const e of null!=l?l:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(void 0!==s.params[n.id]){o.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(o.value=a,s.params[n.id]=a);r=()=>{const e={};for(const i of null!==(t=n.dependencies)&&void 0!==t?t:[]){var t;e[i]=s.params[i]}const i=o.value,a="function"==typeof n.options?n.options(e):n.options;o.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(a.includes(i))o.value=i;else{const t="function"==typeof n.default?n.default(e):n.default;o.value=t,s.params[n.id]=t}},o.addEventListener("change",()=>{s.params[n.id]=o.value;for(const e of t.get(n.id)||[])e()})}break;case"text":{const i=document.createElement("input");if(i.type="text",i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.value=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.value;for(const e of t.get(n.id)||[])e()})}break;case"boolean":{const i=document.createElement("input");if(i.type="checkbox",i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.checked=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.checked=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.checked;for(const e of t.get(n.id)||[])e()})}break;case"duration":{const i=document.createElement("duration-input");if(i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.value=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.value;for(const e of t.get(n.id)||[])e()})}}if("function"==typeof r)for(const e of null!==(w=n.dependencies)&&void 0!==w?w:[]){var w;t.has(e)||t.set(e,[]),t.get(e).push(r)}}}l.querySelector(".move-action-up").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]);const t=e(s,a),n=t.actions.indexOf(s);if(0===t.actions.indexOf(s)){if("if"!==t.name&&"if not"!==t.name)return;const i=e(t,a);i.actions.splice(i.actions.indexOf(t),0,s),t.actions.splice(n,1)}else{const e=t.actions[n-1];"if"===e.name||"if not"===e.name?(e.actions.push(s),t.actions.splice(n,1)):(t.actions.splice(n,1),t.actions.splice(n-1,0,s))}o()}),l.querySelector(".move-action-down").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]);const t=e(s,a),n=t.actions.indexOf(s);if(t.actions.indexOf(s)===t.actions.length-1){if("if"!==t.name&&"if not"!==t.name)return;const i=e(t,a);i.actions.splice(i.actions.indexOf(t)+1,0,s),t.actions.splice(n,1)}else{const e=t.actions[n+1];"if"===e.name||"if not"===e.name?(e.actions.unshift(s),t.actions.splice(n,1)):(t.actions.splice(n,1),t.actions.splice(n+1,0,s))}o()}),l.querySelector(".delete-action").addEventListener("click",async t=>{if(this.ws.audio.playSound(["ui","click"]),t.shiftKey||await this.ws.gui.dialog.confirm("Delete Action","Are you sure you want to delete this action?<br><small>Tip: Hold <code><Shift></code> while clicking to skip this confirmation.</small>",null,!0)){const t=e(s,a);t.actions.splice(t.actions.indexOf(s),1),o()}})},n=()=>{const e=new Set,t=new Set;this.ws.store.control_scripts.forEach(n=>{n.keys.forEach(n=>{e.has(n)?t.add(n):e.add(n)})}),document.querySelectorAll(".control-keys div[data-key]").forEach(e=>{e.classList.toggle("duplicate",t.has(e.dataset.key))})},s=(e,o)=>{e.innerHTML='\n\t\t\t\t\t<div class="control-container">\n\t\t\t\t\t\t<div class="control-container-title">When these keys are pressed</div>\n\t\t\t\t\t\t<div class="control-keys"></div>\n\t\t\t\t\t\t<div class="control-container-title margin-top">Complete these actions</div>\n\t\t\t\t\t\t<div class="control-actions"></div>\n\t\t\t\t\t</div>\n\t\t\t\t';const l=e.querySelector(".control-keys");for(const t of o.keys){const i=document.createElement("div");i.dataset.key=t,i.innerHTML=`\n\t\t\t\t\t\t<span class="key-elem-title">${" "===t?"space":t}</span>\n\t\t\t\t\t\t<span class="fas fa-trash-can remove"></span>\n\t\t\t\t\t`,l.appendChild(i),i.querySelector(".remove").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),o.keys.splice(o.keys.indexOf(t),1),s(e,o),n()})}const d=document.createElement("div");d.className="add",d.innerHTML='<span class="fas fa-plus"></span>',l.appendChild(d),d.addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),document.querySelectorAll(".key-select").forEach(e=>e.remove());const t=document.createElement("div");t.className="key-select animate-loading-dots",t.textContent="Press a key",l.insertBefore(t,d);const i=()=>{t.remove(),m(b,this,null)};t.addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),i()}),m(b,this,(r,l,d)=>{if("escape"===r)i();else if(l){if(!(0,a.validateShortcut)(r))return i(),void this.ws.gui.dialog.toast("Invalid Key","The key you pressed is not a valid shortcut key.","error");o.keys.includes(r)||o.keys.push(r),i(),s(e,o),n()}else t.textContent=r||"Press a key"})});const c=e.querySelector(".control-actions");for(const e of o.actions)t(c,e,o,()=>{this.controls()});const u=document.createElement("div");u.className="control-bottom-container",u.innerHTML='\n\t\t\t\t\t<div class="add-action-button"></div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<button class="add-action-button control-delete" style="--background: 211, 51, 51;">Delete</button>\n\t\t\t\t\t</div>\n\t\t\t\t',c.appendChild(u),u.querySelector(".control-delete").addEventListener("click",async e=>{this.ws.audio.playSound(["ui","click"]),(e.shiftKey||await this.ws.gui.dialog.confirm("Delete Control Script","Are you sure you want to delete this control script? This action cannot be undone?<br><small>Tip: Hold <code><Shift></code> while clicking to skip this confirmation.</small>",null,!0))&&(this.ws.store.control_scripts.splice(this.ws.store.control_scripts.indexOf(o),1),this.controls())});const p=()=>{const t=u.querySelector(".add-action-button");t.innerHTML='<button class="add-action-button new-button"><span class="fa fa-plus"></span> Add Action</button>',t.querySelector(".new-button").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),t.innerHTML='\n\t\t\t\t\t\t\t<select style="height: 35px;"></select>\n\t\t\t\t\t\t\t<button class="add-action-button cancel-button" style="margin-left: 10px;">Cancel</button>\n\t\t\t\t\t\t\t<button class="add-action-button create-button" style="margin-left: 10px;">Create</button>\n\t\t\t\t\t\t';const n=t.querySelector("select");n.innerHTML+='<option value="if">If Condition</option>',n.innerHTML+='<option value="if not">If Not Condition</option>',Object.entries(r.events).forEach(([e,t])=>{n.innerHTML+="title"in t?`<option value="${e}">${t.title}</option>`:`<option value="${e}">${e}</option>`}),t.querySelector(".cancel-button").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),p()}),t.querySelector(".create-button").addEventListener("click",()=>{if(this.ws.audio.playSound(["ui","click"]),"if"===n.value||"if not"===n.value||n.value in r.events){const t={name:n.value,params:{}};"if"!==n.value&&"if not"!==n.value||(t.condition={name:Object.keys(i.conditions)[0]},t.actions=[]),o.actions.push(t),s(e,o)}})})};p()},o=document.querySelector("#settings-container > .settings > .settings-right > .controls");o.querySelectorAll(".control-script-item").forEach(e=>e.remove());for(const e of this.ws.store.control_scripts){const t=document.createElement("div");t.className="settings-section control-script-item",o.appendChild(t),s(t,e)}n()}}zen(){this.deselect(),document.querySelector("#settings-zen-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .zen").classList.remove("hidden")}app(){this.deselect(),document.querySelector("#settings-app-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .app").classList.remove("hidden")}queue(){this.deselect(),document.querySelector("#settings-queue-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .queue").classList.remove("hidden")}accessibility(){this.deselect(),document.querySelector("#settings-accessibility-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .accessibility").classList.remove("hidden")}AI(){this.deselect(),document.querySelector("#settings-AI-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .AI").classList.remove("hidden")}autoReporting(){this.deselect(),document.querySelector("#settings-auto-reporting-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .auto-reporting").classList.remove("hidden")}gadgets(){this.deselect(),document.querySelector("#settings-gadgets-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .gadgets").classList.remove("hidden")}whitelist(e){this.deselect(),document.querySelector(`#settings-whitelist-${e}s-button`).classList.add("selected"),document.querySelector(`#settings-container > .settings > .settings-right > .whitelist.${e}s`).classList.remove("hidden");{const t=document.querySelector(`#settings-whitelist-${e}s-expiry`);t.value=this.ws.store.settings.expiry.whitelist[`${e}s`],t.addEventListener("change",t=>this.ws.store.settings.expiry.whitelist[`${e}s`]=t.target.value);const n=document.querySelector(`#settings-whitelist-${e}s-input`),s=()=>{const t=n.value.trim();t&&(n.value="",this.ws.store.whitelist[`${e}s`].set(t,[Date.now(),this.ws.util.expiryToDate(this.ws.store.settings.expiry.whitelist[`${e}s`]).valueOf()]),this.ws.store.statistics.items_whitelisted.total++,this.ws.store.statistics.items_whitelisted[`${e}s`]++,this.ws.gui.renderQueue(),this.whitelist(e))};if("tag"===e&&this.wikipediaTags){const e=this.wikipediaTags.map(e=>e.name).sort();for(const t of e){const e=document.createElement("option");e.value=t,e.textContent=t,n.appendChild(e)}n.setAttribute("list",n.id+"-datalist");const t=document.createElement("datalist");t.id=n.id+"-datalist",n.parentElement.appendChild(t);for(const n of e){const e=document.createElement("option");e.value=n,t.appendChild(e)}}document.querySelector(`#settings-whitelist-${e}s-add-button`).addEventListener("click",s),n.addEventListener("keydown",e=>{"Enter"===e.key&&(s(),e.preventDefault())})}{const t=document.querySelector(`#settings-whitelist-${e}s-list`);t.innerHTML="";const n=t=>{switch(e){case"user":return this.ws.page(`Special:Contributions/${t}`);case"page":return this.ws.page(t);case"tag":return this.ws.page(`Special:Tags/${t}`)}},s=[...this.ws.store.whitelist[`${e}s`]].sort((e,t)=>t[1][1]-e[1][1]);for(const[i,a]of s){const s=document.createElement("div"),r=new Date(a[0]),o=a[1]===1/0?"Never":`${new Date(a[1]).toLocaleDateString()} ${new Date(a[1]).toLocaleTimeString()}`;s.innerHTML=`\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<a href="${n(i)}">${i}</a>\n\t\t\t\t\t\t<span>Added: ${r.toLocaleDateString()} ${r.toLocaleTimeString()}</span>\n\t\t\t\t\t\t<span class="${Date.now()>a[1]?"expired":""}">\n\t\t\t\t\t\t\t${Date.now()>a[1]?"Expired":"Expires"}: ${o}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class="add-action-button remove-button" title="Remove from whitelisted list"><span class="fa fa-trash"></span></button>\n\t\t\t\t`,s.querySelector(".remove-button").addEventListener("click",()=>{this.ws.store.whitelist[`${e}s`].delete(i),this.ws.gui.renderQueue(),this.whitelist(e)}),t.appendChild(s)}0===s.length&&(t.innerHTML=`<div class="empty">No whitelisted ${e}s.</div>`)}}highlight(e){this.deselect(),document.querySelector(`#settings-highlight-${e}s-button`).classList.add("selected"),document.querySelector(`#settings-container > .settings > .settings-right > .highlight.${e}s`).classList.remove("hidden");{const t=document.querySelector(`#settings-highlight-${e}s-expiry`);t.value=this.ws.store.settings.expiry.highlight[`${e}s`],t.addEventListener("change",t=>this.ws.store.settings.expiry.highlight[`${e}s`]=t.target.value);const n=document.querySelector(`#settings-highlight-${e}s-input`),s=()=>{const t=n.value.trim();t&&(n.value="",this.ws.store.highlight[`${e}s`].set(t,[Date.now(),this.ws.util.expiryToDate(this.ws.store.settings.expiry.highlight[`${e}s`]).valueOf()]),this.ws.store.statistics.items_highlighted.total++,this.ws.store.statistics.items_highlighted[`${e}s`]++,this.ws.gui.renderQueue(),this.highlight(e))};if("tag"===e&&this.wikipediaTags){const e=this.wikipediaTags.map(e=>e.name).sort();for(const t of e){const e=document.createElement("option");e.value=t,e.textContent=t,n.appendChild(e)}n.setAttribute("list",n.id+"-datalist");const t=document.createElement("datalist");t.id=n.id+"-datalist",n.parentElement.appendChild(t);for(const n of e){const e=document.createElement("option");e.value=n,t.appendChild(e)}}document.querySelector(`#settings-highlight-${e}s-add-button`).addEventListener("click",s),n.addEventListener("keydown",e=>{"Enter"===e.key&&(s(),e.preventDefault())})}{const t=document.querySelector(`#settings-highlight-${e}s-list`);t.innerHTML="";const n=t=>{switch(e){case"user":return this.ws.page(`Special:Contributions/${t}`);case"page":return this.ws.page(t);case"tag":return this.ws.page(`Special:Tags/${t}`)}},s=[...this.ws.store.highlight[`${e}s`]].sort((e,t)=>t[1][1]-e[1][1]);for(const[i,a]of s){const s=document.createElement("div"),r=new Date(a[0]),o=a[1]===1/0?"Never":`${new Date(a[1]).toLocaleDateString()} ${new Date(a[1]).toLocaleTimeString()}`;s.innerHTML=`\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<a href="${n(i)}">${i}</a>\n\t\t\t\t\t\t<span>Added: ${r.toLocaleDateString()} ${r.toLocaleTimeString()}</span>\n\t\t\t\t\t\t<span class="${Date.now()>a[1]?"expired":""}">\n\t\t\t\t\t\t\t${Date.now()>a[1]?"Expired":"Expires"}: ${o}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class="add-action-button remove-button" title="Remove from highlighted list"><span class="fa fa-trash"></span></button>\n\t\t\t\t`,s.querySelector(".remove-button").addEventListener("click",()=>{this.ws.store.highlight[`${e}s`].delete(i),this.ws.gui.renderQueue(),this.highlight(e)}),t.appendChild(s)}0===s.length&&(t.innerHTML=`<div class="empty">No highlighted ${e}s.</div>`)}}statistics(){this.deselect(),document.querySelector("#settings-statistics-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .statistics").classList.remove("hidden");document.querySelector("#reset-statistics-button").addEventListener("click",async()=>{await this.ws.gui.dialog.confirm("Reset statistics","Are you sure you want to reset all statistics? This action cannot be undone.",void 0,!0)&&(this.ws.store.statistics={},this.ws.storage.load(this.ws.store),this.ws.time.load=performance.now(),this.statistics())});const e=this.ws.store.statistics;document.querySelector("#stats-total-reviewed").textContent=(e.edits_reviewed.total||0).toLocaleString();document.querySelector("#stats-thanks-percentage").textContent=(e.edits_reviewed.thanked/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-recent-changes-reviewed").textContent=(e.recent_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-recent-changes-percentage").textContent=(e.recent_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-reviewed").textContent=(e.pending_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-pending-changes-accepted").textContent=(e.pending_changes_reviewed.accepted||0).toLocaleString();document.querySelector("#stats-pending-changes-accepted-percentage").textContent=(e.pending_changes_reviewed.accepted/e.pending_changes_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-rejected").textContent=(e.pending_changes_reviewed.rejected||0).toLocaleString();document.querySelector("#stats-pending-changes-rejected-percentage").textContent=(e.pending_changes_reviewed.rejected/e.pending_changes_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-percentage").textContent=(e.pending_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-user-creations-reviewed").textContent=(e.users_reviewed.total||0).toLocaleString();document.querySelector("#stats-user-creations-percentage").textContent=(e.users_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-watchlist-changes-reviewed").textContent=(e.watchlist_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-watchlist-changes-percentage").textContent=(e.watchlist_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-abuselog-changes-reviewed").textContent=(e.abuselogs_reviewed.total||0).toLocaleString();document.querySelector("#stats-abuselog-changes-percentage").textContent=(e.abuselogs_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-reverts-made").textContent=(e.reverts_made.total||0).toLocaleString();document.querySelector("#stats-reverts-percentage").textContent=(e.reverts_made.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-goodfaith-reverts-percentage").textContent=(e.reverts_made.good_faith/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-recent-reverts-percentage").textContent=(e.reverts_made.from_recent_changes/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-pending-reverts-percentage").textContent=(e.reverts_made.from_pending_changes/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-watchlist-reverts-percentage").textContent=(e.reverts_made.from_watchlist/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-abuselog-reverts-percentage").textContent=(e.reverts_made.from_abuselogs/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-other-reverts-percentage").textContent=(e.reverts_made.from_loaded_edits/e.reverts_made.total*100||0).toFixed(2);{document.querySelector("#stats-users-welcomed").textContent=(e.users_welcomed.total||0).toLocaleString();const t=document.querySelector("#stats-users-welcomed-message");e.edits_reviewed.total===e.users_welcomed.total?t.textContent=`You welcome every user whose edit you review! (${e.users_welcomed.total.toLocaleString()})`:0===e.users_welcomed.total?t.innerHTML="For every Infinity edits you review, you still won’t welcome a new user.":t.textContent=`For every ${(e.edits_reviewed.total/e.users_welcomed.total||0).toFixed(3)} edits you review, you welcome a new user.`}document.querySelector("#stats-warnings").textContent=(e.warnings_issued.total||0).toLocaleString();document.querySelector("#stats-warning-1-percentage").textContent=(e.warnings_issued.level_1/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-2-percentage").textContent=(e.warnings_issued.level_2/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-3-percentage").textContent=(e.warnings_issued.level_3/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-4-percentage").textContent=(e.warnings_issued.level_4/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-4im-percentage").textContent=(e.warnings_issued.level_4im/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-reports").textContent=(e.reports_filed.total||0).toLocaleString();document.querySelector("#stats-AIV-reports-percentage").textContent=(e.reports_filed.AIV/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-UAA-reports-percentage").textContent=(e.reports_filed.UAA/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-global-block-reports-percentage").textContent=(e.reports_filed.global_block/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-global-lock-reports-percentage").textContent=(e.reports_filed.global_lock/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-RFPP-reports-percentage").textContent=(e.reports_filed.RFPP/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-pages-watched").textContent=(e.watchlist.watched||0).toLocaleString();document.querySelector("#stats-pages-unwatched").textContent=(e.watchlist.unwatched||0).toLocaleString();document.querySelector("#stats-items-whitelisted").textContent=(e.items_whitelisted.total||0).toLocaleString();document.querySelector("#stats-users-whitelisted").textContent=(e.items_whitelisted.users||0).toLocaleString();document.querySelector("#stats-users-whitelisted-percentage").textContent=(e.items_whitelisted.users/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-pages-whitelisted").textContent=(e.items_whitelisted.pages||0).toLocaleString();document.querySelector("#stats-pages-whitelisted-percentage").textContent=(e.items_whitelisted.pages/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-tags-whitelisted").textContent=(e.items_whitelisted.tags||0).toLocaleString();document.querySelector("#stats-tags-whitelisted-percentage").textContent=(e.items_whitelisted.tags/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-items-highlighted").textContent=(e.items_highlighted.total||0).toLocaleString();document.querySelector("#stats-users-highlighted").textContent=(e.items_highlighted.users||0).toLocaleString();document.querySelector("#stats-users-highlighted-percentage").textContent=(e.items_highlighted.users/e.items_highlighted.total*100||0).toFixed(2);document.querySelector("#stats-pages-highlighted").textContent=(e.items_highlighted.pages||0).toLocaleString();document.querySelector("#stats-pages-highlighted-percentage").textContent=(e.items_highlighted.pages/e.items_highlighted.total*100||0).toFixed(2);document.querySelector("#stats-tags-highlighted").textContent=(e.items_highlighted.tags||0).toLocaleString();document.querySelector("#stats-tags-highlighted-percentage").textContent=(e.items_highlighted.tags/e.items_highlighted.total*100||0).toFixed(2);{const t=e.session_time+(performance.now()-this.ws.time.load);document.querySelector("#stats-session-time").textContent=(e=>{const t=Math.floor(e/1e3),n=Math.floor(t/86400),s=Math.floor(t%86400/3600),i=Math.floor(t%3600/60);let a="";return n>0&&(a+=`${n}d `),s>0&&(a+=`${s}h `),i>0&&(a+=`${i}m `),a+=t%60+"s",a.trim()})(t);document.querySelector("#stats-reports-per-day").textContent=(e.reports_filed.total/(t/864e5||1)||0).toFixed(2);document.querySelector("#stats-reverts-per-hour").textContent=(e.reverts_made.total/(t/36e5||1)||0).toFixed(2);document.querySelector("#stats-reviews-per-minute").textContent=(e.edits_reviewed.total/(t/6e4||1)||0).toFixed(2)}}save(){this.deselect(),document.querySelector("#settings-save-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .save").classList.remove("hidden"),document.querySelector("#settings-save-status").classList.add("hidden")}changelog(){this.deselect(),document.querySelector("#settings-changelog-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .changelog").classList.remove("hidden");const e=document.querySelector("#settings-container > .settings > .settings-right > .changelog > div > .changelog-content");e.innerHTML="<em class='animate-loading-dots'>Loading changelog</em>",l.WikiShield.config.changelog.HTML.then(t=>e.innerHTML=t)}about(){this.deselect(),document.querySelector("#settings-about-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .about").classList.remove("hidden"),document.querySelector("#settings-about-version").textContent=l.WikiShield.config.version,document.querySelectorAll("#settings-container > .settings > .settings-right > .about > .randomize").forEach(e=>{for(let t=e.children.length;t>=0;t--)e.appendChild(e.children[Math.random()*t|0])})}}},7698(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BuildPalette=function(e,...t){const n=document.createElement("canvas");n.width=e,n.height=1;const s=n.getContext("2d"),i=s.createLinearGradient(0,0,n.width,0),a=1/(t.length-1);t.forEach((e,t)=>{i.addColorStop(a*t,e)}),s.fillStyle=i,s.fillRect(0,0,n.width,n.height);const r=s.getImageData(0,0,n.width,1).data;return Array.from({length:e},(e,t)=>{const n=4*t;return`rgb(${r[n]}, ${r[n+1]}, ${r[n+2]})`})}},3241(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.expiryRegex=t.Utility=void 0;var s=n(4551);function i(){i=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,s,i){var r=RegExp(e,s);return t.set(r,i||t.get(e)),a(r,n.prototype)}function s(e,n){var s=t.get(n);return Object.keys(s).reduce(function(t,n){var i=s[n];if("number"==typeof i)t[n]=e[i];else{for(var a=0;void 0===e[i[a]]&&a+1<i.length;)a++;t[n]=e[i[a]]}return t},Object.create(null))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&a(e,t)}(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);if(n){n.groups=s(n,this);var i=n.indices;i&&(i.groups=s(i,this))}return n},n.prototype[Symbol.replace]=function(n,i){if("string"==typeof i){var a=t.get(this);return e[Symbol.replace].call(this,n,i.replace(/\$<([^>]+)(>|$)/g,function(e,t,n){if(""===n)return e;var s=a[t];return Array.isArray(s)?"$"+s.join("$"):"number"==typeof s?"$"+s:""}))}if("function"==typeof i){var r=this;return e[Symbol.replace].call(this,n,function(){var e=arguments;return"object"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(s(e,r)),i.apply(this,e)})}return e[Symbol.replace].call(this,n,i)},i.apply(this,arguments)}function a(e,t){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},a(e,t)}const r=t.expiryRegex=i(/(infinity|^(([0-9]+)Y)?(([0-9]+)M)?(([0-9]+)W)?(([0-9]+)D)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?)$/,{years:3,months:5,weeks:7,days:9,hours:11,minutes:13,seconds:15});t.Utility=class{constructor(e){this.ws=e}escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}escape(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}utcString(e){if(e===1/0)return"indefinite";const t=this.padString;return`${e.getUTCFullYear()}-${t(e.getUTCMonth()+1,2)}-${t(e.getUTCDate(),2)}T${t(e.getUTCHours(),2)}:${t(e.getUTCMinutes(),2)}:${t(e.getUTCSeconds(),2)}`}padString(e,t){for(e=e.toString();e.length<t;)e=`0${e}`;return e}getMonth(e){return["January","February","March","April","May","June","July","August","September","October","November","December"][e]}monthSectionName(){return`${this.getMonth((new Date).getUTCMonth())} ${(new Date).getUTCFullYear()}`}escape(e){return(e||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}textify(e){const t=document.createElement("div");return t.innerHTML=e,t.textContent||t.innerText||""}pageLink(e,t=!1,n=!0){return t?`https://${this.ws.server}/w/index.php${e}`:`https://${this.ws.server}/wiki/${n?encodeURIComponent(e):e}`}truncate(e,t){return(0,s.truncate)(e,t)}formatBytes(e){if(0===e)return"0 B";const t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(2))+" "+["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB","RiB","QiB"][t]}getChangeColor(e){if(0===e)return"#888";if(e>0)return e>=1e3?"#00b894":e>=500?"#00d4a1":e>=100?"#26de81":"#55efc4";{const t=Math.abs(e);return t>=1e3?"#d63031":t>=500?"#e74c3c":t>=100?"#ff6b6b":"#ff8787"}}getChangeString(e){return e>0?"+"+e:0===e?"0":`–${Math.abs(e).toString()}`}formatNotificationTime(e,t=new Date){const n=Math.floor((t-e)/1e3);return n<=0?"Now":n<60?`${n}s ago`:n<3600?`${Math.floor(n/60)}m ago`:n<86400?`${Math.floor(n/3600)}h ago`:n<2592e3?`${Math.floor(n/86400)}d ago`:n<31536e3?`${Math.floor(n/2592e3)}mo ago`:`${Math.floor(n/31536e3)}y ago`}formatDuration(e,t=new Date){const n=Math.floor((t-e)/1e3);return n<=0?"0s":n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m`:n<86400?`${Math.floor(n/3600)}h`:n<2592e3?`${Math.floor(n/86400)}d`:n<31536e3?`${Math.floor(n/2592e3)}mo`:`${Math.floor(n/31536e3)}y`}match(e,t){return this.ws.store.settings.username_highlighting.fuzzy?function(e,t,n){const s=e.length,i=t.length;if(0===s)return!0;if(0===i)return s<=n;let a=new Array(i+1).fill(0),r=new Array(i+1).fill(0);for(let e=0;e<=i;e++)a[e]=0;for(let o=1;o<=s;o++){r[0]=o;let l=r[0];for(let d=1;d<=i;d++){const i=e[o-1]===t[d-1]?0:1,c=a[d]+1,u=r[d-1]+1,p=a[d-1]+i,g=Math.min(c,u,p);if(r[d]=g,g<l&&(l=g),o===s&&g<=n)return!0}if(l>n)return!1;[a,r]=[r,a]}return!1}(e,t,2):t.toLowerCase().includes(e.toLowerCase())}isIPv4Address(e){const t="(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|0?[0-9]{1,2})";return new RegExp(`^(${t}\\.){3}${t}$`).test(e)}isIPv6Address(e){return!!new RegExp("^(?::(?::|(?::[0-9A-Fa-f]{1,4}){1,7})|[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){0,6}::|[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){7})$").test(e)||new RegExp("^[0-9A-Fa-f]{1,4}(?:::?[0-9A-Fa-f]{1,4}){1,6}$").test(e)&&/::/.test(e)&&!/::.*::/.test(e)}isIPAddress(e){return this.isIPv4Address(e)||this.isIPv6Address(e)}isTempAccount(e){return/^~[0-9]{4,}(-[0-9A-Fa-f]{5})*(-[0-9A-Fa-f]{1,5})$/.test(e)}expiryToDate(e){if("infinity"===e)return 1/0;const t=new Date,n=r.exec(e);return n?new Date(t.getFullYear()+(parseInt(n.groups.years)||0),t.getMonth()+(parseInt(n.groups.months)||0),t.getDate()+7*(parseInt(n.groups.weeks)||0)+(parseInt(n.groups.days)||0),t.getHours()+(parseInt(n.groups.hours)||0),t.getMinutes()+(parseInt(n.groups.minutes)||0),t.getSeconds()+(parseInt(n.groups.seconds)||0)):t}getPageSections(e){const t=e.split("\n"),n=[];let s={title:"",heading:"",level:0,content:""};for(const e of t){const t=/^(=+)\s*(.*?)\s*\1\s*$/.exec(e);t?(""!==s.title&&n.push(s),s={title:t[2],heading:t[0],level:t[1].length,content:""}):(""!==s.content&&(s.content+="\n"),s.content+=e)}return""===s.content&&""===s.title||n.push(s),n}}},5564(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.sortDependencies=function(e){const t=new Map(e.map(e=>[e.id,e])),n=new Set,s=new Set,i=[],a=(e,r)=>{if(n.has(e))return;if(s.has(e)){const t=r.indexOf(e),n=r.slice(t).concat(e).join(" -> ");throw new Error(`Cyclic dependency detected: ${n}`)}const o=t.get(e);if(!o)throw new Error(`Unknown dependency: ${e}`);s.add(e),r.push(e);const l=o.dependencies||[];for(const e of l)a(e,r);r.pop(),n.add(e),s.delete(e),i.push(o)};for(const t of e)n.has(t.id)||a(t.id,[]);return i}},2069(e,t){var n;function s(e,t,n){i(e,t),t.set(e,n)}function i(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function a(e,t){return e.get(o(e,t))}function r(e,t,n){return e.set(o(e,t),n),n}function o(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),t.Text=void 0;class d{}l(d,"Lower",Symbol("lower case")),l(d,"Upper",Symbol("UPPER CASE")),l(d,"Title",Symbol("Title Case")),l(d,"Sentence",Symbol("Sentence case")),l(d,"Camel",Symbol("camelCase")),l(d,"Pascal",Symbol("PascalCase")),l(d,"Snake",Symbol("snake_Case")),l(d,"Split",Symbol("split,case"));var c=new WeakMap,u=new WeakMap,p=new WeakMap,g=new WeakSet;class h{static pluralize(e,t,n){return new h(e).plural(n).get(t)}constructor(e,t=d.Sentence){var n,a;i(n=this,a=g),a.add(n),s(this,c,!1),s(this,u,void 0),s(this,p,void 0);const l=m.call(h,e,t);r(c,this,l.inSentenceCase),r(u,this,l.words),r(p,this,o(g,this,v).call(this))}plural(){return r(p,this,o(g,this,v).apply(this,arguments)),this}case(e=d.Sentence){const t=t=>{switch(e){case d.Lower:return t.map(e=>e.toLowerCase()).join(" ");case d.Upper:return t.map(e=>e.toUpperCase()).join(" ");case d.Title:return t.map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ");case d.Sentence:if(a(c,this))return t.join(" ");let e=!0;return t.map(t=>{let n=e?t.charAt(0).toUpperCase()+t.slice(1).toLowerCase():t.toLowerCase();return e=/[.!?]$/.test(t),n}).join(" ");case d.Camel:return t.map((e,t)=>0===t?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("");case d.Pascal:return t.map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("");case d.Snake:return t.map(e=>e.toLowerCase()).join("_");case d.Split:return t;default:throw new TypeError("Invalid case type, must be a Case value")}},[n,s]=[t(a(u,this)),t(a(p,this))];return Object.freeze({get:(e=1)=>(Number.isNaN(Number(e))||1===e||1n===e||"1"===e?n:s).replace(/(?<!\\)%n/g,e)})}get(e=1){return this.case().get(e)}}function m(e,t){const n=(e=>{switch(t){case d.Lower:case d.Upper:case d.Title:case d.Sentence:return e.split(/\s+/);case d.Camel:case d.Pascal:return e.split(/(?=[A-Z])/);case d.Snake:return e.split(/_/g);case d.Split:throw new TypeError("Split case is only used for output, not input");default:throw new TypeError("Invalid case type, must be a Case value")}})(e.toString().trim());return t===d.Sentence?{inSentenceCase:!0,words:n.map(e=>e.trim()).filter(e=>e.length>0)}:{inSentenceCase:!1,words:n.map(e=>e.trim().toLowerCase()).filter(e=>e.length>0)}}function v(e){if(null==e||e){const e=[...a(u,this)],t=e.length-1;return e[t]=(e=>{let t;return t=e.replace(/(?<=sh?|ch|x|z|[^aeiou]o)$/i,"es"),t!==e?t:(t=e.replace(/(?<=[^aeiou])y$/i,"ies"),t!==e?t:(t=e.replace(/fe?$/i,"ves"),t!==e?t:`${e}s`))})(a(u,this)[t]),e}if(!1===e)return[...a(u,this)];if(e instanceof n)return e.case(d.Split).get();throw new TypeError("Invalid plural argument, must be boolean or Text instance")}t.Text=h,n=h,l(h,"Case",d)},8878(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.MediaWikiAPI=void 0;var s=n(1289),i=n(4551),a=n(2852),r=n(6873),o=n(505),l=n(8582);const d=console,c=new Set(l.__servers__.filter(e=>e.tag).map(e=>e.host)),u=new Set(l.__servers__.filter(e=>e.pending_changes).map(e=>e.host));class p{static get pendingChangesServers(){return Array.from(u)}static hasPendingChanges(e){return u.has(e)}static chunk(e,t=50){const n=[],s=e.length;for(let i=0;i<s;i+=t)n.push(e.slice(i,i+t));return n}static paramify(e){return Array.isArray(e)||(e=[e]),[...new Set(e)]}static join(e){return e.join("|").replace(/\|\|+/g,"|")}static getUsername(e,t){return e.fetch(`https://${t}/w/api.php`,{action:"query",meta:"userinfo",uiprop:"name",format:"json",formatversion:2},void 0,"POST",!0).then(e=>{var t;return(null==e||null===(t=e.query)||void 0===t||null===(t=t.userinfo)||void 0===t?void 0:t.name)||null})}constructor(e,t,n,s){var i,o;this.glob=e,this.oauth=t,this.server=n,this.username=s,this.tokens={},null!==(o=(i=p.cache)[n])&&void 0!==o||(i[n]={parse:new r.Trie({size:1e3}),pending:new a.Memory({size:2500,timeout:36e5}),abuse:new a.Memory({size:2500,timeout:9e5}),ores:new a.Memory({size:1e4,timeout:9e5}),diff:new a.Memory({size:500,timeout:3e5})})}get cache(){return p.cache[this.server]}build(e={},t=null){return{tags:c.has(null!=t?t:this.server)?"WikiShield script":"",assertuser:this.username,discussiontoolsautosubscribe:"no",...e}}user(e){return`[[Special:Contribs/${e}|${e}]] ([[User talk:${e}|talk]])`}revision(e){return`[[Special:Diff/${e}|${e}]]`}centralAuthUser(e){return`[[Special:CentralAuth/${e}|${e}]]`}summary(e,t){const n=" ([[:en:WP:WikiShield|WS]])",s=`${e}${t?`: ${t}`:""}`;return`${(0,i.truncate)(s,473)}${n}`}async post(e,t=!1,n=null){try{const s=await this.oauth.fetch(`https://${n||this.server}/w/api.php`,this.build({...e,format:"json",formatversion:2},n),void 0,"POST",t,n);if(s.error){if("alreadyrolled"===s.error.code||"editconflict"===s.error.code)return"editconflict";if("missingcontent"===s.error.code&&"compare"===e.action)return{compare:{body:""}};throw new Error(`API Error: ${s.error.code} - ${s.error.info}`)}return s}catch(t){throw d.error("Error in API POST request:",t,JSON.stringify(e)),t}}async continuous(e,t,n,s){try{let i=null;const a=[];do{const r=await this.post({...e,...i||{}},n,s);a.push(r),i=r.continue||null,"function"==typeof t&&!0===await t(r,a)&&(i=!1)}while(i);return{stopped:null!==i,responses:a}}catch(t){return d.error("Error in API continuous request:",t,JSON.stringify(e)),{stopped:!0,responses:[]}}}async getToken(e="csrf",t,n){const s=`${null!=n?n:this.server}:${e}`;if(void 0!==this.tokens[s])return this.tokens[s];try{return this.tokens[s]=this.post({action:"query",meta:"tokens",type:e},t,n).then(t=>{var n;return(null==t||null===(n=t.query)||void 0===n||null===(n=n.tokens)||void 0===n?void 0:n[`${e}token`])||null})}catch(e){throw d.error("Error fetching token:",e),e}}async postWithToken(e,t="csrf",n,s){try{return await this.post({...e,token:await this.getToken(t,n,s)},n,s)}catch(i){if("badtoken"===i&&!attempted){delete this.tokens[`${null!=s?s:this.server}:${t}`];try{return await this.postWithToken(e,t,n,s,!0)}catch(e){throw d.error("Post with token error after retry:",e),e}}throw d.error("Post with token error:",i),i}}async account(e,t){try{var n;return(null===(n=await this.post({action:"query",meta:"userinfo",uiprop:"*"},e,t))||void 0===n||null===(n=n.query)||void 0===n?void 0:n.userinfo)||{}}catch(e){var s;return null!==(s=void d.error("Error fetching account info:",e))&&void 0!==s?s:{}}}async getGlobalUserInfo(e,t,n){try{var s;return(null===(s=(await this.post({action:"query",meta:"globaluserinfo",guiuser:e,guiprop:"groups|rights"},t,n)).query)||void 0===s?void 0:s.globaluserinfo)||{}}catch(e){var i;return null!==(i=void d.error("Error fetching global user info:",e))&&void 0!==i?i:{}}}async markWatchlistSeen(e,t,n,s){try{await this.postWithToken({action:"setnotificationtimestamp",titles:e,newerthanrevid:t},"csrf",n,s)}catch(e){var i;return null!==(i=void d.error("Error marking watchlist item as seen:",e))&&void 0!==i?i:{valid:!1,reason:e.message}}}async append(e,t,n,s,i=null,a,r){const o=async(e,t,n,s,i=null,a,r)=>{try{if(null!==i){return{needsCheck:!0,text:(await this.getPagesContent([e],a,r))[e]||""}}return"editconflict"===await this.postWithToken({action:"edit",title:e,...null===(null!=t?t:null)?{}:{section:t},appendtext:`\n${n}`,summary:s},"csrf",a,r)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var o;return null!==(o=void d.error("Error appending to section:",e))&&void 0!==o?o:{valid:!1,reason:e.message}}};if("function"==typeof i){const l=await o(e,t,n,s,!0,a,r);if(l.needsCheck){const d=await i(l.text);return d.valid?await o(e,t,n,s,null,a,r):{valid:!1,reason:d.reason||"Append check failed."}}return l}return await o(e,t,n,s,null,a,r)}async editSection(e,t,n,s,i,a=null,r,o){const l=async(e,t,n,s,i,a=null,r,o)=>{try{if(null!==a){return{needsCheck:!0,text:(await this.getPagesContent([e],r,o))[e]||""}}return"editconflict"===await this.postWithToken({action:"edit",title:e,section:t,sectiontitle:n,text:s,summary:i},"csrf",r,o)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var l;return null!==(l=void d.error("Error editing section:",e))&&void 0!==l?l:{valid:!1,reason:e.message}}};if("function"==typeof a){const d=await l(e,t,n,s,i,!0,r,o);if(d.needsCheck){const c=await a(d.text);return c.valid?await l(e,t,n,s,i,null,r,o):{valid:!1,reason:c.reason||"Edit section check failed."}}return d}return await l(e,t,n,s,i,null,r,o)}async acceptPendingEdit(e,t,n,s){try{return await this.postWithToken({action:"review",revid:e,comment:t},"csrf",n,s),{valid:!0}}catch(e){return{valid:!1,reason:"Edit could not be accepted."}}}async rejectPendingEdit(e,t,n,s,i,a){try{const r=(await this.getRevisionsContent([t],i,a))[t]||"";return"editconflict"===await this.postWithToken({action:"edit",title:n,text:r,summary:s,baserevid:e},"csrf",i,a)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){return{valid:!1,reason:"Edit could not be rejected."}}}async rollbackEdit(e,t,n,s,i){try{var a;const r=await this.postWithToken({action:"rollback",title:e,user:t,summary:n},"rollback",s,i);if("editconflict"===r)return{valid:!1,reason:"Edit conflict."};if("onlyauthor"===r)return{valid:!1,reason:"Cannot rollback edits as the no other user has edited the page."};if(null===(a=r.rollback)||void 0===a||!a.revid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,r.rollback.revid,s,i)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var r;return null!==(r=void d.error("Error rolling back edit:",e))&&void 0!==r?r:{valid:!1,reason:e.message}}}async undoEdit(e,t,n,s,i){try{var a;const r=await this.postWithToken({action:"edit",title:e,undo:t,summary:n},"csrf",s,i);if("editconflict"===r)return{valid:!1,reason:"Edit conflict."};if(null===(a=r.edit)||void 0===a||!a.newrevid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,r.edit.newrevid,s,i)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var r;return null!==(r=void d.error("Error undoing edit:",e))&&void 0!==r?r:{valid:!1,reason:e.message}}}async restoreEdit(e,t,n,i,a){try{var r;const o=(0,s.convertToUTCString)(new Date),l=(await this.getRevisionsContent([t],i,a))[t]||"",d=await this.postWithToken({action:"edit",title:e,text:l,summary:n,starttimestamp:o},"csrf",i,a);if("editconflict"===d)return{valid:!1,reason:"Edit conflict."};if(null===(r=d.edit)||void 0===r||!r.newrevid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,d.edit.newrevid,i,a)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var o;return null!==(o=void d.error("Error restoring edit:",e))&&void 0!==o?o:{valid:!1,reason:e.message}}}async thankRevision(e,t,n){try{return await this.postWithToken({action:"thank",rev:e},"csrf",t,n),{valid:!0}}catch(e){var s;return null!==(s=void d.error("Error thanking revision:",e))&&void 0!==s?s:{valid:!1,reason:e.message}}}async watchPage(e,t,n,s){try{return await this.postWithToken({action:"watch",title:e,expiry:t},"watch",n,s),{valid:!0}}catch(e){var i;return null!==(i=void d.error("Error watching page:",e))&&void 0!==i?i:{valid:!1,reason:e.message}}}async unwatchPage(e,t,n){try{return await this.postWithToken({action:"watch",title:e,unwatch:!0},"watch",t,n),{valid:!0}}catch(e){var s;return null!==(s=void d.error("Error unwatching page:",e))&&void 0!==s?s:{valid:!1,reason:e.message}}}async parse(e,t,n=!1,s=!1,i,a){null!=t||(t=void 0);const r=[t,e,n,s].filter(e=>void 0!==e);if(this.cache.parse.has(...r))return this.cache.parse.get(...r);try{var o;const l=null===(o=await this.post({action:"parse",prop:"text",preview:n,...s?{summary:e}:{text:e},title:t,contentmodel:"wikitext",disablelimitreport:!0,disableeditsection:!0,disabletoc:!0},i,a))||void 0===o||null===(o=o.parse)||void 0===o?void 0:o[s?"parsedsummary":"text"];return this.cache.parse.set(...r,l),l}catch(e){var l;return null!==(l=void d.error("Error parsing wikitext:",e))&&void 0!==l?l:""}}async getTags(e,t){try{return(await this.continuous({action:"query",list:"tags",tglimit:"max"},void 0,e,t)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.tags)||[]})}catch(e){var n;return null!==(n=void d.error("Error fetching revisions between IDs:",e))&&void 0!==n?n:[]}}async getPagesContent(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"content",rvslots:"*",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=(null===(i=t.revisions)||void 0===i||null===(i=i[0])||void 0===i||null===(i=i.slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content)||""}return r}catch(e){var a;return null!==(a=void d.error("Error fetching pages content:",e))&&void 0!==a?a:{}}}async getRevisionsContent(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|content",rvslots:"*",revids:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s;for(const e of t.revisions||[]){var i;r[e.revid]=(null===(i=e.slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content)||""}}return r}catch(e){var a;return null!==(a=void d.error("Error fetching revisions content:",e))&&void 0!==a?a:{}}}async getLatestIds(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=(null===(i=t.revisions)||void 0===i||null===(i=i[0])||void 0===i?void 0:i.revid)||null}return r}catch(e){var a;return null!==(a=void d.error("Error fetching latest IDs:",e))&&void 0!==a?a:{}}}async getRevisionsBetween(e,t,n,s,i){try{return(await this.continuous({action:"query",prop:"revisions",titles:e,rvstartid:n,rvendid:t,rvprop:"title|ids|flags|user|timestamp|comment|parsedcomment|size|tags",rvlimit:"max"},void 0,s,i)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions)||[]})}catch(e){var a;return null!==(a=void d.error("Error fetching revisions between IDs:",e))&&void 0!==a?a:[]}}async getEditCounts(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",list:"users",usprop:"editcount",ususers:p.join(e)},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.users)||[]){var s;a[t.name]=t.editcount}return a}catch(e){var i;return null!==(i=void d.error("Error fetching edit counts:",e))&&void 0!==i?i:{}}}async areUsersBlocked(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",list:"blocks",bkusers:p.join(e),bkprop:"id|user|by|reason|expiry|flags"},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.blocks)||[]){var s;a[t.user]=t}return a}catch(e){var i;return null!==(i=void d.error("Error fetching blocked users:",e))&&void 0!==i?i:{}}}async isUserGloballyLocked(e,t,n){try{var s;return!0===(null===(s=(await this.post({action:"query",meta:"globaluserinfo",guiuser:e},t,n)).query)||void 0===s||null===(s=s.globaluserinfo)||void 0===s?void 0:s.locked)}catch(e){var i;return null!==(i=void d.error("Error checking if user is globally locked:",e))&&void 0!==i&&i}}async getContributions(e,t=10,n,s){try{var i;return(null===(i=(await this.post({action:"query",list:"usercontribs",ucuser:e,uclimit:t,ucprop:"ids|title|timestamp|comment|parsedcomment|flags|tags|sizediff|flags"},n,s)).query)||void 0===i?void 0:i.usercontribs)||[]}catch(e){var a;return null!==(a=void d.error("Error fetching contributions:",e))&&void 0!==a?a:[]}}async getBlocks(e,t,n){try{return(await this.continuous({action:"query",list:"logevents",letype:"block",letitle:`User:${e}`,leaction:"block/block",lelimit:"max",leprop:"id|timestamp|details|user|comment|parsedcomment"},void 0,t,n)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.logevents)||[]})}catch(e){var s;return null!==(s=void d.error("Error fetching blocks:",e))&&void 0!==s?s:[]}}async pagesExist(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"content",rvslots:"*",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=t.missing||null===(i=t.revisions)||void 0===i||null===(i=i[0].slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content}return r}catch(e){var a;return null!==(a=void d.error("Error checking page existence:",e))&&void 0!==a?a:[]}}async getPagesDetails(e,t,n){e=p.paramify(e);try{const o=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.continuous({action:"query",prop:"info|categories|templates",titles:p.join(e),inprop:"protection|watched",cllimit:"max",tllimit:"max",tlnamespace:"10"},void 0,t,n))),l={};for(const e of o)if("fulfilled"===e.status)for(const t of e.value.responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.pages)||[]})){var s,i,a,r;null!==(i=l[s=t.title])&&void 0!==i||(l[s]={protection:null,watched:!1,categories:[],metadata:[]});let e=(null===(a=l[t.title])||void 0===a||null===(a=a.protection)||void 0===a?void 0:a.level)||null;for(const n of t.protection||[])"edit"===n.type&&("sysop"===n.level||"sysop"===e?e="sysop":"autoconfirmed"===n.level||"autoconfirmed"===e?e="autoconfirmed":"extendedconfirmed"!==n.level&&"extendedconfirmed"!==e||(e="extendedconfirmed"));const n=[];for(const e of t.templates||[]){const t=e.title.replace(/^Template:/i,"");t.match(/^use\s/i)&&n.push(t)}l[t.title]={protection:null===e?{protected:!1}:{protected:!0,level:e},watched:!0===t.watched||l[t.title].watched,categories:l[t.title].categories.concat((null===(r=t.categories)||void 0===r?void 0:r.map(e=>e.title))||[]),metadata:l[t.title].metadata.concat(n)}}return l}catch(e){var o;return null!==(o=void d.error("Error fetching page details:",e))&&void 0!==o?o:{}}}async getHistory(e,t=10,n,s){try{var i;const a=null===(i=(await this.post({action:"query",prop:"revisions",titles:e,rvlimit:t+1,rvprop:"ids|user|timestamp|comment|parsedcomment|flags|tags|size|flags"},n,s)).query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];if(null==a||!a.revisions)return[];const r=a.revisions.length,o=Math.min(t,r||0);for(let e=0;e<o;e++){const t=a.revisions[e];t.ns=a.ns,t.pageid=a.pageid,t.title=a.title,t.sizediff=e+1<r?t.size-a.revisions[e+1].size:t.size}return a.revisions.slice(0,o)}catch(e){var a;return null!==(a=void d.error("Error fetching page history:",e))&&void 0!==a?a:[]}}async countPageReverts(e,t,n,i){const a=e=>"mw-undo"===e||"mw-rollback"===e||"mw-manual-revert"===e;try{const o=await this.continuous({action:"query",prop:"revisions",titles:e,rvdir:"newer",rvstart:(0,s.convertToUTCString)(new Date(Date.now()-864e5)),rvprop:"tags",rvuser:t,rvlimit:"max"},void 0,n,i);let l=0;for(const e of o.responses){var r;l+=(null===(r=e.query)||void 0===r||null===(r=r.pages)||void 0===r||null===(r=r[0])||void 0===r||null===(r=r.revisions)||void 0===r?void 0:r.filter(e=>e.tags.some(a)).length)||0}return l}catch(e){var o;return null!==(o=void d.error("Error counting page reverts:",e))&&void 0!==o?o:0}}async getORES(e,t,n,s){e=p.paramify(e);try{const a={};e=e.filter(e=>{var t;const n=this.cache.ores.get(e);return!n||null!==(t=void(a[e]=n))&&void 0!==t&&t});const r=p.chunk(e,50),l=await Promise.allSettled(r.map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|oresscores",rvslots:"*",revids:p.join(e)},n,s)));for(const e of l)if("fulfilled"===e.status)for(const t of(null===(i=e.value.query)||void 0===i?void 0:i.pages)||[]){var i;for(const e of t.revisions||[])a[e.revid]=e.oresscores||{}}return o.ORES.extract(a,t)}catch(e){var a;return null!==(a=void d.error("Error fetching ORES scores:",e))&&void 0!==a?a:{}}}async extractORES(e,t=.5){return o.ORES.extract(e,t)}async getDiff(e,t,n="table",s,i){null!=e||(e=!1);const a=`${n}@${e}-${t}`;if(this.cache.diff.has(a))return this.cache.diff.get(a);try{var r;const o={action:"compare",prop:"diff",difftype:n,torev:t};0==e?(o.fromslots="main",o["fromtext-main"]=""):o.fromrev=e;const l=(null===(r=(await this.post(o,s,i)).compare)||void 0===r?void 0:r.body)||"";return this.cache.diff.set(a,l),l}catch(e){var o;return null!==(o=void d.error("Error fetching diff:",e))&&void 0!==o?o:""}}async getWikitextDiff(e,t,n="table",s,i){null!=e||(e=!1);try{var a;return(null===(a=(await this.post({action:"compare",prop:"diff",difftype:n,fromslots:"main","fromtext-main":!1===e?"":e,toslots:"main","totext-main":t},s,i)).compare)||void 0===a?void 0:a.body)||""}catch(e){var r;return null!==(r=void d.error("Error fetching wikitext diff:",e))&&void 0!==r?r:""}}async getSizeDiff(e,t,n,s){try{var i;const a=await(null===(i=this.post({action:"query",prop:"revisions",rvprop:"size",revids:`${e}|${t}`},n,s).query)||void 0===i||null===(i=i.pages)||void 0===i||null===(i=i[0])||void 0===i?void 0:i.revisions)||[];return 0===a.length?0:1===a.length?a[0].size:a[1].size-a[0].size}catch(e){var a;return null!==(a=void d.error("Error fetching size diff:",e))&&void 0!==a?a:0}}async getRevision(e,t,n,s){try{var i,a,r;const o=null===(i=(await this.post({action:"query",prop:"revisions",titles:e,rvprop:"ids|user|comment|parsedcomment|timestamp|size|tags|flags",rvslots:"*",rvstartid:t,rvlimit:2},n,s)).query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];if(null==o||null===(a=o.revisions)||void 0===a||!a.length)return{};const l=o.revisions[0];return{revid:l.revid,parentid:l.parentid,user:l.user,parsedcomment:l.parsedcomment,comment:l.comment,timestamp:l.timestamp,size:l.size,oldlen:(null===(r=o.revisions[1])||void 0===r?void 0:r.size)||0,minor:l.minor||!1,tags:l.tags||[]}}catch(e){var o;return null!==(o=void d.error("Error fetching revision:",e))&&void 0!==o?o:{}}}async getRevisions(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|user|comment|parsedcomment|timestamp|size|tags|flags|oresscores",rvslots:"*",revids:p.join(e)},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s;for(const e of t.revisions||[])a[e.revid]=e}return a}catch(e){var i;return null!==(i=void d.error("Error fetching revisions:",e))&&void 0!==i?i:{}}}async getConsecutiveEdits(e,t,n,s,i){try{var a,r;const o=await this.continuous({action:"query",prop:"revisions",titles:e,rvprop:"ids|timestamp|user|size|parsedcomment",rvlimit:"max",rvstartid:t},e=>{var t;return null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions.some(e=>e.user!==n)},s,i),l=o.responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions)||[]});let d,c;const u=l[0];if((null==u?void 0:u.user)!==n)return{count:0,sizediff:0,timestamp:{new:null,old:null},diff:null,edits:[]};const p={count:0,sizediff:0,timestamp:{new:null,old:null},diff:null,edits:[]},g=l.length;for(let e=0;e<g;e++){const t=l[e];if(c=t,t.user!==n)break;p.edits.push(t),d=t,p.count++,p.sizediff+=e+1<g?t.size-l[e+1].size||0:t.size||0}return p.timestamp.new=(null==u?void 0:u.timestamp)||null,p.timestamp.old=(null===(a=d)||void 0===a?void 0:a.timestamp)||null,o.stopped?p.diff=await this.getDiff((null===(r=c)||void 0===r?void 0:r.revid)||null,u.revid,"table",s,i):p.diff=await this.getDiff(null,u.revid,"table",s,i),p}catch(e){return d.error("Get consecutive edits error:",e),{count:0,sizediff:0,timestamp:{new:null,old:null},diff:null}}}async parseUsers(e,t,n,s){e=p.paramify(e);const i=Array.from({length:e.length},()=>({user:{}}));try{const a=[];return a.push(this.getEditCounts(e,n,s).then(t=>{e.forEach((e,n)=>i[n].user.edits=t[e]||0)}),this.areUsersBlocked(e,n,s).then(t=>{e.forEach((e,n)=>i[n].user.blocked=t[e]||null)}),this.pagesExist(e.map(e=>`User talk:${e}`),n,s).then(t=>{e.forEach((e,n)=>i[n].user.talk=t[`User talk:${e}`])})),t||a.push((async()=>{await Promise.all(e.map(async(e,t)=>{[i[t].user.contributions,i[t].user.blocks]=await Promise.all([this.getContributions(e,void 0,n,s),this.getBlocks(e,n,s)])}))})()),await Promise.all(a),i}catch(e){var a;return null!==(a=void d.error("Parse user error:",e))&&void 0!==a?a:i}}async parseEdits(e,t,n,s,i){e=p.paramify(e);const a=p.paramify(e.map(e=>e.item.user)),r=p.paramify(e.map(e=>e.item.revid)),o=p.paramify(e.map(e=>e.item.title)),l=e.map(({item:e,prior:t})=>({item:e,prior:t,data:{user:{},page:{},edit:{}}}));try{const d=[];return d.push(this.parseUsers(a,t,s,i).then(t=>{e.forEach((e,n)=>{const s=a.indexOf(e.item.user);l[n].data.user=t[s].user})}),this.getPagesDetails(o,s,i).then(t=>{e.forEach((e,n)=>{var s,i,a,r;l[n].data.page.protection=(null===(s=t[e.item.title])||void 0===s?void 0:s.protection)||{protected:!1},l[n].data.page.watched=(null===(i=t[e.item.title])||void 0===i?void 0:i.watched)||!1,l[n].data.page.categories=(null===(a=t[e.item.title])||void 0===a?void 0:a.categories)||[],l[n].data.page.metadata=(null===(r=t[e.item.title])||void 0===r?void 0:r.metadata)||[]})}),this.getORES(r,n,s,i).then(t=>{e.forEach((e,n)=>{l[n].data.edit.ores=t[e.item.revid]||0})})),t||d.push((async()=>{await Promise.all(e.map(async(e,t)=>{[l[t].data.page.consecutive,l[t].data.page.reverts,l[t].data.page.history,l[t].data.edit.diff]=await Promise.all([this.getConsecutiveEdits(e.item.title,e.item.revid,e.item.user,s,i),this.countPageReverts(e.item.title,this.username,s,i),this.getHistory(e.item.title,void 0,s,i),this.getDiff(e.prior||null,e.item.revid,"table",s,i)])}))})()),await Promise.all(d),l}catch(e){var c;return null!==(c=void d.error("Parse edit error:",e))&&void 0!==c?c:l}}async parseAbuselogs(e,t,n,s){e=p.paramify(e);const i=p.paramify(e.map(e=>e.user)),a=p.paramify(e.map(e=>e.title)),r=e.map(e=>({item:e,data:{user:{},page:{},edit:{}}}));try{const o=[];return o.push((async()=>{await Promise.all(e.map(async(e,t)=>{[r[t].data.parsedcomment]=await Promise.all([this.parse(e.comment,void 0,!1,!0,n,s)])}))})(),this.parseUsers(i,t,n,s).then(t=>{e.forEach((e,n)=>{const s=i.indexOf(e.user);r[n].data.user=t[s].user})}),this.getPagesDetails(a,n,s).then(t=>{e.forEach((e,n)=>{var s,i,a,o;r[n].data.page.protection=(null===(s=t[e.title])||void 0===s?void 0:s.protection)||{protected:!1},r[n].data.page.watched=(null===(i=t[e.title])||void 0===i?void 0:i.watched)||!1,r[n].data.page.categories=(null===(a=t[e.title])||void 0===a?void 0:a.categories)||[],r[n].data.page.metadata=(null===(o=t[e.title])||void 0===o?void 0:o.metadata)||[]})})),t||o.push((async()=>{await Promise.all(e.map(async(e,t)=>{[r[t].data.page.reverts,r[t].data.page.history,r[t].data.edit.diff]=await Promise.all([this.countPageReverts(e.title,this.username,n,s),this.getHistory(e.title,void 0,n,s),e.diff?this.getWikitextDiff(e.diff.old,e.diff.new,"table",n,s):Promise.resolve(null)])}))})()),await Promise.all(o),r}catch(e){var o;return null!==(o=void d.error("Parse abuselog error:",e))&&void 0!==o?o:r}}async getAbuseLogRevid(e,t,n){try{var s,i;return(null===(i=((null===(s=(await this.post({action:"query",list:"abuselog",afllogids:e,aflprop:"ids|revid"},t,n)).query)||void 0===s?void 0:s.abuselog)||[]).find(t=>t.id===e))||void 0===i?void 0:i.revid)||null}catch(e){var a;return null!==(a=void d.error("Error fetching abuse log revids:",e))&&void 0!==a?a:{}}}async feeds(e=null,t=null,n=null,s=null,i=null){[e,t,n,s,i]=[e,t,n,s,i].map(e=>"object"==typeof e?e:{});try{const a={action:"query",list:[]};null!==e&&(a.list.push("recentchanges"),a.rctype="edit",a.rcprop="title|ids|sizes|flags|user|timestamp|comment|parsedcomment|tags|oresscores",a.rcshow="!bot",a.rcnamespace=e.ns||"*",e.since&&(a.rcstart=e.since),a.rcdir=e.since?"newer":"older",a.rclimit="max"),null!==t&&u.has(this.server)&&(a.list.push("oldreviewedpages"),a.ornamespace=t.ns||"*",a.orlimit="max"),null!==n&&(a.list.push("logevents"),a.letype="newusers",a.wlprop="ids|title|type|user|timestamp|comment|details|parsedcomment",n.since&&(a.lestart=n.since),a.ledir=n.since?"newer":"older",a.lelimit="max"),null!==s&&(a.list.push("watchlist"),a.wltype="edit",a.wlprop="title|ids|sizes|flags|user|timestamp|comment|tags|oresscores|parsedcomment",a.wlexcludeuser=this.username,a.wlnamespace=s.ns||"*",s.since&&(a.wlstart=s.since),a.wldir=s.since?"newer":"older",a.wllimit="max"),null!==i&&(a.list.push("abuselog"),a.aflnamespace=i.ns||"*",i.since&&(a.aflstart=i.since),a.afldir=i.since?"newer":"older",a.aflprop="ids|user|title|action|result|timestamp|hidden|revid|filter|details",a.afllimit="max"),a.list=p.join(a.list);const r={recent:[],pending:[],users:[],watchlist:[],abuselog:[]};if((await this.continuous(a)).responses.forEach(e=>{const t=e.query||{};t.recentchanges&&(r.recent=r.recent.concat(t.recentchanges)),t.oldreviewedpages&&(r.pending=r.pending.concat(t.oldreviewedpages)),t.logevents&&(r.users=r.users.concat(t.logevents.filter(e=>!e.temp))),t.watchlist&&(r.watchlist=r.watchlist.concat(t.watchlist)),t.abuselog&&(r.abuselog=r.abuselog.concat(t.abuselog))}),r.pending=r.pending.slice(0,10),r.pending.length>0){const e=new Map,n={};if(await Promise.allSettled(r.pending.map(async t=>{var s,i,a;this.cache.pending.has(t.revid)||this.cache.pending.set(t.revid,await this.post({action:"query",prop:"revisions",titles:t.title,rvstartid:t.revid,rvlimit:1,rvprop:"ids|flags|user|timestamp|comment|parsedcomment|size|tags"}));const r=this.cache.pending.get(t.revid);e.has(t.title)||e.set(t.title,this.post({action:"query",list:"logevents",letype:"stable",leprop:"ids|title|type|user|timestamp|comment|details|parsedcomment",letitle:t.title,lelimit:1})),t.stability=(null===(s=await e.get(t.title))||void 0===s||null===(s=s.query)||void 0===s||null===(s=s.logevents)||void 0===s?void 0:s[0])||{};const o=null===(i=r.query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];n[t.title]={title:t.title,sizediff:t.diff_size,...null===(a=o.revisions)||void 0===a?void 0:a[0],pending:t}})),r.pending=Object.values(n),!0===t.full){const e={};await Promise.allSettled(r.pending.map(async t=>{const n=await this.getRevisionsBetween(t.title,t.pending.stable_revid,t.revid);if(n.length<2)return;const s=n.pop();e[t.title]={count:n.length,users:n.reduce((e,t)=>(t.user in e?e[t.user]++:e[t.user]=1,e),{}),edits:n,revid:t.revid,prior:s.revid,sizediff:t.size-s.size,timestamp:{new:t.timestamp,old:n[n.length-1].timestamp},pending:t.pending}})),r.pending=e}}if(r.abuselog.length>0){const e={};r.abuselog.forEach(t=>{if("edit"!==t.action)return;const n=`${t.user}|${t.title}|${t.timestamp}`;n in e?e[n].push(t):e[n]=[t]});const t=[];await Promise.allSettled(Object.entries(e).map(async([,e])=>{var n,s,i,a,r;const o=e[e.length-1],l=new Set(e.flatMap(e=>e.result.split(","))),d=e.find(e=>""!==e.revid&&void 0!==e.revid),c=e.find(e=>Object.keys(e.details).length);t.push({id:o.id,revision:void 0!==d,private:!c,result:l,action:o.action,revid:null!==(n=null==d?void 0:d.revid)&&void 0!==n?n:null,diff:c.details?{new:c.details.new_wikitext,old:c.details.old_wikitext,size:c.details.edit_delta}:null,timestamp:o.timestamp,comment:null!==(s=null==c||null===(i=c.details)||void 0===i?void 0:i.summary)&&void 0!==s?s:null,user:o.user,editcount:null!==(a=null==c||null===(r=c.details)||void 0===r?void 0:r.user_editcount)&&void 0!==a?a:null,ns:o.ns,title:o.title,entries:e})})),r.abuselog=t}return r}catch(e){return d.error("Feeds error:",e),{recent:[],pending:t.full?{}:[],users:[],watchlist:[],abuselog:[]}}}}var g,h,m;t.MediaWikiAPI=p,g=p,m={},(h=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(h="cache"))in g?Object.defineProperty(g,h,{value:m,enumerable:!0,configurable:!0,writable:!0}):g[h]=m},2486(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.build=async function(){document.head.querySelectorAll("link[rel=icon]").forEach(e=>e.remove()),document.head.querySelectorAll("link[rel=stylesheet]").forEach(e=>e.remove()),document.head.querySelectorAll("style").forEach(e=>e.remove());const e=(new DOMParser).parseFromString(s.default,"text/html");document.title=e.title,e.head.querySelectorAll("link[rel=stylesheet]").forEach(e=>{document.head.appendChild(Object.assign(document.createElement("link"),{rel:"stylesheet",href:e.href}))}),e.head.querySelectorAll("link[rel=icon]").forEach(e=>{document.head.appendChild(Object.assign(document.createElement("link"),{rel:"icon",href:e.href}))});[i.default,a.default].filter(Boolean).forEach(e=>{const t=document.createElement("style");t.textContent=e,document.head.appendChild(t)});document.body.innerHTML=e.body.innerHTML,await new Promise(requestAnimationFrame),document.querySelectorAll("[data-electron]").forEach(e=>{"false"===e.dataset.electron&&window.isElectron?e.style.display="none":"true"!==e.dataset.electron||window.isElectron||(e.style.display="none")})};var s=r(n(5540)),i=r(n(4279)),a=r(n(2459));function r(e){return e&&e.__esModule?e:{default:e}}},4112(e,t){function n(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function s(e,t){return e.get(a(e,t))}function i(e,t,n){return e.set(a(e,t),n),n}function a(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.MediaWikiOAuth2=void 0;var r=new WeakMap,o=new WeakMap;class l{constructor(e){n(this,r,void 0),n(this,o,0),i(r,this,Date.now()),this.delay=e,this.last=0}get count(){return s(o,this)}per(e=1){return Math.floor(s(o,this)/((Date.now()-s(r,this))/e))||0}call(e,t=!1){var n;i(o,this,(n=s(o,this),n++,n));const a=Date.now(),r=Math.max(0,this.last+this.delay-a);return this.last=a+r,t||0===r?e():new Promise(t=>setTimeout(async()=>t(await e()),r))}}t.MediaWikiOAuth2=class{constructor(e){this.userAgent=e,this.throttle=new l(0),this.api=new mw.Api}getOrigin(e){const t=`${location.protocol}//${location.host}`;try{const n=new URL(e);if(`${n.protocol}//${n.host}`===t)return}catch(e){}return t}async fetch(e,t={},n=null,s="POST",i){return await this.throttle.call(async()=>{const n=this.getOrigin(e);return n&&(e+=(e.includes("?")?"&":"?")+`origin=${encodeURIComponent(n)}`),await this.api.ajax({...t,origin:n},{url:e,method:s,...n?{xhrFields:{withCredentials:!0}}:{}}).catch(e=>{throw console.error(`[WikiShield] Failed to parse "OAuth2" response (rpm: ${this.throttle.per(6e4)}):`,e),e})},i)}}},505(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ORES=void 0;t.ORES=class{static extract(e,t=.5){const n=[{key:"goodfaith",field:"false",bias:t},{key:"damaging",field:"true",bias:1-t}],s={};for(const[t,r]of Object.entries(e)){const e=[];for(const t of n){var i,a;const n=r[t.key];if(!n)continue;let s=null!==(i=null===(a=n.probability)||void 0===a?void 0:a[t.field])&&void 0!==i?i:n[t.field];void 0===s&&void 0!==n.prediction&&(s=+n.prediction),void 0===s||isNaN(s)||e.push(s*(t.bias||0))}s[t]=0===e.length?NaN:e.reduce((e,t)=>e+t,0)/e.length}return s}}},8582(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.__servers__=void 0;t.__servers__=[{name:"English",host:"en.wikipedia.org",language_code:"en",tag:!0,pending_changes:!0},{name:"seperator"},{name:"Test",host:"test2.wikipedia.org",language_code:"en",tag:!1,pending_changes:!0}]},2535(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.API=void 0;var s=n(4551),i=n(8878),a=n(4112);function r(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function o(e,t,n){return e.set(d(e,t),n),n}function l(e,t){return e.get(d(e,t))}function d(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}const c=new Set([]);let u=t.API=void 0;var p,g,h,m;window.isElectron?t.API=(p=new WeakMap,g=new WeakMap,h=new WeakMap,u=class{static chunk(e,t=50){const n=[],s=e.length;for(let i=0;i<s;i+=t)n.push(e.slice(i,i+t));return n}static paramify(e){return Array.isArray(e)||(e=[e]),[...new Set(e)].filter(e=>"string"==typeof e&&e.trim())}get username(){return l(h,this)}get hasPendingChanges(){return c.has(l(g,this))}constructor(e,t,n,s){r(this,p,null),r(this,g,null),r(this,h,null),o(p,this,e),o(g,this,t),o(h,this,n);for(const e of s)c.add(e)}build(e={}){return{assertuser:l(h,this),discussiontoolsautosubscribe:"no",...e}}summary(e,t){const n=" ([[:en:WP:WikiShield|WS]])",i=`${e}${t?`: ${t}`:""}`;return`${(0,s.truncate)(i,473)}${n}`}user(e){return`[[Special:Contribs/${e}|${e}]] ([[User talk:${e}|talk]])`}revision(e){return`[[Special:Diff/${e}|${e}]]`}centralAuthUser(e){return`[[Special:CentralAuth/${e}|${e}]]`}async post(e,t,n){try{return await electron.mwapi("post",e,t,n)}catch(e){var s;if("assertnameduserfailed"===e||null!==(s=e.message)&&void 0!==s&&s.includes("assertnameduserfailed"))return l(p,this).disable("Invalid account","Your account was logged out or changed.");throw e}}async continuous(e,t,n,s){try{let i=null;const a=[];do{const r=await this.post({...e,...i||{}},n,s);if(a.push(r),i=r.continue||null,"function"==typeof t&&!0===await t(r,a)){i=!0;break}}while(i);return{stopped:null!==i,responses:a}}catch(e){return console.error("Continuous error:",e),{stopped:!0,responses:[]}}}async getToken(e="csrf",t,n){return await electron.mwapi("getToken",e,t,n)}async postWithToken(e,t="csrf",n,s){return await electron.mwapi("postWithToken",e,t,n,s)}async account(e,t){return await electron.mwapi("account",e,t)}async getGlobalUserInfo(e,t,n){return await electron.mwapi("getGlobalUserInfo",e,t,n)}async markWatchlistSeen(e,t,n,s){return await electron.mwapi("markWatchlistSeen",e,t,n,s)}async append(e,t,n,s,i,a,r){if("function"==typeof i){const o=await electron.mwapi("append",e,t,n,s,!0,a,r);if(o.needsCheck){const l=await i(o.text);return l.valid?await electron.mwapi("append",e,t,n,s,void 0,a,r):{valid:!1,reason:l.reason||"Append check failed."}}return o}return await electron.mwapi("append",e,t,n,s,void 0,a,r)}async editSection(e,t,n,s,i,a,r,o){if("function"==typeof a){const l=await electron.mwapi("editSection",e,t,n,s,i,!0,r,o);if(l.needsCheck){const d=await a(l.text);return d.valid?await electron.mwapi("editSection",e,t,n,s,i,void 0,r,o):{valid:!1,reason:d.reason||"Edit section check failed."}}return l}return await electron.mwapi("editSection",e,t,n,s,i,void 0,r,o)}async acceptPendingEdit(e,t,n,s){return await electron.mwapi("acceptPendingEdit",e,t,n,s)}async rejectPendingEdit(e,t,n,s,i,a){return await electron.mwapi("rejectPendingEdit",e,t,n,s,i,a)}async rollbackEdit(e,t,n,s,i){return await electron.mwapi("rollbackEdit",e,t,n,s,i)}async undoEdit(e,t,n,s,i){return await electron.mwapi("undoEdit",e,t,n,s,i)}async restoreEdit(e,t,n,s,i){return await electron.mwapi("restoreEdit",e,t,n,s,i)}async thankRevision(e,t,n){return await electron.mwapi("thankRevision",e,t,n)}async watchPage(e,t,n,s){return await electron.mwapi("watchPage",e,t,n,s)}async unwatchPage(e,t,n){return await electron.mwapi("unwatchPage",e,t,n)}async parse(e,t,n=!1,s,i){return await electron.mwapi("parse",e,t,n,s,i)}async getTags(e,t){return await electron.mwapi("getTags",e,t)}async getPagesContent(e,t,n){return await electron.mwapi("getPagesContent",e,t,n)}async getRevisionContent(e,t,n){return await electron.mwapi("getRevisionContent",e,t,n)}async getLatestIds(e,t,n){return await electron.mwapi("getLatestIds",e,t,n)}async getEditCounts(e,t,n){return await electron.mwapi("getEditCounts",e,t,n)}async areUsersBlocked(e,t,n){return await electron.mwapi("areUsersBlocked",e,t,n)}async isUserGloballyLocked(e,t,n){return await electron.mwapi("isUserGloballyLocked",e,t,n)}async getContributions(e,t,n,s){return await electron.mwapi("getContributions",e,t,n,s)}async getBlocks(e,t,n){return await electron.mwapi("getBlocks",e,t,n)}async pagesExist(e,t,n){return await electron.mwapi("pagesExist",e,t,n)}async getPagesDetails(e,t,n){return await electron.mwapi("getPagesDetails",e,t,n)}async countPageReverts(e,t,n,s){return await electron.mwapi("countPageReverts",e,t,n,s)}async getHistory(e,t,n,s){return await electron.mwapi("getHistory",e,t,n,s)}async getORES(e,t,n,s){return await electron.mwapi("getORES",e,t,n,s)}async extractORES(e,t){return await electron.mwapi("extractORES",e,t)}async getDiff(e,t,n,s,i){return await electron.mwapi("getDiff",e,t,n,s,i)}async getRevision(e,t,n,s){return await electron.mwapi("getRevision",e,t,n,s)}async getRevisionsBetween(e,t,n,s,i){return await electron.mwapi("getRevisionsBetween",e,t,n,s,i)}async parseUsers(e,t,n,s){return await electron.mwapi("parseUsers",e,t,n,s)}async parseEdits(e,t,n,s,i){return await electron.mwapi("parseEdits",e,t,n,s,i)}async parseAbuselogs(e,t,n,s){return await electron.mwapi("parseAbuselogs",e,t,n,s)}async getConsecutiveEdits(e,t,n,s,i){return await electron.mwapi("getConsecutiveEdits",e,t,n,s,i)}async getAbuseLogRevid(e,t,n){return await electron.mwapi("getAbuseLogRevid",e,t,n)}async feeds(e,t,n,s,i){return await electron.mwapi("feeds",e,t,n,s,i)}}):t.API=(m=new WeakMap,u=class extends i.MediaWikiAPI{get hasPendingChanges(){return c.has(this.server)}constructor(e,t,n,s){super(e,new a.MediaWikiOAuth2(`WikiShield (${t}; ${n})`),t,n),r(this,m,null),o(m,this,e),this.server=t,this.username=n;for(const e of s)c.add(e)}})},691(e,t){function n(e,t,n){s(e,t),t.set(e,n)}function s(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function i(e,t){return e.get(r(e,t))}function a(e,t,n){return e.set(r(e,t),n),n}function r(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Killswitch=void 0;var o=new WeakMap,l=new WeakMap,d=new WeakMap,c=new WeakSet;function u(e){if(i(d,this)[e])for(const n of i(d,this)[e])try{n.callback()}catch(e){}finally{var t;!0===(null===(t=n.options)||void 0===t?void 0:t.once)&&(i(d,this)[e]=i(d,this)[e].filter(e=>e!==n))}return this}t.Killswitch=class{constructor(e){var t,i;s(t=this,i=c),i.add(t),n(this,o,null),n(this,l,null),n(this,d,{okay:[],unsafe:[],update:[],"force-update":[],kill:[]}),a(o,this,e.api)}on(e,t,n={}){return i(d,this)[e]&&i(d,this)[e].push({callback:t,options:n}),this}async check(){try{var e,t,n,s,a,l,d;const m=null!==(e=null===(t=await i(o,this).getPagesContent([p._],!0,"en.wikipedia.org"))||void 0===t?void 0:t[p._])&&void 0!==e?e:"",v=null===(n=JSON.parse(m))||void 0===n?void 0:n.WikiShield;if(!v)throw new Error("No killswitch found");if(v.disabled)return r(c,this,u).call(this,"kill");const f=null!==(s=null===(a=v.reload)||void 0===a?void 0:a.soft)&&void 0!==s?s:0;return(null!==(l=null===(d=v.reload)||void 0===d?void 0:d.hard)&&void 0!==l?l:0)>h._?r(c,this,u).call(this,"force-update"):f>g._?(g._=f,r(c,this,u).call(this,"update")):r(c,this,u).call(this,"okay")}catch(e){return r(c,this,u).call(this,"unsafe")}}monitor(e=1e4){return i(l,this)&&clearInterval(i(l,this)),a(l,this,setInterval(()=>this.check(),+e)),this}};var p={_:"User:LuniZunie/JSON/Killswitch.json"},g={_:11},h={_:1}}},t={};function n(s){var i=t[s];if(void 0!==i)return i.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}var s=n(8816),i=n(2486);{var a;function r(){(0,i.build)().then(()=>{(0,s.run)(),window.onpopstate=e=>{var t;"WikiShield"!==(null===(t=e.state)||void 0===t?void 0:t.page)&&(window.location.reload(),window.onpopstate=null)}}).catch(e=>{console.error("[WikiShield] Error during build:",e),alert("An error occurred while starting WikiShield. Please check the console for details.")})}const o=mw.util.addPortletLink("p-personal",mw.util.getUrl("Wikipedia:WikiShield/run"),"WikiShield","pt-wikishield","WikiShield",void 0,"#pt-preferences");if(o){const l=o.querySelector(":scope > a > span");l&&(l.innerHTML="WS",l.style.fontWeight="bold",l.style.color="var(--color-base, #202122)",l.style.maskImage="none",l.style.webkitMaskImage="none",l.style.background="transparent",l.style.height="auto"),"true"!==electron.localStorage.get("WikiShield:OpenExternally")&&o.addEventListener("click",e=>{e.ctrlKey||e.metaKey||e.shiftKey||e.altKey||(e.preventDefault(),history.pushState({page:"WikiShield"},"",location.href),r())})}switch(addEventListener("popstate",e=>{var t;"WikiShield"===(null===(t=e.state)||void 0===t?void 0:t.page)&&r()}),null===(a=history.state)||void 0===a?void 0:a.page){case"WikiShield":history.replaceState(null,"",location.href);break;case"WikiShield-reload":history.replaceState({page:"WikiShield"},"",location.href),r()}"Wikipedia:WikiShield/run"===mw.config.get("wgRelevantPageName")&&"view"===mw.config.get("wgAction")&&(history.pushState({page:"WikiShield"},"",location.href),r())}}();/*</nowiki>*/
10uigzhqzpgmtwfgh0bzqemoh0g8ef8
619595
619566
2026-08-02T01:25:38Z
LuniZunie
25284
what was old wikishield like
619595
javascript
text/javascript
function fullTrim(str) {
const lines = str.split("\n"),
length = lines.length;
let start = true,
indent = Infinity;
let temp = [ ],
parsed = [ ];
for (let i = 0; i < length; i++) {
const line = lines[i];
if (line.trim() === "") {
if (start) {
continue;
} else {
temp.push("");
}
} else {
if (start) {
start = false;
} else {
parsed = parsed.concat(temp);
temp = [ ];
}
const leadingSpaces = line.match(/^(\s*)/)[0].length;
indent = Math.min(indent, leadingSpaces);
parsed.push(line);
}
}
const parsedLength = parsed.length;
if (parsedLength === 0) {
return "";
}
const result = [ ];
for (let i = 0; i < parsedLength; i++) {
const line = parsed[i].trimEnd();
if (line === "") {
result.push("");
} else {
result.push(line.slice(indent));
}
}
return result.join("\n");
};
const __version__ = 1;
const wikipedia = Object.freeze({
editions: {
"aa": "Afar", "ab": "Abkhaz", "ace": "Acehnese", "ady": "Adyghe", "af": "Afrikaans",
"ak": "Akan", "als": "Alemannic", "alt": "Southern Altai", "am": "Amharic", "ami": "Amis",
"an": "Aragonese", "ang": "Old English", "ann": "Obolo", "anp": "Angika", "ar": "Arabic",
"arc": "Aramaic", "ary": "Moroccan Arabic", "arz": "Egyptian Arabic", "as": "Assamese", "ast": "Asturian",
"atj": "Atikamekw", "av": "Avar", "avk": "Kotava", "awa": "Awadhi", "ay": "Aymara",
"az": "Azerbaijani", "azb": "South Azerbaijani", "ba": "Bashkir", "ban": "Balinese", "bar": "Bavarian",
"bat-smg": "Samogitian", "bbc": "Toba Batak", "bcl": "Central Bikol", "bdr": "Bajau Sama", "be": "Belarusian",
"be-tarask": "Belarusian (Classical)", "bew": "Betawi", "bg": "Bulgarian", "bh": "Bhojpuri", "bi": "Bislama",
"bjn": "Banjarese", "blk": "Pa'O", "bm": "Bambara", "bn": "Bengali", "bo": "Tibetan",
"bpy": "Bishnupriya Manipuri", "br": "Breton", "bs": "Bosnian", "btm": "Mandailing Batak", "bug": "Buginese",
"bxr": "Buryat", "ca": "Catalan", "cbk-zam": "Chavacano", "cdo": "Eastern Min", "ce": "Chechen",
"ceb": "Cebuano", "ch": "Chamorro", "cho": "Choctaw", "chr": "Cherokee", "chy": "Cheyenne",
"ckb": "Sorani Kurdish", "co": "Corsican", "cr": "Cree", "crh": "Crimean Tatar", "cs": "Czech",
"csb": "Kashubian", "cu": "Old Church Slavonic", "cv": "Chuvash", "cy": "Welsh", "da": "Danish",
"dag": "Dagbani", "de": "German", "dga": "Dagaare", "din": "Dinka", "diq": "Zazaki",
"dsb": "Lower Sorbian", "dtp": "Dusun", "dty": "Doteli", "dv": "Maldivian", "dz": "Dzongkha",
"ee": "Ewe", "el": "Greek", "eml": "Emilian–Romagnol", "en": "English", "eo": "Esperanto",
"es": "Spanish", "et": "Estonian", "eu": "Basque", "ext": "Extremaduran", "fa": "Persian",
"fat": "Fante", "ff": "Fula", "fi": "Finnish", "fiu-vro": "Võro", "fj": "Fijian",
"fo": "Faroese", "fon": "Fon", "fr": "French", "frp": "Franco-Provençal", "frr": "North Frisian",
"fur": "Friulian", "fy": "West Frisian", "ga": "Irish", "gag": "Gagauz", "gan": "Gan",
"gcr": "Guianan Creole", "gd": "Scottish Gaelic", "gl": "Galician", "glk": "Gilaki", "gn": "Guarani",
"gom": "Konkani", "gor": "Gorontalo", "got": "Gothic", "gpe": "Ghanaian Pidgin English", "gu": "Gujarati",
"guc": "Wayuu", "gur": "Gurenne", "guw": "Gun", "gv": "Manx", "ha": "Hausa", "hak": "Hakka",
"haw": "Hawaiian", "he": "Hebrew", "hi": "Hindi", "hif": "Fiji Hindi", "ho": "Hiri Motu",
"hr": "Croatian", "hsb": "Upper Sorbian", "ht": "Haitian Creole", "hu": "Hungarian", "hy": "Armenian",
"hyw": "Western Armenian", "hz": "Herero", "ia": "Interlingua", "iba": "Iban", "id": "Indonesian",
"ie": "Interlingue", "ig": "Igbo", "igl": "Igala", "ii": "Sichuan Yi", "ik": "Inupiaq",
"ilo": "Ilocano", "inh": "Ingush", "io": "Ido", "is": "Icelandic", "it": "Italian",
"iu": "Inuktitut", "ja": "Japanese", "jam": "Jamaican Patois", "jbo": "Lojban", "jv": "Javanese",
"ka": "Georgian", "kaa": "Karakalpak", "kab": "Kabyle", "kbd": "Kabardian", "kbp": "Kabiye",
"kcg": "Tyap", "kg": "Kongo", "kge": "Komering", "ki": "Kikuyu", "kj": "Kwanyama",
"kk": "Kazakh", "kl": "Greenlandic", "km": "Khmer", "kn": "Kannada", "knc": "Central Kanuri",
"ko": "Korean", "koi": "Komi-Permyak", "kr": "Kanuri", "krc": "Karachay-Balkar", "ks": "Kashmiri",
"ksh": "Ripuarian", "ku": "Kurdish", "kus": "Kusaal", "kv": "Komi", "kw": "Cornish",
"ky": "Kyrgyz", "la": "Latin", "lad": "Judaeo-Spanish", "lb": "Luxembourgish", "lbe": "Lak",
"lez": "Lezgian", "lfn": "Lingua Franca Nova", "lg": "Luganda", "li": "Limburgish", "lij": "Ligurian",
"lld": "Ladin", "lmo": "Lombard", "ln": "Lingala", "lo": "Lao", "lrc": "Northern Luri",
"lt": "Lithuanian", "ltg": "Latgalian", "lv": "Latvian", "mad": "Madurese", "mai": "Maithili",
"map-bms": "Banyumasan", "mdf": "Moksha", "mg": "Malagasy", "mh": "Marshallese", "mhr": "Meadow Mari",
"mi": "Maori", "min": "Minangkabau", "mk": "Macedonian", "ml": "Malayalam", "mn": "Mongolian",
"mni": "Meitei", "mnw": "Mon", "mo": "Moldovan", "mos": "Moore", "mr": "Marathi",
"mrj": "Hill Mari", "ms": "Malay", "mt": "Maltese", "mus": "Muscogee", "mwl": "Mirandese",
"my": "Burmese", "myv": "Erzya", "mzn": "Mazanderani", "na": "Nauruan", "nah": "Nahuatl",
"nap": "Neapolitan", "nds": "Low German", "nds-nl": "Dutch Low Saxon", "ne": "Nepali",
"new": "Newar", "ng": "Ndonga", "nia": "Nias", "nl": "Dutch", "nn": "Norwegian (Nynorsk)",
"no": "Norwegian", "nostalgia": "Nostalgia", "nov": "Novial", "nqo": "N'Ko", "nr": "Southern Ndebele",
"nrm": "Norman", "nso": "Northern Sotho", "nup": "Nupe", "nv": "Navajo", "ny": "Chewa",
"oc": "Occitan", "olo": "Livvi-Karelian", "om": "Oromo", "or": "Odia", "os": "Ossetian",
"pa": "Punjabi", "pag": "Pangasinan", "pam": "Kapampangan", "pap": "Papiamento", "pcd": "Picard",
"pcm": "Nigerian Pidgin", "pdc": "Pennsylvania Dutch", "pfl": "Palatine German", "pi": "Pali",
"pih": "Norfuk", "pl": "Polish", "pms": "Piedmontese", "pnb": "Western Punjabi", "pnt": "Pontic",
"ps": "Pashto", "pt": "Portuguese", "pwn": "Paiwan", "qu": "Quechua", "rki": "Rakhine",
"rm": "Romansh", "rmy": "Romani", "rn": "Kirundi", "ro": "Romanian", "roa-rup": "Aromanian",
"roa-tara": "Tarantino", "rsk": "Pannonian Rusyn", "ru": "Russian", "ru-sib": "Siberian",
"rue": "Rusyn", "rw": "Kinyarwanda", "sa": "Sanskrit", "sah": "Yakut", "sat": "Santali",
"sc": "Sardinian", "scn": "Sicilian", "sco": "Scots", "sd": "Sindhi", "se": "Northern Sami",
"sep11": "September 11", "sg": "Sango", "sh": "Serbo-Croatian", "shi": "Shilha", "shn": "Shan",
"si": "Sinhala", "simple": "Simple English", "sk": "Slovak", "skr": "Saraiki", "sl": "Slovene",
"sm": "Samoan", "smn": "Inari Sami", "sn": "Shona", "so": "Somali", "sq": "Albanian",
"sr": "Serbian", "srn": "Sranan Tongo", "ss": "Swazi", "st": "Sotho", "stq": "Saterland Frisian",
"su": "Sundanese", "sv": "Swedish", "sw": "Swahili", "syl": "Sylheti", "szl": "Silesian",
"szy": "Sakizaya", "ta": "Tamil", "tay": "Atayal", "tcy": "Tulu", "tdd": "Tai Nuea",
"te": "Telugu", "ten": "10", "test": "Test", "test2": "Test2", "tet": "Tetum",
"tg": "Tajik", "th": "Thai", "ti": "Tigrinya", "tig": "Tigre", "tk": "Turkmen",
"tl": "Tagalog", "tlh": "Klingon", "tly": "Talysh", "tn": "Tswana", "to": "Tongan",
"tokipona": "Toki Pona", "tpi": "Tok Pisin", "tr": "Turkish", "trv": "Seediq",
"ts": "Tsonga", "tt": "Tatar", "tum": "Tumbuka", "tw": "Twi", "ty": "Tahitian",
"tyv": "Tuvan", "udm": "Udmurt", "ug": "Uyghur", "uk": "Ukrainian", "ur": "Urdu",
"uz": "Uzbek", "ve": "Venda", "vec": "Venetian", "vep": "Veps", "vi": "Vietnamese",
"vls": "West Flemish", "vo": "Volapük", "wa": "Walloon", "war": "Waray", "wo": "Wolof",
"wuu": "Wu", "xal": "Kalmyk", "xh": "Xhosa", "xmf": "Mingrelian", "yi": "Yiddish",
"yo": "Yoruba", "za": "Zhuang", "zea": "Zeelandic", "zgh": "Moroccan Amazigh", "zh": "Chinese",
"zh-classical": "Classical Chinese", "zh-min-nan": "Southern Min", "zh-yue": "Cantonese",
"zu": "Zulu"
},
namespaces: {
0: "Main", 1: "Talk",
2: "User", 3: "User talk",
4: "Wikipedia", 5: "Wikipedia talk",
6: "File", 7: "File talk",
8: "MediaWiki", 9: "MediaWiki talk",
10: "Template", 11: "Template talk",
12: "Help", 13: "Help talk",
14: "Category", 15: "Category talk",
100: "Portal", 101: "Portal talk",
108: "Book", 109: "Book talk",
},
pages: {
AIV: "Wikipedia:Administrator intervention against vandalism",
UAA: "Wikipedia:Usernames for administrator attention",
RFPP: "Wikipedia:Requests for page protection/Increase",
},
});
const app = {
version: Object.freeze({
number: __version__,
changelog: fullTrim(`
<h1>Changelog</h1>
<ul>
<li>Initial release.</li>
</ul>
`)
}),
config: Object.freeze({
refresh: 1000,
}),
settings: {
schema: Object.freeze({
type: "object",
properties: {
version: {
type: "number",
validator(v) {
return v >= 1;
}
},
languages: {
type: "array",
items: {
type: "string",
validator(v) {
return v in wikipedia.editions;
}
}
},
namespaces: {
type: "array",
items: {
type: "number",
validator(v) {
return v in wikipedia.namespaces;
}
}
},
queue: {
type: "object",
properties: {
maximum: {
type: "number",
validator(v) {
return v >= 1 && v <= 250;
}
},
remove: {
type: "string",
validator(v) {
return v === "byAge" || v === "byScore";
}
}
}
},
ORES: {
type: "object",
properties: {
minimum: {
type: "number",
validator(v) {
return v >= 0 && v <= 1;
}
},
sound: {
type: "object",
properties: {
enabled: {
type: "boolean",
},
minimum: {
type: "number",
validator(v) {
return v >= 0 && v <= 1;
}
}
}
}
}
},
watchlist: {
type: "object",
properties: {
expirary: {
type: "number",
validator(v) {
return v >= 1 && v <= 365;
}
},
}
},
keybinds: {
type: "array",
items: [
{
type: "custom",
validator(v) {
return checkKeybind(v);
}
}
]
}
}
}),
value: {
version: __version__,
languages: [ "en" ],
namespaces: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 100, 101, 108, 109 ],
queue: {
maximum: 100,
remove: "byScore",
},
ORES: {
minimum: 0,
sound: {
enabled: true,
minimum: 0.95,
}
},
watchlist: {
expirary: 7,
},
keybinds: [ ],
}
},
};
class WikiShield {
#watchlist = new Map();
constructor() {
}
options = Object.freeze({
/**
* Loads the settings from localStorage and validates them.
* @return {void}
*/
load() {
try {
const save = JSON.parse(window.localStorage.getItem("wikishield:options"));
function gotoPath(obj, path) {
return path.reduce((o, key) => o[key], obj);
}
function handleSetting(path, schema) {
const value = gotoPath(save, path);
function validate(schema, value) {
if ("validator" in schema && !schema.validator(value)) {
return null;
} else {
return value;
}
}
switch (schema.type) {
case "object": {
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
const result = { };
for (const [ key, propSchema ] of Object.entries(schema.properties)) {
const validatedValue = handleSetting([ ...path, key ], propSchema);
if (validatedValue !== null) {
result[key] = validatedValue;
}
}
return result;
}
} break;
case "array": {
if (Array.isArray(value)) {
const result = [ ],
itemSchema = schema.items;
for (const index in value) {
const validatedItem = handleSetting([ ...path, index ], itemSchema);
if (validatedItem !== null) {
result.push(validatedItem);
}
}
return result;
}
} break;
case "string": {
if (typeof value === "string") {
return validate(schema, value);
}
} break;
case "number": {
if (typeof value === "number") {
return validate(schema, value);
}
} break;
case "boolean": {
if (typeof value === "boolean") {
return validate(schema, value);
}
} break;
case "custom": {
return validate(schema, value);
} break;
}
return null;
}
function deepAssign(target, ...sources) {
sources.forEach(source => {
if (source && typeof source === "object") {
Object.keys(source).forEach(key => {
const value = source[key];
if (value && typeof value === "object" && !Array.isArray(value)) {
target[key] = deepAssign(target[key] || {}, value);
} else {
target[key] = value;
}
});
}
});
return target;
}
const validatedOptions = handleSetting([ ], app.settings.schema);
app.settings.value = deepAssign({ }, app.settings.value, validatedOptions);
} catch (err) {
console.error("Failed to load options:", err);
}
},
/**
* Saves the current settings to localStorage.
* @return {void}
*/
save() {
try {
window.localStorage.setItem("wikishield:options", JSON.stringify(app.settings.value));
} catch (err) {
console.error("Failed to save options:", err);
}
}
});
}
7arzmr53cs1kyawmuz5hikk46but47z
619596
619595
2026-08-02T01:26:33Z
LuniZunie
25284
oops
619596
javascript
text/javascript
// <nowiki>
const wikishieldChangelogVersion = "3";
const wikishieldVersion = "2.0";
const wikishieldChangelog = `
<h1 class="settings-section-title">Changelog</h1>
<p>Welcome to 🛡️WikiShield 2.0! The script has been completely redesigned and rewritten, and includes a number of new features:</p>
<ul>
<li>Customize and edit controls using control scripts</li>
<li>Dark mode</li>
<li>Give welcome templates to users</li>
<li>Thank users for their edits</li>
<li>Request protection at RFPP</li>
<li>Whitelist and highlight users</li>
<li>...plus a large number of other minor features!</li>
</ul>
<p>Please note that if you have set custom controls, they have been reset. You can change this in your settings.</p>
<p>If you would like to continue to use the old version, you can change your common.js to use User:Ingenuity/WikiShieldLegacy.js.</p>
<p>Please report any bugs at <a target="_blank" href="https://en.wikipedia.org/wiki/Wikipedia_talk:WikiShield">Wikipedia talk:🛡️WikiShield</a>.</p>
`;
const AIVNAME = "Wikipedia:Administrator intervention against vandalism";
const UAANAME = "Wikipedia:Usernames for administrator attention";
const RFPPNAME = "Wikipedia:Requests for page protection/Increase";
const wikishieldData = {
defaultSettings: {
maxQueueSize: 50,
maxEditCount: 50,
minimumORESScore: 0,
soundAlertORESScore: 0.95,
enableSoundAlerts: false,
watchlistExpiry: "1 week",
wiki: "en",
namespacesShown: [
0, 2, 4, 6, 8, 10, 12, 14, 100, 118,
1, 3, 5, 7, 9, 11, 13, 15, 101, 119
],
refreshTime: 2000,
showIPs: true,
showUsers: true,
sortQueueItems: true,
enableOllamaAI: false,
ollamaServerUrl: "http://localhost:11434",
ollamaModel: "",
controlScripts: [
{
keys: ["arrowright"],
actions: [
{
name: "nextEdit",
params: {}
}
]
},
{
keys: [" "],
actions: [
{
name: "rollback",
params: {}
},
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{
name: "reportToAIV",
params: {
reportMessage: "Vandalism past final warning"
}
}
]
}
]
},
{
name: "warn",
params: {
warningType: "Vandalism",
level: "auto"
}
},
{
name: "highlight",
params: {}
},
{
name: "nextEdit",
params: {}
}
]
},
{
keys: ["arrowleft"],
actions: [
{
name: "prevEdit",
params: {}
}
]
},
{
keys: ["h"],
actions: [
{
name: "openHistory",
params: {}
}
]
},
{
keys: ["c"],
actions: [
{
name: "openUserContribs",
params: {}
}
]
}
],
selectedPalette: 0,
theme: "theme-light"
},
warningTemplateColors: {
"0": "grey",
"1": "#4169e1",
"2": "#ff8c00",
"3": "#ff4500",
"4": "#b22222",
"4im": "#000000"
},
colorPalettes: [
["#78c675", "#fdff7a", "#fcff54", "#fbff12", "#ffc619", "#ff8812", "#f56214", "#f73214", "#fc0303", "#fc0303"],
["#bfbfbf", "#ffd9d9", "#ffc9c9", "#ffb0b0", "#ff9797", "#ff7d7d", "#ff6464", "#ff4b4b", "#ff3131", "#ff1818"],
["#bfbfbf", "#d9ffd9", "#c9ffc9", "#b0ffb0", "#97ff97", "#7dff7d", "#64ff64", "#4bff4b", "#31ff31", "#18ff18"],
["#bfbfbf", "#d9d9ff", "#c9c9ff", "#b0b0ff", "#9797ff", "#7d7dff", "#6464ff", "#4b4bff", "#3131ff", "#1818ff"]
],
warnings: {
"Vandalism": {
templates: [
"subst:uw-vandalism1",
"subst:uw-vandalism2",
"subst:uw-vandalism3",
"subst:uw-vandalism4",
"subst:uw-vandalism4im"
],
label: "vandalism",
desc: "Default warning for vandalism."
},
"Subtle vandalism": {
templates: [
"subst:uw-subtle1",
"subst:uw-subtle2",
"subst:uw-subtle3",
"subst:uw-subtle4"
],
label: "subtle vandalism",
desc: "Warning for subtle vandalism that may not be immediately obvious."
},
"AI-generated content": {
templates: [
"subst:uw-ai1",
"subst:uw-ai2",
"subst:uw-ai3",
"subst:uw-ai4"
],
label: "adding [[WP:AIGEN|AI-generated content]]",
desc: "Warning for adding AI-generated content without disclosure."
},
"Disruption": {
templates: [
"subst:uw-disruptive1",
"subst:uw-disruptive2",
"subst:uw-disruptive3",
"subst:uw-generic4"
],
label: "[[WP:DE|disruptive editing]]",
desc: "Default warning for making disruptive edits (not always vandalism)"
},
"Deleting": {
templates: [
"subst:uw-delete1",
"subst:uw-delete2",
"subst:uw-delete3",
"subst:uw-delete4",
"subst:uw-delete4im"
],
label: "unexplained deletion",
desc: "Used when a user does not explain deletion of part of an article."
},
"Advertising": {
templates: [
"subst:uw-advert1",
"subst:uw-advert2",
"subst:uw-advert3",
"subst:uw-advert4",
"subst:uw-advert4im"
],
label: "[[WP:PROMO|advertising or promotion]]",
desc: "Adding promotional content to an article."
},
"Spam links": {
templates: [
"subst:uw-spam1",
"subst:uw-spam2",
"subst:uw-spam3",
"subst:uw-spam4",
"subst:uw-spam4im"
],
label: "adding [[WP:ELNO|inappropriate links]]",
desc: "Adding external links that could be considered spam."
},
"Unsourced": {
templates: [
"subst:uw-unsourced1",
"subst:uw-unsourced2",
"subst:uw-unsourced3",
"subst:uw-unsourced4"
],
label: "adding [[WP:CITE|unsourced content]]",
desc: "Adding unsourced, possibly defamatory, content to an article."
},
"Editing tests": {
templates: [
"subst:uw-test1",
"subst:uw-test2",
"subst:uw-test3",
"subst:uw-vandalism4"
],
label: "making editing tests",
desc: "Making editing tests to articles."
},
"Commentary": {
templates: [
"subst:uw-talkinarticle1",
"subst:uw-talkinarticle2",
"subst:uw-talkinarticle3",
"subst:uw-generic4"
],
label: "adding commentary",
desc: "Adding opinion or commentary to articles."
},
"POV": {
templates: [
"subst:uw-npov1",
"subst:uw-npov2",
"subst:uw-npov3",
"subst:uw-npov4"
],
label: "adding [[WP:NPOV|non-neutral content]]",
desc: "Adding content which violates the neutral point of view policy."
},
"Errors": {
templates: [
"subst:uw-error1",
"subst:uw-error2",
"subst:uw-error3",
"subst:uw-error4"
],
label: "adding deliberate errors to articles",
desc: "Adding deliberate errors to articles."
},
"Owning": {
templates: [
"subst:uw-own1",
"subst:uw-own2",
"subst:uw-own3",
"subst:uw-own4"
],
label: "assuming [[WP:OWN|ownership of articles]]",
desc: "Assuming ownership of articles."
},
"Unsourced (BLP)": {
templates: [
"subst:uw-biog1",
"subst:uw-biog2",
"subst:uw-biog3",
"subst:uw-biog4",
"subst:uw-biog4im"
],
label: "adding unsourced content to [[WP:BLP|biographies of living persons]]",
desc: "Adding unsourced content to biographies of living persons."
},
"Chatting": {
templates: [
"subst:uw-chat1",
"subst:uw-chat2",
"subst:uw-chat3",
"subst:uw-chat4"
],
label: "conversation in article talk space",
desc: "Using article talk pages for inappropriate discussion."
},
"Image vandalism": {
templates: [
"subst:uw-image1",
"subst:uw-image2",
"subst:uw-image3",
"subst:uw-image4"
],
label: "image vandalism",
desc: "Image vandalism."
},
"AfD removal": {
templates: [
"subst:uw-afd1",
"subst:uw-afd2",
"subst:uw-afd3",
"subst:uw-afd4"
],
label: "removing AfD templates or comments",
desc: "Removing AfD templates or other users' comments from AfD discussions."
},
"Jokes": {
templates: [
"subst:uw-joke1",
"subst:uw-joke2",
"subst:uw-joke3",
"subst:uw-joke4",
"subst:uw-joke4im"
],
label: "adding inappropriate humor",
desc: "Adding inappropriate humor to articles."
},
"Personal attacks": {
templates: [
"subst:uw-npa1",
"subst:uw-npa2",
"subst:uw-npa3",
"subst:uw-npa4",
"subst:uw-npa4im"
],
label: "[[WP:NPA|personal attacks]]",
desc: "Personal attacks towards another user."
},
"MOS violation": {
templates: [
"subst:uw-mos1",
"subst:uw-mos2",
"subst:uw-mos3",
"subst:uw-mos4"
],
label: "[[WP:MOS|manual of style]] violation",
desc: "Not following the Manual of Style."
},
"Censoring": {
templates: [
"subst:uw-notcensored1",
"subst:uw-notcensored2",
"subst:uw-notcensored3",
"subst-uw-generic4"
],
label: "[[WP:NOTCENSORED|Censoring content]]",
desc: "Censoring topically-relevant content."
}
},
namespaces: [
{
name: "Main",
id: 0
},
{
name: "User",
id: 2
},
{
name: "Project",
id: 4
},
{
name: "File",
id: 6
},
{
name: "MediaWiki",
id: 8
},
{
name: "Template",
id: 10
},
{
name: "Help",
id: 12
},
{
name: "Category",
id: 14
},
{
name: "Portal",
id: 100
},
{
name: "Draft",
id: 118
},
{
name: "Talk",
id: 1
},
{
name: "User talk",
id: 3
},
{
name: "Project talk",
id: 5
},
{
name: "File talk",
id: 7
},
{
name: "MediaWiki talk",
id: 9
},
{
name: "Template talk",
id: 11
},
{
name: "Help talk",
id: 13
},
{
name: "Category talk",
id: 15
},
{
name: "Portal talk",
id: 101
},
{
name: "Draft talk",
id: 119
}
]
};
// </nowiki>
// <nowiki>
const wikishieldStyling = {
"initial": `
* {
font-family: sans-serif;
line-height: 1.4em;
}
body, html, #container {
width: 100%;
height: 100%;
margin: 0;
}
#container {
display: flex;
align-items: center;
justify-content: center;
}
#welcome-container {
width: max-content;
height: max-content;
padding-bottom: 250px;
}
h1 {
margin: 0 0 5px 0;
}
a {
color: black !important;
}
.about-link {
margin-right: 10px;
}
button {
padding: 8px 20px;
background: rgba(69, 94, 192, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(69, 94, 192, 0.3);
border-radius: 8px;
color: white;
cursor: pointer;
display: block;
margin-top: 10px;
transition: all 0.2s ease;
box-shadow: 0 2px 8px rgba(69, 94, 192, 0.3);
font-weight: 500;
}
button:hover {
background: rgba(56, 80, 180, 0.95);
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(69, 94, 192, 0.4);
}
button:active {
transform: translateY(0);
box-shadow: 0 2px 6px rgba(69, 94, 192, 0.3);
}
`,
"main": `
* {
font-family: sans-serif;
box-sizing: border-box;
}
body, html, #container {
width: 100%;
height: 100%;
margin: 0;
overflow: hidden;
}
#container {
display: flex;
}
#queue {
width: 300px;
height: 100%;
border-right: 2px solid #bfbfbf;
position: relative;
}
#queue-top {
height: 60px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
position: relative;
z-index: 2;
display: flex;
align-items: center;
padding: 15px;
justify-content: space-between;
user-select: none;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
#queue-top-left, #user-contribs-left {
display: flex;
flex-direction: column;
}
#queue-top-title {
font-weight: bold;
font-size: 1.1em;
}
#queue-top-items, #user-contribs-count {
font-size: 0.85em;
}
#queue-top-right {
font-size: 1.4em;
}
#queue-top-right span {
margin-left: 5px;
cursor: pointer;
color: #444;
transition: 0.2s;
}
#queue-top-right span:hover {
color: black;
}
#notifications-panel {
position: absolute;
top: 50px;
right: 10px;
width: 350px;
max-height: 500px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 12px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
display: none;
z-index: 1000;
flex-direction: column;
overflow: hidden;
}
#notifications-panel.show {
display: flex;
animation: slideDown 0.3s ease-out;
}
@keyframes slideDown {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
#notifications-header {
padding: 10px;
border-bottom: 1px solid #cfcfcf;
font-weight: bold;
display: flex;
justify-content: space-between;
align-items: center;
}
#notifications-list {
overflow-y: auto;
max-height: 450px;
}
.notification-item {
padding: 12px;
border-bottom: 1px solid #eaeaea;
cursor: pointer;
transition: background 0.2s;
position: relative;
}
.notification-item:hover {
background: #f5f5f5;
}
.notification-item.unread {
background: #e8f4ff;
border-left: 3px solid #3366cc;
padding-left: 9px;
}
.notification-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 4px;
}
.notification-type {
font-size: 0.7em;
text-transform: uppercase;
font-weight: 600;
letter-spacing: 0.5px;
opacity: 0.6;
}
.notification-title {
font-weight: 500;
margin-bottom: 2px;
font-size: 0.95em;
}
.notification-subtitle {
font-size: 0.85em;
color: #666;
margin-bottom: 4px;
}
.notification-time {
font-size: 0.75em;
color: #999;
}
.toast-notification {
position: fixed;
bottom: 30px;
right: 30px;
background: rgba(244, 67, 54, 0.96);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
color: white;
padding: 16px 24px;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(244, 67, 54, 0.4);
border: 1px solid rgba(255, 255, 255, 0.15);
z-index: 10000;
display: flex;
align-items: center;
gap: 12px;
min-width: 300px;
max-width: 500px;
animation: slideIn 0.3s ease-out;
opacity: 0;
transform: translateX(100%);
}
.toast-notification.show {
opacity: 1;
transform: translateX(0);
}
.toast-notification.hide {
animation: slideOut 0.3s ease-in forwards;
}
@keyframes slideIn {
from {
opacity: 0;
transform: translateX(100%);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes slideOut {
from {
opacity: 1;
transform: translateX(0);
}
to {
opacity: 0;
transform: translateX(100%);
}
}
.toast-icon {
font-size: 1.5em;
flex-shrink: 0;
}
.toast-content {
flex: 1;
}
.toast-title {
font-weight: bold;
font-size: 1em;
margin-bottom: 4px;
}
.toast-message {
font-size: 0.9em;
opacity: 0.9;
}
.toast-close {
cursor: pointer;
font-size: 1.2em;
opacity: 0.7;
transition: opacity 0.2s;
flex-shrink: 0;
}
.toast-close:hover {
opacity: 1;
}
.confirmation-modal-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 10001;
animation: fadeIn 0.2s ease-out;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
.confirmation-modal {
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border-radius: 16px;
box-shadow: 0 12px 48px rgba(0, 0, 0, 0.25);
border: 1px solid rgba(255, 255, 255, 0.8);
min-width: 400px;
max-width: 500px;
animation: scaleIn 0.2s ease-out;
}
@keyframes scaleIn {
from {
transform: scale(0.9);
opacity: 0;
}
to {
transform: scale(1);
opacity: 1;
}
}
@keyframes scaleOut {
from {
transform: scale(1);
opacity: 1;
}
to {
transform: scale(0.9);
opacity: 0;
}
}
.confirmation-modal-overlay.closing {
animation: fadeOut 0.2s ease-out forwards;
}
.confirmation-modal.closing {
animation: scaleOut 0.2s ease-out forwards;
}
.confirmation-modal-header {
padding: 20px 24px;
border-bottom: 1px solid #e0e0e0;
}
.confirmation-modal-title {
font-size: 1.2em;
font-weight: bold;
color: #333;
}
.confirmation-modal-body {
padding: 24px;
color: #555;
line-height: 1.5;
}
.confirmation-modal-username {
font-weight: bold;
color: #0645ad;
}
.confirmation-modal-footer {
padding: 16px 24px;
border-top: 1px solid #e0e0e0;
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
}
.confirmation-modal-footer-right {
display: flex;
gap: 12px;
}
.confirmation-modal-button {
padding: 10px 24px;
border-radius: 6px;
font-weight: 500;
cursor: pointer;
border: none;
font-size: 0.95em;
transition: all 0.2s;
}
.confirmation-modal-button-no {
background: #f5f5f5;
color: #333;
}
.confirmation-modal-button-no:hover {
background: #e0e0e0;
}
.confirmation-modal-button-yes {
background: #36c;
color: white;
}
.confirmation-modal-button-yes:hover {
background: #2855a8;
}
.confirmation-modal-button-uaa {
background: #d33;
color: white;
}
.confirmation-modal-button-uaa:hover {
background: #a82828;
}
.confirmation-modal-button-yes:hover {
background: #2855a8;
}
.confirmation-modal-footer-vertical {
flex-direction: column;
align-items: stretch;
}
.confirmation-modal-footer-vertical .confirmation-modal-button {
width: 100%;
}
.confirmation-modal-button-reason {
background: #36c;
color: white;
}
.confirmation-modal-button-reason:hover {
background: #2855a8;
}
.confirmation-modal-button-cancel {
background: #f5f5f5;
color: #333;
}
.confirmation-modal-button-cancel:hover {
background: #e0e0e0;
}
#queue-items {
height: calc(100% - 60px);
overflow-x: hidden;
overflow-y: auto;
}
.width-adjust {
width: 8px;
height: 100%;
position: absolute;
top: 0;
right: -4px;
z-index: 3;
cursor: col-resize;
}
#details-width-adjust {
left: -4px;
}
#right-container {
width: calc(100% - 300px);
display: flex;
flex-wrap: wrap;
}
#right-top {
height: 60px;
width: 100%;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: center;
padding: 8px 15px;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border-bottom: 2px solid #e0e0e0;
}
#right-top a {
text-decoration: none;
color: #0645ad;
font-weight: 500;
transition: color 0.2s ease;
}
#right-top a:hover {
color: #0b7ad1;
}
#right-top div {
padding: 0 12px;
display: flex;
align-items: center;
gap: 6px;
}
#right-top .fa {
margin-right: 6px;
color: #555;
font-size: 0.95em;
}
.right-top-comment {
flex-basis: 100%;
text-align: center;
justify-content: center;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
#right-content {
width: 100%;
height: calc(100% - 60px);
display: flex;
}
#main-container {
position: relative;
width: calc(100% - 300px);
display: flex;
flex-direction: column;
height: 100%;
}
#diff-container {
overflow-y: auto;
flex: 1;
}
#bottom-tools {
height: 50px;
flex-shrink: 0;
}
#right-details {
width: 300px;
border-left: 2px solid #cfcfcf;
position: relative;
}
#user-contribs, #page-history {
height: 50%;
}
#page-history {
border-top: 2px solid #cfcfcf;
}
#user-contribs-top, #page-history-top {
height: 55px;
border-bottom: 2px solid #cfcfcf;
display: flex;
align-items: center;
justify-content: space-between;
padding: 15px;
user-select: none;
}
#user-contribs-title, #page-history-title {
font-weight: bold;
font-size: 1.05em;
}
#user-contribs-level {
padding: 2px 8px;
border-radius: 8px;
color: white;
font-weight: bold;
}
#block-count-indicator {
padding: 3px 10px;
border-radius: 8px;
background: #1a1a1a;
color: white;
font-weight: bold;
font-size: 0.95em;
margin-right: 8px;
border: 2px solid #ff4444;
}
#protection-indicator {
font-size: 1.3em;
}
#user-contribs-content, #page-history-content {
height: calc(100% - 55px);
overflow-y: auto;
overflow-x: hidden;
}
#user-contribs-content .queue-edit, #page-history-content .queue-edit {
animation: none !important;
}
#bottom-tools {
display: flex;
align-items: center;
padding: 0 10px;
border-top: 2px solid #cfcfcf;
justify-content: space-between;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
#bottom-tools-left {
display: flex;
align-items: center;
}
#bottom-tools-left > div {
margin-right: 10px;
position: relative;
height: 50px;
display: flex;
align-items: center;
}
#bottom-tools-stats {
display: flex;
align-items: center;
gap: 15px;
font-size: 0.9em;
color: #666;
padding-right: 10px;
}
#bottom-tools-stats > div {
display: flex;
align-items: center;
gap: 5px;
}
#bottom-tools-stats .stat-value {
font-weight: bold;
color: #333;
}
#bottom-tools > div {
margin-right: 10px;
position: relative;
height: 100%;
display: flex;
align-items: center;
}
.bottom-tool-title {
padding: 5px 12px;
border-radius: 6px;
user-select: none;
cursor: pointer;
transition: all 0.2s ease;
font-weight: 500;
}
.bottom-tool-title:hover {
background: #e8e8e8;
transform: translateY(-1px);
}
.bottom-tool-title-selected, .submenu-selected {
background: #d8d8d8 !important;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}
.bottom-tool-content {
position: absolute;
bottom: 48px;
width: max-content;
display: none;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 10px;
left: -12px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
overflow: visible;
z-index: 100;
}
.bottom-tool-option {
padding: 8px 12px;
display: flex;
align-items: center;
justify-content: space-between;
user-select: none;
cursor: pointer;
}
.bottom-tool-option:hover {
background: rgba(0, 0, 0, 0.05);
border-radius: 6px;
}
.bottom-tool-option-title {
padding-right: 15px;
}
.bottom-tool-option-subcontent {
display: none;
position: absolute;
bottom: -2px;
left: 100%;
width: max-content;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 10px;
padding: 12px;
z-index: 150;
cursor: initial;
min-width: 250px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
}
select, input[type=text] {
max-width: 250px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.15);
padding: 8px 12px;
border-radius: 8px;
cursor: pointer;
transition: all 0.2s ease;
font-size: 0.95em;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
}
select:hover, input[type=text]:hover {
border-color: rgba(0, 0, 0, 0.25);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
}
select:focus, input[type=text]:focus {
outline: none;
border-color: rgba(33, 150, 243, 0.6);
box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.15);
background: rgba(255, 255, 255, 1);
}
input[type=text] {
cursor: text !important;
}
#revert-menu {
max-height: calc(100vh - 120px);
overflow: auto;
}
#warn-menu {
max-height: calc(100vh - 120px);
overflow: auto;
}
.revert-menu-table {
padding: 12px;
}
.revert-menu-title, .revert-menu-info {
padding-right: 15px;
}
.revert-menu-item {
color: white;
width: 35px;
border-radius: 8px;
height: 35px;
font-size: 0.9em;
text-align: center;
user-select: none;
cursor: pointer;
transition: all 0.2s ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.15);
}
.revert-menu-item:hover {
filter: brightness(0.9);
transform: translateY(-2px);
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
.revert-menu-item:active {
transform: translateY(0);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}
.bottom-subcontent-input-title {
font-size: 0.9em;
margin: 10px 0 2px 0;
}
.bottom-subcontent-button {
margin-top: 10px;
display: block;
background: linear-gradient(to bottom, #ffffff, #f5f5f5);
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 8px;
cursor: pointer;
padding: 8px 14px;
font-weight: 500;
transition: all 0.2s ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.bottom-subcontent-button:hover {
background: linear-gradient(to bottom, #ffffff, #f8f8f8);
border-color: rgba(0, 0, 0, 0.2);
transform: translateY(-1px);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);
}
.bottom-subcontent-button:active {
transform: translateY(0);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
}
.queue-edit {
display: flex;
position: relative;
font-size: 0.95em;
transition: all 0.2s ease;
}
.queue-edit:hover {
background: rgba(0, 0, 0, 0.02);
}
.queue-edit:not(.queue-edit-current) {
animation: fadein 0.5s ease-out 0s 1;
}
@keyframes fadein {
from {
background: #e8e8e8;
transform: translateX(-5px);
}
to {
background: transparent;
transform: translateX(0);
}
}
.queue-edit-title, .queue-edit-user, .queue-edit-summary, .queue-edit-time {
display: flex;
align-items: center;
white-space: nowrap;
margin-bottom: 3px;
position: relative;
width: max-content;
max-width: 100%;
height: 22px;
}
.queue-edit-user, .queue-edit-summary, .queue-edit-time {
font-size: 0.9em;
}
#user-contribs-content .queue-edit-content,
#page-history-content .queue-edit-content {
padding-left: 15px;
}
.queue-edit-icon {
width: 25px;
flex-shrink: 0;
color: #333;
}
.queue-edit-color {
width: 5px;
flex-shrink: 0;
background: gray;
transition: 0.2s;
}
.queue-edit-content {
padding: 12px 15px;
width: 100%;
border-bottom: 2px solid #e0e0e0;
}
.queue-edit-tags {
display: flex;
}
.queue-edit-tag {
font-size: 0.8em;
padding: 3px 10px;
flex-shrink: 0;
margin-right: 5px;
border-radius: 6px;
background: rgba(234, 234, 234, 0.9);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.08);
transition: all 0.2s ease;
}
.queue-edit-tag:hover {
background: rgba(220, 220, 220, 0.95);
}
.queue-edit-tag-minor {
background: rgba(212, 212, 212, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.1);
font-weight: bold;
color: #666;
font-style: italic;
}
.minor-indicator {
font-weight: bold;
color: #666;
font-size: 0.9em;
padding: 2px 8px;
background: rgba(232, 232, 232, 0.9);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.08);
border-radius: 6px;
margin-right: 4px;
}
.queue-edit-change {
position: absolute;
top: 0;
height: calc(100% - 2px);
right: 0;
display: flex;
width: 100px;
align-items: center;
justify-content: right;
padding-right: 10px;
background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
}
.queue-edit-current {
background: #f0f4f8;
border-left: 4px solid #2196F3;
box-shadow: inset 0 0 10px rgba(33, 150, 243, 0.1);
}
.queue-edit:hover .queue-edit-color {
width: 10px;
}
.tooltip {
position: fixed;
top: 0;
left: 0;
z-index: 3;
opacity: 0;
transition: opacity 0.2s ease;
font-size: 0.9em;
max-width: 450px;
min-width: 250px;
padding: 10px 14px;
background: rgba(44, 62, 80, 0.96);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-radius: 10px;
color: white;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
border: 1px solid rgba(255, 255, 255, 0.1);
white-space: normal;
line-height: 1.5;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
word-wrap: break-word;
overflow-wrap: break-word;
}
.tooltip-title {
font-weight: 600;
font-size: 0.95em;
margin-bottom: 6px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
padding-bottom: 4px;
word-wrap: break-word;
}
.tooltip-item {
margin: 4px 0;
padding-left: 4px;
word-wrap: break-word;
overflow-wrap: break-word;
}
.tooltip-item-level {
display: inline-block;
min-width: 60px;
font-weight: 600;
color: #ffd700;
word-wrap: break-word;
}
.tooltip-item-article {
color: #87ceeb;
word-wrap: break-word;
}
.tooltip-item-time {
color: #b0b0b0;
font-size: 0.85em;
word-wrap: break-word;
}
.tooltip-more {
margin-top: 6px;
font-style: italic;
color: #999;
font-size: 0.85em;
}
#diff-container {
overflow-y: auto;
scroll-behavior: smooth;
}
#diff-container td, #diff-container tr {
overflow-wrap: anywhere;
}
.diff-addedline {
background: rgba(76, 175, 80, 0.2);
border-left: 3px solid #4CAF50;
}
ins {
background: rgba(76, 175, 80, 0.4);
text-decoration: none;
border-radius: 2px;
padding: 1px 2px;
}
.diff-deletedline {
background: rgba(244, 67, 54, 0.2);
border-left: 3px solid #f44336;
}
del {
background: rgba(244, 67, 54, 0.4);
text-decoration: none;
border-radius: 2px;
padding: 1px 2px;
}
.diff-lineno {
border-bottom: 1px dashed grey;
background: rgba(0, 0, 0, 0.2);
}
#diff-container * {
font-family: monospace;
vertical-align: baseline;
}
#diff-container td:not(.diff-marker) {
width: 50%;
}
.context-menu {
position: fixed;
padding: 8px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 10px;
z-index: 100;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
}
.context-menu div {
padding: 8px 12px;
margin: 4px;
user-select: none;
cursor: pointer;
border-radius: 6px;
transition: background 0.2s ease;
}
.context-menu div:not(#context-ores):hover {
background: rgba(0, 0, 0, 0.08);
}
#context-ores {
color: #444;
font-size: 0.8em;
}
#context-ores-number {
font-size: 1.2em;
font-weight: bold;
filter: brightness(0.6);
}
.settings-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
backdrop-filter: blur(1px) brightness(0.9);
z-index: 10;
}
.settings {
display: flex;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 16px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
overflow: hidden;
}
.settings > div {
height: 600px;
}
.settings-left {
width: 200px;
border-right: 1px solid rgba(0, 0, 0, 0.08);
background: rgba(0, 0, 0, 0.02);
}
.settings-left-menu-item {
padding: 12px 20px;
user-select: none;
cursor: pointer;
transition: background 0.2s ease;
border-radius: 8px;
margin: 4px 8px;
}
.settings-left-menu-item:hover {
background: rgba(0, 0, 0, 0.05);
}
.settings-left-menu-item.selected {
background: rgba(33, 150, 243, 0.1) !important;
color: #2196F3;
font-weight: 500;
}
.settings-right {
width: 800px;
overflow: auto;
padding-bottom: 20px;
}
.settings-section {
margin: 20px 20px 0 20px;
}
.settings-section-title {
font-size: 1.1em;
margin-bottom: 3px;
font-weight: bold;
}
.settings-section-desc {
font-size: 0.9em;
margin-bottom: 10px;
}
#settings-general-button:nth-child(1) {
border-top-left-radius: 8px;
}
#namespace-container {
display: flex;
flex-wrap: wrap;
}
#namespace-container > div {
width: 200px;
}
.numeric-input-container {
display: flex;
}
.settings-toggle {
width: 60px;
height: 30px;
cursor: pointer;
position: relative;
}
.toggle-switch {
width: 100%;
height: 100%;
background: #cfcfcf;
border-radius: 15px;
position: relative;
transition: background 0.3s;
}
.settings-toggle.active .toggle-switch {
background: #36c;
}
.toggle-slider {
width: 24px;
height: 24px;
background: white;
border-radius: 50%;
position: absolute;
top: 3px;
left: 3px;
transition: left 0.3s;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
.settings-toggle.active .toggle-slider {
left: 33px;
}
.numeric-input-button {
width: 35px;
height: 35px;
font-size: 1.3em;
display: flex !important;
align-items: center;
justify-content: center;
cursor: pointer;
border-radius: 5px;
transition: 0.1s;
}
.numeric-input-button:hover {
background: #eaeaea;
}
.numeric-input {
border: 2px solid #cfcfcf;
font-size: 1.1em;
padding: 3px 10px;
width: 100px;
border-radius: 5px;
margin: 0 5px;
}
.numeric-input:focus {
border: 2px solid #aaa !important;
outline: none;
}
.control-container {
border: 2px solid #cfcfcf;
padding: 10px 15px;
border-radius: 10px;
font-size: 0.9em;
}
.control-container-title {
font-size: 1.1em;
font-weight: bold;
}
.control-action {
margin-top: 5px;
padding: 0 0 0 10px;
border-left: 1px solid #cfcfcf;
}
.control-action-title span {
margin-right: 5px;
}
.control-action-title-left span {
width: 17px;
}
.control-action-title-left select {
margin: 0 5px;
}
.control-keys {
display: flex;
}
.control-keys > div {
display: flex;
align-items: center;
background: rgba(255, 255, 255, 0.95);
border: 1px solid rgba(0, 0, 0, 0.15);
width: max-content;
padding: 6px 12px;
border-radius: 8px;
margin: 5px 5px 5px 0;
user-select: none;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
transition: all 0.2s ease;
}
.control-keys > div:hover {
border-color: rgba(0, 0, 0, 0.25);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);
}
.control-keys .remove {
cursor: pointer;
}
.key-elem-title {
margin-right: 10px;
}
.key-select {
font-style: italic;
border: 2px solid #8989ec !important;
}
.key-duplicate {
border: 2px solid red !important;
}
.control-action-title {
display: flex;
justify-content: space-between;
align-items: center;
}
.control-action-title-right {
display: flex;
}
.control-action-title-right span {
font-size: 1.2em;
width: 30px;
height: 30px;
margin-right: 0;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
border-radius: 5px;
transition: 0.1s;
}
.control-action-title-right span:hover {
background: #eaeaea;
}
.add-action-button {
width: max-content;
border: 1px solid rgba(0, 0, 0, 0.15);
padding: 8px 16px;
border-radius: 8px;
background: linear-gradient(to bottom, #ffffff, #f5f5f5);
cursor: pointer;
user-select: none;
transition: all 0.2s ease;
font-weight: 500;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.add-action-button:hover {
border-color: rgba(0, 0, 0, 0.2);
transform: translateY(-1px);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);
}
.add-action-button:active {
transform: translateY(0);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
}
.add-action-button:hover {
background: linear-gradient(to bottom, #ffffff, #f0f0f0);
transform: translateY(-1px);
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
}
.add-action-button:active {
transform: translateY(0);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}
.add-action-container {
display: flex;
}
.cancel-button, .create-button {
margin-left: 5px;
}
.control-delete {
color: red;
}
.control-bottom-container {
display: flex;
justify-content: space-between;
margin-top: 10px;
}
.new-control-script {
font-size: 0.9em;
}
.new-control-script span {
margin-right: 5px;
}
.action-parameter {
margin-left: 26px;
display: inline-block;
}
.parameter-title {
margin: 5px 0 2px 0;
font-size: 0.9em;
}
.user-container > div {
display: flex;
justify-content: space-between;
align-items: center;
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 8px;
padding: 8px 8px 8px 15px;
margin-bottom: 8px;
background: rgba(0, 0, 0, 0.02);
transition: all 0.2s ease;
}
.user-container > div:hover {
background: rgba(0, 0, 0, 0.04);
border-color: rgba(0, 0, 0, 0.15);
transform: translateX(2px);
}
.user-container a {
color: black;
text-decoration: none;
}
.queue-edit-user-highlight {
background: rgba(255, 255, 190, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 230, 0, 0.3);
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(255, 230, 0, 0.15);
}
.queue-edit-user-empty-talk {
background: rgba(255, 204, 204, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 100, 100, 0.3);
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(255, 100, 100, 0.15);
}
#progress-bar-container {
position: absolute;
top: calc(100% - 90px);
height: 40px;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
padding: 0px 20px;
}
.progress-bar {
border-radius: 12px;
width: 150px;
height: 28px;
background: rgba(0, 0, 0, 0.08);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
font-size: 0.8em;
display: flex;
align-items: center;
justify-content: center;
position: relative;
margin-left: 10px;
opacity: 1;
transition: 0.3s;
overflow: hidden;
border: 1px solid rgba(0, 0, 0, 0.1);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.progress-bar-overlay {
position: absolute;
top: 0;
left: 0;
border-radius: 12px;
width: 0px;
transition: 0.3s;
height: 100%;
background: linear-gradient(90deg, rgba(0, 170, 255, 0.8), rgba(33, 150, 243, 0.9));
}
.progress-bar-text {
position: relative;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 0 5px;
max-width: 100%;
}
.changelog {
font-size: 0.9em;
line-height: 1.6em;
}
.settings-appearance-box {
display: flex inline;
width: 150px;
height: 60px;
justify-content: center;
align-items: center;
border-radius: 10px;
margin: 10px 10px 0 0;
cursor: pointer;
user-select: none;
transition: all 0.2s ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.settings-appearance-box:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
#box-light {
background: rgba(234, 234, 234, 0.95);
color: black !important;
border: 1px solid rgba(0, 0, 0, 0.15);
}
#box-dark {
background: rgba(34, 38, 47, 0.95);
border: 1px solid rgba(255, 255, 255, 0.1);
color: white;
}
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #f5f5f5;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #c0c0c0;
border-radius: 10px;
transition: background 0.2s;
}
::-webkit-scrollbar-thumb:hover {
background: #a0a0a0;
}
`,
"theme-dark" : `
body {
background: #22262f;
}
*, .about-link {
color: #f1f5ff !important;
}
button {
background: rgba(74, 125, 204, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(74, 125, 204, 0.3) !important;
box-shadow: 0 2px 8px rgba(74, 125, 204, 0.3) !important;
}
button:hover {
background: rgba(91, 154, 255, 0.95) !important;
box-shadow: 0 4px 12px rgba(91, 154, 255, 0.4) !important;
}
.queue-edit-current, .progress-bar, .queue-edit-tag {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(255, 255, 255, 0.06) !important;
}
.queue-edit-tag-minor {
background: rgba(31, 36, 48, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
color: #a8b0c0 !important;
}
.minor-indicator {
background: rgba(54, 62, 81, 0.9) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
color: #a8b0c0 !important;
}
.queue-edit-content {
border-bottom: 2px solid #363e51 !important;
}
#queue {
border-right: 2px solid #363e51 !important;
}
#right-details {
border-left: 2px solid #363e51 !important;
}
#bottom-tools {
border-top: 2px solid #363e51 !important;
}
#bottom-tools-stats {
color: #aaa !important;
}
#bottom-tools-stats .stat-value {
color: #e0e0e0 !important;
}
.toast-notification {
background: rgba(211, 47, 47, 0.96) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.15) !important;
box-shadow: 0 6px 20px rgba(211, 47, 47, 0.4) !important;
}
.confirmation-modal-overlay {
background: rgba(0, 0, 0, 0.7) !important;
}
.confirmation-modal {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(20px) !important;
-webkit-backdrop-filter: blur(20px) !important;
box-shadow: 0 12px 48px rgba(0, 0, 0, 0.7) !important;
border: 1px solid rgba(255, 255, 255, 0.1) !important;
}
.confirmation-modal-header {
border-bottom: 1px solid #363e51 !important;
}
.confirmation-modal-title {
color: #f1f5ff !important;
}
.confirmation-modal-body {
color: #bbb !important;
}
.confirmation-modal-username {
color: #5b9aff !important;
}
.confirmation-modal-footer {
border-top: 1px solid #363e51 !important;
}
.confirmation-modal-button-no {
background: #363e51 !important;
color: #f1f5ff !important;
}
.confirmation-modal-button-no:hover {
background: #4a5468 !important;
}
.confirmation-modal-button-yes {
background: #4a7dcc !important;
}
.confirmation-modal-button-yes:hover {
background: #5b9aff !important;
}
.confirmation-modal-button-uaa {
background: #c13030 !important;
}
.confirmation-modal-button-uaa:hover {
background: #d94444 !important;
}
.confirmation-modal-button-reason {
background: #4a7dcc !important;
}
.confirmation-modal-button-reason:hover {
background: #5b9aff !important;
}
.confirmation-modal-button-cancel {
background: #363e51 !important;
color: #f1f5ff !important;
}
.confirmation-modal-button-cancel:hover {
background: #4a5468 !important;
}
#user-contribs-top, #page-history-top {
border-bottom: 2px solid #363e51 !important;
}
#page-history {
border-top: 2px solid #363e51 !important;
}
.bottom-tool-title:hover, .settings-left-menu-item:hover, .settings-left-menu-item.selected,
.context-menu div:not(#context-ores):hover {
background: #292f3c !important;
}
.bottom-tool-option:hover, .numeric-input-button:hover {
background: #2e3442 !important;
}
.bottom-tool-title-selected, .submenu-selected {
background: #2e3442 !important;
}
.bottom-tool-content, .bottom-tool-option-subcontent {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4) !important;
}
.context-menu {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4) !important;
}
.settings {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;
}
#notifications-panel {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;
}
select, input[type=text], .bottom-subcontent-button {
background: rgba(46, 52, 66, 0.95) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
color: #e0e0e0 !important;
border-radius: 8px !important;
}
select:hover, input[type=text]:focus, .bottom-subcontent-button:hover {
border-color: rgba(91, 154, 255, 0.4) !important;
background: rgba(46, 52, 66, 1) !important;
}
.queue-edit-change {
background: linear-gradient(to right, rgba(34, 38, 47, 0), rgba(34, 38, 47, 1)) !important;
}
#right-top, #queue-top {
box-shadow: none !important;
border-bottom: 2px solid #363e51;
}
.queue-edit:not(.queue-edit-current) {
animation: fadeindark 0.5s linear 0s 1 !important;
}
@keyframes fadeindark {
from {
background: #363e51;
}
to {
background: transparent;
}
}
.diff-addedline {
background: rgba(0, 164, 0, 0.3) !important;
}
ins {
background: rgba(130, 169, 26, 0.5) !important;
}
.settings, .context-menu, .control-keys > div, .add-action-button, .control-container,
.user-container > div {
background: #22262f;
border: 2px solid #363e51;
}
.settings-left {
border-right: 2px solid #363e51;
}
#notifications-panel {
background: rgba(34, 38, 47, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;
}
#notifications-header {
border-bottom: 1px solid #363e51 !important;
}
.notification-item {
border-bottom: 1px solid #363e51 !important;
}
.notification-item:hover {
background: #292f3c !important;
}
.notification-item.unread {
background: #2a3a4a !important;
border-left-color: #5588cc !important;
}
.notification-subtitle {
color: #aaa !important;
}
.notification-time {
color: #888 !important;
}
.notification-type {
color: #999 !important;
}
#page-metadata {
color: #999 !important;
}
#mark-all-read {
color: #6ba3d8 !important;
}
.queue-edit-user-highlight {
background: rgba(114, 114, 55, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(150, 150, 50, 0.3) !important;
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(114, 114, 55, 0.3) !important;
}
.queue-edit-user-empty-talk {
background: rgba(107, 55, 55, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(150, 50, 50, 0.3) !important;
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(107, 55, 55, 0.3) !important;
}
.toggle-switch {
background: #363e51 !important;
}
.settings-toggle.active .toggle-switch {
background: #4a7dcc !important;
}
.toggle-slider {
background: #f1f5ff !important;
}
#block-count-indicator {
background: #22262f !important;
border-color: #ff6666 !important;
}
::-webkit-scrollbar {
background: #22262f;
width: 10px;
}
::-webkit-scrollbar-track {
background: #1a1e27;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #3a4052;
border-radius: 10px;
transition: background 0.2s;
}
::-webkit-scrollbar-thumb:hover {
background: #4a5468;
}
.queue-edit-current {
background: #2a3444 !important;
border-left: 4px solid #5b9aff !important;
box-shadow: inset 0 0 10px rgba(91, 154, 255, 0.15) !important;
}
#right-top {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
border-bottom: 2px solid #363e51 !important;
}
#queue-top {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
}
#bottom-tools {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
}
#right-top a {
color: #6ba3d8 !important;
}
#right-top a:hover {
color: #89b8e8 !important;
}
#right-top .fa {
color: #aaa !important;
}
/* Warning/Notice boxes - dark mode compatible */
.warning-box, .notice-box {
background: rgba(139, 92, 0, 0.15) !important;
border-left-color: #c5a000 !important;
color: #f0d48a !important;
}
.error-box {
background: rgba(139, 0, 0, 0.15) !important;
border-left-color: #dc3545 !important;
color: #ffb3b3 !important;
}
/* Older edit notice */
#old-edit-notice {
background: rgba(139, 92, 0, 0.15) !important;
border-left-color: #c5a000 !important;
color: #f0d48a !important;
}
#old-edit-notice a {
color: #a3c5ff !important;
}
/* Code blocks in light backgrounds */
code {
background: rgba(70, 80, 100, 0.5) !important;
color: #e0e0e0 !important;
}
`,
"mobile": `
/* ==================== MOBILE RESPONSIVE DESIGN ==================== */
@media (max-width: 768px) {
/* Reset overflow and sizing */
* {
box-sizing: border-box;
}
body, html {
overflow-x: hidden;
width: 100vw;
height: 100vh;
}
/* Main container - stack vertically */
#container {
display: flex;
flex-direction: column;
width: 100vw;
height: 100vh;
overflow: hidden;
}
/* ========== QUEUE SECTION ========== */
#queue {
width: 100%;
height: 35vh;
min-height: 200px;
max-height: 35vh;
border-right: none;
border-bottom: 2px solid #999;
display: flex;
flex-direction: column;
}
#queue-top {
height: 50px;
min-height: 50px;
padding: 10px 15px;
flex-shrink: 0;
}
#queue-top-title {
font-size: 16px;
}
#queue-top-items {
font-size: 12px;
}
#queue-list {
flex: 1;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
#queue-list li {
padding: 12px 15px;
font-size: 14px;
line-height: 1.5;
}
#queue-menu {
max-height: 50vh;
overflow-y: auto;
}
/* ========== MAIN CONTENT AREA ========== */
#main {
width: 100%;
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
min-height: 0;
}
/* ========== TOP SECTION (User Contribs & Page History) ========== */
#top {
display: flex;
flex-direction: column;
flex: 1;
overflow: hidden;
min-height: 0;
}
#user-contribs,
#page-history {
width: 100%;
height: 50%;
min-height: 150px;
border-right: none;
border-bottom: 2px solid #999;
display: flex;
flex-direction: column;
overflow: hidden;
}
#page-history {
border-bottom: none;
}
#user-contribs-top,
#page-history-top {
height: 45px;
min-height: 45px;
padding: 10px 15px;
font-size: 14px;
flex-shrink: 0;
}
#left-top,
#right-top {
padding: 10px 15px;
font-size: 14px;
}
#user-contribs-list,
#page-history-list {
flex: 1;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
font-size: 13px;
padding: 5px;
}
#user-contribs-list li,
#page-history-list li {
padding: 10px;
line-height: 1.5;
}
#user-contribs-level {
font-size: 11px;
padding: 3px 7px;
}
#block-count-indicator {
font-size: 10px;
padding: 3px 6px;
margin-right: 5px;
}
#protection-indicator {
font-size: 16px;
}
/* ========== BOTTOM SECTION (Actions & Diff) ========== */
#bottom {
display: none; /* Hidden by default on mobile, shown when needed */
flex-direction: column;
width: 100%;
height: 50vh;
max-height: 50vh;
position: fixed;
bottom: 0;
left: 0;
background: white;
border-top: 2px solid #999;
z-index: 100;
overflow: hidden;
}
#bottom.mobile-show {
display: flex;
}
#left-bottom,
#right-bottom {
width: 100%;
height: 50%;
border-right: none;
border-bottom: 1px solid #ccc;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
#right-bottom {
border-bottom: none;
}
.bottom-tool-title {
padding: 12px 15px;
font-size: 15px;
font-weight: 600;
}
.bottom-tool-content {
padding: 10px;
}
#diff-container {
font-size: 13px;
line-height: 1.5;
padding: 10px;
}
.diff-section {
padding: 10px;
margin: 5px 0;
}
/* ========== ACTION BUTTONS ========== */
.action-button {
padding: 12px 16px;
font-size: 14px;
margin: 5px;
min-height: 44px;
border-radius: 5px;
display: inline-block;
}
/* ========== REVERT MENU ========== */
#revert-menu {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.revert-menu-table {
width: 100%;
min-width: 600px; /* Allow horizontal scroll */
}
.revert-menu-title {
font-size: 13px;
padding: 8px;
min-width: 120px;
}
.revert-menu-info {
padding: 8px;
}
.revert-menu-item {
padding: 10px 12px;
font-size: 13px;
min-width: 44px;
min-height: 44px;
}
/* ========== WARN MENU ========== */
.warn-menu {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.warn-menu-table {
width: 100%;
min-width: 600px;
}
/* ========== POPUPS & DIALOGS ========== */
.popup-container {
width: 100vw;
height: 100vh;
max-width: 100vw;
max-height: 100vh;
margin: 0;
border-radius: 0;
left: 0;
top: 0;
transform: none;
}
.popup-content {
padding: 15px;
height: calc(100vh - 60px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.popup-title {
font-size: 18px;
padding: 15px;
}
.report-warn-popup {
width: 100vw;
height: calc(100vh - 80px);
}
/* ========== SETTINGS DIALOG ========== */
#settings-container {
width: 100vw;
height: 100vh;
max-width: 100vw;
max-height: 100vh;
border-radius: 0;
left: 0;
top: 0;
transform: none;
}
#settings-tabs {
display: flex;
flex-direction: row;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
border-bottom: 2px solid #ccc;
border-right: none;
width: 100%;
flex-wrap: nowrap;
}
.settings-tab {
min-width: 100px;
padding: 15px 10px;
font-size: 14px;
border-right: 1px solid #ccc;
border-bottom: none;
white-space: nowrap;
flex-shrink: 0;
}
#settings-content {
padding: 15px;
height: calc(100vh - 60px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
/* ========== NOTIFICATIONS ========== */
#notification-container {
position: fixed;
top: 10px;
left: 10px;
right: 10px;
width: auto;
max-width: none;
}
.notification {
padding: 12px;
font-size: 13px;
line-height: 1.4;
margin-bottom: 10px;
}
#notifications-panel {
width: calc(100vw - 20px);
max-width: none;
right: 10px;
left: 10px;
max-height: 60vh;
}
/* ========== MENUS ========== */
#queue-menu,
#user-contribs-menu,
#page-history-menu {
font-size: 13px;
max-height: 60vh;
overflow-y: auto;
}
.menu-item {
padding: 12px 15px;
min-height: 44px;
}
/* ========== CONTEXT MENU ========== */
.context-menu {
max-width: calc(100vw - 40px);
max-height: 70vh;
overflow-y: auto;
}
/* ========== WELCOME SCREEN ========== */
#welcome-container {
padding: 20px;
width: 90%;
max-width: 400px;
}
#welcome-container h1 {
font-size: 22px;
}
.about-link {
font-size: 14px;
padding: 8px 12px;
}
#start-button {
font-size: 16px;
padding: 14px 24px;
min-height: 48px;
}
/* ========== TOUCH TARGETS ========== */
button,
a,
.clickable {
min-height: 44px;
min-width: 44px;
}
/* ========== FIX MOBILE WEBKIT ISSUES ========== */
input,
textarea,
select {
font-size: 16px; /* Prevents zoom on iOS */
}
/* ========== SCROLLBAR STYLING ========== */
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-thumb {
background: #999;
border-radius: 3px;
}
}
/* ==================== SMALL MOBILE (≤480px) ==================== */
@media (max-width: 480px) {
#queue {
height: 30vh;
max-height: 30vh;
min-height: 150px;
}
#queue-top-title {
font-size: 15px;
}
#queue-list li {
padding: 10px 12px;
font-size: 13px;
}
#user-contribs-top,
#page-history-top {
font-size: 13px;
padding: 8px 12px;
}
#user-contribs-list li,
#page-history-list li {
font-size: 12px;
}
.action-button {
padding: 10px 14px;
font-size: 13px;
}
.revert-menu-item {
padding: 8px 10px;
font-size: 12px;
}
.notification {
font-size: 12px;
}
}
/* ==================== TABLET (769px-1024px) ==================== */
@media (min-width: 769px) and (max-width: 1024px) {
#container {
flex-direction: row;
}
#queue {
width: 320px;
height: 100%;
border-right: 2px solid #bfbfbf;
border-bottom: none;
}
#main {
flex: 1;
display: flex;
flex-direction: column;
}
#top {
flex-direction: row;
flex: 1;
}
#user-contribs,
#page-history {
width: 50%;
height: 100%;
border-bottom: none;
}
#bottom {
display: flex;
flex-direction: row;
position: relative;
height: auto;
max-height: none;
}
#left-bottom,
#right-bottom {
width: 50%;
height: auto;
}
}
`
};
// </nowiki>
// <nowiki>
const wikishieldHTML = {
"head": `
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
`,
"initial": `
<div id="container">
<div id="welcome-container">
<h1>Welcome to 🛡️WikiShield</h1>
<a href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="about-link">About</a>
<a href="https://en.wikipedia.org/wiki/Wikipedia talk:WikiShield" target="_blank" class="about-link">Discuss</a>
<span class="about-link">Version ${wikishieldVersion}</span>
<div id="rollback-needed">
<p>You must have rollback or admin rights to use this script.</p>
<p>You can apply for rollback rights <a href="https://en.wikipedia.org/wiki/WP:PERM/R" target="_blank">here</a>.</p>
</div>
<button id="start-button">Start 🛡️WikiShield</button>
</div>
</div>
`,
"main": `
<div id="container">
<div id="queue">
<div id="queue-top">
<div id="queue-top-left">
<span id="queue-top-title">Queue</span>
<span id="queue-top-items">0 items</span>
</div>
<div id="queue-top-right">
<span class="fa fa-bell" id="notifications-icon" data-tooltip="Notifications" style="position: relative;">
<span id="notification-count" style="display: none; position: absolute; top: -5px; right: -5px; background: red; color: white; border-radius: 50%; width: 16px; height: 16px; font-size: 10px; text-align: center; line-height: 16px; font-family: sans-serif;"></span>
</span>
<span class="fa fa-trash" id="delete-queue" data-tooltip="Clear queue"></span>
<span class="fa fa-gear" id="open-settings" data-tooltip="Open settings"></span>
</div>
</div>
<div id="queue-items"></div>
<div class="width-adjust" id="queue-width-adjust"></div>
</div>
<div id="notifications-panel">
<div id="notifications-header">
<span>Notifications</span>
<span id="mark-all-read" style="font-size: 0.85em; font-weight: normal; cursor: pointer; color: #0645ad;">Mark all as read</span>
</div>
<div id="notifications-list"></div>
</div>
<div id="right-container">
<div id="right-top"></div>
<div id="right-content">
<div id="main-container">
<div id="diff-container"></div>
<div id="progress-bar-container"></div>
<div id="bottom-tools">
<div id="bottom-tools-left">
<div id="bottom-revert">
<div class="bottom-tool-title">Revert and warn</div>
<div id="revert-menu" class="bottom-tool-content"></div>
</div>
<div id="bottom-warn">
<div class="bottom-tool-title">Warn</div>
<div id="warn-menu" class="bottom-tool-content"></div>
</div>
<div id="bottom-user">
<div class="bottom-tool-title">User</div>
<div class="bottom-tool-content">
<div id="user-open-user-page" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open user page</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-open-user-talk" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open user talk</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-view-contribs" class="bottom-tool-option">
<div class="bottom-tool-option-title">View user contributions</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-view-filter-log" class="bottom-tool-option">
<div class="bottom-tool-option-title">View filter log hits</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-add-whitelist" class="bottom-tool-option">
Add to whitelist
<span class="fas fa-circle-question" data-tooltip="You won't see any more edits by this user"></span>
</div>
<div id="user-highlight" class="bottom-tool-option">
Highlight
<span class="fas fa-circle-question" data-tooltip="This user's future edits will go to the top of your queue"></span>
</div>
<div id="user-welcome" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Welcome</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<div id="user-report-aiv" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Report (AIV)</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<div id="user-report-uaa" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Report (UAA)</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<!--<div id="user-block" class="bottom-tool-option tool-block submenu">
<div class="bottom-tool-option-title">Block</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>-->
</div>
</div>
<div id="bottom-page">
<div class="bottom-tool-title">Page</div>
<div class="bottom-tool-content">
<div id="page-open-page" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open page</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="page-open-talk" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open talk page</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="page-view-history" class="bottom-tool-option">
<div class="bottom-tool-option-title">View page history</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="page-request-protection" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Request protection</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<!--<div id="page-protect" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Protect</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>-->
</div>
</div>
<div id="bottom-edit">
<div class="bottom-tool-title">Edit</div>
<div class="bottom-tool-content">
<div id="edit-view-revision" class="bottom-tool-option">
<div class="bottom-tool-option-title">View revision</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="edit-view-diff" class="bottom-tool-option">
<div class="bottom-tool-option-title">View diff</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="edit-thank-user" class="bottom-tool-option">Thank user</div>
<div id="edit-rollback" class="bottom-tool-option">Rollback</div>
<div id="edit-rollback-goodfaith" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Rollback (good faith)</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<div id="edit-undo" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Undo</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
</div>
</div>
</div>
<div id="bottom-tools-stats">
<div>
<span class="fa fa-user"></span>
<span class="stat-value" id="stat-total-contribs">-</span>
<span>edits</span>
</div>
</div>
</div>
</div>
<div id="right-details">
<div class="width-adjust" id="details-width-adjust"></div>
<div id="user-contribs">
<div id="user-contribs-top">
<div id="user-contribs-left">
<div id="user-contribs-title">User contributions</div>
<div id="user-contribs-count">_ edits</div>
</div>
<div id="block-count-indicator" style="display: none;"></div>
<div id="user-contribs-level" data-tooltip="Warning level">0</div>
</div>
<div id="user-contribs-content"></div>
</div>
<div class="height-adjust"></div>
<div id="page-history">
<div id="page-history-top">
<div>
<div id="page-history-title">Page history</div>
<div id="page-metadata" style="font-size: 0.75em; color: #666; margin-top: 3px;"></div>
</div>
<div id="protection-indicator"></div>
</div>
<div id="page-history-content"></div>
</div>
</div>
</div>
</div>
</div>
`,
"edit-context-menu": `
<div id="context-ores"><span id="context-ores-number">0</span> ORES score</div>
<div id="context-remove">Remove from queue</div>
<div id="context-whitelist">Whitelist user</div>
<div id="context-open-history">View page history</div>
<div id="context-open-contribs">View user contribs</div>
`,
"settings": `
<div class="settings">
<div class="settings-left">
<div class="settings-left-menu-item" id="settings-general-button">General</div>
<div class="settings-left-menu-item" id="settings-ai-button">AI Analysis</div>
<div class="settings-left-menu-item" id="settings-appearance-button">Appearance</div>
<div class="settings-left-menu-item" id="settings-controls-button">Controls</div>
<div class="settings-left-menu-item" id="settings-whitelist-button">Whitelist</div>
<div class="settings-left-menu-item" id="settings-highlight-button">Highlighted</div>
<div class="settings-left-menu-item" id="settings-statistics-button">Statistics</div>
<div class="settings-left-menu-item" id="settings-about-button">About</div>
</div>
<div class="settings-right"></div>
</div>
`
};
// </nowiki>
// <nowiki>
class wikishieldUtil {
constructor() {}
/**
* Given a Date object, return a string in the format YYYY-MM-DDTHH:MM:SS
* @param {Date} date The date to convert
* @returns {String} The date in the format YYYY-MM-DDTHH:MM:SS
*/
utcString(date) {
return date.getUTCFullYear() + "-" +
this.padString(date.getUTCMonth() + 1, 2) + "-" +
this.padString(date.getUTCDate(), 2) + "T" +
this.padString(date.getUTCHours(), 2) + ":" +
this.padString(date.getUTCMinutes(), 2) + ":" +
this.padString(date.getUTCSeconds(), 2);
}
/**
* Given a string and a length, pad the string with 0s to the left until it is the given length
* @param {String} str The string to pad
* @param {Number} len The length to pad to
* @returns {String} The padded string
*/
padString(str, len) {
str = str.toString();
while (str.length < len) {
str = "0" + str;
}
return str;
}
/**
* Given a string, encode it for use in a URL
* @param {String} str The string to encode
* @returns {String} The encoded string
*/
encodeuri(str) {
return encodeURIComponent(str);
}
/**
* Get the section name for the current month and year
* @returns {String} The section name
*/
monthSectionName() {
const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
const currentMonth = months[new Date().getUTCMonth()];
const currentYear = new Date().getUTCFullYear();
return currentMonth + " " + currentYear;
}
/**
* Given a string, escape it for use in HTML
* @param {String} str The string to escape
* @returns {String} The escaped string
*/
escapeHtml(str) {
return (str || "").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
}
/**
* Given the title of a page, return the URL to that page
* @param {String} title The title of the page
* @param {Boolean} usePhpString Whether to use /w/index.php in the link
* @returns {String} The URL to the page
*/
pageLink(title, usePhpString=false) {
return usePhpString
? `https://${wikishield.options.wiki}.wikipedia.org/w/index.php${title}`
: `https://${wikishield.options.wiki}.wikipedia.org/wiki/${this.encodeuri(title)}`;
}
/**
* If the given string is longer than the given length, truncate it and add "..." to the end
* @param {String} str The string to truncate
* @param {Number} len The length to truncate to
* @returns {String} The truncated string
*/
maxStringLength(str, len) {
return str.length > len ? str.substring(0, len) + "..." : str;
}
/**
* Given the number of bytes changed in an edit, return the color
* @param {Number} delta The number of bytes changed
* @returns {String} The color
*/
getChangeColor(delta) {
return delta > 0 ? "green" : (delta < 0 ? "red" : "black");
}
/**
* Given the number of bytes changed in an edit, return the string (eg. "+100")
* @param {Number} delta The number of bytes changed
* @returns {String} The string
*/
getChangeString(delta) {
return delta > 0 ? "+" + delta : (delta === 0 ? "0" : "–" + Math.abs(delta).toString());
}
/**
* Given a timestamp, return a string representing how long ago it was
* @param {String} timestamp The timestamp
* @returns {String} Time ago
*/
timeAgo(timestamp) {
const difference = new Date().getTime() - new Date(timestamp);
const seconds = Math.floor(difference / 1000);
// Handle future timestamps (clock skew)
if (seconds < 0) {
return "just now";
}
if (seconds > 60) {
if (seconds > 60 * 60) {
if (seconds > 60 * 60 * 24) {
const val = Math.floor(seconds / 60 / 60 / 24);
return val + " day" + (val !== 1 ? "s" : "") + " ago";
}
const val = Math.floor(seconds / 60 / 60);
return val + " hour" + (val !== 1 ? "s" : "") + " ago";
}
const val = Math.floor(seconds / 60);
return val + " minute" + (val !== 1 ? "s" : "") + " ago";
}
return seconds + " second" + (seconds !== 1 ? "s" : "") + " ago";
}
}
class wikishieldLog {
constructor() {}
/**
* Log a message to the console
* @param {String} text The message to log
*/
log(text) {
console.log(`🛡️WikiShield: ${text}`);
}
}
// </nowiki>
// <nowiki>
class wikishieldAPI {
constructor(api) {
this.api = api;
}
/**
* Edit the given page with the given content and summary
* @param {String} title The title of the page to edit
* @param {String} content The content to edit the page with
* @param {String} summary The edit summary
* @param {Object} params Any additional parameters to pass to the API
* @returns {Promise<Boolean>}
*/
async edit(title, content, summary, params={}) {
if (wikishield.testingMode) {
console.log("Edit", { title, content, summary });
return true;
}
try {
await this.api.postWithEditToken(Object.assign({}, {
"action": "edit",
"title": title,
"text": content,
"summary": summary,
"format": "json",
"tags": "WikiShield script"
}, params));
return true;
} catch (err) {
wikishield.logger.log(`Could not edit page ${title}: ${err}`);
return false;
}
}
/**
* Edit a page to append text
* @param {String} title The title of the page to edit
* @param {String} content Content to append to the page
* @param {String} summary Edit summary to use
* @returns {Promise<Boolean>}
*/
async appendText(title, content, summary) {
if (wikishield.testingMode) {
console.log("Append text", { title, content, summary });
return true;
}
try {
await this.api.postWithEditToken({
"action": "edit",
"title": title,
"appendtext": "\n" + content,
"summary": summary,
"format": "json",
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log(`Could not append text to page ${title}: ${err}`);
return false;
}
}
/**
* Get the content of the given pages
* @param {String} titles The titles of the pages to get, separated by "|"
* @returns {Promise<Object>} The content of the pages
*/
async getText(titles) {
try {
const response = await this.api.get({
"action": "query",
"prop": "revisions",
"titles": titles,
"rvprop": "content",
"rvslots": "*",
"format": "json",
"formatversion": 2
});
const pages = response.query.pages.map(page => {
return [page["title"], page["missing"] ? "" : page.revisions[0].slots.main.content];
});
return pages
.reduce((a, v) => ({...a, [v[0]]: v[1]}), {});
} catch (err) {
wikishield.logger.log(`Could not fetch page ${titles}: ${err}`);
}
}
/**
* Get the content of a single page
* @param {String} title
* @returns {Promise<String>} The page content
*/
async getSinglePageContent(title) {
try {
const data = await this.getText(title);
return data[title];
} catch (err) {
console.log("Could not fetch page", err);
}
}
/**
* Get the content of the given revision id
* @param {Number} revid The revision id to get
* @returns {Promise<String>} The content of the revision
*/
async getTextByRevid(revid) {
try {
const response = await this.api.get({
"action": "query",
"prop": "revisions",
"revids": revid,
"rvprop": "content",
"rvslots": "*",
"format": "json",
"formatversion": 2
});
const page = response.query.pages[0];
return page["missing"] ? "" : page.revisions[0].slots.main.content;
} catch (err) {
wikishield.logger.log(`Could not fetch page with revid ${revid}: ${err}`);
}
}
/**
* Get the difference between two revisions of the given page
* @param {String} title The title of the page
* @param {Number} old_revid The old revision ID
* @param {Number} revid The new revision ID
* @returns {Promise<String>} The difference between the two revisions, in HTML format
*/
async diff(title, old_revid, revid) {
try {
const response = await this.api.get({
"action": "compare",
"fromrev": old_revid,
"torev": revid,
"prop": "diff",
"format": "json",
"formatversion": 2
});
return response.compare.body;
} catch (err) {
wikishield.logger.log(`Could not fetch diff for page ${title}: ${err}`);
}
}
/**
* Get the contributions of the given user
* @param {String} user The user to get contributions for
* @returns {Promise<Array>} The contributions
*/
async contribs(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "usercontribs",
"ucuser": user,
"uclimit": 10,
"ucprop": "title|ids|timestamp|comment|flags|sizediff|tags",
"format": "json",
"formatversion": 2
});
return response.query.usercontribs;
} catch (err) {
wikishield.logger.log(`Could not fetch contributions for user ${user}: ${err}`);
}
}
/**
* Get the edit count of the given users
* @param {String} users The users to get edit counts for, separated by "|"
* @returns {Promise<Array>} The edit counts
*/
async editCount(users) {
try {
const response = await this.api.get({
"action": "query",
"list": "users",
"ususers": users,
"usprop": "editcount",
"format": "json",
"formatversion": 2
});
return response.query.users;
} catch (err) {
wikishield.logger.log(`Could not fetch edit count for users ${users}: ${err}`);
}
}
/**
* Get the filter log of the given user
* @param {String} user The user to get the filter log for
* @returns {Promise<Array>} The filter log
*/
async filterLog(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "filter",
"leuser": user,
"lelimit": 50,
"format": "json",
"formatversion": 2
});
return response.query.logevents;
} catch (err) {
wikishield.logger.log(`Could not fetch filter log for user ${user}: ${err}`);
}
}
/**
* Get the number of times a user has been blocked
* @param {String} user The username to check
* @returns {Promise<Number>} The number of blocks
*/
async getBlockCount(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "block",
"letitle": `User:${user}`,
"leaction": "block/block",
"lelimit": 500,
"format": "json",
"formatversion": 2
});
return response.query.logevents ? response.query.logevents.length : 0;
} catch (err) {
console.log(`Could not fetch block count for user ${user}:`, err);
return 0;
}
}
/**
* Get detailed block history for a user
* @param {String} user The username
* @returns {Promise<Array>} Array of block log entries
*/
async getBlockHistory(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "block",
"letitle": `User:${user}`,
"leaction": "block/block",
"lelimit": 10,
"leprop": "user|timestamp|comment|details",
"format": "json",
"formatversion": 2
});
return response.query.logevents || [];
} catch (err) {
console.log(`Could not fetch block history for user ${user}:`, err);
return [];
}
}
/**
* Get the history of the given page
* @param {String} page The page to get the history for
* @returns {Promise<Array>} The history
*/
async history(page) {
try {
const response = await this.api.get({
"action": "query",
"prop": "revisions",
"titles": page,
"rvprop": "title|ids|timestamp|comment|flags|sizediff|user|tags|size",
"rvlimit": 11,
"format": "json",
"formatversion": 2
});
const revisions = response.query.pages[0].revisions;
for (let i = 0; i < Math.min(10, revisions.length); i++) {
if (i + 1 < revisions.length) {
revisions[i]["sizediff"] = revisions[i].size - revisions[i + 1].size;
} else {
revisions[i]["sizediff"] = revisions[i].size;
}
}
return revisions.splice(0, 10);
} catch (err) {
wikishield.logger.log(`Could not fetch history for page ${page}: ${err}`);
}
}
/**
* Get page protection information
* @param {String} page The page title
* @returns {Promise<Object>} Protection info with level and type
*/
async getPageProtection(page) {
try {
const response = await this.api.get({
"action": "query",
"titles": page,
"prop": "info",
"inprop": "protection",
"format": "json",
"formatversion": 2
});
const pageData = response.query.pages[0];
if (pageData && pageData.protection && pageData.protection.length > 0) {
// Get the highest protection level
const protections = pageData.protection;
let highestLevel = null;
let types = [];
for (const prot of protections) {
types.push(prot.type);
if (prot.level === "sysop") {
highestLevel = "full";
} else if (prot.level === "autoconfirmed" && highestLevel !== "full") {
highestLevel = "semi";
} else if (prot.level === "extendedconfirmed" && highestLevel !== "full") {
highestLevel = "extended";
}
}
return {
protected: true,
level: highestLevel,
types: types
};
}
return { protected: false };
} catch (err) {
console.log(`Could not fetch protection info for ${page}:`, err);
return { protected: false };
}
}
/**
* Get latest revision IDs for multiple pages
* @param {String} pages Pipe-separated list of page titles
* @returns {Promise<Object>} Object mapping page titles to latest revision IDs
*/
async getLatestRevisions(pages) {
try {
// Split pages string into array
const pageArray = pages.split("|");
const result = {};
// Make individual requests for each page to avoid API parameter issues
for (const page of pageArray) {
try {
const response = await this.api.get({
"action": "query",
"titles": page,
"prop": "revisions",
"rvprop": "ids",
"rvlimit": 1,
"format": "json"
});
if (response.query && response.query.pages) {
for (const pageId in response.query.pages) {
const pageData = response.query.pages[pageId];
if (pageData.revisions && pageData.revisions.length > 0 && pageData.title) {
result[pageData.title] = pageData.revisions[0].revid;
}
}
}
} catch (pageErr) {
// Skip pages that fail individually
console.log(`Failed to fetch revision for ${page}: ${pageErr}`);
}
}
return result;
} catch (err) {
wikishield.logger.log(`Could not fetch latest revisions: ${err}`);
return {};
}
}
/**
* Get page metadata including date format and English variant
* @param {String} page The page title
* @returns {Promise<Object>} Object with dateFormat and englishVariant
*/
async getPageMetadata(page) {
try {
const response = await this.api.get({
"action": "query",
"prop": "info",
"titles": page,
"format": "json",
"formatversion": 2
});
const pageInfo = response.query.pages[0];
// Get the page content to check for {{Use dmy dates}} or {{Use mdy dates}}
const contentResponse = await this.api.get({
"action": "parse",
"page": page,
"prop": "wikitext",
"format": "json",
"formatversion": 2
});
const wikitext = contentResponse.parse ? contentResponse.parse.wikitext : "";
// Check for date format templates
let dateFormat = "Unknown";
if (/\{\{Use dmy dates/i.test(wikitext)) {
dateFormat = "dmy (day-month-year)";
} else if (/\{\{Use mdy dates/i.test(wikitext)) {
dateFormat = "mdy (month-day-year)";
}
// Check for English variant templates
let englishVariant = "Unknown";
if (/\{\{Use British English/i.test(wikitext)) {
englishVariant = "British English";
} else if (/\{\{Use American English/i.test(wikitext)) {
englishVariant = "American English";
} else if (/\{\{Use Canadian English/i.test(wikitext)) {
englishVariant = "Canadian English";
} else if (/\{\{Use Australian English/i.test(wikitext)) {
englishVariant = "Australian English";
}
return { dateFormat, englishVariant };
} catch (err) {
wikishield.logger.log(`Could not fetch metadata for page ${page}: ${err}`);
return { dateFormat: "Unknown", englishVariant: "Unknown" };
}
}
/**
* Get recent edits to Wikipedia
* @param {String} namespaces The namespaces to get recent changes for, separated by "|"
* @param {String} since The timestamp to start from
* @returns {Promise<Array>} The recent changes
*/
async recentChanges(namespaces, since) {
try {
const response = await this.api.get({
"action": "query",
"list": "recentchanges",
"rcnamespace": namespaces,
"rclimit": 50,
"rcprop": "title|ids|sizes|flags|user|tags|comment|timestamp",
"rctype": "edit",
"format": "json",
"rcstart": since || "",
"rcdir": since ? "newer" : "older"
});
return response.query.recentchanges;
} catch (err) {
wikishield.logger.log(`Could not fetch recent changes: ${err}`);
}
}
/**
* Get the ORES scores for the given revisions
* @param {String} revids The revision IDs to get ORES scores for, separated by "|"
* @returns {Promise<Object>} The ORES scores
*/
async ores(revids) {
try {
const response = await this.api.get({
"action": "query",
"format": "json",
"formatversion": 2,
"prop": "revisions",
"revids": revids,
"rvprop": "oresscores|ids",
"rvslots": "*"
});
const scores = response.query.pages.map(page => {
return ["goodfaith"] in page["revisions"][0]["oresscores"] ? [
page["revisions"][0]["revid"],
page["revisions"][0]["oresscores"]["goodfaith"]["false"]
] : [ page["revisions"][0]["revid"], 0 ];
});
return scores
.reduce((a, v) => ({...a, [v[0]]: v[1]}), {});
} catch (err) {
wikishield.logger.log(`Could not fetch ORES scores for revision ${revids}: ${err}`);
}
}
/**
* Check if the given users are blocked
* @param {String} users The users to get blocks for, separated by "|"
* @returns {Promise<Object>} The blocks
*/
async usersBlocked(users) {
try {
const response = await this.api.get({
"action": "query",
"list": "blocks",
"bkusers": users,
"bkprop": "id|user|by|timestamp|expiry|reason",
"format": "json",
"formatversion": 2
});
const blocks = {};
users.split("|").forEach(user => blocks[user] = false);
response.query.blocks.forEach(block => blocks[block.user] = !block.partial);
return blocks;
} catch (err) {
wikishield.logger.log(`Could not fetch blocks for users ${users}: ${err}`);
}
}
/**
* Rollback the user's edits
* @param {String} title The title of the page to rollback
* @param {String} user The user to rollback
* @param {String} summary The summary to use for the rollback
* @returns {Promise<Boolean>} Whether the rollback was successful
*/
async rollback(title, user, summary) {
if (wikishield.testingMode) {
console.log("Rollback", { title, user, summary });
return true;
}
try {
await this.api.rollback(title, user, {
"summary": summary,
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Undo a single edit
* @param {Object} edit The edit object to undo
* @param {String} reason The reason for undoing
* @returns {Promise<Boolean>} Whether the undo was successful
*/
async undoEdit(edit, reason) {
if (wikishield.testingMode) {
console.log("Undo", { edit, reason });
return true;
}
try {
// Get the revision ID to undo and the previous revision
const revid = edit.revid;
const title = edit.page.title;
// Use the MediaWiki API to undo the edit
await this.api.postWithToken("csrf", {
"action": "edit",
"title": title,
"undo": revid,
"summary": reason,
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log("Error undoing edit:", err);
return false;
}
}
/**
* Block a user with the given details
* @param {String} user User to block
* @param {String} summary Reason to use when blocking
* @param {String} duration Length of time to block the user
* @param {Boolean} blockCreation Prevent user from creating accounts when blocked
* @param {Boolean} blockEmail Prevent user from sending emails
* @param {Boolean} blockTalk Prevent user from editing their own talk page
* @param {Boolean} anonOnly
* @returns {Promise<Boolean>} Whether the block was successful
*/
async block(user, summary, duration, blockCreation=false, blockEmail=false, blockTalk=false, anonOnly=true) {
if (wikishield.testingMode) {
console.log("Block", { user, summary, duration });
return true;
}
try {
await this.api.postWithToken("csrf", Object.assign(
{
"action": "block",
"user": user,
"expiry": duration,
"reason": summary,
"tags": "WikiShield script"
},
blockCreation ? { "nocreate": "" } : {},
blockEmail ? { "noemail": "" } : {},
blockTalk ? {} : { "allowusertalk": "" },
anonOnly ? { "anononly": "" } : {}
));
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Thank a user for the given edit
* @param {Number} revid
* @returns {Promise<Boolean>} Whether the action was successful
*/
async thank(revid) {
if (wikishield.testingMode) {
console.log("Thank", { revid });
return true;
}
try {
await this.api.postWithToken("csrf", {
"action": "thank",
"rev": revid
});
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Get level and expiry of edit and move protections for a page
* @param {String} page Name of the page to get details for
* @returns {Promise<Object>} The details of the protection
*/
async getProtectionDetails(page) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "protect",
"letitle": page,
"lelimit": 1
});
const details = {
edit: "all", editExpiry: "infinite",
move: "all", moveExpiry: "infinite"
};
if (Object.keys(response).includes("params") && Object.keys(response.params).includes("details")) {
for (const item of response.params.details) {
if (item.type === "edit") {
details.edit = item.level;
details.editExpiry = item.expiry;
}
if (item.type === "move") {
details.move = item.level;
details.moveExpiry = item.expiry;
}
}
}
return details;
} catch (err) {
console.log(err);
}
}
/**
* Protect a page with the given details
* @param {String} page Page to protect
* @param {String} summary Summary to use in protection
* @param {Object} details Levels and expiry of protection
* @returns {Promise<Boolean>} Whether the protection was successful
*/
async protect(page, summary, details) {
if (wikishield.testingMode) {
console.log("Protect", { page, summary, details });
return true;
}
try {
await this.api.postWithToken("csrf", {
"action": "protect",
"title": page,
"reason": summary,
"protections": `edit=${details.edit}|move=${details.move}`,
"expiry": `${details.editExpiry}|${details.moveExpiry}`,
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Make a GET request to the MediaWiki API
* @param {Object} params The parameters for the API request
* @returns {Promise<Object>} The API response
*/
async get(params) {
return await this.api.get(params);
}
/**
* Make a POST request to the MediaWiki API with a token
* @param {String} tokenType The type of token to use
* @param {Object} params The parameters for the API request
* @returns {Promise<Object>} The API response
*/
async postWithToken(tokenType, params) {
return await this.api.postWithToken(tokenType, params);
}
}
// </nowiki>
// <nowiki>
/**
* Puter.js AI Integration for edit analysis
*/
class wikishieldOllamaAI {
constructor(serverUrl, model) {
this.serverUrl = serverUrl || "http://localhost:11434";
this.model = model || "";
this.cache = new Map(); // Cache results to avoid repeated API calls
this.rateLimitDelay = 1000; // Minimum delay between API calls
this.lastCallTime = 0;
this.availableModels = [];
this.activeRequests = new Map(); // Track active requests by revid for cancellation
}
/**
* Fetch available models from Ollama server
* @returns {Promise<Array>} List of available models
*/
async fetchModels() {
try {
const response = await fetch(`${this.serverUrl}/api/tags`, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
});
if (!response.ok) {
throw new Error(`Failed to fetch models: ${response.status} ${response.statusText}`);
}
const data = await response.json();
this.availableModels = data.models || [];
return this.availableModels;
} catch (err) {
console.error('Error fetching Ollama models:', err);
throw err;
}
}
/**
* Test connection to Ollama server
* @returns {Promise<boolean>} True if server is reachable
*/
async testConnection() {
try {
const response = await fetch(`${this.serverUrl}/api/version`, {
method: 'GET'
});
return response.ok;
} catch (err) {
console.error('Ollama connection test failed:', err);
return false;
}
}
/**
* Analyze an edit using Ollama AI
* @param {Object} edit The edit object containing diff, title, user, comment, etc.
* @returns {Promise<Object>} Analysis result with issues array and summary
*/
async analyzeEdit(edit) {
if (!wikishield.options.enableOllamaAI) {
return null;
}
if (!this.model) {
console.error('No Ollama model selected');
return null;
}
// Check cache
const cacheKey = `${edit.revid}`;
if (this.cache.has(cacheKey)) {
return this.cache.get(cacheKey);
}
// Cancel any existing request for this edit
if (this.activeRequests.has(cacheKey)) {
this.activeRequests.get(cacheKey).abort();
this.activeRequests.delete(cacheKey);
}
// Create abort controller for this request
const abortController = new AbortController();
this.activeRequests.set(cacheKey, abortController);
// Rate limiting
const now = Date.now();
const timeSinceLastCall = now - this.lastCallTime;
if (timeSinceLastCall < this.rateLimitDelay) {
await new Promise(resolve => setTimeout(resolve, this.rateLimitDelay - timeSinceLastCall));
}
// Check if request was cancelled during rate limit delay
if (abortController.signal.aborted) {
this.activeRequests.delete(cacheKey);
console.log(`AI analysis cancelled for edit ${cacheKey} (during rate limit)`);
return null;
}
try {
const prompt = this.buildAnalysisPrompt(edit);
const response = await this.callOllamaAI(prompt, abortController.signal);
const analysis = this.parseOllamaResponse(response);
// Cache the result
this.cache.set(cacheKey, analysis);
// Limit cache size
if (this.cache.size > 100) {
const firstKey = this.cache.keys().next().value;
this.cache.delete(firstKey);
}
this.lastCallTime = Date.now();
// Clean up active request
this.activeRequests.delete(cacheKey);
return analysis;
} catch (err) {
// Clean up active request
this.activeRequests.delete(cacheKey);
// If request was aborted, return null instead of error
if (err.name === 'AbortError' || err.message?.includes('aborted')) {
console.log(`AI analysis cancelled for edit ${cacheKey}`);
return null;
}
console.error("Ollama AI analysis error:", err);
return {
hasIssues: false,
issues: [],
summary: "Analysis failed",
error: err.message
};
}
}
/**
* Convert HTML diff to human-readable text format with context
* @param {String} diffHTML The HTML diff from MediaWiki
* @returns {String} Readable text representation
*/
convertDiffToReadable(diffHTML) {
if (!diffHTML) return "No changes visible";
// Create a temporary div to parse HTML
const tempDiv = document.createElement('div');
// Wrap in table since the diff HTML is just table rows
tempDiv.innerHTML = `<table>${diffHTML}</table>`;
let readableLines = [];
let contextBuffer = []; // Buffer for context lines
const MAX_CONTEXT = 2; // Number of context lines before/after changes
// Get all table rows
const rows = tempDiv.querySelectorAll('tr');
for (let i = 0; i < rows.length; i++) {
const row = rows[i];
// Skip line number rows
if (row.querySelector('.diff-lineno')) {
continue;
}
// Get the cells from both sides
const marker = row.querySelector('.diff-marker');
const leftCell = row.querySelector('.diff-side-deleted');
const rightCell = row.querySelector('.diff-side-added');
if (!leftCell || !rightCell) continue;
// Check if this is a context line (unchanged on both sides)
const isContext = leftCell.classList.contains('diff-context') &&
rightCell.classList.contains('diff-context');
if (isContext) {
// Get the text content
const contextText = this.cleanDiffText(leftCell);
// Skip empty lines
if (!contextText.trim() || contextText === '<br />') {
continue;
}
// Add to context buffer
contextBuffer.push(` ${contextText}`);
// Keep only last MAX_CONTEXT lines in buffer
if (contextBuffer.length > MAX_CONTEXT) {
contextBuffer.shift();
}
} else {
// This is a change line
// First, flush context buffer if we have any
if (contextBuffer.length > 0) {
// Add spacing if not first group
if (readableLines.length > 0) {
readableLines.push('');
}
readableLines.push(...contextBuffer);
contextBuffer = [];
}
// Process the change
const markerText = marker?.getAttribute('data-marker') || '';
if (markerText === '−' || leftCell.classList.contains('diff-deletedline')) {
// Deleted line
const text = this.cleanDiffText(leftCell, true);
if (text.trim() && text !== '<br />') {
readableLines.push(`- ${text}`);
}
}
if (markerText === '+' || rightCell.classList.contains('diff-addedline')) {
// Added line
const text = this.cleanDiffText(rightCell, true);
if (text.trim() && text !== '<br />') {
readableLines.push(`+ ${text}`);
}
}
// Clear context buffer after changes (we'll start fresh)
contextBuffer = [];
// Look ahead for immediate context after this change
let contextLinesAfter = 0;
for (let j = i + 1; j < Math.min(i + 1 + MAX_CONTEXT, rows.length); j++) {
const nextRow = rows[j];
const nextLeft = nextRow.querySelector('.diff-side-deleted');
const nextRight = nextRow.querySelector('.diff-side-added');
if (!nextLeft || !nextRight) continue;
const isNextContext = nextLeft.classList.contains('diff-context') &&
nextRight.classList.contains('diff-context');
if (isNextContext) {
const nextText = this.cleanDiffText(nextLeft);
if (nextText.trim() && nextText !== '<br />') {
readableLines.push(` ${nextText}`);
contextLinesAfter++;
}
} else {
break; // Stop at next change
}
}
// Skip the context lines we just added
i += contextLinesAfter;
}
}
// If no changes were found
if (readableLines.length === 0) {
return "No significant changes detected in diff";
}
// Limit output to prevent token explosion
if (readableLines.length > 60) {
const kept = readableLines.slice(0, 60);
kept.push(`\n... (${readableLines.length - 60} more lines omitted)`);
return kept.join('\n');
}
return readableLines.join('\n');
}
/**
* Clean and extract text from a diff cell
* @param {Element} cell The diff cell element
* @param {Boolean} highlightChanges Whether to highlight ins/del tags
* @returns {String} Clean text content
*/
cleanDiffText(cell, highlightChanges = false) {
if (!cell) return '';
const div = cell.querySelector('div');
if (!div) {
const text = cell.textContent || '';
return text.trim();
}
const clone = div.cloneNode(true);
if (highlightChanges) {
// Highlight inline insertions
const insElements = clone.querySelectorAll('ins');
insElements.forEach(ins => {
const text = ins.textContent || '';
ins.replaceWith(`[[${text}]]`);
});
// Highlight inline deletions
const delElements = clone.querySelectorAll('del');
delElements.forEach(del => {
const text = del.textContent || '';
del.replaceWith(`~~${text}~~`);
});
} else {
// For context lines, just remove the tags
const insElements = clone.querySelectorAll('ins');
insElements.forEach(ins => {
ins.replaceWith(ins.textContent || '');
});
const delElements = clone.querySelectorAll('del');
delElements.forEach(del => {
del.replaceWith(del.textContent || '');
});
}
// Get text and clean up
let text = clone.textContent || clone.innerText || '';
// Clean up excessive whitespace but preserve structure
text = text.replace(/\s+/g, ' ').trim();
// Limit line length
if (text.length > 500) {
text = text.substring(0, 500) + '...';
}
return text;
} /**
* Build the prompt for AI analysis
* @param {Object} edit The edit object
* @returns {String} The prompt text
*/
buildAnalysisPrompt(edit) {
const diffHTML = edit.diff;
const sizediff = edit.sizediff || 0;
const oresScore = edit.ores || 0;
const pageTitle = edit.page?.title || 'Unknown';
const userEditCount = edit.user?.editCount || 0;
const warningLevel = edit.user?.warningLevel || '0';
const userName = edit.user?.name || 'Unknown';
const summary = edit.comment || 'No summary';
const isIP = /^\d+\.\d+\.\d+\.\d+$/.test(userName);
// Determine namespace
let namespace = "Main";
let namespaceGuidance = "Main article namespace - STRICT standards. Accuracy, neutrality, verifiability required. Catch vandalism and policy violations.";
if (pageTitle.includes(':')) {
const prefix = pageTitle.split(':')[0];
const namespaceMap = {
'Talk': 'Talk',
'User': 'User',
'User talk': 'User talk',
'Wikipedia': 'Project',
'Wikipedia talk': 'Project talk',
'File': 'File',
'File talk': 'File talk',
'Template': 'Template',
'Template talk': 'Template talk',
'Category': 'Category',
'Category talk': 'Category talk',
'Draft': 'Draft',
'Draft talk': 'Draft talk',
'Help': 'Help',
'Portal': 'Portal'
};
namespace = namespaceMap[prefix] || prefix;
// Provide namespace-specific guidance
const guidanceMap = {
'Talk': "Discussion/conversation page - VERY LENIENT. Opinions and debates are normal and expected. Only flag offensive/attack content.",
'User': "User's personal sandbox - EXTREMELY LENIENT. Users can experiment here. Only flag severe policy violations or attack pages.",
'User talk': "User communication page - VERY LENIENT. Direct messages to users. Only flag if attacking/harassing.",
'Project': "Wikipedia policy/guideline space - MODERATE. Discussion and proposals are normal. Check for disruption.",
'Project talk': "Project discussion page - VERY LENIENT. Policy debates happen here. Opinions expected.",
'Draft': "Draft article space - LENIENT. Work in progress. Missing sources and formatting issues are NORMAL and ACCEPTABLE. Only flag clear vandalism.",
'Draft talk': "Draft discussion page - VERY LENIENT. Feedback and questions are normal.",
'File': "File description pages - MODERATE. Check for copyright issues and appropriate descriptions.",
'File talk': "File discussion page - VERY LENIENT. Questions and discussions are normal.",
'Template': "Template pages - MODERATE. Technical pages. Check for vandalism breaking functionality.",
'Template talk': "Template discussion page - VERY LENIENT. Technical discussions are normal.",
'Category': "Category pages - MODERATE. Check for inappropriate categorization.",
'Category talk': "Category discussion page - VERY LENIENT. Discussions are normal."
};
namespaceGuidance = guidanceMap[namespace] || namespaceGuidance;
}
// Special check for sandbox pages
if (pageTitle.toLowerCase().includes('/sandbox')) {
namespaceGuidance = "User sandbox - MAXIMUM LENIENCY. Test/practice space. Experiments and incomplete content are EXPECTED and FINE. Almost always approve.";
}
// Convert HTML diff to readable text
const readableDiff = this.convertDiffToReadable(diffHTML);
// Determine user experience level and risk profile
let userProfile = "";
if (isIP) {
userProfile = "Anonymous IP editor - could be anyone. IPs have higher vandalism rates but many make good edits. Judge the edit, not the editor.";
} else if (userEditCount === 0) {
userProfile = "Brand new account (0 edits) - First ever edit. Could be legitimate new user or sockpuppet/vandal. Higher scrutiny needed.";
} else if (userEditCount < 10) {
userProfile = "Very new user (< 10 edits) - Still learning. Expect mistakes but assume good faith unless clearly malicious.";
} else if (userEditCount < 50) {
userProfile = "New user (< 50 edits) - Gaining experience. Minor errors expected, likely good faith.";
} else if (userEditCount < 500) {
userProfile = "Intermediate user (50-500 edits) - Should understand basic policies. Mistakes possible but less common.";
} else {
userProfile = "Experienced user (500+ edits) - Knows Wikipedia policies well. Trust their judgment unless clearly problematic.";
}
// Warning level context
let warningContext = "";
switch(warningLevel) {
case '0':
warningContext = "No previous warnings - Clean record. First problematic edit (if any).";
break;
case '1':
warningContext = "Warning level 1 - Minor previous issue. They've been notified once. Still assume good faith.";
break;
case '2':
warningContext = "Warning level 2 - Has been warned twice. Pattern may be emerging. Less benefit of doubt.";
break;
case '3':
warningContext = "Warning level 3 - Serious warnings given. Next vandalism = likely block. Watch closely.";
break;
case '4':
case '4im':
warningContext = "Warning level 4/4im - FINAL WARNING given. Any further vandalism should result in AIV report.";
break;
default:
warningContext = `Warning level ${warningLevel} - Has received warnings previously.`;
}
return `You are an expert Wikipedia anti-vandalism system. Analyze this edit decisively and accurately.
═══════════════════════════════════════════════════════════
📋 EDIT INFORMATION
═══════════════════════════════════════════════════════════
Page: "${pageTitle}"
Namespace: ${namespace} — ${namespaceGuidance}
${namespace.toLowerCase().includes('talk') || namespace === 'User' || namespace === 'Draft' || pageTitle.toLowerCase().includes('sandbox') ? '⚠️ This namespace does NOT require citations or sources!' : ''}
Editor: ${userName}${isIP ? ' (IP)' : ''} • ${userEditCount} edits
${userProfile}
Warnings: Level ${warningLevel} • ${warningContext}
Summary: "${summary}"
${summary === 'No summary' || summary.trim() === '' ? '(No summary - common but slightly suspicious)' :
summary.toLowerCase().includes('test') ? '⚠️ Contains "test" - major vandalism indicator!' :
summary.toLowerCase().match(/revert|rv|undo/) ? '(Appears to be counter-vandalism revert)' :
summary.length > 50 ? '(Detailed - suggests good faith)' : '(Brief but normal)'}
Size: ${sizediff > 0 ? '+' : ''}${sizediff} bytes • ORES Score: ${(oresScore * 100).toFixed(1)}%
🚨 DECEPTIVE SUMMARY CHECK:
Compare "${summary}" to ${Math.abs(sizediff)} byte change:
• "typo/spelling/grammar" should be ~5-20 bytes, NOT 100+
• "nothing/minor/fix" should be tiny, NOT 200+
• "punctuation/comma" should be <50 bytes
• "formatting" should be <500 bytes
If there's a mismatch → MAJOR RED FLAG for hidden vandalism
═══════════════════════════════════════════════════════════
📝 DIFF (What Changed)
═══════════════════════════════════════════════════════════
Legend: " " = unchanged context | "- " = removed | "+ " = added
[[text]] = inline addition | ~~text~~ = inline removal
${readableDiff}
═══════════════════════════════════════════════════════════
🎯 YOUR TASK
═══════════════════════════════════════════════════════════
BE DECISIVE. You are an expert, not a hesitant assistant.
• 85-90% of edits should be APPROVED
• Use "review" <3% of the time (almost never)
• When uncertain → DEFAULT TO APPROVE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 1: CHECK NAMESPACE FIRST
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚨 CRITICAL: Different namespaces have different standards!
📄 MAIN ARTICLES (no prefix):
→ Strict standards. Check for vandalism, unsourced BLP claims, POV
💬 TALK PAGES (Talk:, User talk:, etc.):
→ VERY LENIENT. Opinions/debates are NORMAL and EXPECTED
→ ⛔ DO NOT flag for "unreferenced" or "unsourced" - talk pages don't need sources!
→ Only flag: attacks, harassment, spam
👤 USER PAGES (User:):
→ EXTREMELY LENIENT. Personal space
→ ⛔ DO NOT flag for "unreferenced" or POV - it's their page!
→ Only flag: attack pages, severe violations
📝 SANDBOXES (*/sandbox):
→ MAXIMUM LENIENT. Test space - experiments are EXPECTED
→ Almost always APPROVE
📋 DRAFTS (Draft:):
→ LENIENT. Work in progress
→ ⛔ DO NOT flag for "unreferenced" - they're still adding sources!
→ Missing citations are NORMAL and ACCEPTABLE
→ Only flag: clear vandalism, attacks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 2: IDENTIFY OBVIOUS VANDALISM
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔴 DEFINITE VANDALISM → Rollback:
• Profanity, slurs, offensive language
• Nonsense ("asdfghj", "lololol", gibberish)
• "X was here" graffiti/signatures
• Blanking content without explanation
• Jokes, memes, obviously false info
• Summary says "test" or "vandalism"
• Deceptive summary (claims "typo" but 500 bytes changed)
✅ NOT VANDALISM → Don't flag:
• Poor grammar/writing
• Unsourced but plausible info (except BLP in main)
• Formatting mistakes
• Might be wrong but not OBVIOUSLY false
• Minor POV language
• ANY edit to talk/user/sandbox/draft pages (unless attacks)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 3: IS IT CONSTRUCTIVE?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Is the editor trying to help? Even if imperfect → APPROVE
Constructive signs:
• Fixing typos, grammar, formatting
• Adding relevant info (even without source)
• Improving readability
• Removing errors/vandalism
• Detailed summary
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 4: CHOOSE ACTION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
approve: Edit is acceptable (85-90% of time)
Use when: Good/harmless/minor issues but constructive
When uncertain → DEFAULT TO THIS
thank: Exceptional edit worth recognition
Use when: Adding sources, major improvements, fixing significant errors
review: Human judgment needed [<3% - ALMOST NEVER]
Use ONLY when: Truly impossible to evaluate
NOT for: "might be wrong", "can't verify", "unsure" → those are APPROVE
warn-and-revert: Policy violation but possibly good faith
Use when: Unsourced BLP, promotional content, significant POV, copyright
rollback: Obvious vandalism → immediate removal
Use when: Profanity, nonsense, blanking, test edits, deceptive summary
report-aiv: Report to admins (warning level 4/4im + continuing vandalism)
welcome: New user (<50 edits) making good contributions
report-uaa: Username violation (promotional, impersonating, offensive)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IMPORTANT RULES
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ DO:
• Be decisive - make clear judgments
• Default to APPROVE when uncertain
• Only flag issues you can CLEARLY see in the diff
• Quote specific problematic text
• Check namespace before flagging anything
❌ DON'T:
• Use "review" for uncertainty → use approve instead
• Flag talk/user/draft/sandbox pages for missing sources
• Speculate ("might be promotional" → be specific or don't flag)
• Flag minor issues or formatting
• Over-analyze - trust your judgment
═══════════════════════════════════════════════════════════
📤 RESPONSE FORMAT (JSON)
═══════════════════════════════════════════════════════════
{
"hasIssues": boolean,
"probability": 0-100,
"confidence": "high" | "medium" | "low",
"reasoning": "Brief explanation of your analysis",
"issues": [
{
"type": "vandalism|spam|pov|unsourced|attack|copyright|disruptive|factual-error|policy|username",
"severity": "critical|major|minor",
"description": "Specific issue with quoted evidence"
}
],
"constructive": boolean,
"flagUsername": boolean,
"summary": "One sentence assessment",
"action": "approve|thank|review|warn-and-revert|rollback|report-aiv|welcome|report-uaa",
"recommendation": "Why you chose this action"
}
Analyze now. Be confident and decisive.`;
}
/**
* Call the Puter AI API
* @param {String} prompt The prompt to send
* @param {AbortSignal} signal Optional abort signal for cancellation
* @returns {Promise<String>} The API response text
*/
/**
* Call Ollama AI API
* @param {String} prompt The prompt to send
* @param {AbortSignal} signal Optional abort signal for cancellation
* @returns {Promise<String>} The AI response text
*/
async callOllamaAI(prompt, signal = null) {
try {
const fetchOptions = {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: this.model,
prompt: prompt,
format: { // json schema for response
"type": "object",
"properties": {
"hasIssues": {
"type": "boolean"
},
"probability": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"confidence": {
"type": "string",
"enum": ["high", "medium", "low"]
},
"reasoning": {
"type": "string"
},
"issues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["vandalism", "spam", "pov", "unsourced", "attack", "copyright", "disruptive", "factual-error", "policy", "username"]
},
"severity": {
"type": "string",
"enum": ["critical", "major", "minor"]
},
"description": {
"type": "string"
}
},
"required": ["type", "severity", "description"]
}
},
"constructive": {
"type": "boolean"
},
"flagUsername": {
"type": "boolean"
},
"summary": {
"type": "string"
},
"action": {
"type": "string",
"enum": ["approve", "thank", "review", "warn", "warn-and-revert", "rollback", "report-aiv", "welcome", "report-uaa"]
},
"recommendation": {
"type": "string"
}
},
"required": ["hasIssues", "probability", "confidence", "reasoning", "issues", "constructive", "flagUsername", "summary", "action", "recommendation"]
},
stream: false,
options: {
temperature: 0.1,
top_p: 0.9,
num_predict: 1024
}
})
};
// Add abort signal if provided
if (signal) {
fetchOptions.signal = signal;
}
const response = await fetch(`${this.serverUrl}/api/generate`, fetchOptions);
if (!response.ok) {
throw new Error(`Ollama API error: ${response.status} ${response.statusText}`);
}
const data = await response.json();
if (!data.response) {
throw new Error('Empty response from Ollama');
}
return data.response;
} catch (error) {
throw new Error(`Ollama AI error: ${error?.message || 'Unknown error'}`);
}
}
/**
* Parse the Ollama API response
* @param {String|Object} responseText The response from Ollama AI
* @returns {Object} Parsed analysis object
*/
parseOllamaResponse(responseText) {
try {
// Handle if responseText is an object (shouldn't happen but just in case)
if (typeof responseText === 'object' && responseText !== null) {
if (responseText.content) {
responseText = responseText.content;
} else {
responseText = JSON.stringify(responseText);
}
}
// Ensure responseText is a string
if (typeof responseText !== 'string') {
responseText = String(responseText);
}
// Try to extract JSON from markdown code blocks if present
let jsonText = responseText.trim();
const jsonMatch = jsonText.match(/```json\s*([\s\S]*?)\s*```/);
if (jsonMatch) {
jsonText = jsonMatch[1];
} else {
// Try to find JSON object - be more aggressive about finding the complete object
// Match opening brace to closing brace, handling nested objects/arrays
const startIdx = jsonText.indexOf('{');
if (startIdx !== -1) {
let depth = 0;
let inString = false;
let escapeNext = false;
let foundComplete = false;
for (let i = startIdx; i < jsonText.length; i++) {
const char = jsonText[i];
if (escapeNext) {
escapeNext = false;
continue;
}
if (char === '\\') {
escapeNext = true;
continue;
}
if (char === '"') {
inString = !inString;
continue;
}
if (inString) continue;
if (char === '{' || char === '[') depth++;
if (char === '}' || char === ']') depth--;
if (depth === 0 && i > startIdx) {
jsonText = jsonText.substring(startIdx, i + 1);
foundComplete = true;
break;
}
}
// If we didn't find a complete JSON object, try to fix it
if (!foundComplete) {
jsonText = jsonText.substring(startIdx);
// Count unclosed braces and brackets
let openBraces = 0;
let openBrackets = 0;
inString = false;
escapeNext = false;
for (let i = 0; i < jsonText.length; i++) {
const char = jsonText[i];
if (escapeNext) {
escapeNext = false;
continue;
}
if (char === '\\') {
escapeNext = true;
continue;
}
if (char === '"') {
inString = !inString;
continue;
}
if (inString) continue;
if (char === '{') openBraces++;
if (char === '}') openBraces--;
if (char === '[') openBrackets++;
if (char === ']') openBrackets--;
}
// Add missing closing brackets and braces
while (openBrackets > 0) {
jsonText += ']';
openBrackets--;
}
while (openBraces > 0) {
jsonText += '}';
openBraces--;
}
}
}
}
// Remove JavaScript-style comments that may be in the JSON
// This handles both // single-line and /* multi-line */ comments
jsonText = jsonText
// Remove single-line comments (// ...) but not inside strings
.split('\n')
.map(line => {
// Simple approach: remove // comments if not inside quotes
let inString = false;
let result = '';
for (let i = 0; i < line.length; i++) {
if (line[i] === '"' && (i === 0 || line[i-1] !== '\\')) {
inString = !inString;
}
if (!inString && line[i] === '/' && line[i+1] === '/') {
break; // Stop processing this line
}
result += line[i];
}
return result;
})
.join('\n')
// Remove multi-line comments /* ... */
.replace(/\/\*[\s\S]*?\*\//g, '');
const parsed = JSON.parse(jsonText);
return {
hasIssues: parsed.hasIssues || false,
probability: parsed.probability || 0,
confidence: parsed.confidence || 'low',
reasoning: parsed.reasoning || '',
issues: parsed.issues || [],
constructive: parsed.constructive !== undefined ? parsed.constructive : true,
flagUsername: parsed.flagUsername || false,
summary: parsed.summary || 'No issues detected',
action: parsed.action || 'review',
recommendation: parsed.recommendation || 'No specific recommendation',
rawResponse: responseText
};
} catch (err) {
console.error("Failed to parse Puter response:", err);
console.log("Raw response:", responseText);
// Ensure responseText is a string for fallback processing
const textStr = String(responseText);
// Fallback: try to determine if there are issues from the text
const hasIssues = textStr.toLowerCase().includes('issue') ||
textStr.toLowerCase().includes('problem') ||
textStr.toLowerCase().includes('vandalism');
return {
hasIssues: hasIssues,
probability: hasIssues ? 50 : 10,
confidence: 'low',
issues: [],
summary: hasIssues ? 'Potential issues detected (parsing failed)' : 'No clear issues detected',
action: 'review',
recommendation: 'Manual review recommended due to parsing error',
rawResponse: responseText,
parseError: err.message
};
}
}
/**
* Clear the analysis cache
*/
clearCache() {
this.cache.clear();
}
/**
* Cancel a specific edit analysis request
* @param {String|Number} revid The revision ID to cancel
*/
cancelAnalysis(revid) {
const cacheKey = `${revid}`;
if (this.activeRequests.has(cacheKey)) {
console.log(`Cancelling AI analysis for edit ${cacheKey}`);
this.activeRequests.get(cacheKey).abort();
this.activeRequests.delete(cacheKey);
}
}
/**
* Cancel all active analysis requests
*/
cancelAllAnalyses() {
console.log(`Cancelling ${this.activeRequests.size} active AI analysis requests`);
for (const [revid, controller] of this.activeRequests.entries()) {
controller.abort();
}
this.activeRequests.clear();
}
}
// </nowiki>
// <nowiki>
class wikishieldQueue {
constructor() {
this.queue = [];
this.previousItems = [];
this.editsSince = "";
this.lastRevid = 0;
this.currentEdit = null;
this.backoff = 2000;
}
/**
* Fetch recent changes from the API
*/
async fetchRecentChanges() {
if (this.queue.length >= wikishield.options.maxQueueSize) {
window.setTimeout(this.fetchRecentChanges.bind(this), wikishield.options.refreshTime);
return;
}
try {
this.editsSince = wikishield.util.utcString(new Date());
const namespaceString = wikishield.options.namespacesShown.join("|");
const recentChanges = (await wikishield.api.recentChanges(namespaceString))
.filter(edit => edit.revid > this.lastRevid);
this.lastRevid = Math.max(...recentChanges.map(edit => edit.revid));
const usersToFetch = recentChanges
.map(edit => mw.util.isIPv6Address(edit.user) ? edit.user.toUpperCase() : edit.user);
const editCounts = (await wikishield.api.editCount(usersToFetch.join("|")))
.filter(user => user["invalid"] || user["editcount"] <= wikishield.options.maxEditCount);
const dict = editCounts
.reduce((a, v) => ({...a, [v.name]: v.editcount}), {});
const warnings = (await wikishield.api.getText(
usersToFetch.map(user => `User_talk:${user}`).join("|")
));
const blocks = await wikishield.api.usersBlocked(usersToFetch.join("|"));
const ores = (await wikishield.api.ores(recentChanges.map(edit => edit.revid).join("|")));
recentChanges
.filter(edit => edit.user in dict)
.filter(edit => (ores[edit.revid] || 0) >= wikishield.options.minimumORESScore || wikishield.highlighted.has(edit.user))
.filter(edit => !wikishield.whitelist.has(edit.user))
.forEach(edit => {
const talkPageText = warnings[`User talk:${edit.user}`] || "";
this.addQueueItem(
edit,
dict[edit.user] || -1,
this.getWarningLevel(talkPageText),
ores[edit.revid] || 0,
blocks[edit.user] || false,
talkPageText.trim() === "" // Check if talk page is empty
);
});
// Check for outdated edits in queue
await this.checkForOutdatedEdits();
this.backoff = wikishield.options.refreshTime;
} catch (err) {
console.log("Error while fetching recent changes", err);
this.backoff = Math.min(this.backoff * 2, 120000);
}
window.setTimeout(this.fetchRecentChanges.bind(this), this.backoff);
}
/**
* Add an edit to the queue
* @param {Object} edit The edit to add
* @param {Number} count The edit count of the user
* @param {String} warningLevel The warning level of the user
* @param {Number} ores The ORES score of the edit
* @param {Boolean} blocked Whether the user is blocked
* @param {Boolean} emptyTalkPage Whether the user's talk page is empty
*/
async addQueueItem(edit, count, warningLevel, ores, blocked, emptyTalkPage) {
if (this.queue.filter(e => e.revid === edit.revid).length > 0 ||
this.previousItems.filter(e => e.revid === edit.revid).length > 0) {
return;
}
const item = await this.generateQueueItem(edit, count, warningLevel, ores, blocked, null, null, emptyTalkPage);
this.queue.push(item);
const sorted = this.queue.splice(1)
.sort((a, b) => {
const bScore = b.ores + (wikishield.highlighted.has(b.user.name) ? 100 : 0);
const aScore = a.ores + (wikishield.highlighted.has(a.user.name) ? 100 : 0);
return bScore - aScore;
});
this.queue = [this.queue[0], ...sorted];
// Only auto-select first edit if no edit is currently selected
if (this.queue.length === 1 && !this.currentEdit) {
this.currentEdit = this.queue[0];
}
// Play sound alert if ORES score is above threshold
if (wikishield.options.enableSoundAlerts && ores >= wikishield.options.soundAlertORESScore) {
this.playAlertSound();
}
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Play an alert sound for high ORES scores
*/
playAlertSound() {
try {
// Create a simple beep sound using Web Audio API
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const oscillator = audioContext.createOscillator();
const gainNode = audioContext.createGain();
oscillator.connect(gainNode);
gainNode.connect(audioContext.destination);
oscillator.frequency.value = 800; // Frequency in Hz
oscillator.type = 'sine';
gainNode.gain.setValueAtTime(0.3, audioContext.currentTime);
gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.5);
oscillator.start(audioContext.currentTime);
oscillator.stop(audioContext.currentTime + 0.5);
} catch (err) {
console.log("Could not play alert sound:", err);
}
}
/**
* Play a pleasant notification sound (two-tone chime)
*/
playNotificationSound() {
try {
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
// First tone (higher pitch)
const osc1 = audioContext.createOscillator();
const gain1 = audioContext.createGain();
osc1.connect(gain1);
gain1.connect(audioContext.destination);
osc1.frequency.value = 660; // E5
osc1.type = 'sine';
gain1.gain.setValueAtTime(0.2, audioContext.currentTime);
gain1.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.2);
osc1.start(audioContext.currentTime);
osc1.stop(audioContext.currentTime + 0.2);
// Second tone (lower pitch, slightly delayed)
const osc2 = audioContext.createOscillator();
const gain2 = audioContext.createGain();
osc2.connect(gain2);
gain2.connect(audioContext.destination);
osc2.frequency.value = 523; // C5
osc2.type = 'sine';
gain2.gain.setValueAtTime(0.2, audioContext.currentTime + 0.15);
gain2.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.4);
osc2.start(audioContext.currentTime + 0.15);
osc2.stop(audioContext.currentTime + 0.4);
} catch (err) {
console.log("Could not play notification sound:", err);
}
}
/**
* Check and remove edits that have been superseded by newer edits on the same page
*/
async checkForOutdatedEdits() {
if (this.queue.length === 0) return;
// Get all unique page titles from queue, filtering out invalid ones
const allPageTitles = [...new Set(this.queue.map(item => item.page.title))];
const pageTitles = allPageTitles.filter(title => {
// Filter out titles that look like URLs or contain invalid characters
const isValid = title &&
!title.includes('?') &&
!title.includes('&') &&
!title.startsWith('http') &&
!title.includes('index.php');
if (!isValid) {
console.log(`Skipping invalid page title: ${title}`);
}
return isValid;
});
if (pageTitles.length === 0) return;
// Fetch latest revision for each page
const latestRevisions = await wikishield.api.getLatestRevisions(pageTitles.join("|"));
// Track items to remove
const itemsToRemove = [];
for (const item of this.queue) {
const latestRevid = latestRevisions[item.page.title];
if (latestRevid && latestRevid > item.revid) {
// This edit has been superseded
itemsToRemove.push(item);
console.log(`Removing outdated edit: ${item.page.title} (rev ${item.revid}, latest is ${latestRevid})`);
}
}
// Remove outdated items
if (itemsToRemove.length > 0) {
for (const item of itemsToRemove) {
const index = this.queue.indexOf(item);
if (index > -1) {
this.queue.splice(index, 1);
wikishield.interface.removeQueueItem(item.revid);
}
}
// Update current edit if it was removed
if (itemsToRemove.includes(this.currentEdit)) {
this.currentEdit = this.queue.length > 0 ? this.queue[0] : null;
}
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
}
/**
* Generate a queue item from an edit
* @param {Object} edit The edit to generate the queue item from
* @param {Number} count The edit count of the user
* @param {String} warningLevel The warning level of the user
* @param {Number} ores The ORES score of the edit
* @param {Boolean} blocked Whether the user is blocked
* @param {Boolean} emptyTalkPage Whether the user's talk page is empty
* @returns {Object} The queue item
*/
async generateQueueItem(edit, count, warningLevel, ores, blocked, contribs, history, emptyTalkPage) {
contribs = contribs || await wikishield.api.contribs(edit.user);
history = history || await wikishield.api.history(edit.title);
const diff = await wikishield.api.diff(edit.title, edit.old_revid || edit.parentid, edit.revid);
const metadata = await wikishield.api.getPageMetadata(edit.title);
const queueItem = {
page: {
title: edit.title,
history: history,
dateFormat: metadata.dateFormat,
englishVariant: metadata.englishVariant
},
user: {
name: edit.user,
contribs: contribs,
editCount: count,
warningLevel: warningLevel,
originalWarningLevel: warningLevel, // Store the warning level at time of queueing
blocked: blocked,
emptyTalkPage: emptyTalkPage !== undefined ? emptyTalkPage : false
},
ores: ores,
revid: edit.revid,
timestamp: edit.timestamp,
comment: edit.comment,
minor: "minor" in edit, // Store whether this is a minor edit (check if property exists)
sizediff: (edit["newlen"] ? edit.newlen - edit.oldlen : edit.sizediff) || 0,
diff: diff,
tags: edit.tags,
reviewed: false,
aiAnalysis: null // Will be populated asynchronously
};
// Perform AI analysis asynchronously if enabled
if (wikishield.options.enableOllamaAI && wikishield.ollamaAI) {
// Don't await - let it run in background and update when ready
wikishield.ollamaAI.analyzeEdit(queueItem).then(analysis => {
queueItem.aiAnalysis = analysis;
// Update UI if this edit is currently being displayed
if (this.currentEdit && this.currentEdit.revid === queueItem.revid) {
wikishield.interface.updateAIAnalysisDisplay(analysis);
}
}).catch(err => {
console.error("AI analysis failed:", err);
queueItem.aiAnalysis = {
hasIssues: false,
error: err.message
};
});
}
return queueItem;
}
/**
* Given the text of a user talk page, get the warning level of the user
* @param {String} text The text of the user talk page
* @returns {String} The warning level of the user
*/
getWarningLevel(text) {
const monthSections = text.split(/(?=== ?[\w\d ]+ ?==)/g);
for (let section of monthSections) {
if (new RegExp("== ?" + wikishield.util.monthSectionName() + " ?==").test(section)) {
// Only match templates with numbered warning levels (e.g., uw-vandalism1, uw-test4im)
// Excludes templates without numbers like uw-minor
const templates = section.match(/<\!-- Template:[\w-]+?(\d(?:i?m)?) -->/g);
if (templates === null) {
return "0";
}
const filteredTemplates = templates.map(t => {
const match = t.match(/<\!-- Template:[\w-]+?(\d(?:i?m)?) -->/);
return match ? match[1] : "0";
});
return filteredTemplates.sort()[filteredTemplates.length - 1].toString();
}
}
return "0";
}
/**
* Get detailed warning history from user talk page
* @param {String} text - User talk page content
* @returns {Array} Array of warning objects with template name, level, and timestamp
*/
getWarningHistory(text) {
const warnings = [];
const monthSections = text.split(/(?=== ?[\w\d ]+ ?==)/g);
const currentMonthName = wikishield.util.monthSectionName();
for (let section of monthSections) {
// Check if this is the current month section
const isCurrentMonth = new RegExp("== ?" + currentMonthName + " ?==").test(section);
// Only process warnings from the current month (those that count toward warning level)
if (!isCurrentMonth) {
continue;
}
// Extract section title (month/year)
const sectionMatch = section.match(/== ?([\w\d ]+) ?==/);
const sectionTitle = sectionMatch ? sectionMatch[1] : "Unknown";
// Find all warning templates with their full context
const templateMatches = section.matchAll(/<\!-- Template:([\w-]+?)(\d(?:i?m)?) -->(.+?)(?=<\!-- Template:|$)/gs);
for (let match of templateMatches) {
const templateName = match[1]; // e.g., "uw-vandalism"
const level = match[2]; // e.g., "1", "4", "4im"
const content = match[3]; // Content after template
// Try to extract timestamp (looks for signature pattern)
// Extract the timestamp and remove any HTML tags
const timestampMatch = content.match(/(\d{2}:\d{2}.*?\d{4} \(UTC\))/);
let timestamp = timestampMatch ? timestampMatch[1] : null;
if (timestamp) {
// Remove any HTML tags from the timestamp
timestamp = timestamp.replace(/<[^>]*>/g, '');
}
// Extract username from signature (look for User: or User talk: links)
let username = null;
const userLinkMatch = content.match(/\[\[User(?:[ _]talk)?:([^\]|]+)/i);
if (userLinkMatch) {
username = userLinkMatch[1].trim();
}
// Try to extract article name if present
const articleMatch = content.match(/\[\[([^\]]+?)\]\]/);
const article = articleMatch ? articleMatch[1] : null;
warnings.push({
template: templateName,
level: level,
timestamp: timestamp,
username: username,
article: article,
section: sectionTitle,
isCurrentMonth: isCurrentMonth
});
}
}
// Warnings are already from current month, just return them in order
return warnings;
}
/**
* Set the current edit to the next item in the queue
*/
nextItem() {
if (this.queue.length === 0) {
return;
}
// Cancel AI analysis for the edit we're leaving
if (this.queue[0] && wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAnalysis(this.queue[0].revid);
}
if (!this.queue[0].reviewed) {
this.queue[0].reviewed = true;
wikishield.statistics.reviewed += 1;
wikishield.saveStats(wikishield.statistics);
}
// Auto-welcome the user we're leaving (before removing from queue)
const leavingEdit = this.queue[0];
if (leavingEdit) {
this.checkAndAutoWelcome(leavingEdit);
this.checkAndAutoReportUAA(leavingEdit);
}
const removedElem = this.queue.shift();
this.previousItems.push(removedElem);
wikishield.interface.removeQueueItem(removedElem.revid);
if (this.previousItems.length > 50) {
this.previousItems.shift();
}
this.currentEdit = this.queue.length ? this.queue[0] : null;
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Set the current edit to the previous item in the queue
*/
prevItem() {
if (this.previousItems.length === 0) {
return;
}
// Cancel AI analysis for the edit we're leaving
if (this.currentEdit && wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAnalysis(this.currentEdit.revid);
}
// Auto-welcome the user we're leaving (before changing currentEdit)
if (this.currentEdit) {
this.checkAndAutoWelcome(this.currentEdit);
this.checkAndAutoReportUAA(this.currentEdit);
}
this.queue.unshift(this.previousItems.pop());
this.currentEdit = this.queue[0];
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Check if user should be auto-welcomed and do so if needed
* @param {Object} edit The edit object to check
*/
async checkAndAutoWelcome(edit) {
// Only auto-welcome registered users (not IPs) with empty talk pages
if (!edit.user || !edit.user.name || mw.util.isIPAddress(edit.user.name)) {
return;
}
// Check if user is in the no-auto-welcome list
if (wikishield.noAutoWelcomeList.has(edit.user.name)) {
return;
}
// Check if talk page appears empty
if (!edit.user.emptyTalkPage) {
return;
}
// Only auto-welcome if the edit was constructive (according to AI analysis)
if (edit.aiAnalysis && edit.aiAnalysis.constructive === false) {
console.log(`Skipping auto-welcome for ${edit.user.name} - edit not constructive`);
return;
}
// Double-check by fetching the talk page to see if it exists
try {
const talkPageContent = await wikishield.api.getSinglePageContent(`User talk:${edit.user.name}`);
// Check if the talk page exists at all (not whether it's blank)
// If the page doesn't exist, talkPageContent will be an empty string
// If the page exists (even if blank), talkPageContent will not be an empty string
if (talkPageContent !== "") {
// Talk page exists, update the flag
edit.user.emptyTalkPage = false;
return;
}
// Show confirmation dialog
const confirmed = await wikishield.interface.showConfirmationDialog(
"Auto-welcome User",
`Would you like to welcome <span class="confirmation-modal-username">${wikishield.util.escapeHtml(edit.user.name)}</span>?<br><br>
<span style="font-size: 0.9em; color: #888;">Editing: <strong>${wikishield.util.escapeHtml(edit.page.title)}</strong></span>`,
edit.user.name
);
if (!confirmed) {
console.log(`Auto-welcome cancelled for: ${edit.user.name}`);
// Add user to no-auto-welcome list
wikishield.noAutoWelcomeList.add(edit.user.name);
return;
}
// Show progress notification
const progressBar = new wikishieldProgressBar();
progressBar.set("Auto-welcoming...", 0.5, "var(--main-blue)");
// Determine which template to use based on username characters and mentorship
// Check if username contains non-Latin characters (takes precedence)
const hasNonLatin = /[^\u0000-\u007F\u0080-\u00FF\u0100-\u017F\u0180-\u024F]/.test(edit.user.name);
let template;
if (hasNonLatin) {
template = "Latin";
} else {
// Check if user is a mentee (only if not non-Latin)
const isMentee = await wikishield.checkIfMentee(edit.user.name);
template = isMentee ? "Mentor" : "Default";
}
// Auto-welcome with appropriate template
await wikishield.welcomeUser(edit.user.name, template);
// Update progress to complete
progressBar.set(`Welcomed ${edit.user.name}`, 1, "var(--main-green)");
console.log(`Auto-welcomed user: ${edit.user.name}`);
} catch (err) {
console.log("Error during auto-welcome check:", err);
}
}
/**
* Check if user should be reported to UAA based on username
* @param {Object} edit The edit object to check
*/
async checkAndAutoReportUAA(edit) {
// Only check registered users (not IPs)
if (!edit.user || !edit.user.name || mw.util.isIPAddress(edit.user.name)) {
return;
}
// Check if user is in the no-auto-welcome list (also used for UAA to avoid duplicate prompts)
if (wikishield.noAutoWelcomeList.has(edit.user.name)) {
return;
}
// Check if AI flagged the username
if (!edit.aiAnalysis || !edit.aiAnalysis.flagUsername) {
return;
}
// Show confirmation dialog
const confirmed = await wikishield.interface.showConfirmationDialog(
"Report Username to UAA",
`The username <span class="confirmation-modal-username">${wikishield.util.escapeHtml(edit.user.name)}</span> may violate Wikipedia's username policy.<br><br>
<span style="font-size: 0.9em; color: #888;">Would you like to report it to <a href="https://en.wikipedia.org/wiki/Wikipedia:Usernames_for_administrator_attention" target="_blank" style="color: #0645ad;">Usernames for administrator attention (UAA)</a>?</span><br><br>
<strong>AI Assessment:</strong> ${wikishield.util.escapeHtml(edit.aiAnalysis.recommendation || 'Username may be promotional, impersonation, or otherwise inappropriate.')}`,
edit.user.name
);
if (!confirmed) {
console.log(`UAA report cancelled for: ${edit.user.name}`);
// Add user to no-auto-welcome list to avoid future prompts
wikishield.noAutoWelcomeList.add(edit.user.name);
return;
}
// Open UAA report interface
try {
// Use the existing event system to trigger UAA report
const reportEvent = wikishield.events.events.reportUserUAA;
if (reportEvent && reportEvent.func) {
await reportEvent.func(edit);
}
// Add user to no-auto-welcome list after reporting
wikishield.noAutoWelcomeList.add(edit.user.name);
} catch (err) {
console.log("Error during auto UAA report:", err);
}
}
/**
* Clear the queue
*/
delete() {
// Cancel all active AI analyses
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
this.queue = [];
this.currentEdit = null;
wikishield.interface.clearQueue();
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Load an edit from the user contributions list
* @param {Number} revid
*/
async loadFromContribs(revid) {
const edit = this.currentEdit.user.contribs.filter(e => e.revid === Number(revid))[0];
const diffContainer = wikishield.interface.elem("#diff-container");
diffContainer.innerHTML = ``;
this.currentEdit = await this.generateQueueItem(
edit,
this.currentEdit.user.editCount,
this.currentEdit.user.warningLevel,
null,
this.currentEdit.user.blocked,
null,
null,
this.currentEdit.user.emptyTalkPage
);
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Load an edit from the page history list
* @param {Number} revid
*/
async loadFromHistory(revid) {
const edit = this.currentEdit.page.history.filter(e => e.revid === Number(revid))[0];
edit["title"] = this.currentEdit.page.title;
const diffContainer = wikishield.interface.elem("#diff-container");
diffContainer.innerHTML = ``;
const results = await Promise.all([
wikishield.api.editCount(edit.user),
wikishield.api.getSinglePageContent(`User talk:${edit.user}`),
wikishield.api.contribs(edit.user),
wikishield.api.history(edit.title)
]);
const talkPageText = results[1];
this.currentEdit = await this.generateQueueItem(
edit,
results[0][0].editcount,
this.getWarningLevel(talkPageText),
null, false, results[2], results[3],
talkPageText.trim() === ""
);
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
}
// </nowiki>
// <nowiki>
const wikishieldEventData = {
conditions: {
"operatorNonAdmin": {
desc: "You are not an admin",
check: (_) => !wikishield.rights.block
},
"operatorAdmin": {
desc: "You are an admin",
check: (_) => wikishield.rights.block
},
"atFinalWarning": {
desc: "User already has a final warning (before any new warnings)",
check: (edit) => {
// Check the ORIGINAL warning level from when edit was first queued
// This ensures we only report if they ALREADY had a final warning
// Not if they just received one in this action sequence
const original = edit.user.originalWarningLevel?.toString() || edit.user.warningLevel.toString();
const current = edit.user.warningLevel.toString();
console.log(`[atFinalWarning] User: ${edit.user.name}, Original: ${original}, Current: ${current}`);
return ["4", "4im"].includes(original);
}
}
},
welcomeTemplates: {
"Default": "{{subst:Welcome}} ~~~~",
"Basic": "{{subst:W-basic}}",
"Links": "{{subst:W-graphical}}",
"Latin": "{{subst:welcome non-latin|LuniZunie}} ~~~~",
"COI": "{{subst:welcome-coi}} ~~~~",
"Mentor": "{{subst:Mentor welcome-autosign}}"
}
};
class wikishieldEventManager {
constructor() {
this.events = {
prevEdit: {
description: "Go to the previous edit in the queue",
icon: "fas fa-arrow-left",
runWithoutEdit: true,
func: () => {
wikishield.queue.prevItem();
}
},
nextEdit: {
description: "Go to the next edit in the queue",
icon: "fas fa-arrow-right",
func: () => {
wikishield.queue.nextItem();
}
},
deleteQueue: {
description: "Remove all items from the queue",
icon: "fas fa-trash-can",
runWithoutEdit: true,
func: () => {
wikishield.queue.delete();
}
},
openSettings: {
description: "Open the settings interface",
icon: "fas fa-gear",
runWithoutEdit: true,
func: () => {
wikishield.interface.settings.openSettings();
}
},
openUserPage: {
description: "Open user page in a new tab",
icon: "fas fa-circle-user",
func: () => {
window.open(wikishield.util.pageLink(`User:${this.getRelevantEdit().user.name}`));
}
},
openUserTalk: {
description: "Open user talk page in a new tab",
icon: "fas fa-comment",
func: () => {
window.open(wikishield.util.pageLink(`User talk:${this.getRelevantEdit().user.name}`));
}
},
openUserContribs: {
description: "Open user contributions page in a new tab",
icon: "fas fa-list",
func: () => {
window.open(wikishield.util.pageLink(`Special:Contributions/${this.getRelevantEdit().user.name}`));
}
},
openFilterLog: {
description: "Open user filter log in a new tab",
icon: "fas fa-filter",
func: () => {
const encodedName = wikishield.util.encodeuri(this.getRelevantEdit().user.name);
window.open(wikishield.util.pageLink(
`?title=Special:AbuseLog&wpSearchUser=${encodedName}`,
true
));
}
},
addToWhitelist: {
description: "Add user to the whitelist",
icon: "fas fa-thumbs-up",
includeInProgress: true,
progressDesc: "Whitelisting...",
func: () => {
wikishield.whitelist.add(this.getRelevantEdit().user.name);
}
},
highlight: {
description: "Highlight this user's contributions",
icon: "fas fa-highlighter",
includeInProgress: true,
progressDesc: "Highlighting...",
func: () => {
wikishield.highlighted.add(this.getRelevantEdit().user.name);
}
},
openPage: {
description: "Open page being edited in new tab",
icon: "fas fa-file-lines",
func: () => {
window.open(wikishield.util.pageLink(this.getRelevantEdit().page.title));
}
},
openTalk: {
description: "Open talk page in new tab",
icon: "fas fa-comments",
func: () => {
const pageTitle = this.getRelevantEdit().page.title.split(":");
let talkNamespace = "Talk";
if (pageTitle.length > 1) {
talkNamespace = pageTitle[0].toLowerCase().includes("talk")
? pageTitle[0]
: pageTitle[0] + " talk";
}
window.open(wikishield.util.pageLink(`${talkNamespace}:${pageTitle.length === 1 ? pageTitle[0] : pageTitle[1]}`));
}
},
openHistory: {
description: "Open page history in new tab",
icon: "fas fa-clock-rotate-left",
func: () => {
window.open(wikishield.util.pageLink(`Special:PageHistory/${this.getRelevantEdit().page.title}`));
}
},
openRevision: {
description: "Open revision in new tab",
icon: "fas fa-pen-to-square",
func: () => {
window.open(wikishield.util.pageLink(`Special:PermanentLink/${this.getRelevantEdit().revid}`));
}
},
openDiff: {
description: "Open diff in new tab",
icon: "fas fa-code-commit",
func: () => {
window.open(wikishield.util.pageLink(`Special:Diff/${this.getRelevantEdit().revid}`));
}
},
thankUser: {
description: "Thank user",
icon: "fas fa-user-check",
includeInProgress: true,
progressDesc: "Thanking...",
func: async () => {
const edit = this.getRelevantEdit();
// Check if user is an IP address
if (mw.util.isIPAddress(edit.user.name)) {
// For IP users, leave a thank you message on their talk page
const talkPageName = `User talk:${edit.user.name}`;
const talkPageContent = await wikishield.api.getSinglePageContent(talkPageName) || "";
await wikishield.api.edit(
talkPageName,
talkPageContent + `\n{{subst:Thanks-autosign}}`,
`Thanking for edit to [[${edit.page.title}]] ([[WP:WikiShield|WikiShield]])`
);
} else {
// For registered users, use the API thank function
await wikishield.api.thank(edit.revid);
}
}
},
rollback: {
description: "Rollback edits",
icon: "fas fa-backward",
includeInProgress: true,
progressDesc: "Rolling back...",
func: async (params={}) => {
return await wikishield.revert(this.getRelevantEdit(), params.label || "");
}
},
rollbackGoodFaith: {
description: "Rollback edits (good faith)",
icon: "fas fa-arrow-rotate-left",
parameters: [
{
title: "Summary (optional)",
id: "summary",
type: "text"
}
],
includeInProgress: true,
progressDesc: "Rolling back...",
func: async (params) => {
return await wikishield.revert(this.getRelevantEdit(), params["summary"] || "", true);
}
},
undo: {
description: "Undo this edit only",
icon: "fas fa-undo",
parameters: [
{
title: "Reason",
id: "reason",
type: "text"
}
],
includeInProgress: true,
progressDesc: "Undoing...",
func: async (params) => {
const edit = this.getRelevantEdit();
const reason = params["reason"] || "Undoing edit";
return await wikishield.api.undoEdit(edit, reason);
}
},
warn: {
description: "Warn user",
icon: "fas fa-triangle-exclamation",
parameters: [
{
title: "Warning type",
id: "warningType",
type: "choice",
options: Object.keys(wikishieldData.warnings)
},
{
title: "Level",
id: "level",
type: "choice",
options: [ "auto", 1, 2, 3, 4, 5 ]
}
],
includeInProgress: true,
progressDesc: "Warning...",
needsContinuity: true,
validateParameters: (params) => {
// If custom templates are provided, skip validation
if (params["warningTemplates"]) {
return true;
}
return params["level"] === "auto" ||
wikishieldData.warnings[params["warningType"]].templates.length >= params["level"];
},
func: async (params) => {
// Use custom templates if provided, otherwise use standard warning set
let warningTemplates, warningLabel, requiresArticle;
if (params["warningTemplates"]) {
// Custom warning from warn menu
warningTemplates = params["warningTemplates"];
warningLabel = params["warningLabel"];
requiresArticle = params["requiresArticle"];
} else {
// Standard warning from revert menu
const warningSet = params["warningType"] && Object.keys(wikishieldData.warnings).includes(params["warningType"])
? wikishieldData.warnings[params["warningType"]]
: wikishieldData.warnings["Vandalism"];
warningTemplates = warningSet.templates;
warningLabel = null; // Will use default behavior in warnUser
requiresArticle = true;
}
// Store the original warning level before warning
const originalLevel = this.getRelevantEdit().user.warningLevel;
await wikishield.warnUser(
this.getRelevantEdit().user.name,
warningTemplates,
params["level"] || "auto",
requiresArticle !== false ? this.getRelevantEdit().page.title : null,
this.getRelevantEdit().revid
);
// Return whether they were already at final warning
return {
wasAtFinalWarning: ["4", "4im"].includes(originalLevel.toString())
};
}
},
reportToAIV: {
description: "Report user to AIV",
icon: "fas fa-flag",
parameters: [
{
title: "Report message",
id: "reportMessage",
type: "choice",
options: [
"Vandalism past final warning",
"Vandalism-only account",
"Long-term abuse"
]
}
],
includeInProgress: true,
progressDesc: "Reporting...",
func: async (params) => {
await wikishield.reportToAIV(
this.getRelevantEdit().user.name,
params["reportMessage"]
);
}
},
reportToUAA: {
description: "Report user to UAA",
icon: "fas fa-flag",
parameters: [
{
title: "Report message",
id: "reportMessage",
type: "choice",
options: [
"Disruptive username",
"Offensive username",
"Promotional username",
"Misleading username"
]
}
],
includeInProgress: true,
progressDesc: "Reporting...",
func: async (params) => {
await wikishield.reportToUAA(
this.getRelevantEdit().user.name,
params["reportMessage"]
);
}
},
requestProtection: {
description: "Request protection",
icon: "fas fa-shield",
parameters: [
{
title: "Level",
id: "level",
type: "choice",
options: [
"Semi-protection",
"Extended-confirmed protection",
"Full protection",
"Pending changes protection"
]
},
{
title: "Reason",
id: "reason",
type: "choice",
options: [
"Persistent vandalism",
"Edit warring",
"BLP violations",
"Sockpuppetry"
]
}
],
includeInProgress: true,
progressDesc: "Requesting protection...",
func: async (params) => {
await wikishield.requestProtection(
this.getRelevantEdit().page.title,
params["level"],
params["reason"]
);
}
},
block: {
description: "Block user",
icon: "fas fa-ban",
parameters: [
{
title: "Block summary",
id: "blockSummary",
type: "choice",
options: [
"[[Wikipedia:Vandalism|Vandalism]]",
"[[Wikipedia:DISRUPTONLY|Vandalism-only account]]",
"Long-term abuse"
]
},
{
title: "Duration",
id: "duration",
type: "choice",
options: [
"31 hours",
"1 week",
"2 weeks",
"1 month",
"3 months",
"6 months",
"1 year",
"3 years",
"infinite"
]
}
],
includeInProgress: true,
progressDesc: "Blocking...",
func: async (params) => {
await wikishield.api.block(
this.getRelevantEdit().user.name,
params["blockSummary"],
params["duration"],
true, false, false, true
);
}
},
protect: {
description: "Protect page",
icon: "fas fa-lock",
includeInProgress: true,
progressDesc: "Protecting...",
func: async () => {
}
},
welcome: {
description: "Welcome user",
icon: "fas fa-door-open",
parameters: [
{
title: "Template",
id: "template",
type: "choice",
options: Object.keys(wikishieldEventData.welcomeTemplates)
}
],
includeInProgress: true,
progressDesc: "Welcoming...",
func: async (params) => {
console.log("here");
await wikishield.welcomeUser(
this.getRelevantEdit().user.name,
params["template"]
);
}
}
};
}
/**
* Returns the edit events should be actioned on
*/
getRelevantEdit() {
return wikishield.tempCurrentEdit || wikishield.queue.currentEdit;
}
/**
* When a button is clicked, trigger the given event
* @param {HTMLElement} elem Button to add listener to
* @param {String} event Event to trigger
* @param {Boolean} runWithoutEdit Whether this event can be run with no edit selected
*/
linkButton(elem, event, runWithoutEdit) {
elem.addEventListener("click", () => {
wikishield.interface.selectedMenu = null;
wikishield.interface.updateMenuElements();
if (runWithoutEdit) {
this.events[event].func();
} else {
wikishield.executeScript({
actions: [
{
name: event,
params: {}
}
]
});
}
});
}
}
// </nowiki>
// <nowiki>
const wikishieldSettingsAllowedKeys = [
"!", "@", "#", "$", "%", "^", "&", "*", "(", ")",
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0",
"q", "w", "e", "r", "t", "y", "u", "i", "o", "p",
"a", "s", "d", "f", "g", "h", "j", "k", "l",
"z", "x", "c", "v", "b", "n", "m",
"-", "=", "[", "]", "\\", ";", "'", ",", ".", "/", "enter",
"_", "+", "{", "}", "|", ":", "\"", "<", ">", "?",
"arrowleft", "arrowup", "arrowdown", "arrowright"
];
class wikishieldSettingsInterface {
constructor() {
this.contentContainer = null;
this.isOpen = false;
this.keypressCallback = null;
}
/**
* Open settings container and go to general settings
*/
openSettings() {
this.closeSettings();
this.isOpen = true;
const container = document.createElement("div");
container.classList.add("settings-container");
document.body.appendChild(container);
container.innerHTML = wikishieldHTML.settings;
container.addEventListener("click", this.closeSettings.bind(this));
container.querySelector(".settings").addEventListener("click", (event) => event.stopPropagation());
container.querySelector("#settings-general-button").classList.add("selected");
this.contentContainer = container.querySelector(".settings-right");
[
[ "#settings-general-button", this.openGeneral.bind(this) ],
[ "#settings-ai-button", this.openAI.bind(this) ],
[ "#settings-controls-button", this.openControls.bind(this) ],
[ "#settings-whitelist-button", this.openWhitelist.bind(this) ],
[ "#settings-highlight-button", this.openHighlighted.bind(this) ],
[ "#settings-statistics-button", this.openStatistics.bind(this) ],
[ "#settings-appearance-button", this.openAppearance.bind(this) ],
[ "#settings-about-button", this.openAbout.bind(this) ]
].forEach(([sel, func]) => container.querySelector(sel).addEventListener("click", () => {
this.contentContainer.innerHTML = "";
[...document.querySelectorAll(".settings-left-menu-item.selected")]
.forEach(e => e.classList.remove("selected"));
container.querySelector(sel).classList.add("selected");
func();
}));
this.openGeneral();
}
/**
* Open general settings section
*/
openGeneral() {
this.contentContainer.innerHTML = `
<div class="settings-section" id="maximum-edit-count">
<div class="settings-section-title">Maximum edit count</div>
<div class="settings-section-desc">Edits from users with more than this edit count will not be shown</div>
</div>
<div class="settings-section" id="maximum-queue-size">
<div class="settings-section-title">Maximum queue size</div>
<div class="settings-section-desc">The queue will not load additional edits after reaching this size</div>
</div>
<div class="settings-section" id="minimum-ores-score">
<div class="settings-section-title">Minimum ORES score</div>
<div class="settings-section-desc">Edits with an <a href="https://www.mediawiki.org/wiki/ORES" target="_blank">ORES score</a> below this threshold will not be shown</div>
</div>
<div class="settings-section" id="sound-alert-toggle">
<div class="settings-section-title">Enable sound alerts for high ORES scores</div>
<div class="settings-section-desc">Play a sound when an edit above the threshold is added to the queue</div>
</div>
<div class="settings-section" id="sound-alert-ores-score">
<div class="settings-section-title">Sound alert ORES threshold</div>
<div class="settings-section-desc">Play a sound alert when an edit with an ORES score above this value is added</div>
</div>
<div class="settings-section" id="watchlist-expiry">
<div class="settings-section-title">Watchlist expiry for warned users</div>
<div class="settings-section-desc">How long to watch user talk pages after issuing warnings</div>
</div>
<div class="settings-section">
<div class="settings-section-title">Namespaces to show</div>
<div class="settings-section-desc">Only edits from the selected namespaces will be shown in your queue.</div>
<div id="namespace-container"></div>
</div>
`;
this.createNumericInput(
this.contentContainer.querySelector("#maximum-edit-count"),
wikishield.options.maxEditCount, 0, 500, 5,
(newValue) => {
wikishield.options.maxEditCount = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createNumericInput(
this.contentContainer.querySelector("#maximum-queue-size"),
wikishield.options.maxQueueSize, 10, 100, 5,
(newValue) => {
wikishield.options.maxQueueSize = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createNumericInput(
this.contentContainer.querySelector("#minimum-ores-score"),
wikishield.options.minimumORESScore, 0, 1, 0.05,
(newValue) => {
wikishield.options.minimumORESScore = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createToggle(
this.contentContainer.querySelector("#sound-alert-toggle"),
wikishield.options.enableSoundAlerts,
(newValue) => {
wikishield.options.enableSoundAlerts = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createNumericInput(
this.contentContainer.querySelector("#sound-alert-ores-score"),
wikishield.options.soundAlertORESScore, 0, 1, 0.05,
(newValue) => {
wikishield.options.soundAlertORESScore = newValue;
wikishield.saveOptions(wikishield.options);
}
);
// Create watchlist expiry dropdown
const watchlistContainer = this.contentContainer.querySelector("#watchlist-expiry");
const watchlistSelect = document.createElement("select");
watchlistSelect.innerHTML = `
<option value="1 week">1 week</option>
<option value="2 weeks">2 weeks</option>
<option value="1 month">1 month</option>
<option value="3 months">3 months</option>
<option value="6 months">6 months</option>
<option value="1 year">1 year</option>
<option value="indefinite">Indefinite</option>
`;
watchlistSelect.value = wikishield.options.watchlistExpiry;
watchlistSelect.addEventListener("change", () => {
wikishield.options.watchlistExpiry = watchlistSelect.value;
wikishield.saveOptions(wikishield.options);
});
watchlistContainer.appendChild(watchlistSelect);
wikishieldData.namespaces.forEach(ns => {
this.contentContainer.querySelector("#namespace-container").innerHTML += `
<div>
<input
type="checkbox"
data-nsid="${ns.id}"
class="ns-checkbox"
${wikishield.options.namespacesShown.includes(ns.id) ? "checked" : ""}>
<label>${ns.name}</label>
</div>
`;
});
[...this.contentContainer.querySelectorAll(".ns-checkbox")].forEach(elem => {
elem.addEventListener("change", () => {
if (elem.checked) {
const set = new Set(wikishield.options.namespacesShown);
set.add(Number(elem.dataset["nsid"]));
wikishield.options.namespacesShown = [...set];
} else {
wikishield.options.namespacesShown = wikishield.options.namespacesShown
.filter(n => n !== Number(elem.dataset["nsid"]));
}
wikishield.saveOptions(wikishield.options);
});
});
}
/**
* Open AI Analysis settings section
*/
openAI() {
this.contentContainer.innerHTML = `
<div class="settings-section" id="enable-ollama-ai">
<div class="settings-section-title">Enable Ollama AI Analysis 🤖</div>
<div class="settings-section-desc">Use your local Ollama server to analyze edits for potential issues. Run any model locally with full privacy!</div>
</div>
<div class="settings-section" id="ollama-server-url">
<div class="settings-section-title">Ollama Server URL</div>
<div class="settings-section-desc">
Enter your Ollama server URL (default: http://localhost:11434)
<div style="margin-top: 8px;">
<input type="text" id="ollama-url-input" value="${wikishield.options.ollamaServerUrl}"
style="width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 4px; font-family: monospace;"
placeholder="http://localhost:11434">
<button id="test-connection-btn" style="margin-top: 8px; padding: 8px 16px; background: #667eea; color: white; border: none; border-radius: 4px; cursor: pointer;">
Test Connection
</button>
<span id="connection-status" style="margin-left: 8px;"></span>
</div>
</div>
</div>
<div class="settings-section" id="ollama-model-select">
<div class="settings-section-title">Select Model</div>
<div class="settings-section-desc">
Choose an Ollama model from your server. Click "Refresh Models" to fetch available models.
<div style="margin-top: 8px;">
<button id="refresh-models-btn" style="padding: 8px 16px; background: #667eea; color: white; border: none; border-radius: 4px; cursor: pointer;">
<span class="fa fa-sync"></span> Refresh Models
</button>
<span id="models-status" style="margin-left: 8px;"></span>
</div>
<div style="margin-top: 12px;" id="models-container">
<div style="color: #666; font-style: italic;">Click "Refresh Models" to load available models</div>
</div>
</div>
</div>
<div class="settings-section">
<div class="settings-section-title">About Ollama AI</div>
<div class="settings-section-desc">
Ollama allows you to run large language models locally on your machine with complete privacy and control.
<br><strong style="color: #28a745;">⚡ Benefits:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>100% Local - Your data never leaves your machine</li>
<li>Free to use - No API costs</li>
<li>Choose your model - Use any model you have installed</li>
<li>Fast responses - No network latency</li>
</ul>
<strong style="color: #667eea;">📚 Get started:</strong> <a href="https://ollama.com" target="_blank" style="color: #667eea; font-weight: bold;">ollama.com</a>
<br><strong>Popular models:</strong> llama3.2, mistral, gemma2, qwen2.5, deepseek-r1
</div>
</div>
<div class="settings-section">
<div class="settings-section-title" style="color: #dc3545;">⚠️ CORS Setup Required</div>
<div class="settings-section-desc warning-box" style="background: #fff3cd; padding: 12px; border-radius: 6px; border-left: 4px solid #ffc107;">
<strong>Important:</strong> Ollama needs to be configured to allow CORS requests from Wikipedia.
<br><br>
<strong>Option 1: Set Environment Variable Permanently (Recommended)</strong>
<br><br>
<strong>Windows:</strong>
<ol style="margin: 8px 0; padding-left: 20px;">
<li>Open System Properties (Win + Pause/Break or Right-click "This PC" → Properties → Advanced system settings)</li>
<li>Click "Environment Variables"</li>
<li>Under "System variables" or "User variables", click "New"</li>
<li>Variable name: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">OLLAMA_ORIGINS</code></li>
<li>Variable value: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">https://en.wikipedia.org,https://*.wikipedia.org</code></li>
<li>Click OK and restart Ollama</li>
</ol>
<strong>macOS/Linux (Add to shell profile):</strong>
<br>Add this line to <code>~/.bashrc</code>, <code>~/.zshrc</code>, or <code>~/.profile</code>:
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">export OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org"</pre>
Then run: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">source ~/.bashrc</code> (or your profile file)
<br><br>
<strong>Option 2: Temporary (One-Time Use)</strong>
<br><br>
<strong>Windows PowerShell:</strong>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">$env:OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org"
ollama serve</pre>
<strong>macOS/Linux Terminal:</strong>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org" ollama serve</pre>
<strong>Option 3: Systemd Service (Linux)</strong>
<br>Edit <code>/etc/systemd/system/ollama.service</code> and add:
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">[Service]
Environment="OLLAMA_ORIGINS=https://en.wikipedia.org,https://*.wikipedia.org"</pre>
Then run: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">sudo systemctl daemon-reload && sudo systemctl restart ollama</code>
<br><br>
<strong style="color: #dc3545;">⚠️ Without CORS setup, the connection will fail!</strong>
<br>After setting the environment variable, restart Ollama for changes to take effect.
</div>
</div>
<div class="settings-section">
<div class="settings-section-title">AI Analysis Features</div>
<div class="settings-section-desc">
<strong>What the AI can detect:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>Vandalism (content removal, nonsense additions, blanking)</li>
<li>Spam and promotional content</li>
<li>Bias and non-neutral point of view (POV)</li>
<li>Unsourced claims and BLP violations</li>
<li>Personal attacks and uncivil language</li>
<li>Copyright violations and plagiarism indicators</li>
<li>Disruptive editing patterns</li>
<li>Factual errors and misinformation</li>
<li>Policy violations</li>
</ul>
<strong>Features:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>Real-time analysis of edit diffs with surrounding context</li>
<li>Human-like review process with reasoning</li>
<li>Confidence levels and severity ratings</li>
<li>Specific issue identification with descriptions</li>
<li>Actionable recommendations (revert, warn, review, approve)</li>
<li>Visual indicators in the interface</li>
</ul>
</div>
</div>
`;
// Enable/disable toggle
this.createToggle(
this.contentContainer.querySelector("#enable-ollama-ai"),
wikishield.options.enableOllamaAI,
(newValue) => {
wikishield.options.enableOllamaAI = newValue;
wikishield.saveOptions(wikishield.options);
// Initialize or destroy Ollama AI instance
if (newValue) {
wikishield.ollamaAI = new wikishieldOllamaAI(
wikishield.options.ollamaServerUrl,
wikishield.options.ollamaModel
);
wikishield.logger.log("Ollama AI integration enabled");
} else {
wikishield.ollamaAI = null;
wikishield.logger.log("Ollama AI integration disabled");
}
}
);
// Server URL input handler
const urlInput = this.contentContainer.querySelector("#ollama-url-input");
urlInput.addEventListener('change', () => {
wikishield.options.ollamaServerUrl = urlInput.value.trim();
wikishield.saveOptions(wikishield.options);
if (wikishield.ollamaAI) {
wikishield.ollamaAI.serverUrl = wikishield.options.ollamaServerUrl;
}
wikishield.logger.log(`Ollama server URL updated: ${wikishield.options.ollamaServerUrl}`);
});
// Test connection button
const testBtn = this.contentContainer.querySelector("#test-connection-btn");
const statusSpan = this.contentContainer.querySelector("#connection-status");
testBtn.addEventListener('click', async () => {
// Cancel all active AI requests
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
statusSpan.innerHTML = '<span style="color: #ffc107;">Testing...</span>';
testBtn.disabled = true;
const tempAI = new wikishieldOllamaAI(wikishield.options.ollamaServerUrl, "");
const connected = await tempAI.testConnection();
if (connected) {
statusSpan.innerHTML = '<span style="color: #28a745;"><span class="fa fa-check-circle"></span> Connected!</span>';
} else {
statusSpan.innerHTML = `
<span style="color: #dc3545;">
<span class="fa fa-times-circle"></span> Failed to connect
<br><small style="font-size: 0.85em;">Make sure Ollama is running with CORS enabled (see instructions above)</small>
</span>
`;
}
testBtn.disabled = false;
});
// Refresh models button
const refreshBtn = this.contentContainer.querySelector("#refresh-models-btn");
const modelsStatus = this.contentContainer.querySelector("#models-status");
const modelsContainer = this.contentContainer.querySelector("#models-container");
refreshBtn.addEventListener('click', async () => {
// Cancel all active AI requests
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
modelsStatus.innerHTML = '<span style="color: #ffc107;">Loading...</span>';
refreshBtn.disabled = true;
try {
const tempAI = new wikishieldOllamaAI(wikishield.options.ollamaServerUrl, "");
const models = await tempAI.fetchModels();
if (models.length === 0) {
modelsContainer.innerHTML = '<div style="color: #dc3545;">No models found. Please install models using: <code>ollama pull [model-name]</code></div>';
modelsStatus.innerHTML = '<span style="color: #dc3545;">No models found</span>';
} else {
modelsStatus.innerHTML = `<span style="color: #28a745;"><span class="fa fa-check-circle"></span> Found ${models.length} model(s)</span>`;
let modelsHTML = '<div style="display: grid; gap: 8px; margin-top: 8px;">';
models.forEach(model => {
const isSelected = model.name === wikishield.options.ollamaModel;
const sizeGB = (model.size / 1024 / 1024 / 1024).toFixed(1);
modelsHTML += `
<div class="ollama-model-item" data-model="${model.name}" style="
padding: 12px;
border: 2px solid ${isSelected ? '#667eea' : 'rgba(128, 128, 128, 0.3)'};
border-radius: 6px;
cursor: pointer;
background: ${isSelected ? 'rgba(102, 126, 234, 0.15)' : 'transparent'};
transition: all 0.2s;
">
<div style="display: flex; align-items: center; gap: 8px;">
<span class="fa ${isSelected ? 'fa-check-circle' : 'fa-circle'}" style="color: ${isSelected ? '#667eea' : 'rgba(128, 128, 128, 0.5)'};"></span>
<strong style="flex: 1;">${model.name}</strong>
<span style="font-size: 0.85em; opacity: 0.7;">${sizeGB} GB</span>
</div>
<div style="font-size: 0.85em; opacity: 0.6; margin-top: 4px;">
Modified: ${new Date(model.modified_at).toLocaleDateString()}
</div>
</div>
`;
});
modelsHTML += '</div>';
modelsContainer.innerHTML = modelsHTML;
// Add click handlers for model selection
modelsContainer.querySelectorAll('.ollama-model-item').forEach(item => {
item.addEventListener('click', () => {
// Cancel all active AI requests when switching models
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
const modelName = item.dataset.model;
wikishield.options.ollamaModel = modelName;
wikishield.saveOptions(wikishield.options);
if (wikishield.ollamaAI) {
wikishield.ollamaAI.model = modelName;
}
wikishield.logger.log(`Ollama model selected: ${modelName}`);
// Update UI
modelsContainer.querySelectorAll('.ollama-model-item').forEach(i => {
i.style.border = '2px solid rgba(128, 128, 128, 0.3)';
i.style.background = 'transparent';
i.querySelector('.fa').classList.remove('fa-check-circle');
i.querySelector('.fa').classList.add('fa-circle');
i.querySelector('.fa').style.color = 'rgba(128, 128, 128, 0.5)';
});
item.style.border = '2px solid #667eea';
item.style.background = 'rgba(102, 126, 234, 0.15)';
item.querySelector('.fa').classList.remove('fa-circle');
item.querySelector('.fa').classList.add('fa-check-circle');
item.querySelector('.fa').style.color = '#667eea';
});
// Hover effects
item.addEventListener('mouseenter', () => {
if (item.dataset.model !== wikishield.options.ollamaModel) {
item.style.borderColor = '#667eea';
}
});
item.addEventListener('mouseleave', () => {
if (item.dataset.model !== wikishield.options.ollamaModel) {
item.style.borderColor = 'rgba(128, 128, 128, 0.3)';
}
});
});
}
} catch (err) {
modelsContainer.innerHTML = `
<div class="error-box" style="color: #dc3545; padding: 12px; background: #fff3cd; border-radius: 6px; border-left: 4px solid #dc3545;">
<strong>Error:</strong> ${err.message}
<br><br>
<strong>Troubleshooting:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>Make sure Ollama is running</li>
<li>Check that CORS is enabled (see instructions above)</li>
<li>Verify the server URL is correct</li>
<li>Try the "Test Connection" button first</li>
</ul>
</div>
`;
modelsStatus.innerHTML = '<span style="color: #dc3545;"><span class="fa fa-times-circle"></span> Error loading models</span>';
}
refreshBtn.disabled = false;
});
}
/**
* Open appearance settings section
*/
openAppearance() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Appearance</div>
<div class="settings-appearance-box light" id="box-light">Light</div>
<div class="settings-appearance-box dark" id="box-dark">Dark</div>
</div>
`;
this.contentContainer.querySelector("#box-light").addEventListener("click", () => {
wikishield.interface.loadTheme("theme-light");
});
this.contentContainer.querySelector("#box-dark").addEventListener("click", () => {
wikishield.interface.loadTheme("theme-dark");
});
}
/**
* Create an input with +/- buttons
* @param {HTMLElement} container Element to add the input to
* @param {Number} value Initial value for the input
* @param {Number} min Minimum input value
* @param {Number} max Maximum input value
* @param {Number} step Amount the +/- buttons change value by
* @param {(newValue: number) => void} onChange Callback function for input change
*/
/**
* Create a toggle switch
* @param {HTMLElement} container The container to add the toggle to
* @param {Boolean} value The initial value
* @param {Function} onChange Callback when value changes
*/
createToggle(container, value, onChange) {
const toggle = document.createElement("div");
toggle.classList.add("settings-toggle");
if (value) toggle.classList.add("active");
container.appendChild(toggle);
toggle.innerHTML = `
<div class="toggle-switch">
<div class="toggle-slider"></div>
</div>
`;
toggle.addEventListener("click", () => {
value = !value;
if (value) {
toggle.classList.add("active");
} else {
toggle.classList.remove("active");
}
onChange(value);
});
}
createNumericInput(container, value, min, max, step, onChange) {
const input = document.createElement("div");
input.classList.add("numeric-input-container");
container.appendChild(input);
input.innerHTML = `
<span class="fa fa-minus numeric-input-button"></span>
<input type="text" class="numeric-input" value=${value}>
<span class="fa fa-plus numeric-input-button"></span>
`;
const inputElem = input.querySelector("input");
input.querySelector(".fa-minus").addEventListener("click", () => {
value = Math.round(Math.max(value - step, min) * 100) / 100;
inputElem.value = value;
onChange(value);
});
input.querySelector(".fa-plus").addEventListener("click", () => {
value = Math.round(Math.min(value + step, max) * 100) / 100;
inputElem.value = value;
onChange(value);
});
const onInputChange = () => {
if (isNaN(Number(inputElem.value))) {
inputElem.value = value;
}
value = Math.round(Math.min(Math.max(Number(inputElem.value), min), max) * 100) / 100;
value = step >= 1 ? Math.round(value) : value;
inputElem.value = value;
onChange(value);
};
inputElem.addEventListener("blur", onInputChange);
inputElem.addEventListener("keyup", (event) => {
if (event.key.toLowerCase() === "enter") {
onInputChange();
inputElem.blur();
}
});
}
/**
* Open controls settings section
*/
openControls() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Control scripts</div>
<div class="settings-section-desc">Below you can change what actions are completed when a key is pressed.</div>
<div class="add-action-button new-control-script">
<span class="fa fa-plus"></span>
New control script
</div>
</div>
`;
for (const control of wikishield.options.controlScripts) {
const container = document.createElement("div");
container.classList.add("settings-section");
this.contentContainer.appendChild(container);
this.createControlInterface(container, control);
}
this.updateDuplicateControls();
const addButton = this.contentContainer.querySelector(".new-control-script");
addButton.addEventListener("click", () => {
wikishield.options.controlScripts.unshift({
keys: [],
actions: []
});
this.openControls();
});
}
/**
* Find which, if any, keys are used for more than one control
* @returns {String[]} List of keys used more than once
*/
findDuplicateControls() {
const keys = {};
for (const control of wikishield.options.controlScripts) {
for (const key of control.keys) {
if (!keys[key]) {
keys[key] = 0
}
keys[key] += 1;
}
}
const multiples = [];
Object.keys(keys).forEach(key => {
if (keys[key] > 1) {
multiples.push(key);
}
});
return multiples;
}
/**
* Highlight any duplicated control keys
*/
updateDuplicateControls() {
const duplicateControls = this.findDuplicateControls();
[...document.querySelectorAll(".control-keys > div[data-key]")].forEach(elem => {
if (duplicateControls.includes(elem.dataset.key)) {
elem.classList.add("key-duplicate");
} else {
elem.classList.remove("key-duplicate");
}
});
}
/**
* Create interface for changing what a control does
* @param {HTMLElement} container Parent element
* @param {Object} control The control object, see wikishieldData.controlScripts
*/
createControlInterface(container, control) {
container.innerHTML = `
<div class="control-container">
<div class="control-container-title">When these keys are pressed</div>
<div class="control-keys"></div>
<div class="control-container-title" style="margin-top: 10px;">Complete these actions</div>
<div class="control-actions"></div>
</div>
`;
const keyContainer = container.querySelector(".control-keys");
const actionContainer = container.querySelector(".control-actions");
for (const key of control.keys) {
const keyElem = document.createElement("div");
keyContainer.appendChild(keyElem);
keyElem.innerHTML = `
<div class="key-elem-title">${key === " " ? "space" : key}</div>
<span class="fas fa-trash-can remove"></span>
`;
keyElem.dataset.key = key;
keyElem.querySelector(".remove").addEventListener("click", () => {
const set = new Set(control.keys);
set.delete(key);
control.keys = [...set];
this.createControlInterface(container, control);
this.updateDuplicateControls();
wikishield.saveOptions(wikishield.options);
});
}
const plusElem = document.createElement("div");
keyContainer.appendChild(plusElem);
plusElem.innerHTML = `<span class="fas fa-plus"></span>`;
plusElem.style.cursor = "pointer";
plusElem.addEventListener("click", () => {
[...document.querySelectorAll(".key-select")].forEach(elem => elem.remove());
const keySelect = document.createElement("div");
keySelect.classList.add("key-select");
keySelect.innerHTML = "Press a key...";
plusElem.parentElement.insertBefore(keySelect, plusElem);
keySelect.addEventListener("click", () => keySelect.remove());
this.keypressCallback = (key) => {
const set = new Set(control.keys);
set.add(key);
control.keys = [...set];
this.createControlInterface(container, control);
this.updateDuplicateControls();
this.keypressCallback = null;
wikishield.saveOptions(wikishield.options);
}
});
for (const action of control.actions) {
this.createActionItem(
actionContainer,
action,
control,
() => {
wikishield.saveOptions(wikishield.options);
this.createControlInterface(container, control);
}
);
}
const bottomContainer = document.createElement("div");
bottomContainer.classList.add("control-bottom-container");
bottomContainer.innerHTML = `
<div class="add-action-container"></div>
<div>
<div class="add-action-button control-delete">Delete</div>
</div>
`;
actionContainer.appendChild(bottomContainer);
bottomContainer.querySelector(".control-delete").addEventListener("click", () => {
wikishield.options.controlScripts.splice(wikishield.options.controlScripts.indexOf(control), 1);
wikishield.saveOptions(wikishield.options);
this.openControls();
});
const addContainer = bottomContainer.querySelector(".add-action-container");
const resetAddContainer = () => {
addContainer.innerHTML = `<div class="add-action-button new-button">Add new action</div>`;
addContainer.querySelector(".new-button").addEventListener("click", () => {
addContainer.innerHTML = `
<select style="height: 35px;"></select>
<div class="add-action-button cancel-button">Cancel</div>
<div class="add-action-button create-button">Create</div>
`;
const select = addContainer.querySelector("select");
Object.keys(wikishield.interface.eventManager.events).forEach(name => {
select.innerHTML += `<option value="${name}">${wikishield.interface.eventManager.events[name].description}</option>`;
});
select.innerHTML += `<option value="if">If condition</option>`;
addContainer.querySelector(".cancel-button").addEventListener("click", () => resetAddContainer());
addContainer.querySelector(".create-button").addEventListener("click", () => {
const action = {
name: select.value,
params: {}
};
if (select.value === "if") {
action.actions = [];
action.condition = "operatorNonAdmin";
}
control.actions.push(action);
wikishield.saveOptions(wikishield.options);
this.createControlInterface(container, control);
});
});
};
resetAddContainer();
}
/**
* Given an action, find its parent
* @param {Object} action
* @param {Object} parent Object to search through
* @returns {Object} The parent action
*/
findParentOfAction(action, parent) {
if (parent.actions.indexOf(action) !== -1) {
return parent;
}
for (const act of parent.actions) {
if (act.name === "if") {
const result = this.findParentOfAction(action, act);
if (result) {
return result;
}
}
}
}
/**
* Create the interface for a single action
* @param {HTMLElement} container Parent element
* @param {Object} action
* @param {Object} control The parent control object
* @param {() => void} onChange Function to callback if the action is modified
*/
createActionItem(container, action, control, onChange) {
const itemContainer = document.createElement("div");
itemContainer.classList.add("control-action");
container.appendChild(itemContainer);
if (action.name === "if") {
itemContainer.innerHTML = `
<div class="control-action-title">
<div class="control-action-title-left">
<span class="fas fa-circle-question"></span>
If <select></select> then:
</div>
<div class="control-action-title-right"></div>
</div>
`;
const select = itemContainer.querySelector("select");
for (const key in wikishieldEventData.conditions) {
select.innerHTML += `<option value=${key}>${wikishieldEventData.conditions[key].desc}</option>`;
}
select.value = action.condition;
select.addEventListener("change", () => {
action.condition = select.value;
onChange();
});
for (const subaction of action.actions) {
this.createActionItem(itemContainer, subaction, control, onChange);
}
} else {
const event = wikishield.interface.eventManager.events[action.name];
itemContainer.innerHTML = `
<div class="control-action-title">
<div class="control-action-title-left">
<span class="${event.icon}"></span>
${event.description}
</div>
<div class="control-action-title-right"></div>
</div>
`;
for (const param of (event.parameters || [])) {
this.createItemParameter(itemContainer, param, action.params[param.id] || "", (value) => {
action.params[param.id] = value;
wikishield.saveOptions(wikishield.options);
});
}
}
itemContainer.querySelector(".control-action-title-right").innerHTML = `
<span class="fas fa-chevron-up move-action-up"></span>
<span class="fas fa-chevron-down move-action-down"></span>
<span class="fas fa-trash-can delete-action"></span>
`;
itemContainer.querySelector(".move-action-down").addEventListener("click", () => {
const parent = this.findParentOfAction(action, control);
const actionIndex = parent.actions.indexOf(action);
if (parent.actions.indexOf(action) === parent.actions.length - 1) {
if (parent.name !== "if") {
return;
}
const grandparent = this.findParentOfAction(parent, control);
grandparent.actions.splice(grandparent.actions.indexOf(parent) + 1, 0, action);
parent.actions.splice(actionIndex, 1);
} else {
const nextSibling = parent.actions[actionIndex + 1];
if (nextSibling.name === "if") {
nextSibling.actions.unshift(action);
parent.actions.splice(actionIndex, 1);
} else {
parent.actions.splice(actionIndex, 1);
parent.actions.splice(actionIndex + 1, 0, action);
}
}
onChange();
});
itemContainer.querySelector(".move-action-up").addEventListener("click", () => {
const parent = this.findParentOfAction(action, control);
const actionIndex = parent.actions.indexOf(action);
if (parent.actions.indexOf(action) === 0) {
if (parent.name !== "if") {
return;
}
const grandparent = this.findParentOfAction(parent, control);
grandparent.actions.splice(grandparent.actions.indexOf(parent), 0, action);
parent.actions.splice(actionIndex, 1);
} else {
const prevSibling = parent.actions[actionIndex - 1];
if (prevSibling.name === "if") {
prevSibling.actions.push(action);
parent.actions.splice(actionIndex, 1);
} else {
parent.actions.splice(actionIndex, 1);
parent.actions.splice(actionIndex - 1, 0, action);
}
}
onChange();
});
itemContainer.querySelector(".delete-action").addEventListener("click", () => {
const parent = this.findParentOfAction(action, control);
parent.actions.splice(parent.actions.indexOf(action), 1);
onChange();
});
}
/**
* Given a parameter, create a label and input
* @param {HTMLElement} container
* @param {Object} parameter
* @param {String} value
* @param {(value: string) => void} onChange
*/
createItemParameter(container, parameter, value, onChange) {
const parameterElem = document.createElement("div");
parameterElem.classList.add("action-parameter");
container.appendChild(parameterElem);
parameterElem.innerHTML = `
<div class="parameter-title">${parameter.title}</div>
`;
if (parameter.type === "choice") {
parameterElem.innerHTML += `<select></select>`;
const select = parameterElem.querySelector("select");
for (const choice of parameter.options) {
select.innerHTML += `<option>${choice}</option>`;
}
select.value = value;
select.addEventListener("change", () => onChange(select.value));
} else if (parameter.type === "text") {
parameterElem.innerHTML += `<input type="text">`;
const input = parameterElem.querySelector("input");
input.value = value;
input.addEventListener("keydown", (event) => {
if (event.key.toLowerCase() === "enter") {
onChange(input.value);
input.blur();
}
});
input.addEventListener("blur", () => onChange(input.value));
}
}
/**
* Open whitelist settings section
*/
openWhitelist() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Whitelisted users</div>
<div class="settings-section-desc">This is a list of users you have whitelisted. Edits by these users will not appear in your queue. The list of whitelisted users resets whenever you restart wikishield.</div>
</div>
<div class="settings-section user-container"></div>
`;
const container = this.contentContainer.querySelector(".user-container");
this.createUserList(container, wikishield.whitelist);
}
/**
* Create a list of users given a set of usernames
* @param {HTMLElement} container
* @param {Set<string>} set
*/
createUserList(container, set) {
for (const user of [...set]) {
const userItem = document.createElement("div");
container.appendChild(userItem);
userItem.innerHTML = `
<div>
<a target="_blank" href="${wikishield.util.pageLink(`Special:Contributions/${user}`)}">${user}</a>
</div>
<div class="add-action-button remove-button">Remove</div>
`;
userItem.querySelector(".remove-button").addEventListener("click", () => {
set.delete(user);
userItem.remove();
});
}
}
/**
* Open highlighted settings section
*/
openHighlighted() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Highlighted users</div>
<div class="settings-section-desc">This is a list of users you have highlighted. Edits by these users will appear before other edits in your queue. The list of highlighted users resets whenever you restart wikishield.</div>
</div>
<div class="settings-section user-container"></div>
`;
const container = this.contentContainer.querySelector(".user-container");
this.createUserList(container, wikishield.highlighted);
}
/**
* Open statistics settings section
*/
openStatistics() {
const revertRate = Math.round(wikishield.statistics.reverts / wikishield.statistics.reviewed * 1000) / 10;
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Statistics</div>
<p>You have reviewed a total of <b>${wikishield.statistics.reviewed}</b> edits, and reverted <b>${wikishield.statistics.reverts}</b> (${revertRate}%).</p>
<p>You have reported users or requested protection <b>${wikishield.statistics.reports}</b> times.</p>
</div>
`;
}
/**
* Open about settings section
*/
openAbout() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">About wikishield</div>
<p>Created by User:Ingenuity. Version ${wikishieldVersion}</p>
</div>
<div class="settings-section">
${wikishieldChangelog || "<p>No changelog is available.</p>"}
</div>
`;
}
/**
* Remove all existing settings containers
*/
closeSettings() {
this.isOpen = false;
[...document.querySelectorAll(".settings-container")].forEach(elem => elem.remove());
}
/**
* Handle a keypress while settings are open
* @param {KeyboardEvent} event
*/
handleKeypress(event) {
if (event.key.toLowerCase() === "escape") {
this.closeSettings();
return;
}
if (this.keypressCallback && wikishieldSettingsAllowedKeys.includes(event.key.toLowerCase())) {
this.keypressCallback(event.key.toLowerCase());
event.preventDefault();
}
}
}
// </nowiki>
// <nowiki>
class wikishieldInterface {
constructor() {
this.selectedWidthAdjust = null;
this.startingSectionWidth = null;
this.startingMouseX = null;
this.lastCurrentEdit = null;
this.eventManager = new wikishieldEventManager();
this.settings = new wikishieldSettingsInterface();
this.selectedMenu = null;
this.selectedSubmenu = null;
}
/**
* Create a stylesheet with the given theme's style
* @param {String} name
*/
loadTheme(name) {
this.removeTheme();
const style = document.createElement("style");
style.classList.add("wikishield-theme");
style.innerHTML = wikishieldStyling[name];
document.head.appendChild(style);
wikishield.options.theme = name;
wikishield.saveOptions(wikishield.options);
}
/**
* Remove all theme stylesheets
*/
removeTheme() {
document.querySelectorAll(".wikishield-theme").forEach(elem => elem.remove());
}
/**
* Build the starting page
*/
async build() {
document.head.innerHTML = `
<title>wikishield</title>
<style>${wikishieldStyling["initial"]}</style>
`;
document.body.innerHTML = wikishieldHTML["initial"];
if (wikishield.rights.rollback) {
this.elem("#rollback-needed").style.display = "none";
} else {
this.elem("#start-button").style.display = "none";
}
this.elem("#start-button").addEventListener("click", () => {
wikishield.start();
});
this.loadTheme(wikishield.options.theme || "theme-light");
}
/**
* Build the main interface, and link buttons to events
*/
start() {
document.head.innerHTML = `
<title>wikishield</title>
<style>${wikishieldStyling["main"]}${wikishieldStyling["mobile"]}</style>
${wikishieldHTML["head"]}
`;
this.loadTheme(wikishield.options.theme || "theme-light");
document.body.innerHTML = wikishieldHTML["main"];
[...document.querySelectorAll(".bottom-tool-title")].forEach(elem => {
elem.addEventListener("click", () => {
this.selectedMenu = this.selectedMenu === elem ? null : elem;
this.selectedSubmenu = null;
this.updateMenuElements();
});
});
[...document.querySelectorAll(".submenu")].forEach(elem => {
elem.addEventListener("click", () => {
this.selectedSubmenu = this.selectedSubmenu === elem ? null : elem;
this.updateMenuElements();
});
});
[...document.querySelectorAll(".bottom-tool-option-subcontent")].forEach(elem => {
elem.addEventListener("click", (event) => event.stopPropagation());
});
[
this.elem("#delete-queue"),
this.elem("#open-settings"),
this.elem("#notifications-icon"),
this.elem("#user-contribs-level")
].forEach(e => this.addTooltipListener(e));
// Notification icon click handler
this.elem("#notifications-icon").addEventListener("click", (e) => {
e.stopPropagation();
const panel = this.elem("#notifications-panel");
panel.classList.toggle("show");
});
// Mark all as read handler
this.elem("#mark-all-read").addEventListener("click", () => {
wikishield.markAllNotificationsRead();
});
// Close notifications panel when clicking outside
document.addEventListener("click", (e) => {
const panel = this.elem("#notifications-panel");
const icon = this.elem("#notifications-icon");
if (panel && !panel.contains(e.target) && !icon.contains(e.target)) {
panel.classList.remove("show");
}
});
this.eventManager.linkButton(
this.elem("#delete-queue"),
"deleteQueue", true
);
this.eventManager.linkButton(
this.elem("#open-settings"),
"openSettings", true
);
this.eventManager.linkButton(
this.elem("#user-open-user-page"),
"openUserPage"
);
this.eventManager.linkButton(
this.elem("#user-open-user-talk"),
"openUserTalk"
);
this.eventManager.linkButton(
this.elem("#user-view-contribs"),
"openUserContribs"
);
this.eventManager.linkButton(
this.elem("#user-view-filter-log"),
"openFilterLog"
);
this.eventManager.linkButton(
this.elem("#user-add-whitelist"),
"addToWhitelist"
);
this.eventManager.linkButton(
this.elem("#user-highlight"),
"highlight"
);
this.eventManager.linkButton(
this.elem("#page-open-page"),
"openPage"
);
this.eventManager.linkButton(
this.elem("#page-open-talk"),
"openTalk"
);
this.eventManager.linkButton(
this.elem("#page-view-history"),
"openHistory"
);
this.eventManager.linkButton(
this.elem("#edit-view-revision"),
"openRevision"
);
this.eventManager.linkButton(
this.elem("#edit-view-diff"),
"openDiff"
);
this.eventManager.linkButton(
this.elem("#edit-thank-user"),
"thankUser"
);
this.eventManager.linkButton(
this.elem("#edit-rollback"),
"rollback"
);
this.createSubmenu(
this.elem("#edit-rollback-goodfaith .bottom-tool-option-subcontent"),
"rollbackGoodFaith"
);
this.createSubmenu(
this.elem("#edit-undo .bottom-tool-option-subcontent"),
"undo"
);
this.createSubmenu(
this.elem("#user-report-aiv .bottom-tool-option-subcontent"),
"reportToAIV"
);
this.createSubmenu(
this.elem("#user-report-uaa .bottom-tool-option-subcontent"),
"reportToUAA"
);
// this.createSubmenu(
// this.elem("#user-block .bottom-tool-option-subcontent"),
// "block"
// );
this.createSubmenu(
this.elem("#page-request-protection .bottom-tool-option-subcontent"),
"requestProtection"
);
// this.createSubmenu(
// this.elem("#page-protect .bottom-tool-option-subcontent"),
// "protect"
// );
this.createSubmenu(
this.elem("#user-welcome .bottom-tool-option-subcontent"),
"welcome"
);
this.createSubmenu(
this.elem("#edit-rollback-goodfaith .bottom-tool-option-subcontent"),
"rollbackGoodFaith"
);
if (!wikishield.rights.block) {
[...document.querySelectorAll(".tool-block")].forEach(elem => elem.style.display = "none");
}
if (!wikishield.rights.protect) {
[...document.querySelectorAll(".tool-protect")].forEach(elem => elem.style.display = "none");
}
[...this.elem("#bottom-tools").querySelectorAll("[data-tooltip]")]
.forEach(elem => this.addTooltipListener(elem));
this.createRevertMenu(this.elem("#revert-menu"));
this.createWarnMenu(this.elem("#warn-menu"));
const queueWidthAdjust = this.elem("#queue-width-adjust");
const queue = this.elem("#queue");
const detailsWidthAdjust = this.elem("#details-width-adjust");
const details = this.elem("#right-details");
queueWidthAdjust.addEventListener("mousedown", (event) => {
this.selectedWidthAdjust = queueWidthAdjust;
this.startingMouseX = event.clientX;
this.startingSectionWidth = queue.getBoundingClientRect().width;
});
detailsWidthAdjust.addEventListener("mousedown", (event) => {
this.selectedWidthAdjust = detailsWidthAdjust;
this.startingMouseX = event.clientX;
this.startingSectionWidth = details.getBoundingClientRect().width;
});
window.addEventListener("mouseup", () => this.selectedWidthAdjust = null);
window.addEventListener("mousemove", (event) => {
if (this.selectedWidthAdjust === queueWidthAdjust) {
const newWidth = event.clientX - this.startingMouseX + this.startingSectionWidth;
queue.style.width = Math.min(Math.max(newWidth, 200), 400) + "px";
this.elem("#right-container").style.width = `calc(100% - ${queue.style.width})`;
}
if (this.selectedWidthAdjust === detailsWidthAdjust) {
const newWidth = this.startingMouseX - event.clientX + this.startingSectionWidth;
details.style.width = Math.min(Math.max(newWidth, 250), 400) + "px";
this.elem("#main-container").style.width = `calc(100% - ${details.style.width})`;
}
});
window.addEventListener("click", () => {
[...document.querySelectorAll(".context-menu")].forEach(elem => elem.remove());
});
if (wikishield.getChangelogVersion() !== wikishieldChangelogVersion) {
const container = document.createElement("div");
container.classList.add("settings-container");
document.body.appendChild(container);
container.innerHTML = `
<div class="settings">
<div class="settings-section changelog">
${wikishieldChangelog}
<button id="close-changelog" class="add-action-button">Close</button>
</div>
</div>
`;
document.getElementById("close-changelog").addEventListener("click", () => {
container.remove();
wikishield.updateChangelogVersion();
});
}
}
/**
* Update which menu elements are selected and open
*/
updateMenuElements() {
[...document.querySelectorAll(".bottom-tool-content")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".bottom-tool-title-selected")].forEach(e => e.classList.remove("bottom-tool-title-selected"));
[...document.querySelectorAll(".bottom-tool-title")].forEach(elem => {
if (this.selectedMenu === elem) {
elem.classList.add("bottom-tool-title-selected");
elem.parentElement.querySelector(".bottom-tool-content").style.display = "initial";
}
});
[...document.querySelectorAll(".bottom-tool-option-subcontent")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".submenu-selected")].forEach(e => e.classList.remove("submenu-selected"));
[...document.querySelectorAll(".submenu")].forEach(elem => {
if (this.selectedSubmenu === elem) {
elem.classList.add("submenu-selected");
elem.children[2].style.display = "initial";
}
});
}
/**
* Close all bottom menu popups
*/
closeAllMenus() {
this.selectedMenu = null;
this.selectedSubmenu = null;
[...document.querySelectorAll(".bottom-tool-content")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".bottom-tool-title-selected")].forEach(e => e.classList.remove("bottom-tool-title-selected"));
[...document.querySelectorAll(".bottom-tool-option-subcontent")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".submenu-selected")].forEach(e => e.classList.remove("submenu-selected"));
}
/**
* Create the menu for warning types
* @param {HTMLElement} container
*/
createRevertMenu(container) {
const table = document.createElement("table");
table.classList.add("revert-menu-table");
container.appendChild(table);
for (const warningType in wikishieldData.warnings) {
const row = document.createElement("tr");
table.appendChild(row);
const levels = [ "Auto", "1", "2", "3", "4", "4im" ];
row.innerHTML += `
<td class="revert-menu-title">${warningType}</td>
<td class="revert-menu-info" data-tooltip="${wikishieldData.warnings[warningType].desc}">
<span class="fas fa-circle-question"></span>
</td>
`;
const templates = [ "Auto", ...wikishieldData.warnings[warningType].templates ];
for (const template in templates) {
const level = levels[template];
const elem = document.createElement("td");
row.appendChild(elem);
elem.innerText = level;
if (level === "Auto") {
elem.style.backgroundColor = "#00a000";
} else {
elem.style.backgroundColor = wikishieldData.warningTemplateColors[level];
}
elem.classList.add("revert-menu-item");
elem.addEventListener("click", async () => {
await wikishield.executeScript({
actions: [
{
name: "rollback",
params: {
"label": wikishieldData.warnings[warningType].label
}
},
{
name: "warn",
params: {
warningType,
level: level === "Auto" ? "auto" : (level === "4im" ? "4im" : Number(template) + 1)
}
},
{
name: "highlight",
params: {}
},
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{
name: "reportToAIV",
params: {
reportMessage: "Vandalism past final warning"
}
}
]
}
]
},
{
name: "nextEdit",
params: {}
}
]
});
this.selectedMenu = null;
this.updateMenuElements();
});
}
}
[...container.querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
}
/**
* Create the warn menu (without rollback)
* @param {HTMLElement} container Container element for the menu
*/
createWarnMenu(container) {
const warnTypes = {
"Gaming the system": {
templates: [
"subst:uw-gaming1",
"subst:uw-gaming2",
"subst:uw-gaming3",
"subst:uw-gaming4",
"subst:uw-gaming4im"
],
label: "[[WP:GAME|gaming the system]]",
desc: "Warning for gaming the system or manipulating Wikipedia processes.",
requiresArticle: true
},
"Misleading edit summaries": {
templates: [
"subst:uw-mislead1",
"subst:uw-mislead2",
"subst:uw-mislead3",
"subst:uw-mislead4"
],
label: "using [[WP:EDITSUMMARY|misleading edit summaries]]",
desc: "Warning for using misleading or false edit summaries.",
requiresArticle: true
},
"Incorrect minor edits": {
templates: [
"subst:uw-minor"
],
label: "incorrect use of [[Help:Minor edit|minor edits]]",
desc: "Warning for incorrectly marking edits as minor.",
requiresArticle: false
}
};
const table = document.createElement("table");
table.classList.add("revert-menu-table");
container.appendChild(table);
for (const warningType in warnTypes) {
const row = document.createElement("tr");
table.appendChild(row);
const warningData = warnTypes[warningType];
const levels = warningData.templates.length === 1 ? ["Only"] : ["1", "2", "3", "4", "4im"];
row.innerHTML += `
<td class="revert-menu-title">${warningType}</td>
<td class="revert-menu-info" data-tooltip="${warningData.desc}">
<span class="fas fa-circle-question"></span>
</td>
`;
for (let i = 0; i < warningData.templates.length; i++) {
const template = warningData.templates[i];
const level = levels[i];
const elem = document.createElement("td");
row.appendChild(elem);
elem.innerText = level;
// Color coding for levels
if (warningData.templates.length === 1) {
elem.style.backgroundColor = "#4a90e2";
} else if (level === "4im") {
elem.style.backgroundColor = wikishieldData.warningTemplateColors["4im"];
} else {
elem.style.backgroundColor = wikishieldData.warningTemplateColors[level];
}
elem.classList.add("revert-menu-item");
elem.addEventListener("click", async () => {
await wikishield.executeScript({
actions: [
{
name: "warn",
params: {
warningType: warningType,
level: i + 1,
warningTemplates: warningData.templates,
warningLabel: warningData.label,
requiresArticle: warningData.requiresArticle
}
},
{
name: "highlight",
params: {}
},
{
name: "nextEdit",
params: {}
}
]
});
this.selectedMenu = null;
this.updateMenuElements();
});
}
}
[...container.querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
}
/**
* Create a form for a submenu based on an event
* @param {HTMLElement} container Container element for the submenu
* @param {String} eventName EventManager event name
*/
createSubmenu(container, eventName) {
const event = this.eventManager.events[eventName];
container.innerHTML = `
<div class="bottom-subcontent-title">${event.description}</div>
`;
for (const param of (event.parameters || [])) {
container.innerHTML += `<div class="bottom-subcontent-input-title">${param.title}</div>`;
switch (param.type) {
case "choice":
const optionHTML = param.options.reduce((prev, cur) => prev + `<option>${cur}</option>`, "");
container.innerHTML += `
<select data-paramid="${param.id}">
${optionHTML}
</select>
`;
break;
case "text":
container.innerHTML += `<input type="text" data-paramid="${param.id}">`
break;
default:
break;
}
}
const button = document.createElement("button");
button.innerText = "Submit";
button.classList.add("bottom-subcontent-button");
container.appendChild(button);
button.addEventListener("click", () => {
const params = {};
for (const param of (event.parameters || [])) {
const input = container.querySelector(`[data-paramid="${param.id}"]`);
params[param.id] = input.value;
}
wikishield.executeScript({
actions: [
{
name: eventName,
params
}
]
});
this.selectedMenu = null;
this.selectedSubmenu = null;
this.updateMenuElements();
});
}
/**
* Add edits to the queue if they aren't already there
* @param {Object} queue
* @param {Object} currentEdit
*/
renderQueue(queue, currentEdit) {
let lastEditElem = null;
this.elem("#queue-top-items").innerText = queue.length + " item" + (queue.length === 1 ? "" : "s");
for (const edit of queue) {
// Scope the selector to only search within #queue-items
let elem = this.elem(`#queue-items .queue-edit[data-revid="${edit.revid}"]`);
if (!elem) {
elem = document.createElement("div");
elem.classList.add("queue-edit");
elem.dataset.revid = edit.revid.toString();
elem.innerHTML = this.generateEditHTML(edit);
if (lastEditElem) {
lastEditElem.parentElement.insertBefore(elem, lastEditElem.nextSibling);
} else {
if (edit === currentEdit) {
this.elem("#queue-items").prepend(elem);
} else {
this.elem("#queue-items").appendChild(elem);
}
}
[...elem.querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
elem.addEventListener("contextmenu", (event) => {
event.preventDefault();
[...document.querySelectorAll(".context-menu")].forEach(e => e.remove());
const contextMenu = document.createElement("div");
contextMenu.classList.add("context-menu");
contextMenu.innerHTML = wikishieldHTML["edit-context-menu"];
document.body.appendChild(contextMenu);
contextMenu.style.left = event.clientX + "px";
contextMenu.style.top = event.clientY + "px";
contextMenu.querySelector("#context-ores-number").innerText = Math.round(edit.ores * 100) || 0;
contextMenu.querySelector("#context-ores-number").style.color = this.getORESColor(edit.ores || 0);
contextMenu.querySelector("#context-remove").addEventListener("click", () => {
// Cancel AI analysis for the edit being removed
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAnalysis(edit.revid);
}
if (edit === currentEdit) {
wikishield.queue.nextItem();
} else {
for (let i = 0; i < queue.length; i++) {
if (queue[i] === edit) {
queue.splice(i, 1);
break;
}
}
this.removeQueueItem(edit.revid);
}
wikishield.queue.previousItems.push(edit);
contextMenu.remove();
});
contextMenu.querySelector("#context-whitelist").addEventListener("click", () => {
wikishield.whitelist.add(edit.user.name);
contextMenu.remove();
});
contextMenu.querySelector("#context-open-history").addEventListener("click", () => {
window.open(wikishield.util.pageLink(`Special:PageHistory/${edit.page.title}`));
contextMenu.remove();
});
contextMenu.querySelector("#context-open-contribs").addEventListener("click", () => {
window.open(wikishield.util.pageLink(`Special:Contributions/${edit.user.name}`));
contextMenu.remove();
});
contextMenu.addEventListener("click", (mevent) => {
mevent.stopPropagation();
});
});
elem.addEventListener("click", () => {
wikishield.queue.currentEdit = edit;
this.renderQueue(wikishield.queue.queue, edit);
// Trigger AI analysis when clicking to view a different edit
if (edit && wikishield.options.enableOllamaAI && wikishield.ollamaAI) {
wikishield.ollamaAI.analyzeEdit(edit).then(analysis => {
edit.aiAnalysis = analysis;
if (wikishield.queue.currentEdit === edit && wikishield.interface) {
wikishield.interface.updateAIAnalysisDisplay(analysis);
}
}).catch(err => {
console.error("AI analysis failed:", err);
});
}
});
}
if (edit === currentEdit) {
elem.classList.add("queue-edit-current");
} else {
elem.classList.remove("queue-edit-current");
}
lastEditElem = elem;
}
if (this.lastCurrentEdit !== currentEdit) {
this.lastCurrentEdit = currentEdit;
this.newEditSelected(currentEdit);
}
}
/**
* Generate the HTML for a single edit in the queue, user edits, or page history sections
* @param {Object} edit
* @param {Boolean} includeORES include the ORES score of the edit
* @param {Boolean} includeTitle include the page title
* @param {Boolean} includeUser include the name of the user who made the edit
* @param {Boolean} includeTime include the edit's timestamp
*/
generateEditHTML(edit, includeORES=true, includeTitle=true, includeUser=true, includeTime=false) {
let tagHTML = "";
for (const tag of edit.tags) {
tagHTML += `<span class="queue-edit-tag">${tag}</span>`;
}
const diff = edit.sizediff || 0;
const summaryTruncated = edit.comment ? wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.comment, 100)) : "";
const summaryFull = edit.comment ? wikishield.util.escapeHtml(edit.comment) : "";
// Add minor edit indicator before summary
const minorIndicator = edit.minor ? `<span class="minor-indicator" data-tooltip="Minor edit">m</span> ` : "";
const oresHTML = includeORES ? `<div class="queue-edit-color" style="background: ${this.getORESColor(edit.ores || 0)};"></div>` : "";
const titleHTML = includeTitle ? `
<div class="queue-edit-title" data-tooltip="${edit.page ? edit.page.title : edit.title}">
<span class="fa fa-file-lines queue-edit-icon"></span>
${edit.page ? edit.page.title : edit.title}
</div>` : "";
// Determine user highlight classes
let userClasses = "";
if (edit.user && wikishield.highlighted.has(edit.user.name)) {
userClasses = "queue-edit-user-highlight";
} else if (edit.user && typeof edit.user === "object" && edit.user.emptyTalkPage) {
userClasses = "queue-edit-user-empty-talk";
}
const userHTML = includeUser ? `
<div class="queue-edit-user ${userClasses}">
<span class="fa fa-user queue-edit-icon"></span>
${!edit.user ? "<em>Username removed</em>" : typeof edit.user === "string" ? edit.user : edit.user.name}
</div>` : "";
const timeHTML = includeTime ? `
<div class="queue-edit-time" data-tooltip="${edit.timestamp}">
<span class="fa fa-clock queue-edit-icon"></span>
${wikishield.util.timeAgo(edit.timestamp)}
</div>` : "";
return `
${oresHTML}
<div class="queue-edit-content">
${titleHTML}
${userHTML}
<div class="queue-edit-summary" data-tooltip="${summaryFull}">
<span class="fa fa-comment-dots queue-edit-icon"></span>
${minorIndicator}${summaryTruncated || "<em>No summary provided</em>"}
</div>
${timeHTML}
<div class="queue-edit-tags">
${tagHTML}
</div>
</div>
<div class="queue-edit-change" style="${Math.abs(diff) >= 500 ? "font-weight: bold;" : ""}color: ${wikishield.util.getChangeColor(diff)}">
${wikishield.util.getChangeString(diff)}
</div>
`;
}
/**
* Update the main container when a new edit is selected
* @param {Object} edit
*/
async newEditSelected(edit) {
// Close all bottom menu popups when switching pages
this.closeAllMenus();
const userContribsLevel = this.elem("#user-contribs-level");
const contribsContainer = this.elem("#user-contribs-content"),
historyContainer = this.elem("#page-history-content");
contribsContainer.innerHTML = "";
historyContainer.innerHTML = "";
// Remove any existing tooltips when switching diffs
this.removeTooltips();
if (edit === null) {
this.elem("#right-top").innerHTML = "";
this.elem("#user-contribs-count").innerText = "_ edits";
userContribsLevel.style.display = "none";
this.elem("#diff-container").innerHTML = "";
// Remove AI analysis container when no edit
const aiContainer = document.querySelector("#ai-analysis-container");
if (aiContainer) {
aiContainer.remove();
}
// Remove old edit notice when no edit
const noticeContainer = document.querySelector("#old-edit-notice");
if (noticeContainer) {
noticeContainer.remove();
}
// Update diff height
this.updateDiffContainerHeight();
// Hide block count indicator
const blockIndicator = document.querySelector("#user-contribs #block-count-indicator");
if (blockIndicator) {
blockIndicator.style.display = "none";
blockIndicator.innerHTML = "";
}
// Clear protection indicator
const protIndicator = document.querySelector("#page-history #protection-indicator");
if (protIndicator) {
protIndicator.innerHTML = "";
}
return;
}
// If this is the first time viewing this edit, check for newer revisions
if (!edit.reviewed && edit.page.history && edit.page.history.length > 0) {
const newestRevision = edit.page.history[0];
if (newestRevision.revid !== edit.revid) {
// There's a newer revision, load it
await wikishield.queue.loadFromHistory(newestRevision.revid);
return; // Exit early since loadFromHistory will trigger newEditSelected again
}
}
userContribsLevel.style.display = "initial";
userContribsLevel.style.background = wikishieldData.warningTemplateColors[edit.user.warningLevel] || "grey";
userContribsLevel.innerText = edit.user.warningLevel;
// Fetch warning history for tooltip
if (edit.user.warningLevel !== "0") {
wikishield.api.getSinglePageContent(`User talk:${edit.user.name}`).then(talkContent => {
const warningHistory = wikishield.queue.getWarningHistory(talkContent);
if (warningHistory.length > 0) {
let tooltipHtml = '<div class="tooltip-title">⚠️ Warning History</div>';
warningHistory.slice(0, 5).forEach(warning => {
const templateDisplay = `${warning.template}${warning.level}`;
const articleInfo = warning.article ? `<span class="tooltip-item-article"> (${wikishield.util.escapeHtml(warning.article)})</span>` : "";
const userInfo = warning.username ? `User:${wikishield.util.escapeHtml(warning.username)}` : (warning.timestamp || warning.section);
tooltipHtml += `<div class="tooltip-item">`;
tooltipHtml += `<span class="tooltip-item-level">${wikishield.util.escapeHtml(templateDisplay)}</span>`;
tooltipHtml += articleInfo;
tooltipHtml += `<br><span class="tooltip-item-time">${wikishield.util.escapeHtml(userInfo)}</span>`;
tooltipHtml += `</div>`;
});
if (warningHistory.length > 5) {
tooltipHtml += `<div class="tooltip-more">... and ${warningHistory.length - 5} more</div>`;
}
userContribsLevel.setAttribute("data-tooltip", tooltipHtml);
userContribsLevel.setAttribute("data-tooltip-html", "true");
} else {
userContribsLevel.setAttribute("data-tooltip", `Warning level: ${edit.user.warningLevel}`);
userContribsLevel.setAttribute("data-tooltip-html", "false");
}
}).catch(() => {
userContribsLevel.setAttribute("data-tooltip", `Warning level: ${edit.user.warningLevel}`);
userContribsLevel.setAttribute("data-tooltip-html", "false");
});
} else {
userContribsLevel.setAttribute("data-tooltip", "No warnings");
userContribsLevel.setAttribute("data-tooltip-html", "false");
}
this.elem("#user-contribs-count").innerText = edit.user.editCount === -1 ? "N/A edits"
: edit.user.editCount + " edit" + (edit.user.editCount === 1 ? "" : "s");
const summaryTruncated = edit.comment ? wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.comment, 150)) : "";
const summaryFull = edit.comment ? wikishield.util.escapeHtml(edit.comment) : "";
const minorIndicator = edit.minor ? `<span class="minor-indicator" data-tooltip="Minor edit">m</span> ` : "";
const title = wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.page.title, 50));
const titleFull = wikishield.util.escapeHtml(edit.page.title);
const username = wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.user.name, 30));
const usernameFull = wikishield.util.escapeHtml(edit.user.name);
// Fetch page protection info and user block count
const protectionPromise = wikishield.api.getPageProtection(edit.page.title);
const blockCountPromise = wikishield.api.getBlockCount(edit.user.name);
this.elem("#right-top").innerHTML = `
<div>
<span class="fa fa-file-lines"></span>
<a href="${wikishield.util.pageLink(edit.page.title)}" target="_blank" data-tooltip="${titleFull}">${title}</a>
</div>
<div>
<span class="fa fa-user"></span>
<a href="${wikishield.util.pageLink("Special:Contributions/" + edit.user.name)}" target="_blank" data-tooltip="${usernameFull}">${username}</a>
</div>
<div>
<span class="fa fa-pencil"></span>
<span style="color: ${wikishield.util.getChangeColor(edit.sizediff || 0)}">${wikishield.util.getChangeString(edit.sizediff || 0)}</span>
</div>
<div class="right-top-comment" data-tooltip="${summaryFull}">
<span class="fa fa-comment-dots"></span>
${minorIndicator}${summaryTruncated || "<em>No summary provided</em>"}
</div>
`;
// Highlight username in top bar based on status (same as queue highlighting)
const myUsername = mw.config.get("wgUserName");
const rightTop = this.elem("#right-top");
const userDiv = rightTop.children[1]; // Second div contains the username
if (userDiv) {
// Detect current theme
const isDarkMode = wikishield.options.theme === "theme-dark";
// Apply padding and border radius for highlights
const highlightStyle = "padding: 4px 8px; border-radius: 4px;";
// Check if user is highlighted (yellow) or has empty talk page (red)
if (wikishield.highlighted.has(edit.user.name)) {
const bgColor = isDarkMode ? "#727237" : "#ffffbe"; // Yellow highlight
userDiv.style.cssText = `background: ${bgColor}; ${highlightStyle}`;
} else if (edit.user.emptyTalkPage) {
const bgColor = isDarkMode ? "#6b3737" : "#ffcccc"; // Red highlight for empty talk page
userDiv.style.cssText = `background: ${bgColor}; ${highlightStyle}`;
}
// Also add outline if it's the current user's name
if (myUsername && edit.user.name === myUsername) {
userDiv.style.outline = "2px solid #ffc107";
userDiv.style.outlineOffset = "-2px";
}
}
// Load protection info and display in page history header
protectionPromise.then(protection => {
const protIndicator = document.querySelector("#page-history #protection-indicator");
if (protIndicator) {
if (protection.protected) {
let icon = "🔒";
let tooltip = "Protected";
if (protection.level === "full") {
icon = "🔒";
tooltip = "Fully protected";
} else if (protection.level === "semi") {
icon = "🔓";
tooltip = "Semi-protected";
} else if (protection.level === "extended") {
icon = "🔐";
tooltip = "Extended confirmed protected";
}
protIndicator.innerHTML = `<span style="cursor: help;" data-tooltip="${tooltip}">${icon}</span>`;
this.addTooltipListener(protIndicator.querySelector("[data-tooltip]"));
} else {
protIndicator.innerHTML = "";
}
}
});
// Load block count and display next to warning level
blockCountPromise.then(async blockCount => {
const blockIndicator = document.querySelector("#user-contribs #block-count-indicator");
if (blockIndicator) {
if (blockCount > 0) {
// Fetch detailed block history for tooltip
const blockHistory = await wikishield.api.getBlockHistory(edit.user.name);
let tooltipHtml = `<div class="tooltip-title">🚫 Block History (${blockCount} total)</div>`;
if (blockHistory.length > 0) {
blockHistory.forEach(block => {
// Extract plain text from blocker name (remove any HTML tags)
let blockerName = block.user || "Unknown";
blockerName = blockerName.replace(/<[^>]*>/g, '');
const timestamp = new Date(block.timestamp).toLocaleString('en-US', {
month: 'short',
day: 'numeric',
year: 'numeric',
hour: '2-digit',
minute: '2-digit'
});
// Extract plain text from duration (remove any HTML tags)
let duration = block.params?.duration || "Unknown duration";
duration = duration.replace(/<[^>]*>/g, '');
// Extract plain text from reason (remove any HTML tags)
let reason = block.comment || "No reason specified";
reason = reason.replace(/<[^>]*>/g, '');
tooltipHtml += `<div class="tooltip-item">`;
tooltipHtml += `<span class="tooltip-item-level">By ${wikishield.util.escapeHtml(blockerName)}</span><br>`;
tooltipHtml += `<span class="tooltip-item-time">${timestamp} • ${wikishield.util.escapeHtml(duration)}</span><br>`;
tooltipHtml += `<span class="tooltip-item-article">${wikishield.util.escapeHtml(reason)}</span>`;
tooltipHtml += `</div>`;
});
if (blockCount > blockHistory.length) {
tooltipHtml += `<div class="tooltip-more">... and ${blockCount - blockHistory.length} more</div>`;
}
}
blockIndicator.style.display = "initial";
blockIndicator.innerHTML = `<span style="cursor: help;" data-tooltip="${wikishield.util.escapeHtml(tooltipHtml)}" data-tooltip-html="true">${blockCount}×</span>`;
this.addTooltipListener(blockIndicator.querySelector("[data-tooltip]"));
} else {
blockIndicator.style.display = "none";
blockIndicator.innerHTML = "";
}
}
});
// Add tooltip listeners to the new elements
[...this.elem("#right-top").querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
// Update page metadata display
const metadataElem = this.elem("#page-metadata");
if (metadataElem) {
const parts = [];
if (edit.page.dateFormat && edit.page.dateFormat !== "Unknown") {
parts.push(edit.page.dateFormat);
}
if (edit.page.englishVariant && edit.page.englishVariant !== "Unknown") {
parts.push(edit.page.englishVariant);
}
metadataElem.innerHTML = parts.length > 0 ? parts.join(" • ") : "";
}
for (const cedit of edit.user.contribs) {
const current = cedit.revid === wikishield.queue.currentEdit.revid ? "queue-edit-current" : "";
contribsContainer.innerHTML += `
<div class="queue-edit ${current}" data-revid="${cedit.revid}">
${this.generateEditHTML(cedit, false, true, false, true)}
</div>
`;
}
for (const hedit of edit.page.history) {
const current = hedit.revid === wikishield.queue.currentEdit.revid ? "queue-edit-current" : "";
historyContainer.innerHTML += `
<div class="queue-edit ${current}" data-revid="${hedit.revid}">
${this.generateEditHTML(hedit, false, false, true, true)}
</div>
`;
}
[
...contribsContainer.querySelectorAll("[data-tooltip]"),
...historyContainer.querySelectorAll("[data-tooltip]")
].forEach(elem => this.addTooltipListener(elem));
[...contribsContainer.querySelectorAll(".queue-edit")].forEach(elem => {
elem.addEventListener("click", () => wikishield.queue.loadFromContribs(elem.dataset["revid"]));
});
[...historyContainer.querySelectorAll(".queue-edit")].forEach(elem => {
elem.addEventListener("click", () => wikishield.queue.loadFromHistory(elem.dataset["revid"]));
});
this.elem("#diff-container").innerHTML = `<table>${edit.diff}</table>`;
// Remove any existing old edit notice
const existingNotice = document.querySelector("#old-edit-notice");
if (existingNotice) {
existingNotice.remove();
}
// Show compact notice if not viewing the most recent edit
const isNewestEdit = wikishield.queue.queue.length > 0 &&
wikishield.queue.queue[0].revid === edit.revid;
if (!isNewestEdit && wikishield.queue.queue.length > 0) {
const newestEdit = wikishield.queue.queue[0];
const noticeDiv = document.createElement("div");
noticeDiv.id = "old-edit-notice";
noticeDiv.style.cssText = `
margin: 10px 10px 0 10px;
padding: 8px 12px;
background: #fff3cd;
border-left: 4px solid #ffc107;
border-radius: 4px;
color: #856404;
display: flex;
align-items: center;
gap: 8px;
font-size: 0.9em;
flex-shrink: 0;
`;
noticeDiv.innerHTML = `
<span class="fa fa-info-circle"></span>
<span style="flex: 1;">Viewing older edit</span>
<a href="#" id="view-newest-edit" style="color: #004085; font-weight: 600; text-decoration: none; white-space: nowrap;">
View latest →
</a>
`;
this.elem("#diff-container").parentElement.insertBefore(noticeDiv, this.elem("#diff-container"));
// Add click handler for the link
document.getElementById("view-newest-edit").addEventListener("click", (e) => {
e.preventDefault();
wikishield.queue.currentEdit = newestEdit;
wikishield.interface.renderQueue(wikishield.queue.queue, newestEdit);
});
// Update diff height after adding notice
this.updateDiffContainerHeight();
} else {
// Update diff height when no notice
this.updateDiffContainerHeight();
}
// Highlight elements containing current user's username in the diff
const currentUsername = mw.config.get("wgUserName");
if (currentUsername) {
const diffContainer = this.elem("#diff-container");
// Find all elements (typically td cells) in the diff
const allElements = diffContainer.querySelectorAll("td");
allElements.forEach(elem => {
if (elem.textContent.includes(currentUsername)) {
elem.style.outline = "2px solid #ffc107";
elem.style.outlineOffset = "-2px";
}
});
}
// Scroll to the first changed line in the diff
const diffContainer = this.elem("#diff-container");
const firstChange = diffContainer.querySelector(".diff-addedline, .diff-deletedline");
if (firstChange) {
// Use setTimeout to ensure the DOM is fully rendered before scrolling
setTimeout(() => {
firstChange.scrollIntoView({ behavior: "smooth", block: "center" });
}, 100);
}
// Display AI analysis if available
this.updateAIAnalysisDisplay(edit.aiAnalysis);
}
/**
* Update or create AI analysis display
* @param {Object} analysis The AI analysis object
*/
updateAIAnalysisDisplay(analysis) {
// Find or create AI analysis container
let aiContainer = document.querySelector("#ai-analysis-container");
if (!analysis) {
// Remove AI container if no analysis
if (aiContainer) {
aiContainer.remove();
}
this.updateDiffContainerHeight();
return;
}
if (!aiContainer) {
// Create container if it doesn't exist
const diffContainer = document.querySelector("#diff-container");
if (!diffContainer) return;
aiContainer = document.createElement("div");
aiContainer.id = "ai-analysis-container";
aiContainer.style.cssText = `
margin: 10px 10px 0 10px;
padding: 0;
border-radius: 8px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
overflow: auto;
flex-shrink: 0;
`;
diffContainer.parentElement.insertBefore(aiContainer, diffContainer);
}
if (analysis.error) {
aiContainer.innerHTML = `
<div style="display: flex; align-items: center; gap: 8px; padding: 12px;">
<span class="fa fa-exclamation-triangle"></span>
<span>AI analysis failed: ${analysis.error}</span>
</div>
`;
this.updateDiffContainerHeight();
return;
}
// Build issue badges
let issueHTML = '';
if (analysis.hasIssues && analysis.issues && analysis.issues.length > 0) {
const severityColors = {
'critical': '#dc3545',
'major': '#fd7e14',
'minor': '#ffc107'
};
const typeIcons = {
'vandalism': 'fa-skull-crossbones',
'spam': 'fa-spam',
'pov': 'fa-balance-scale',
'unsourced': 'fa-question-circle',
'attack': 'fa-bomb',
'copyright': 'fa-copyright',
'disruptive': 'fa-circle-exclamation',
'error': 'fa-bug',
'policy': 'fa-gavel',
'ai-generated': 'fa-robot'
};
issueHTML = '<div style="display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px;">';
for (const issue of analysis.issues.slice(0, 5)) {
const iconClass = typeIcons[issue.type] || 'fa-exclamation-circle';
const bgColor = severityColors[issue.severity] || '#6c757d';
issueHTML += `
<span style="
display: inline-flex;
align-items: center;
gap: 4px;
padding: 4px 8px;
background: ${bgColor};
border-radius: 4px;
font-size: 0.85em;
font-weight: 500;
" data-tooltip="${wikishield.util.escapeHtml(issue.description)}">
<span class="fa ${iconClass}"></span>
${issue.type}
</span>
`;
}
if (analysis.issues.length > 5) {
issueHTML += `<span style="opacity: 0.8;">+${analysis.issues.length - 5} more</span>`;
}
issueHTML += '</div>';
}
// Build recommendation/action badge
const actionColors = {
'rollback': '#dc3545',
'warn-and-revert': '#e74c3c',
'warn': '#fd7e14',
'report-uaa': '#9b59b6',
'report-aiv': '#8e44ad',
'review': '#ffc107',
'approve': '#28a745',
'thank': '#17a2b8',
'welcome': '#20c997'
};
const actionIcons = {
'rollback': 'fa-rotate-left',
'warn-and-revert': 'fa-exclamation-triangle',
'warn': 'fa-exclamation-triangle',
'report-uaa': 'fa-flag',
'report-aiv': 'fa-gavel',
'review': 'fa-eye',
'approve': 'fa-check-circle',
'thank': 'fa-heart',
'welcome': 'fa-hand-wave'
};
const action = analysis.action || 'review';
const actionColor = actionColors[action] || '#6c757d';
const actionIcon = actionIcons[action] || 'fa-question';
const probability = analysis.probability || 0;
aiContainer.innerHTML = `
<div style="padding: 12px;">
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 8px;">
<span class="fa fa-robot" style="font-size: 1.2em;"></span>
<strong>AI Analysis</strong>
<span style="
padding: 2px 8px;
background: rgba(255,255,255,0.2);
border-radius: 4px;
font-size: 0.85em;
">
${probability}% probability
</span>
<span style="
padding: 2px 8px;
background: rgba(255,255,255,0.15);
border-radius: 4px;
font-size: 0.85em;
">
${analysis.confidence || 'unknown'} confidence
</span>
<span style="
display: inline-flex;
align-items: center;
gap: 4px;
padding: 3px 8px;
background: ${actionColor};
border-radius: 4px;
font-size: 0.85em;
font-weight: 500;
margin-left: auto;
">
<span class="fa ${actionIcon}"></span>
${action.replace(/-/g, ' ')}
</span>
</div>
<div style="opacity: 0.95; font-size: 0.95em; margin-bottom: 4px;">
<strong>Summary:</strong> ${analysis.summary}
</div>
${analysis.reasoning ? `
<div style="opacity: 0.9; font-size: 0.85em; margin-bottom: 4px; padding: 6px; background: rgba(0,0,0,0.1); border-radius: 4px;">
<strong>🔍 Reasoning:</strong> ${analysis.reasoning}
</div>
` : ''}
<div style="opacity: 0.9; font-size: 0.9em; margin-bottom: 4px;">
<strong>Recommendation:</strong> ${analysis.recommendation}
</div>
${issueHTML}
</div>
`; // Add tooltip listeners to issue badges
aiContainer.querySelectorAll('[data-tooltip]').forEach(elem => {
this.addTooltipListener(elem);
});
// Update diff container height after AI analysis is displayed
this.updateDiffContainerHeight();
}
/**
* Dynamically adjust diff container height based on AI analysis and notices
*/
updateDiffContainerHeight() {
// Since we're using flexbox, we don't need to manually calculate height
// The diff-container will automatically fill available space
// This method is kept for potential future use or other adjustments
} /**
* Create a tooltip when an element is hovered over
* @param {HTMLElement} elem
*/
addTooltipListener(elem) {
elem.addEventListener("mouseenter", () => {
this.removeTooltips();
if (!elem.dataset.tooltip) {
return;
}
const tooltip = document.createElement("div");
tooltip.classList.add("tooltip");
// Check if tooltip content is HTML or plain text
if (elem.dataset.tooltipHtml === "true") {
tooltip.innerHTML = elem.dataset.tooltip;
} else {
tooltip.innerText = elem.dataset.tooltip;
}
document.body.appendChild(tooltip);
// Force a reflow to ensure dimensions are calculated
tooltip.offsetHeight;
const tooltipWidth = tooltip.getBoundingClientRect().width,
tooltipHeight = tooltip.getBoundingClientRect().height;
const elemBox = elem.getBoundingClientRect();
// Calculate center position for the tooltip
const centerLeft = (elemBox.left + elemBox.right - tooltipWidth) / 2;
const canFitRight = elemBox.right < window.innerWidth - tooltipWidth - 30;
const canFitLeft = elemBox.left > tooltipWidth + 30;
// Check if tooltip can fit centered AND if centered position is actually on screen
const canFitMiddle = centerLeft > 10 && centerLeft + tooltipWidth < window.innerWidth - 10;
const canFitTop = canFitMiddle && elemBox.top > tooltipHeight + 30;
const canFitBottom = canFitMiddle && elemBox.bottom < window.innerHeight - tooltipHeight - 30;
// Position the tooltip
if (canFitTop) {
tooltip.style.left = (elemBox.left + elemBox.right - tooltipWidth) / 2 + "px";
tooltip.style.top = (elemBox.top - tooltipHeight - 10) + "px";
} else if (canFitBottom) {
tooltip.style.left = (elemBox.left + elemBox.right - tooltipWidth) / 2 + "px";
tooltip.style.top = (elemBox.bottom + 10) + "px";
} else if (canFitRight) {
tooltip.style.left = (elemBox.right + 10) + "px";
tooltip.style.top = (elemBox.top - 4) + "px";
} else if (canFitLeft) {
tooltip.style.left = (elemBox.left - 10 - tooltipWidth) + "px";
tooltip.style.top = (elemBox.top - 4) + "px";
} else {
// Fallback: center on element, clip if necessary
tooltip.style.left = Math.max(10, (elemBox.left + elemBox.right - tooltipWidth) / 2) + "px";
tooltip.style.top = Math.max(10, elemBox.bottom + 10) + "px";
}
tooltip.style.opacity = 1;
});
elem.addEventListener("mouseleave", () => {
this.removeTooltips();
});
}
/**
* Delete all existing tooltip elements
*/
removeTooltips() {
[...document.querySelectorAll(".tooltip")].forEach(elem => {
elem.style.opacity = 0;
window.setTimeout(() => elem.remove(), 200);
});
}
/**
* Remove all elements from the queue
*/
clearQueue() {
this.elem("#queue-items").innerHTML = "";
}
/**
* Remove a specific item from the queue
* @param {Number} revid
*/
removeQueueItem(revid) {
const elem = this.elem(`.queue-edit[data-revid="${revid}"]`);
if (elem) {
elem.remove();
}
}
/**
* From the ORES score, get the color to display
* @param {Number} ores The ORES score
* @returns {String} The color to display
*/
getORESColor(ores) {
const colors = wikishieldData.colorPalettes[wikishield.options.selectedPalette];
return colors[Math.floor(ores * colors.length)];
}
/**
* Return a specific element
* @param {String} selector
* @returns
*/
elem(selector) {
return document.querySelector(selector);
}
/**
* Escape HTML to prevent XSS
*/
escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
/**
* Show a toast notification on screen
* @param {String} title - Title of the notification
* @param {String} message - Message content
* @param {Number} duration - How long to show (ms), default 5000
*/
showToast(title, message, duration = 5000) {
// Create toast element
const toast = document.createElement("div");
toast.classList.add("toast-notification");
toast.innerHTML = `
<div class="toast-icon">⚠️</div>
<div class="toast-content">
<div class="toast-title">${this.escapeHtml(title)}</div>
<div class="toast-message">${this.escapeHtml(message)}</div>
</div>
<div class="toast-close">×</div>
`;
document.body.appendChild(toast);
// Trigger animation
setTimeout(() => toast.classList.add("show"), 10);
// Close button handler
const closeBtn = toast.querySelector(".toast-close");
closeBtn.addEventListener("click", () => {
this.hideToast(toast);
});
// Auto-hide after duration
setTimeout(() => {
this.hideToast(toast);
}, duration);
}
/**
* Hide and remove a toast notification
*/
hideToast(toast) {
if (!toast || !toast.parentElement) return;
toast.classList.add("hide");
setTimeout(() => {
if (toast.parentElement) {
toast.remove();
}
}, 300);
}
/**
* Show UAA reason selection dialog
* @param {String} username - Username to report
* @returns {Promise<String|null>} Selected reason or null if cancelled
*/
showUAAReasonDialog(username) {
return new Promise((resolve) => {
// Create overlay
const overlay = document.createElement("div");
overlay.classList.add("confirmation-modal-overlay");
// Create modal
const modal = document.createElement("div");
modal.classList.add("confirmation-modal");
modal.innerHTML = `
<div class="confirmation-modal-header">
<div class="confirmation-modal-title">Report to UAA</div>
</div>
<div class="confirmation-modal-body">
Select reason for reporting <span class="confirmation-modal-username">${this.escapeHtml(username)}</span>:
</div>
<div class="confirmation-modal-footer confirmation-modal-footer-vertical">
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Disruptive username">Disruptive username</button>
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Offensive username">Offensive username</button>
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Promotional username">Promotional username</button>
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Misleading username">Misleading username</button>
<button class="confirmation-modal-button confirmation-modal-button-cancel">Cancel</button>
</div>
`;
overlay.appendChild(modal);
document.body.appendChild(overlay);
// Disable all keybinds while modal is open
const keyHandler = (e) => {
if (e.key === "Escape") {
e.preventDefault();
e.stopPropagation();
closeModal(null);
return false;
} else if (e.key !== "Tab") {
e.preventDefault();
e.stopPropagation();
return false;
}
};
document.addEventListener("keydown", keyHandler, true);
const closeModal = (result) => {
document.removeEventListener("keydown", keyHandler, true);
overlay.classList.add("closing");
modal.classList.add("closing");
setTimeout(() => {
overlay.remove();
resolve(result);
}, 200);
};
// Handle reason button clicks
modal.querySelectorAll(".confirmation-modal-button-reason").forEach(btn => {
btn.addEventListener("click", () => {
closeModal(btn.dataset.reason);
});
});
// Handle cancel button
modal.querySelector(".confirmation-modal-button-cancel").addEventListener("click", () => {
closeModal(null);
});
// Close on overlay click
overlay.addEventListener("click", (e) => {
if (e.target === overlay) {
closeModal(null);
}
});
});
}
/**
* Show a confirmation dialog and return a promise that resolves to true (Yes) or false (No)
* @param {String} title - Dialog title
* @param {String} message - Dialog message (can include HTML)
* @param {String} username - Optional username to enable UAA report button
*/
showConfirmationDialog(title, message, username = null) {
return new Promise((resolve) => {
// Create overlay
const overlay = document.createElement("div");
overlay.classList.add("confirmation-modal-overlay");
// Create modal
const modal = document.createElement("div");
modal.classList.add("confirmation-modal");
const uaaButton = username ? `<button class="confirmation-modal-button confirmation-modal-button-uaa">Report to UAA</button>` : '';
modal.innerHTML = `
<div class="confirmation-modal-header">
<div class="confirmation-modal-title">${this.escapeHtml(title)}</div>
</div>
<div class="confirmation-modal-body">${message}</div>
<div class="confirmation-modal-footer">
${uaaButton}
<div class="confirmation-modal-footer-right">
<button class="confirmation-modal-button confirmation-modal-button-no">No</button>
<button class="confirmation-modal-button confirmation-modal-button-yes">Yes</button>
</div>
</div>
`;
overlay.appendChild(modal);
document.body.appendChild(overlay);
// Disable all keybinds while modal is open
const keyHandler = (e) => {
// Only allow Tab, Enter, Escape
if (e.key === "Enter") {
e.preventDefault();
e.stopPropagation();
closeModal(true);
return false;
} else if (e.key === "Escape") {
e.preventDefault();
e.stopPropagation();
closeModal(false);
return false;
} else if (e.key !== "Tab") {
// Block all other keys
e.preventDefault();
e.stopPropagation();
return false;
}
};
document.addEventListener("keydown", keyHandler, true);
// Handle button clicks
const yesBtn = modal.querySelector(".confirmation-modal-button-yes");
const noBtn = modal.querySelector(".confirmation-modal-button-no");
const uaaBtn = modal.querySelector(".confirmation-modal-button-uaa");
const closeModal = (result) => {
// Remove key handler
document.removeEventListener("keydown", keyHandler, true);
overlay.classList.add("closing");
modal.classList.add("closing");
setTimeout(() => {
overlay.remove();
resolve(result);
}, 200);
};
yesBtn.addEventListener("click", () => closeModal(true));
noBtn.addEventListener("click", () => closeModal(false));
// UAA report button
if (uaaBtn && username) {
uaaBtn.addEventListener("click", async () => {
// Close the current modal first
document.removeEventListener("keydown", keyHandler, true);
overlay.classList.add("closing");
modal.classList.add("closing");
setTimeout(async () => {
overlay.remove();
// Show UAA reason selection dialog
const reason = await this.showUAAReasonDialog(username);
if (reason) {
// User selected a reason, proceed with report
const progressBar = new wikishieldProgressBar();
progressBar.set("Reporting to UAA...", 0.5, "var(--main-blue)");
try {
await wikishield.reportToUAA(username, reason);
progressBar.set(`Reported ${username} to UAA`, 1, "var(--main-green)");
} catch (err) {
progressBar.set("Report failed", 1, "var(--main-red)");
console.error("UAA report error:", err);
}
resolve(false);
} else {
// User cancelled, show the welcome dialog again
const confirmed = await this.showConfirmationDialog(title, message, username);
resolve(confirmed);
}
}, 200);
});
}
// Close on overlay click
overlay.addEventListener("click", (e) => {
if (e.target === overlay) {
closeModal(false);
}
});
// Focus the Yes button by default
setTimeout(() => yesBtn.focus(), 50);
});
}
}
class wikishieldProgressBar {
constructor() {
this.element = document.createElement("div");
this.element.className = "progress-bar"; this.overlay = document.createElement("div");
this.overlay.className = "progress-bar-overlay";
this.text = document.createElement("div");
this.text.className = "progress-bar-text";
wikishield.interface.elem("#progress-bar-container").appendChild(this.element);
this.element.appendChild(this.overlay);
this.element.appendChild(this.text);
this.nextChangeTime = 0;
}
/**
* Set the progress bar's text, width, and color; remove after 2s if at 100%
* @param {String} text The text to display
* @param {Number} width The width of the progress bar
* @param {String} color The color of the progress bar
*/
set(text, width, color) {
const delay = Math.max(0, this.nextChangeTime - new Date().getTime());
window.setTimeout(() => {
this.text.innerHTML = text;
this.overlay.style.width = `${Math.round(width * 100)}%`;
this.overlay.style.background = color;
if (width === 1) {
this.remove(2000);
}
}, delay);
this.nextChangeTime = Math.max(new Date().getTime() + 200, this.nextChangeTime + 200);
}
/**
* Remove the progress bar after a given time
* @param {Number} time The time to wait before removing the progress bar
*/
remove(time) {
window.setTimeout(() => {
this.element.style.opacity = "0";
}, time - 300);
window.setTimeout(() => {
this.element.remove();
}, time);
}
}
// </nowiki>
// <nowiki>
class wikishield {
constructor() {
this.options = this.loadOptions();
this.statistics = this.loadStats();
this.interface = new wikishieldInterface();
this.queue = new wikishieldQueue();
this.api = new wikishieldAPI(new mw.Api());
this.logger = new wikishieldLog();
this.util = new wikishieldUtil();
this.whitelist = new Set();
this.highlighted = new Set();
this.noAutoWelcomeList = new Set(); // Track users who shouldn't be auto-welcomed
// Initialize Ollama AI if enabled (preserves last saved state)
this.ollamaAI = null;
if (this.options.enableOllamaAI) {
this.ollamaAI = new wikishieldOllamaAI(
this.options.ollamaServerUrl,
this.options.ollamaModel
);
this.logger.log("Ollama AI integration enabled");
}
this.aivReports = [];
this.uaaReports = [];
this.rights = {
rollback: false,
protect: false,
block: false
};
this.username = mw.config.values.wgUserName;
this.handleLoadingReported();
this.handleLoadingNotifications();
this.testingMode = false;
this.tempCurrentEdit = null;
this.notifications = [];
this.lastSeenRevision = null;
}
/**
* Create the interface for checking if the user is allowed to use wikishield
*/
async startInterface() {
const userRights = await mw.user.getRights();
this.rights.rollback = userRights.includes("rollback");
this.rights.protect = userRights.includes("protect");
this.rights.block = userRights.includes("block");
this.interface.build();
this.handleUpdatingContributions();
}
/**
* Fetch and display the current user's total contribution count
*/
async updateMyContributions() {
try {
const result = await this.api.api.get({
action: "query",
list: "users",
ususers: this.username,
usprop: "editcount"
});
if (result.query && result.query.users && result.query.users[0]) {
const editCount = result.query.users[0].editcount || 0;
const statElem = document.querySelector("#stat-total-contribs");
if (statElem) {
statElem.textContent = editCount.toLocaleString();
}
}
} catch (err) {
console.log("Failed to fetch user contribution count:", err);
}
}
/**
* Start periodic updates of contribution count every 10 seconds
*/
handleUpdatingContributions() {
this.updateMyContributions();
window.setTimeout(() => {
this.handleUpdatingContributions();
}, 10000); // Update every 10 seconds
}
/**
* Create the main interface
*/
start() {
this.interface.start();
this.queue.fetchRecentChanges();
}
/**
* Load options from storage; if an option is missing, add it with the default value
* @returns {Object} The options object
*/
loadOptions() {
let options = {};
try {
options = JSON.parse(mw.storage.store.getItem("wikishieldSettings"));
} catch (err) {}
if (!options) {
options = {};
}
for (const item in wikishieldData.defaultSettings) {
if (typeof options[item] === "undefined") {
options[item] = wikishieldData.defaultSettings[item];
}
if (typeof options[item] === "object") {
for (const subitem in wikishieldData.defaultSettings[item]) {
if (typeof options[item][subitem] === "undefined") {
options[item][subitem] = wikishieldData.defaultSettings[item][subitem];
}
}
}
}
for (const item in options.controls) {
if (typeof options.controls[item] === "string") {
options.controls[item] = [options.controls[item]];
}
for (let i = 0; i < options.controls[item].length; i++) {
options.controls[item][i] = options.controls[item][i].toLowerCase();
}
}
this.saveOptions(options);
return options;
}
/**
* Save options to storage
* @param {Object} options The options object
*/
saveOptions(options) {
mw.storage.store.setItem("wikishieldSettings", JSON.stringify(options));
}
/**
* Load the changelog version from storage
* @returns {String} The changelog version
*/
getChangelogVersion() {
const version = mw.storage.store.getItem("wikishieldChangelogVersion");
if (!version) {
mw.storage.store.setItem("wikishieldChangelogVersion", 0);
return 0;
}
return version;
}
/**
* Update changelog version to hide popup
*/
updateChangelogVersion() {
mw.storage.store.setItem("wikishieldChangelogVersion", wikishieldChangelogVersion);
}
/**
* Load statistics from storage
* @returns {Object} The statistics object
*/
loadStats() {
let stats;
try {
stats = JSON.parse(mw.storage.store.getItem("wikishieldStats"));
} catch (err) {}
if (!stats) {
stats = { reviewed: 0, reverts: 0, reports: 0 };
}
this.saveStats(stats);
return stats;
}
/**
* Save statistics to storage
* @param {Object} stats The statistics object
*/
saveStats(stats) {
mw.storage.store.setItem("wikishieldStats", JSON.stringify(stats));
}
/**
* Revert an edit, using either rollback or manual reverting
* @param {Object} edit The edit object
* @param {String} message Message to use in the edit summary
*/
async revert(edit, message, goodFaith=false) {
if (!edit) {
return;
}
const gfStr = goodFaith ? "[[WP:AGF|good faith]] " : "";
const summary = `Reverted ${gfStr}edits by [[Special:Contributions/${edit.user.name}|${edit.user.name}]] ([[User talk:${edit.user.name}|talk]])${message ? ": " + message : ""} ([[WP:WikiShield|WikiShield]])`;
if (this.rights.rollback) {
const result = await this.api.rollback(edit.page.title, edit.user.name, summary);
if (!result) {
// Rollback failed - show toast notification
this.interface.showToast(
"Revert Failed",
`Could not revert edits on "${edit.page.title}" - a newer edit may have been made`
);
return false;
}
} else {
return false;
}
this.statistics.reverts++;
this.saveStats(this.statistics);
// Update contribution count after successful revert
this.updateMyContributions();
}
/**
* Warn a user with the given template
* @param {String} user The username to warn
* @param {String[]} warningTemplates The warning template set to use
* @param {String|Number} warnLevel Level of warning to use; 1-5 or "auto"
* @param {String} articleName The article name to use in the warning
* @param {Number} revid Edit revid to use in edit summary
*/
async warnUser(user, warningTemplates, warnLevel, articleName, revid) {
if (!warningTemplates) {
return;
}
let userTalkContent = await this.api.getSinglePageContent(`User talk:${user}`);
let warnTemplate = "";
// Handle manual level selection (not "auto")
if (warnLevel !== "auto") {
if (warnLevel === "4im") {
// 4im is the 5th template (index 4)
if (warningTemplates.length >= 5) {
warnTemplate = warningTemplates[4];
} else {
// If no 4im template exists, use the last available template
warnTemplate = warningTemplates[warningTemplates.length - 1];
}
} else if (warnLevel > 0 && warnLevel <= warningTemplates.length) {
// Standard numbered level (1-4)
warnTemplate = warningTemplates[warnLevel - 1];
}
}
// Handle auto level selection
if (warnLevel === "auto") {
const warningLevel = this.queue.getWarningLevel(userTalkContent);
const levelAsNumber = warningLevel === "4im" ? 5 : Number(warningLevel);
if (warningLevel === "4" || warningLevel === "4im" || levelAsNumber >= warningTemplates.length) {
return;
}
warnTemplate = warningTemplates[levelAsNumber];
}
if (!warnTemplate) {
return;
}
if (!userTalkContent.match("== ?" + wikishield.util.monthSectionName() + " ?==")) {
userTalkContent += `\n== ${wikishield.util.monthSectionName()} ==\n`;
}
const sections = userTalkContent.split(/(?=== ?[\w\d ]+ ?==)/g);
for (let section in sections) {
if (sections[section].match(new RegExp("== ?" + wikishield.util.monthSectionName() + " ?=="))) {
// If articleName is null, template doesn't take a parameter
if (articleName) {
sections[section] += `\n\n{{${warnTemplate}|${articleName}}} ~~~~`;
} else {
sections[section] += `\n\n{{${warnTemplate}}} ~~~~`;
}
break;
}
}
const newContent = sections.join("")
.replace(/(\n){3,}/g, "\n\n");
const levelMatch = warnTemplate.match(/(\d(?:im)?)$/);
const levelName = levelMatch ? levelMatch[1] : null;
// Create edit summary based on whether article name is provided
const editSummary = articleName
? (levelName
? `Message about [[Special:Diff/${revid}|your edit]] on [[${articleName}]] (level ${levelName}) ([[WP:WikiShield|WikiShield]])`
: `Message about [[Special:Diff/${revid}|your edit]] on [[${articleName}]] ([[WP:WikiShield|WikiShield]])`)
: (levelName
? `Message about your edits (level ${levelName}) ([[WP:WikiShield|WikiShield]])`
: `Message about your edits ([[WP:WikiShield|WikiShield]])`);
await this.api.edit(
`User talk:${user}`,
newContent,
editSummary
);
// Add user talk page to watchlist with configured expiry
try {
await this.api.postWithToken("watch", {
"action": "watch",
"titles": `User talk:${user}`,
"expiry": wikishield.options.watchlistExpiry
});
} catch (err) {
console.log(`Could not add User talk:${user} to watchlist:`, err);
}
// Update the warning level in the current edit object (only if the template has a numbered level)
if (levelName && this.queue.currentEdit && this.queue.currentEdit.user.name === user) {
console.log(`[warnUser] Updating warning level for ${user} from ${this.queue.currentEdit.user.warningLevel} to ${levelName}`);
console.log(`[warnUser] Original warning level: ${this.queue.currentEdit.user.originalWarningLevel}`);
this.queue.currentEdit.user.warningLevel = levelName;
}
}
/**
* Load the users currently reported to AIV and UAA
*/
async loadReportedUsers() {
try {
const content = await this.api.getText(`${AIVNAME}|${UAANAME}`);
const regex = new RegExp(`{{(?:(?:ip)?vandal|user-uaa)\\|(?:1=)?(.+?)}}`, "gi");
this.aivReports = [...content[AIVNAME].matchAll(regex)]
.map(report => report[1]);
this.uaaReports = [...content[UAANAME].matchAll(regex)]
.map(report => report[1]);
} catch (err) {
console.log("Error while fetching reported users", err);
}
}
/**
* Every 15 seconds, call loadReportedUsers
*/
async handleLoadingReported() {
await this.loadReportedUsers();
window.setTimeout(() => {
this.handleLoadingReported();
}, 15000);
}
/**
* Load notifications from Wikipedia
*/
async loadNotifications() {
try {
// Fetch both Echo notifications (alerts and notices) and talk page edits
const [alertsResponse, noticesResponse, talkResponse] = await Promise.all([
// Get Echo alert notifications (mentions, thanks, page links, etc.)
this.api.api.get({
action: "query",
meta: "notifications",
notlimit: 20,
notprop: "list",
notfilter: "!read",
notsections: "alert"
}),
// Get Echo notice notifications (user rights, thanks, etc.)
this.api.api.get({
action: "query",
meta: "notifications",
notlimit: 20,
notprop: "list",
notfilter: "!read",
notsections: "message"
}),
// Get talk page edits
this.api.api.get({
action: "query",
prop: "revisions",
titles: `User talk:${this.username}`,
rvlimit: 10,
rvprop: "timestamp|user|comment|ids",
rvdir: "older"
})
]);
const notifications = [];
// Process Echo alert notifications
if (alertsResponse.query?.notifications?.list) {
const alertList = Object.values(alertsResponse.query.notifications.list);
for (const notif of alertList) {
// MediaWiki timestamps are in format: YYYYMMDDHHMMSS
let timestamp = notif.timestamp?.mw || notif.timestamp?.utcmw;
if (timestamp && typeof timestamp === 'string' && timestamp.length === 14) {
// Convert YYYYMMDDHHMMSS to ISO format
timestamp = `${timestamp.slice(0,4)}-${timestamp.slice(4,6)}-${timestamp.slice(6,8)}T${timestamp.slice(8,10)}:${timestamp.slice(10,12)}:${timestamp.slice(12,14)}Z`;
} else {
timestamp = new Date().toISOString();
}
// Get notification type display name
let categoryLabel = "Alert";
if (notif.type === "mention" || notif.type === "mention-success") {
categoryLabel = "Mention";
} else if (notif.type === "thank-you-edit") {
categoryLabel = "Thanks";
} else if (notif.type === "page-linked") {
categoryLabel = "Page Link";
} else if (notif.type === "reverted") {
categoryLabel = "Revert";
} else if (notif.type === "edit-user-talk") {
categoryLabel = "Talk";
}
notifications.push({
id: `alert-${notif.id}`,
type: "alert",
subtype: notif.type,
timestamp: timestamp,
title: notif.title?.full || "Unknown page",
agent: notif.agent?.name || "Someone",
category: categoryLabel,
read: false
});
}
}
// Process Echo notice notifications
if (noticesResponse.query?.notifications?.list) {
const noticeList = Object.values(noticesResponse.query.notifications.list);
for (const notif of noticeList) {
// MediaWiki timestamps are in format: YYYYMMDDHHMMSS
let timestamp = notif.timestamp?.mw || notif.timestamp?.utcmw;
if (timestamp && typeof timestamp === 'string' && timestamp.length === 14) {
// Convert YYYYMMDDHHMMSS to ISO format
timestamp = `${timestamp.slice(0,4)}-${timestamp.slice(4,6)}-${timestamp.slice(6,8)}T${timestamp.slice(8,10)}:${timestamp.slice(10,12)}:${timestamp.slice(12,14)}Z`;
} else {
timestamp = new Date().toISOString();
}
let categoryLabel = "Notice";
if (notif.type === "user-rights") {
categoryLabel = "User Rights";
} else if (notif.type === "emailuser") {
categoryLabel = "Email";
}
notifications.push({
id: `notice-${notif.id}`,
type: "notice",
subtype: notif.type,
timestamp: timestamp,
title: notif.title?.full || "Notification",
agent: notif.agent?.name || "System",
category: categoryLabel,
read: false
});
}
}
// Process talk page edits
const pages = talkResponse.query?.pages;
if (pages) {
const page = Object.values(pages)[0];
const revisions = page.revisions || [];
// Check if we have stored the last seen revision
if (!this.lastSeenRevision) {
// First load - just store the latest revision
if (revisions.length > 0) {
this.lastSeenRevision = revisions[0].revid;
}
} else {
// Find new revisions since last check
for (const rev of revisions) {
if (rev.revid > this.lastSeenRevision) {
// Skip self-edits
if (rev.user !== this.username) {
notifications.push({
id: `talk-${rev.revid}`,
type: "talk",
revid: rev.revid,
user: rev.user,
comment: rev.comment || "Edit to your talk page",
timestamp: rev.timestamp,
read: false
});
}
} else {
break;
}
}
// Update last seen revision
if (revisions.length > 0) {
this.lastSeenRevision = Math.max(this.lastSeenRevision, revisions[0].revid);
}
}
}
// Merge with existing notifications and remove duplicates
let hasNewNotifications = false;
for (const newNotif of notifications) {
const existingNotif = this.notifications.find(n => n.id === newNotif.id);
if (!existingNotif) {
this.notifications.unshift(newNotif);
hasNewNotifications = true;
}
}
// Play sound if there are new notifications
if (hasNewNotifications && this.notifications.length > 0) {
wikishield.queue.playNotificationSound();
}
// Sort by timestamp
this.notifications.sort((a, b) => {
const timeA = new Date(a.timestamp);
const timeB = new Date(b.timestamp);
return timeB - timeA;
});
// Keep only last 25 notifications
if (this.notifications.length > 25) {
this.notifications = this.notifications.slice(0, 25);
}
this.updateNotificationDisplay();
} catch (err) {
console.log("Error while fetching notifications", err);
}
}
/**
* Every 10 seconds, call loadNotifications
*/
async handleLoadingNotifications() {
await this.loadNotifications();
window.setTimeout(() => {
this.handleLoadingNotifications();
}, 10000);
}
/**
* Update the notification count and list display
*/
updateNotificationDisplay() {
const unreadCount = this.notifications.filter(n => !n.read).length;
const countElem = document.querySelector("#notification-count");
const listElem = document.querySelector("#notifications-list");
// Check if elements exist (UI might not be ready yet)
if (!countElem || !listElem) {
return;
}
if (unreadCount > 0) {
countElem.textContent = unreadCount > 9 ? "9+" : unreadCount;
countElem.style.display = "block";
} else {
countElem.style.display = "none";
}
// Update list
if (listElem) {
if (this.notifications.length === 0) {
listElem.innerHTML = '<div style="padding: 20px; text-align: center; color: #666;">No new notifications</div>';
} else {
listElem.innerHTML = this.notifications.map(notif => {
// Parse timestamp
const time = new Date(notif.timestamp);
const timeStr = this.formatNotificationTime(time);
let title, subtitle, typeLabel, clickData;
if (notif.type === "alert") {
// Echo alert notification (mentions, thanks, page links, etc.)
typeLabel = notif.category || "Alert";
if (notif.subtype === "mention" || notif.subtype === "mention-success") {
title = `${notif.agent} mentioned you`;
subtitle = `on ${notif.title}`;
} else if (notif.subtype === "thank-you-edit") {
title = `${notif.agent} thanked you`;
subtitle = `for your edit on ${notif.title}`;
} else if (notif.subtype === "page-linked") {
title = `Your page was linked`;
subtitle = `from ${notif.title}`;
} else if (notif.subtype === "reverted") {
title = `${notif.agent} reverted your edit`;
subtitle = `on ${notif.title}`;
} else if (notif.subtype === "edit-user-talk") {
title = `${notif.agent} edited your talk page`;
subtitle = notif.title;
} else if (notif.subtype === "emailuser") {
title = `${notif.agent} sent you an email`;
subtitle = notif.title;
} else if (notif.subtype === "foreign") {
title = `Alert from ${notif.agent}`;
subtitle = notif.title;
} else {
// Generic alert with more context
title = `Alert: ${notif.subtype || 'notification'}`;
subtitle = `${notif.agent} - ${notif.title}`;
}
clickData = `data-page="${this.escapeHtml(notif.title)}"`;
} else if (notif.type === "notice") {
// Echo notice notification (user rights, etc.)
typeLabel = notif.category || "Notice";
if (notif.subtype === "user-rights") {
title = `Your user rights were changed`;
subtitle = notif.title;
} else if (notif.subtype === "emailuser") {
title = `Email notification`;
subtitle = notif.title;
} else if (notif.subtype === "flow-discussion") {
title = `New discussion activity`;
subtitle = notif.title;
} else {
// Generic notice with more context
title = `Notice: ${notif.subtype || 'system notification'}`;
subtitle = `${notif.agent} - ${notif.title}`;
}
clickData = `data-page="${this.escapeHtml(notif.title)}"`;
} else {
// Talk page edit notification
typeLabel = "Talk Page";
title = `${notif.user} edited your talk page`;
subtitle = notif.comment || "No edit summary";
clickData = `data-revid="${notif.revid}"`;
}
const readClass = notif.read ? "" : "unread";
return `
<div class="notification-item ${readClass}" data-notif-id="${notif.id}" data-notif-type="${notif.type}" ${clickData}>
<div class="notification-header">
<span class="notification-type">${typeLabel}</span>
<span class="notification-time">${timeStr}</span>
</div>
<div class="notification-title">${this.escapeHtml(title)}</div>
${subtitle ? `<div class="notification-subtitle">${this.escapeHtml(subtitle)}</div>` : ''}
</div>
`;
}).join("");
// Add click handlers
listElem.querySelectorAll(".notification-item").forEach(item => {
item.addEventListener("click", () => {
const notifId = item.dataset.notifId;
const notifType = item.dataset.notifType;
this.markNotificationRead(notifId);
if (notifType === "alert" || notifType === "notice") {
// Open the page for Echo notifications
const page = item.dataset.page;
if (page) {
window.open(mw.util.getUrl(page), "_blank");
}
} else {
// Open the diff for talk page edit
const revid = item.dataset.revid;
if (revid) {
window.open(mw.util.getUrl(`Special:Diff/${revid}`), "_blank");
}
}
});
});
}
}
}
/**
* Add a local notification (not from Wikipedia API)
*/
addLocalNotification(config) {
const notification = {
id: `local-${Date.now()}-${Math.random()}`,
type: config.type || "info",
title: config.title || "Notification",
subtitle: config.subtitle || "",
page: config.page || "",
timestamp: new Date().toISOString(),
read: false
};
this.notifications.unshift(notification);
this.updateNotificationDisplay();
}
/**
* Escape HTML to prevent XSS
*/
escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
/**
* Format notification timestamp as relative time
*/
formatNotificationTime(date) {
const now = new Date();
const diff = Math.floor((now - date) / 1000); // seconds
// Handle future timestamps (clock skew)
if (diff < 0) return "Just now";
if (diff < 60) return "Just now";
if (diff < 3600) {
const mins = Math.floor(diff / 60);
return `${mins} min${mins !== 1 ? 's' : ''} ago`;
}
if (diff < 86400) {
const hours = Math.floor(diff / 3600);
return `${hours} hour${hours !== 1 ? 's' : ''} ago`;
}
if (diff < 604800) {
const days = Math.floor(diff / 86400);
return `${days} day${days !== 1 ? 's' : ''} ago`;
}
return date.toLocaleDateString();
}
/**
* Mark a notification as read
*/
markNotificationRead(notifId) {
const notif = this.notifications.find(n => n.id === notifId);
if (notif) {
notif.read = true;
}
this.updateNotificationDisplay();
}
/**
* Mark all notifications as read
*/
markAllNotificationsRead() {
this.notifications.forEach(n => n.read = true);
this.updateNotificationDisplay();
}
/**
* Check if a user is reported to AIV
* @param {String} name The username to check
* @param {Boolean} recheck Whether to recheck the reports
* @returns {Promise<Boolean>} Whether the user is reported to AIV
*/
async userReportedToAiv(name, recheck=true) {
if (recheck) {
await this.loadReportedUsers();
}
return this.aivReports.some((report) => report.toLowerCase() === name.toLowerCase());
}
/**
* Check if a user is reported to UAA
* @param {String} name The username to check
* @param {Boolean} recheck Whether to recheck the reports
* @returns {Promise<Boolean>} Whether the user is reported to UAA
*/
async userReportedToUaa(name, recheck=true) {
if (recheck) {
await this.loadReportedUsers();
}
return this.uaaReports.some((report) => report.toLowerCase() === name.toLowerCase());
}
/**
* Check if a user is one of your mentees
* @param {String} username The username to check
* @returns {Promise<Boolean>} Whether the user is your mentee
*/
async checkIfMentee(username) {
try {
// First, try to get the list of mentees using the Growth API
const response = await this.api.get({
"action": "query",
"list": "growthmentees",
"geminactive": "false",
"format": "json"
});
console.log("Mentee check response:", response);
if (response && response.query && response.query.growthmentees) {
const mentees = response.query.growthmentees;
const isMentee = mentees.some(mentee => mentee.name === username);
console.log(`Is ${username} a mentee?`, isMentee);
return isMentee;
}
// Fallback: Check if the user has you as their mentor
const userInfoResponse = await this.api.get({
"action": "query",
"meta": "growthexperiments",
"format": "json"
});
console.log("Growth experiments response:", userInfoResponse);
return false;
} catch (err) {
console.log("Error while checking if mentee:", err);
return false;
}
}
/**
* Check if there is a welcome template on a user's talk page
* @param {String} name The username to check
* @param {String?} talkPageContent The talk page content, if already fetched
* @returns {Boolean} Whether the user has been welcomed
*/
async checkIfWelcomed(name, talkPageContent) {
try {
if (talkPageContent === null) {
talkPageContent = await this.api.getSinglePageContent(`User talk:${name}`);
}
// Check if the talk page exists (not if it's blank)
// If the page doesn't exist, talkPageContent will be an empty string
return talkPageContent !== "";
} catch (err) {
console.log("Error while checking if welcomed", err);
return true;
}
}
/**
* Give a user a welcome template, if not already given
* @param {String} name The user to welcome
* @param {String} template Which welcome template to use
*/
async welcomeUser(name, template) {
try {
const talkPageName = `User talk:${name}`;
const talkPageContent = await this.api.getSinglePageContent(talkPageName);
if (await this.checkIfWelcomed(name, talkPageContent)) {
return;
}
await this.api.edit(
talkPageName,
talkPageContent + `\n${wikishieldEventData.welcomeTemplates[template]}`,
"Welcome to Wikipedia! ([[WP:WikiShield|WikiShield]])"
); // Update all edits from this user to reflect that the talk page is no longer empty
// Update tempCurrentEdit if it exists (during script execution)
if (this.tempCurrentEdit && this.tempCurrentEdit.user && this.tempCurrentEdit.user.name === name) {
this.tempCurrentEdit.user.emptyTalkPage = false;
}
// Update currentEdit
if (this.queue.currentEdit && this.queue.currentEdit.user.name === name) {
this.queue.currentEdit.user.emptyTalkPage = false;
}
// Update all edits in the queue from this user
this.queue.queue.forEach(edit => {
if (edit.user && edit.user.name === name) {
edit.user.emptyTalkPage = false;
// Remove the existing DOM element so it gets re-rendered
const elem = document.querySelector(`.queue-edit[data-revid="${edit.revid}"]`);
if (elem) {
elem.remove();
}
}
});
// Re-render the queue to update the display
this.interface.renderQueue(this.queue.queue, this.queue.currentEdit);
} catch (err) {
console.log("Error while welcoming user", err);
}
}
/**
* Check if protection has already been requested at RFPP
* @param {String} title Page to check
* @returns {Promise<Boolean>} Whether there is an existing request
*/
async checkIfProtectionRequested(title) {
const rfppContent = await this.api.getSinglePageContent(RFPPNAME);
const pageRegex = new RegExp(`= ?${RegExp.escape(title)} ?=`, "i");
return rfppContent.match(pageRegex) !== null;
}
/**
* Add a new request for protection at RFPP
* @param {String} title Page to request protection for
* @param {String} level Semi, pending, extended, full
* @param {String} reason Reason for requesting protection
*/
async requestProtection(title, level, reason) {
if (await this.checkIfProtectionRequested(title)) {
return false;
}
await this.api.appendText(RFPPNAME, `
=== [[${title}]] ===
* {{pagelinks|${title}}}
'''${level}''': ${reason} ~~~~
`.replaceAll("\t", ""), `Requesting protection for [[${title}]] ([[WP:WikiShield|WikiShield]])`);
this.statistics.reports++;
this.saveStats(this.statistics);
}
/**
* Report a user to AIV
* @param {String} name The username to report
* @param {String} message The message to use in the report
*/
async reportToAIV(user, message) {
const blocked = await this.api.usersBlocked(user);
if (blocked[user]) {
return;
}
if (await this.userReportedToAiv(user)) {
return;
}
const content = `* {{vandal|${user}}} – ${message} ~~~~`;
await this.api.appendText(
AIVNAME,
content,
`Reporting [[Special:Contributions/${user}|${user}]] ([[WP:WikiShield|WikiShield]])`
);
this.statistics.reports++;
this.saveStats(this.statistics);
}
/**
* Report a user to UAA
* @param {String} name The username to report
* @param {String} message The message to use in the report
*/
async reportToUAA(user, message) {
const blocked = await this.api.usersBlocked(user);
if (blocked[user]) {
// already blocked
return;
}
if (await this.userReportedToUaa(user)) {
// already reported
return;
}
const content = `\n* {{user-uaa|${user}}} – ${message} ~~~~`;
await this.api.appendText(
UAANAME,
content,
`Reporting [[Special:Contributions/${user}|${user}]] ([[WP:WikiShield|WikiShield]])`
);
// Add user to no-auto-welcome list since they were reported to UAA
this.noAutoWelcomeList.add(user);
this.statistics.reports++;
this.saveStats(this.statistics);
}
/**
* Handle a keypress
* @param {KeyboardEvent} event The keypress event
*/
async keyPressed(event) {
if (this.interface.settings.isOpen) {
this.interface.settings.handleKeypress(event);
return;
}
if (document.activeElement.tagName.toLowerCase() === "input") {
return;
}
if (event.ctrlKey || event.altKey || event.metaKey) {
return;
}
if (event.key === " " && event.target === document.body) {
event.preventDefault();
}
// Open revert menu when up arrow is pressed
if (event.key.toLowerCase() === "arrowup") {
const revertMenuTitle = document.querySelector("#bottom-revert .bottom-tool-title");
if (revertMenuTitle) {
this.interface.selectedMenu = this.interface.selectedMenu === revertMenuTitle ? null : revertMenuTitle;
this.interface.selectedSubmenu = null;
this.interface.updateMenuElements();
}
event.preventDefault();
return;
}
if (!this.tempCurrentEdit) {
for (const script of this.options.controlScripts) {
if (script.keys.includes(event.key.toLowerCase())) {
await this.executeScript(script);
}
}
}
}
/**
* Execute a control script
* @param {Object} script
*/
async executeScript(script, hasContinuity=true, updateProgress=null) {
const base = updateProgress === null;
if (base && this.tempCurrentEdit) {
return;
}
if (base) {
const allScripts = [ script ];
let totalActions = 0;
while (allScripts.length > 0) {
const current = allScripts[0];
const willBeRun = (current["name"] && current["name"] === "if"
&& wikishieldEventData.conditions[current["condition"]].check(this.queue.currentEdit)) || !current["name"];
if (willBeRun) {
allScripts.push(...current["actions"]);
}
if (current["name"] && current["name"] !== "if"
&& this.interface.eventManager.events[current["name"]].includeInProgress) {
totalActions++;
}
allScripts.splice(0, 1);
}
if (totalActions > 0) {
let actionsCompleted = 0;
const progressBar = new wikishieldProgressBar();
updateProgress = (text) => {
const portion = text === "Done" ? 1 : actionsCompleted / totalActions;
progressBar.set(text, portion, "rgb(0, 170, 255)");
actionsCompleted++;
};
} else {
updateProgress = (_) => {};
}
this.tempCurrentEdit = this.queue.currentEdit || 1;
}
const ifAndTrue = script["name"] && script["name"] === "if"
&& wikishieldEventData.conditions[script["condition"]].check(this.tempCurrentEdit);
if (ifAndTrue || !script["name"]) {
for (const action of script["actions"]) {
if (action["name"] === "if") {
hasContinuity = this.executeScript(action, hasContinuity, updateProgress);
} else {
const event = this.interface.eventManager.events[action["name"]];
if (hasContinuity || !event["needsContinuity"]) {
if (event["includeInProgress"]) {
updateProgress(event["progressDesc"]);
}
if (this.tempCurrentEdit !== 1 || event.runWithoutEdit) {
const result = await event.func(action["params"]);
if (result === false) {
hasContinuity = false;
}
}
}
}
}
}
if (!script["name"]) {
updateProgress("Done");
}
if (base) {
this.tempCurrentEdit = null;
}
return hasContinuity;
}
}
// </nowiki>
// <nowiki>
let wikishield;
if (mw.config.get("wgRelevantPageName") === "Wikipedia:wikishield/run" && mw.config.get("wgAction") === "view") {
wikishield = new wikishield();
wikishield.startInterface();
window.addEventListener("keydown", wikishield.keyPressed.bind(wikishield));
} else {
mw.util.addPortletLink(
'p-personal',
mw.util.getUrl('Wikipedia:wikishield/run'),
'wikishield',
'pt-wikishield',
'wikishield',
null,
'#pt-preferences'
);
// add link to sticky header for Vector2022
mw.util.addPortletLink(
'p-personal-sticky-header',
mw.util.getUrl('Wikipedia:wikishield/run'),
'wikishield',
'pt-wikishield',
'wikishield',
null,
'#pt-preferences'
);
}
// </nowiki>
lie8yl3wtwsgk0dvw8rwath4rf1ul9x
619597
619596
2026-08-02T01:27:07Z
LuniZunie
25284
bug fix
619597
javascript
text/javascript
// <nowiki>
const wikishieldChangelogVersion = "3";
const wikishieldVersion = "2.0";
const wikishieldChangelog = `
<h1 class="settings-section-title">Changelog</h1>
<p>Welcome to 🛡️WikiShield 2.0! The script has been completely redesigned and rewritten, and includes a number of new features:</p>
<ul>
<li>Customize and edit controls using control scripts</li>
<li>Dark mode</li>
<li>Give welcome templates to users</li>
<li>Thank users for their edits</li>
<li>Request protection at RFPP</li>
<li>Whitelist and highlight users</li>
<li>...plus a large number of other minor features!</li>
</ul>
<p>Please note that if you have set custom controls, they have been reset. You can change this in your settings.</p>
<p>If you would like to continue to use the old version, you can change your common.js to use User:Ingenuity/WikiShieldLegacy.js.</p>
<p>Please report any bugs at <a target="_blank" href="https://en.wikipedia.org/wiki/Wikipedia_talk:WikiShield">Wikipedia talk:🛡️WikiShield</a>.</p>
`;
const AIVNAME = "Wikipedia:Administrator intervention against vandalism";
const UAANAME = "Wikipedia:Usernames for administrator attention";
const RFPPNAME = "Wikipedia:Requests for page protection/Increase";
const wikishieldData = {
defaultSettings: {
maxQueueSize: 50,
maxEditCount: 50,
minimumORESScore: 0,
soundAlertORESScore: 0.95,
enableSoundAlerts: false,
watchlistExpiry: "1 week",
wiki: "en",
namespacesShown: [
0, 2, 4, 6, 8, 10, 12, 14, 100, 118,
1, 3, 5, 7, 9, 11, 13, 15, 101, 119
],
refreshTime: 2000,
showIPs: true,
showUsers: true,
sortQueueItems: true,
enableOllamaAI: false,
ollamaServerUrl: "http://localhost:11434",
ollamaModel: "",
controlScripts: [
{
keys: ["arrowright"],
actions: [
{
name: "nextEdit",
params: {}
}
]
},
{
keys: [" "],
actions: [
{
name: "rollback",
params: {}
},
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{
name: "reportToAIV",
params: {
reportMessage: "Vandalism past final warning"
}
}
]
}
]
},
{
name: "warn",
params: {
warningType: "Vandalism",
level: "auto"
}
},
{
name: "highlight",
params: {}
},
{
name: "nextEdit",
params: {}
}
]
},
{
keys: ["arrowleft"],
actions: [
{
name: "prevEdit",
params: {}
}
]
},
{
keys: ["h"],
actions: [
{
name: "openHistory",
params: {}
}
]
},
{
keys: ["c"],
actions: [
{
name: "openUserContribs",
params: {}
}
]
}
],
selectedPalette: 0,
theme: "theme-light"
},
warningTemplateColors: {
"0": "grey",
"1": "#4169e1",
"2": "#ff8c00",
"3": "#ff4500",
"4": "#b22222",
"4im": "#000000"
},
colorPalettes: [
["#78c675", "#fdff7a", "#fcff54", "#fbff12", "#ffc619", "#ff8812", "#f56214", "#f73214", "#fc0303", "#fc0303"],
["#bfbfbf", "#ffd9d9", "#ffc9c9", "#ffb0b0", "#ff9797", "#ff7d7d", "#ff6464", "#ff4b4b", "#ff3131", "#ff1818"],
["#bfbfbf", "#d9ffd9", "#c9ffc9", "#b0ffb0", "#97ff97", "#7dff7d", "#64ff64", "#4bff4b", "#31ff31", "#18ff18"],
["#bfbfbf", "#d9d9ff", "#c9c9ff", "#b0b0ff", "#9797ff", "#7d7dff", "#6464ff", "#4b4bff", "#3131ff", "#1818ff"]
],
warnings: {
"Vandalism": {
templates: [
"subst:uw-vandalism1",
"subst:uw-vandalism2",
"subst:uw-vandalism3",
"subst:uw-vandalism4",
"subst:uw-vandalism4im"
],
label: "vandalism",
desc: "Default warning for vandalism."
},
"Subtle vandalism": {
templates: [
"subst:uw-subtle1",
"subst:uw-subtle2",
"subst:uw-subtle3",
"subst:uw-subtle4"
],
label: "subtle vandalism",
desc: "Warning for subtle vandalism that may not be immediately obvious."
},
"AI-generated content": {
templates: [
"subst:uw-ai1",
"subst:uw-ai2",
"subst:uw-ai3",
"subst:uw-ai4"
],
label: "adding [[WP:AIGEN|AI-generated content]]",
desc: "Warning for adding AI-generated content without disclosure."
},
"Disruption": {
templates: [
"subst:uw-disruptive1",
"subst:uw-disruptive2",
"subst:uw-disruptive3",
"subst:uw-generic4"
],
label: "[[WP:DE|disruptive editing]]",
desc: "Default warning for making disruptive edits (not always vandalism)"
},
"Deleting": {
templates: [
"subst:uw-delete1",
"subst:uw-delete2",
"subst:uw-delete3",
"subst:uw-delete4",
"subst:uw-delete4im"
],
label: "unexplained deletion",
desc: "Used when a user does not explain deletion of part of an article."
},
"Advertising": {
templates: [
"subst:uw-advert1",
"subst:uw-advert2",
"subst:uw-advert3",
"subst:uw-advert4",
"subst:uw-advert4im"
],
label: "[[WP:PROMO|advertising or promotion]]",
desc: "Adding promotional content to an article."
},
"Spam links": {
templates: [
"subst:uw-spam1",
"subst:uw-spam2",
"subst:uw-spam3",
"subst:uw-spam4",
"subst:uw-spam4im"
],
label: "adding [[WP:ELNO|inappropriate links]]",
desc: "Adding external links that could be considered spam."
},
"Unsourced": {
templates: [
"subst:uw-unsourced1",
"subst:uw-unsourced2",
"subst:uw-unsourced3",
"subst:uw-unsourced4"
],
label: "adding [[WP:CITE|unsourced content]]",
desc: "Adding unsourced, possibly defamatory, content to an article."
},
"Editing tests": {
templates: [
"subst:uw-test1",
"subst:uw-test2",
"subst:uw-test3",
"subst:uw-vandalism4"
],
label: "making editing tests",
desc: "Making editing tests to articles."
},
"Commentary": {
templates: [
"subst:uw-talkinarticle1",
"subst:uw-talkinarticle2",
"subst:uw-talkinarticle3",
"subst:uw-generic4"
],
label: "adding commentary",
desc: "Adding opinion or commentary to articles."
},
"POV": {
templates: [
"subst:uw-npov1",
"subst:uw-npov2",
"subst:uw-npov3",
"subst:uw-npov4"
],
label: "adding [[WP:NPOV|non-neutral content]]",
desc: "Adding content which violates the neutral point of view policy."
},
"Errors": {
templates: [
"subst:uw-error1",
"subst:uw-error2",
"subst:uw-error3",
"subst:uw-error4"
],
label: "adding deliberate errors to articles",
desc: "Adding deliberate errors to articles."
},
"Owning": {
templates: [
"subst:uw-own1",
"subst:uw-own2",
"subst:uw-own3",
"subst:uw-own4"
],
label: "assuming [[WP:OWN|ownership of articles]]",
desc: "Assuming ownership of articles."
},
"Unsourced (BLP)": {
templates: [
"subst:uw-biog1",
"subst:uw-biog2",
"subst:uw-biog3",
"subst:uw-biog4",
"subst:uw-biog4im"
],
label: "adding unsourced content to [[WP:BLP|biographies of living persons]]",
desc: "Adding unsourced content to biographies of living persons."
},
"Chatting": {
templates: [
"subst:uw-chat1",
"subst:uw-chat2",
"subst:uw-chat3",
"subst:uw-chat4"
],
label: "conversation in article talk space",
desc: "Using article talk pages for inappropriate discussion."
},
"Image vandalism": {
templates: [
"subst:uw-image1",
"subst:uw-image2",
"subst:uw-image3",
"subst:uw-image4"
],
label: "image vandalism",
desc: "Image vandalism."
},
"AfD removal": {
templates: [
"subst:uw-afd1",
"subst:uw-afd2",
"subst:uw-afd3",
"subst:uw-afd4"
],
label: "removing AfD templates or comments",
desc: "Removing AfD templates or other users' comments from AfD discussions."
},
"Jokes": {
templates: [
"subst:uw-joke1",
"subst:uw-joke2",
"subst:uw-joke3",
"subst:uw-joke4",
"subst:uw-joke4im"
],
label: "adding inappropriate humor",
desc: "Adding inappropriate humor to articles."
},
"Personal attacks": {
templates: [
"subst:uw-npa1",
"subst:uw-npa2",
"subst:uw-npa3",
"subst:uw-npa4",
"subst:uw-npa4im"
],
label: "[[WP:NPA|personal attacks]]",
desc: "Personal attacks towards another user."
},
"MOS violation": {
templates: [
"subst:uw-mos1",
"subst:uw-mos2",
"subst:uw-mos3",
"subst:uw-mos4"
],
label: "[[WP:MOS|manual of style]] violation",
desc: "Not following the Manual of Style."
},
"Censoring": {
templates: [
"subst:uw-notcensored1",
"subst:uw-notcensored2",
"subst:uw-notcensored3",
"subst-uw-generic4"
],
label: "[[WP:NOTCENSORED|Censoring content]]",
desc: "Censoring topically-relevant content."
}
},
namespaces: [
{
name: "Main",
id: 0
},
{
name: "User",
id: 2
},
{
name: "Project",
id: 4
},
{
name: "File",
id: 6
},
{
name: "MediaWiki",
id: 8
},
{
name: "Template",
id: 10
},
{
name: "Help",
id: 12
},
{
name: "Category",
id: 14
},
{
name: "Portal",
id: 100
},
{
name: "Draft",
id: 118
},
{
name: "Talk",
id: 1
},
{
name: "User talk",
id: 3
},
{
name: "Project talk",
id: 5
},
{
name: "File talk",
id: 7
},
{
name: "MediaWiki talk",
id: 9
},
{
name: "Template talk",
id: 11
},
{
name: "Help talk",
id: 13
},
{
name: "Category talk",
id: 15
},
{
name: "Portal talk",
id: 101
},
{
name: "Draft talk",
id: 119
}
]
};
// </nowiki>
// <nowiki>
const wikishieldStyling = {
"initial": `
* {
font-family: sans-serif;
line-height: 1.4em;
}
body, html, #container {
width: 100%;
height: 100%;
margin: 0;
}
#container {
display: flex;
align-items: center;
justify-content: center;
}
#welcome-container {
width: max-content;
height: max-content;
padding-bottom: 250px;
}
h1 {
margin: 0 0 5px 0;
}
a {
color: black !important;
}
.about-link {
margin-right: 10px;
}
button {
padding: 8px 20px;
background: rgba(69, 94, 192, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(69, 94, 192, 0.3);
border-radius: 8px;
color: white;
cursor: pointer;
display: block;
margin-top: 10px;
transition: all 0.2s ease;
box-shadow: 0 2px 8px rgba(69, 94, 192, 0.3);
font-weight: 500;
}
button:hover {
background: rgba(56, 80, 180, 0.95);
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(69, 94, 192, 0.4);
}
button:active {
transform: translateY(0);
box-shadow: 0 2px 6px rgba(69, 94, 192, 0.3);
}
`,
"main": `
* {
font-family: sans-serif;
box-sizing: border-box;
}
body, html, #container {
width: 100%;
height: 100%;
margin: 0;
overflow: hidden;
}
#container {
display: flex;
}
#queue {
width: 300px;
height: 100%;
border-right: 2px solid #bfbfbf;
position: relative;
}
#queue-top {
height: 60px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
position: relative;
z-index: 2;
display: flex;
align-items: center;
padding: 15px;
justify-content: space-between;
user-select: none;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
#queue-top-left, #user-contribs-left {
display: flex;
flex-direction: column;
}
#queue-top-title {
font-weight: bold;
font-size: 1.1em;
}
#queue-top-items, #user-contribs-count {
font-size: 0.85em;
}
#queue-top-right {
font-size: 1.4em;
}
#queue-top-right span {
margin-left: 5px;
cursor: pointer;
color: #444;
transition: 0.2s;
}
#queue-top-right span:hover {
color: black;
}
#notifications-panel {
position: absolute;
top: 50px;
right: 10px;
width: 350px;
max-height: 500px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 12px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
display: none;
z-index: 1000;
flex-direction: column;
overflow: hidden;
}
#notifications-panel.show {
display: flex;
animation: slideDown 0.3s ease-out;
}
@keyframes slideDown {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
#notifications-header {
padding: 10px;
border-bottom: 1px solid #cfcfcf;
font-weight: bold;
display: flex;
justify-content: space-between;
align-items: center;
}
#notifications-list {
overflow-y: auto;
max-height: 450px;
}
.notification-item {
padding: 12px;
border-bottom: 1px solid #eaeaea;
cursor: pointer;
transition: background 0.2s;
position: relative;
}
.notification-item:hover {
background: #f5f5f5;
}
.notification-item.unread {
background: #e8f4ff;
border-left: 3px solid #3366cc;
padding-left: 9px;
}
.notification-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 4px;
}
.notification-type {
font-size: 0.7em;
text-transform: uppercase;
font-weight: 600;
letter-spacing: 0.5px;
opacity: 0.6;
}
.notification-title {
font-weight: 500;
margin-bottom: 2px;
font-size: 0.95em;
}
.notification-subtitle {
font-size: 0.85em;
color: #666;
margin-bottom: 4px;
}
.notification-time {
font-size: 0.75em;
color: #999;
}
.toast-notification {
position: fixed;
bottom: 30px;
right: 30px;
background: rgba(244, 67, 54, 0.96);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
color: white;
padding: 16px 24px;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(244, 67, 54, 0.4);
border: 1px solid rgba(255, 255, 255, 0.15);
z-index: 10000;
display: flex;
align-items: center;
gap: 12px;
min-width: 300px;
max-width: 500px;
animation: slideIn 0.3s ease-out;
opacity: 0;
transform: translateX(100%);
}
.toast-notification.show {
opacity: 1;
transform: translateX(0);
}
.toast-notification.hide {
animation: slideOut 0.3s ease-in forwards;
}
@keyframes slideIn {
from {
opacity: 0;
transform: translateX(100%);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes slideOut {
from {
opacity: 1;
transform: translateX(0);
}
to {
opacity: 0;
transform: translateX(100%);
}
}
.toast-icon {
font-size: 1.5em;
flex-shrink: 0;
}
.toast-content {
flex: 1;
}
.toast-title {
font-weight: bold;
font-size: 1em;
margin-bottom: 4px;
}
.toast-message {
font-size: 0.9em;
opacity: 0.9;
}
.toast-close {
cursor: pointer;
font-size: 1.2em;
opacity: 0.7;
transition: opacity 0.2s;
flex-shrink: 0;
}
.toast-close:hover {
opacity: 1;
}
.confirmation-modal-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 10001;
animation: fadeIn 0.2s ease-out;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
.confirmation-modal {
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border-radius: 16px;
box-shadow: 0 12px 48px rgba(0, 0, 0, 0.25);
border: 1px solid rgba(255, 255, 255, 0.8);
min-width: 400px;
max-width: 500px;
animation: scaleIn 0.2s ease-out;
}
@keyframes scaleIn {
from {
transform: scale(0.9);
opacity: 0;
}
to {
transform: scale(1);
opacity: 1;
}
}
@keyframes scaleOut {
from {
transform: scale(1);
opacity: 1;
}
to {
transform: scale(0.9);
opacity: 0;
}
}
.confirmation-modal-overlay.closing {
animation: fadeOut 0.2s ease-out forwards;
}
.confirmation-modal.closing {
animation: scaleOut 0.2s ease-out forwards;
}
.confirmation-modal-header {
padding: 20px 24px;
border-bottom: 1px solid #e0e0e0;
}
.confirmation-modal-title {
font-size: 1.2em;
font-weight: bold;
color: #333;
}
.confirmation-modal-body {
padding: 24px;
color: #555;
line-height: 1.5;
}
.confirmation-modal-username {
font-weight: bold;
color: #0645ad;
}
.confirmation-modal-footer {
padding: 16px 24px;
border-top: 1px solid #e0e0e0;
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
}
.confirmation-modal-footer-right {
display: flex;
gap: 12px;
}
.confirmation-modal-button {
padding: 10px 24px;
border-radius: 6px;
font-weight: 500;
cursor: pointer;
border: none;
font-size: 0.95em;
transition: all 0.2s;
}
.confirmation-modal-button-no {
background: #f5f5f5;
color: #333;
}
.confirmation-modal-button-no:hover {
background: #e0e0e0;
}
.confirmation-modal-button-yes {
background: #36c;
color: white;
}
.confirmation-modal-button-yes:hover {
background: #2855a8;
}
.confirmation-modal-button-uaa {
background: #d33;
color: white;
}
.confirmation-modal-button-uaa:hover {
background: #a82828;
}
.confirmation-modal-button-yes:hover {
background: #2855a8;
}
.confirmation-modal-footer-vertical {
flex-direction: column;
align-items: stretch;
}
.confirmation-modal-footer-vertical .confirmation-modal-button {
width: 100%;
}
.confirmation-modal-button-reason {
background: #36c;
color: white;
}
.confirmation-modal-button-reason:hover {
background: #2855a8;
}
.confirmation-modal-button-cancel {
background: #f5f5f5;
color: #333;
}
.confirmation-modal-button-cancel:hover {
background: #e0e0e0;
}
#queue-items {
height: calc(100% - 60px);
overflow-x: hidden;
overflow-y: auto;
}
.width-adjust {
width: 8px;
height: 100%;
position: absolute;
top: 0;
right: -4px;
z-index: 3;
cursor: col-resize;
}
#details-width-adjust {
left: -4px;
}
#right-container {
width: calc(100% - 300px);
display: flex;
flex-wrap: wrap;
}
#right-top {
height: 60px;
width: 100%;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: center;
padding: 8px 15px;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border-bottom: 2px solid #e0e0e0;
}
#right-top a {
text-decoration: none;
color: #0645ad;
font-weight: 500;
transition: color 0.2s ease;
}
#right-top a:hover {
color: #0b7ad1;
}
#right-top div {
padding: 0 12px;
display: flex;
align-items: center;
gap: 6px;
}
#right-top .fa {
margin-right: 6px;
color: #555;
font-size: 0.95em;
}
.right-top-comment {
flex-basis: 100%;
text-align: center;
justify-content: center;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
#right-content {
width: 100%;
height: calc(100% - 60px);
display: flex;
}
#main-container {
position: relative;
width: calc(100% - 300px);
display: flex;
flex-direction: column;
height: 100%;
}
#diff-container {
overflow-y: auto;
flex: 1;
}
#bottom-tools {
height: 50px;
flex-shrink: 0;
}
#right-details {
width: 300px;
border-left: 2px solid #cfcfcf;
position: relative;
}
#user-contribs, #page-history {
height: 50%;
}
#page-history {
border-top: 2px solid #cfcfcf;
}
#user-contribs-top, #page-history-top {
height: 55px;
border-bottom: 2px solid #cfcfcf;
display: flex;
align-items: center;
justify-content: space-between;
padding: 15px;
user-select: none;
}
#user-contribs-title, #page-history-title {
font-weight: bold;
font-size: 1.05em;
}
#user-contribs-level {
padding: 2px 8px;
border-radius: 8px;
color: white;
font-weight: bold;
}
#block-count-indicator {
padding: 3px 10px;
border-radius: 8px;
background: #1a1a1a;
color: white;
font-weight: bold;
font-size: 0.95em;
margin-right: 8px;
border: 2px solid #ff4444;
}
#protection-indicator {
font-size: 1.3em;
}
#user-contribs-content, #page-history-content {
height: calc(100% - 55px);
overflow-y: auto;
overflow-x: hidden;
}
#user-contribs-content .queue-edit, #page-history-content .queue-edit {
animation: none !important;
}
#bottom-tools {
display: flex;
align-items: center;
padding: 0 10px;
border-top: 2px solid #cfcfcf;
justify-content: space-between;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
#bottom-tools-left {
display: flex;
align-items: center;
}
#bottom-tools-left > div {
margin-right: 10px;
position: relative;
height: 50px;
display: flex;
align-items: center;
}
#bottom-tools-stats {
display: flex;
align-items: center;
gap: 15px;
font-size: 0.9em;
color: #666;
padding-right: 10px;
}
#bottom-tools-stats > div {
display: flex;
align-items: center;
gap: 5px;
}
#bottom-tools-stats .stat-value {
font-weight: bold;
color: #333;
}
#bottom-tools > div {
margin-right: 10px;
position: relative;
height: 100%;
display: flex;
align-items: center;
}
.bottom-tool-title {
padding: 5px 12px;
border-radius: 6px;
user-select: none;
cursor: pointer;
transition: all 0.2s ease;
font-weight: 500;
}
.bottom-tool-title:hover {
background: #e8e8e8;
transform: translateY(-1px);
}
.bottom-tool-title-selected, .submenu-selected {
background: #d8d8d8 !important;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}
.bottom-tool-content {
position: absolute;
bottom: 48px;
width: max-content;
display: none;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 10px;
left: -12px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
overflow: visible;
z-index: 100;
}
.bottom-tool-option {
padding: 8px 12px;
display: flex;
align-items: center;
justify-content: space-between;
user-select: none;
cursor: pointer;
}
.bottom-tool-option:hover {
background: rgba(0, 0, 0, 0.05);
border-radius: 6px;
}
.bottom-tool-option-title {
padding-right: 15px;
}
.bottom-tool-option-subcontent {
display: none;
position: absolute;
bottom: -2px;
left: 100%;
width: max-content;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 10px;
padding: 12px;
z-index: 150;
cursor: initial;
min-width: 250px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
}
select, input[type=text] {
max-width: 250px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.15);
padding: 8px 12px;
border-radius: 8px;
cursor: pointer;
transition: all 0.2s ease;
font-size: 0.95em;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
}
select:hover, input[type=text]:hover {
border-color: rgba(0, 0, 0, 0.25);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
}
select:focus, input[type=text]:focus {
outline: none;
border-color: rgba(33, 150, 243, 0.6);
box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.15);
background: rgba(255, 255, 255, 1);
}
input[type=text] {
cursor: text !important;
}
#revert-menu {
max-height: calc(100vh - 120px);
overflow: auto;
}
#warn-menu {
max-height: calc(100vh - 120px);
overflow: auto;
}
.revert-menu-table {
padding: 12px;
}
.revert-menu-title, .revert-menu-info {
padding-right: 15px;
}
.revert-menu-item {
color: white;
width: 35px;
border-radius: 8px;
height: 35px;
font-size: 0.9em;
text-align: center;
user-select: none;
cursor: pointer;
transition: all 0.2s ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.15);
}
.revert-menu-item:hover {
filter: brightness(0.9);
transform: translateY(-2px);
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
.revert-menu-item:active {
transform: translateY(0);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}
.bottom-subcontent-input-title {
font-size: 0.9em;
margin: 10px 0 2px 0;
}
.bottom-subcontent-button {
margin-top: 10px;
display: block;
background: linear-gradient(to bottom, #ffffff, #f5f5f5);
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 8px;
cursor: pointer;
padding: 8px 14px;
font-weight: 500;
transition: all 0.2s ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.bottom-subcontent-button:hover {
background: linear-gradient(to bottom, #ffffff, #f8f8f8);
border-color: rgba(0, 0, 0, 0.2);
transform: translateY(-1px);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);
}
.bottom-subcontent-button:active {
transform: translateY(0);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
}
.queue-edit {
display: flex;
position: relative;
font-size: 0.95em;
transition: all 0.2s ease;
}
.queue-edit:hover {
background: rgba(0, 0, 0, 0.02);
}
.queue-edit:not(.queue-edit-current) {
animation: fadein 0.5s ease-out 0s 1;
}
@keyframes fadein {
from {
background: #e8e8e8;
transform: translateX(-5px);
}
to {
background: transparent;
transform: translateX(0);
}
}
.queue-edit-title, .queue-edit-user, .queue-edit-summary, .queue-edit-time {
display: flex;
align-items: center;
white-space: nowrap;
margin-bottom: 3px;
position: relative;
width: max-content;
max-width: 100%;
height: 22px;
}
.queue-edit-user, .queue-edit-summary, .queue-edit-time {
font-size: 0.9em;
}
#user-contribs-content .queue-edit-content,
#page-history-content .queue-edit-content {
padding-left: 15px;
}
.queue-edit-icon {
width: 25px;
flex-shrink: 0;
color: #333;
}
.queue-edit-color {
width: 5px;
flex-shrink: 0;
background: gray;
transition: 0.2s;
}
.queue-edit-content {
padding: 12px 15px;
width: 100%;
border-bottom: 2px solid #e0e0e0;
}
.queue-edit-tags {
display: flex;
}
.queue-edit-tag {
font-size: 0.8em;
padding: 3px 10px;
flex-shrink: 0;
margin-right: 5px;
border-radius: 6px;
background: rgba(234, 234, 234, 0.9);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.08);
transition: all 0.2s ease;
}
.queue-edit-tag:hover {
background: rgba(220, 220, 220, 0.95);
}
.queue-edit-tag-minor {
background: rgba(212, 212, 212, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.1);
font-weight: bold;
color: #666;
font-style: italic;
}
.minor-indicator {
font-weight: bold;
color: #666;
font-size: 0.9em;
padding: 2px 8px;
background: rgba(232, 232, 232, 0.9);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.08);
border-radius: 6px;
margin-right: 4px;
}
.queue-edit-change {
position: absolute;
top: 0;
height: calc(100% - 2px);
right: 0;
display: flex;
width: 100px;
align-items: center;
justify-content: right;
padding-right: 10px;
background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
}
.queue-edit-current {
background: #f0f4f8;
border-left: 4px solid #2196F3;
box-shadow: inset 0 0 10px rgba(33, 150, 243, 0.1);
}
.queue-edit:hover .queue-edit-color {
width: 10px;
}
.tooltip {
position: fixed;
top: 0;
left: 0;
z-index: 3;
opacity: 0;
transition: opacity 0.2s ease;
font-size: 0.9em;
max-width: 450px;
min-width: 250px;
padding: 10px 14px;
background: rgba(44, 62, 80, 0.96);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-radius: 10px;
color: white;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
border: 1px solid rgba(255, 255, 255, 0.1);
white-space: normal;
line-height: 1.5;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
word-wrap: break-word;
overflow-wrap: break-word;
}
.tooltip-title {
font-weight: 600;
font-size: 0.95em;
margin-bottom: 6px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
padding-bottom: 4px;
word-wrap: break-word;
}
.tooltip-item {
margin: 4px 0;
padding-left: 4px;
word-wrap: break-word;
overflow-wrap: break-word;
}
.tooltip-item-level {
display: inline-block;
min-width: 60px;
font-weight: 600;
color: #ffd700;
word-wrap: break-word;
}
.tooltip-item-article {
color: #87ceeb;
word-wrap: break-word;
}
.tooltip-item-time {
color: #b0b0b0;
font-size: 0.85em;
word-wrap: break-word;
}
.tooltip-more {
margin-top: 6px;
font-style: italic;
color: #999;
font-size: 0.85em;
}
#diff-container {
overflow-y: auto;
scroll-behavior: smooth;
}
#diff-container td, #diff-container tr {
overflow-wrap: anywhere;
}
.diff-addedline {
background: rgba(76, 175, 80, 0.2);
border-left: 3px solid #4CAF50;
}
ins {
background: rgba(76, 175, 80, 0.4);
text-decoration: none;
border-radius: 2px;
padding: 1px 2px;
}
.diff-deletedline {
background: rgba(244, 67, 54, 0.2);
border-left: 3px solid #f44336;
}
del {
background: rgba(244, 67, 54, 0.4);
text-decoration: none;
border-radius: 2px;
padding: 1px 2px;
}
.diff-lineno {
border-bottom: 1px dashed grey;
background: rgba(0, 0, 0, 0.2);
}
#diff-container * {
font-family: monospace;
vertical-align: baseline;
}
#diff-container td:not(.diff-marker) {
width: 50%;
}
.context-menu {
position: fixed;
padding: 8px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 10px;
z-index: 100;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
}
.context-menu div {
padding: 8px 12px;
margin: 4px;
user-select: none;
cursor: pointer;
border-radius: 6px;
transition: background 0.2s ease;
}
.context-menu div:not(#context-ores):hover {
background: rgba(0, 0, 0, 0.08);
}
#context-ores {
color: #444;
font-size: 0.8em;
}
#context-ores-number {
font-size: 1.2em;
font-weight: bold;
filter: brightness(0.6);
}
.settings-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
backdrop-filter: blur(1px) brightness(0.9);
z-index: 10;
}
.settings {
display: flex;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 16px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
overflow: hidden;
}
.settings > div {
height: 600px;
}
.settings-left {
width: 200px;
border-right: 1px solid rgba(0, 0, 0, 0.08);
background: rgba(0, 0, 0, 0.02);
}
.settings-left-menu-item {
padding: 12px 20px;
user-select: none;
cursor: pointer;
transition: background 0.2s ease;
border-radius: 8px;
margin: 4px 8px;
}
.settings-left-menu-item:hover {
background: rgba(0, 0, 0, 0.05);
}
.settings-left-menu-item.selected {
background: rgba(33, 150, 243, 0.1) !important;
color: #2196F3;
font-weight: 500;
}
.settings-right {
width: 800px;
overflow: auto;
padding-bottom: 20px;
}
.settings-section {
margin: 20px 20px 0 20px;
}
.settings-section-title {
font-size: 1.1em;
margin-bottom: 3px;
font-weight: bold;
}
.settings-section-desc {
font-size: 0.9em;
margin-bottom: 10px;
}
#settings-general-button:nth-child(1) {
border-top-left-radius: 8px;
}
#namespace-container {
display: flex;
flex-wrap: wrap;
}
#namespace-container > div {
width: 200px;
}
.numeric-input-container {
display: flex;
}
.settings-toggle {
width: 60px;
height: 30px;
cursor: pointer;
position: relative;
}
.toggle-switch {
width: 100%;
height: 100%;
background: #cfcfcf;
border-radius: 15px;
position: relative;
transition: background 0.3s;
}
.settings-toggle.active .toggle-switch {
background: #36c;
}
.toggle-slider {
width: 24px;
height: 24px;
background: white;
border-radius: 50%;
position: absolute;
top: 3px;
left: 3px;
transition: left 0.3s;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
.settings-toggle.active .toggle-slider {
left: 33px;
}
.numeric-input-button {
width: 35px;
height: 35px;
font-size: 1.3em;
display: flex !important;
align-items: center;
justify-content: center;
cursor: pointer;
border-radius: 5px;
transition: 0.1s;
}
.numeric-input-button:hover {
background: #eaeaea;
}
.numeric-input {
border: 2px solid #cfcfcf;
font-size: 1.1em;
padding: 3px 10px;
width: 100px;
border-radius: 5px;
margin: 0 5px;
}
.numeric-input:focus {
border: 2px solid #aaa !important;
outline: none;
}
.control-container {
border: 2px solid #cfcfcf;
padding: 10px 15px;
border-radius: 10px;
font-size: 0.9em;
}
.control-container-title {
font-size: 1.1em;
font-weight: bold;
}
.control-action {
margin-top: 5px;
padding: 0 0 0 10px;
border-left: 1px solid #cfcfcf;
}
.control-action-title span {
margin-right: 5px;
}
.control-action-title-left span {
width: 17px;
}
.control-action-title-left select {
margin: 0 5px;
}
.control-keys {
display: flex;
}
.control-keys > div {
display: flex;
align-items: center;
background: rgba(255, 255, 255, 0.95);
border: 1px solid rgba(0, 0, 0, 0.15);
width: max-content;
padding: 6px 12px;
border-radius: 8px;
margin: 5px 5px 5px 0;
user-select: none;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
transition: all 0.2s ease;
}
.control-keys > div:hover {
border-color: rgba(0, 0, 0, 0.25);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);
}
.control-keys .remove {
cursor: pointer;
}
.key-elem-title {
margin-right: 10px;
}
.key-select {
font-style: italic;
border: 2px solid #8989ec !important;
}
.key-duplicate {
border: 2px solid red !important;
}
.control-action-title {
display: flex;
justify-content: space-between;
align-items: center;
}
.control-action-title-right {
display: flex;
}
.control-action-title-right span {
font-size: 1.2em;
width: 30px;
height: 30px;
margin-right: 0;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
border-radius: 5px;
transition: 0.1s;
}
.control-action-title-right span:hover {
background: #eaeaea;
}
.add-action-button {
width: max-content;
border: 1px solid rgba(0, 0, 0, 0.15);
padding: 8px 16px;
border-radius: 8px;
background: linear-gradient(to bottom, #ffffff, #f5f5f5);
cursor: pointer;
user-select: none;
transition: all 0.2s ease;
font-weight: 500;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.add-action-button:hover {
border-color: rgba(0, 0, 0, 0.2);
transform: translateY(-1px);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);
}
.add-action-button:active {
transform: translateY(0);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
}
.add-action-button:hover {
background: linear-gradient(to bottom, #ffffff, #f0f0f0);
transform: translateY(-1px);
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
}
.add-action-button:active {
transform: translateY(0);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}
.add-action-container {
display: flex;
}
.cancel-button, .create-button {
margin-left: 5px;
}
.control-delete {
color: red;
}
.control-bottom-container {
display: flex;
justify-content: space-between;
margin-top: 10px;
}
.new-control-script {
font-size: 0.9em;
}
.new-control-script span {
margin-right: 5px;
}
.action-parameter {
margin-left: 26px;
display: inline-block;
}
.parameter-title {
margin: 5px 0 2px 0;
font-size: 0.9em;
}
.user-container > div {
display: flex;
justify-content: space-between;
align-items: center;
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 8px;
padding: 8px 8px 8px 15px;
margin-bottom: 8px;
background: rgba(0, 0, 0, 0.02);
transition: all 0.2s ease;
}
.user-container > div:hover {
background: rgba(0, 0, 0, 0.04);
border-color: rgba(0, 0, 0, 0.15);
transform: translateX(2px);
}
.user-container a {
color: black;
text-decoration: none;
}
.queue-edit-user-highlight {
background: rgba(255, 255, 190, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 230, 0, 0.3);
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(255, 230, 0, 0.15);
}
.queue-edit-user-empty-talk {
background: rgba(255, 204, 204, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 100, 100, 0.3);
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(255, 100, 100, 0.15);
}
#progress-bar-container {
position: absolute;
top: calc(100% - 90px);
height: 40px;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
padding: 0px 20px;
}
.progress-bar {
border-radius: 12px;
width: 150px;
height: 28px;
background: rgba(0, 0, 0, 0.08);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
font-size: 0.8em;
display: flex;
align-items: center;
justify-content: center;
position: relative;
margin-left: 10px;
opacity: 1;
transition: 0.3s;
overflow: hidden;
border: 1px solid rgba(0, 0, 0, 0.1);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.progress-bar-overlay {
position: absolute;
top: 0;
left: 0;
border-radius: 12px;
width: 0px;
transition: 0.3s;
height: 100%;
background: linear-gradient(90deg, rgba(0, 170, 255, 0.8), rgba(33, 150, 243, 0.9));
}
.progress-bar-text {
position: relative;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 0 5px;
max-width: 100%;
}
.changelog {
font-size: 0.9em;
line-height: 1.6em;
}
.settings-appearance-box {
display: flex inline;
width: 150px;
height: 60px;
justify-content: center;
align-items: center;
border-radius: 10px;
margin: 10px 10px 0 0;
cursor: pointer;
user-select: none;
transition: all 0.2s ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.settings-appearance-box:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
#box-light {
background: rgba(234, 234, 234, 0.95);
color: black !important;
border: 1px solid rgba(0, 0, 0, 0.15);
}
#box-dark {
background: rgba(34, 38, 47, 0.95);
border: 1px solid rgba(255, 255, 255, 0.1);
color: white;
}
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #f5f5f5;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #c0c0c0;
border-radius: 10px;
transition: background 0.2s;
}
::-webkit-scrollbar-thumb:hover {
background: #a0a0a0;
}
`,
"theme-dark" : `
body {
background: #22262f;
}
*, .about-link {
color: #f1f5ff !important;
}
button {
background: rgba(74, 125, 204, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(74, 125, 204, 0.3) !important;
box-shadow: 0 2px 8px rgba(74, 125, 204, 0.3) !important;
}
button:hover {
background: rgba(91, 154, 255, 0.95) !important;
box-shadow: 0 4px 12px rgba(91, 154, 255, 0.4) !important;
}
.queue-edit-current, .progress-bar, .queue-edit-tag {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(255, 255, 255, 0.06) !important;
}
.queue-edit-tag-minor {
background: rgba(31, 36, 48, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
color: #a8b0c0 !important;
}
.minor-indicator {
background: rgba(54, 62, 81, 0.9) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
color: #a8b0c0 !important;
}
.queue-edit-content {
border-bottom: 2px solid #363e51 !important;
}
#queue {
border-right: 2px solid #363e51 !important;
}
#right-details {
border-left: 2px solid #363e51 !important;
}
#bottom-tools {
border-top: 2px solid #363e51 !important;
}
#bottom-tools-stats {
color: #aaa !important;
}
#bottom-tools-stats .stat-value {
color: #e0e0e0 !important;
}
.toast-notification {
background: rgba(211, 47, 47, 0.96) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.15) !important;
box-shadow: 0 6px 20px rgba(211, 47, 47, 0.4) !important;
}
.confirmation-modal-overlay {
background: rgba(0, 0, 0, 0.7) !important;
}
.confirmation-modal {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(20px) !important;
-webkit-backdrop-filter: blur(20px) !important;
box-shadow: 0 12px 48px rgba(0, 0, 0, 0.7) !important;
border: 1px solid rgba(255, 255, 255, 0.1) !important;
}
.confirmation-modal-header {
border-bottom: 1px solid #363e51 !important;
}
.confirmation-modal-title {
color: #f1f5ff !important;
}
.confirmation-modal-body {
color: #bbb !important;
}
.confirmation-modal-username {
color: #5b9aff !important;
}
.confirmation-modal-footer {
border-top: 1px solid #363e51 !important;
}
.confirmation-modal-button-no {
background: #363e51 !important;
color: #f1f5ff !important;
}
.confirmation-modal-button-no:hover {
background: #4a5468 !important;
}
.confirmation-modal-button-yes {
background: #4a7dcc !important;
}
.confirmation-modal-button-yes:hover {
background: #5b9aff !important;
}
.confirmation-modal-button-uaa {
background: #c13030 !important;
}
.confirmation-modal-button-uaa:hover {
background: #d94444 !important;
}
.confirmation-modal-button-reason {
background: #4a7dcc !important;
}
.confirmation-modal-button-reason:hover {
background: #5b9aff !important;
}
.confirmation-modal-button-cancel {
background: #363e51 !important;
color: #f1f5ff !important;
}
.confirmation-modal-button-cancel:hover {
background: #4a5468 !important;
}
#user-contribs-top, #page-history-top {
border-bottom: 2px solid #363e51 !important;
}
#page-history {
border-top: 2px solid #363e51 !important;
}
.bottom-tool-title:hover, .settings-left-menu-item:hover, .settings-left-menu-item.selected,
.context-menu div:not(#context-ores):hover {
background: #292f3c !important;
}
.bottom-tool-option:hover, .numeric-input-button:hover {
background: #2e3442 !important;
}
.bottom-tool-title-selected, .submenu-selected {
background: #2e3442 !important;
}
.bottom-tool-content, .bottom-tool-option-subcontent {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4) !important;
}
.context-menu {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4) !important;
}
.settings {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;
}
#notifications-panel {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;
}
select, input[type=text], .bottom-subcontent-button {
background: rgba(46, 52, 66, 0.95) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
color: #e0e0e0 !important;
border-radius: 8px !important;
}
select:hover, input[type=text]:focus, .bottom-subcontent-button:hover {
border-color: rgba(91, 154, 255, 0.4) !important;
background: rgba(46, 52, 66, 1) !important;
}
.queue-edit-change {
background: linear-gradient(to right, rgba(34, 38, 47, 0), rgba(34, 38, 47, 1)) !important;
}
#right-top, #queue-top {
box-shadow: none !important;
border-bottom: 2px solid #363e51;
}
.queue-edit:not(.queue-edit-current) {
animation: fadeindark 0.5s linear 0s 1 !important;
}
@keyframes fadeindark {
from {
background: #363e51;
}
to {
background: transparent;
}
}
.diff-addedline {
background: rgba(0, 164, 0, 0.3) !important;
}
ins {
background: rgba(130, 169, 26, 0.5) !important;
}
.settings, .context-menu, .control-keys > div, .add-action-button, .control-container,
.user-container > div {
background: #22262f;
border: 2px solid #363e51;
}
.settings-left {
border-right: 2px solid #363e51;
}
#notifications-panel {
background: rgba(34, 38, 47, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;
}
#notifications-header {
border-bottom: 1px solid #363e51 !important;
}
.notification-item {
border-bottom: 1px solid #363e51 !important;
}
.notification-item:hover {
background: #292f3c !important;
}
.notification-item.unread {
background: #2a3a4a !important;
border-left-color: #5588cc !important;
}
.notification-subtitle {
color: #aaa !important;
}
.notification-time {
color: #888 !important;
}
.notification-type {
color: #999 !important;
}
#page-metadata {
color: #999 !important;
}
#mark-all-read {
color: #6ba3d8 !important;
}
.queue-edit-user-highlight {
background: rgba(114, 114, 55, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(150, 150, 50, 0.3) !important;
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(114, 114, 55, 0.3) !important;
}
.queue-edit-user-empty-talk {
background: rgba(107, 55, 55, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(150, 50, 50, 0.3) !important;
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(107, 55, 55, 0.3) !important;
}
.toggle-switch {
background: #363e51 !important;
}
.settings-toggle.active .toggle-switch {
background: #4a7dcc !important;
}
.toggle-slider {
background: #f1f5ff !important;
}
#block-count-indicator {
background: #22262f !important;
border-color: #ff6666 !important;
}
::-webkit-scrollbar {
background: #22262f;
width: 10px;
}
::-webkit-scrollbar-track {
background: #1a1e27;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #3a4052;
border-radius: 10px;
transition: background 0.2s;
}
::-webkit-scrollbar-thumb:hover {
background: #4a5468;
}
.queue-edit-current {
background: #2a3444 !important;
border-left: 4px solid #5b9aff !important;
box-shadow: inset 0 0 10px rgba(91, 154, 255, 0.15) !important;
}
#right-top {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
border-bottom: 2px solid #363e51 !important;
}
#queue-top {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
}
#bottom-tools {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
}
#right-top a {
color: #6ba3d8 !important;
}
#right-top a:hover {
color: #89b8e8 !important;
}
#right-top .fa {
color: #aaa !important;
}
/* Warning/Notice boxes - dark mode compatible */
.warning-box, .notice-box {
background: rgba(139, 92, 0, 0.15) !important;
border-left-color: #c5a000 !important;
color: #f0d48a !important;
}
.error-box {
background: rgba(139, 0, 0, 0.15) !important;
border-left-color: #dc3545 !important;
color: #ffb3b3 !important;
}
/* Older edit notice */
#old-edit-notice {
background: rgba(139, 92, 0, 0.15) !important;
border-left-color: #c5a000 !important;
color: #f0d48a !important;
}
#old-edit-notice a {
color: #a3c5ff !important;
}
/* Code blocks in light backgrounds */
code {
background: rgba(70, 80, 100, 0.5) !important;
color: #e0e0e0 !important;
}
`,
"mobile": `
/* ==================== MOBILE RESPONSIVE DESIGN ==================== */
@media (max-width: 768px) {
/* Reset overflow and sizing */
* {
box-sizing: border-box;
}
body, html {
overflow-x: hidden;
width: 100vw;
height: 100vh;
}
/* Main container - stack vertically */
#container {
display: flex;
flex-direction: column;
width: 100vw;
height: 100vh;
overflow: hidden;
}
/* ========== QUEUE SECTION ========== */
#queue {
width: 100%;
height: 35vh;
min-height: 200px;
max-height: 35vh;
border-right: none;
border-bottom: 2px solid #999;
display: flex;
flex-direction: column;
}
#queue-top {
height: 50px;
min-height: 50px;
padding: 10px 15px;
flex-shrink: 0;
}
#queue-top-title {
font-size: 16px;
}
#queue-top-items {
font-size: 12px;
}
#queue-list {
flex: 1;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
#queue-list li {
padding: 12px 15px;
font-size: 14px;
line-height: 1.5;
}
#queue-menu {
max-height: 50vh;
overflow-y: auto;
}
/* ========== MAIN CONTENT AREA ========== */
#main {
width: 100%;
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
min-height: 0;
}
/* ========== TOP SECTION (User Contribs & Page History) ========== */
#top {
display: flex;
flex-direction: column;
flex: 1;
overflow: hidden;
min-height: 0;
}
#user-contribs,
#page-history {
width: 100%;
height: 50%;
min-height: 150px;
border-right: none;
border-bottom: 2px solid #999;
display: flex;
flex-direction: column;
overflow: hidden;
}
#page-history {
border-bottom: none;
}
#user-contribs-top,
#page-history-top {
height: 45px;
min-height: 45px;
padding: 10px 15px;
font-size: 14px;
flex-shrink: 0;
}
#left-top,
#right-top {
padding: 10px 15px;
font-size: 14px;
}
#user-contribs-list,
#page-history-list {
flex: 1;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
font-size: 13px;
padding: 5px;
}
#user-contribs-list li,
#page-history-list li {
padding: 10px;
line-height: 1.5;
}
#user-contribs-level {
font-size: 11px;
padding: 3px 7px;
}
#block-count-indicator {
font-size: 10px;
padding: 3px 6px;
margin-right: 5px;
}
#protection-indicator {
font-size: 16px;
}
/* ========== BOTTOM SECTION (Actions & Diff) ========== */
#bottom {
display: none; /* Hidden by default on mobile, shown when needed */
flex-direction: column;
width: 100%;
height: 50vh;
max-height: 50vh;
position: fixed;
bottom: 0;
left: 0;
background: white;
border-top: 2px solid #999;
z-index: 100;
overflow: hidden;
}
#bottom.mobile-show {
display: flex;
}
#left-bottom,
#right-bottom {
width: 100%;
height: 50%;
border-right: none;
border-bottom: 1px solid #ccc;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
#right-bottom {
border-bottom: none;
}
.bottom-tool-title {
padding: 12px 15px;
font-size: 15px;
font-weight: 600;
}
.bottom-tool-content {
padding: 10px;
}
#diff-container {
font-size: 13px;
line-height: 1.5;
padding: 10px;
}
.diff-section {
padding: 10px;
margin: 5px 0;
}
/* ========== ACTION BUTTONS ========== */
.action-button {
padding: 12px 16px;
font-size: 14px;
margin: 5px;
min-height: 44px;
border-radius: 5px;
display: inline-block;
}
/* ========== REVERT MENU ========== */
#revert-menu {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.revert-menu-table {
width: 100%;
min-width: 600px; /* Allow horizontal scroll */
}
.revert-menu-title {
font-size: 13px;
padding: 8px;
min-width: 120px;
}
.revert-menu-info {
padding: 8px;
}
.revert-menu-item {
padding: 10px 12px;
font-size: 13px;
min-width: 44px;
min-height: 44px;
}
/* ========== WARN MENU ========== */
.warn-menu {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.warn-menu-table {
width: 100%;
min-width: 600px;
}
/* ========== POPUPS & DIALOGS ========== */
.popup-container {
width: 100vw;
height: 100vh;
max-width: 100vw;
max-height: 100vh;
margin: 0;
border-radius: 0;
left: 0;
top: 0;
transform: none;
}
.popup-content {
padding: 15px;
height: calc(100vh - 60px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.popup-title {
font-size: 18px;
padding: 15px;
}
.report-warn-popup {
width: 100vw;
height: calc(100vh - 80px);
}
/* ========== SETTINGS DIALOG ========== */
#settings-container {
width: 100vw;
height: 100vh;
max-width: 100vw;
max-height: 100vh;
border-radius: 0;
left: 0;
top: 0;
transform: none;
}
#settings-tabs {
display: flex;
flex-direction: row;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
border-bottom: 2px solid #ccc;
border-right: none;
width: 100%;
flex-wrap: nowrap;
}
.settings-tab {
min-width: 100px;
padding: 15px 10px;
font-size: 14px;
border-right: 1px solid #ccc;
border-bottom: none;
white-space: nowrap;
flex-shrink: 0;
}
#settings-content {
padding: 15px;
height: calc(100vh - 60px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
/* ========== NOTIFICATIONS ========== */
#notification-container {
position: fixed;
top: 10px;
left: 10px;
right: 10px;
width: auto;
max-width: none;
}
.notification {
padding: 12px;
font-size: 13px;
line-height: 1.4;
margin-bottom: 10px;
}
#notifications-panel {
width: calc(100vw - 20px);
max-width: none;
right: 10px;
left: 10px;
max-height: 60vh;
}
/* ========== MENUS ========== */
#queue-menu,
#user-contribs-menu,
#page-history-menu {
font-size: 13px;
max-height: 60vh;
overflow-y: auto;
}
.menu-item {
padding: 12px 15px;
min-height: 44px;
}
/* ========== CONTEXT MENU ========== */
.context-menu {
max-width: calc(100vw - 40px);
max-height: 70vh;
overflow-y: auto;
}
/* ========== WELCOME SCREEN ========== */
#welcome-container {
padding: 20px;
width: 90%;
max-width: 400px;
}
#welcome-container h1 {
font-size: 22px;
}
.about-link {
font-size: 14px;
padding: 8px 12px;
}
#start-button {
font-size: 16px;
padding: 14px 24px;
min-height: 48px;
}
/* ========== TOUCH TARGETS ========== */
button,
a,
.clickable {
min-height: 44px;
min-width: 44px;
}
/* ========== FIX MOBILE WEBKIT ISSUES ========== */
input,
textarea,
select {
font-size: 16px; /* Prevents zoom on iOS */
}
/* ========== SCROLLBAR STYLING ========== */
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-thumb {
background: #999;
border-radius: 3px;
}
}
/* ==================== SMALL MOBILE (≤480px) ==================== */
@media (max-width: 480px) {
#queue {
height: 30vh;
max-height: 30vh;
min-height: 150px;
}
#queue-top-title {
font-size: 15px;
}
#queue-list li {
padding: 10px 12px;
font-size: 13px;
}
#user-contribs-top,
#page-history-top {
font-size: 13px;
padding: 8px 12px;
}
#user-contribs-list li,
#page-history-list li {
font-size: 12px;
}
.action-button {
padding: 10px 14px;
font-size: 13px;
}
.revert-menu-item {
padding: 8px 10px;
font-size: 12px;
}
.notification {
font-size: 12px;
}
}
/* ==================== TABLET (769px-1024px) ==================== */
@media (min-width: 769px) and (max-width: 1024px) {
#container {
flex-direction: row;
}
#queue {
width: 320px;
height: 100%;
border-right: 2px solid #bfbfbf;
border-bottom: none;
}
#main {
flex: 1;
display: flex;
flex-direction: column;
}
#top {
flex-direction: row;
flex: 1;
}
#user-contribs,
#page-history {
width: 50%;
height: 100%;
border-bottom: none;
}
#bottom {
display: flex;
flex-direction: row;
position: relative;
height: auto;
max-height: none;
}
#left-bottom,
#right-bottom {
width: 50%;
height: auto;
}
}
`
};
// </nowiki>
// <nowiki>
const wikishieldHTML = {
"head": `
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
`,
"initial": `
<div id="container">
<div id="welcome-container">
<h1>Welcome to 🛡️WikiShield</h1>
<a href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="about-link">About</a>
<a href="https://en.wikipedia.org/wiki/Wikipedia talk:WikiShield" target="_blank" class="about-link">Discuss</a>
<span class="about-link">Version ${wikishieldVersion}</span>
<div id="rollback-needed">
<p>You must have rollback or admin rights to use this script.</p>
<p>You can apply for rollback rights <a href="https://en.wikipedia.org/wiki/WP:PERM/R" target="_blank">here</a>.</p>
</div>
<button id="start-button">Start 🛡️WikiShield</button>
</div>
</div>
`,
"main": `
<div id="container">
<div id="queue">
<div id="queue-top">
<div id="queue-top-left">
<span id="queue-top-title">Queue</span>
<span id="queue-top-items">0 items</span>
</div>
<div id="queue-top-right">
<span class="fa fa-bell" id="notifications-icon" data-tooltip="Notifications" style="position: relative;">
<span id="notification-count" style="display: none; position: absolute; top: -5px; right: -5px; background: red; color: white; border-radius: 50%; width: 16px; height: 16px; font-size: 10px; text-align: center; line-height: 16px; font-family: sans-serif;"></span>
</span>
<span class="fa fa-trash" id="delete-queue" data-tooltip="Clear queue"></span>
<span class="fa fa-gear" id="open-settings" data-tooltip="Open settings"></span>
</div>
</div>
<div id="queue-items"></div>
<div class="width-adjust" id="queue-width-adjust"></div>
</div>
<div id="notifications-panel">
<div id="notifications-header">
<span>Notifications</span>
<span id="mark-all-read" style="font-size: 0.85em; font-weight: normal; cursor: pointer; color: #0645ad;">Mark all as read</span>
</div>
<div id="notifications-list"></div>
</div>
<div id="right-container">
<div id="right-top"></div>
<div id="right-content">
<div id="main-container">
<div id="diff-container"></div>
<div id="progress-bar-container"></div>
<div id="bottom-tools">
<div id="bottom-tools-left">
<div id="bottom-revert">
<div class="bottom-tool-title">Revert and warn</div>
<div id="revert-menu" class="bottom-tool-content"></div>
</div>
<div id="bottom-warn">
<div class="bottom-tool-title">Warn</div>
<div id="warn-menu" class="bottom-tool-content"></div>
</div>
<div id="bottom-user">
<div class="bottom-tool-title">User</div>
<div class="bottom-tool-content">
<div id="user-open-user-page" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open user page</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-open-user-talk" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open user talk</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-view-contribs" class="bottom-tool-option">
<div class="bottom-tool-option-title">View user contributions</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-view-filter-log" class="bottom-tool-option">
<div class="bottom-tool-option-title">View filter log hits</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-add-whitelist" class="bottom-tool-option">
Add to whitelist
<span class="fas fa-circle-question" data-tooltip="You won't see any more edits by this user"></span>
</div>
<div id="user-highlight" class="bottom-tool-option">
Highlight
<span class="fas fa-circle-question" data-tooltip="This user's future edits will go to the top of your queue"></span>
</div>
<div id="user-welcome" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Welcome</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<div id="user-report-aiv" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Report (AIV)</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<div id="user-report-uaa" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Report (UAA)</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<!--<div id="user-block" class="bottom-tool-option tool-block submenu">
<div class="bottom-tool-option-title">Block</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>-->
</div>
</div>
<div id="bottom-page">
<div class="bottom-tool-title">Page</div>
<div class="bottom-tool-content">
<div id="page-open-page" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open page</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="page-open-talk" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open talk page</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="page-view-history" class="bottom-tool-option">
<div class="bottom-tool-option-title">View page history</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="page-request-protection" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Request protection</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<!--<div id="page-protect" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Protect</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>-->
</div>
</div>
<div id="bottom-edit">
<div class="bottom-tool-title">Edit</div>
<div class="bottom-tool-content">
<div id="edit-view-revision" class="bottom-tool-option">
<div class="bottom-tool-option-title">View revision</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="edit-view-diff" class="bottom-tool-option">
<div class="bottom-tool-option-title">View diff</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="edit-thank-user" class="bottom-tool-option">Thank user</div>
<div id="edit-rollback" class="bottom-tool-option">Rollback</div>
<div id="edit-rollback-goodfaith" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Rollback (good faith)</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<div id="edit-undo" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Undo</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
</div>
</div>
</div>
<div id="bottom-tools-stats">
<div>
<span class="fa fa-user"></span>
<span class="stat-value" id="stat-total-contribs">-</span>
<span>edits</span>
</div>
</div>
</div>
</div>
<div id="right-details">
<div class="width-adjust" id="details-width-adjust"></div>
<div id="user-contribs">
<div id="user-contribs-top">
<div id="user-contribs-left">
<div id="user-contribs-title">User contributions</div>
<div id="user-contribs-count">_ edits</div>
</div>
<div id="block-count-indicator" style="display: none;"></div>
<div id="user-contribs-level" data-tooltip="Warning level">0</div>
</div>
<div id="user-contribs-content"></div>
</div>
<div class="height-adjust"></div>
<div id="page-history">
<div id="page-history-top">
<div>
<div id="page-history-title">Page history</div>
<div id="page-metadata" style="font-size: 0.75em; color: #666; margin-top: 3px;"></div>
</div>
<div id="protection-indicator"></div>
</div>
<div id="page-history-content"></div>
</div>
</div>
</div>
</div>
</div>
`,
"edit-context-menu": `
<div id="context-ores"><span id="context-ores-number">0</span> ORES score</div>
<div id="context-remove">Remove from queue</div>
<div id="context-whitelist">Whitelist user</div>
<div id="context-open-history">View page history</div>
<div id="context-open-contribs">View user contribs</div>
`,
"settings": `
<div class="settings">
<div class="settings-left">
<div class="settings-left-menu-item" id="settings-general-button">General</div>
<div class="settings-left-menu-item" id="settings-ai-button">AI Analysis</div>
<div class="settings-left-menu-item" id="settings-appearance-button">Appearance</div>
<div class="settings-left-menu-item" id="settings-controls-button">Controls</div>
<div class="settings-left-menu-item" id="settings-whitelist-button">Whitelist</div>
<div class="settings-left-menu-item" id="settings-highlight-button">Highlighted</div>
<div class="settings-left-menu-item" id="settings-statistics-button">Statistics</div>
<div class="settings-left-menu-item" id="settings-about-button">About</div>
</div>
<div class="settings-right"></div>
</div>
`
};
// </nowiki>
// <nowiki>
class wikishieldUtil {
constructor() {}
/**
* Given a Date object, return a string in the format YYYY-MM-DDTHH:MM:SS
* @param {Date} date The date to convert
* @returns {String} The date in the format YYYY-MM-DDTHH:MM:SS
*/
utcString(date) {
return date.getUTCFullYear() + "-" +
this.padString(date.getUTCMonth() + 1, 2) + "-" +
this.padString(date.getUTCDate(), 2) + "T" +
this.padString(date.getUTCHours(), 2) + ":" +
this.padString(date.getUTCMinutes(), 2) + ":" +
this.padString(date.getUTCSeconds(), 2);
}
/**
* Given a string and a length, pad the string with 0s to the left until it is the given length
* @param {String} str The string to pad
* @param {Number} len The length to pad to
* @returns {String} The padded string
*/
padString(str, len) {
str = str.toString();
while (str.length < len) {
str = "0" + str;
}
return str;
}
/**
* Given a string, encode it for use in a URL
* @param {String} str The string to encode
* @returns {String} The encoded string
*/
encodeuri(str) {
return encodeURIComponent(str);
}
/**
* Get the section name for the current month and year
* @returns {String} The section name
*/
monthSectionName() {
const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
const currentMonth = months[new Date().getUTCMonth()];
const currentYear = new Date().getUTCFullYear();
return currentMonth + " " + currentYear;
}
/**
* Given a string, escape it for use in HTML
* @param {String} str The string to escape
* @returns {String} The escaped string
*/
escapeHtml(str) {
return (str || "").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
}
/**
* Given the title of a page, return the URL to that page
* @param {String} title The title of the page
* @param {Boolean} usePhpString Whether to use /w/index.php in the link
* @returns {String} The URL to the page
*/
pageLink(title, usePhpString=false) {
return usePhpString
? `https://${wikishield.options.wiki}.wikipedia.org/w/index.php${title}`
: `https://${wikishield.options.wiki}.wikipedia.org/wiki/${this.encodeuri(title)}`;
}
/**
* If the given string is longer than the given length, truncate it and add "..." to the end
* @param {String} str The string to truncate
* @param {Number} len The length to truncate to
* @returns {String} The truncated string
*/
maxStringLength(str, len) {
return str.length > len ? str.substring(0, len) + "..." : str;
}
/**
* Given the number of bytes changed in an edit, return the color
* @param {Number} delta The number of bytes changed
* @returns {String} The color
*/
getChangeColor(delta) {
return delta > 0 ? "green" : (delta < 0 ? "red" : "black");
}
/**
* Given the number of bytes changed in an edit, return the string (eg. "+100")
* @param {Number} delta The number of bytes changed
* @returns {String} The string
*/
getChangeString(delta) {
return delta > 0 ? "+" + delta : (delta === 0 ? "0" : "–" + Math.abs(delta).toString());
}
/**
* Given a timestamp, return a string representing how long ago it was
* @param {String} timestamp The timestamp
* @returns {String} Time ago
*/
timeAgo(timestamp) {
const difference = new Date().getTime() - new Date(timestamp);
const seconds = Math.floor(difference / 1000);
// Handle future timestamps (clock skew)
if (seconds < 0) {
return "just now";
}
if (seconds > 60) {
if (seconds > 60 * 60) {
if (seconds > 60 * 60 * 24) {
const val = Math.floor(seconds / 60 / 60 / 24);
return val + " day" + (val !== 1 ? "s" : "") + " ago";
}
const val = Math.floor(seconds / 60 / 60);
return val + " hour" + (val !== 1 ? "s" : "") + " ago";
}
const val = Math.floor(seconds / 60);
return val + " minute" + (val !== 1 ? "s" : "") + " ago";
}
return seconds + " second" + (seconds !== 1 ? "s" : "") + " ago";
}
}
class wikishieldLog {
constructor() {}
/**
* Log a message to the console
* @param {String} text The message to log
*/
log(text) {
console.log(`🛡️WikiShield: ${text}`);
}
}
// </nowiki>
// <nowiki>
class wikishieldAPI {
constructor(api) {
this.api = api;
}
/**
* Edit the given page with the given content and summary
* @param {String} title The title of the page to edit
* @param {String} content The content to edit the page with
* @param {String} summary The edit summary
* @param {Object} params Any additional parameters to pass to the API
* @returns {Promise<Boolean>}
*/
async edit(title, content, summary, params={}) {
if (wikishield.testingMode) {
console.log("Edit", { title, content, summary });
return true;
}
try {
await this.api.postWithEditToken(Object.assign({}, {
"action": "edit",
"title": title,
"text": content,
"summary": summary,
"format": "json",
"tags": "WikiShield script"
}, params));
return true;
} catch (err) {
wikishield.logger.log(`Could not edit page ${title}: ${err}`);
return false;
}
}
/**
* Edit a page to append text
* @param {String} title The title of the page to edit
* @param {String} content Content to append to the page
* @param {String} summary Edit summary to use
* @returns {Promise<Boolean>}
*/
async appendText(title, content, summary) {
if (wikishield.testingMode) {
console.log("Append text", { title, content, summary });
return true;
}
try {
await this.api.postWithEditToken({
"action": "edit",
"title": title,
"appendtext": "\n" + content,
"summary": summary,
"format": "json",
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log(`Could not append text to page ${title}: ${err}`);
return false;
}
}
/**
* Get the content of the given pages
* @param {String} titles The titles of the pages to get, separated by "|"
* @returns {Promise<Object>} The content of the pages
*/
async getText(titles) {
try {
const response = await this.api.get({
"action": "query",
"prop": "revisions",
"titles": titles,
"rvprop": "content",
"rvslots": "*",
"format": "json",
"formatversion": 2
});
const pages = response.query.pages.map(page => {
return [page["title"], page["missing"] ? "" : page.revisions[0].slots.main.content];
});
return pages
.reduce((a, v) => ({...a, [v[0]]: v[1]}), {});
} catch (err) {
wikishield.logger.log(`Could not fetch page ${titles}: ${err}`);
}
}
/**
* Get the content of a single page
* @param {String} title
* @returns {Promise<String>} The page content
*/
async getSinglePageContent(title) {
try {
const data = await this.getText(title);
return data[title];
} catch (err) {
console.log("Could not fetch page", err);
}
}
/**
* Get the content of the given revision id
* @param {Number} revid The revision id to get
* @returns {Promise<String>} The content of the revision
*/
async getTextByRevid(revid) {
try {
const response = await this.api.get({
"action": "query",
"prop": "revisions",
"revids": revid,
"rvprop": "content",
"rvslots": "*",
"format": "json",
"formatversion": 2
});
const page = response.query.pages[0];
return page["missing"] ? "" : page.revisions[0].slots.main.content;
} catch (err) {
wikishield.logger.log(`Could not fetch page with revid ${revid}: ${err}`);
}
}
/**
* Get the difference between two revisions of the given page
* @param {String} title The title of the page
* @param {Number} old_revid The old revision ID
* @param {Number} revid The new revision ID
* @returns {Promise<String>} The difference between the two revisions, in HTML format
*/
async diff(title, old_revid, revid) {
try {
const response = await this.api.get({
"action": "compare",
"fromrev": old_revid,
"torev": revid,
"prop": "diff",
"format": "json",
"formatversion": 2
});
return response.compare.body;
} catch (err) {
wikishield.logger.log(`Could not fetch diff for page ${title}: ${err}`);
}
}
/**
* Get the contributions of the given user
* @param {String} user The user to get contributions for
* @returns {Promise<Array>} The contributions
*/
async contribs(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "usercontribs",
"ucuser": user,
"uclimit": 10,
"ucprop": "title|ids|timestamp|comment|flags|sizediff|tags",
"format": "json",
"formatversion": 2
});
return response.query.usercontribs;
} catch (err) {
wikishield.logger.log(`Could not fetch contributions for user ${user}: ${err}`);
}
}
/**
* Get the edit count of the given users
* @param {String} users The users to get edit counts for, separated by "|"
* @returns {Promise<Array>} The edit counts
*/
async editCount(users) {
try {
const response = await this.api.get({
"action": "query",
"list": "users",
"ususers": users,
"usprop": "editcount",
"format": "json",
"formatversion": 2
});
return response.query.users;
} catch (err) {
wikishield.logger.log(`Could not fetch edit count for users ${users}: ${err}`);
}
}
/**
* Get the filter log of the given user
* @param {String} user The user to get the filter log for
* @returns {Promise<Array>} The filter log
*/
async filterLog(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "filter",
"leuser": user,
"lelimit": 50,
"format": "json",
"formatversion": 2
});
return response.query.logevents;
} catch (err) {
wikishield.logger.log(`Could not fetch filter log for user ${user}: ${err}`);
}
}
/**
* Get the number of times a user has been blocked
* @param {String} user The username to check
* @returns {Promise<Number>} The number of blocks
*/
async getBlockCount(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "block",
"letitle": `User:${user}`,
"leaction": "block/block",
"lelimit": 500,
"format": "json",
"formatversion": 2
});
return response.query.logevents ? response.query.logevents.length : 0;
} catch (err) {
console.log(`Could not fetch block count for user ${user}:`, err);
return 0;
}
}
/**
* Get detailed block history for a user
* @param {String} user The username
* @returns {Promise<Array>} Array of block log entries
*/
async getBlockHistory(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "block",
"letitle": `User:${user}`,
"leaction": "block/block",
"lelimit": 10,
"leprop": "user|timestamp|comment|details",
"format": "json",
"formatversion": 2
});
return response.query.logevents || [];
} catch (err) {
console.log(`Could not fetch block history for user ${user}:`, err);
return [];
}
}
/**
* Get the history of the given page
* @param {String} page The page to get the history for
* @returns {Promise<Array>} The history
*/
async history(page) {
try {
const response = await this.api.get({
"action": "query",
"prop": "revisions",
"titles": page,
"rvprop": "title|ids|timestamp|comment|flags|sizediff|user|tags|size",
"rvlimit": 11,
"format": "json",
"formatversion": 2
});
const revisions = response.query.pages[0].revisions;
for (let i = 0; i < Math.min(10, revisions.length); i++) {
if (i + 1 < revisions.length) {
revisions[i]["sizediff"] = revisions[i].size - revisions[i + 1].size;
} else {
revisions[i]["sizediff"] = revisions[i].size;
}
}
return revisions.splice(0, 10);
} catch (err) {
wikishield.logger.log(`Could not fetch history for page ${page}: ${err}`);
}
}
/**
* Get page protection information
* @param {String} page The page title
* @returns {Promise<Object>} Protection info with level and type
*/
async getPageProtection(page) {
try {
const response = await this.api.get({
"action": "query",
"titles": page,
"prop": "info",
"inprop": "protection",
"format": "json",
"formatversion": 2
});
const pageData = response.query.pages[0];
if (pageData && pageData.protection && pageData.protection.length > 0) {
// Get the highest protection level
const protections = pageData.protection;
let highestLevel = null;
let types = [];
for (const prot of protections) {
types.push(prot.type);
if (prot.level === "sysop") {
highestLevel = "full";
} else if (prot.level === "autoconfirmed" && highestLevel !== "full") {
highestLevel = "semi";
} else if (prot.level === "extendedconfirmed" && highestLevel !== "full") {
highestLevel = "extended";
}
}
return {
protected: true,
level: highestLevel,
types: types
};
}
return { protected: false };
} catch (err) {
console.log(`Could not fetch protection info for ${page}:`, err);
return { protected: false };
}
}
/**
* Get latest revision IDs for multiple pages
* @param {String} pages Pipe-separated list of page titles
* @returns {Promise<Object>} Object mapping page titles to latest revision IDs
*/
async getLatestRevisions(pages) {
try {
// Split pages string into array
const pageArray = pages.split("|");
const result = {};
// Make individual requests for each page to avoid API parameter issues
for (const page of pageArray) {
try {
const response = await this.api.get({
"action": "query",
"titles": page,
"prop": "revisions",
"rvprop": "ids",
"rvlimit": 1,
"format": "json"
});
if (response.query && response.query.pages) {
for (const pageId in response.query.pages) {
const pageData = response.query.pages[pageId];
if (pageData.revisions && pageData.revisions.length > 0 && pageData.title) {
result[pageData.title] = pageData.revisions[0].revid;
}
}
}
} catch (pageErr) {
// Skip pages that fail individually
console.log(`Failed to fetch revision for ${page}: ${pageErr}`);
}
}
return result;
} catch (err) {
wikishield.logger.log(`Could not fetch latest revisions: ${err}`);
return {};
}
}
/**
* Get page metadata including date format and English variant
* @param {String} page The page title
* @returns {Promise<Object>} Object with dateFormat and englishVariant
*/
async getPageMetadata(page) {
try {
const response = await this.api.get({
"action": "query",
"prop": "info",
"titles": page,
"format": "json",
"formatversion": 2
});
const pageInfo = response.query.pages[0];
// Get the page content to check for {{Use dmy dates}} or {{Use mdy dates}}
const contentResponse = await this.api.get({
"action": "parse",
"page": page,
"prop": "wikitext",
"format": "json",
"formatversion": 2
});
const wikitext = contentResponse.parse ? contentResponse.parse.wikitext : "";
// Check for date format templates
let dateFormat = "Unknown";
if (/\{\{Use dmy dates/i.test(wikitext)) {
dateFormat = "dmy (day-month-year)";
} else if (/\{\{Use mdy dates/i.test(wikitext)) {
dateFormat = "mdy (month-day-year)";
}
// Check for English variant templates
let englishVariant = "Unknown";
if (/\{\{Use British English/i.test(wikitext)) {
englishVariant = "British English";
} else if (/\{\{Use American English/i.test(wikitext)) {
englishVariant = "American English";
} else if (/\{\{Use Canadian English/i.test(wikitext)) {
englishVariant = "Canadian English";
} else if (/\{\{Use Australian English/i.test(wikitext)) {
englishVariant = "Australian English";
}
return { dateFormat, englishVariant };
} catch (err) {
wikishield.logger.log(`Could not fetch metadata for page ${page}: ${err}`);
return { dateFormat: "Unknown", englishVariant: "Unknown" };
}
}
/**
* Get recent edits to Wikipedia
* @param {String} namespaces The namespaces to get recent changes for, separated by "|"
* @param {String} since The timestamp to start from
* @returns {Promise<Array>} The recent changes
*/
async recentChanges(namespaces, since) {
try {
const response = await this.api.get({
"action": "query",
"list": "recentchanges",
"rcnamespace": namespaces,
"rclimit": 50,
"rcprop": "title|ids|sizes|flags|user|tags|comment|timestamp",
"rctype": "edit",
"format": "json",
"rcstart": since || "",
"rcdir": since ? "newer" : "older"
});
return response.query.recentchanges;
} catch (err) {
wikishield.logger.log(`Could not fetch recent changes: ${err}`);
}
}
/**
* Get the ORES scores for the given revisions
* @param {String} revids The revision IDs to get ORES scores for, separated by "|"
* @returns {Promise<Object>} The ORES scores
*/
async ores(revids) {
try {
const response = await this.api.get({
"action": "query",
"format": "json",
"formatversion": 2,
"prop": "revisions",
"revids": revids,
"rvprop": "oresscores|ids",
"rvslots": "*"
});
const scores = response.query.pages.map(page => {
return ["goodfaith"] in page["revisions"][0]["oresscores"] ? [
page["revisions"][0]["revid"],
page["revisions"][0]["oresscores"]["goodfaith"]["false"]
] : [ page["revisions"][0]["revid"], 0 ];
});
return scores
.reduce((a, v) => ({...a, [v[0]]: v[1]}), {});
} catch (err) {
wikishield.logger.log(`Could not fetch ORES scores for revision ${revids}: ${err}`);
}
}
/**
* Check if the given users are blocked
* @param {String} users The users to get blocks for, separated by "|"
* @returns {Promise<Object>} The blocks
*/
async usersBlocked(users) {
try {
const response = await this.api.get({
"action": "query",
"list": "blocks",
"bkusers": users,
"bkprop": "id|user|by|timestamp|expiry|reason",
"format": "json",
"formatversion": 2
});
const blocks = {};
users.split("|").forEach(user => blocks[user] = false);
response.query.blocks.forEach(block => blocks[block.user] = !block.partial);
return blocks;
} catch (err) {
wikishield.logger.log(`Could not fetch blocks for users ${users}: ${err}`);
}
}
/**
* Rollback the user's edits
* @param {String} title The title of the page to rollback
* @param {String} user The user to rollback
* @param {String} summary The summary to use for the rollback
* @returns {Promise<Boolean>} Whether the rollback was successful
*/
async rollback(title, user, summary) {
if (wikishield.testingMode) {
console.log("Rollback", { title, user, summary });
return true;
}
try {
await this.api.rollback(title, user, {
"summary": summary,
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Undo a single edit
* @param {Object} edit The edit object to undo
* @param {String} reason The reason for undoing
* @returns {Promise<Boolean>} Whether the undo was successful
*/
async undoEdit(edit, reason) {
if (wikishield.testingMode) {
console.log("Undo", { edit, reason });
return true;
}
try {
// Get the revision ID to undo and the previous revision
const revid = edit.revid;
const title = edit.page.title;
// Use the MediaWiki API to undo the edit
await this.api.postWithToken("csrf", {
"action": "edit",
"title": title,
"undo": revid,
"summary": reason,
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log("Error undoing edit:", err);
return false;
}
}
/**
* Block a user with the given details
* @param {String} user User to block
* @param {String} summary Reason to use when blocking
* @param {String} duration Length of time to block the user
* @param {Boolean} blockCreation Prevent user from creating accounts when blocked
* @param {Boolean} blockEmail Prevent user from sending emails
* @param {Boolean} blockTalk Prevent user from editing their own talk page
* @param {Boolean} anonOnly
* @returns {Promise<Boolean>} Whether the block was successful
*/
async block(user, summary, duration, blockCreation=false, blockEmail=false, blockTalk=false, anonOnly=true) {
if (wikishield.testingMode) {
console.log("Block", { user, summary, duration });
return true;
}
try {
await this.api.postWithToken("csrf", Object.assign(
{
"action": "block",
"user": user,
"expiry": duration,
"reason": summary,
"tags": "WikiShield script"
},
blockCreation ? { "nocreate": "" } : {},
blockEmail ? { "noemail": "" } : {},
blockTalk ? {} : { "allowusertalk": "" },
anonOnly ? { "anononly": "" } : {}
));
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Thank a user for the given edit
* @param {Number} revid
* @returns {Promise<Boolean>} Whether the action was successful
*/
async thank(revid) {
if (wikishield.testingMode) {
console.log("Thank", { revid });
return true;
}
try {
await this.api.postWithToken("csrf", {
"action": "thank",
"rev": revid
});
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Get level and expiry of edit and move protections for a page
* @param {String} page Name of the page to get details for
* @returns {Promise<Object>} The details of the protection
*/
async getProtectionDetails(page) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "protect",
"letitle": page,
"lelimit": 1
});
const details = {
edit: "all", editExpiry: "infinite",
move: "all", moveExpiry: "infinite"
};
if (Object.keys(response).includes("params") && Object.keys(response.params).includes("details")) {
for (const item of response.params.details) {
if (item.type === "edit") {
details.edit = item.level;
details.editExpiry = item.expiry;
}
if (item.type === "move") {
details.move = item.level;
details.moveExpiry = item.expiry;
}
}
}
return details;
} catch (err) {
console.log(err);
}
}
/**
* Protect a page with the given details
* @param {String} page Page to protect
* @param {String} summary Summary to use in protection
* @param {Object} details Levels and expiry of protection
* @returns {Promise<Boolean>} Whether the protection was successful
*/
async protect(page, summary, details) {
if (wikishield.testingMode) {
console.log("Protect", { page, summary, details });
return true;
}
try {
await this.api.postWithToken("csrf", {
"action": "protect",
"title": page,
"reason": summary,
"protections": `edit=${details.edit}|move=${details.move}`,
"expiry": `${details.editExpiry}|${details.moveExpiry}`,
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Make a GET request to the MediaWiki API
* @param {Object} params The parameters for the API request
* @returns {Promise<Object>} The API response
*/
async get(params) {
return await this.api.get(params);
}
/**
* Make a POST request to the MediaWiki API with a token
* @param {String} tokenType The type of token to use
* @param {Object} params The parameters for the API request
* @returns {Promise<Object>} The API response
*/
async postWithToken(tokenType, params) {
return await this.api.postWithToken(tokenType, params);
}
}
// </nowiki>
// <nowiki>
/**
* Puter.js AI Integration for edit analysis
*/
class wikishieldOllamaAI {
constructor(serverUrl, model) {
this.serverUrl = serverUrl || "http://localhost:11434";
this.model = model || "";
this.cache = new Map(); // Cache results to avoid repeated API calls
this.rateLimitDelay = 1000; // Minimum delay between API calls
this.lastCallTime = 0;
this.availableModels = [];
this.activeRequests = new Map(); // Track active requests by revid for cancellation
}
/**
* Fetch available models from Ollama server
* @returns {Promise<Array>} List of available models
*/
async fetchModels() {
try {
const response = await fetch(`${this.serverUrl}/api/tags`, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
});
if (!response.ok) {
throw new Error(`Failed to fetch models: ${response.status} ${response.statusText}`);
}
const data = await response.json();
this.availableModels = data.models || [];
return this.availableModels;
} catch (err) {
console.error('Error fetching Ollama models:', err);
throw err;
}
}
/**
* Test connection to Ollama server
* @returns {Promise<boolean>} True if server is reachable
*/
async testConnection() {
try {
const response = await fetch(`${this.serverUrl}/api/version`, {
method: 'GET'
});
return response.ok;
} catch (err) {
console.error('Ollama connection test failed:', err);
return false;
}
}
/**
* Analyze an edit using Ollama AI
* @param {Object} edit The edit object containing diff, title, user, comment, etc.
* @returns {Promise<Object>} Analysis result with issues array and summary
*/
async analyzeEdit(edit) {
if (!wikishield.options.enableOllamaAI) {
return null;
}
if (!this.model) {
console.error('No Ollama model selected');
return null;
}
// Check cache
const cacheKey = `${edit.revid}`;
if (this.cache.has(cacheKey)) {
return this.cache.get(cacheKey);
}
// Cancel any existing request for this edit
if (this.activeRequests.has(cacheKey)) {
this.activeRequests.get(cacheKey).abort();
this.activeRequests.delete(cacheKey);
}
// Create abort controller for this request
const abortController = new AbortController();
this.activeRequests.set(cacheKey, abortController);
// Rate limiting
const now = Date.now();
const timeSinceLastCall = now - this.lastCallTime;
if (timeSinceLastCall < this.rateLimitDelay) {
await new Promise(resolve => setTimeout(resolve, this.rateLimitDelay - timeSinceLastCall));
}
// Check if request was cancelled during rate limit delay
if (abortController.signal.aborted) {
this.activeRequests.delete(cacheKey);
console.log(`AI analysis cancelled for edit ${cacheKey} (during rate limit)`);
return null;
}
try {
const prompt = this.buildAnalysisPrompt(edit);
const response = await this.callOllamaAI(prompt, abortController.signal);
const analysis = this.parseOllamaResponse(response);
// Cache the result
this.cache.set(cacheKey, analysis);
// Limit cache size
if (this.cache.size > 100) {
const firstKey = this.cache.keys().next().value;
this.cache.delete(firstKey);
}
this.lastCallTime = Date.now();
// Clean up active request
this.activeRequests.delete(cacheKey);
return analysis;
} catch (err) {
// Clean up active request
this.activeRequests.delete(cacheKey);
// If request was aborted, return null instead of error
if (err.name === 'AbortError' || err.message?.includes('aborted')) {
console.log(`AI analysis cancelled for edit ${cacheKey}`);
return null;
}
console.error("Ollama AI analysis error:", err);
return {
hasIssues: false,
issues: [],
summary: "Analysis failed",
error: err.message
};
}
}
/**
* Convert HTML diff to human-readable text format with context
* @param {String} diffHTML The HTML diff from MediaWiki
* @returns {String} Readable text representation
*/
convertDiffToReadable(diffHTML) {
if (!diffHTML) return "No changes visible";
// Create a temporary div to parse HTML
const tempDiv = document.createElement('div');
// Wrap in table since the diff HTML is just table rows
tempDiv.innerHTML = `<table>${diffHTML}</table>`;
let readableLines = [];
let contextBuffer = []; // Buffer for context lines
const MAX_CONTEXT = 2; // Number of context lines before/after changes
// Get all table rows
const rows = tempDiv.querySelectorAll('tr');
for (let i = 0; i < rows.length; i++) {
const row = rows[i];
// Skip line number rows
if (row.querySelector('.diff-lineno')) {
continue;
}
// Get the cells from both sides
const marker = row.querySelector('.diff-marker');
const leftCell = row.querySelector('.diff-side-deleted');
const rightCell = row.querySelector('.diff-side-added');
if (!leftCell || !rightCell) continue;
// Check if this is a context line (unchanged on both sides)
const isContext = leftCell.classList.contains('diff-context') &&
rightCell.classList.contains('diff-context');
if (isContext) {
// Get the text content
const contextText = this.cleanDiffText(leftCell);
// Skip empty lines
if (!contextText.trim() || contextText === '<br />') {
continue;
}
// Add to context buffer
contextBuffer.push(` ${contextText}`);
// Keep only last MAX_CONTEXT lines in buffer
if (contextBuffer.length > MAX_CONTEXT) {
contextBuffer.shift();
}
} else {
// This is a change line
// First, flush context buffer if we have any
if (contextBuffer.length > 0) {
// Add spacing if not first group
if (readableLines.length > 0) {
readableLines.push('');
}
readableLines.push(...contextBuffer);
contextBuffer = [];
}
// Process the change
const markerText = marker?.getAttribute('data-marker') || '';
if (markerText === '−' || leftCell.classList.contains('diff-deletedline')) {
// Deleted line
const text = this.cleanDiffText(leftCell, true);
if (text.trim() && text !== '<br />') {
readableLines.push(`- ${text}`);
}
}
if (markerText === '+' || rightCell.classList.contains('diff-addedline')) {
// Added line
const text = this.cleanDiffText(rightCell, true);
if (text.trim() && text !== '<br />') {
readableLines.push(`+ ${text}`);
}
}
// Clear context buffer after changes (we'll start fresh)
contextBuffer = [];
// Look ahead for immediate context after this change
let contextLinesAfter = 0;
for (let j = i + 1; j < Math.min(i + 1 + MAX_CONTEXT, rows.length); j++) {
const nextRow = rows[j];
const nextLeft = nextRow.querySelector('.diff-side-deleted');
const nextRight = nextRow.querySelector('.diff-side-added');
if (!nextLeft || !nextRight) continue;
const isNextContext = nextLeft.classList.contains('diff-context') &&
nextRight.classList.contains('diff-context');
if (isNextContext) {
const nextText = this.cleanDiffText(nextLeft);
if (nextText.trim() && nextText !== '<br />') {
readableLines.push(` ${nextText}`);
contextLinesAfter++;
}
} else {
break; // Stop at next change
}
}
// Skip the context lines we just added
i += contextLinesAfter;
}
}
// If no changes were found
if (readableLines.length === 0) {
return "No significant changes detected in diff";
}
// Limit output to prevent token explosion
if (readableLines.length > 60) {
const kept = readableLines.slice(0, 60);
kept.push(`\n... (${readableLines.length - 60} more lines omitted)`);
return kept.join('\n');
}
return readableLines.join('\n');
}
/**
* Clean and extract text from a diff cell
* @param {Element} cell The diff cell element
* @param {Boolean} highlightChanges Whether to highlight ins/del tags
* @returns {String} Clean text content
*/
cleanDiffText(cell, highlightChanges = false) {
if (!cell) return '';
const div = cell.querySelector('div');
if (!div) {
const text = cell.textContent || '';
return text.trim();
}
const clone = div.cloneNode(true);
if (highlightChanges) {
// Highlight inline insertions
const insElements = clone.querySelectorAll('ins');
insElements.forEach(ins => {
const text = ins.textContent || '';
ins.replaceWith(`[[${text}]]`);
});
// Highlight inline deletions
const delElements = clone.querySelectorAll('del');
delElements.forEach(del => {
const text = del.textContent || '';
del.replaceWith(`~~${text}~~`);
});
} else {
// For context lines, just remove the tags
const insElements = clone.querySelectorAll('ins');
insElements.forEach(ins => {
ins.replaceWith(ins.textContent || '');
});
const delElements = clone.querySelectorAll('del');
delElements.forEach(del => {
del.replaceWith(del.textContent || '');
});
}
// Get text and clean up
let text = clone.textContent || clone.innerText || '';
// Clean up excessive whitespace but preserve structure
text = text.replace(/\s+/g, ' ').trim();
// Limit line length
if (text.length > 500) {
text = text.substring(0, 500) + '...';
}
return text;
} /**
* Build the prompt for AI analysis
* @param {Object} edit The edit object
* @returns {String} The prompt text
*/
buildAnalysisPrompt(edit) {
const diffHTML = edit.diff;
const sizediff = edit.sizediff || 0;
const oresScore = edit.ores || 0;
const pageTitle = edit.page?.title || 'Unknown';
const userEditCount = edit.user?.editCount || 0;
const warningLevel = edit.user?.warningLevel || '0';
const userName = edit.user?.name || 'Unknown';
const summary = edit.comment || 'No summary';
const isIP = /^\d+\.\d+\.\d+\.\d+$/.test(userName);
// Determine namespace
let namespace = "Main";
let namespaceGuidance = "Main article namespace - STRICT standards. Accuracy, neutrality, verifiability required. Catch vandalism and policy violations.";
if (pageTitle.includes(':')) {
const prefix = pageTitle.split(':')[0];
const namespaceMap = {
'Talk': 'Talk',
'User': 'User',
'User talk': 'User talk',
'Wikipedia': 'Project',
'Wikipedia talk': 'Project talk',
'File': 'File',
'File talk': 'File talk',
'Template': 'Template',
'Template talk': 'Template talk',
'Category': 'Category',
'Category talk': 'Category talk',
'Draft': 'Draft',
'Draft talk': 'Draft talk',
'Help': 'Help',
'Portal': 'Portal'
};
namespace = namespaceMap[prefix] || prefix;
// Provide namespace-specific guidance
const guidanceMap = {
'Talk': "Discussion/conversation page - VERY LENIENT. Opinions and debates are normal and expected. Only flag offensive/attack content.",
'User': "User's personal sandbox - EXTREMELY LENIENT. Users can experiment here. Only flag severe policy violations or attack pages.",
'User talk': "User communication page - VERY LENIENT. Direct messages to users. Only flag if attacking/harassing.",
'Project': "Wikipedia policy/guideline space - MODERATE. Discussion and proposals are normal. Check for disruption.",
'Project talk': "Project discussion page - VERY LENIENT. Policy debates happen here. Opinions expected.",
'Draft': "Draft article space - LENIENT. Work in progress. Missing sources and formatting issues are NORMAL and ACCEPTABLE. Only flag clear vandalism.",
'Draft talk': "Draft discussion page - VERY LENIENT. Feedback and questions are normal.",
'File': "File description pages - MODERATE. Check for copyright issues and appropriate descriptions.",
'File talk': "File discussion page - VERY LENIENT. Questions and discussions are normal.",
'Template': "Template pages - MODERATE. Technical pages. Check for vandalism breaking functionality.",
'Template talk': "Template discussion page - VERY LENIENT. Technical discussions are normal.",
'Category': "Category pages - MODERATE. Check for inappropriate categorization.",
'Category talk': "Category discussion page - VERY LENIENT. Discussions are normal."
};
namespaceGuidance = guidanceMap[namespace] || namespaceGuidance;
}
// Special check for sandbox pages
if (pageTitle.toLowerCase().includes('/sandbox')) {
namespaceGuidance = "User sandbox - MAXIMUM LENIENCY. Test/practice space. Experiments and incomplete content are EXPECTED and FINE. Almost always approve.";
}
// Convert HTML diff to readable text
const readableDiff = this.convertDiffToReadable(diffHTML);
// Determine user experience level and risk profile
let userProfile = "";
if (isIP) {
userProfile = "Anonymous IP editor - could be anyone. IPs have higher vandalism rates but many make good edits. Judge the edit, not the editor.";
} else if (userEditCount === 0) {
userProfile = "Brand new account (0 edits) - First ever edit. Could be legitimate new user or sockpuppet/vandal. Higher scrutiny needed.";
} else if (userEditCount < 10) {
userProfile = "Very new user (< 10 edits) - Still learning. Expect mistakes but assume good faith unless clearly malicious.";
} else if (userEditCount < 50) {
userProfile = "New user (< 50 edits) - Gaining experience. Minor errors expected, likely good faith.";
} else if (userEditCount < 500) {
userProfile = "Intermediate user (50-500 edits) - Should understand basic policies. Mistakes possible but less common.";
} else {
userProfile = "Experienced user (500+ edits) - Knows Wikipedia policies well. Trust their judgment unless clearly problematic.";
}
// Warning level context
let warningContext = "";
switch(warningLevel) {
case '0':
warningContext = "No previous warnings - Clean record. First problematic edit (if any).";
break;
case '1':
warningContext = "Warning level 1 - Minor previous issue. They've been notified once. Still assume good faith.";
break;
case '2':
warningContext = "Warning level 2 - Has been warned twice. Pattern may be emerging. Less benefit of doubt.";
break;
case '3':
warningContext = "Warning level 3 - Serious warnings given. Next vandalism = likely block. Watch closely.";
break;
case '4':
case '4im':
warningContext = "Warning level 4/4im - FINAL WARNING given. Any further vandalism should result in AIV report.";
break;
default:
warningContext = `Warning level ${warningLevel} - Has received warnings previously.`;
}
return `You are an expert Wikipedia anti-vandalism system. Analyze this edit decisively and accurately.
═══════════════════════════════════════════════════════════
📋 EDIT INFORMATION
═══════════════════════════════════════════════════════════
Page: "${pageTitle}"
Namespace: ${namespace} — ${namespaceGuidance}
${namespace.toLowerCase().includes('talk') || namespace === 'User' || namespace === 'Draft' || pageTitle.toLowerCase().includes('sandbox') ? '⚠️ This namespace does NOT require citations or sources!' : ''}
Editor: ${userName}${isIP ? ' (IP)' : ''} • ${userEditCount} edits
${userProfile}
Warnings: Level ${warningLevel} • ${warningContext}
Summary: "${summary}"
${summary === 'No summary' || summary.trim() === '' ? '(No summary - common but slightly suspicious)' :
summary.toLowerCase().includes('test') ? '⚠️ Contains "test" - major vandalism indicator!' :
summary.toLowerCase().match(/revert|rv|undo/) ? '(Appears to be counter-vandalism revert)' :
summary.length > 50 ? '(Detailed - suggests good faith)' : '(Brief but normal)'}
Size: ${sizediff > 0 ? '+' : ''}${sizediff} bytes • ORES Score: ${(oresScore * 100).toFixed(1)}%
🚨 DECEPTIVE SUMMARY CHECK:
Compare "${summary}" to ${Math.abs(sizediff)} byte change:
• "typo/spelling/grammar" should be ~5-20 bytes, NOT 100+
• "nothing/minor/fix" should be tiny, NOT 200+
• "punctuation/comma" should be <50 bytes
• "formatting" should be <500 bytes
If there's a mismatch → MAJOR RED FLAG for hidden vandalism
═══════════════════════════════════════════════════════════
📝 DIFF (What Changed)
═══════════════════════════════════════════════════════════
Legend: " " = unchanged context | "- " = removed | "+ " = added
[[text]] = inline addition | ~~text~~ = inline removal
${readableDiff}
═══════════════════════════════════════════════════════════
🎯 YOUR TASK
═══════════════════════════════════════════════════════════
BE DECISIVE. You are an expert, not a hesitant assistant.
• 85-90% of edits should be APPROVED
• Use "review" <3% of the time (almost never)
• When uncertain → DEFAULT TO APPROVE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 1: CHECK NAMESPACE FIRST
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚨 CRITICAL: Different namespaces have different standards!
📄 MAIN ARTICLES (no prefix):
→ Strict standards. Check for vandalism, unsourced BLP claims, POV
💬 TALK PAGES (Talk:, User talk:, etc.):
→ VERY LENIENT. Opinions/debates are NORMAL and EXPECTED
→ ⛔ DO NOT flag for "unreferenced" or "unsourced" - talk pages don't need sources!
→ Only flag: attacks, harassment, spam
👤 USER PAGES (User:):
→ EXTREMELY LENIENT. Personal space
→ ⛔ DO NOT flag for "unreferenced" or POV - it's their page!
→ Only flag: attack pages, severe violations
📝 SANDBOXES (*/sandbox):
→ MAXIMUM LENIENT. Test space - experiments are EXPECTED
→ Almost always APPROVE
📋 DRAFTS (Draft:):
→ LENIENT. Work in progress
→ ⛔ DO NOT flag for "unreferenced" - they're still adding sources!
→ Missing citations are NORMAL and ACCEPTABLE
→ Only flag: clear vandalism, attacks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 2: IDENTIFY OBVIOUS VANDALISM
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔴 DEFINITE VANDALISM → Rollback:
• Profanity, slurs, offensive language
• Nonsense ("asdfghj", "lololol", gibberish)
• "X was here" graffiti/signatures
• Blanking content without explanation
• Jokes, memes, obviously false info
• Summary says "test" or "vandalism"
• Deceptive summary (claims "typo" but 500 bytes changed)
✅ NOT VANDALISM → Don't flag:
• Poor grammar/writing
• Unsourced but plausible info (except BLP in main)
• Formatting mistakes
• Might be wrong but not OBVIOUSLY false
• Minor POV language
• ANY edit to talk/user/sandbox/draft pages (unless attacks)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 3: IS IT CONSTRUCTIVE?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Is the editor trying to help? Even if imperfect → APPROVE
Constructive signs:
• Fixing typos, grammar, formatting
• Adding relevant info (even without source)
• Improving readability
• Removing errors/vandalism
• Detailed summary
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 4: CHOOSE ACTION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
approve: Edit is acceptable (85-90% of time)
Use when: Good/harmless/minor issues but constructive
When uncertain → DEFAULT TO THIS
thank: Exceptional edit worth recognition
Use when: Adding sources, major improvements, fixing significant errors
review: Human judgment needed [<3% - ALMOST NEVER]
Use ONLY when: Truly impossible to evaluate
NOT for: "might be wrong", "can't verify", "unsure" → those are APPROVE
warn-and-revert: Policy violation but possibly good faith
Use when: Unsourced BLP, promotional content, significant POV, copyright
rollback: Obvious vandalism → immediate removal
Use when: Profanity, nonsense, blanking, test edits, deceptive summary
report-aiv: Report to admins (warning level 4/4im + continuing vandalism)
welcome: New user (<50 edits) making good contributions
report-uaa: Username violation (promotional, impersonating, offensive)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IMPORTANT RULES
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ DO:
• Be decisive - make clear judgments
• Default to APPROVE when uncertain
• Only flag issues you can CLEARLY see in the diff
• Quote specific problematic text
• Check namespace before flagging anything
❌ DON'T:
• Use "review" for uncertainty → use approve instead
• Flag talk/user/draft/sandbox pages for missing sources
• Speculate ("might be promotional" → be specific or don't flag)
• Flag minor issues or formatting
• Over-analyze - trust your judgment
═══════════════════════════════════════════════════════════
📤 RESPONSE FORMAT (JSON)
═══════════════════════════════════════════════════════════
{
"hasIssues": boolean,
"probability": 0-100,
"confidence": "high" | "medium" | "low",
"reasoning": "Brief explanation of your analysis",
"issues": [
{
"type": "vandalism|spam|pov|unsourced|attack|copyright|disruptive|factual-error|policy|username",
"severity": "critical|major|minor",
"description": "Specific issue with quoted evidence"
}
],
"constructive": boolean,
"flagUsername": boolean,
"summary": "One sentence assessment",
"action": "approve|thank|review|warn-and-revert|rollback|report-aiv|welcome|report-uaa",
"recommendation": "Why you chose this action"
}
Analyze now. Be confident and decisive.`;
}
/**
* Call the Puter AI API
* @param {String} prompt The prompt to send
* @param {AbortSignal} signal Optional abort signal for cancellation
* @returns {Promise<String>} The API response text
*/
/**
* Call Ollama AI API
* @param {String} prompt The prompt to send
* @param {AbortSignal} signal Optional abort signal for cancellation
* @returns {Promise<String>} The AI response text
*/
async callOllamaAI(prompt, signal = null) {
try {
const fetchOptions = {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: this.model,
prompt: prompt,
format: { // json schema for response
"type": "object",
"properties": {
"hasIssues": {
"type": "boolean"
},
"probability": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"confidence": {
"type": "string",
"enum": ["high", "medium", "low"]
},
"reasoning": {
"type": "string"
},
"issues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["vandalism", "spam", "pov", "unsourced", "attack", "copyright", "disruptive", "factual-error", "policy", "username"]
},
"severity": {
"type": "string",
"enum": ["critical", "major", "minor"]
},
"description": {
"type": "string"
}
},
"required": ["type", "severity", "description"]
}
},
"constructive": {
"type": "boolean"
},
"flagUsername": {
"type": "boolean"
},
"summary": {
"type": "string"
},
"action": {
"type": "string",
"enum": ["approve", "thank", "review", "warn", "warn-and-revert", "rollback", "report-aiv", "welcome", "report-uaa"]
},
"recommendation": {
"type": "string"
}
},
"required": ["hasIssues", "probability", "confidence", "reasoning", "issues", "constructive", "flagUsername", "summary", "action", "recommendation"]
},
stream: false,
options: {
temperature: 0.1,
top_p: 0.9,
num_predict: 1024
}
})
};
// Add abort signal if provided
if (signal) {
fetchOptions.signal = signal;
}
const response = await fetch(`${this.serverUrl}/api/generate`, fetchOptions);
if (!response.ok) {
throw new Error(`Ollama API error: ${response.status} ${response.statusText}`);
}
const data = await response.json();
if (!data.response) {
throw new Error('Empty response from Ollama');
}
return data.response;
} catch (error) {
throw new Error(`Ollama AI error: ${error?.message || 'Unknown error'}`);
}
}
/**
* Parse the Ollama API response
* @param {String|Object} responseText The response from Ollama AI
* @returns {Object} Parsed analysis object
*/
parseOllamaResponse(responseText) {
try {
// Handle if responseText is an object (shouldn't happen but just in case)
if (typeof responseText === 'object' && responseText !== null) {
if (responseText.content) {
responseText = responseText.content;
} else {
responseText = JSON.stringify(responseText);
}
}
// Ensure responseText is a string
if (typeof responseText !== 'string') {
responseText = String(responseText);
}
// Try to extract JSON from markdown code blocks if present
let jsonText = responseText.trim();
const jsonMatch = jsonText.match(/```json\s*([\s\S]*?)\s*```/);
if (jsonMatch) {
jsonText = jsonMatch[1];
} else {
// Try to find JSON object - be more aggressive about finding the complete object
// Match opening brace to closing brace, handling nested objects/arrays
const startIdx = jsonText.indexOf('{');
if (startIdx !== -1) {
let depth = 0;
let inString = false;
let escapeNext = false;
let foundComplete = false;
for (let i = startIdx; i < jsonText.length; i++) {
const char = jsonText[i];
if (escapeNext) {
escapeNext = false;
continue;
}
if (char === '\\') {
escapeNext = true;
continue;
}
if (char === '"') {
inString = !inString;
continue;
}
if (inString) continue;
if (char === '{' || char === '[') depth++;
if (char === '}' || char === ']') depth--;
if (depth === 0 && i > startIdx) {
jsonText = jsonText.substring(startIdx, i + 1);
foundComplete = true;
break;
}
}
// If we didn't find a complete JSON object, try to fix it
if (!foundComplete) {
jsonText = jsonText.substring(startIdx);
// Count unclosed braces and brackets
let openBraces = 0;
let openBrackets = 0;
inString = false;
escapeNext = false;
for (let i = 0; i < jsonText.length; i++) {
const char = jsonText[i];
if (escapeNext) {
escapeNext = false;
continue;
}
if (char === '\\') {
escapeNext = true;
continue;
}
if (char === '"') {
inString = !inString;
continue;
}
if (inString) continue;
if (char === '{') openBraces++;
if (char === '}') openBraces--;
if (char === '[') openBrackets++;
if (char === ']') openBrackets--;
}
// Add missing closing brackets and braces
while (openBrackets > 0) {
jsonText += ']';
openBrackets--;
}
while (openBraces > 0) {
jsonText += '}';
openBraces--;
}
}
}
}
// Remove JavaScript-style comments that may be in the JSON
// This handles both // single-line and /* multi-line */ comments
jsonText = jsonText
// Remove single-line comments (// ...) but not inside strings
.split('\n')
.map(line => {
// Simple approach: remove // comments if not inside quotes
let inString = false;
let result = '';
for (let i = 0; i < line.length; i++) {
if (line[i] === '"' && (i === 0 || line[i-1] !== '\\')) {
inString = !inString;
}
if (!inString && line[i] === '/' && line[i+1] === '/') {
break; // Stop processing this line
}
result += line[i];
}
return result;
})
.join('\n')
// Remove multi-line comments /* ... */
.replace(/\/\*[\s\S]*?\*\//g, '');
const parsed = JSON.parse(jsonText);
return {
hasIssues: parsed.hasIssues || false,
probability: parsed.probability || 0,
confidence: parsed.confidence || 'low',
reasoning: parsed.reasoning || '',
issues: parsed.issues || [],
constructive: parsed.constructive !== undefined ? parsed.constructive : true,
flagUsername: parsed.flagUsername || false,
summary: parsed.summary || 'No issues detected',
action: parsed.action || 'review',
recommendation: parsed.recommendation || 'No specific recommendation',
rawResponse: responseText
};
} catch (err) {
console.error("Failed to parse Puter response:", err);
console.log("Raw response:", responseText);
// Ensure responseText is a string for fallback processing
const textStr = String(responseText);
// Fallback: try to determine if there are issues from the text
const hasIssues = textStr.toLowerCase().includes('issue') ||
textStr.toLowerCase().includes('problem') ||
textStr.toLowerCase().includes('vandalism');
return {
hasIssues: hasIssues,
probability: hasIssues ? 50 : 10,
confidence: 'low',
issues: [],
summary: hasIssues ? 'Potential issues detected (parsing failed)' : 'No clear issues detected',
action: 'review',
recommendation: 'Manual review recommended due to parsing error',
rawResponse: responseText,
parseError: err.message
};
}
}
/**
* Clear the analysis cache
*/
clearCache() {
this.cache.clear();
}
/**
* Cancel a specific edit analysis request
* @param {String|Number} revid The revision ID to cancel
*/
cancelAnalysis(revid) {
const cacheKey = `${revid}`;
if (this.activeRequests.has(cacheKey)) {
console.log(`Cancelling AI analysis for edit ${cacheKey}`);
this.activeRequests.get(cacheKey).abort();
this.activeRequests.delete(cacheKey);
}
}
/**
* Cancel all active analysis requests
*/
cancelAllAnalyses() {
console.log(`Cancelling ${this.activeRequests.size} active AI analysis requests`);
for (const [revid, controller] of this.activeRequests.entries()) {
controller.abort();
}
this.activeRequests.clear();
}
}
// </nowiki>
// <nowiki>
class wikishieldQueue {
constructor() {
this.queue = [];
this.previousItems = [];
this.editsSince = "";
this.lastRevid = 0;
this.currentEdit = null;
this.backoff = 2000;
}
/**
* Fetch recent changes from the API
*/
async fetchRecentChanges() {
if (this.queue.length >= wikishield.options.maxQueueSize) {
window.setTimeout(this.fetchRecentChanges.bind(this), wikishield.options.refreshTime);
return;
}
try {
this.editsSince = wikishield.util.utcString(new Date());
const namespaceString = wikishield.options.namespacesShown.join("|");
const recentChanges = (await wikishield.api.recentChanges(namespaceString))
.filter(edit => edit.revid > this.lastRevid);
this.lastRevid = Math.max(...recentChanges.map(edit => edit.revid));
const usersToFetch = recentChanges
.map(edit => mw.util.isIPv6Address(edit.user) ? edit.user.toUpperCase() : edit.user);
const editCounts = (await wikishield.api.editCount(usersToFetch.join("|")))
.filter(user => user["invalid"] || user["editcount"] <= wikishield.options.maxEditCount);
const dict = editCounts
.reduce((a, v) => ({...a, [v.name]: v.editcount}), {});
const warnings = (await wikishield.api.getText(
usersToFetch.map(user => `User_talk:${user}`).join("|")
));
const blocks = await wikishield.api.usersBlocked(usersToFetch.join("|"));
const ores = (await wikishield.api.ores(recentChanges.map(edit => edit.revid).join("|")));
recentChanges
.filter(edit => edit.user in dict)
.filter(edit => (ores[edit.revid] || 0) >= wikishield.options.minimumORESScore || wikishield.highlighted.has(edit.user))
.filter(edit => !wikishield.whitelist.has(edit.user))
.forEach(edit => {
const talkPageText = warnings[`User talk:${edit.user}`] || "";
this.addQueueItem(
edit,
dict[edit.user] || -1,
this.getWarningLevel(talkPageText),
ores[edit.revid] || 0,
blocks[edit.user] || false,
talkPageText.trim() === "" // Check if talk page is empty
);
});
// Check for outdated edits in queue
await this.checkForOutdatedEdits();
this.backoff = wikishield.options.refreshTime;
} catch (err) {
console.log("Error while fetching recent changes", err);
this.backoff = Math.min(this.backoff * 2, 120000);
}
window.setTimeout(this.fetchRecentChanges.bind(this), this.backoff);
}
/**
* Add an edit to the queue
* @param {Object} edit The edit to add
* @param {Number} count The edit count of the user
* @param {String} warningLevel The warning level of the user
* @param {Number} ores The ORES score of the edit
* @param {Boolean} blocked Whether the user is blocked
* @param {Boolean} emptyTalkPage Whether the user's talk page is empty
*/
async addQueueItem(edit, count, warningLevel, ores, blocked, emptyTalkPage) {
if (this.queue.filter(e => e.revid === edit.revid).length > 0 ||
this.previousItems.filter(e => e.revid === edit.revid).length > 0) {
return;
}
const item = await this.generateQueueItem(edit, count, warningLevel, ores, blocked, null, null, emptyTalkPage);
this.queue.push(item);
const sorted = this.queue.splice(1)
.sort((a, b) => {
const bScore = b.ores + (wikishield.highlighted.has(b.user.name) ? 100 : 0);
const aScore = a.ores + (wikishield.highlighted.has(a.user.name) ? 100 : 0);
return bScore - aScore;
});
this.queue = [this.queue[0], ...sorted];
// Only auto-select first edit if no edit is currently selected
if (this.queue.length === 1 && !this.currentEdit) {
this.currentEdit = this.queue[0];
}
// Play sound alert if ORES score is above threshold
if (wikishield.options.enableSoundAlerts && ores >= wikishield.options.soundAlertORESScore) {
this.playAlertSound();
}
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Play an alert sound for high ORES scores
*/
playAlertSound() {
try {
// Create a simple beep sound using Web Audio API
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const oscillator = audioContext.createOscillator();
const gainNode = audioContext.createGain();
oscillator.connect(gainNode);
gainNode.connect(audioContext.destination);
oscillator.frequency.value = 800; // Frequency in Hz
oscillator.type = 'sine';
gainNode.gain.setValueAtTime(0.3, audioContext.currentTime);
gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.5);
oscillator.start(audioContext.currentTime);
oscillator.stop(audioContext.currentTime + 0.5);
} catch (err) {
console.log("Could not play alert sound:", err);
}
}
/**
* Play a pleasant notification sound (two-tone chime)
*/
playNotificationSound() {
try {
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
// First tone (higher pitch)
const osc1 = audioContext.createOscillator();
const gain1 = audioContext.createGain();
osc1.connect(gain1);
gain1.connect(audioContext.destination);
osc1.frequency.value = 660; // E5
osc1.type = 'sine';
gain1.gain.setValueAtTime(0.2, audioContext.currentTime);
gain1.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.2);
osc1.start(audioContext.currentTime);
osc1.stop(audioContext.currentTime + 0.2);
// Second tone (lower pitch, slightly delayed)
const osc2 = audioContext.createOscillator();
const gain2 = audioContext.createGain();
osc2.connect(gain2);
gain2.connect(audioContext.destination);
osc2.frequency.value = 523; // C5
osc2.type = 'sine';
gain2.gain.setValueAtTime(0.2, audioContext.currentTime + 0.15);
gain2.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.4);
osc2.start(audioContext.currentTime + 0.15);
osc2.stop(audioContext.currentTime + 0.4);
} catch (err) {
console.log("Could not play notification sound:", err);
}
}
/**
* Check and remove edits that have been superseded by newer edits on the same page
*/
async checkForOutdatedEdits() {
if (this.queue.length === 0) return;
// Get all unique page titles from queue, filtering out invalid ones
const allPageTitles = [...new Set(this.queue.map(item => item.page.title))];
const pageTitles = allPageTitles.filter(title => {
// Filter out titles that look like URLs or contain invalid characters
const isValid = title &&
!title.includes('?') &&
!title.includes('&') &&
!title.startsWith('http') &&
!title.includes('index.php');
if (!isValid) {
console.log(`Skipping invalid page title: ${title}`);
}
return isValid;
});
if (pageTitles.length === 0) return;
// Fetch latest revision for each page
const latestRevisions = await wikishield.api.getLatestRevisions(pageTitles.join("|"));
// Track items to remove
const itemsToRemove = [];
for (const item of this.queue) {
const latestRevid = latestRevisions[item.page.title];
if (latestRevid && latestRevid > item.revid) {
// This edit has been superseded
itemsToRemove.push(item);
console.log(`Removing outdated edit: ${item.page.title} (rev ${item.revid}, latest is ${latestRevid})`);
}
}
// Remove outdated items
if (itemsToRemove.length > 0) {
for (const item of itemsToRemove) {
const index = this.queue.indexOf(item);
if (index > -1) {
this.queue.splice(index, 1);
wikishield.interface.removeQueueItem(item.revid);
}
}
// Update current edit if it was removed
if (itemsToRemove.includes(this.currentEdit)) {
this.currentEdit = this.queue.length > 0 ? this.queue[0] : null;
}
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
}
/**
* Generate a queue item from an edit
* @param {Object} edit The edit to generate the queue item from
* @param {Number} count The edit count of the user
* @param {String} warningLevel The warning level of the user
* @param {Number} ores The ORES score of the edit
* @param {Boolean} blocked Whether the user is blocked
* @param {Boolean} emptyTalkPage Whether the user's talk page is empty
* @returns {Object} The queue item
*/
async generateQueueItem(edit, count, warningLevel, ores, blocked, contribs, history, emptyTalkPage) {
contribs = contribs || await wikishield.api.contribs(edit.user);
history = history || await wikishield.api.history(edit.title);
const diff = await wikishield.api.diff(edit.title, edit.old_revid || edit.parentid, edit.revid);
const metadata = await wikishield.api.getPageMetadata(edit.title);
const queueItem = {
page: {
title: edit.title,
history: history,
dateFormat: metadata.dateFormat,
englishVariant: metadata.englishVariant
},
user: {
name: edit.user,
contribs: contribs,
editCount: count,
warningLevel: warningLevel,
originalWarningLevel: warningLevel, // Store the warning level at time of queueing
blocked: blocked,
emptyTalkPage: emptyTalkPage !== undefined ? emptyTalkPage : false
},
ores: ores,
revid: edit.revid,
timestamp: edit.timestamp,
comment: edit.comment,
minor: "minor" in edit, // Store whether this is a minor edit (check if property exists)
sizediff: (edit["newlen"] ? edit.newlen - edit.oldlen : edit.sizediff) || 0,
diff: diff,
tags: edit.tags,
reviewed: false,
aiAnalysis: null // Will be populated asynchronously
};
// Perform AI analysis asynchronously if enabled
if (wikishield.options.enableOllamaAI && wikishield.ollamaAI) {
// Don't await - let it run in background and update when ready
wikishield.ollamaAI.analyzeEdit(queueItem).then(analysis => {
queueItem.aiAnalysis = analysis;
// Update UI if this edit is currently being displayed
if (this.currentEdit && this.currentEdit.revid === queueItem.revid) {
wikishield.interface.updateAIAnalysisDisplay(analysis);
}
}).catch(err => {
console.error("AI analysis failed:", err);
queueItem.aiAnalysis = {
hasIssues: false,
error: err.message
};
});
}
return queueItem;
}
/**
* Given the text of a user talk page, get the warning level of the user
* @param {String} text The text of the user talk page
* @returns {String} The warning level of the user
*/
getWarningLevel(text) {
const monthSections = text.split(/(?=== ?[\w\d ]+ ?==)/g);
for (let section of monthSections) {
if (new RegExp("== ?" + wikishield.util.monthSectionName() + " ?==").test(section)) {
// Only match templates with numbered warning levels (e.g., uw-vandalism1, uw-test4im)
// Excludes templates without numbers like uw-minor
const templates = section.match(/<\!-- Template:[\w-]+?(\d(?:i?m)?) -->/g);
if (templates === null) {
return "0";
}
const filteredTemplates = templates.map(t => {
const match = t.match(/<\!-- Template:[\w-]+?(\d(?:i?m)?) -->/);
return match ? match[1] : "0";
});
return filteredTemplates.sort()[filteredTemplates.length - 1].toString();
}
}
return "0";
}
/**
* Get detailed warning history from user talk page
* @param {String} text - User talk page content
* @returns {Array} Array of warning objects with template name, level, and timestamp
*/
getWarningHistory(text) {
const warnings = [];
const monthSections = text.split(/(?=== ?[\w\d ]+ ?==)/g);
const currentMonthName = wikishield.util.monthSectionName();
for (let section of monthSections) {
// Check if this is the current month section
const isCurrentMonth = new RegExp("== ?" + currentMonthName + " ?==").test(section);
// Only process warnings from the current month (those that count toward warning level)
if (!isCurrentMonth) {
continue;
}
// Extract section title (month/year)
const sectionMatch = section.match(/== ?([\w\d ]+) ?==/);
const sectionTitle = sectionMatch ? sectionMatch[1] : "Unknown";
// Find all warning templates with their full context
const templateMatches = section.matchAll(/<\!-- Template:([\w-]+?)(\d(?:i?m)?) -->(.+?)(?=<\!-- Template:|$)/gs);
for (let match of templateMatches) {
const templateName = match[1]; // e.g., "uw-vandalism"
const level = match[2]; // e.g., "1", "4", "4im"
const content = match[3]; // Content after template
// Try to extract timestamp (looks for signature pattern)
// Extract the timestamp and remove any HTML tags
const timestampMatch = content.match(/(\d{2}:\d{2}.*?\d{4} \(UTC\))/);
let timestamp = timestampMatch ? timestampMatch[1] : null;
if (timestamp) {
// Remove any HTML tags from the timestamp
timestamp = timestamp.replace(/<[^>]*>/g, '');
}
// Extract username from signature (look for User: or User talk: links)
let username = null;
const userLinkMatch = content.match(/\[\[User(?:[ _]talk)?:([^\]|]+)/i);
if (userLinkMatch) {
username = userLinkMatch[1].trim();
}
// Try to extract article name if present
const articleMatch = content.match(/\[\[([^\]]+?)\]\]/);
const article = articleMatch ? articleMatch[1] : null;
warnings.push({
template: templateName,
level: level,
timestamp: timestamp,
username: username,
article: article,
section: sectionTitle,
isCurrentMonth: isCurrentMonth
});
}
}
// Warnings are already from current month, just return them in order
return warnings;
}
/**
* Set the current edit to the next item in the queue
*/
nextItem() {
if (this.queue.length === 0) {
return;
}
// Cancel AI analysis for the edit we're leaving
if (this.queue[0] && wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAnalysis(this.queue[0].revid);
}
if (!this.queue[0].reviewed) {
this.queue[0].reviewed = true;
wikishield.statistics.reviewed += 1;
wikishield.saveStats(wikishield.statistics);
}
// Auto-welcome the user we're leaving (before removing from queue)
const leavingEdit = this.queue[0];
if (leavingEdit) {
this.checkAndAutoWelcome(leavingEdit);
this.checkAndAutoReportUAA(leavingEdit);
}
const removedElem = this.queue.shift();
this.previousItems.push(removedElem);
wikishield.interface.removeQueueItem(removedElem.revid);
if (this.previousItems.length > 50) {
this.previousItems.shift();
}
this.currentEdit = this.queue.length ? this.queue[0] : null;
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Set the current edit to the previous item in the queue
*/
prevItem() {
if (this.previousItems.length === 0) {
return;
}
// Cancel AI analysis for the edit we're leaving
if (this.currentEdit && wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAnalysis(this.currentEdit.revid);
}
// Auto-welcome the user we're leaving (before changing currentEdit)
if (this.currentEdit) {
this.checkAndAutoWelcome(this.currentEdit);
this.checkAndAutoReportUAA(this.currentEdit);
}
this.queue.unshift(this.previousItems.pop());
this.currentEdit = this.queue[0];
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Check if user should be auto-welcomed and do so if needed
* @param {Object} edit The edit object to check
*/
async checkAndAutoWelcome(edit) {
// Only auto-welcome registered users (not IPs) with empty talk pages
if (!edit.user || !edit.user.name || mw.util.isIPAddress(edit.user.name)) {
return;
}
// Check if user is in the no-auto-welcome list
if (wikishield.noAutoWelcomeList.has(edit.user.name)) {
return;
}
// Check if talk page appears empty
if (!edit.user.emptyTalkPage) {
return;
}
// Only auto-welcome if the edit was constructive (according to AI analysis)
if (edit.aiAnalysis && edit.aiAnalysis.constructive === false) {
console.log(`Skipping auto-welcome for ${edit.user.name} - edit not constructive`);
return;
}
// Double-check by fetching the talk page to see if it exists
try {
const talkPageContent = await wikishield.api.getSinglePageContent(`User talk:${edit.user.name}`);
// Check if the talk page exists at all (not whether it's blank)
// If the page doesn't exist, talkPageContent will be an empty string
// If the page exists (even if blank), talkPageContent will not be an empty string
if (talkPageContent !== "") {
// Talk page exists, update the flag
edit.user.emptyTalkPage = false;
return;
}
// Show confirmation dialog
const confirmed = await wikishield.interface.showConfirmationDialog(
"Auto-welcome User",
`Would you like to welcome <span class="confirmation-modal-username">${wikishield.util.escapeHtml(edit.user.name)}</span>?<br><br>
<span style="font-size: 0.9em; color: #888;">Editing: <strong>${wikishield.util.escapeHtml(edit.page.title)}</strong></span>`,
edit.user.name
);
if (!confirmed) {
console.log(`Auto-welcome cancelled for: ${edit.user.name}`);
// Add user to no-auto-welcome list
wikishield.noAutoWelcomeList.add(edit.user.name);
return;
}
// Show progress notification
const progressBar = new wikishieldProgressBar();
progressBar.set("Auto-welcoming...", 0.5, "var(--main-blue)");
// Determine which template to use based on username characters and mentorship
// Check if username contains non-Latin characters (takes precedence)
const hasNonLatin = /[^\u0000-\u007F\u0080-\u00FF\u0100-\u017F\u0180-\u024F]/.test(edit.user.name);
let template;
if (hasNonLatin) {
template = "Latin";
} else {
// Check if user is a mentee (only if not non-Latin)
const isMentee = await wikishield.checkIfMentee(edit.user.name);
template = isMentee ? "Mentor" : "Default";
}
// Auto-welcome with appropriate template
await wikishield.welcomeUser(edit.user.name, template);
// Update progress to complete
progressBar.set(`Welcomed ${edit.user.name}`, 1, "var(--main-green)");
console.log(`Auto-welcomed user: ${edit.user.name}`);
} catch (err) {
console.log("Error during auto-welcome check:", err);
}
}
/**
* Check if user should be reported to UAA based on username
* @param {Object} edit The edit object to check
*/
async checkAndAutoReportUAA(edit) {
// Only check registered users (not IPs)
if (!edit.user || !edit.user.name || mw.util.isIPAddress(edit.user.name)) {
return;
}
// Check if user is in the no-auto-welcome list (also used for UAA to avoid duplicate prompts)
if (wikishield.noAutoWelcomeList.has(edit.user.name)) {
return;
}
// Check if AI flagged the username
if (!edit.aiAnalysis || !edit.aiAnalysis.flagUsername) {
return;
}
// Show confirmation dialog
const confirmed = await wikishield.interface.showConfirmationDialog(
"Report Username to UAA",
`The username <span class="confirmation-modal-username">${wikishield.util.escapeHtml(edit.user.name)}</span> may violate Wikipedia's username policy.<br><br>
<span style="font-size: 0.9em; color: #888;">Would you like to report it to <a href="https://en.wikipedia.org/wiki/Wikipedia:Usernames_for_administrator_attention" target="_blank" style="color: #0645ad;">Usernames for administrator attention (UAA)</a>?</span><br><br>
<strong>AI Assessment:</strong> ${wikishield.util.escapeHtml(edit.aiAnalysis.recommendation || 'Username may be promotional, impersonation, or otherwise inappropriate.')}`,
edit.user.name
);
if (!confirmed) {
console.log(`UAA report cancelled for: ${edit.user.name}`);
// Add user to no-auto-welcome list to avoid future prompts
wikishield.noAutoWelcomeList.add(edit.user.name);
return;
}
// Open UAA report interface
try {
// Use the existing event system to trigger UAA report
const reportEvent = wikishield.events.events.reportUserUAA;
if (reportEvent && reportEvent.func) {
await reportEvent.func(edit);
}
// Add user to no-auto-welcome list after reporting
wikishield.noAutoWelcomeList.add(edit.user.name);
} catch (err) {
console.log("Error during auto UAA report:", err);
}
}
/**
* Clear the queue
*/
delete() {
// Cancel all active AI analyses
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
this.queue = [];
this.currentEdit = null;
wikishield.interface.clearQueue();
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Load an edit from the user contributions list
* @param {Number} revid
*/
async loadFromContribs(revid) {
const edit = this.currentEdit.user.contribs.filter(e => e.revid === Number(revid))[0];
const diffContainer = wikishield.interface.elem("#diff-container");
diffContainer.innerHTML = ``;
this.currentEdit = await this.generateQueueItem(
edit,
this.currentEdit.user.editCount,
this.currentEdit.user.warningLevel,
null,
this.currentEdit.user.blocked,
null,
null,
this.currentEdit.user.emptyTalkPage
);
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Load an edit from the page history list
* @param {Number} revid
*/
async loadFromHistory(revid) {
const edit = this.currentEdit.page.history.filter(e => e.revid === Number(revid))[0];
edit["title"] = this.currentEdit.page.title;
const diffContainer = wikishield.interface.elem("#diff-container");
diffContainer.innerHTML = ``;
const results = await Promise.all([
wikishield.api.editCount(edit.user),
wikishield.api.getSinglePageContent(`User talk:${edit.user}`),
wikishield.api.contribs(edit.user),
wikishield.api.history(edit.title)
]);
const talkPageText = results[1];
this.currentEdit = await this.generateQueueItem(
edit,
results[0][0].editcount,
this.getWarningLevel(talkPageText),
null, false, results[2], results[3],
talkPageText.trim() === ""
);
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
}
// </nowiki>
// <nowiki>
const wikishieldEventData = {
conditions: {
"operatorNonAdmin": {
desc: "You are not an admin",
check: (_) => !wikishield.rights.block
},
"operatorAdmin": {
desc: "You are an admin",
check: (_) => wikishield.rights.block
},
"atFinalWarning": {
desc: "User already has a final warning (before any new warnings)",
check: (edit) => {
// Check the ORIGINAL warning level from when edit was first queued
// This ensures we only report if they ALREADY had a final warning
// Not if they just received one in this action sequence
const original = edit.user.originalWarningLevel?.toString() || edit.user.warningLevel.toString();
const current = edit.user.warningLevel.toString();
console.log(`[atFinalWarning] User: ${edit.user.name}, Original: ${original}, Current: ${current}`);
return ["4", "4im"].includes(original);
}
}
},
welcomeTemplates: {
"Default": "{{subst:Welcome}} ~~~~",
"Basic": "{{subst:W-basic}}",
"Links": "{{subst:W-graphical}}",
"Latin": "{{subst:welcome non-latin|LuniZunie}} ~~~~",
"COI": "{{subst:welcome-coi}} ~~~~",
"Mentor": "{{subst:Mentor welcome-autosign}}"
}
};
class wikishieldEventManager {
constructor() {
this.events = {
prevEdit: {
description: "Go to the previous edit in the queue",
icon: "fas fa-arrow-left",
runWithoutEdit: true,
func: () => {
wikishield.queue.prevItem();
}
},
nextEdit: {
description: "Go to the next edit in the queue",
icon: "fas fa-arrow-right",
func: () => {
wikishield.queue.nextItem();
}
},
deleteQueue: {
description: "Remove all items from the queue",
icon: "fas fa-trash-can",
runWithoutEdit: true,
func: () => {
wikishield.queue.delete();
}
},
openSettings: {
description: "Open the settings interface",
icon: "fas fa-gear",
runWithoutEdit: true,
func: () => {
wikishield.interface.settings.openSettings();
}
},
openUserPage: {
description: "Open user page in a new tab",
icon: "fas fa-circle-user",
func: () => {
window.open(wikishield.util.pageLink(`User:${this.getRelevantEdit().user.name}`));
}
},
openUserTalk: {
description: "Open user talk page in a new tab",
icon: "fas fa-comment",
func: () => {
window.open(wikishield.util.pageLink(`User talk:${this.getRelevantEdit().user.name}`));
}
},
openUserContribs: {
description: "Open user contributions page in a new tab",
icon: "fas fa-list",
func: () => {
window.open(wikishield.util.pageLink(`Special:Contributions/${this.getRelevantEdit().user.name}`));
}
},
openFilterLog: {
description: "Open user filter log in a new tab",
icon: "fas fa-filter",
func: () => {
const encodedName = wikishield.util.encodeuri(this.getRelevantEdit().user.name);
window.open(wikishield.util.pageLink(
`?title=Special:AbuseLog&wpSearchUser=${encodedName}`,
true
));
}
},
addToWhitelist: {
description: "Add user to the whitelist",
icon: "fas fa-thumbs-up",
includeInProgress: true,
progressDesc: "Whitelisting...",
func: () => {
wikishield.whitelist.add(this.getRelevantEdit().user.name);
}
},
highlight: {
description: "Highlight this user's contributions",
icon: "fas fa-highlighter",
includeInProgress: true,
progressDesc: "Highlighting...",
func: () => {
wikishield.highlighted.add(this.getRelevantEdit().user.name);
}
},
openPage: {
description: "Open page being edited in new tab",
icon: "fas fa-file-lines",
func: () => {
window.open(wikishield.util.pageLink(this.getRelevantEdit().page.title));
}
},
openTalk: {
description: "Open talk page in new tab",
icon: "fas fa-comments",
func: () => {
const pageTitle = this.getRelevantEdit().page.title.split(":");
let talkNamespace = "Talk";
if (pageTitle.length > 1) {
talkNamespace = pageTitle[0].toLowerCase().includes("talk")
? pageTitle[0]
: pageTitle[0] + " talk";
}
window.open(wikishield.util.pageLink(`${talkNamespace}:${pageTitle.length === 1 ? pageTitle[0] : pageTitle[1]}`));
}
},
openHistory: {
description: "Open page history in new tab",
icon: "fas fa-clock-rotate-left",
func: () => {
window.open(wikishield.util.pageLink(`Special:PageHistory/${this.getRelevantEdit().page.title}`));
}
},
openRevision: {
description: "Open revision in new tab",
icon: "fas fa-pen-to-square",
func: () => {
window.open(wikishield.util.pageLink(`Special:PermanentLink/${this.getRelevantEdit().revid}`));
}
},
openDiff: {
description: "Open diff in new tab",
icon: "fas fa-code-commit",
func: () => {
window.open(wikishield.util.pageLink(`Special:Diff/${this.getRelevantEdit().revid}`));
}
},
thankUser: {
description: "Thank user",
icon: "fas fa-user-check",
includeInProgress: true,
progressDesc: "Thanking...",
func: async () => {
const edit = this.getRelevantEdit();
// Check if user is an IP address
if (mw.util.isIPAddress(edit.user.name)) {
// For IP users, leave a thank you message on their talk page
const talkPageName = `User talk:${edit.user.name}`;
const talkPageContent = await wikishield.api.getSinglePageContent(talkPageName) || "";
await wikishield.api.edit(
talkPageName,
talkPageContent + `\n{{subst:Thanks-autosign}}`,
`Thanking for edit to [[${edit.page.title}]] ([[WP:WikiShield|WikiShield]])`
);
} else {
// For registered users, use the API thank function
await wikishield.api.thank(edit.revid);
}
}
},
rollback: {
description: "Rollback edits",
icon: "fas fa-backward",
includeInProgress: true,
progressDesc: "Rolling back...",
func: async (params={}) => {
return await wikishield.revert(this.getRelevantEdit(), params.label || "");
}
},
rollbackGoodFaith: {
description: "Rollback edits (good faith)",
icon: "fas fa-arrow-rotate-left",
parameters: [
{
title: "Summary (optional)",
id: "summary",
type: "text"
}
],
includeInProgress: true,
progressDesc: "Rolling back...",
func: async (params) => {
return await wikishield.revert(this.getRelevantEdit(), params["summary"] || "", true);
}
},
undo: {
description: "Undo this edit only",
icon: "fas fa-undo",
parameters: [
{
title: "Reason",
id: "reason",
type: "text"
}
],
includeInProgress: true,
progressDesc: "Undoing...",
func: async (params) => {
const edit = this.getRelevantEdit();
const reason = params["reason"] || "Undoing edit";
return await wikishield.api.undoEdit(edit, reason);
}
},
warn: {
description: "Warn user",
icon: "fas fa-triangle-exclamation",
parameters: [
{
title: "Warning type",
id: "warningType",
type: "choice",
options: Object.keys(wikishieldData.warnings)
},
{
title: "Level",
id: "level",
type: "choice",
options: [ "auto", 1, 2, 3, 4, 5 ]
}
],
includeInProgress: true,
progressDesc: "Warning...",
needsContinuity: true,
validateParameters: (params) => {
// If custom templates are provided, skip validation
if (params["warningTemplates"]) {
return true;
}
return params["level"] === "auto" ||
wikishieldData.warnings[params["warningType"]].templates.length >= params["level"];
},
func: async (params) => {
// Use custom templates if provided, otherwise use standard warning set
let warningTemplates, warningLabel, requiresArticle;
if (params["warningTemplates"]) {
// Custom warning from warn menu
warningTemplates = params["warningTemplates"];
warningLabel = params["warningLabel"];
requiresArticle = params["requiresArticle"];
} else {
// Standard warning from revert menu
const warningSet = params["warningType"] && Object.keys(wikishieldData.warnings).includes(params["warningType"])
? wikishieldData.warnings[params["warningType"]]
: wikishieldData.warnings["Vandalism"];
warningTemplates = warningSet.templates;
warningLabel = null; // Will use default behavior in warnUser
requiresArticle = true;
}
// Store the original warning level before warning
const originalLevel = this.getRelevantEdit().user.warningLevel;
await wikishield.warnUser(
this.getRelevantEdit().user.name,
warningTemplates,
params["level"] || "auto",
requiresArticle !== false ? this.getRelevantEdit().page.title : null,
this.getRelevantEdit().revid
);
// Return whether they were already at final warning
return {
wasAtFinalWarning: ["4", "4im"].includes(originalLevel.toString())
};
}
},
reportToAIV: {
description: "Report user to AIV",
icon: "fas fa-flag",
parameters: [
{
title: "Report message",
id: "reportMessage",
type: "choice",
options: [
"Vandalism past final warning",
"Vandalism-only account",
"Long-term abuse"
]
}
],
includeInProgress: true,
progressDesc: "Reporting...",
func: async (params) => {
await wikishield.reportToAIV(
this.getRelevantEdit().user.name,
params["reportMessage"]
);
}
},
reportToUAA: {
description: "Report user to UAA",
icon: "fas fa-flag",
parameters: [
{
title: "Report message",
id: "reportMessage",
type: "choice",
options: [
"Disruptive username",
"Offensive username",
"Promotional username",
"Misleading username"
]
}
],
includeInProgress: true,
progressDesc: "Reporting...",
func: async (params) => {
await wikishield.reportToUAA(
this.getRelevantEdit().user.name,
params["reportMessage"]
);
}
},
requestProtection: {
description: "Request protection",
icon: "fas fa-shield",
parameters: [
{
title: "Level",
id: "level",
type: "choice",
options: [
"Semi-protection",
"Extended-confirmed protection",
"Full protection",
"Pending changes protection"
]
},
{
title: "Reason",
id: "reason",
type: "choice",
options: [
"Persistent vandalism",
"Edit warring",
"BLP violations",
"Sockpuppetry"
]
}
],
includeInProgress: true,
progressDesc: "Requesting protection...",
func: async (params) => {
await wikishield.requestProtection(
this.getRelevantEdit().page.title,
params["level"],
params["reason"]
);
}
},
block: {
description: "Block user",
icon: "fas fa-ban",
parameters: [
{
title: "Block summary",
id: "blockSummary",
type: "choice",
options: [
"[[Wikipedia:Vandalism|Vandalism]]",
"[[Wikipedia:DISRUPTONLY|Vandalism-only account]]",
"Long-term abuse"
]
},
{
title: "Duration",
id: "duration",
type: "choice",
options: [
"31 hours",
"1 week",
"2 weeks",
"1 month",
"3 months",
"6 months",
"1 year",
"3 years",
"infinite"
]
}
],
includeInProgress: true,
progressDesc: "Blocking...",
func: async (params) => {
await wikishield.api.block(
this.getRelevantEdit().user.name,
params["blockSummary"],
params["duration"],
true, false, false, true
);
}
},
protect: {
description: "Protect page",
icon: "fas fa-lock",
includeInProgress: true,
progressDesc: "Protecting...",
func: async () => {
}
},
welcome: {
description: "Welcome user",
icon: "fas fa-door-open",
parameters: [
{
title: "Template",
id: "template",
type: "choice",
options: Object.keys(wikishieldEventData.welcomeTemplates)
}
],
includeInProgress: true,
progressDesc: "Welcoming...",
func: async (params) => {
console.log("here");
await wikishield.welcomeUser(
this.getRelevantEdit().user.name,
params["template"]
);
}
}
};
}
/**
* Returns the edit events should be actioned on
*/
getRelevantEdit() {
return wikishield.tempCurrentEdit || wikishield.queue.currentEdit;
}
/**
* When a button is clicked, trigger the given event
* @param {HTMLElement} elem Button to add listener to
* @param {String} event Event to trigger
* @param {Boolean} runWithoutEdit Whether this event can be run with no edit selected
*/
linkButton(elem, event, runWithoutEdit) {
elem.addEventListener("click", () => {
wikishield.interface.selectedMenu = null;
wikishield.interface.updateMenuElements();
if (runWithoutEdit) {
this.events[event].func();
} else {
wikishield.executeScript({
actions: [
{
name: event,
params: {}
}
]
});
}
});
}
}
// </nowiki>
// <nowiki>
const wikishieldSettingsAllowedKeys = [
"!", "@", "#", "$", "%", "^", "&", "*", "(", ")",
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0",
"q", "w", "e", "r", "t", "y", "u", "i", "o", "p",
"a", "s", "d", "f", "g", "h", "j", "k", "l",
"z", "x", "c", "v", "b", "n", "m",
"-", "=", "[", "]", "\\", ";", "'", ",", ".", "/", "enter",
"_", "+", "{", "}", "|", ":", "\"", "<", ">", "?",
"arrowleft", "arrowup", "arrowdown", "arrowright"
];
class wikishieldSettingsInterface {
constructor() {
this.contentContainer = null;
this.isOpen = false;
this.keypressCallback = null;
}
/**
* Open settings container and go to general settings
*/
openSettings() {
this.closeSettings();
this.isOpen = true;
const container = document.createElement("div");
container.classList.add("settings-container");
document.body.appendChild(container);
container.innerHTML = wikishieldHTML.settings;
container.addEventListener("click", this.closeSettings.bind(this));
container.querySelector(".settings").addEventListener("click", (event) => event.stopPropagation());
container.querySelector("#settings-general-button").classList.add("selected");
this.contentContainer = container.querySelector(".settings-right");
[
[ "#settings-general-button", this.openGeneral.bind(this) ],
[ "#settings-ai-button", this.openAI.bind(this) ],
[ "#settings-controls-button", this.openControls.bind(this) ],
[ "#settings-whitelist-button", this.openWhitelist.bind(this) ],
[ "#settings-highlight-button", this.openHighlighted.bind(this) ],
[ "#settings-statistics-button", this.openStatistics.bind(this) ],
[ "#settings-appearance-button", this.openAppearance.bind(this) ],
[ "#settings-about-button", this.openAbout.bind(this) ]
].forEach(([sel, func]) => container.querySelector(sel).addEventListener("click", () => {
this.contentContainer.innerHTML = "";
[...document.querySelectorAll(".settings-left-menu-item.selected")]
.forEach(e => e.classList.remove("selected"));
container.querySelector(sel).classList.add("selected");
func();
}));
this.openGeneral();
}
/**
* Open general settings section
*/
openGeneral() {
this.contentContainer.innerHTML = `
<div class="settings-section" id="maximum-edit-count">
<div class="settings-section-title">Maximum edit count</div>
<div class="settings-section-desc">Edits from users with more than this edit count will not be shown</div>
</div>
<div class="settings-section" id="maximum-queue-size">
<div class="settings-section-title">Maximum queue size</div>
<div class="settings-section-desc">The queue will not load additional edits after reaching this size</div>
</div>
<div class="settings-section" id="minimum-ores-score">
<div class="settings-section-title">Minimum ORES score</div>
<div class="settings-section-desc">Edits with an <a href="https://www.mediawiki.org/wiki/ORES" target="_blank">ORES score</a> below this threshold will not be shown</div>
</div>
<div class="settings-section" id="sound-alert-toggle">
<div class="settings-section-title">Enable sound alerts for high ORES scores</div>
<div class="settings-section-desc">Play a sound when an edit above the threshold is added to the queue</div>
</div>
<div class="settings-section" id="sound-alert-ores-score">
<div class="settings-section-title">Sound alert ORES threshold</div>
<div class="settings-section-desc">Play a sound alert when an edit with an ORES score above this value is added</div>
</div>
<div class="settings-section" id="watchlist-expiry">
<div class="settings-section-title">Watchlist expiry for warned users</div>
<div class="settings-section-desc">How long to watch user talk pages after issuing warnings</div>
</div>
<div class="settings-section">
<div class="settings-section-title">Namespaces to show</div>
<div class="settings-section-desc">Only edits from the selected namespaces will be shown in your queue.</div>
<div id="namespace-container"></div>
</div>
`;
this.createNumericInput(
this.contentContainer.querySelector("#maximum-edit-count"),
wikishield.options.maxEditCount, 0, 500, 5,
(newValue) => {
wikishield.options.maxEditCount = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createNumericInput(
this.contentContainer.querySelector("#maximum-queue-size"),
wikishield.options.maxQueueSize, 10, 100, 5,
(newValue) => {
wikishield.options.maxQueueSize = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createNumericInput(
this.contentContainer.querySelector("#minimum-ores-score"),
wikishield.options.minimumORESScore, 0, 1, 0.05,
(newValue) => {
wikishield.options.minimumORESScore = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createToggle(
this.contentContainer.querySelector("#sound-alert-toggle"),
wikishield.options.enableSoundAlerts,
(newValue) => {
wikishield.options.enableSoundAlerts = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createNumericInput(
this.contentContainer.querySelector("#sound-alert-ores-score"),
wikishield.options.soundAlertORESScore, 0, 1, 0.05,
(newValue) => {
wikishield.options.soundAlertORESScore = newValue;
wikishield.saveOptions(wikishield.options);
}
);
// Create watchlist expiry dropdown
const watchlistContainer = this.contentContainer.querySelector("#watchlist-expiry");
const watchlistSelect = document.createElement("select");
watchlistSelect.innerHTML = `
<option value="1 week">1 week</option>
<option value="2 weeks">2 weeks</option>
<option value="1 month">1 month</option>
<option value="3 months">3 months</option>
<option value="6 months">6 months</option>
<option value="1 year">1 year</option>
<option value="indefinite">Indefinite</option>
`;
watchlistSelect.value = wikishield.options.watchlistExpiry;
watchlistSelect.addEventListener("change", () => {
wikishield.options.watchlistExpiry = watchlistSelect.value;
wikishield.saveOptions(wikishield.options);
});
watchlistContainer.appendChild(watchlistSelect);
wikishieldData.namespaces.forEach(ns => {
this.contentContainer.querySelector("#namespace-container").innerHTML += `
<div>
<input
type="checkbox"
data-nsid="${ns.id}"
class="ns-checkbox"
${wikishield.options.namespacesShown.includes(ns.id) ? "checked" : ""}>
<label>${ns.name}</label>
</div>
`;
});
[...this.contentContainer.querySelectorAll(".ns-checkbox")].forEach(elem => {
elem.addEventListener("change", () => {
if (elem.checked) {
const set = new Set(wikishield.options.namespacesShown);
set.add(Number(elem.dataset["nsid"]));
wikishield.options.namespacesShown = [...set];
} else {
wikishield.options.namespacesShown = wikishield.options.namespacesShown
.filter(n => n !== Number(elem.dataset["nsid"]));
}
wikishield.saveOptions(wikishield.options);
});
});
}
/**
* Open AI Analysis settings section
*/
openAI() {
this.contentContainer.innerHTML = `
<div class="settings-section" id="enable-ollama-ai">
<div class="settings-section-title">Enable Ollama AI Analysis 🤖</div>
<div class="settings-section-desc">Use your local Ollama server to analyze edits for potential issues. Run any model locally with full privacy!</div>
</div>
<div class="settings-section" id="ollama-server-url">
<div class="settings-section-title">Ollama Server URL</div>
<div class="settings-section-desc">
Enter your Ollama server URL (default: http://localhost:11434)
<div style="margin-top: 8px;">
<input type="text" id="ollama-url-input" value="${wikishield.options.ollamaServerUrl}"
style="width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 4px; font-family: monospace;"
placeholder="http://localhost:11434">
<button id="test-connection-btn" style="margin-top: 8px; padding: 8px 16px; background: #667eea; color: white; border: none; border-radius: 4px; cursor: pointer;">
Test Connection
</button>
<span id="connection-status" style="margin-left: 8px;"></span>
</div>
</div>
</div>
<div class="settings-section" id="ollama-model-select">
<div class="settings-section-title">Select Model</div>
<div class="settings-section-desc">
Choose an Ollama model from your server. Click "Refresh Models" to fetch available models.
<div style="margin-top: 8px;">
<button id="refresh-models-btn" style="padding: 8px 16px; background: #667eea; color: white; border: none; border-radius: 4px; cursor: pointer;">
<span class="fa fa-sync"></span> Refresh Models
</button>
<span id="models-status" style="margin-left: 8px;"></span>
</div>
<div style="margin-top: 12px;" id="models-container">
<div style="color: #666; font-style: italic;">Click "Refresh Models" to load available models</div>
</div>
</div>
</div>
<div class="settings-section">
<div class="settings-section-title">About Ollama AI</div>
<div class="settings-section-desc">
Ollama allows you to run large language models locally on your machine with complete privacy and control.
<br><strong style="color: #28a745;">⚡ Benefits:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>100% Local - Your data never leaves your machine</li>
<li>Free to use - No API costs</li>
<li>Choose your model - Use any model you have installed</li>
<li>Fast responses - No network latency</li>
</ul>
<strong style="color: #667eea;">📚 Get started:</strong> <a href="https://ollama.com" target="_blank" style="color: #667eea; font-weight: bold;">ollama.com</a>
<br><strong>Popular models:</strong> llama3.2, mistral, gemma2, qwen2.5, deepseek-r1
</div>
</div>
<div class="settings-section">
<div class="settings-section-title" style="color: #dc3545;">⚠️ CORS Setup Required</div>
<div class="settings-section-desc warning-box" style="background: #fff3cd; padding: 12px; border-radius: 6px; border-left: 4px solid #ffc107;">
<strong>Important:</strong> Ollama needs to be configured to allow CORS requests from Wikipedia.
<br><br>
<strong>Option 1: Set Environment Variable Permanently (Recommended)</strong>
<br><br>
<strong>Windows:</strong>
<ol style="margin: 8px 0; padding-left: 20px;">
<li>Open System Properties (Win + Pause/Break or Right-click "This PC" → Properties → Advanced system settings)</li>
<li>Click "Environment Variables"</li>
<li>Under "System variables" or "User variables", click "New"</li>
<li>Variable name: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">OLLAMA_ORIGINS</code></li>
<li>Variable value: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">https://en.wikipedia.org,https://*.wikipedia.org</code></li>
<li>Click OK and restart Ollama</li>
</ol>
<strong>macOS/Linux (Add to shell profile):</strong>
<br>Add this line to <code>~/.bashrc</code>, <code>~/.zshrc</code>, or <code>~/.profile</code>:
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">export OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org"</pre>
Then run: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">source ~/.bashrc</code> (or your profile file)
<br><br>
<strong>Option 2: Temporary (One-Time Use)</strong>
<br><br>
<strong>Windows PowerShell:</strong>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">$env:OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org"
ollama serve</pre>
<strong>macOS/Linux Terminal:</strong>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org" ollama serve</pre>
<strong>Option 3: Systemd Service (Linux)</strong>
<br>Edit <code>/etc/systemd/system/ollama.service</code> and add:
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">[Service]
Environment="OLLAMA_ORIGINS=https://en.wikipedia.org,https://*.wikipedia.org"</pre>
Then run: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">sudo systemctl daemon-reload && sudo systemctl restart ollama</code>
<br><br>
<strong style="color: #dc3545;">⚠️ Without CORS setup, the connection will fail!</strong>
<br>After setting the environment variable, restart Ollama for changes to take effect.
</div>
</div>
<div class="settings-section">
<div class="settings-section-title">AI Analysis Features</div>
<div class="settings-section-desc">
<strong>What the AI can detect:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>Vandalism (content removal, nonsense additions, blanking)</li>
<li>Spam and promotional content</li>
<li>Bias and non-neutral point of view (POV)</li>
<li>Unsourced claims and BLP violations</li>
<li>Personal attacks and uncivil language</li>
<li>Copyright violations and plagiarism indicators</li>
<li>Disruptive editing patterns</li>
<li>Factual errors and misinformation</li>
<li>Policy violations</li>
</ul>
<strong>Features:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>Real-time analysis of edit diffs with surrounding context</li>
<li>Human-like review process with reasoning</li>
<li>Confidence levels and severity ratings</li>
<li>Specific issue identification with descriptions</li>
<li>Actionable recommendations (revert, warn, review, approve)</li>
<li>Visual indicators in the interface</li>
</ul>
</div>
</div>
`;
// Enable/disable toggle
this.createToggle(
this.contentContainer.querySelector("#enable-ollama-ai"),
wikishield.options.enableOllamaAI,
(newValue) => {
wikishield.options.enableOllamaAI = newValue;
wikishield.saveOptions(wikishield.options);
// Initialize or destroy Ollama AI instance
if (newValue) {
wikishield.ollamaAI = new wikishieldOllamaAI(
wikishield.options.ollamaServerUrl,
wikishield.options.ollamaModel
);
wikishield.logger.log("Ollama AI integration enabled");
} else {
wikishield.ollamaAI = null;
wikishield.logger.log("Ollama AI integration disabled");
}
}
);
// Server URL input handler
const urlInput = this.contentContainer.querySelector("#ollama-url-input");
urlInput.addEventListener('change', () => {
wikishield.options.ollamaServerUrl = urlInput.value.trim();
wikishield.saveOptions(wikishield.options);
if (wikishield.ollamaAI) {
wikishield.ollamaAI.serverUrl = wikishield.options.ollamaServerUrl;
}
wikishield.logger.log(`Ollama server URL updated: ${wikishield.options.ollamaServerUrl}`);
});
// Test connection button
const testBtn = this.contentContainer.querySelector("#test-connection-btn");
const statusSpan = this.contentContainer.querySelector("#connection-status");
testBtn.addEventListener('click', async () => {
// Cancel all active AI requests
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
statusSpan.innerHTML = '<span style="color: #ffc107;">Testing...</span>';
testBtn.disabled = true;
const tempAI = new wikishieldOllamaAI(wikishield.options.ollamaServerUrl, "");
const connected = await tempAI.testConnection();
if (connected) {
statusSpan.innerHTML = '<span style="color: #28a745;"><span class="fa fa-check-circle"></span> Connected!</span>';
} else {
statusSpan.innerHTML = `
<span style="color: #dc3545;">
<span class="fa fa-times-circle"></span> Failed to connect
<br><small style="font-size: 0.85em;">Make sure Ollama is running with CORS enabled (see instructions above)</small>
</span>
`;
}
testBtn.disabled = false;
});
// Refresh models button
const refreshBtn = this.contentContainer.querySelector("#refresh-models-btn");
const modelsStatus = this.contentContainer.querySelector("#models-status");
const modelsContainer = this.contentContainer.querySelector("#models-container");
refreshBtn.addEventListener('click', async () => {
// Cancel all active AI requests
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
modelsStatus.innerHTML = '<span style="color: #ffc107;">Loading...</span>';
refreshBtn.disabled = true;
try {
const tempAI = new wikishieldOllamaAI(wikishield.options.ollamaServerUrl, "");
const models = await tempAI.fetchModels();
if (models.length === 0) {
modelsContainer.innerHTML = '<div style="color: #dc3545;">No models found. Please install models using: <code>ollama pull [model-name]</code></div>';
modelsStatus.innerHTML = '<span style="color: #dc3545;">No models found</span>';
} else {
modelsStatus.innerHTML = `<span style="color: #28a745;"><span class="fa fa-check-circle"></span> Found ${models.length} model(s)</span>`;
let modelsHTML = '<div style="display: grid; gap: 8px; margin-top: 8px;">';
models.forEach(model => {
const isSelected = model.name === wikishield.options.ollamaModel;
const sizeGB = (model.size / 1024 / 1024 / 1024).toFixed(1);
modelsHTML += `
<div class="ollama-model-item" data-model="${model.name}" style="
padding: 12px;
border: 2px solid ${isSelected ? '#667eea' : 'rgba(128, 128, 128, 0.3)'};
border-radius: 6px;
cursor: pointer;
background: ${isSelected ? 'rgba(102, 126, 234, 0.15)' : 'transparent'};
transition: all 0.2s;
">
<div style="display: flex; align-items: center; gap: 8px;">
<span class="fa ${isSelected ? 'fa-check-circle' : 'fa-circle'}" style="color: ${isSelected ? '#667eea' : 'rgba(128, 128, 128, 0.5)'};"></span>
<strong style="flex: 1;">${model.name}</strong>
<span style="font-size: 0.85em; opacity: 0.7;">${sizeGB} GB</span>
</div>
<div style="font-size: 0.85em; opacity: 0.6; margin-top: 4px;">
Modified: ${new Date(model.modified_at).toLocaleDateString()}
</div>
</div>
`;
});
modelsHTML += '</div>';
modelsContainer.innerHTML = modelsHTML;
// Add click handlers for model selection
modelsContainer.querySelectorAll('.ollama-model-item').forEach(item => {
item.addEventListener('click', () => {
// Cancel all active AI requests when switching models
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
const modelName = item.dataset.model;
wikishield.options.ollamaModel = modelName;
wikishield.saveOptions(wikishield.options);
if (wikishield.ollamaAI) {
wikishield.ollamaAI.model = modelName;
}
wikishield.logger.log(`Ollama model selected: ${modelName}`);
// Update UI
modelsContainer.querySelectorAll('.ollama-model-item').forEach(i => {
i.style.border = '2px solid rgba(128, 128, 128, 0.3)';
i.style.background = 'transparent';
i.querySelector('.fa').classList.remove('fa-check-circle');
i.querySelector('.fa').classList.add('fa-circle');
i.querySelector('.fa').style.color = 'rgba(128, 128, 128, 0.5)';
});
item.style.border = '2px solid #667eea';
item.style.background = 'rgba(102, 126, 234, 0.15)';
item.querySelector('.fa').classList.remove('fa-circle');
item.querySelector('.fa').classList.add('fa-check-circle');
item.querySelector('.fa').style.color = '#667eea';
});
// Hover effects
item.addEventListener('mouseenter', () => {
if (item.dataset.model !== wikishield.options.ollamaModel) {
item.style.borderColor = '#667eea';
}
});
item.addEventListener('mouseleave', () => {
if (item.dataset.model !== wikishield.options.ollamaModel) {
item.style.borderColor = 'rgba(128, 128, 128, 0.3)';
}
});
});
}
} catch (err) {
modelsContainer.innerHTML = `
<div class="error-box" style="color: #dc3545; padding: 12px; background: #fff3cd; border-radius: 6px; border-left: 4px solid #dc3545;">
<strong>Error:</strong> ${err.message}
<br><br>
<strong>Troubleshooting:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>Make sure Ollama is running</li>
<li>Check that CORS is enabled (see instructions above)</li>
<li>Verify the server URL is correct</li>
<li>Try the "Test Connection" button first</li>
</ul>
</div>
`;
modelsStatus.innerHTML = '<span style="color: #dc3545;"><span class="fa fa-times-circle"></span> Error loading models</span>';
}
refreshBtn.disabled = false;
});
}
/**
* Open appearance settings section
*/
openAppearance() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Appearance</div>
<div class="settings-appearance-box light" id="box-light">Light</div>
<div class="settings-appearance-box dark" id="box-dark">Dark</div>
</div>
`;
this.contentContainer.querySelector("#box-light").addEventListener("click", () => {
wikishield.interface.loadTheme("theme-light");
});
this.contentContainer.querySelector("#box-dark").addEventListener("click", () => {
wikishield.interface.loadTheme("theme-dark");
});
}
/**
* Create an input with +/- buttons
* @param {HTMLElement} container Element to add the input to
* @param {Number} value Initial value for the input
* @param {Number} min Minimum input value
* @param {Number} max Maximum input value
* @param {Number} step Amount the +/- buttons change value by
* @param {(newValue: number) => void} onChange Callback function for input change
*/
/**
* Create a toggle switch
* @param {HTMLElement} container The container to add the toggle to
* @param {Boolean} value The initial value
* @param {Function} onChange Callback when value changes
*/
createToggle(container, value, onChange) {
const toggle = document.createElement("div");
toggle.classList.add("settings-toggle");
if (value) toggle.classList.add("active");
container.appendChild(toggle);
toggle.innerHTML = `
<div class="toggle-switch">
<div class="toggle-slider"></div>
</div>
`;
toggle.addEventListener("click", () => {
value = !value;
if (value) {
toggle.classList.add("active");
} else {
toggle.classList.remove("active");
}
onChange(value);
});
}
createNumericInput(container, value, min, max, step, onChange) {
const input = document.createElement("div");
input.classList.add("numeric-input-container");
container.appendChild(input);
input.innerHTML = `
<span class="fa fa-minus numeric-input-button"></span>
<input type="text" class="numeric-input" value=${value}>
<span class="fa fa-plus numeric-input-button"></span>
`;
const inputElem = input.querySelector("input");
input.querySelector(".fa-minus").addEventListener("click", () => {
value = Math.round(Math.max(value - step, min) * 100) / 100;
inputElem.value = value;
onChange(value);
});
input.querySelector(".fa-plus").addEventListener("click", () => {
value = Math.round(Math.min(value + step, max) * 100) / 100;
inputElem.value = value;
onChange(value);
});
const onInputChange = () => {
if (isNaN(Number(inputElem.value))) {
inputElem.value = value;
}
value = Math.round(Math.min(Math.max(Number(inputElem.value), min), max) * 100) / 100;
value = step >= 1 ? Math.round(value) : value;
inputElem.value = value;
onChange(value);
};
inputElem.addEventListener("blur", onInputChange);
inputElem.addEventListener("keyup", (event) => {
if (event.key.toLowerCase() === "enter") {
onInputChange();
inputElem.blur();
}
});
}
/**
* Open controls settings section
*/
openControls() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Control scripts</div>
<div class="settings-section-desc">Below you can change what actions are completed when a key is pressed.</div>
<div class="add-action-button new-control-script">
<span class="fa fa-plus"></span>
New control script
</div>
</div>
`;
for (const control of wikishield.options.controlScripts) {
const container = document.createElement("div");
container.classList.add("settings-section");
this.contentContainer.appendChild(container);
this.createControlInterface(container, control);
}
this.updateDuplicateControls();
const addButton = this.contentContainer.querySelector(".new-control-script");
addButton.addEventListener("click", () => {
wikishield.options.controlScripts.unshift({
keys: [],
actions: []
});
this.openControls();
});
}
/**
* Find which, if any, keys are used for more than one control
* @returns {String[]} List of keys used more than once
*/
findDuplicateControls() {
const keys = {};
for (const control of wikishield.options.controlScripts) {
for (const key of control.keys) {
if (!keys[key]) {
keys[key] = 0
}
keys[key] += 1;
}
}
const multiples = [];
Object.keys(keys).forEach(key => {
if (keys[key] > 1) {
multiples.push(key);
}
});
return multiples;
}
/**
* Highlight any duplicated control keys
*/
updateDuplicateControls() {
const duplicateControls = this.findDuplicateControls();
[...document.querySelectorAll(".control-keys > div[data-key]")].forEach(elem => {
if (duplicateControls.includes(elem.dataset.key)) {
elem.classList.add("key-duplicate");
} else {
elem.classList.remove("key-duplicate");
}
});
}
/**
* Create interface for changing what a control does
* @param {HTMLElement} container Parent element
* @param {Object} control The control object, see wikishieldData.controlScripts
*/
createControlInterface(container, control) {
container.innerHTML = `
<div class="control-container">
<div class="control-container-title">When these keys are pressed</div>
<div class="control-keys"></div>
<div class="control-container-title" style="margin-top: 10px;">Complete these actions</div>
<div class="control-actions"></div>
</div>
`;
const keyContainer = container.querySelector(".control-keys");
const actionContainer = container.querySelector(".control-actions");
for (const key of control.keys) {
const keyElem = document.createElement("div");
keyContainer.appendChild(keyElem);
keyElem.innerHTML = `
<div class="key-elem-title">${key === " " ? "space" : key}</div>
<span class="fas fa-trash-can remove"></span>
`;
keyElem.dataset.key = key;
keyElem.querySelector(".remove").addEventListener("click", () => {
const set = new Set(control.keys);
set.delete(key);
control.keys = [...set];
this.createControlInterface(container, control);
this.updateDuplicateControls();
wikishield.saveOptions(wikishield.options);
});
}
const plusElem = document.createElement("div");
keyContainer.appendChild(plusElem);
plusElem.innerHTML = `<span class="fas fa-plus"></span>`;
plusElem.style.cursor = "pointer";
plusElem.addEventListener("click", () => {
[...document.querySelectorAll(".key-select")].forEach(elem => elem.remove());
const keySelect = document.createElement("div");
keySelect.classList.add("key-select");
keySelect.innerHTML = "Press a key...";
plusElem.parentElement.insertBefore(keySelect, plusElem);
keySelect.addEventListener("click", () => keySelect.remove());
this.keypressCallback = (key) => {
const set = new Set(control.keys);
set.add(key);
control.keys = [...set];
this.createControlInterface(container, control);
this.updateDuplicateControls();
this.keypressCallback = null;
wikishield.saveOptions(wikishield.options);
}
});
for (const action of control.actions) {
this.createActionItem(
actionContainer,
action,
control,
() => {
wikishield.saveOptions(wikishield.options);
this.createControlInterface(container, control);
}
);
}
const bottomContainer = document.createElement("div");
bottomContainer.classList.add("control-bottom-container");
bottomContainer.innerHTML = `
<div class="add-action-container"></div>
<div>
<div class="add-action-button control-delete">Delete</div>
</div>
`;
actionContainer.appendChild(bottomContainer);
bottomContainer.querySelector(".control-delete").addEventListener("click", () => {
wikishield.options.controlScripts.splice(wikishield.options.controlScripts.indexOf(control), 1);
wikishield.saveOptions(wikishield.options);
this.openControls();
});
const addContainer = bottomContainer.querySelector(".add-action-container");
const resetAddContainer = () => {
addContainer.innerHTML = `<div class="add-action-button new-button">Add new action</div>`;
addContainer.querySelector(".new-button").addEventListener("click", () => {
addContainer.innerHTML = `
<select style="height: 35px;"></select>
<div class="add-action-button cancel-button">Cancel</div>
<div class="add-action-button create-button">Create</div>
`;
const select = addContainer.querySelector("select");
Object.keys(wikishield.interface.eventManager.events).forEach(name => {
select.innerHTML += `<option value="${name}">${wikishield.interface.eventManager.events[name].description}</option>`;
});
select.innerHTML += `<option value="if">If condition</option>`;
addContainer.querySelector(".cancel-button").addEventListener("click", () => resetAddContainer());
addContainer.querySelector(".create-button").addEventListener("click", () => {
const action = {
name: select.value,
params: {}
};
if (select.value === "if") {
action.actions = [];
action.condition = "operatorNonAdmin";
}
control.actions.push(action);
wikishield.saveOptions(wikishield.options);
this.createControlInterface(container, control);
});
});
};
resetAddContainer();
}
/**
* Given an action, find its parent
* @param {Object} action
* @param {Object} parent Object to search through
* @returns {Object} The parent action
*/
findParentOfAction(action, parent) {
if (parent.actions.indexOf(action) !== -1) {
return parent;
}
for (const act of parent.actions) {
if (act.name === "if") {
const result = this.findParentOfAction(action, act);
if (result) {
return result;
}
}
}
}
/**
* Create the interface for a single action
* @param {HTMLElement} container Parent element
* @param {Object} action
* @param {Object} control The parent control object
* @param {() => void} onChange Function to callback if the action is modified
*/
createActionItem(container, action, control, onChange) {
const itemContainer = document.createElement("div");
itemContainer.classList.add("control-action");
container.appendChild(itemContainer);
if (action.name === "if") {
itemContainer.innerHTML = `
<div class="control-action-title">
<div class="control-action-title-left">
<span class="fas fa-circle-question"></span>
If <select></select> then:
</div>
<div class="control-action-title-right"></div>
</div>
`;
const select = itemContainer.querySelector("select");
for (const key in wikishieldEventData.conditions) {
select.innerHTML += `<option value=${key}>${wikishieldEventData.conditions[key].desc}</option>`;
}
select.value = action.condition;
select.addEventListener("change", () => {
action.condition = select.value;
onChange();
});
for (const subaction of action.actions) {
this.createActionItem(itemContainer, subaction, control, onChange);
}
} else {
const event = wikishield.interface.eventManager.events[action.name];
itemContainer.innerHTML = `
<div class="control-action-title">
<div class="control-action-title-left">
<span class="${event.icon}"></span>
${event.description}
</div>
<div class="control-action-title-right"></div>
</div>
`;
for (const param of (event.parameters || [])) {
this.createItemParameter(itemContainer, param, action.params[param.id] || "", (value) => {
action.params[param.id] = value;
wikishield.saveOptions(wikishield.options);
});
}
}
itemContainer.querySelector(".control-action-title-right").innerHTML = `
<span class="fas fa-chevron-up move-action-up"></span>
<span class="fas fa-chevron-down move-action-down"></span>
<span class="fas fa-trash-can delete-action"></span>
`;
itemContainer.querySelector(".move-action-down").addEventListener("click", () => {
const parent = this.findParentOfAction(action, control);
const actionIndex = parent.actions.indexOf(action);
if (parent.actions.indexOf(action) === parent.actions.length - 1) {
if (parent.name !== "if") {
return;
}
const grandparent = this.findParentOfAction(parent, control);
grandparent.actions.splice(grandparent.actions.indexOf(parent) + 1, 0, action);
parent.actions.splice(actionIndex, 1);
} else {
const nextSibling = parent.actions[actionIndex + 1];
if (nextSibling.name === "if") {
nextSibling.actions.unshift(action);
parent.actions.splice(actionIndex, 1);
} else {
parent.actions.splice(actionIndex, 1);
parent.actions.splice(actionIndex + 1, 0, action);
}
}
onChange();
});
itemContainer.querySelector(".move-action-up").addEventListener("click", () => {
const parent = this.findParentOfAction(action, control);
const actionIndex = parent.actions.indexOf(action);
if (parent.actions.indexOf(action) === 0) {
if (parent.name !== "if") {
return;
}
const grandparent = this.findParentOfAction(parent, control);
grandparent.actions.splice(grandparent.actions.indexOf(parent), 0, action);
parent.actions.splice(actionIndex, 1);
} else {
const prevSibling = parent.actions[actionIndex - 1];
if (prevSibling.name === "if") {
prevSibling.actions.push(action);
parent.actions.splice(actionIndex, 1);
} else {
parent.actions.splice(actionIndex, 1);
parent.actions.splice(actionIndex - 1, 0, action);
}
}
onChange();
});
itemContainer.querySelector(".delete-action").addEventListener("click", () => {
const parent = this.findParentOfAction(action, control);
parent.actions.splice(parent.actions.indexOf(action), 1);
onChange();
});
}
/**
* Given a parameter, create a label and input
* @param {HTMLElement} container
* @param {Object} parameter
* @param {String} value
* @param {(value: string) => void} onChange
*/
createItemParameter(container, parameter, value, onChange) {
const parameterElem = document.createElement("div");
parameterElem.classList.add("action-parameter");
container.appendChild(parameterElem);
parameterElem.innerHTML = `
<div class="parameter-title">${parameter.title}</div>
`;
if (parameter.type === "choice") {
parameterElem.innerHTML += `<select></select>`;
const select = parameterElem.querySelector("select");
for (const choice of parameter.options) {
select.innerHTML += `<option>${choice}</option>`;
}
select.value = value;
select.addEventListener("change", () => onChange(select.value));
} else if (parameter.type === "text") {
parameterElem.innerHTML += `<input type="text">`;
const input = parameterElem.querySelector("input");
input.value = value;
input.addEventListener("keydown", (event) => {
if (event.key.toLowerCase() === "enter") {
onChange(input.value);
input.blur();
}
});
input.addEventListener("blur", () => onChange(input.value));
}
}
/**
* Open whitelist settings section
*/
openWhitelist() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Whitelisted users</div>
<div class="settings-section-desc">This is a list of users you have whitelisted. Edits by these users will not appear in your queue. The list of whitelisted users resets whenever you restart wikishield.</div>
</div>
<div class="settings-section user-container"></div>
`;
const container = this.contentContainer.querySelector(".user-container");
this.createUserList(container, wikishield.whitelist);
}
/**
* Create a list of users given a set of usernames
* @param {HTMLElement} container
* @param {Set<string>} set
*/
createUserList(container, set) {
for (const user of [...set]) {
const userItem = document.createElement("div");
container.appendChild(userItem);
userItem.innerHTML = `
<div>
<a target="_blank" href="${wikishield.util.pageLink(`Special:Contributions/${user}`)}">${user}</a>
</div>
<div class="add-action-button remove-button">Remove</div>
`;
userItem.querySelector(".remove-button").addEventListener("click", () => {
set.delete(user);
userItem.remove();
});
}
}
/**
* Open highlighted settings section
*/
openHighlighted() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Highlighted users</div>
<div class="settings-section-desc">This is a list of users you have highlighted. Edits by these users will appear before other edits in your queue. The list of highlighted users resets whenever you restart wikishield.</div>
</div>
<div class="settings-section user-container"></div>
`;
const container = this.contentContainer.querySelector(".user-container");
this.createUserList(container, wikishield.highlighted);
}
/**
* Open statistics settings section
*/
openStatistics() {
const revertRate = Math.round(wikishield.statistics.reverts / wikishield.statistics.reviewed * 1000) / 10;
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Statistics</div>
<p>You have reviewed a total of <b>${wikishield.statistics.reviewed}</b> edits, and reverted <b>${wikishield.statistics.reverts}</b> (${revertRate}%).</p>
<p>You have reported users or requested protection <b>${wikishield.statistics.reports}</b> times.</p>
</div>
`;
}
/**
* Open about settings section
*/
openAbout() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">About wikishield</div>
<p>Created by User:Ingenuity. Version ${wikishieldVersion}</p>
</div>
<div class="settings-section">
${wikishieldChangelog || "<p>No changelog is available.</p>"}
</div>
`;
}
/**
* Remove all existing settings containers
*/
closeSettings() {
this.isOpen = false;
[...document.querySelectorAll(".settings-container")].forEach(elem => elem.remove());
}
/**
* Handle a keypress while settings are open
* @param {KeyboardEvent} event
*/
handleKeypress(event) {
if (event.key.toLowerCase() === "escape") {
this.closeSettings();
return;
}
if (this.keypressCallback && wikishieldSettingsAllowedKeys.includes(event.key.toLowerCase())) {
this.keypressCallback(event.key.toLowerCase());
event.preventDefault();
}
}
}
// </nowiki>
// <nowiki>
class wikishieldInterface {
constructor() {
this.selectedWidthAdjust = null;
this.startingSectionWidth = null;
this.startingMouseX = null;
this.lastCurrentEdit = null;
this.eventManager = new wikishieldEventManager();
this.settings = new wikishieldSettingsInterface();
this.selectedMenu = null;
this.selectedSubmenu = null;
}
/**
* Create a stylesheet with the given theme's style
* @param {String} name
*/
loadTheme(name) {
this.removeTheme();
const style = document.createElement("style");
style.classList.add("wikishield-theme");
style.innerHTML = wikishieldStyling[name];
document.head.appendChild(style);
wikishield.options.theme = name;
wikishield.saveOptions(wikishield.options);
}
/**
* Remove all theme stylesheets
*/
removeTheme() {
document.querySelectorAll(".wikishield-theme").forEach(elem => elem.remove());
}
/**
* Build the starting page
*/
async build() {
document.head.innerHTML = `
<title>wikishield</title>
<style>${wikishieldStyling["initial"]}</style>
`;
document.body.innerHTML = wikishieldHTML["initial"];
if (wikishield.rights.rollback) {
this.elem("#rollback-needed").style.display = "none";
} else {
this.elem("#start-button").style.display = "none";
}
this.elem("#start-button").addEventListener("click", () => {
wikishield.start();
});
this.loadTheme(wikishield.options.theme || "theme-light");
}
/**
* Build the main interface, and link buttons to events
*/
start() {
document.head.innerHTML = `
<title>wikishield</title>
<style>${wikishieldStyling["main"]}${wikishieldStyling["mobile"]}</style>
${wikishieldHTML["head"]}
`;
this.loadTheme(wikishield.options.theme || "theme-light");
document.body.innerHTML = wikishieldHTML["main"];
[...document.querySelectorAll(".bottom-tool-title")].forEach(elem => {
elem.addEventListener("click", () => {
this.selectedMenu = this.selectedMenu === elem ? null : elem;
this.selectedSubmenu = null;
this.updateMenuElements();
});
});
[...document.querySelectorAll(".submenu")].forEach(elem => {
elem.addEventListener("click", () => {
this.selectedSubmenu = this.selectedSubmenu === elem ? null : elem;
this.updateMenuElements();
});
});
[...document.querySelectorAll(".bottom-tool-option-subcontent")].forEach(elem => {
elem.addEventListener("click", (event) => event.stopPropagation());
});
[
this.elem("#delete-queue"),
this.elem("#open-settings"),
this.elem("#notifications-icon"),
this.elem("#user-contribs-level")
].forEach(e => this.addTooltipListener(e));
// Notification icon click handler
this.elem("#notifications-icon").addEventListener("click", (e) => {
e.stopPropagation();
const panel = this.elem("#notifications-panel");
panel.classList.toggle("show");
});
// Mark all as read handler
this.elem("#mark-all-read").addEventListener("click", () => {
wikishield.markAllNotificationsRead();
});
// Close notifications panel when clicking outside
document.addEventListener("click", (e) => {
const panel = this.elem("#notifications-panel");
const icon = this.elem("#notifications-icon");
if (panel && !panel.contains(e.target) && !icon.contains(e.target)) {
panel.classList.remove("show");
}
});
this.eventManager.linkButton(
this.elem("#delete-queue"),
"deleteQueue", true
);
this.eventManager.linkButton(
this.elem("#open-settings"),
"openSettings", true
);
this.eventManager.linkButton(
this.elem("#user-open-user-page"),
"openUserPage"
);
this.eventManager.linkButton(
this.elem("#user-open-user-talk"),
"openUserTalk"
);
this.eventManager.linkButton(
this.elem("#user-view-contribs"),
"openUserContribs"
);
this.eventManager.linkButton(
this.elem("#user-view-filter-log"),
"openFilterLog"
);
this.eventManager.linkButton(
this.elem("#user-add-whitelist"),
"addToWhitelist"
);
this.eventManager.linkButton(
this.elem("#user-highlight"),
"highlight"
);
this.eventManager.linkButton(
this.elem("#page-open-page"),
"openPage"
);
this.eventManager.linkButton(
this.elem("#page-open-talk"),
"openTalk"
);
this.eventManager.linkButton(
this.elem("#page-view-history"),
"openHistory"
);
this.eventManager.linkButton(
this.elem("#edit-view-revision"),
"openRevision"
);
this.eventManager.linkButton(
this.elem("#edit-view-diff"),
"openDiff"
);
this.eventManager.linkButton(
this.elem("#edit-thank-user"),
"thankUser"
);
this.eventManager.linkButton(
this.elem("#edit-rollback"),
"rollback"
);
this.createSubmenu(
this.elem("#edit-rollback-goodfaith .bottom-tool-option-subcontent"),
"rollbackGoodFaith"
);
this.createSubmenu(
this.elem("#edit-undo .bottom-tool-option-subcontent"),
"undo"
);
this.createSubmenu(
this.elem("#user-report-aiv .bottom-tool-option-subcontent"),
"reportToAIV"
);
this.createSubmenu(
this.elem("#user-report-uaa .bottom-tool-option-subcontent"),
"reportToUAA"
);
// this.createSubmenu(
// this.elem("#user-block .bottom-tool-option-subcontent"),
// "block"
// );
this.createSubmenu(
this.elem("#page-request-protection .bottom-tool-option-subcontent"),
"requestProtection"
);
// this.createSubmenu(
// this.elem("#page-protect .bottom-tool-option-subcontent"),
// "protect"
// );
this.createSubmenu(
this.elem("#user-welcome .bottom-tool-option-subcontent"),
"welcome"
);
this.createSubmenu(
this.elem("#edit-rollback-goodfaith .bottom-tool-option-subcontent"),
"rollbackGoodFaith"
);
if (!wikishield.rights.block) {
[...document.querySelectorAll(".tool-block")].forEach(elem => elem.style.display = "none");
}
if (!wikishield.rights.protect) {
[...document.querySelectorAll(".tool-protect")].forEach(elem => elem.style.display = "none");
}
[...this.elem("#bottom-tools").querySelectorAll("[data-tooltip]")]
.forEach(elem => this.addTooltipListener(elem));
this.createRevertMenu(this.elem("#revert-menu"));
this.createWarnMenu(this.elem("#warn-menu"));
const queueWidthAdjust = this.elem("#queue-width-adjust");
const queue = this.elem("#queue");
const detailsWidthAdjust = this.elem("#details-width-adjust");
const details = this.elem("#right-details");
queueWidthAdjust.addEventListener("mousedown", (event) => {
this.selectedWidthAdjust = queueWidthAdjust;
this.startingMouseX = event.clientX;
this.startingSectionWidth = queue.getBoundingClientRect().width;
});
detailsWidthAdjust.addEventListener("mousedown", (event) => {
this.selectedWidthAdjust = detailsWidthAdjust;
this.startingMouseX = event.clientX;
this.startingSectionWidth = details.getBoundingClientRect().width;
});
window.addEventListener("mouseup", () => this.selectedWidthAdjust = null);
window.addEventListener("mousemove", (event) => {
if (this.selectedWidthAdjust === queueWidthAdjust) {
const newWidth = event.clientX - this.startingMouseX + this.startingSectionWidth;
queue.style.width = Math.min(Math.max(newWidth, 200), 400) + "px";
this.elem("#right-container").style.width = `calc(100% - ${queue.style.width})`;
}
if (this.selectedWidthAdjust === detailsWidthAdjust) {
const newWidth = this.startingMouseX - event.clientX + this.startingSectionWidth;
details.style.width = Math.min(Math.max(newWidth, 250), 400) + "px";
this.elem("#main-container").style.width = `calc(100% - ${details.style.width})`;
}
});
window.addEventListener("click", () => {
[...document.querySelectorAll(".context-menu")].forEach(elem => elem.remove());
});
if (wikishield.getChangelogVersion() !== wikishieldChangelogVersion) {
const container = document.createElement("div");
container.classList.add("settings-container");
document.body.appendChild(container);
container.innerHTML = `
<div class="settings">
<div class="settings-section changelog">
${wikishieldChangelog}
<button id="close-changelog" class="add-action-button">Close</button>
</div>
</div>
`;
document.getElementById("close-changelog").addEventListener("click", () => {
container.remove();
wikishield.updateChangelogVersion();
});
}
}
/**
* Update which menu elements are selected and open
*/
updateMenuElements() {
[...document.querySelectorAll(".bottom-tool-content")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".bottom-tool-title-selected")].forEach(e => e.classList.remove("bottom-tool-title-selected"));
[...document.querySelectorAll(".bottom-tool-title")].forEach(elem => {
if (this.selectedMenu === elem) {
elem.classList.add("bottom-tool-title-selected");
elem.parentElement.querySelector(".bottom-tool-content").style.display = "initial";
}
});
[...document.querySelectorAll(".bottom-tool-option-subcontent")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".submenu-selected")].forEach(e => e.classList.remove("submenu-selected"));
[...document.querySelectorAll(".submenu")].forEach(elem => {
if (this.selectedSubmenu === elem) {
elem.classList.add("submenu-selected");
elem.children[2].style.display = "initial";
}
});
}
/**
* Close all bottom menu popups
*/
closeAllMenus() {
this.selectedMenu = null;
this.selectedSubmenu = null;
[...document.querySelectorAll(".bottom-tool-content")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".bottom-tool-title-selected")].forEach(e => e.classList.remove("bottom-tool-title-selected"));
[...document.querySelectorAll(".bottom-tool-option-subcontent")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".submenu-selected")].forEach(e => e.classList.remove("submenu-selected"));
}
/**
* Create the menu for warning types
* @param {HTMLElement} container
*/
createRevertMenu(container) {
const table = document.createElement("table");
table.classList.add("revert-menu-table");
container.appendChild(table);
for (const warningType in wikishieldData.warnings) {
const row = document.createElement("tr");
table.appendChild(row);
const levels = [ "Auto", "1", "2", "3", "4", "4im" ];
row.innerHTML += `
<td class="revert-menu-title">${warningType}</td>
<td class="revert-menu-info" data-tooltip="${wikishieldData.warnings[warningType].desc}">
<span class="fas fa-circle-question"></span>
</td>
`;
const templates = [ "Auto", ...wikishieldData.warnings[warningType].templates ];
for (const template in templates) {
const level = levels[template];
const elem = document.createElement("td");
row.appendChild(elem);
elem.innerText = level;
if (level === "Auto") {
elem.style.backgroundColor = "#00a000";
} else {
elem.style.backgroundColor = wikishieldData.warningTemplateColors[level];
}
elem.classList.add("revert-menu-item");
elem.addEventListener("click", async () => {
await wikishield.executeScript({
actions: [
{
name: "rollback",
params: {
"label": wikishieldData.warnings[warningType].label
}
},
{
name: "warn",
params: {
warningType,
level: level === "Auto" ? "auto" : (level === "4im" ? "4im" : Number(template) + 1)
}
},
{
name: "highlight",
params: {}
},
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{
name: "reportToAIV",
params: {
reportMessage: "Vandalism past final warning"
}
}
]
}
]
},
{
name: "nextEdit",
params: {}
}
]
});
this.selectedMenu = null;
this.updateMenuElements();
});
}
}
[...container.querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
}
/**
* Create the warn menu (without rollback)
* @param {HTMLElement} container Container element for the menu
*/
createWarnMenu(container) {
const warnTypes = {
"Gaming the system": {
templates: [
"subst:uw-gaming1",
"subst:uw-gaming2",
"subst:uw-gaming3",
"subst:uw-gaming4",
"subst:uw-gaming4im"
],
label: "[[WP:GAME|gaming the system]]",
desc: "Warning for gaming the system or manipulating Wikipedia processes.",
requiresArticle: true
},
"Misleading edit summaries": {
templates: [
"subst:uw-mislead1",
"subst:uw-mislead2",
"subst:uw-mislead3",
"subst:uw-mislead4"
],
label: "using [[WP:EDITSUMMARY|misleading edit summaries]]",
desc: "Warning for using misleading or false edit summaries.",
requiresArticle: true
},
"Incorrect minor edits": {
templates: [
"subst:uw-minor"
],
label: "incorrect use of [[Help:Minor edit|minor edits]]",
desc: "Warning for incorrectly marking edits as minor.",
requiresArticle: false
}
};
const table = document.createElement("table");
table.classList.add("revert-menu-table");
container.appendChild(table);
for (const warningType in warnTypes) {
const row = document.createElement("tr");
table.appendChild(row);
const warningData = warnTypes[warningType];
const levels = warningData.templates.length === 1 ? ["Only"] : ["1", "2", "3", "4", "4im"];
row.innerHTML += `
<td class="revert-menu-title">${warningType}</td>
<td class="revert-menu-info" data-tooltip="${warningData.desc}">
<span class="fas fa-circle-question"></span>
</td>
`;
for (let i = 0; i < warningData.templates.length; i++) {
const template = warningData.templates[i];
const level = levels[i];
const elem = document.createElement("td");
row.appendChild(elem);
elem.innerText = level;
// Color coding for levels
if (warningData.templates.length === 1) {
elem.style.backgroundColor = "#4a90e2";
} else if (level === "4im") {
elem.style.backgroundColor = wikishieldData.warningTemplateColors["4im"];
} else {
elem.style.backgroundColor = wikishieldData.warningTemplateColors[level];
}
elem.classList.add("revert-menu-item");
elem.addEventListener("click", async () => {
await wikishield.executeScript({
actions: [
{
name: "warn",
params: {
warningType: warningType,
level: i + 1,
warningTemplates: warningData.templates,
warningLabel: warningData.label,
requiresArticle: warningData.requiresArticle
}
},
{
name: "highlight",
params: {}
},
{
name: "nextEdit",
params: {}
}
]
});
this.selectedMenu = null;
this.updateMenuElements();
});
}
}
[...container.querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
}
/**
* Create a form for a submenu based on an event
* @param {HTMLElement} container Container element for the submenu
* @param {String} eventName EventManager event name
*/
createSubmenu(container, eventName) {
const event = this.eventManager.events[eventName];
container.innerHTML = `
<div class="bottom-subcontent-title">${event.description}</div>
`;
for (const param of (event.parameters || [])) {
container.innerHTML += `<div class="bottom-subcontent-input-title">${param.title}</div>`;
switch (param.type) {
case "choice":
const optionHTML = param.options.reduce((prev, cur) => prev + `<option>${cur}</option>`, "");
container.innerHTML += `
<select data-paramid="${param.id}">
${optionHTML}
</select>
`;
break;
case "text":
container.innerHTML += `<input type="text" data-paramid="${param.id}">`
break;
default:
break;
}
}
const button = document.createElement("button");
button.innerText = "Submit";
button.classList.add("bottom-subcontent-button");
container.appendChild(button);
button.addEventListener("click", () => {
const params = {};
for (const param of (event.parameters || [])) {
const input = container.querySelector(`[data-paramid="${param.id}"]`);
params[param.id] = input.value;
}
wikishield.executeScript({
actions: [
{
name: eventName,
params
}
]
});
this.selectedMenu = null;
this.selectedSubmenu = null;
this.updateMenuElements();
});
}
/**
* Add edits to the queue if they aren't already there
* @param {Object} queue
* @param {Object} currentEdit
*/
renderQueue(queue, currentEdit) {
let lastEditElem = null;
this.elem("#queue-top-items").innerText = queue.length + " item" + (queue.length === 1 ? "" : "s");
for (const edit of queue) {
// Scope the selector to only search within #queue-items
let elem = this.elem(`#queue-items .queue-edit[data-revid="${edit.revid}"]`);
if (!elem) {
elem = document.createElement("div");
elem.classList.add("queue-edit");
elem.dataset.revid = edit.revid.toString();
elem.innerHTML = this.generateEditHTML(edit);
if (lastEditElem) {
lastEditElem.parentElement.insertBefore(elem, lastEditElem.nextSibling);
} else {
if (edit === currentEdit) {
this.elem("#queue-items").prepend(elem);
} else {
this.elem("#queue-items").appendChild(elem);
}
}
[...elem.querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
elem.addEventListener("contextmenu", (event) => {
event.preventDefault();
[...document.querySelectorAll(".context-menu")].forEach(e => e.remove());
const contextMenu = document.createElement("div");
contextMenu.classList.add("context-menu");
contextMenu.innerHTML = wikishieldHTML["edit-context-menu"];
document.body.appendChild(contextMenu);
contextMenu.style.left = event.clientX + "px";
contextMenu.style.top = event.clientY + "px";
contextMenu.querySelector("#context-ores-number").innerText = Math.round(edit.ores * 100) || 0;
contextMenu.querySelector("#context-ores-number").style.color = this.getORESColor(edit.ores || 0);
contextMenu.querySelector("#context-remove").addEventListener("click", () => {
// Cancel AI analysis for the edit being removed
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAnalysis(edit.revid);
}
if (edit === currentEdit) {
wikishield.queue.nextItem();
} else {
for (let i = 0; i < queue.length; i++) {
if (queue[i] === edit) {
queue.splice(i, 1);
break;
}
}
this.removeQueueItem(edit.revid);
}
wikishield.queue.previousItems.push(edit);
contextMenu.remove();
});
contextMenu.querySelector("#context-whitelist").addEventListener("click", () => {
wikishield.whitelist.add(edit.user.name);
contextMenu.remove();
});
contextMenu.querySelector("#context-open-history").addEventListener("click", () => {
window.open(wikishield.util.pageLink(`Special:PageHistory/${edit.page.title}`));
contextMenu.remove();
});
contextMenu.querySelector("#context-open-contribs").addEventListener("click", () => {
window.open(wikishield.util.pageLink(`Special:Contributions/${edit.user.name}`));
contextMenu.remove();
});
contextMenu.addEventListener("click", (mevent) => {
mevent.stopPropagation();
});
});
elem.addEventListener("click", () => {
wikishield.queue.currentEdit = edit;
this.renderQueue(wikishield.queue.queue, edit);
// Trigger AI analysis when clicking to view a different edit
if (edit && wikishield.options.enableOllamaAI && wikishield.ollamaAI) {
wikishield.ollamaAI.analyzeEdit(edit).then(analysis => {
edit.aiAnalysis = analysis;
if (wikishield.queue.currentEdit === edit && wikishield.interface) {
wikishield.interface.updateAIAnalysisDisplay(analysis);
}
}).catch(err => {
console.error("AI analysis failed:", err);
});
}
});
}
if (edit === currentEdit) {
elem.classList.add("queue-edit-current");
} else {
elem.classList.remove("queue-edit-current");
}
lastEditElem = elem;
}
if (this.lastCurrentEdit !== currentEdit) {
this.lastCurrentEdit = currentEdit;
this.newEditSelected(currentEdit);
}
}
/**
* Generate the HTML for a single edit in the queue, user edits, or page history sections
* @param {Object} edit
* @param {Boolean} includeORES include the ORES score of the edit
* @param {Boolean} includeTitle include the page title
* @param {Boolean} includeUser include the name of the user who made the edit
* @param {Boolean} includeTime include the edit's timestamp
*/
generateEditHTML(edit, includeORES=true, includeTitle=true, includeUser=true, includeTime=false) {
let tagHTML = "";
for (const tag of edit.tags) {
tagHTML += `<span class="queue-edit-tag">${tag}</span>`;
}
const diff = edit.sizediff || 0;
const summaryTruncated = edit.comment ? wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.comment, 100)) : "";
const summaryFull = edit.comment ? wikishield.util.escapeHtml(edit.comment) : "";
// Add minor edit indicator before summary
const minorIndicator = edit.minor ? `<span class="minor-indicator" data-tooltip="Minor edit">m</span> ` : "";
const oresHTML = includeORES ? `<div class="queue-edit-color" style="background: ${this.getORESColor(edit.ores || 0)};"></div>` : "";
const titleHTML = includeTitle ? `
<div class="queue-edit-title" data-tooltip="${edit.page ? edit.page.title : edit.title}">
<span class="fa fa-file-lines queue-edit-icon"></span>
${edit.page ? edit.page.title : edit.title}
</div>` : "";
// Determine user highlight classes
let userClasses = "";
if (edit.user && wikishield.highlighted.has(edit.user.name)) {
userClasses = "queue-edit-user-highlight";
} else if (edit.user && typeof edit.user === "object" && edit.user.emptyTalkPage) {
userClasses = "queue-edit-user-empty-talk";
}
const userHTML = includeUser ? `
<div class="queue-edit-user ${userClasses}">
<span class="fa fa-user queue-edit-icon"></span>
${!edit.user ? "<em>Username removed</em>" : typeof edit.user === "string" ? edit.user : edit.user.name}
</div>` : "";
const timeHTML = includeTime ? `
<div class="queue-edit-time" data-tooltip="${edit.timestamp}">
<span class="fa fa-clock queue-edit-icon"></span>
${wikishield.util.timeAgo(edit.timestamp)}
</div>` : "";
return `
${oresHTML}
<div class="queue-edit-content">
${titleHTML}
${userHTML}
<div class="queue-edit-summary" data-tooltip="${summaryFull}">
<span class="fa fa-comment-dots queue-edit-icon"></span>
${minorIndicator}${summaryTruncated || "<em>No summary provided</em>"}
</div>
${timeHTML}
<div class="queue-edit-tags">
${tagHTML}
</div>
</div>
<div class="queue-edit-change" style="${Math.abs(diff) >= 500 ? "font-weight: bold;" : ""}color: ${wikishield.util.getChangeColor(diff)}">
${wikishield.util.getChangeString(diff)}
</div>
`;
}
/**
* Update the main container when a new edit is selected
* @param {Object} edit
*/
async newEditSelected(edit) {
// Close all bottom menu popups when switching pages
this.closeAllMenus();
const userContribsLevel = this.elem("#user-contribs-level");
const contribsContainer = this.elem("#user-contribs-content"),
historyContainer = this.elem("#page-history-content");
contribsContainer.innerHTML = "";
historyContainer.innerHTML = "";
// Remove any existing tooltips when switching diffs
this.removeTooltips();
if (edit === null) {
this.elem("#right-top").innerHTML = "";
this.elem("#user-contribs-count").innerText = "_ edits";
userContribsLevel.style.display = "none";
this.elem("#diff-container").innerHTML = "";
// Remove AI analysis container when no edit
const aiContainer = document.querySelector("#ai-analysis-container");
if (aiContainer) {
aiContainer.remove();
}
// Remove old edit notice when no edit
const noticeContainer = document.querySelector("#old-edit-notice");
if (noticeContainer) {
noticeContainer.remove();
}
// Update diff height
this.updateDiffContainerHeight();
// Hide block count indicator
const blockIndicator = document.querySelector("#user-contribs #block-count-indicator");
if (blockIndicator) {
blockIndicator.style.display = "none";
blockIndicator.innerHTML = "";
}
// Clear protection indicator
const protIndicator = document.querySelector("#page-history #protection-indicator");
if (protIndicator) {
protIndicator.innerHTML = "";
}
return;
}
// If this is the first time viewing this edit, check for newer revisions
if (!edit.reviewed && edit.page.history && edit.page.history.length > 0) {
const newestRevision = edit.page.history[0];
if (newestRevision.revid !== edit.revid) {
// There's a newer revision, load it
await wikishield.queue.loadFromHistory(newestRevision.revid);
return; // Exit early since loadFromHistory will trigger newEditSelected again
}
}
userContribsLevel.style.display = "initial";
userContribsLevel.style.background = wikishieldData.warningTemplateColors[edit.user.warningLevel] || "grey";
userContribsLevel.innerText = edit.user.warningLevel;
// Fetch warning history for tooltip
if (edit.user.warningLevel !== "0") {
wikishield.api.getSinglePageContent(`User talk:${edit.user.name}`).then(talkContent => {
const warningHistory = wikishield.queue.getWarningHistory(talkContent);
if (warningHistory.length > 0) {
let tooltipHtml = '<div class="tooltip-title">⚠️ Warning History</div>';
warningHistory.slice(0, 5).forEach(warning => {
const templateDisplay = `${warning.template}${warning.level}`;
const articleInfo = warning.article ? `<span class="tooltip-item-article"> (${wikishield.util.escapeHtml(warning.article)})</span>` : "";
const userInfo = warning.username ? `User:${wikishield.util.escapeHtml(warning.username)}` : (warning.timestamp || warning.section);
tooltipHtml += `<div class="tooltip-item">`;
tooltipHtml += `<span class="tooltip-item-level">${wikishield.util.escapeHtml(templateDisplay)}</span>`;
tooltipHtml += articleInfo;
tooltipHtml += `<br><span class="tooltip-item-time">${wikishield.util.escapeHtml(userInfo)}</span>`;
tooltipHtml += `</div>`;
});
if (warningHistory.length > 5) {
tooltipHtml += `<div class="tooltip-more">... and ${warningHistory.length - 5} more</div>`;
}
userContribsLevel.setAttribute("data-tooltip", tooltipHtml);
userContribsLevel.setAttribute("data-tooltip-html", "true");
} else {
userContribsLevel.setAttribute("data-tooltip", `Warning level: ${edit.user.warningLevel}`);
userContribsLevel.setAttribute("data-tooltip-html", "false");
}
}).catch(() => {
userContribsLevel.setAttribute("data-tooltip", `Warning level: ${edit.user.warningLevel}`);
userContribsLevel.setAttribute("data-tooltip-html", "false");
});
} else {
userContribsLevel.setAttribute("data-tooltip", "No warnings");
userContribsLevel.setAttribute("data-tooltip-html", "false");
}
this.elem("#user-contribs-count").innerText = edit.user.editCount === -1 ? "N/A edits"
: edit.user.editCount + " edit" + (edit.user.editCount === 1 ? "" : "s");
const summaryTruncated = edit.comment ? wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.comment, 150)) : "";
const summaryFull = edit.comment ? wikishield.util.escapeHtml(edit.comment) : "";
const minorIndicator = edit.minor ? `<span class="minor-indicator" data-tooltip="Minor edit">m</span> ` : "";
const title = wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.page.title, 50));
const titleFull = wikishield.util.escapeHtml(edit.page.title);
const username = wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.user.name, 30));
const usernameFull = wikishield.util.escapeHtml(edit.user.name);
// Fetch page protection info and user block count
const protectionPromise = wikishield.api.getPageProtection(edit.page.title);
const blockCountPromise = wikishield.api.getBlockCount(edit.user.name);
this.elem("#right-top").innerHTML = `
<div>
<span class="fa fa-file-lines"></span>
<a href="${wikishield.util.pageLink(edit.page.title)}" target="_blank" data-tooltip="${titleFull}">${title}</a>
</div>
<div>
<span class="fa fa-user"></span>
<a href="${wikishield.util.pageLink("Special:Contributions/" + edit.user.name)}" target="_blank" data-tooltip="${usernameFull}">${username}</a>
</div>
<div>
<span class="fa fa-pencil"></span>
<span style="color: ${wikishield.util.getChangeColor(edit.sizediff || 0)}">${wikishield.util.getChangeString(edit.sizediff || 0)}</span>
</div>
<div class="right-top-comment" data-tooltip="${summaryFull}">
<span class="fa fa-comment-dots"></span>
${minorIndicator}${summaryTruncated || "<em>No summary provided</em>"}
</div>
`;
// Highlight username in top bar based on status (same as queue highlighting)
const myUsername = mw.config.get("wgUserName");
const rightTop = this.elem("#right-top");
const userDiv = rightTop.children[1]; // Second div contains the username
if (userDiv) {
// Detect current theme
const isDarkMode = wikishield.options.theme === "theme-dark";
// Apply padding and border radius for highlights
const highlightStyle = "padding: 4px 8px; border-radius: 4px;";
// Check if user is highlighted (yellow) or has empty talk page (red)
if (wikishield.highlighted.has(edit.user.name)) {
const bgColor = isDarkMode ? "#727237" : "#ffffbe"; // Yellow highlight
userDiv.style.cssText = `background: ${bgColor}; ${highlightStyle}`;
} else if (edit.user.emptyTalkPage) {
const bgColor = isDarkMode ? "#6b3737" : "#ffcccc"; // Red highlight for empty talk page
userDiv.style.cssText = `background: ${bgColor}; ${highlightStyle}`;
}
// Also add outline if it's the current user's name
if (myUsername && edit.user.name === myUsername) {
userDiv.style.outline = "2px solid #ffc107";
userDiv.style.outlineOffset = "-2px";
}
}
// Load protection info and display in page history header
protectionPromise.then(protection => {
const protIndicator = document.querySelector("#page-history #protection-indicator");
if (protIndicator) {
if (protection.protected) {
let icon = "🔒";
let tooltip = "Protected";
if (protection.level === "full") {
icon = "🔒";
tooltip = "Fully protected";
} else if (protection.level === "semi") {
icon = "🔓";
tooltip = "Semi-protected";
} else if (protection.level === "extended") {
icon = "🔐";
tooltip = "Extended confirmed protected";
}
protIndicator.innerHTML = `<span style="cursor: help;" data-tooltip="${tooltip}">${icon}</span>`;
this.addTooltipListener(protIndicator.querySelector("[data-tooltip]"));
} else {
protIndicator.innerHTML = "";
}
}
});
// Load block count and display next to warning level
blockCountPromise.then(async blockCount => {
const blockIndicator = document.querySelector("#user-contribs #block-count-indicator");
if (blockIndicator) {
if (blockCount > 0) {
// Fetch detailed block history for tooltip
const blockHistory = await wikishield.api.getBlockHistory(edit.user.name);
let tooltipHtml = `<div class="tooltip-title">🚫 Block History (${blockCount} total)</div>`;
if (blockHistory.length > 0) {
blockHistory.forEach(block => {
// Extract plain text from blocker name (remove any HTML tags)
let blockerName = block.user || "Unknown";
blockerName = blockerName.replace(/<[^>]*>/g, '');
const timestamp = new Date(block.timestamp).toLocaleString('en-US', {
month: 'short',
day: 'numeric',
year: 'numeric',
hour: '2-digit',
minute: '2-digit'
});
// Extract plain text from duration (remove any HTML tags)
let duration = block.params?.duration || "Unknown duration";
duration = duration.replace(/<[^>]*>/g, '');
// Extract plain text from reason (remove any HTML tags)
let reason = block.comment || "No reason specified";
reason = reason.replace(/<[^>]*>/g, '');
tooltipHtml += `<div class="tooltip-item">`;
tooltipHtml += `<span class="tooltip-item-level">By ${wikishield.util.escapeHtml(blockerName)}</span><br>`;
tooltipHtml += `<span class="tooltip-item-time">${timestamp} • ${wikishield.util.escapeHtml(duration)}</span><br>`;
tooltipHtml += `<span class="tooltip-item-article">${wikishield.util.escapeHtml(reason)}</span>`;
tooltipHtml += `</div>`;
});
if (blockCount > blockHistory.length) {
tooltipHtml += `<div class="tooltip-more">... and ${blockCount - blockHistory.length} more</div>`;
}
}
blockIndicator.style.display = "initial";
blockIndicator.innerHTML = `<span style="cursor: help;" data-tooltip="${wikishield.util.escapeHtml(tooltipHtml)}" data-tooltip-html="true">${blockCount}×</span>`;
this.addTooltipListener(blockIndicator.querySelector("[data-tooltip]"));
} else {
blockIndicator.style.display = "none";
blockIndicator.innerHTML = "";
}
}
});
// Add tooltip listeners to the new elements
[...this.elem("#right-top").querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
// Update page metadata display
const metadataElem = this.elem("#page-metadata");
if (metadataElem) {
const parts = [];
if (edit.page.dateFormat && edit.page.dateFormat !== "Unknown") {
parts.push(edit.page.dateFormat);
}
if (edit.page.englishVariant && edit.page.englishVariant !== "Unknown") {
parts.push(edit.page.englishVariant);
}
metadataElem.innerHTML = parts.length > 0 ? parts.join(" • ") : "";
}
for (const cedit of edit.user.contribs) {
const current = cedit.revid === wikishield.queue.currentEdit.revid ? "queue-edit-current" : "";
contribsContainer.innerHTML += `
<div class="queue-edit ${current}" data-revid="${cedit.revid}">
${this.generateEditHTML(cedit, false, true, false, true)}
</div>
`;
}
for (const hedit of edit.page.history) {
const current = hedit.revid === wikishield.queue.currentEdit.revid ? "queue-edit-current" : "";
historyContainer.innerHTML += `
<div class="queue-edit ${current}" data-revid="${hedit.revid}">
${this.generateEditHTML(hedit, false, false, true, true)}
</div>
`;
}
[
...contribsContainer.querySelectorAll("[data-tooltip]"),
...historyContainer.querySelectorAll("[data-tooltip]")
].forEach(elem => this.addTooltipListener(elem));
[...contribsContainer.querySelectorAll(".queue-edit")].forEach(elem => {
elem.addEventListener("click", () => wikishield.queue.loadFromContribs(elem.dataset["revid"]));
});
[...historyContainer.querySelectorAll(".queue-edit")].forEach(elem => {
elem.addEventListener("click", () => wikishield.queue.loadFromHistory(elem.dataset["revid"]));
});
this.elem("#diff-container").innerHTML = `<table>${edit.diff}</table>`;
// Remove any existing old edit notice
const existingNotice = document.querySelector("#old-edit-notice");
if (existingNotice) {
existingNotice.remove();
}
// Show compact notice if not viewing the most recent edit
const isNewestEdit = wikishield.queue.queue.length > 0 &&
wikishield.queue.queue[0].revid === edit.revid;
if (!isNewestEdit && wikishield.queue.queue.length > 0) {
const newestEdit = wikishield.queue.queue[0];
const noticeDiv = document.createElement("div");
noticeDiv.id = "old-edit-notice";
noticeDiv.style.cssText = `
margin: 10px 10px 0 10px;
padding: 8px 12px;
background: #fff3cd;
border-left: 4px solid #ffc107;
border-radius: 4px;
color: #856404;
display: flex;
align-items: center;
gap: 8px;
font-size: 0.9em;
flex-shrink: 0;
`;
noticeDiv.innerHTML = `
<span class="fa fa-info-circle"></span>
<span style="flex: 1;">Viewing older edit</span>
<a href="#" id="view-newest-edit" style="color: #004085; font-weight: 600; text-decoration: none; white-space: nowrap;">
View latest →
</a>
`;
this.elem("#diff-container").parentElement.insertBefore(noticeDiv, this.elem("#diff-container"));
// Add click handler for the link
document.getElementById("view-newest-edit").addEventListener("click", (e) => {
e.preventDefault();
wikishield.queue.currentEdit = newestEdit;
wikishield.interface.renderQueue(wikishield.queue.queue, newestEdit);
});
// Update diff height after adding notice
this.updateDiffContainerHeight();
} else {
// Update diff height when no notice
this.updateDiffContainerHeight();
}
// Highlight elements containing current user's username in the diff
const currentUsername = mw.config.get("wgUserName");
if (currentUsername) {
const diffContainer = this.elem("#diff-container");
// Find all elements (typically td cells) in the diff
const allElements = diffContainer.querySelectorAll("td");
allElements.forEach(elem => {
if (elem.textContent.includes(currentUsername)) {
elem.style.outline = "2px solid #ffc107";
elem.style.outlineOffset = "-2px";
}
});
}
// Scroll to the first changed line in the diff
const diffContainer = this.elem("#diff-container");
const firstChange = diffContainer.querySelector(".diff-addedline, .diff-deletedline");
if (firstChange) {
// Use setTimeout to ensure the DOM is fully rendered before scrolling
setTimeout(() => {
firstChange.scrollIntoView({ behavior: "smooth", block: "center" });
}, 100);
}
// Display AI analysis if available
this.updateAIAnalysisDisplay(edit.aiAnalysis);
}
/**
* Update or create AI analysis display
* @param {Object} analysis The AI analysis object
*/
updateAIAnalysisDisplay(analysis) {
// Find or create AI analysis container
let aiContainer = document.querySelector("#ai-analysis-container");
if (!analysis) {
// Remove AI container if no analysis
if (aiContainer) {
aiContainer.remove();
}
this.updateDiffContainerHeight();
return;
}
if (!aiContainer) {
// Create container if it doesn't exist
const diffContainer = document.querySelector("#diff-container");
if (!diffContainer) return;
aiContainer = document.createElement("div");
aiContainer.id = "ai-analysis-container";
aiContainer.style.cssText = `
margin: 10px 10px 0 10px;
padding: 0;
border-radius: 8px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
overflow: auto;
flex-shrink: 0;
`;
diffContainer.parentElement.insertBefore(aiContainer, diffContainer);
}
if (analysis.error) {
aiContainer.innerHTML = `
<div style="display: flex; align-items: center; gap: 8px; padding: 12px;">
<span class="fa fa-exclamation-triangle"></span>
<span>AI analysis failed: ${analysis.error}</span>
</div>
`;
this.updateDiffContainerHeight();
return;
}
// Build issue badges
let issueHTML = '';
if (analysis.hasIssues && analysis.issues && analysis.issues.length > 0) {
const severityColors = {
'critical': '#dc3545',
'major': '#fd7e14',
'minor': '#ffc107'
};
const typeIcons = {
'vandalism': 'fa-skull-crossbones',
'spam': 'fa-spam',
'pov': 'fa-balance-scale',
'unsourced': 'fa-question-circle',
'attack': 'fa-bomb',
'copyright': 'fa-copyright',
'disruptive': 'fa-circle-exclamation',
'error': 'fa-bug',
'policy': 'fa-gavel',
'ai-generated': 'fa-robot'
};
issueHTML = '<div style="display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px;">';
for (const issue of analysis.issues.slice(0, 5)) {
const iconClass = typeIcons[issue.type] || 'fa-exclamation-circle';
const bgColor = severityColors[issue.severity] || '#6c757d';
issueHTML += `
<span style="
display: inline-flex;
align-items: center;
gap: 4px;
padding: 4px 8px;
background: ${bgColor};
border-radius: 4px;
font-size: 0.85em;
font-weight: 500;
" data-tooltip="${wikishield.util.escapeHtml(issue.description)}">
<span class="fa ${iconClass}"></span>
${issue.type}
</span>
`;
}
if (analysis.issues.length > 5) {
issueHTML += `<span style="opacity: 0.8;">+${analysis.issues.length - 5} more</span>`;
}
issueHTML += '</div>';
}
// Build recommendation/action badge
const actionColors = {
'rollback': '#dc3545',
'warn-and-revert': '#e74c3c',
'warn': '#fd7e14',
'report-uaa': '#9b59b6',
'report-aiv': '#8e44ad',
'review': '#ffc107',
'approve': '#28a745',
'thank': '#17a2b8',
'welcome': '#20c997'
};
const actionIcons = {
'rollback': 'fa-rotate-left',
'warn-and-revert': 'fa-exclamation-triangle',
'warn': 'fa-exclamation-triangle',
'report-uaa': 'fa-flag',
'report-aiv': 'fa-gavel',
'review': 'fa-eye',
'approve': 'fa-check-circle',
'thank': 'fa-heart',
'welcome': 'fa-hand-wave'
};
const action = analysis.action || 'review';
const actionColor = actionColors[action] || '#6c757d';
const actionIcon = actionIcons[action] || 'fa-question';
const probability = analysis.probability || 0;
aiContainer.innerHTML = `
<div style="padding: 12px;">
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 8px;">
<span class="fa fa-robot" style="font-size: 1.2em;"></span>
<strong>AI Analysis</strong>
<span style="
padding: 2px 8px;
background: rgba(255,255,255,0.2);
border-radius: 4px;
font-size: 0.85em;
">
${probability}% probability
</span>
<span style="
padding: 2px 8px;
background: rgba(255,255,255,0.15);
border-radius: 4px;
font-size: 0.85em;
">
${analysis.confidence || 'unknown'} confidence
</span>
<span style="
display: inline-flex;
align-items: center;
gap: 4px;
padding: 3px 8px;
background: ${actionColor};
border-radius: 4px;
font-size: 0.85em;
font-weight: 500;
margin-left: auto;
">
<span class="fa ${actionIcon}"></span>
${action.replace(/-/g, ' ')}
</span>
</div>
<div style="opacity: 0.95; font-size: 0.95em; margin-bottom: 4px;">
<strong>Summary:</strong> ${analysis.summary}
</div>
${analysis.reasoning ? `
<div style="opacity: 0.9; font-size: 0.85em; margin-bottom: 4px; padding: 6px; background: rgba(0,0,0,0.1); border-radius: 4px;">
<strong>🔍 Reasoning:</strong> ${analysis.reasoning}
</div>
` : ''}
<div style="opacity: 0.9; font-size: 0.9em; margin-bottom: 4px;">
<strong>Recommendation:</strong> ${analysis.recommendation}
</div>
${issueHTML}
</div>
`; // Add tooltip listeners to issue badges
aiContainer.querySelectorAll('[data-tooltip]').forEach(elem => {
this.addTooltipListener(elem);
});
// Update diff container height after AI analysis is displayed
this.updateDiffContainerHeight();
}
/**
* Dynamically adjust diff container height based on AI analysis and notices
*/
updateDiffContainerHeight() {
// Since we're using flexbox, we don't need to manually calculate height
// The diff-container will automatically fill available space
// This method is kept for potential future use or other adjustments
} /**
* Create a tooltip when an element is hovered over
* @param {HTMLElement} elem
*/
addTooltipListener(elem) {
elem.addEventListener("mouseenter", () => {
this.removeTooltips();
if (!elem.dataset.tooltip) {
return;
}
const tooltip = document.createElement("div");
tooltip.classList.add("tooltip");
// Check if tooltip content is HTML or plain text
if (elem.dataset.tooltipHtml === "true") {
tooltip.innerHTML = elem.dataset.tooltip;
} else {
tooltip.innerText = elem.dataset.tooltip;
}
document.body.appendChild(tooltip);
// Force a reflow to ensure dimensions are calculated
tooltip.offsetHeight;
const tooltipWidth = tooltip.getBoundingClientRect().width,
tooltipHeight = tooltip.getBoundingClientRect().height;
const elemBox = elem.getBoundingClientRect();
// Calculate center position for the tooltip
const centerLeft = (elemBox.left + elemBox.right - tooltipWidth) / 2;
const canFitRight = elemBox.right < window.innerWidth - tooltipWidth - 30;
const canFitLeft = elemBox.left > tooltipWidth + 30;
// Check if tooltip can fit centered AND if centered position is actually on screen
const canFitMiddle = centerLeft > 10 && centerLeft + tooltipWidth < window.innerWidth - 10;
const canFitTop = canFitMiddle && elemBox.top > tooltipHeight + 30;
const canFitBottom = canFitMiddle && elemBox.bottom < window.innerHeight - tooltipHeight - 30;
// Position the tooltip
if (canFitTop) {
tooltip.style.left = (elemBox.left + elemBox.right - tooltipWidth) / 2 + "px";
tooltip.style.top = (elemBox.top - tooltipHeight - 10) + "px";
} else if (canFitBottom) {
tooltip.style.left = (elemBox.left + elemBox.right - tooltipWidth) / 2 + "px";
tooltip.style.top = (elemBox.bottom + 10) + "px";
} else if (canFitRight) {
tooltip.style.left = (elemBox.right + 10) + "px";
tooltip.style.top = (elemBox.top - 4) + "px";
} else if (canFitLeft) {
tooltip.style.left = (elemBox.left - 10 - tooltipWidth) + "px";
tooltip.style.top = (elemBox.top - 4) + "px";
} else {
// Fallback: center on element, clip if necessary
tooltip.style.left = Math.max(10, (elemBox.left + elemBox.right - tooltipWidth) / 2) + "px";
tooltip.style.top = Math.max(10, elemBox.bottom + 10) + "px";
}
tooltip.style.opacity = 1;
});
elem.addEventListener("mouseleave", () => {
this.removeTooltips();
});
}
/**
* Delete all existing tooltip elements
*/
removeTooltips() {
[...document.querySelectorAll(".tooltip")].forEach(elem => {
elem.style.opacity = 0;
window.setTimeout(() => elem.remove(), 200);
});
}
/**
* Remove all elements from the queue
*/
clearQueue() {
this.elem("#queue-items").innerHTML = "";
}
/**
* Remove a specific item from the queue
* @param {Number} revid
*/
removeQueueItem(revid) {
const elem = this.elem(`.queue-edit[data-revid="${revid}"]`);
if (elem) {
elem.remove();
}
}
/**
* From the ORES score, get the color to display
* @param {Number} ores The ORES score
* @returns {String} The color to display
*/
getORESColor(ores) {
const colors = wikishieldData.colorPalettes[wikishield.options.selectedPalette];
return colors[Math.floor(ores * colors.length)];
}
/**
* Return a specific element
* @param {String} selector
* @returns
*/
elem(selector) {
return document.querySelector(selector);
}
/**
* Escape HTML to prevent XSS
*/
escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
/**
* Show a toast notification on screen
* @param {String} title - Title of the notification
* @param {String} message - Message content
* @param {Number} duration - How long to show (ms), default 5000
*/
showToast(title, message, duration = 5000) {
// Create toast element
const toast = document.createElement("div");
toast.classList.add("toast-notification");
toast.innerHTML = `
<div class="toast-icon">⚠️</div>
<div class="toast-content">
<div class="toast-title">${this.escapeHtml(title)}</div>
<div class="toast-message">${this.escapeHtml(message)}</div>
</div>
<div class="toast-close">×</div>
`;
document.body.appendChild(toast);
// Trigger animation
setTimeout(() => toast.classList.add("show"), 10);
// Close button handler
const closeBtn = toast.querySelector(".toast-close");
closeBtn.addEventListener("click", () => {
this.hideToast(toast);
});
// Auto-hide after duration
setTimeout(() => {
this.hideToast(toast);
}, duration);
}
/**
* Hide and remove a toast notification
*/
hideToast(toast) {
if (!toast || !toast.parentElement) return;
toast.classList.add("hide");
setTimeout(() => {
if (toast.parentElement) {
toast.remove();
}
}, 300);
}
/**
* Show UAA reason selection dialog
* @param {String} username - Username to report
* @returns {Promise<String|null>} Selected reason or null if cancelled
*/
showUAAReasonDialog(username) {
return new Promise((resolve) => {
// Create overlay
const overlay = document.createElement("div");
overlay.classList.add("confirmation-modal-overlay");
// Create modal
const modal = document.createElement("div");
modal.classList.add("confirmation-modal");
modal.innerHTML = `
<div class="confirmation-modal-header">
<div class="confirmation-modal-title">Report to UAA</div>
</div>
<div class="confirmation-modal-body">
Select reason for reporting <span class="confirmation-modal-username">${this.escapeHtml(username)}</span>:
</div>
<div class="confirmation-modal-footer confirmation-modal-footer-vertical">
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Disruptive username">Disruptive username</button>
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Offensive username">Offensive username</button>
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Promotional username">Promotional username</button>
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Misleading username">Misleading username</button>
<button class="confirmation-modal-button confirmation-modal-button-cancel">Cancel</button>
</div>
`;
overlay.appendChild(modal);
document.body.appendChild(overlay);
// Disable all keybinds while modal is open
const keyHandler = (e) => {
if (e.key === "Escape") {
e.preventDefault();
e.stopPropagation();
closeModal(null);
return false;
} else if (e.key !== "Tab") {
e.preventDefault();
e.stopPropagation();
return false;
}
};
document.addEventListener("keydown", keyHandler, true);
const closeModal = (result) => {
document.removeEventListener("keydown", keyHandler, true);
overlay.classList.add("closing");
modal.classList.add("closing");
setTimeout(() => {
overlay.remove();
resolve(result);
}, 200);
};
// Handle reason button clicks
modal.querySelectorAll(".confirmation-modal-button-reason").forEach(btn => {
btn.addEventListener("click", () => {
closeModal(btn.dataset.reason);
});
});
// Handle cancel button
modal.querySelector(".confirmation-modal-button-cancel").addEventListener("click", () => {
closeModal(null);
});
// Close on overlay click
overlay.addEventListener("click", (e) => {
if (e.target === overlay) {
closeModal(null);
}
});
});
}
/**
* Show a confirmation dialog and return a promise that resolves to true (Yes) or false (No)
* @param {String} title - Dialog title
* @param {String} message - Dialog message (can include HTML)
* @param {String} username - Optional username to enable UAA report button
*/
showConfirmationDialog(title, message, username = null) {
return new Promise((resolve) => {
// Create overlay
const overlay = document.createElement("div");
overlay.classList.add("confirmation-modal-overlay");
// Create modal
const modal = document.createElement("div");
modal.classList.add("confirmation-modal");
const uaaButton = username ? `<button class="confirmation-modal-button confirmation-modal-button-uaa">Report to UAA</button>` : '';
modal.innerHTML = `
<div class="confirmation-modal-header">
<div class="confirmation-modal-title">${this.escapeHtml(title)}</div>
</div>
<div class="confirmation-modal-body">${message}</div>
<div class="confirmation-modal-footer">
${uaaButton}
<div class="confirmation-modal-footer-right">
<button class="confirmation-modal-button confirmation-modal-button-no">No</button>
<button class="confirmation-modal-button confirmation-modal-button-yes">Yes</button>
</div>
</div>
`;
overlay.appendChild(modal);
document.body.appendChild(overlay);
// Disable all keybinds while modal is open
const keyHandler = (e) => {
// Only allow Tab, Enter, Escape
if (e.key === "Enter") {
e.preventDefault();
e.stopPropagation();
closeModal(true);
return false;
} else if (e.key === "Escape") {
e.preventDefault();
e.stopPropagation();
closeModal(false);
return false;
} else if (e.key !== "Tab") {
// Block all other keys
e.preventDefault();
e.stopPropagation();
return false;
}
};
document.addEventListener("keydown", keyHandler, true);
// Handle button clicks
const yesBtn = modal.querySelector(".confirmation-modal-button-yes");
const noBtn = modal.querySelector(".confirmation-modal-button-no");
const uaaBtn = modal.querySelector(".confirmation-modal-button-uaa");
const closeModal = (result) => {
// Remove key handler
document.removeEventListener("keydown", keyHandler, true);
overlay.classList.add("closing");
modal.classList.add("closing");
setTimeout(() => {
overlay.remove();
resolve(result);
}, 200);
};
yesBtn.addEventListener("click", () => closeModal(true));
noBtn.addEventListener("click", () => closeModal(false));
// UAA report button
if (uaaBtn && username) {
uaaBtn.addEventListener("click", async () => {
// Close the current modal first
document.removeEventListener("keydown", keyHandler, true);
overlay.classList.add("closing");
modal.classList.add("closing");
setTimeout(async () => {
overlay.remove();
// Show UAA reason selection dialog
const reason = await this.showUAAReasonDialog(username);
if (reason) {
// User selected a reason, proceed with report
const progressBar = new wikishieldProgressBar();
progressBar.set("Reporting to UAA...", 0.5, "var(--main-blue)");
try {
await wikishield.reportToUAA(username, reason);
progressBar.set(`Reported ${username} to UAA`, 1, "var(--main-green)");
} catch (err) {
progressBar.set("Report failed", 1, "var(--main-red)");
console.error("UAA report error:", err);
}
resolve(false);
} else {
// User cancelled, show the welcome dialog again
const confirmed = await this.showConfirmationDialog(title, message, username);
resolve(confirmed);
}
}, 200);
});
}
// Close on overlay click
overlay.addEventListener("click", (e) => {
if (e.target === overlay) {
closeModal(false);
}
});
// Focus the Yes button by default
setTimeout(() => yesBtn.focus(), 50);
});
}
}
class wikishieldProgressBar {
constructor() {
this.element = document.createElement("div");
this.element.className = "progress-bar"; this.overlay = document.createElement("div");
this.overlay.className = "progress-bar-overlay";
this.text = document.createElement("div");
this.text.className = "progress-bar-text";
wikishield.interface.elem("#progress-bar-container").appendChild(this.element);
this.element.appendChild(this.overlay);
this.element.appendChild(this.text);
this.nextChangeTime = 0;
}
/**
* Set the progress bar's text, width, and color; remove after 2s if at 100%
* @param {String} text The text to display
* @param {Number} width The width of the progress bar
* @param {String} color The color of the progress bar
*/
set(text, width, color) {
const delay = Math.max(0, this.nextChangeTime - new Date().getTime());
window.setTimeout(() => {
this.text.innerHTML = text;
this.overlay.style.width = `${Math.round(width * 100)}%`;
this.overlay.style.background = color;
if (width === 1) {
this.remove(2000);
}
}, delay);
this.nextChangeTime = Math.max(new Date().getTime() + 200, this.nextChangeTime + 200);
}
/**
* Remove the progress bar after a given time
* @param {Number} time The time to wait before removing the progress bar
*/
remove(time) {
window.setTimeout(() => {
this.element.style.opacity = "0";
}, time - 300);
window.setTimeout(() => {
this.element.remove();
}, time);
}
}
// </nowiki>
// <nowiki>
class WikiShield {
constructor() {
this.options = this.loadOptions();
this.statistics = this.loadStats();
this.interface = new wikishieldInterface();
this.queue = new wikishieldQueue();
this.api = new wikishieldAPI(new mw.Api());
this.logger = new wikishieldLog();
this.util = new wikishieldUtil();
this.whitelist = new Set();
this.highlighted = new Set();
this.noAutoWelcomeList = new Set(); // Track users who shouldn't be auto-welcomed
// Initialize Ollama AI if enabled (preserves last saved state)
this.ollamaAI = null;
if (this.options.enableOllamaAI) {
this.ollamaAI = new wikishieldOllamaAI(
this.options.ollamaServerUrl,
this.options.ollamaModel
);
this.logger.log("Ollama AI integration enabled");
}
this.aivReports = [];
this.uaaReports = [];
this.rights = {
rollback: false,
protect: false,
block: false
};
this.username = mw.config.values.wgUserName;
this.handleLoadingReported();
this.handleLoadingNotifications();
this.testingMode = false;
this.tempCurrentEdit = null;
this.notifications = [];
this.lastSeenRevision = null;
}
/**
* Create the interface for checking if the user is allowed to use wikishield
*/
async startInterface() {
const userRights = await mw.user.getRights();
this.rights.rollback = userRights.includes("rollback");
this.rights.protect = userRights.includes("protect");
this.rights.block = userRights.includes("block");
this.interface.build();
this.handleUpdatingContributions();
}
/**
* Fetch and display the current user's total contribution count
*/
async updateMyContributions() {
try {
const result = await this.api.api.get({
action: "query",
list: "users",
ususers: this.username,
usprop: "editcount"
});
if (result.query && result.query.users && result.query.users[0]) {
const editCount = result.query.users[0].editcount || 0;
const statElem = document.querySelector("#stat-total-contribs");
if (statElem) {
statElem.textContent = editCount.toLocaleString();
}
}
} catch (err) {
console.log("Failed to fetch user contribution count:", err);
}
}
/**
* Start periodic updates of contribution count every 10 seconds
*/
handleUpdatingContributions() {
this.updateMyContributions();
window.setTimeout(() => {
this.handleUpdatingContributions();
}, 10000); // Update every 10 seconds
}
/**
* Create the main interface
*/
start() {
this.interface.start();
this.queue.fetchRecentChanges();
}
/**
* Load options from storage; if an option is missing, add it with the default value
* @returns {Object} The options object
*/
loadOptions() {
let options = {};
try {
options = JSON.parse(mw.storage.store.getItem("wikishieldSettings"));
} catch (err) {}
if (!options) {
options = {};
}
for (const item in wikishieldData.defaultSettings) {
if (typeof options[item] === "undefined") {
options[item] = wikishieldData.defaultSettings[item];
}
if (typeof options[item] === "object") {
for (const subitem in wikishieldData.defaultSettings[item]) {
if (typeof options[item][subitem] === "undefined") {
options[item][subitem] = wikishieldData.defaultSettings[item][subitem];
}
}
}
}
for (const item in options.controls) {
if (typeof options.controls[item] === "string") {
options.controls[item] = [options.controls[item]];
}
for (let i = 0; i < options.controls[item].length; i++) {
options.controls[item][i] = options.controls[item][i].toLowerCase();
}
}
this.saveOptions(options);
return options;
}
/**
* Save options to storage
* @param {Object} options The options object
*/
saveOptions(options) {
mw.storage.store.setItem("wikishieldSettings", JSON.stringify(options));
}
/**
* Load the changelog version from storage
* @returns {String} The changelog version
*/
getChangelogVersion() {
const version = mw.storage.store.getItem("wikishieldChangelogVersion");
if (!version) {
mw.storage.store.setItem("wikishieldChangelogVersion", 0);
return 0;
}
return version;
}
/**
* Update changelog version to hide popup
*/
updateChangelogVersion() {
mw.storage.store.setItem("wikishieldChangelogVersion", wikishieldChangelogVersion);
}
/**
* Load statistics from storage
* @returns {Object} The statistics object
*/
loadStats() {
let stats;
try {
stats = JSON.parse(mw.storage.store.getItem("wikishieldStats"));
} catch (err) {}
if (!stats) {
stats = { reviewed: 0, reverts: 0, reports: 0 };
}
this.saveStats(stats);
return stats;
}
/**
* Save statistics to storage
* @param {Object} stats The statistics object
*/
saveStats(stats) {
mw.storage.store.setItem("wikishieldStats", JSON.stringify(stats));
}
/**
* Revert an edit, using either rollback or manual reverting
* @param {Object} edit The edit object
* @param {String} message Message to use in the edit summary
*/
async revert(edit, message, goodFaith=false) {
if (!edit) {
return;
}
const gfStr = goodFaith ? "[[WP:AGF|good faith]] " : "";
const summary = `Reverted ${gfStr}edits by [[Special:Contributions/${edit.user.name}|${edit.user.name}]] ([[User talk:${edit.user.name}|talk]])${message ? ": " + message : ""} ([[WP:WikiShield|WikiShield]])`;
if (this.rights.rollback) {
const result = await this.api.rollback(edit.page.title, edit.user.name, summary);
if (!result) {
// Rollback failed - show toast notification
this.interface.showToast(
"Revert Failed",
`Could not revert edits on "${edit.page.title}" - a newer edit may have been made`
);
return false;
}
} else {
return false;
}
this.statistics.reverts++;
this.saveStats(this.statistics);
// Update contribution count after successful revert
this.updateMyContributions();
}
/**
* Warn a user with the given template
* @param {String} user The username to warn
* @param {String[]} warningTemplates The warning template set to use
* @param {String|Number} warnLevel Level of warning to use; 1-5 or "auto"
* @param {String} articleName The article name to use in the warning
* @param {Number} revid Edit revid to use in edit summary
*/
async warnUser(user, warningTemplates, warnLevel, articleName, revid) {
if (!warningTemplates) {
return;
}
let userTalkContent = await this.api.getSinglePageContent(`User talk:${user}`);
let warnTemplate = "";
// Handle manual level selection (not "auto")
if (warnLevel !== "auto") {
if (warnLevel === "4im") {
// 4im is the 5th template (index 4)
if (warningTemplates.length >= 5) {
warnTemplate = warningTemplates[4];
} else {
// If no 4im template exists, use the last available template
warnTemplate = warningTemplates[warningTemplates.length - 1];
}
} else if (warnLevel > 0 && warnLevel <= warningTemplates.length) {
// Standard numbered level (1-4)
warnTemplate = warningTemplates[warnLevel - 1];
}
}
// Handle auto level selection
if (warnLevel === "auto") {
const warningLevel = this.queue.getWarningLevel(userTalkContent);
const levelAsNumber = warningLevel === "4im" ? 5 : Number(warningLevel);
if (warningLevel === "4" || warningLevel === "4im" || levelAsNumber >= warningTemplates.length) {
return;
}
warnTemplate = warningTemplates[levelAsNumber];
}
if (!warnTemplate) {
return;
}
if (!userTalkContent.match("== ?" + wikishield.util.monthSectionName() + " ?==")) {
userTalkContent += `\n== ${wikishield.util.monthSectionName()} ==\n`;
}
const sections = userTalkContent.split(/(?=== ?[\w\d ]+ ?==)/g);
for (let section in sections) {
if (sections[section].match(new RegExp("== ?" + wikishield.util.monthSectionName() + " ?=="))) {
// If articleName is null, template doesn't take a parameter
if (articleName) {
sections[section] += `\n\n{{${warnTemplate}|${articleName}}} ~~~~`;
} else {
sections[section] += `\n\n{{${warnTemplate}}} ~~~~`;
}
break;
}
}
const newContent = sections.join("")
.replace(/(\n){3,}/g, "\n\n");
const levelMatch = warnTemplate.match(/(\d(?:im)?)$/);
const levelName = levelMatch ? levelMatch[1] : null;
// Create edit summary based on whether article name is provided
const editSummary = articleName
? (levelName
? `Message about [[Special:Diff/${revid}|your edit]] on [[${articleName}]] (level ${levelName}) ([[WP:WikiShield|WikiShield]])`
: `Message about [[Special:Diff/${revid}|your edit]] on [[${articleName}]] ([[WP:WikiShield|WikiShield]])`)
: (levelName
? `Message about your edits (level ${levelName}) ([[WP:WikiShield|WikiShield]])`
: `Message about your edits ([[WP:WikiShield|WikiShield]])`);
await this.api.edit(
`User talk:${user}`,
newContent,
editSummary
);
// Add user talk page to watchlist with configured expiry
try {
await this.api.postWithToken("watch", {
"action": "watch",
"titles": `User talk:${user}`,
"expiry": wikishield.options.watchlistExpiry
});
} catch (err) {
console.log(`Could not add User talk:${user} to watchlist:`, err);
}
// Update the warning level in the current edit object (only if the template has a numbered level)
if (levelName && this.queue.currentEdit && this.queue.currentEdit.user.name === user) {
console.log(`[warnUser] Updating warning level for ${user} from ${this.queue.currentEdit.user.warningLevel} to ${levelName}`);
console.log(`[warnUser] Original warning level: ${this.queue.currentEdit.user.originalWarningLevel}`);
this.queue.currentEdit.user.warningLevel = levelName;
}
}
/**
* Load the users currently reported to AIV and UAA
*/
async loadReportedUsers() {
try {
const content = await this.api.getText(`${AIVNAME}|${UAANAME}`);
const regex = new RegExp(`{{(?:(?:ip)?vandal|user-uaa)\\|(?:1=)?(.+?)}}`, "gi");
this.aivReports = [...content[AIVNAME].matchAll(regex)]
.map(report => report[1]);
this.uaaReports = [...content[UAANAME].matchAll(regex)]
.map(report => report[1]);
} catch (err) {
console.log("Error while fetching reported users", err);
}
}
/**
* Every 15 seconds, call loadReportedUsers
*/
async handleLoadingReported() {
await this.loadReportedUsers();
window.setTimeout(() => {
this.handleLoadingReported();
}, 15000);
}
/**
* Load notifications from Wikipedia
*/
async loadNotifications() {
try {
// Fetch both Echo notifications (alerts and notices) and talk page edits
const [alertsResponse, noticesResponse, talkResponse] = await Promise.all([
// Get Echo alert notifications (mentions, thanks, page links, etc.)
this.api.api.get({
action: "query",
meta: "notifications",
notlimit: 20,
notprop: "list",
notfilter: "!read",
notsections: "alert"
}),
// Get Echo notice notifications (user rights, thanks, etc.)
this.api.api.get({
action: "query",
meta: "notifications",
notlimit: 20,
notprop: "list",
notfilter: "!read",
notsections: "message"
}),
// Get talk page edits
this.api.api.get({
action: "query",
prop: "revisions",
titles: `User talk:${this.username}`,
rvlimit: 10,
rvprop: "timestamp|user|comment|ids",
rvdir: "older"
})
]);
const notifications = [];
// Process Echo alert notifications
if (alertsResponse.query?.notifications?.list) {
const alertList = Object.values(alertsResponse.query.notifications.list);
for (const notif of alertList) {
// MediaWiki timestamps are in format: YYYYMMDDHHMMSS
let timestamp = notif.timestamp?.mw || notif.timestamp?.utcmw;
if (timestamp && typeof timestamp === 'string' && timestamp.length === 14) {
// Convert YYYYMMDDHHMMSS to ISO format
timestamp = `${timestamp.slice(0,4)}-${timestamp.slice(4,6)}-${timestamp.slice(6,8)}T${timestamp.slice(8,10)}:${timestamp.slice(10,12)}:${timestamp.slice(12,14)}Z`;
} else {
timestamp = new Date().toISOString();
}
// Get notification type display name
let categoryLabel = "Alert";
if (notif.type === "mention" || notif.type === "mention-success") {
categoryLabel = "Mention";
} else if (notif.type === "thank-you-edit") {
categoryLabel = "Thanks";
} else if (notif.type === "page-linked") {
categoryLabel = "Page Link";
} else if (notif.type === "reverted") {
categoryLabel = "Revert";
} else if (notif.type === "edit-user-talk") {
categoryLabel = "Talk";
}
notifications.push({
id: `alert-${notif.id}`,
type: "alert",
subtype: notif.type,
timestamp: timestamp,
title: notif.title?.full || "Unknown page",
agent: notif.agent?.name || "Someone",
category: categoryLabel,
read: false
});
}
}
// Process Echo notice notifications
if (noticesResponse.query?.notifications?.list) {
const noticeList = Object.values(noticesResponse.query.notifications.list);
for (const notif of noticeList) {
// MediaWiki timestamps are in format: YYYYMMDDHHMMSS
let timestamp = notif.timestamp?.mw || notif.timestamp?.utcmw;
if (timestamp && typeof timestamp === 'string' && timestamp.length === 14) {
// Convert YYYYMMDDHHMMSS to ISO format
timestamp = `${timestamp.slice(0,4)}-${timestamp.slice(4,6)}-${timestamp.slice(6,8)}T${timestamp.slice(8,10)}:${timestamp.slice(10,12)}:${timestamp.slice(12,14)}Z`;
} else {
timestamp = new Date().toISOString();
}
let categoryLabel = "Notice";
if (notif.type === "user-rights") {
categoryLabel = "User Rights";
} else if (notif.type === "emailuser") {
categoryLabel = "Email";
}
notifications.push({
id: `notice-${notif.id}`,
type: "notice",
subtype: notif.type,
timestamp: timestamp,
title: notif.title?.full || "Notification",
agent: notif.agent?.name || "System",
category: categoryLabel,
read: false
});
}
}
// Process talk page edits
const pages = talkResponse.query?.pages;
if (pages) {
const page = Object.values(pages)[0];
const revisions = page.revisions || [];
// Check if we have stored the last seen revision
if (!this.lastSeenRevision) {
// First load - just store the latest revision
if (revisions.length > 0) {
this.lastSeenRevision = revisions[0].revid;
}
} else {
// Find new revisions since last check
for (const rev of revisions) {
if (rev.revid > this.lastSeenRevision) {
// Skip self-edits
if (rev.user !== this.username) {
notifications.push({
id: `talk-${rev.revid}`,
type: "talk",
revid: rev.revid,
user: rev.user,
comment: rev.comment || "Edit to your talk page",
timestamp: rev.timestamp,
read: false
});
}
} else {
break;
}
}
// Update last seen revision
if (revisions.length > 0) {
this.lastSeenRevision = Math.max(this.lastSeenRevision, revisions[0].revid);
}
}
}
// Merge with existing notifications and remove duplicates
let hasNewNotifications = false;
for (const newNotif of notifications) {
const existingNotif = this.notifications.find(n => n.id === newNotif.id);
if (!existingNotif) {
this.notifications.unshift(newNotif);
hasNewNotifications = true;
}
}
// Play sound if there are new notifications
if (hasNewNotifications && this.notifications.length > 0) {
wikishield.queue.playNotificationSound();
}
// Sort by timestamp
this.notifications.sort((a, b) => {
const timeA = new Date(a.timestamp);
const timeB = new Date(b.timestamp);
return timeB - timeA;
});
// Keep only last 25 notifications
if (this.notifications.length > 25) {
this.notifications = this.notifications.slice(0, 25);
}
this.updateNotificationDisplay();
} catch (err) {
console.log("Error while fetching notifications", err);
}
}
/**
* Every 10 seconds, call loadNotifications
*/
async handleLoadingNotifications() {
await this.loadNotifications();
window.setTimeout(() => {
this.handleLoadingNotifications();
}, 10000);
}
/**
* Update the notification count and list display
*/
updateNotificationDisplay() {
const unreadCount = this.notifications.filter(n => !n.read).length;
const countElem = document.querySelector("#notification-count");
const listElem = document.querySelector("#notifications-list");
// Check if elements exist (UI might not be ready yet)
if (!countElem || !listElem) {
return;
}
if (unreadCount > 0) {
countElem.textContent = unreadCount > 9 ? "9+" : unreadCount;
countElem.style.display = "block";
} else {
countElem.style.display = "none";
}
// Update list
if (listElem) {
if (this.notifications.length === 0) {
listElem.innerHTML = '<div style="padding: 20px; text-align: center; color: #666;">No new notifications</div>';
} else {
listElem.innerHTML = this.notifications.map(notif => {
// Parse timestamp
const time = new Date(notif.timestamp);
const timeStr = this.formatNotificationTime(time);
let title, subtitle, typeLabel, clickData;
if (notif.type === "alert") {
// Echo alert notification (mentions, thanks, page links, etc.)
typeLabel = notif.category || "Alert";
if (notif.subtype === "mention" || notif.subtype === "mention-success") {
title = `${notif.agent} mentioned you`;
subtitle = `on ${notif.title}`;
} else if (notif.subtype === "thank-you-edit") {
title = `${notif.agent} thanked you`;
subtitle = `for your edit on ${notif.title}`;
} else if (notif.subtype === "page-linked") {
title = `Your page was linked`;
subtitle = `from ${notif.title}`;
} else if (notif.subtype === "reverted") {
title = `${notif.agent} reverted your edit`;
subtitle = `on ${notif.title}`;
} else if (notif.subtype === "edit-user-talk") {
title = `${notif.agent} edited your talk page`;
subtitle = notif.title;
} else if (notif.subtype === "emailuser") {
title = `${notif.agent} sent you an email`;
subtitle = notif.title;
} else if (notif.subtype === "foreign") {
title = `Alert from ${notif.agent}`;
subtitle = notif.title;
} else {
// Generic alert with more context
title = `Alert: ${notif.subtype || 'notification'}`;
subtitle = `${notif.agent} - ${notif.title}`;
}
clickData = `data-page="${this.escapeHtml(notif.title)}"`;
} else if (notif.type === "notice") {
// Echo notice notification (user rights, etc.)
typeLabel = notif.category || "Notice";
if (notif.subtype === "user-rights") {
title = `Your user rights were changed`;
subtitle = notif.title;
} else if (notif.subtype === "emailuser") {
title = `Email notification`;
subtitle = notif.title;
} else if (notif.subtype === "flow-discussion") {
title = `New discussion activity`;
subtitle = notif.title;
} else {
// Generic notice with more context
title = `Notice: ${notif.subtype || 'system notification'}`;
subtitle = `${notif.agent} - ${notif.title}`;
}
clickData = `data-page="${this.escapeHtml(notif.title)}"`;
} else {
// Talk page edit notification
typeLabel = "Talk Page";
title = `${notif.user} edited your talk page`;
subtitle = notif.comment || "No edit summary";
clickData = `data-revid="${notif.revid}"`;
}
const readClass = notif.read ? "" : "unread";
return `
<div class="notification-item ${readClass}" data-notif-id="${notif.id}" data-notif-type="${notif.type}" ${clickData}>
<div class="notification-header">
<span class="notification-type">${typeLabel}</span>
<span class="notification-time">${timeStr}</span>
</div>
<div class="notification-title">${this.escapeHtml(title)}</div>
${subtitle ? `<div class="notification-subtitle">${this.escapeHtml(subtitle)}</div>` : ''}
</div>
`;
}).join("");
// Add click handlers
listElem.querySelectorAll(".notification-item").forEach(item => {
item.addEventListener("click", () => {
const notifId = item.dataset.notifId;
const notifType = item.dataset.notifType;
this.markNotificationRead(notifId);
if (notifType === "alert" || notifType === "notice") {
// Open the page for Echo notifications
const page = item.dataset.page;
if (page) {
window.open(mw.util.getUrl(page), "_blank");
}
} else {
// Open the diff for talk page edit
const revid = item.dataset.revid;
if (revid) {
window.open(mw.util.getUrl(`Special:Diff/${revid}`), "_blank");
}
}
});
});
}
}
}
/**
* Add a local notification (not from Wikipedia API)
*/
addLocalNotification(config) {
const notification = {
id: `local-${Date.now()}-${Math.random()}`,
type: config.type || "info",
title: config.title || "Notification",
subtitle: config.subtitle || "",
page: config.page || "",
timestamp: new Date().toISOString(),
read: false
};
this.notifications.unshift(notification);
this.updateNotificationDisplay();
}
/**
* Escape HTML to prevent XSS
*/
escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
/**
* Format notification timestamp as relative time
*/
formatNotificationTime(date) {
const now = new Date();
const diff = Math.floor((now - date) / 1000); // seconds
// Handle future timestamps (clock skew)
if (diff < 0) return "Just now";
if (diff < 60) return "Just now";
if (diff < 3600) {
const mins = Math.floor(diff / 60);
return `${mins} min${mins !== 1 ? 's' : ''} ago`;
}
if (diff < 86400) {
const hours = Math.floor(diff / 3600);
return `${hours} hour${hours !== 1 ? 's' : ''} ago`;
}
if (diff < 604800) {
const days = Math.floor(diff / 86400);
return `${days} day${days !== 1 ? 's' : ''} ago`;
}
return date.toLocaleDateString();
}
/**
* Mark a notification as read
*/
markNotificationRead(notifId) {
const notif = this.notifications.find(n => n.id === notifId);
if (notif) {
notif.read = true;
}
this.updateNotificationDisplay();
}
/**
* Mark all notifications as read
*/
markAllNotificationsRead() {
this.notifications.forEach(n => n.read = true);
this.updateNotificationDisplay();
}
/**
* Check if a user is reported to AIV
* @param {String} name The username to check
* @param {Boolean} recheck Whether to recheck the reports
* @returns {Promise<Boolean>} Whether the user is reported to AIV
*/
async userReportedToAiv(name, recheck=true) {
if (recheck) {
await this.loadReportedUsers();
}
return this.aivReports.some((report) => report.toLowerCase() === name.toLowerCase());
}
/**
* Check if a user is reported to UAA
* @param {String} name The username to check
* @param {Boolean} recheck Whether to recheck the reports
* @returns {Promise<Boolean>} Whether the user is reported to UAA
*/
async userReportedToUaa(name, recheck=true) {
if (recheck) {
await this.loadReportedUsers();
}
return this.uaaReports.some((report) => report.toLowerCase() === name.toLowerCase());
}
/**
* Check if a user is one of your mentees
* @param {String} username The username to check
* @returns {Promise<Boolean>} Whether the user is your mentee
*/
async checkIfMentee(username) {
try {
// First, try to get the list of mentees using the Growth API
const response = await this.api.get({
"action": "query",
"list": "growthmentees",
"geminactive": "false",
"format": "json"
});
console.log("Mentee check response:", response);
if (response && response.query && response.query.growthmentees) {
const mentees = response.query.growthmentees;
const isMentee = mentees.some(mentee => mentee.name === username);
console.log(`Is ${username} a mentee?`, isMentee);
return isMentee;
}
// Fallback: Check if the user has you as their mentor
const userInfoResponse = await this.api.get({
"action": "query",
"meta": "growthexperiments",
"format": "json"
});
console.log("Growth experiments response:", userInfoResponse);
return false;
} catch (err) {
console.log("Error while checking if mentee:", err);
return false;
}
}
/**
* Check if there is a welcome template on a user's talk page
* @param {String} name The username to check
* @param {String?} talkPageContent The talk page content, if already fetched
* @returns {Boolean} Whether the user has been welcomed
*/
async checkIfWelcomed(name, talkPageContent) {
try {
if (talkPageContent === null) {
talkPageContent = await this.api.getSinglePageContent(`User talk:${name}`);
}
// Check if the talk page exists (not if it's blank)
// If the page doesn't exist, talkPageContent will be an empty string
return talkPageContent !== "";
} catch (err) {
console.log("Error while checking if welcomed", err);
return true;
}
}
/**
* Give a user a welcome template, if not already given
* @param {String} name The user to welcome
* @param {String} template Which welcome template to use
*/
async welcomeUser(name, template) {
try {
const talkPageName = `User talk:${name}`;
const talkPageContent = await this.api.getSinglePageContent(talkPageName);
if (await this.checkIfWelcomed(name, talkPageContent)) {
return;
}
await this.api.edit(
talkPageName,
talkPageContent + `\n${wikishieldEventData.welcomeTemplates[template]}`,
"Welcome to Wikipedia! ([[WP:WikiShield|WikiShield]])"
); // Update all edits from this user to reflect that the talk page is no longer empty
// Update tempCurrentEdit if it exists (during script execution)
if (this.tempCurrentEdit && this.tempCurrentEdit.user && this.tempCurrentEdit.user.name === name) {
this.tempCurrentEdit.user.emptyTalkPage = false;
}
// Update currentEdit
if (this.queue.currentEdit && this.queue.currentEdit.user.name === name) {
this.queue.currentEdit.user.emptyTalkPage = false;
}
// Update all edits in the queue from this user
this.queue.queue.forEach(edit => {
if (edit.user && edit.user.name === name) {
edit.user.emptyTalkPage = false;
// Remove the existing DOM element so it gets re-rendered
const elem = document.querySelector(`.queue-edit[data-revid="${edit.revid}"]`);
if (elem) {
elem.remove();
}
}
});
// Re-render the queue to update the display
this.interface.renderQueue(this.queue.queue, this.queue.currentEdit);
} catch (err) {
console.log("Error while welcoming user", err);
}
}
/**
* Check if protection has already been requested at RFPP
* @param {String} title Page to check
* @returns {Promise<Boolean>} Whether there is an existing request
*/
async checkIfProtectionRequested(title) {
const rfppContent = await this.api.getSinglePageContent(RFPPNAME);
const pageRegex = new RegExp(`= ?${RegExp.escape(title)} ?=`, "i");
return rfppContent.match(pageRegex) !== null;
}
/**
* Add a new request for protection at RFPP
* @param {String} title Page to request protection for
* @param {String} level Semi, pending, extended, full
* @param {String} reason Reason for requesting protection
*/
async requestProtection(title, level, reason) {
if (await this.checkIfProtectionRequested(title)) {
return false;
}
await this.api.appendText(RFPPNAME, `
=== [[${title}]] ===
* {{pagelinks|${title}}}
'''${level}''': ${reason} ~~~~
`.replaceAll("\t", ""), `Requesting protection for [[${title}]] ([[WP:WikiShield|WikiShield]])`);
this.statistics.reports++;
this.saveStats(this.statistics);
}
/**
* Report a user to AIV
* @param {String} name The username to report
* @param {String} message The message to use in the report
*/
async reportToAIV(user, message) {
const blocked = await this.api.usersBlocked(user);
if (blocked[user]) {
return;
}
if (await this.userReportedToAiv(user)) {
return;
}
const content = `* {{vandal|${user}}} – ${message} ~~~~`;
await this.api.appendText(
AIVNAME,
content,
`Reporting [[Special:Contributions/${user}|${user}]] ([[WP:WikiShield|WikiShield]])`
);
this.statistics.reports++;
this.saveStats(this.statistics);
}
/**
* Report a user to UAA
* @param {String} name The username to report
* @param {String} message The message to use in the report
*/
async reportToUAA(user, message) {
const blocked = await this.api.usersBlocked(user);
if (blocked[user]) {
// already blocked
return;
}
if (await this.userReportedToUaa(user)) {
// already reported
return;
}
const content = `\n* {{user-uaa|${user}}} – ${message} ~~~~`;
await this.api.appendText(
UAANAME,
content,
`Reporting [[Special:Contributions/${user}|${user}]] ([[WP:WikiShield|WikiShield]])`
);
// Add user to no-auto-welcome list since they were reported to UAA
this.noAutoWelcomeList.add(user);
this.statistics.reports++;
this.saveStats(this.statistics);
}
/**
* Handle a keypress
* @param {KeyboardEvent} event The keypress event
*/
async keyPressed(event) {
if (this.interface.settings.isOpen) {
this.interface.settings.handleKeypress(event);
return;
}
if (document.activeElement.tagName.toLowerCase() === "input") {
return;
}
if (event.ctrlKey || event.altKey || event.metaKey) {
return;
}
if (event.key === " " && event.target === document.body) {
event.preventDefault();
}
// Open revert menu when up arrow is pressed
if (event.key.toLowerCase() === "arrowup") {
const revertMenuTitle = document.querySelector("#bottom-revert .bottom-tool-title");
if (revertMenuTitle) {
this.interface.selectedMenu = this.interface.selectedMenu === revertMenuTitle ? null : revertMenuTitle;
this.interface.selectedSubmenu = null;
this.interface.updateMenuElements();
}
event.preventDefault();
return;
}
if (!this.tempCurrentEdit) {
for (const script of this.options.controlScripts) {
if (script.keys.includes(event.key.toLowerCase())) {
await this.executeScript(script);
}
}
}
}
/**
* Execute a control script
* @param {Object} script
*/
async executeScript(script, hasContinuity=true, updateProgress=null) {
const base = updateProgress === null;
if (base && this.tempCurrentEdit) {
return;
}
if (base) {
const allScripts = [ script ];
let totalActions = 0;
while (allScripts.length > 0) {
const current = allScripts[0];
const willBeRun = (current["name"] && current["name"] === "if"
&& wikishieldEventData.conditions[current["condition"]].check(this.queue.currentEdit)) || !current["name"];
if (willBeRun) {
allScripts.push(...current["actions"]);
}
if (current["name"] && current["name"] !== "if"
&& this.interface.eventManager.events[current["name"]].includeInProgress) {
totalActions++;
}
allScripts.splice(0, 1);
}
if (totalActions > 0) {
let actionsCompleted = 0;
const progressBar = new wikishieldProgressBar();
updateProgress = (text) => {
const portion = text === "Done" ? 1 : actionsCompleted / totalActions;
progressBar.set(text, portion, "rgb(0, 170, 255)");
actionsCompleted++;
};
} else {
updateProgress = (_) => {};
}
this.tempCurrentEdit = this.queue.currentEdit || 1;
}
const ifAndTrue = script["name"] && script["name"] === "if"
&& wikishieldEventData.conditions[script["condition"]].check(this.tempCurrentEdit);
if (ifAndTrue || !script["name"]) {
for (const action of script["actions"]) {
if (action["name"] === "if") {
hasContinuity = this.executeScript(action, hasContinuity, updateProgress);
} else {
const event = this.interface.eventManager.events[action["name"]];
if (hasContinuity || !event["needsContinuity"]) {
if (event["includeInProgress"]) {
updateProgress(event["progressDesc"]);
}
if (this.tempCurrentEdit !== 1 || event.runWithoutEdit) {
const result = await event.func(action["params"]);
if (result === false) {
hasContinuity = false;
}
}
}
}
}
}
if (!script["name"]) {
updateProgress("Done");
}
if (base) {
this.tempCurrentEdit = null;
}
return hasContinuity;
}
}
// </nowiki>
// <nowiki>
let wikishield;
if (mw.config.get("wgRelevantPageName") === "Wikipedia:wikishield/run" && mw.config.get("wgAction") === "view") {
wikishield = new WikiShield();
wikishield.startInterface();
window.addEventListener("keydown", wikishield.keyPressed.bind(wikishield));
} else {
mw.util.addPortletLink(
'p-personal',
mw.util.getUrl('Wikipedia:wikishield/run'),
'wikishield',
'pt-wikishield',
'wikishield',
null,
'#pt-preferences'
);
// add link to sticky header for Vector2022
mw.util.addPortletLink(
'p-personal-sticky-header',
mw.util.getUrl('Wikipedia:wikishield/run'),
'wikishield',
'pt-wikishield',
'wikishield',
null,
'#pt-preferences'
);
}
// </nowiki>
hk2rny6g47hkvz9edlp0iln5nadzakw
619599
619597
2026-08-02T01:28:16Z
LuniZunie
25284
huh
619599
javascript
text/javascript
// <nowiki>
const wikishieldChangelogVersion = "3";
const wikishieldVersion = "2.0";
const wikishieldChangelog = `
<h1 class="settings-section-title">Changelog</h1>
<p>Welcome to 🛡️WikiShield 2.0! The script has been completely redesigned and rewritten, and includes a number of new features:</p>
<ul>
<li>Customize and edit controls using control scripts</li>
<li>Dark mode</li>
<li>Give welcome templates to users</li>
<li>Thank users for their edits</li>
<li>Request protection at RFPP</li>
<li>Whitelist and highlight users</li>
<li>...plus a large number of other minor features!</li>
</ul>
<p>Please note that if you have set custom controls, they have been reset. You can change this in your settings.</p>
<p>If you would like to continue to use the old version, you can change your common.js to use User:Ingenuity/WikiShieldLegacy.js.</p>
<p>Please report any bugs at <a target="_blank" href="https://en.wikipedia.org/wiki/Wikipedia_talk:WikiShield">Wikipedia talk:🛡️WikiShield</a>.</p>
`;
const AIVNAME = "Wikipedia:Administrator intervention against vandalism";
const UAANAME = "Wikipedia:Usernames for administrator attention";
const RFPPNAME = "Wikipedia:Requests for page protection/Increase";
const wikishieldData = {
defaultSettings: {
maxQueueSize: 50,
maxEditCount: 50,
minimumORESScore: 0,
soundAlertORESScore: 0.95,
enableSoundAlerts: false,
watchlistExpiry: "1 week",
wiki: "en",
namespacesShown: [
0, 2, 4, 6, 8, 10, 12, 14, 100, 118,
1, 3, 5, 7, 9, 11, 13, 15, 101, 119
],
refreshTime: 2000,
showIPs: true,
showUsers: true,
sortQueueItems: true,
enableOllamaAI: false,
ollamaServerUrl: "http://localhost:11434",
ollamaModel: "",
controlScripts: [
{
keys: ["arrowright"],
actions: [
{
name: "nextEdit",
params: {}
}
]
},
{
keys: [" "],
actions: [
{
name: "rollback",
params: {}
},
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{
name: "reportToAIV",
params: {
reportMessage: "Vandalism past final warning"
}
}
]
}
]
},
{
name: "warn",
params: {
warningType: "Vandalism",
level: "auto"
}
},
{
name: "highlight",
params: {}
},
{
name: "nextEdit",
params: {}
}
]
},
{
keys: ["arrowleft"],
actions: [
{
name: "prevEdit",
params: {}
}
]
},
{
keys: ["h"],
actions: [
{
name: "openHistory",
params: {}
}
]
},
{
keys: ["c"],
actions: [
{
name: "openUserContribs",
params: {}
}
]
}
],
selectedPalette: 0,
theme: "theme-light"
},
warningTemplateColors: {
"0": "grey",
"1": "#4169e1",
"2": "#ff8c00",
"3": "#ff4500",
"4": "#b22222",
"4im": "#000000"
},
colorPalettes: [
["#78c675", "#fdff7a", "#fcff54", "#fbff12", "#ffc619", "#ff8812", "#f56214", "#f73214", "#fc0303", "#fc0303"],
["#bfbfbf", "#ffd9d9", "#ffc9c9", "#ffb0b0", "#ff9797", "#ff7d7d", "#ff6464", "#ff4b4b", "#ff3131", "#ff1818"],
["#bfbfbf", "#d9ffd9", "#c9ffc9", "#b0ffb0", "#97ff97", "#7dff7d", "#64ff64", "#4bff4b", "#31ff31", "#18ff18"],
["#bfbfbf", "#d9d9ff", "#c9c9ff", "#b0b0ff", "#9797ff", "#7d7dff", "#6464ff", "#4b4bff", "#3131ff", "#1818ff"]
],
warnings: {
"Vandalism": {
templates: [
"subst:uw-vandalism1",
"subst:uw-vandalism2",
"subst:uw-vandalism3",
"subst:uw-vandalism4",
"subst:uw-vandalism4im"
],
label: "vandalism",
desc: "Default warning for vandalism."
},
"Subtle vandalism": {
templates: [
"subst:uw-subtle1",
"subst:uw-subtle2",
"subst:uw-subtle3",
"subst:uw-subtle4"
],
label: "subtle vandalism",
desc: "Warning for subtle vandalism that may not be immediately obvious."
},
"AI-generated content": {
templates: [
"subst:uw-ai1",
"subst:uw-ai2",
"subst:uw-ai3",
"subst:uw-ai4"
],
label: "adding [[WP:AIGEN|AI-generated content]]",
desc: "Warning for adding AI-generated content without disclosure."
},
"Disruption": {
templates: [
"subst:uw-disruptive1",
"subst:uw-disruptive2",
"subst:uw-disruptive3",
"subst:uw-generic4"
],
label: "[[WP:DE|disruptive editing]]",
desc: "Default warning for making disruptive edits (not always vandalism)"
},
"Deleting": {
templates: [
"subst:uw-delete1",
"subst:uw-delete2",
"subst:uw-delete3",
"subst:uw-delete4",
"subst:uw-delete4im"
],
label: "unexplained deletion",
desc: "Used when a user does not explain deletion of part of an article."
},
"Advertising": {
templates: [
"subst:uw-advert1",
"subst:uw-advert2",
"subst:uw-advert3",
"subst:uw-advert4",
"subst:uw-advert4im"
],
label: "[[WP:PROMO|advertising or promotion]]",
desc: "Adding promotional content to an article."
},
"Spam links": {
templates: [
"subst:uw-spam1",
"subst:uw-spam2",
"subst:uw-spam3",
"subst:uw-spam4",
"subst:uw-spam4im"
],
label: "adding [[WP:ELNO|inappropriate links]]",
desc: "Adding external links that could be considered spam."
},
"Unsourced": {
templates: [
"subst:uw-unsourced1",
"subst:uw-unsourced2",
"subst:uw-unsourced3",
"subst:uw-unsourced4"
],
label: "adding [[WP:CITE|unsourced content]]",
desc: "Adding unsourced, possibly defamatory, content to an article."
},
"Editing tests": {
templates: [
"subst:uw-test1",
"subst:uw-test2",
"subst:uw-test3",
"subst:uw-vandalism4"
],
label: "making editing tests",
desc: "Making editing tests to articles."
},
"Commentary": {
templates: [
"subst:uw-talkinarticle1",
"subst:uw-talkinarticle2",
"subst:uw-talkinarticle3",
"subst:uw-generic4"
],
label: "adding commentary",
desc: "Adding opinion or commentary to articles."
},
"POV": {
templates: [
"subst:uw-npov1",
"subst:uw-npov2",
"subst:uw-npov3",
"subst:uw-npov4"
],
label: "adding [[WP:NPOV|non-neutral content]]",
desc: "Adding content which violates the neutral point of view policy."
},
"Errors": {
templates: [
"subst:uw-error1",
"subst:uw-error2",
"subst:uw-error3",
"subst:uw-error4"
],
label: "adding deliberate errors to articles",
desc: "Adding deliberate errors to articles."
},
"Owning": {
templates: [
"subst:uw-own1",
"subst:uw-own2",
"subst:uw-own3",
"subst:uw-own4"
],
label: "assuming [[WP:OWN|ownership of articles]]",
desc: "Assuming ownership of articles."
},
"Unsourced (BLP)": {
templates: [
"subst:uw-biog1",
"subst:uw-biog2",
"subst:uw-biog3",
"subst:uw-biog4",
"subst:uw-biog4im"
],
label: "adding unsourced content to [[WP:BLP|biographies of living persons]]",
desc: "Adding unsourced content to biographies of living persons."
},
"Chatting": {
templates: [
"subst:uw-chat1",
"subst:uw-chat2",
"subst:uw-chat3",
"subst:uw-chat4"
],
label: "conversation in article talk space",
desc: "Using article talk pages for inappropriate discussion."
},
"Image vandalism": {
templates: [
"subst:uw-image1",
"subst:uw-image2",
"subst:uw-image3",
"subst:uw-image4"
],
label: "image vandalism",
desc: "Image vandalism."
},
"AfD removal": {
templates: [
"subst:uw-afd1",
"subst:uw-afd2",
"subst:uw-afd3",
"subst:uw-afd4"
],
label: "removing AfD templates or comments",
desc: "Removing AfD templates or other users' comments from AfD discussions."
},
"Jokes": {
templates: [
"subst:uw-joke1",
"subst:uw-joke2",
"subst:uw-joke3",
"subst:uw-joke4",
"subst:uw-joke4im"
],
label: "adding inappropriate humor",
desc: "Adding inappropriate humor to articles."
},
"Personal attacks": {
templates: [
"subst:uw-npa1",
"subst:uw-npa2",
"subst:uw-npa3",
"subst:uw-npa4",
"subst:uw-npa4im"
],
label: "[[WP:NPA|personal attacks]]",
desc: "Personal attacks towards another user."
},
"MOS violation": {
templates: [
"subst:uw-mos1",
"subst:uw-mos2",
"subst:uw-mos3",
"subst:uw-mos4"
],
label: "[[WP:MOS|manual of style]] violation",
desc: "Not following the Manual of Style."
},
"Censoring": {
templates: [
"subst:uw-notcensored1",
"subst:uw-notcensored2",
"subst:uw-notcensored3",
"subst-uw-generic4"
],
label: "[[WP:NOTCENSORED|Censoring content]]",
desc: "Censoring topically-relevant content."
}
},
namespaces: [
{
name: "Main",
id: 0
},
{
name: "User",
id: 2
},
{
name: "Project",
id: 4
},
{
name: "File",
id: 6
},
{
name: "MediaWiki",
id: 8
},
{
name: "Template",
id: 10
},
{
name: "Help",
id: 12
},
{
name: "Category",
id: 14
},
{
name: "Portal",
id: 100
},
{
name: "Draft",
id: 118
},
{
name: "Talk",
id: 1
},
{
name: "User talk",
id: 3
},
{
name: "Project talk",
id: 5
},
{
name: "File talk",
id: 7
},
{
name: "MediaWiki talk",
id: 9
},
{
name: "Template talk",
id: 11
},
{
name: "Help talk",
id: 13
},
{
name: "Category talk",
id: 15
},
{
name: "Portal talk",
id: 101
},
{
name: "Draft talk",
id: 119
}
]
};
// </nowiki>
// <nowiki>
const wikishieldStyling = {
"base": `
@import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css');
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap');
:root {
/* Colors - Light Theme Base */
--light-bg-primary: #ffffff;
--light-bg-secondary: #f8f9fa;
--light-bg-tertiary: #e9ecef;
--light-bg-hover: rgba(0, 0, 0, 0.04);
--light-bg-active: rgba(0, 0, 0, 0.08);
--light-text-primary: #212529;
--light-text-secondary: #495057;
--light-text-tertiary: #868e96;
--light-border: #dee2e6;
--light-border-hover: #ced4da;
--light-primary: #228be6;
--light-primary-hover: #1c7ed6;
--light-primary-active: #1971c2;
--light-danger: #fa5252;
--light-danger-hover: #f03e3e;
--light-danger-active: #e03131;
--light-success: #40c057;
--light-success-hover: #37b24d;
--light-success-active: #2f9e44;
--light-warning: #fab005;
--light-warning-hover: #f59f00;
--light-warning-active: #f08c00;
/* Colors - Dark Theme Base */
--dark-bg-primary: #1a1b1e;
--dark-bg-secondary: #25262b;
--dark-bg-tertiary: #2c2e33;
--dark-bg-hover: rgba(255, 255, 255, 0.04);
--dark-bg-active: rgba(255, 255, 255, 0.08);
--dark-text-primary: #e9ecef;
--dark-text-secondary: #ced4da;
--dark-text-tertiary: #868e96;
--dark-border: #373a40;
--dark-border-hover: #4c4f57;
--dark-primary: #339af0;
--dark-primary-hover: #4dabf7;
--dark-primary-active: #74c0fc;
--dark-danger: #ff6b6b;
--dark-danger-hover: #ff8787;
--dark-danger-active: #ffa8a8;
--dark-success: #51cf66;
--dark-success-hover: #69db7c;
--dark-success-active: #8ce99a;
--dark-warning: #fcc419;
--dark-warning-hover: #ffd43b;
--dark-warning-active: #ffe066;
/* Spacing */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 24px;
--space-6: 32px;
--space-7: 48px;
--space-8: 64px;
/* Border Radius */
--radius-sm: 4px;
--radius-md: 6px;
--radius-lg: 8px;
--radius-xl: 12px;
--radius-full: 9999px;
/* Shadows */
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
--shadow-md: 0 4px 6px rgba(0, 0, 0, 0.05), 0 1px 3px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.05), 0 4px 6px rgba(0, 0, 0, 0.05);
--shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.05), 0 10px 10px rgba(0, 0, 0, 0.02);
/* Typography */
--font-size-xs: 12px;
--font-size-sm: 14px;
--font-size-md: 16px;
--font-size-lg: 18px;
--font-size-xl: 20px;
--font-weight-normal: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
/* Transitions */
--transition-fast: 100ms ease;
--transition-normal: 200ms ease;
--transition-slow: 300ms ease;
/* Z-index layers */
--z-dropdown: 1000;
--z-sticky: 1020;
--z-modal: 1030;
--z-popover: 1040;
--z-tooltip: 1050;
}
/* Default Theme Variables */
:root {
color-scheme: light;
font-family: 'Inter', system-ui, -apple-system, sans-serif;
/* Main Colors */
--bg-primary: var(--light-bg-primary);
--bg-secondary: var(--light-bg-secondary);
--bg-tertiary: var(--light-bg-tertiary);
--bg-hover: var(--light-bg-hover);
--bg-active: var(--light-bg-active);
--text-primary: var(--light-text-primary);
--text-secondary: var(--light-text-secondary);
--text-tertiary: var(--light-text-tertiary);
--border-color: var(--light-border);
--border-hover: var(--light-border-hover);
--primary: var(--light-primary);
--primary-hover: var(--light-primary-hover);
--primary-active: var(--light-primary-active);
--danger: var(--light-danger);
--danger-hover: var(--light-danger-hover);
--danger-active: var(--light-danger-active);
--success: var(--light-success);
--success-hover: var(--light-success-hover);
--success-active: var(--light-success-active);
--warning: var(--light-warning);
--warning-hover: var(--light-warning-hover);
--warning-active: var(--light-warning-active);
}
/* Base styles */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
/* Card Component */
.wiki-card {
background: var(--bg-primary);
border: 1px solid var(--border-color);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-sm);
transition: all var(--transition-normal);
}
.wiki-card:hover {
box-shadow: var(--shadow-md);
transform: translateY(-1px);
}
/* Button Component */
.wiki-button {
display: inline-flex;
align-items: center;
justify-content: center;
padding: var(--space-2) var(--space-4);
border-radius: var(--radius-md);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-medium);
transition: all var(--transition-normal);
cursor: pointer;
border: none;
outline: none;
background: var(--bg-secondary);
color: var(--text-primary);
}
.wiki-button:hover {
background: var(--bg-tertiary);
}
.wiki-button:focus-visible {
outline: 2px solid var(--primary);
outline-offset: 2px;
}
.wiki-button--primary {
background: var(--primary);
color: white;
}
.wiki-button--primary:hover {
background: var(--primary-hover);
}
.wiki-button--danger {
background: var(--danger);
color: white;
}
.wiki-button--danger:hover {
background: var(--danger-hover);
}
/* Input Component */
.wiki-input {
padding: var(--space-2) var(--space-3);
border: 1px solid var(--border-color);
border-radius: var(--radius-md);
font-size: var(--font-size-sm);
background: var(--bg-primary);
color: var(--text-primary);
transition: all var(--transition-normal);
}
.wiki-input:hover {
border-color: var(--border-hover);
}
.wiki-input:focus {
outline: none;
border-color: var(--primary);
box-shadow: 0 0 0 2px var(--primary-hover);
}
/* Badge Component */
.wiki-badge {
display: inline-flex;
align-items: center;
padding: var(--space-1) var(--space-2);
border-radius: var(--radius-full);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-medium);
background: var(--bg-secondary);
color: var(--text-secondary);
}
.wiki-badge--primary {
background: var(--primary);
color: white;
}
.wiki-badge--danger {
background: var(--danger);
color: white;
}
.wiki-badge--success {
background: var(--success);
color: white;
}
.wiki-badge--warning {
background: var(--warning);
color: var(--text-primary);
}
`,
"theme-light": `
[data-theme="light"] {
color-scheme: light;
/* Main Colors */
--bg-primary: var(--light-bg-primary);
--bg-secondary: var(--light-bg-secondary);
--bg-tertiary: var(--light-bg-tertiary);
--text-primary: var(--light-text-primary);
--text-secondary: var(--light-text-secondary);
--border-color: var(--light-border);
--primary: var(--light-primary);
--primary-hover: var(--light-primary-hover);
--danger: var(--light-danger);
--warning: var(--light-warning);
--success: var(--light-success);
--surface: var(--light-surface);
--shadow: var(--light-shadow);
--shadow-hover: var(--light-shadow-hover);
--highlight: var(--light-highlight);
}
/* Base Components - Light Theme */
[data-theme="light"] body {
background: var(--bg-primary);
color: var(--text-primary);
}
[data-theme="light"] button {
background: var(--primary);
color: white;
box-shadow: var(--shadow-sm);
}
[data-theme="light"] button:hover {
background: var(--primary-hover);
box-shadow: var(--shadow-md);
}
[data-theme="light"] .queue-edit {
background: var(--bg-secondary);
border: 1px solid var(--border-color);
box-shadow: var(--shadow-sm);
}
[data-theme="light"] .queue-edit:hover {
background: var(--bg-tertiary);
box-shadow: var(--shadow-md);
}
[data-theme="light"] .queue-edit-current {
background: var(--highlight);
border-left: 3px solid var(--primary);
}
[data-theme="light"] .queue-edit-tag {
background: var(--bg-tertiary);
color: var(--text-secondary);
}
[data-theme="light"] #queue-top,
[data-theme="light"] #right-top {
background: var(--bg-secondary);
border-bottom: 1px solid var(--border-color);
box-shadow: var(--shadow-sm);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
[data-theme="light"] .settings-box {
background: var(--surface);
border: 1px solid var(--border-color);
box-shadow: var(--shadow-lg);
}
[data-theme="light"] .toast-notification {
background: var(--danger);
color: white;
box-shadow: var(--shadow-lg);
}
[data-theme="light"] .bottom-tool-content {
background: var(--surface);
border: 1px solid var(--border-color);
box-shadow: var(--shadow-lg);
}
`,
"theme-dark": `
[data-theme="dark"] {
color-scheme: dark;
/* Main Colors */
--bg-primary: var(--dark-bg-primary);
--bg-secondary: var(--dark-bg-secondary);
--bg-tertiary: var(--dark-bg-tertiary);
--text-primary: var(--dark-text-primary);
--text-secondary: var(--dark-text-secondary);
--border-color: var(--dark-border);
--primary: var(--dark-primary);
--primary-hover: var(--dark-primary-hover);
--danger: var(--dark-danger);
--warning: var(--dark-warning);
--success: var(--dark-success);
--surface: var(--dark-surface);
--shadow: var(--dark-shadow);
--shadow-hover: var(--dark-shadow-hover);
--highlight: var(--dark-highlight);
}
/* Base Components - Dark Theme */
[data-theme="dark"] body {
background: var(--bg-primary);
color: var(--text-primary);
}
[data-theme="dark"] button {
background: var(--primary);
color: white;
box-shadow: var(--shadow-sm);
}
[data-theme="dark"] button:hover {
background: var(--primary-hover);
box-shadow: var(--shadow-md);
}
[data-theme="dark"] .queue-edit {
background: var(--bg-secondary);
border: 1px solid var(--border-color);
box-shadow: var(--shadow-sm);
}
[data-theme="dark"] .queue-edit:hover {
background: var(--bg-tertiary);
box-shadow: var(--shadow-md);
}
[data-theme="dark"] .queue-edit-current {
background: var(--highlight);
border-left: 3px solid var(--primary);
}
[data-theme="dark"] .queue-edit-tag {
background: var(--bg-tertiary);
color: var(--text-secondary);
}
[data-theme="dark"] #queue-top,
[data-theme="dark"] #right-top {
background: var(--bg-secondary);
border-bottom: 1px solid var(--border-color);
box-shadow: var(--shadow-sm);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
[data-theme="dark"] .settings-box {
background: var(--surface);
border: 1px solid var(--border-color);
box-shadow: var(--shadow-lg);
}
[data-theme="dark"] .toast-notification {
background: var(--danger);
color: white;
box-shadow: var(--shadow-lg);
}
[data-theme="dark"] .bottom-tool-content {
background: var(--surface);
border: 1px solid var(--border-color);
box-shadow: var(--shadow-lg);
}
[data-theme="dark"] input[type="text"],
[data-theme="dark"] select {
background: var(--bg-tertiary);
border: 1px solid var(--border-color);
color: var(--text-primary);
}
[data-theme="dark"] input[type="text"]:focus,
[data-theme="dark"] select:focus {
border-color: var(--primary);
box-shadow: 0 0 0 2px var(--highlight);
}
`,
"base": `
/* Base theme configuration */
:root {
/* Light theme colors */
--light-bg-primary: #ffffff;
--light-bg-secondary: #f8fafc;
--light-bg-tertiary: #f1f5f9;
--light-bg-hover: rgba(0, 0, 0, 0.04);
--light-bg-active: rgba(0, 0, 0, 0.08);
--light-bg-floating: rgba(255, 255, 255, 0.95);
--light-text-primary: #0f172a;
--light-text-secondary: #475569;
--light-text-tertiary: #94a3b8;
--light-text-on-accent: #ffffff;
--light-border: #e2e8f0;
--light-border-hover: #cbd5e1;
--light-primary: #2563eb;
--light-primary-hover: #1d4ed8;
--light-primary-active: #1e40af;
--light-danger: #dc2626;
--light-danger-hover: #b91c1c;
--light-warning: #f59e0b;
--light-warning-hover: #d97706;
--light-success: #16a34a;
--light-success-hover: #15803d;
--light-link: #2563eb;
--light-link-hover: #1d4ed8;
--light-overlay: rgba(0, 0, 0, 0.4);
--light-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
--light-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);
--light-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
--light-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
--light-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
--light-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
--light-highlight: rgba(37, 99, 235, 0.15);
/* Dark theme colors */
--dark-bg-primary: #0f172a;
--dark-bg-secondary: #1e293b;
--dark-bg-tertiary: #334155;
--dark-bg-hover: rgba(255, 255, 255, 0.06);
--dark-bg-active: rgba(255, 255, 255, 0.1);
--dark-bg-floating: rgba(15, 23, 42, 0.95);
--dark-text-primary: #f8fafc;
--dark-text-secondary: #cbd5e1;
--dark-text-tertiary: #64748b;
--dark-text-on-accent: #ffffff;
--dark-border: #334155;
--dark-border-hover: #475569;
--dark-primary: #3b82f6;
--dark-primary-hover: #2563eb;
--dark-primary-active: #1d4ed8;
--dark-danger: #ef4444;
--dark-danger-hover: #dc2626;
--dark-warning: #f59e0b;
--dark-warning-hover: #d97706;
--dark-success: #22c55e;
--dark-success-hover: #16a34a;
--dark-link: #60a5fa;
--dark-link-hover: #3b82f6;
--dark-overlay: rgba(0, 0, 0, 0.6);
--dark-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.3);
--dark-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
--dark-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
--dark-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -2px rgba(0, 0, 0, 0.3);
--dark-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.4), 0 10px 10px -5px rgba(0, 0, 0, 0.3);
--dark-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
--dark-highlight: rgba(59, 130, 246, 0.15);
/* Animation durations and curves */
--transition-fast: 150ms;
--transition-normal: 250ms;
--transition-slow: 400ms;
--ease-in: cubic-bezier(0.4, 0, 1, 1);
--ease-out: cubic-bezier(0, 0, 0.2, 1);
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
/* Border radius */
--radius-sm: 0.25rem; /* 4px */
--radius-md: 0.5rem; /* 8px */
--radius-lg: 0.75rem; /* 12px */
--radius-xl: 1rem; /* 16px */
--radius-2xl: 1.5rem; /* 24px */
--radius-full: 9999px;
/* Typography */
--font-size-xs: 0.75rem; /* 12px */
--font-size-sm: 0.875rem; /* 14px */
--font-size-base: 1rem; /* 16px */
--font-size-lg: 1.125rem; /* 18px */
--font-size-xl: 1.25rem; /* 20px */
--font-size-2xl: 1.5rem; /* 24px */
--font-size-3xl: 1.875rem; /* 30px */
--font-size-4xl: 2.25rem; /* 36px */
--font-weight-normal: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;
--line-height-none: 1;
--line-height-tight: 1.25;
--line-height-normal: 1.5;
--line-height-relaxed: 1.75;
/* Spacing */
--space-1: 0.25rem; /* 4px */
--space-2: 0.5rem; /* 8px */
--space-2-5: 0.625rem; /* 10px */
--space-3: 0.75rem; /* 12px */
--space-4: 1rem; /* 16px */
--space-5: 1.25rem; /* 20px */
--space-6: 1.5rem; /* 24px */
--space-8: 2rem; /* 32px */
--space-10: 2.5rem; /* 40px */
--space-12: 3rem; /* 48px */
--space-16: 4rem; /* 64px */
/* Layout */
--header-height: 60px;
--sidebar-width: 300px;
--max-content-width: 1200px;
/* Z-index layers */
--z-base: 0;
--z-above: 1;
--z-sticky: 100;
--z-dropdown: 1000;
--z-fixed: 1100;
--z-modal: 1200;
--z-popover: 1300;
--z-toast: 1400;
--z-tooltip: 1500;
/* Blur effects */
--blur-sm: blur(4px);
--blur-default: blur(8px);
--blur-heavy: blur(16px);
/* Scrollbar */
--scrollbar-width: 8px;
--scrollbar-radius: 4px;
--scrollbar-border: 2px solid transparent;
--scrollbar-thumb: var(--text-tertiary);
--scrollbar-track: transparent;
/* Focus ring */
--focus-ring-width: 2px;
--focus-ring-color: var(--primary);
--focus-ring-offset: 2px;
/* Spacing */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
/* Elevation shadows */
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
/* Base styles */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
transition: background-color var(--transition-normal),
border-color var(--transition-normal),
color var(--transition-normal),
box-shadow var(--transition-normal),
transform var(--transition-fast);
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Interactive elements */
button,
.interactive {
cursor: pointer;
border-radius: var(--radius-md);
border: 1px solid transparent;
padding: var(--space-2) var(--space-4);
font-weight: 500;
transition: all var(--transition-normal);
}
button:hover,
.interactive:hover {
transform: translateY(-1px);
}
button:active,
.interactive:active {
transform: translateY(0);
}
/* Accessibility */
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible {
outline: 2px solid var(--light-primary);
outline-offset: 2px;
}
[data-theme="dark"] button:focus-visible,
[data-theme="dark"] a:focus-visible,
[data-theme="dark"] input:focus-visible,
[data-theme="dark"] select:focus-visible {
outline-color: var(--dark-primary);
}
/* Scrollbars */
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: var(--light-border);
border-radius: var(--radius-lg);
border: 2px solid transparent;
background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover {
background: var(--light-text-secondary);
border: 2px solid transparent;
background-clip: content-box;
}
[data-theme="dark"] ::-webkit-scrollbar-thumb {
background: var(--dark-border);
}
[data-theme="dark"] ::-webkit-scrollbar-thumb:hover {
background: var(--dark-text-secondary);
}
`,
"initial": `
* {
font-family: sans-serif;
line-height: 1.4em;
}
body, html, #container {
width: 100%;
height: 100%;
margin: 0;
}
#container {
display: flex;
align-items: center;
justify-content: center;
}
#welcome-container {
width: max-content;
height: max-content;
padding-bottom: 250px;
}
h1 {
margin: 0 0 5px 0;
}
a {
color: black !important;
}
.about-link {
margin-right: 10px;
}
button {
padding: 8px 20px;
background: rgba(69, 94, 192, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(69, 94, 192, 0.3);
border-radius: 8px;
color: white;
cursor: pointer;
display: block;
margin-top: 10px;
transition: all 0.2s ease;
box-shadow: 0 2px 8px rgba(69, 94, 192, 0.3);
font-weight: 500;
}
button:hover {
background: rgba(56, 80, 180, 0.95);
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(69, 94, 192, 0.4);
}
button:active {
transform: translateY(0);
box-shadow: 0 2px 6px rgba(69, 94, 192, 0.3);
}
`,
"main": `
* {
font-family: sans-serif;
box-sizing: border-box;
}
body, html, #container {
width: 100%;
height: 100%;
margin: 0;
overflow: hidden;
}
#container {
display: flex;
}
#queue {
width: var(--sidebar-width);
height: 100%;
border-right: 1px solid var(--border-color);
background: var(--bg-secondary);
position: relative;
min-width: 250px;
display: flex;
flex-direction: column;
}
#queue-top {
height: var(--header-height);
position: relative;
z-index: 2;
display: flex;
align-items: center;
padding: var(--space-4);
justify-content: space-between;
user-select: none;
background: var(--bg-primary);
border-bottom: 1px solid var(--border-color);
box-shadow: var(--shadow-sm);
}
#queue-top-left, #user-contribs-left {
display: flex;
flex-direction: column;
gap: var(--space-1);
}
#queue-top-title {
font-weight: var(--font-weight-semibold);
font-size: var(--font-size-lg);
color: var(--text-primary);
}
#queue-top-items, #user-contribs-count {
font-size: var(--font-size-sm);
color: var(--text-tertiary);
}
#queue-top-right {
display: flex;
align-items: center;
gap: var(--space-3);
color: var(--text-secondary);
}
#queue-top-right span {
cursor: pointer;
padding: var(--space-2);
border-radius: var(--radius-full);
transition: all var(--transition-normal);
}
#queue-top-right span:hover {
color: var(--primary);
background: var(--bg-hover);
transform: scale(1.05);
}
#notifications-panel {
position: absolute;
top: calc(var(--header-height) - var(--space-2));
right: var(--space-4);
width: 350px;
max-height: 500px;
background: var(--bg-floating);
backdrop-filter: var(--blur-default);
-webkit-backdrop-filter: var(--blur-default);
border: 1px solid var(--border-color);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-lg);
display: none;
z-index: var(--z-dropdown);
flex-direction: column;
overflow: hidden;
animation: slideIn var(--transition-normal) var(--ease-out);
}
#notifications-panel.show {
display: flex;
animation: slideDown 0.3s ease-out;
}
@keyframes slideDown {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
#notifications-header {
padding: 10px;
border-bottom: 1px solid #cfcfcf;
font-weight: bold;
display: flex;
justify-content: space-between;
align-items: center;
}
#notifications-list {
overflow-y: auto;
max-height: 450px;
}
.notification-item {
padding: 12px;
border-bottom: 1px solid #eaeaea;
cursor: pointer;
transition: background 0.2s;
position: relative;
}
.notification-item:hover {
background: #f5f5f5;
}
.notification-item.unread {
background: #e8f4ff;
border-left: 3px solid #3366cc;
padding-left: 9px;
}
.notification-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 4px;
}
.notification-type {
font-size: 0.7em;
text-transform: uppercase;
font-weight: 600;
letter-spacing: 0.5px;
opacity: 0.6;
}
.notification-title {
font-weight: 500;
margin-bottom: 2px;
font-size: 0.95em;
}
.notification-subtitle {
font-size: 0.85em;
color: #666;
margin-bottom: 4px;
}
.notification-time {
font-size: 0.75em;
color: #999;
}
.toast-notification {
position: fixed;
bottom: 30px;
right: 30px;
background: rgba(244, 67, 54, 0.96);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
color: var(--text-on-accent);
padding: var(--space-4) var(--space-6);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-xl);
border: 1px solid var(--toast-border);
z-index: var(--z-toast);
display: flex;
align-items: center;
gap: var(--space-3);
min-width: 300px;
max-width: 500px;
animation: slideIn var(--transition-normal) var(--ease-out);
opacity: 0;
transform: translateX(100%);
}
.toast-notification.show {
opacity: 1;
transform: translateX(0);
}
.toast-notification.hide {
animation: slideOut var(--transition-normal) var(--ease-in) forwards;
}
@keyframes slideIn {
from {
opacity: 0;
transform: translateX(100%);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes slideOut {
from {
opacity: 1;
transform: translateX(0);
}
to {
opacity: 0;
transform: translateX(100%);
}
}
.toast-icon {
font-size: var(--font-size-2xl);
flex-shrink: 0;
color: var(--text-on-accent);
}
.toast-content {
flex: 1;
display: flex;
flex-direction: column;
gap: var(--space-1);
}
.toast-title {
font-weight: var(--font-weight-semibold);
font-size: var(--font-size-base);
color: var(--text-on-accent);
}
.toast-message {
font-size: var(--font-size-sm);
color: var(--text-primary);
line-height: var(--line-height-normal);
}
.toast-close {
cursor: pointer;
font-size: var(--font-size-lg);
color: var(--text-tertiary);
transition: all var(--transition-normal);
flex-shrink: 0;
padding: var(--space-1);
border-radius: var(--radius-full);
}
.toast-close:hover {
color: var(--text-primary);
background: var(--bg-hover);
}
.confirmation-modal-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--overlay-color);
backdrop-filter: var(--blur-heavy);
-webkit-backdrop-filter: var(--blur-heavy);
display: flex;
align-items: center;
justify-content: center;
z-index: var(--z-modal);
animation: fadeIn var(--transition-normal) var(--ease-out);
}
@keyframes fadeIn {
from {
opacity: 0;
backdrop-filter: blur(0);
-webkit-backdrop-filter: blur(0);
}
to {
opacity: 1;
backdrop-filter: var(--blur-heavy);
-webkit-backdrop-filter: var(--blur-heavy);
}
}
@keyframes fadeOut {
from {
opacity: 1;
backdrop-filter: var(--blur-heavy);
-webkit-backdrop-filter: var(--blur-heavy);
}
to {
opacity: 0;
backdrop-filter: blur(0);
-webkit-backdrop-filter: blur(0);
}
}
.confirmation-modal {
background: var(--bg-floating);
backdrop-filter: var(--blur-default);
-webkit-backdrop-filter: var(--blur-default);
border-radius: var(--radius-xl);
box-shadow: var(--shadow-2xl);
border: 1px solid var(--border-color);
min-width: 400px;
max-width: 500px;
animation: scaleIn var(--transition-normal) var(--ease-out);
}
@keyframes scaleIn {
from {
transform: scale(0.9);
opacity: 0;
}
to {
transform: scale(1);
opacity: 1;
}
}
@keyframes scaleOut {
from {
transform: scale(1);
opacity: 1;
}
to {
transform: scale(0.9);
opacity: 0;
}
}
.confirmation-modal-overlay.closing {
animation: fadeOut var(--transition-normal) var(--ease-out) forwards;
}
.confirmation-modal.closing {
animation: scaleOut var(--transition-normal) var(--ease-out) forwards;
}
.confirmation-modal-header {
padding: var(--space-5) var(--space-6);
border-bottom: 1px solid var(--border-color);
background: var(--bg-primary);
}
.confirmation-modal-title {
font-size: var(--font-size-xl);
font-weight: var(--font-weight-semibold);
color: var(--text-primary);
}
.confirmation-modal-body {
padding: var(--space-6);
color: var(--text-secondary);
line-height: var(--line-height-relaxed);
background: var(--bg-secondary);
}
.confirmation-modal-username {
font-weight: var(--font-weight-semibold);
color: var(--link);
transition: color var(--transition-normal);
}
.confirmation-modal-username:hover {
color: var(--link-hover);
text-decoration: underline;
}
.confirmation-modal-footer {
padding: var(--space-4) var(--space-6);
border-top: 1px solid var(--border-color);
display: flex;
justify-content: space-between;
align-items: center;
background: var(--bg-primary);
gap: 12px;
}
.confirmation-modal-footer-right {
display: flex;
gap: var(--space-3);
}
.confirmation-modal-button {
padding: var(--space-2-5) var(--space-6);
border-radius: var(--radius-md);
font-weight: var(--font-weight-medium);
cursor: pointer;
border: none;
font-size: var(--font-size-sm);
transition: all var(--transition-normal);
box-shadow: var(--shadow-sm);
}
.confirmation-modal-button:hover {
transform: translateY(-1px);
box-shadow: var(--shadow-md);
}
.confirmation-modal-button:active {
transform: translateY(0);
box-shadow: var(--shadow-sm);
}
.confirmation-modal-button-no {
background: var(--button-secondary-bg);
color: var(--button-secondary-text);
border: 1px solid var(--button-secondary-border);
}
.confirmation-modal-button-no:hover {
background: var(--button-secondary-hover-bg);
}
.confirmation-modal-button-yes {
background: var(--button-primary-bg);
color: var(--button-primary-text);
}
.confirmation-modal-button-yes:hover {
background: var(--button-primary-hover-bg);
}
.confirmation-modal-button-uaa {
background: var(--button-danger-bg);
color: var(--button-danger-text);
}
.confirmation-modal-button-uaa:hover {
background: var(--button-danger-hover-bg);
}
.confirmation-modal-footer-vertical {
flex-direction: column;
align-items: stretch;
gap: var(--space-3);
}
.confirmation-modal-footer-vertical .confirmation-modal-button {
width: 100%;
}
.confirmation-modal-button-reason {
background: var(--button-primary-bg);
color: white;
}
.confirmation-modal-button-reason:hover {
background: #2855a8;
}
.confirmation-modal-button-cancel {
background: #f5f5f5;
color: #333;
}
.confirmation-modal-button-cancel:hover {
background: #e0e0e0;
}
#queue-items {
height: calc(100% - var(--header-height));
overflow-x: hidden;
overflow-y: auto;
scrollbar-width: thin;
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
}
#queue-items::-webkit-scrollbar {
width: var(--scrollbar-width);
}
#queue-items::-webkit-scrollbar-track {
background: var(--scrollbar-track);
}
#queue-items::-webkit-scrollbar-thumb {
background-color: var(--scrollbar-thumb);
border-radius: var(--scrollbar-radius);
border: var(--scrollbar-border);
}
.width-adjust {
width: var(--space-3);
height: 100%;
position: absolute;
top: 0;
right: calc(var(--space-2) * -1);
z-index: var(--z-resize);
cursor: col-resize;
transition: background-color var(--transition-fast);
}
.width-adjust:hover {
background-color: var(--bg-hover);
}
#details-width-adjust {
left: calc(var(--space-2) * -1);
}
#right-container {
width: calc(100% - var(--sidebar-width));
display: flex;
flex-wrap: wrap;
}
#right-top {
height: var(--header-height);
width: 100%;
box-shadow: var(--shadow-sm);
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: center;
padding: var(--space-3) var(--space-4);
background: var(--bg-primary);
backdrop-filter: var(--blur-default);
-webkit-backdrop-filter: var(--blur-default);
border-bottom: 1px solid var(--border-color);
}
#right-top a {
text-decoration: none;
color: var(--link);
transition: color var(--transition-normal);
}
#right-top a:hover {
color: var(--link-hover);
text-decoration: underline;
}
font-weight: 500;
transition: color 0.2s ease;
}
#right-top a:hover {
color: #0b7ad1;
}
#right-top div {
padding: 0 12px;
display: flex;
align-items: center;
gap: 6px;
}
#right-top .fa {
margin-right: 6px;
color: #555;
font-size: 0.95em;
}
.right-top-comment {
flex-basis: 100%;
text-align: center;
justify-content: center;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
#right-content {
width: 100%;
height: calc(100% - 60px);
display: flex;
}
#main-container {
position: relative;
width: calc(100% - 300px);
display: flex;
flex-direction: column;
height: 100%;
}
#diff-container {
overflow-y: auto;
flex: 1;
}
#bottom-tools {
height: 50px;
flex-shrink: 0;
}
#right-details {
width: 300px;
border-left: 2px solid #cfcfcf;
position: relative;
}
#user-contribs, #page-history {
height: 50%;
}
#page-history {
border-top: 2px solid #cfcfcf;
}
#user-contribs-top, #page-history-top {
height: 55px;
border-bottom: 2px solid #cfcfcf;
display: flex;
align-items: center;
justify-content: space-between;
padding: 15px;
user-select: none;
}
#user-contribs-title, #page-history-title {
font-weight: bold;
font-size: 1.05em;
}
#user-contribs-level {
padding: 2px 8px;
border-radius: 8px;
color: white;
font-weight: bold;
}
#block-count-indicator {
padding: 3px 10px;
border-radius: 8px;
background: #1a1a1a;
color: white;
font-weight: bold;
font-size: 0.95em;
margin-right: 8px;
border: 2px solid #ff4444;
}
#protection-indicator {
font-size: 1.3em;
}
#user-contribs-content, #page-history-content {
height: calc(100% - 55px);
overflow-y: auto;
overflow-x: hidden;
}
#user-contribs-content .queue-edit, #page-history-content .queue-edit {
animation: none !important;
}
#bottom-tools {
display: flex;
align-items: center;
padding: 0 10px;
border-top: 2px solid #cfcfcf;
justify-content: space-between;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
#bottom-tools-left {
display: flex;
align-items: center;
}
#bottom-tools-left > div {
margin-right: 10px;
position: relative;
height: 50px;
display: flex;
align-items: center;
}
#bottom-tools-stats {
display: flex;
align-items: center;
gap: 15px;
font-size: 0.9em;
color: #666;
padding-right: 10px;
}
#bottom-tools-stats > div {
display: flex;
align-items: center;
gap: 5px;
}
#bottom-tools-stats .stat-value {
font-weight: bold;
color: #333;
}
#bottom-tools > div {
margin-right: 10px;
position: relative;
height: 100%;
display: flex;
align-items: center;
}
.bottom-tool-title {
padding: 5px 12px;
border-radius: 6px;
user-select: none;
cursor: pointer;
transition: all 0.2s ease;
font-weight: 500;
}
.bottom-tool-title:hover {
background: #e8e8e8;
transform: translateY(-1px);
}
.bottom-tool-title-selected, .submenu-selected {
background: #d8d8d8 !important;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}
.bottom-tool-content {
position: absolute;
bottom: 48px;
width: max-content;
display: none;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 10px;
left: -12px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
overflow: visible;
z-index: 100;
}
.bottom-tool-option {
padding: 8px 12px;
display: flex;
align-items: center;
justify-content: space-between;
user-select: none;
cursor: pointer;
}
.bottom-tool-option:hover {
background: rgba(0, 0, 0, 0.05);
border-radius: 6px;
}
.bottom-tool-option-title {
padding-right: 15px;
}
.bottom-tool-option-subcontent {
display: none;
position: absolute;
bottom: -2px;
left: 100%;
width: max-content;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 10px;
padding: 12px;
z-index: 150;
cursor: initial;
min-width: 250px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
}
select, input[type=text] {
max-width: 250px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.15);
padding: 8px 12px;
border-radius: 8px;
cursor: pointer;
transition: all 0.2s ease;
font-size: 0.95em;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
}
select:hover, input[type=text]:hover {
border-color: rgba(0, 0, 0, 0.25);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
}
select:focus, input[type=text]:focus {
outline: none;
border-color: rgba(33, 150, 243, 0.6);
box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.15);
background: rgba(255, 255, 255, 1);
}
input[type=text] {
cursor: text !important;
}
#revert-menu {
max-height: calc(100vh - 120px);
overflow: auto;
}
#warn-menu {
max-height: calc(100vh - 120px);
overflow: auto;
}
.revert-menu-table {
padding: 12px;
}
.revert-menu-title, .revert-menu-info {
padding-right: 15px;
}
.revert-menu-item {
color: white;
width: 35px;
border-radius: 8px;
height: 35px;
font-size: 0.9em;
text-align: center;
user-select: none;
cursor: pointer;
transition: all 0.2s ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.15);
}
.revert-menu-item:hover {
filter: brightness(0.9);
transform: translateY(-2px);
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
.revert-menu-item:active {
transform: translateY(0);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}
.bottom-subcontent-input-title {
font-size: 0.9em;
margin: 10px 0 2px 0;
}
.bottom-subcontent-button {
margin-top: 10px;
display: block;
background: linear-gradient(to bottom, #ffffff, #f5f5f5);
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 8px;
cursor: pointer;
padding: 8px 14px;
font-weight: 500;
transition: all 0.2s ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.bottom-subcontent-button:hover {
background: linear-gradient(to bottom, #ffffff, #f8f8f8);
border-color: rgba(0, 0, 0, 0.2);
transform: translateY(-1px);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);
}
.bottom-subcontent-button:active {
transform: translateY(0);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
}
.queue-edit {
display: flex;
position: relative;
font-size: 0.95em;
transition: all 0.2s ease;
}
.queue-edit:hover {
background: rgba(0, 0, 0, 0.02);
}
.queue-edit:not(.queue-edit-current) {
animation: fadein 0.5s ease-out 0s 1;
}
@keyframes fadein {
from {
background: #e8e8e8;
transform: translateX(-5px);
}
to {
background: transparent;
transform: translateX(0);
}
}
.queue-edit-title, .queue-edit-user, .queue-edit-summary, .queue-edit-time {
display: flex;
align-items: center;
white-space: nowrap;
margin-bottom: 3px;
position: relative;
width: max-content;
max-width: 100%;
height: 22px;
}
.queue-edit-user, .queue-edit-summary, .queue-edit-time {
font-size: 0.9em;
}
#user-contribs-content .queue-edit-content,
#page-history-content .queue-edit-content {
padding-left: 15px;
}
.queue-edit-icon {
width: 25px;
flex-shrink: 0;
color: #333;
}
.queue-edit-color {
width: 5px;
flex-shrink: 0;
background: gray;
transition: 0.2s;
}
.queue-edit-content {
padding: 12px 15px;
width: 100%;
border-bottom: 2px solid #e0e0e0;
}
.queue-edit-tags {
display: flex;
}
.queue-edit-tag {
font-size: 0.8em;
padding: 3px 10px;
flex-shrink: 0;
margin-right: 5px;
border-radius: 6px;
background: rgba(234, 234, 234, 0.9);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.08);
transition: all 0.2s ease;
}
.queue-edit-tag:hover {
background: rgba(220, 220, 220, 0.95);
}
.queue-edit-tag-minor {
background: rgba(212, 212, 212, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.1);
font-weight: bold;
color: #666;
font-style: italic;
}
.minor-indicator {
font-weight: bold;
color: #666;
font-size: 0.9em;
padding: 2px 8px;
background: rgba(232, 232, 232, 0.9);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(0, 0, 0, 0.08);
border-radius: 6px;
margin-right: 4px;
}
.queue-edit-change {
position: absolute;
top: 0;
height: calc(100% - 2px);
right: 0;
display: flex;
width: 100px;
align-items: center;
justify-content: right;
padding-right: 10px;
background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
}
.queue-edit-current {
background: #f0f4f8;
border-left: 4px solid #2196F3;
box-shadow: inset 0 0 10px rgba(33, 150, 243, 0.1);
}
.queue-edit:hover .queue-edit-color {
width: 10px;
}
.tooltip {
position: fixed;
top: 0;
left: 0;
z-index: 3;
opacity: 0;
transition: opacity 0.2s ease;
font-size: 0.9em;
max-width: 450px;
min-width: 250px;
padding: 10px 14px;
background: rgba(44, 62, 80, 0.96);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-radius: 10px;
color: white;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
border: 1px solid rgba(255, 255, 255, 0.1);
white-space: normal;
line-height: 1.5;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
word-wrap: break-word;
overflow-wrap: break-word;
}
.tooltip-title {
font-weight: 600;
font-size: 0.95em;
margin-bottom: 6px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
padding-bottom: 4px;
word-wrap: break-word;
}
.tooltip-item {
margin: 4px 0;
padding-left: 4px;
word-wrap: break-word;
overflow-wrap: break-word;
}
.tooltip-item-level {
display: inline-block;
min-width: 60px;
font-weight: 600;
color: #ffd700;
word-wrap: break-word;
}
.tooltip-item-article {
color: #87ceeb;
word-wrap: break-word;
}
.tooltip-item-time {
color: #b0b0b0;
font-size: 0.85em;
word-wrap: break-word;
}
.tooltip-more {
margin-top: 6px;
font-style: italic;
color: #999;
font-size: 0.85em;
}
#diff-container {
overflow-y: auto;
scroll-behavior: smooth;
}
#diff-container td, #diff-container tr {
overflow-wrap: anywhere;
}
.diff-addedline {
background: rgba(76, 175, 80, 0.2);
border-left: 3px solid #4CAF50;
}
ins {
background: rgba(76, 175, 80, 0.4);
text-decoration: none;
border-radius: 2px;
padding: 1px 2px;
}
.diff-deletedline {
background: rgba(244, 67, 54, 0.2);
border-left: 3px solid #f44336;
}
del {
background: rgba(244, 67, 54, 0.4);
text-decoration: none;
border-radius: 2px;
padding: 1px 2px;
}
.diff-lineno {
border-bottom: 1px dashed grey;
background: rgba(0, 0, 0, 0.2);
}
#diff-container * {
font-family: monospace;
vertical-align: baseline;
}
#diff-container td:not(.diff-marker) {
width: 50%;
}
.context-menu {
position: fixed;
padding: 8px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 10px;
z-index: 100;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
}
.context-menu div {
padding: 8px 12px;
margin: 4px;
user-select: none;
cursor: pointer;
border-radius: 6px;
transition: background 0.2s ease;
}
.context-menu div:not(#context-ores):hover {
background: rgba(0, 0, 0, 0.08);
}
#context-ores {
color: #444;
font-size: 0.8em;
}
#context-ores-number {
font-size: 1.2em;
font-weight: bold;
filter: brightness(0.6);
}
.settings-container {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: var(--z-modal);
display: flex;
justify-content: center;
align-items: center;
background: var(--overlay-color);
backdrop-filter: var(--blur-heavy);
-webkit-backdrop-filter: var(--blur-heavy);
animation: backdropFadeIn var(--transition-normal) var(--ease-out);
}
.settings {
width: min(1000px, 90vw);
background: var(--bg-primary);
border-radius: var(--radius-xl);
box-shadow: var(--shadow-2xl);
display: flex;
height: min(800px, 90vh);
margin: 0 auto;
overflow: hidden;
border: 1px solid var(--border-color);
animation: modalEnter var(--transition-normal) var(--ease-out);
}
@keyframes modalEnter {
from {
opacity: 0;
transform: scale(0.95) translateY(10px);
}
to {
opacity: 1;
transform: scale(1) translateY(0);
}
}
.settings-left {
width: 260px;
background: var(--bg-secondary);
border-right: 1px solid var(--border-color);
padding: var(--space-6) var(--space-3);
display: flex;
flex-direction: column;
gap: var(--space-2);
}
.settings-left-menu-item {
padding: var(--space-3) var(--space-4);
cursor: pointer;
user-select: none;
color: var(--text-secondary);
font-weight: var(--font-weight-medium);
font-size: var(--font-size-sm);
transition: all var(--transition-normal);
border-radius: var(--radius-lg);
display: flex;
align-items: center;
gap: var(--space-3);
position: relative;
overflow: hidden;
}
.settings-left-menu-item::before {
content: '';
position: absolute;
inset: 0;
background: var(--primary);
opacity: 0;
transition: opacity var(--transition-normal);
}
.settings-left-menu-item i {
font-size: var(--font-size-lg);
position: relative;
z-index: 1;
transition: all var(--transition-normal);
}
.settings-left-menu-item:hover {
color: var(--primary);
background: var(--bg-hover);
transform: translateX(4px);
}
.settings-left-menu-item.selected {
color: white;
position: relative;
}
.settings-left-menu-item.selected::before {
opacity: 1;
}
.settings-left-menu-item.selected:hover {
color: white;
transform: none;
}
.settings-left-menu-item.selected i {
color: white;
}
.settings-left-menu-item span {
position: relative;
z-index: 1;
}
.settings-right {
width: min(800px, calc(100% - var(--space-8)));
overflow: auto;
padding: var(--space-4) var(--space-4) var(--space-8);
}
.settings-section {
display: flex;
flex-direction: column;
gap: var(--space-6);
padding: var(--space-6);
background: var(--bg-primary);
border-radius: var(--radius-xl);
border: 1px solid var(--border-color);
transition: all var(--transition-normal);
position: relative;
}
.settings-section:hover {
border-color: var(--border-hover);
box-shadow: var(--shadow-lg);
transform: translateY(-2px);
}
.settings-section::before {
content: '';
position: absolute;
inset: 0;
border-radius: inherit;
background: linear-gradient(to right, var(--primary), var(--primary-hover));
opacity: 0;
z-index: -1;
transition: opacity var(--transition-normal);
}
.settings-section:hover::before {
opacity: 0.03;
}
.settings-section-title {
font-size: var(--font-size-xl);
font-weight: var(--font-weight-bold);
color: var(--text-primary);
display: flex;
align-items: center;
gap: var(--space-3);
padding-bottom: var(--space-4);
border-bottom: 1px solid var(--border-color);
}
.settings-section-title i {
color: var(--primary);
font-size: var(--font-size-2xl);
}
.settings-section-desc {
font-size: var(--font-size-sm);
color: var(--text-secondary);
line-height: var(--line-height-relaxed);
margin-top: calc(-1 * var(--space-4));
}
.settings-section-content {
display: flex;
flex-direction: column;
gap: var(--space-4);
}
#settings-general-button:nth-child(1) {
border-top-left-radius: var(--radius-lg);
}
#namespace-container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: var(--space-4);
padding: var(--space-2);
}
#namespace-container > div {
background: var(--bg-secondary);
padding: var(--space-3);
border-radius: var(--radius-md);
border: 1px solid var(--border-color);
transition: all var(--transition-normal);
}
#namespace-container > div:hover {
background: var(--bg-hover);
border-color: var(--border-hover);
transform: translateY(-1px);
box-shadow: var(--shadow-sm);
}
.numeric-input-container {
display: flex;
align-items: center;
gap: var(--space-2);
}
.settings-toggle {
width: 48px;
height: 24px;
cursor: pointer;
position: relative;
display: inline-block;
}
.toggle-switch {
width: 100%;
height: 100%;
background: var(--text-tertiary);
border-radius: var(--radius-full);
position: relative;
transition: all var(--transition-normal);
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}
.settings-toggle:hover .toggle-switch {
opacity: 0.9;
}
.settings-toggle.active .toggle-switch {
background: var(--primary);
}
.toggle-slider {
width: 20px;
height: 20px;
background: var(--bg-primary);
border-radius: var(--radius-full);
position: absolute;
top: 2px;
left: 2px;
transition: all var(--transition-normal) var(--ease-in-out);
box-shadow: var(--shadow-md);
}
.settings-toggle.active .toggle-slider {
left: 26px;
background: var(--bg-primary);
}
.settings-toggle:hover .toggle-slider {
transform: scale(1.1);
box-shadow: var(--shadow-lg);
}
.numeric-input-button {
width: var(--space-10);
height: var(--space-10);
font-size: var(--font-size-xl);
display: flex !important;
align-items: center;
justify-content: center;
cursor: pointer;
border-radius: var(--radius-md);
color: var(--text-secondary);
transition: all var(--transition-normal);
background: var(--bg-secondary);
border: 1px solid var(--border-color);
}
.numeric-input-button:hover {
background: var(--bg-hover);
color: var(--text-primary);
border-color: var(--border-hover);
transform: translateY(-1px);
box-shadow: var(--shadow-sm);
}
.numeric-input-button:active {
transform: translateY(0);
background: var(--bg-active);
}
.numeric-input {
border: 1px solid var(--border-color);
font-size: var(--font-size-base);
padding: var(--space-2) var(--space-3);
width: 120px;
border-radius: var(--radius-md);
margin: 0 var(--space-2);
color: var(--text-primary);
background: var(--bg-secondary);
transition: all var(--transition-normal);
}
.numeric-input:hover {
border-color: var(--border-hover);
}
.numeric-input:focus {
border-color: var(--primary) !important;
outline: none;
box-shadow: 0 0 0 var(--focus-ring-offset) var(--highlight);
}
.control-container {
border: 1px solid var(--border-color);
padding: var(--space-4) var(--space-5);
border-radius: var(--radius-lg);
font-size: var(--font-size-sm);
background: var(--bg-secondary);
transition: all var(--transition-normal);
}
.control-container:hover {
border-color: var(--border-hover);
box-shadow: var(--shadow-sm);
}
.control-container-title {
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
color: var(--text-primary);
margin-bottom: var(--space-2);
}
.control-action {
margin-top: 5px;
padding: 0 0 0 10px;
border-left: 1px solid #cfcfcf;
}
.control-action-title span {
margin-right: 5px;
}
.control-action-title-left span {
width: 17px;
}
.control-action-title-left select {
margin: 0 5px;
}
.control-keys {
display: flex;
}
.control-keys > div {
display: flex;
align-items: center;
background: rgba(255, 255, 255, 0.95);
border: 1px solid rgba(0, 0, 0, 0.15);
width: max-content;
padding: 6px 12px;
border-radius: 8px;
margin: 5px 5px 5px 0;
user-select: none;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
transition: all 0.2s ease;
}
.control-keys > div:hover {
border-color: rgba(0, 0, 0, 0.25);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);
}
.control-keys .remove {
cursor: pointer;
}
.key-elem-title {
margin-right: 10px;
}
.key-select {
font-style: italic;
border: 2px solid #8989ec !important;
}
.key-duplicate {
border: 2px solid red !important;
}
.control-action-title {
display: flex;
justify-content: space-between;
align-items: center;
}
.control-action-title-right {
display: flex;
}
.control-action-title-right span {
font-size: 1.2em;
width: 30px;
height: 30px;
margin-right: 0;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
border-radius: 5px;
transition: 0.1s;
}
.control-action-title-right span:hover {
background: #eaeaea;
}
.add-action-button {
width: max-content;
border: 1px solid rgba(0, 0, 0, 0.15);
padding: 8px 16px;
border-radius: 8px;
background: linear-gradient(to bottom, #ffffff, #f5f5f5);
cursor: pointer;
user-select: none;
transition: all 0.2s ease;
font-weight: 500;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.add-action-button:hover {
border-color: rgba(0, 0, 0, 0.2);
transform: translateY(-1px);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);
}
.add-action-button:active {
transform: translateY(0);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
}
.add-action-button:hover {
background: linear-gradient(to bottom, #ffffff, #f0f0f0);
transform: translateY(-1px);
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
}
.add-action-button:active {
transform: translateY(0);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}
.add-action-container {
display: flex;
}
.cancel-button, .create-button {
margin-left: 5px;
}
.control-delete {
color: red;
}
.control-bottom-container {
display: flex;
justify-content: space-between;
margin-top: 10px;
}
.new-control-script {
font-size: 0.9em;
}
.new-control-script span {
margin-right: 5px;
}
.action-parameter {
margin-left: 26px;
display: inline-block;
}
.parameter-title {
margin: 5px 0 2px 0;
font-size: 0.9em;
}
.user-container > div {
display: flex;
justify-content: space-between;
align-items: center;
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 8px;
padding: 8px 8px 8px 15px;
margin-bottom: 8px;
background: rgba(0, 0, 0, 0.02);
transition: all 0.2s ease;
}
.user-container > div:hover {
background: rgba(0, 0, 0, 0.04);
border-color: rgba(0, 0, 0, 0.15);
transform: translateX(2px);
}
.user-container a {
color: black;
text-decoration: none;
}
.queue-edit-user-highlight {
background: rgba(255, 255, 190, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 230, 0, 0.3);
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(255, 230, 0, 0.15);
}
.queue-edit-user-empty-talk {
background: rgba(255, 204, 204, 0.95);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 100, 100, 0.3);
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(255, 100, 100, 0.15);
}
#progress-bar-container {
position: absolute;
top: calc(100% - 90px);
height: 40px;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
padding: 0px 20px;
}
.progress-bar {
border-radius: 12px;
width: 150px;
height: 28px;
background: rgba(0, 0, 0, 0.08);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
font-size: 0.8em;
display: flex;
align-items: center;
justify-content: center;
position: relative;
margin-left: 10px;
opacity: 1;
transition: 0.3s;
overflow: hidden;
border: 1px solid rgba(0, 0, 0, 0.1);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.progress-bar-overlay {
position: absolute;
top: 0;
left: 0;
border-radius: 12px;
width: 0px;
transition: 0.3s;
height: 100%;
background: linear-gradient(90deg, rgba(0, 170, 255, 0.8), rgba(33, 150, 243, 0.9));
}
.progress-bar-text {
position: relative;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 0 5px;
max-width: 100%;
}
.changelog {
font-size: 0.9em;
line-height: 1.6em;
}
.settings-appearance-box {
display: flex inline;
width: 150px;
height: 60px;
justify-content: center;
align-items: center;
border-radius: 10px;
margin: 10px 10px 0 0;
cursor: pointer;
user-select: none;
transition: all 0.2s ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.settings-appearance-box:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
#box-light {
background: rgba(234, 234, 234, 0.95);
color: black !important;
border: 1px solid rgba(0, 0, 0, 0.15);
}
#box-dark {
background: rgba(34, 38, 47, 0.95);
border: 1px solid rgba(255, 255, 255, 0.1);
color: white;
}
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #f5f5f5;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #c0c0c0;
border-radius: 10px;
transition: background 0.2s;
}
::-webkit-scrollbar-thumb:hover {
background: #a0a0a0;
}
`,
"theme-dark" : `
body {
background: #22262f;
}
*, .about-link {
color: #f1f5ff !important;
}
button {
background: rgba(74, 125, 204, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(74, 125, 204, 0.3) !important;
box-shadow: 0 2px 8px rgba(74, 125, 204, 0.3) !important;
}
button:hover {
background: rgba(91, 154, 255, 0.95) !important;
box-shadow: 0 4px 12px rgba(91, 154, 255, 0.4) !important;
}
.queue-edit-current, .progress-bar, .queue-edit-tag {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(255, 255, 255, 0.06) !important;
}
.queue-edit-tag-minor {
background: rgba(31, 36, 48, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
color: #a8b0c0 !important;
}
.minor-indicator {
background: rgba(54, 62, 81, 0.9) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
color: #a8b0c0 !important;
}
.queue-edit-content {
border-bottom: 2px solid #363e51 !important;
}
#queue {
border-right: 2px solid #363e51 !important;
}
#right-details {
border-left: 2px solid #363e51 !important;
}
#bottom-tools {
border-top: 2px solid #363e51 !important;
}
#bottom-tools-stats {
color: #aaa !important;
}
#bottom-tools-stats .stat-value {
color: #e0e0e0 !important;
}
.toast-notification {
background: rgba(211, 47, 47, 0.96) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.15) !important;
box-shadow: 0 6px 20px rgba(211, 47, 47, 0.4) !important;
}
.confirmation-modal-overlay {
background: rgba(0, 0, 0, 0.7) !important;
}
.confirmation-modal {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(20px) !important;
-webkit-backdrop-filter: blur(20px) !important;
box-shadow: 0 12px 48px rgba(0, 0, 0, 0.7) !important;
border: 1px solid rgba(255, 255, 255, 0.1) !important;
}
.confirmation-modal-header {
border-bottom: 1px solid #363e51 !important;
}
.confirmation-modal-title {
color: #f1f5ff !important;
}
.confirmation-modal-body {
color: #bbb !important;
}
.confirmation-modal-username {
color: #5b9aff !important;
}
.confirmation-modal-footer {
border-top: 1px solid #363e51 !important;
}
.confirmation-modal-button-no {
background: #363e51 !important;
color: #f1f5ff !important;
}
.confirmation-modal-button-no:hover {
background: #4a5468 !important;
}
.confirmation-modal-button-yes {
background: #4a7dcc !important;
}
.confirmation-modal-button-yes:hover {
background: #5b9aff !important;
}
.confirmation-modal-button-uaa {
background: #c13030 !important;
}
.confirmation-modal-button-uaa:hover {
background: #d94444 !important;
}
.confirmation-modal-button-reason {
background: #4a7dcc !important;
}
.confirmation-modal-button-reason:hover {
background: #5b9aff !important;
}
.confirmation-modal-button-cancel {
background: #363e51 !important;
color: #f1f5ff !important;
}
.confirmation-modal-button-cancel:hover {
background: #4a5468 !important;
}
#user-contribs-top, #page-history-top {
border-bottom: 2px solid #363e51 !important;
}
#page-history {
border-top: 2px solid #363e51 !important;
}
.bottom-tool-title:hover, .settings-left-menu-item:hover, .settings-left-menu-item.selected,
.context-menu div:not(#context-ores):hover {
background: #292f3c !important;
}
.bottom-tool-option:hover, .numeric-input-button:hover {
background: #2e3442 !important;
}
.bottom-tool-title-selected, .submenu-selected {
background: #2e3442 !important;
}
.bottom-tool-content, .bottom-tool-option-subcontent {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4) !important;
}
.context-menu {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4) !important;
}
.settings {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;
}
#notifications-panel {
background: rgba(41, 47, 60, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;
}
select, input[type=text], .bottom-subcontent-button {
background: rgba(46, 52, 66, 0.95) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
color: #e0e0e0 !important;
border-radius: 8px !important;
}
select:hover, input[type=text]:focus, .bottom-subcontent-button:hover {
border-color: rgba(91, 154, 255, 0.4) !important;
background: rgba(46, 52, 66, 1) !important;
}
.queue-edit-change {
background: linear-gradient(to right, rgba(34, 38, 47, 0), rgba(34, 38, 47, 1)) !important;
}
#right-top, #queue-top {
box-shadow: none !important;
border-bottom: 2px solid #363e51;
}
.queue-edit:not(.queue-edit-current) {
animation: fadeindark 0.5s linear 0s 1 !important;
}
@keyframes fadeindark {
from {
background: #363e51;
}
to {
background: transparent;
}
}
.diff-addedline {
background: rgba(0, 164, 0, 0.3) !important;
}
ins {
background: rgba(130, 169, 26, 0.5) !important;
}
.settings, .context-menu, .control-keys > div, .add-action-button, .control-container,
.user-container > div {
background: #22262f;
border: 2px solid #363e51;
}
.settings-left {
border-right: 2px solid #363e51;
}
#notifications-panel {
background: rgba(34, 38, 47, 0.95) !important;
backdrop-filter: blur(12px) !important;
-webkit-backdrop-filter: blur(12px) !important;
border: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;
}
#notifications-header {
border-bottom: 1px solid #363e51 !important;
}
.notification-item {
border-bottom: 1px solid #363e51 !important;
}
.notification-item:hover {
background: #292f3c !important;
}
.notification-item.unread {
background: #2a3a4a !important;
border-left-color: #5588cc !important;
}
.notification-subtitle {
color: #aaa !important;
}
.notification-time {
color: #888 !important;
}
.notification-type {
color: #999 !important;
}
#page-metadata {
color: #999 !important;
}
#mark-all-read {
color: #6ba3d8 !important;
}
.queue-edit-user-highlight {
background: rgba(114, 114, 55, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(150, 150, 50, 0.3) !important;
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(114, 114, 55, 0.3) !important;
}
.queue-edit-user-empty-talk {
background: rgba(107, 55, 55, 0.95) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
border: 1px solid rgba(150, 50, 50, 0.3) !important;
padding: 4px 8px;
border-radius: 6px;
box-shadow: 0 2px 6px rgba(107, 55, 55, 0.3) !important;
}
.toggle-switch {
background: #363e51 !important;
}
.settings-toggle.active .toggle-switch {
background: #4a7dcc !important;
}
.toggle-slider {
background: #f1f5ff !important;
}
#block-count-indicator {
background: #22262f !important;
border-color: #ff6666 !important;
}
::-webkit-scrollbar {
background: #22262f;
width: 10px;
}
::-webkit-scrollbar-track {
background: #1a1e27;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #3a4052;
border-radius: 10px;
transition: background 0.2s;
}
::-webkit-scrollbar-thumb:hover {
background: #4a5468;
}
.queue-edit-current {
background: #2a3444 !important;
border-left: 4px solid #5b9aff !important;
box-shadow: inset 0 0 10px rgba(91, 154, 255, 0.15) !important;
}
#right-top {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
border-bottom: 2px solid #363e51 !important;
}
#queue-top {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
}
#bottom-tools {
background: rgba(41, 47, 60, 0.98) !important;
backdrop-filter: blur(8px) !important;
-webkit-backdrop-filter: blur(8px) !important;
}
#right-top a {
color: #6ba3d8 !important;
}
#right-top a:hover {
color: #89b8e8 !important;
}
#right-top .fa {
color: #aaa !important;
}
/* Warning/Notice boxes - dark mode compatible */
.warning-box, .notice-box {
background: rgba(139, 92, 0, 0.15) !important;
border-left-color: #c5a000 !important;
color: #f0d48a !important;
}
.error-box {
background: rgba(139, 0, 0, 0.15) !important;
border-left-color: #dc3545 !important;
color: #ffb3b3 !important;
}
/* Older edit notice */
#old-edit-notice {
background: rgba(139, 92, 0, 0.15) !important;
border-left-color: #c5a000 !important;
color: #f0d48a !important;
}
#old-edit-notice a {
color: #a3c5ff !important;
}
/* Code blocks in light backgrounds */
code {
background: rgba(70, 80, 100, 0.5) !important;
color: #e0e0e0 !important;
}
`,
"mobile": `
/* ==================== MOBILE RESPONSIVE DESIGN ==================== */
@media (max-width: 768px) {
/* Reset overflow and sizing */
* {
box-sizing: border-box;
}
body, html {
overflow-x: hidden;
width: 100vw;
height: 100vh;
}
/* Main container - stack vertically */
#container {
display: flex;
flex-direction: column;
width: 100vw;
height: 100vh;
overflow: hidden;
}
/* ========== QUEUE SECTION ========== */
#queue {
width: 100%;
height: 35vh;
min-height: 200px;
max-height: 35vh;
border-right: none;
border-bottom: 2px solid #999;
display: flex;
flex-direction: column;
}
#queue-top {
height: 50px;
min-height: 50px;
padding: 10px 15px;
flex-shrink: 0;
}
#queue-top-title {
font-size: 16px;
}
#queue-top-items {
font-size: 12px;
}
#queue-list {
flex: 1;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
#queue-list li {
padding: 12px 15px;
font-size: 14px;
line-height: 1.5;
}
#queue-menu {
max-height: 50vh;
overflow-y: auto;
}
/* ========== MAIN CONTENT AREA ========== */
#main {
width: 100%;
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
min-height: 0;
}
/* ========== TOP SECTION (User Contribs & Page History) ========== */
#top {
display: flex;
flex-direction: column;
flex: 1;
overflow: hidden;
min-height: 0;
}
#user-contribs,
#page-history {
width: 100%;
height: 50%;
min-height: 150px;
border-right: none;
border-bottom: 2px solid #999;
display: flex;
flex-direction: column;
overflow: hidden;
}
#page-history {
border-bottom: none;
}
#user-contribs-top,
#page-history-top {
height: 45px;
min-height: 45px;
padding: 10px 15px;
font-size: 14px;
flex-shrink: 0;
}
#left-top,
#right-top {
padding: 10px 15px;
font-size: 14px;
}
#user-contribs-list,
#page-history-list {
flex: 1;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
font-size: 13px;
padding: 5px;
}
#user-contribs-list li,
#page-history-list li {
padding: 10px;
line-height: 1.5;
}
#user-contribs-level {
font-size: 11px;
padding: 3px 7px;
}
#block-count-indicator {
font-size: 10px;
padding: 3px 6px;
margin-right: 5px;
}
#protection-indicator {
font-size: 16px;
}
/* ========== BOTTOM SECTION (Actions & Diff) ========== */
#bottom {
display: none; /* Hidden by default on mobile, shown when needed */
flex-direction: column;
width: 100%;
height: 50vh;
max-height: 50vh;
position: fixed;
bottom: 0;
left: 0;
background: white;
border-top: 2px solid #999;
z-index: 100;
overflow: hidden;
}
#bottom.mobile-show {
display: flex;
}
#left-bottom,
#right-bottom {
width: 100%;
height: 50%;
border-right: none;
border-bottom: 1px solid #ccc;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
#right-bottom {
border-bottom: none;
}
.bottom-tool-title {
padding: 12px 15px;
font-size: 15px;
font-weight: 600;
}
.bottom-tool-content {
padding: 10px;
}
#diff-container {
font-size: 13px;
line-height: 1.5;
padding: 10px;
}
.diff-section {
padding: 10px;
margin: 5px 0;
}
/* ========== ACTION BUTTONS ========== */
.action-button {
padding: 12px 16px;
font-size: 14px;
margin: 5px;
min-height: 44px;
border-radius: 5px;
display: inline-block;
}
/* ========== REVERT MENU ========== */
#revert-menu {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.revert-menu-table {
width: 100%;
min-width: 600px; /* Allow horizontal scroll */
}
.revert-menu-title {
font-size: 13px;
padding: 8px;
min-width: 120px;
}
.revert-menu-info {
padding: 8px;
}
.revert-menu-item {
padding: 10px 12px;
font-size: 13px;
min-width: 44px;
min-height: 44px;
}
/* ========== WARN MENU ========== */
.warn-menu {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.warn-menu-table {
width: 100%;
min-width: 600px;
}
/* ========== POPUPS & DIALOGS ========== */
.popup-container {
width: 100vw;
height: 100vh;
max-width: 100vw;
max-height: 100vh;
margin: 0;
border-radius: 0;
left: 0;
top: 0;
transform: none;
}
.popup-content {
padding: 15px;
height: calc(100vh - 60px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.popup-title {
font-size: 18px;
padding: 15px;
}
.report-warn-popup {
width: 100vw;
height: calc(100vh - 80px);
}
/* ========== SETTINGS DIALOG ========== */
#settings-container {
width: 100vw;
height: 100vh;
max-width: 100vw;
max-height: 100vh;
border-radius: 0;
left: 0;
top: 0;
transform: none;
}
#settings-tabs {
display: flex;
flex-direction: row;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
border-bottom: 2px solid #ccc;
border-right: none;
width: 100%;
flex-wrap: nowrap;
}
.settings-tab {
min-width: 100px;
padding: 15px 10px;
font-size: 14px;
border-right: 1px solid #ccc;
border-bottom: none;
white-space: nowrap;
flex-shrink: 0;
}
#settings-content {
padding: 15px;
height: calc(100vh - 60px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
/* ========== NOTIFICATIONS ========== */
#notification-container {
position: fixed;
top: 10px;
left: 10px;
right: 10px;
width: auto;
max-width: none;
}
.notification {
padding: 12px;
font-size: 13px;
line-height: 1.4;
margin-bottom: 10px;
}
#notifications-panel {
width: calc(100vw - 20px);
max-width: none;
right: 10px;
left: 10px;
max-height: 60vh;
}
/* ========== MENUS ========== */
#queue-menu,
#user-contribs-menu,
#page-history-menu {
font-size: 13px;
max-height: 60vh;
overflow-y: auto;
}
.menu-item {
padding: 12px 15px;
min-height: 44px;
}
/* ========== CONTEXT MENU ========== */
.context-menu {
max-width: calc(100vw - 40px);
max-height: 70vh;
overflow-y: auto;
}
/* ========== WELCOME SCREEN ========== */
#welcome-container {
padding: 20px;
width: 90%;
max-width: 400px;
}
#welcome-container h1 {
font-size: 22px;
}
.about-link {
font-size: 14px;
padding: 8px 12px;
}
#start-button {
font-size: 16px;
padding: 14px 24px;
min-height: 48px;
}
/* ========== TOUCH TARGETS ========== */
button,
a,
.clickable {
min-height: 44px;
min-width: 44px;
}
/* ========== FIX MOBILE WEBKIT ISSUES ========== */
input,
textarea,
select {
font-size: 16px; /* Prevents zoom on iOS */
}
/* ========== SCROLLBAR STYLING ========== */
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-thumb {
background: #999;
border-radius: 3px;
}
}
/* ==================== SMALL MOBILE (≤480px) ==================== */
@media (max-width: 480px) {
#queue {
height: 30vh;
max-height: 30vh;
min-height: 150px;
}
#queue-top-title {
font-size: 15px;
}
#queue-list li {
padding: 10px 12px;
font-size: 13px;
}
#user-contribs-top,
#page-history-top {
font-size: 13px;
padding: 8px 12px;
}
#user-contribs-list li,
#page-history-list li {
font-size: 12px;
}
.action-button {
padding: 10px 14px;
font-size: 13px;
}
.revert-menu-item {
padding: 8px 10px;
font-size: 12px;
}
.notification {
font-size: 12px;
}
}
/* ==================== TABLET (769px-1024px) ==================== */
@media (min-width: 769px) and (max-width: 1024px) {
#container {
flex-direction: row;
}
#queue {
width: 320px;
height: 100%;
border-right: 2px solid #bfbfbf;
border-bottom: none;
}
#main {
flex: 1;
display: flex;
flex-direction: column;
}
#top {
flex-direction: row;
flex: 1;
}
#user-contribs,
#page-history {
width: 50%;
height: 100%;
border-bottom: none;
}
#bottom {
display: flex;
flex-direction: row;
position: relative;
height: auto;
max-height: none;
}
#left-bottom,
#right-bottom {
width: 50%;
height: auto;
}
}
`
};
// </nowiki>
// <nowiki>
const wikishieldHTML = {
"head": `
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
`,
"initial": `
<div id="container">
<div id="welcome-container">
<h1>Welcome to 🛡️WikiShield</h1>
<a href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="about-link">About</a>
<a href="https://en.wikipedia.org/wiki/Wikipedia talk:WikiShield" target="_blank" class="about-link">Discuss</a>
<span class="about-link">Version ${wikishieldVersion}</span>
<div id="rollback-needed">
<p>You must have rollback or admin rights to use this script.</p>
<p>You can apply for rollback rights <a href="https://en.wikipedia.org/wiki/WP:PERM/R" target="_blank">here</a>.</p>
</div>
<button id="start-button">Start 🛡️WikiShield</button>
</div>
</div>
`,
"main": `
<div id="container">
<div id="queue">
<div id="queue-top">
<div id="queue-top-left">
<span id="queue-top-title">Queue</span>
<span id="queue-top-items">0 items</span>
</div>
<div id="queue-top-right">
<span class="fa fa-bell" id="notifications-icon" data-tooltip="Notifications" style="position: relative;">
<span id="notification-count" style="display: none; position: absolute; top: -5px; right: -5px; background: red; color: white; border-radius: 50%; width: 16px; height: 16px; font-size: 10px; text-align: center; line-height: 16px; font-family: sans-serif;"></span>
</span>
<span class="fa fa-trash" id="delete-queue" data-tooltip="Clear queue"></span>
<span class="fa fa-gear" id="open-settings" data-tooltip="Open settings"></span>
</div>
</div>
<div id="queue-items"></div>
<div class="width-adjust" id="queue-width-adjust"></div>
</div>
<div id="notifications-panel">
<div id="notifications-header">
<span>Notifications</span>
<span id="mark-all-read" style="font-size: 0.85em; font-weight: normal; cursor: pointer; color: #0645ad;">Mark all as read</span>
</div>
<div id="notifications-list"></div>
</div>
<div id="right-container">
<div id="right-top"></div>
<div id="right-content">
<div id="main-container">
<div id="diff-container"></div>
<div id="progress-bar-container"></div>
<div id="bottom-tools">
<div id="bottom-tools-left">
<div id="bottom-revert">
<div class="bottom-tool-title">Revert and warn</div>
<div id="revert-menu" class="bottom-tool-content"></div>
</div>
<div id="bottom-warn">
<div class="bottom-tool-title">Warn</div>
<div id="warn-menu" class="bottom-tool-content"></div>
</div>
<div id="bottom-user">
<div class="bottom-tool-title">User</div>
<div class="bottom-tool-content">
<div id="user-open-user-page" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open user page</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-open-user-talk" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open user talk</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-view-contribs" class="bottom-tool-option">
<div class="bottom-tool-option-title">View user contributions</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-view-filter-log" class="bottom-tool-option">
<div class="bottom-tool-option-title">View filter log hits</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-add-whitelist" class="bottom-tool-option">
Add to whitelist
<span class="fas fa-circle-question" data-tooltip="You won't see any more edits by this user"></span>
</div>
<div id="user-highlight" class="bottom-tool-option">
Highlight
<span class="fas fa-circle-question" data-tooltip="This user's future edits will go to the top of your queue"></span>
</div>
<div id="user-welcome" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Welcome</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<div id="user-report-aiv" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Report (AIV)</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<div id="user-report-uaa" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Report (UAA)</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<!--<div id="user-block" class="bottom-tool-option tool-block submenu">
<div class="bottom-tool-option-title">Block</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>-->
</div>
</div>
<div id="bottom-page">
<div class="bottom-tool-title">Page</div>
<div class="bottom-tool-content">
<div id="page-open-page" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open page</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="page-open-talk" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open talk page</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="page-view-history" class="bottom-tool-option">
<div class="bottom-tool-option-title">View page history</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="page-request-protection" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Request protection</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<!--<div id="page-protect" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Protect</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>-->
</div>
</div>
<div id="bottom-edit">
<div class="bottom-tool-title">Edit</div>
<div class="bottom-tool-content">
<div id="edit-view-revision" class="bottom-tool-option">
<div class="bottom-tool-option-title">View revision</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="edit-view-diff" class="bottom-tool-option">
<div class="bottom-tool-option-title">View diff</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="edit-thank-user" class="bottom-tool-option">Thank user</div>
<div id="edit-rollback" class="bottom-tool-option">Rollback</div>
<div id="edit-rollback-goodfaith" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Rollback (good faith)</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
<div id="edit-undo" class="bottom-tool-option submenu">
<div class="bottom-tool-option-title">Undo</div>
<span class="bottom-tool-option-chevron fa fa-chevron-right"></span>
<div class="bottom-tool-option-subcontent"></div>
</div>
</div>
</div>
</div>
<div id="bottom-tools-stats">
<div>
<span class="fa fa-user"></span>
<span class="stat-value" id="stat-total-contribs">-</span>
<span>edits</span>
</div>
</div>
</div>
</div>
<div id="right-details">
<div class="width-adjust" id="details-width-adjust"></div>
<div id="user-contribs">
<div id="user-contribs-top">
<div id="user-contribs-left">
<div id="user-contribs-title">User contributions</div>
<div id="user-contribs-count">_ edits</div>
</div>
<div id="block-count-indicator" style="display: none;"></div>
<div id="user-contribs-level" data-tooltip="Warning level">0</div>
</div>
<div id="user-contribs-content"></div>
</div>
<div class="height-adjust"></div>
<div id="page-history">
<div id="page-history-top">
<div>
<div id="page-history-title">Page history</div>
<div id="page-metadata" style="font-size: 0.75em; color: #666; margin-top: 3px;"></div>
</div>
<div id="protection-indicator"></div>
</div>
<div id="page-history-content"></div>
</div>
</div>
</div>
</div>
</div>
`,
"edit-context-menu": `
<div id="context-ores"><span id="context-ores-number">0</span> ORES score</div>
<div id="context-remove">Remove from queue</div>
<div id="context-whitelist">Whitelist user</div>
<div id="context-open-history">View page history</div>
<div id="context-open-contribs">View user contribs</div>
`,
"settings": `
<div class="settings">
<div class="settings-left">
<div class="settings-group">
<div class="settings-group-title">General</div>
<div class="settings-left-menu-item" id="settings-general-button">
<i class="fas fa-cog"></i>
<span>Settings</span>
</div>
<div class="settings-left-menu-item" id="settings-appearance-button">
<i class="fas fa-paint-brush"></i>
<span>Appearance</span>
</div>
<div class="settings-left-menu-item" id="settings-controls-button">
<i class="fas fa-keyboard"></i>
<span>Controls</span>
</div>
</div>
<div class="settings-group">
<div class="settings-group-title">Monitoring</div>
<div class="settings-left-menu-item" id="settings-ai-button">
<i class="fas fa-robot"></i>
<span>AI Analysis</span>
</div>
<div class="settings-left-menu-item" id="settings-roles-button">
<i class="fas fa-users"></i>
<span>User Roles</span>
</div>
</div>
<div class="settings-group">
<div class="settings-group-title">Lists</div>
<div class="settings-left-menu-item" id="settings-whitelist-button">
<i class="fas fa-check-circle"></i>
<span>Whitelist</span>
</div>
<div class="settings-left-menu-item" id="settings-highlight-button">
<i class="fas fa-star"></i>
<span>Highlighted</span>
</div>
</div>
<div class="settings-group">
<div class="settings-group-title">Info</div>
<div class="settings-left-menu-item" id="settings-statistics-button">
<i class="fas fa-chart-bar"></i>
<span>Statistics</span>
</div>
<div class="settings-left-menu-item" id="settings-about-button">
<i class="fas fa-info-circle"></i>
<span>About</span>
</div>
</div>
</div>
<div class="settings-right"></div>
</div>
`
};
// </nowiki>
// <nowiki>
class wikishieldUtil {
constructor() {}
/**
* Given a Date object, return a string in the format YYYY-MM-DDTHH:MM:SS
* @param {Date} date The date to convert
* @returns {String} The date in the format YYYY-MM-DDTHH:MM:SS
*/
utcString(date) {
return date.getUTCFullYear() + "-" +
this.padString(date.getUTCMonth() + 1, 2) + "-" +
this.padString(date.getUTCDate(), 2) + "T" +
this.padString(date.getUTCHours(), 2) + ":" +
this.padString(date.getUTCMinutes(), 2) + ":" +
this.padString(date.getUTCSeconds(), 2);
}
/**
* Given a string and a length, pad the string with 0s to the left until it is the given length
* @param {String} str The string to pad
* @param {Number} len The length to pad to
* @returns {String} The padded string
*/
padString(str, len) {
str = str.toString();
while (str.length < len) {
str = "0" + str;
}
return str;
}
/**
* Given a string, encode it for use in a URL
* @param {String} str The string to encode
* @returns {String} The encoded string
*/
encodeuri(str) {
return encodeURIComponent(str);
}
/**
* Get the section name for the current month and year
* @returns {String} The section name
*/
monthSectionName() {
const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
const currentMonth = months[new Date().getUTCMonth()];
const currentYear = new Date().getUTCFullYear();
return currentMonth + " " + currentYear;
}
/**
* Given a string, escape it for use in HTML
* @param {String} str The string to escape
* @returns {String} The escaped string
*/
escapeHtml(str) {
return (str || "").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
}
/**
* Given the title of a page, return the URL to that page
* @param {String} title The title of the page
* @param {Boolean} usePhpString Whether to use /w/index.php in the link
* @returns {String} The URL to the page
*/
pageLink(title, usePhpString=false) {
return usePhpString
? `https://${wikishield.options.wiki}.wikipedia.org/w/index.php${title}`
: `https://${wikishield.options.wiki}.wikipedia.org/wiki/${this.encodeuri(title)}`;
}
/**
* If the given string is longer than the given length, truncate it and add "..." to the end
* @param {String} str The string to truncate
* @param {Number} len The length to truncate to
* @returns {String} The truncated string
*/
maxStringLength(str, len) {
return str.length > len ? str.substring(0, len) + "..." : str;
}
/**
* Given the number of bytes changed in an edit, return the color
* @param {Number} delta The number of bytes changed
* @returns {String} The color
*/
getChangeColor(delta) {
return delta > 0 ? "green" : (delta < 0 ? "red" : "black");
}
/**
* Given the number of bytes changed in an edit, return the string (eg. "+100")
* @param {Number} delta The number of bytes changed
* @returns {String} The string
*/
getChangeString(delta) {
return delta > 0 ? "+" + delta : (delta === 0 ? "0" : "–" + Math.abs(delta).toString());
}
/**
* Given a timestamp, return a string representing how long ago it was
* @param {String} timestamp The timestamp
* @returns {String} Time ago
*/
timeAgo(timestamp) {
const difference = new Date().getTime() - new Date(timestamp);
const seconds = Math.floor(difference / 1000);
// Handle future timestamps (clock skew)
if (seconds < 0) {
return "just now";
}
if (seconds > 60) {
if (seconds > 60 * 60) {
if (seconds > 60 * 60 * 24) {
const val = Math.floor(seconds / 60 / 60 / 24);
return val + " day" + (val !== 1 ? "s" : "") + " ago";
}
const val = Math.floor(seconds / 60 / 60);
return val + " hour" + (val !== 1 ? "s" : "") + " ago";
}
const val = Math.floor(seconds / 60);
return val + " minute" + (val !== 1 ? "s" : "") + " ago";
}
return seconds + " second" + (seconds !== 1 ? "s" : "") + " ago";
}
}
class wikishieldLog {
constructor() {}
/**
* Log a message to the console
* @param {String} text The message to log
*/
log(text) {
console.log(`🛡️WikiShield: ${text}`);
}
}
// </nowiki>
// <nowiki>
class wikishieldAPI {
constructor(api) {
this.api = api;
}
/**
* Edit the given page with the given content and summary
* @param {String} title The title of the page to edit
* @param {String} content The content to edit the page with
* @param {String} summary The edit summary
* @param {Object} params Any additional parameters to pass to the API
* @returns {Promise<Boolean>}
*/
async edit(title, content, summary, params={}) {
if (wikishield.testingMode) {
console.log("Edit", { title, content, summary });
return true;
}
try {
await this.api.postWithEditToken(Object.assign({}, {
"action": "edit",
"title": title,
"text": content,
"summary": summary,
"format": "json",
"tags": "WikiShield script"
}, params));
return true;
} catch (err) {
wikishield.logger.log(`Could not edit page ${title}: ${err}`);
return false;
}
}
/**
* Edit a page to append text
* @param {String} title The title of the page to edit
* @param {String} content Content to append to the page
* @param {String} summary Edit summary to use
* @returns {Promise<Boolean>}
*/
async appendText(title, content, summary) {
if (wikishield.testingMode) {
console.log("Append text", { title, content, summary });
return true;
}
try {
await this.api.postWithEditToken({
"action": "edit",
"title": title,
"appendtext": "\n" + content,
"summary": summary,
"format": "json",
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log(`Could not append text to page ${title}: ${err}`);
return false;
}
}
/**
* Get the content of the given pages
* @param {String} titles The titles of the pages to get, separated by "|"
* @returns {Promise<Object>} The content of the pages
*/
async getText(titles) {
try {
const response = await this.api.get({
"action": "query",
"prop": "revisions",
"titles": titles,
"rvprop": "content",
"rvslots": "*",
"format": "json",
"formatversion": 2
});
const pages = response.query.pages.map(page => {
return [page["title"], page["missing"] ? "" : page.revisions[0].slots.main.content];
});
return pages
.reduce((a, v) => ({...a, [v[0]]: v[1]}), {});
} catch (err) {
wikishield.logger.log(`Could not fetch page ${titles}: ${err}`);
}
}
/**
* Get the content of a single page
* @param {String} title
* @returns {Promise<String>} The page content
*/
async getSinglePageContent(title) {
try {
const data = await this.getText(title);
return data[title];
} catch (err) {
console.log("Could not fetch page", err);
}
}
/**
* Get the content of the given revision id
* @param {Number} revid The revision id to get
* @returns {Promise<String>} The content of the revision
*/
async getTextByRevid(revid) {
try {
const response = await this.api.get({
"action": "query",
"prop": "revisions",
"revids": revid,
"rvprop": "content",
"rvslots": "*",
"format": "json",
"formatversion": 2
});
const page = response.query.pages[0];
return page["missing"] ? "" : page.revisions[0].slots.main.content;
} catch (err) {
wikishield.logger.log(`Could not fetch page with revid ${revid}: ${err}`);
}
}
/**
* Get the difference between two revisions of the given page
* @param {String} title The title of the page
* @param {Number} old_revid The old revision ID
* @param {Number} revid The new revision ID
* @returns {Promise<String>} The difference between the two revisions, in HTML format
*/
async diff(title, old_revid, revid) {
try {
const response = await this.api.get({
"action": "compare",
"fromrev": old_revid,
"torev": revid,
"prop": "diff",
"format": "json",
"formatversion": 2
});
return response.compare.body;
} catch (err) {
wikishield.logger.log(`Could not fetch diff for page ${title}: ${err}`);
}
}
/**
* Get the contributions of the given user
* @param {String} user The user to get contributions for
* @returns {Promise<Array>} The contributions
*/
async contribs(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "usercontribs",
"ucuser": user,
"uclimit": 10,
"ucprop": "title|ids|timestamp|comment|flags|sizediff|tags",
"format": "json",
"formatversion": 2
});
return response.query.usercontribs;
} catch (err) {
wikishield.logger.log(`Could not fetch contributions for user ${user}: ${err}`);
}
}
/**
* Get the edit count of the given users
* @param {String} users The users to get edit counts for, separated by "|"
* @returns {Promise<Array>} The edit counts
*/
async editCount(users) {
try {
const response = await this.api.get({
"action": "query",
"list": "users",
"ususers": users,
"usprop": "editcount",
"format": "json",
"formatversion": 2
});
return response.query.users;
} catch (err) {
wikishield.logger.log(`Could not fetch edit count for users ${users}: ${err}`);
}
}
/**
* Get the filter log of the given user
* @param {String} user The user to get the filter log for
* @returns {Promise<Array>} The filter log
*/
async filterLog(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "filter",
"leuser": user,
"lelimit": 50,
"format": "json",
"formatversion": 2
});
return response.query.logevents;
} catch (err) {
wikishield.logger.log(`Could not fetch filter log for user ${user}: ${err}`);
}
}
/**
* Get the number of times a user has been blocked
* @param {String} user The username to check
* @returns {Promise<Number>} The number of blocks
*/
async getBlockCount(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "block",
"letitle": `User:${user}`,
"leaction": "block/block",
"lelimit": 500,
"format": "json",
"formatversion": 2
});
return response.query.logevents ? response.query.logevents.length : 0;
} catch (err) {
console.log(`Could not fetch block count for user ${user}:`, err);
return 0;
}
}
/**
* Get detailed block history for a user
* @param {String} user The username
* @returns {Promise<Array>} Array of block log entries
*/
async getBlockHistory(user) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "block",
"letitle": `User:${user}`,
"leaction": "block/block",
"lelimit": 10,
"leprop": "user|timestamp|comment|details",
"format": "json",
"formatversion": 2
});
return response.query.logevents || [];
} catch (err) {
console.log(`Could not fetch block history for user ${user}:`, err);
return [];
}
}
/**
* Get the history of the given page
* @param {String} page The page to get the history for
* @returns {Promise<Array>} The history
*/
async history(page) {
try {
const response = await this.api.get({
"action": "query",
"prop": "revisions",
"titles": page,
"rvprop": "title|ids|timestamp|comment|flags|sizediff|user|tags|size",
"rvlimit": 11,
"format": "json",
"formatversion": 2
});
const revisions = response.query.pages[0].revisions;
for (let i = 0; i < Math.min(10, revisions.length); i++) {
if (i + 1 < revisions.length) {
revisions[i]["sizediff"] = revisions[i].size - revisions[i + 1].size;
} else {
revisions[i]["sizediff"] = revisions[i].size;
}
}
return revisions.splice(0, 10);
} catch (err) {
wikishield.logger.log(`Could not fetch history for page ${page}: ${err}`);
}
}
/**
* Get page protection information
* @param {String} page The page title
* @returns {Promise<Object>} Protection info with level and type
*/
async getPageProtection(page) {
try {
const response = await this.api.get({
"action": "query",
"titles": page,
"prop": "info",
"inprop": "protection",
"format": "json",
"formatversion": 2
});
const pageData = response.query.pages[0];
if (pageData && pageData.protection && pageData.protection.length > 0) {
// Get the highest protection level
const protections = pageData.protection;
let highestLevel = null;
let types = [];
for (const prot of protections) {
types.push(prot.type);
if (prot.level === "sysop") {
highestLevel = "full";
} else if (prot.level === "autoconfirmed" && highestLevel !== "full") {
highestLevel = "semi";
} else if (prot.level === "extendedconfirmed" && highestLevel !== "full") {
highestLevel = "extended";
}
}
return {
protected: true,
level: highestLevel,
types: types
};
}
return { protected: false };
} catch (err) {
console.log(`Could not fetch protection info for ${page}:`, err);
return { protected: false };
}
}
/**
* Get latest revision IDs for multiple pages
* @param {String} pages Pipe-separated list of page titles
* @returns {Promise<Object>} Object mapping page titles to latest revision IDs
*/
async getLatestRevisions(pages) {
try {
// Split pages string into array
const pageArray = pages.split("|");
const result = {};
// Make individual requests for each page to avoid API parameter issues
for (const page of pageArray) {
try {
const response = await this.api.get({
"action": "query",
"titles": page,
"prop": "revisions",
"rvprop": "ids",
"rvlimit": 1,
"format": "json"
});
if (response.query && response.query.pages) {
for (const pageId in response.query.pages) {
const pageData = response.query.pages[pageId];
if (pageData.revisions && pageData.revisions.length > 0 && pageData.title) {
result[pageData.title] = pageData.revisions[0].revid;
}
}
}
} catch (pageErr) {
// Skip pages that fail individually
console.log(`Failed to fetch revision for ${page}: ${pageErr}`);
}
}
return result;
} catch (err) {
wikishield.logger.log(`Could not fetch latest revisions: ${err}`);
return {};
}
}
/**
* Get page metadata including date format and English variant
* @param {String} page The page title
* @returns {Promise<Object>} Object with dateFormat and englishVariant
*/
async getPageMetadata(page) {
try {
const response = await this.api.get({
"action": "query",
"prop": "info",
"titles": page,
"format": "json",
"formatversion": 2
});
const pageInfo = response.query.pages[0];
// Get the page content to check for {{Use dmy dates}} or {{Use mdy dates}}
const contentResponse = await this.api.get({
"action": "parse",
"page": page,
"prop": "wikitext",
"format": "json",
"formatversion": 2
});
const wikitext = contentResponse.parse ? contentResponse.parse.wikitext : "";
// Check for date format templates
let dateFormat = "Unknown";
if (/\{\{Use dmy dates/i.test(wikitext)) {
dateFormat = "dmy (day-month-year)";
} else if (/\{\{Use mdy dates/i.test(wikitext)) {
dateFormat = "mdy (month-day-year)";
}
// Check for English variant templates
let englishVariant = "Unknown";
if (/\{\{Use British English/i.test(wikitext)) {
englishVariant = "British English";
} else if (/\{\{Use American English/i.test(wikitext)) {
englishVariant = "American English";
} else if (/\{\{Use Canadian English/i.test(wikitext)) {
englishVariant = "Canadian English";
} else if (/\{\{Use Australian English/i.test(wikitext)) {
englishVariant = "Australian English";
}
return { dateFormat, englishVariant };
} catch (err) {
wikishield.logger.log(`Could not fetch metadata for page ${page}: ${err}`);
return { dateFormat: "Unknown", englishVariant: "Unknown" };
}
}
/**
* Get recent edits to Wikipedia
* @param {String} namespaces The namespaces to get recent changes for, separated by "|"
* @param {String} since The timestamp to start from
* @returns {Promise<Array>} The recent changes
*/
async recentChanges(namespaces, since) {
try {
const response = await this.api.get({
"action": "query",
"list": "recentchanges",
"rcnamespace": namespaces,
"rclimit": 50,
"rcprop": "title|ids|sizes|flags|user|tags|comment|timestamp",
"rctype": "edit",
"format": "json",
"rcstart": since || "",
"rcdir": since ? "newer" : "older"
});
return response.query.recentchanges;
} catch (err) {
wikishield.logger.log(`Could not fetch recent changes: ${err}`);
}
}
/**
* Get the ORES scores for the given revisions
* @param {String} revids The revision IDs to get ORES scores for, separated by "|"
* @returns {Promise<Object>} The ORES scores
*/
async ores(revids) {
try {
const response = await this.api.get({
"action": "query",
"format": "json",
"formatversion": 2,
"prop": "revisions",
"revids": revids,
"rvprop": "oresscores|ids",
"rvslots": "*"
});
const scores = response.query.pages.map(page => {
return ["goodfaith"] in page["revisions"][0]["oresscores"] ? [
page["revisions"][0]["revid"],
page["revisions"][0]["oresscores"]["goodfaith"]["false"]
] : [ page["revisions"][0]["revid"], 0 ];
});
return scores
.reduce((a, v) => ({...a, [v[0]]: v[1]}), {});
} catch (err) {
wikishield.logger.log(`Could not fetch ORES scores for revision ${revids}: ${err}`);
}
}
/**
* Check if the given users are blocked
* @param {String} users The users to get blocks for, separated by "|"
* @returns {Promise<Object>} The blocks
*/
async usersBlocked(users) {
try {
const response = await this.api.get({
"action": "query",
"list": "blocks",
"bkusers": users,
"bkprop": "id|user|by|timestamp|expiry|reason",
"format": "json",
"formatversion": 2
});
const blocks = {};
users.split("|").forEach(user => blocks[user] = false);
response.query.blocks.forEach(block => blocks[block.user] = !block.partial);
return blocks;
} catch (err) {
wikishield.logger.log(`Could not fetch blocks for users ${users}: ${err}`);
}
}
/**
* Rollback the user's edits
* @param {String} title The title of the page to rollback
* @param {String} user The user to rollback
* @param {String} summary The summary to use for the rollback
* @returns {Promise<Boolean>} Whether the rollback was successful
*/
async rollback(title, user, summary) {
if (wikishield.testingMode) {
console.log("Rollback", { title, user, summary });
return true;
}
try {
await this.api.rollback(title, user, {
"summary": summary,
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Undo a single edit
* @param {Object} edit The edit object to undo
* @param {String} reason The reason for undoing
* @returns {Promise<Boolean>} Whether the undo was successful
*/
async undoEdit(edit, reason) {
if (wikishield.testingMode) {
console.log("Undo", { edit, reason });
return true;
}
try {
// Get the revision ID to undo and the previous revision
const revid = edit.revid;
const title = edit.page.title;
// Use the MediaWiki API to undo the edit
await this.api.postWithToken("csrf", {
"action": "edit",
"title": title,
"undo": revid,
"summary": reason,
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log("Error undoing edit:", err);
return false;
}
}
/**
* Block a user with the given details
* @param {String} user User to block
* @param {String} summary Reason to use when blocking
* @param {String} duration Length of time to block the user
* @param {Boolean} blockCreation Prevent user from creating accounts when blocked
* @param {Boolean} blockEmail Prevent user from sending emails
* @param {Boolean} blockTalk Prevent user from editing their own talk page
* @param {Boolean} anonOnly
* @returns {Promise<Boolean>} Whether the block was successful
*/
async block(user, summary, duration, blockCreation=false, blockEmail=false, blockTalk=false, anonOnly=true) {
if (wikishield.testingMode) {
console.log("Block", { user, summary, duration });
return true;
}
try {
await this.api.postWithToken("csrf", Object.assign(
{
"action": "block",
"user": user,
"expiry": duration,
"reason": summary,
"tags": "WikiShield script"
},
blockCreation ? { "nocreate": "" } : {},
blockEmail ? { "noemail": "" } : {},
blockTalk ? {} : { "allowusertalk": "" },
anonOnly ? { "anononly": "" } : {}
));
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Thank a user for the given edit
* @param {Number} revid
* @returns {Promise<Boolean>} Whether the action was successful
*/
async thank(revid) {
if (wikishield.testingMode) {
console.log("Thank", { revid });
return true;
}
try {
await this.api.postWithToken("csrf", {
"action": "thank",
"rev": revid
});
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Get level and expiry of edit and move protections for a page
* @param {String} page Name of the page to get details for
* @returns {Promise<Object>} The details of the protection
*/
async getProtectionDetails(page) {
try {
const response = await this.api.get({
"action": "query",
"list": "logevents",
"letype": "protect",
"letitle": page,
"lelimit": 1
});
const details = {
edit: "all", editExpiry: "infinite",
move: "all", moveExpiry: "infinite"
};
if (Object.keys(response).includes("params") && Object.keys(response.params).includes("details")) {
for (const item of response.params.details) {
if (item.type === "edit") {
details.edit = item.level;
details.editExpiry = item.expiry;
}
if (item.type === "move") {
details.move = item.level;
details.moveExpiry = item.expiry;
}
}
}
return details;
} catch (err) {
console.log(err);
}
}
/**
* Protect a page with the given details
* @param {String} page Page to protect
* @param {String} summary Summary to use in protection
* @param {Object} details Levels and expiry of protection
* @returns {Promise<Boolean>} Whether the protection was successful
*/
async protect(page, summary, details) {
if (wikishield.testingMode) {
console.log("Protect", { page, summary, details });
return true;
}
try {
await this.api.postWithToken("csrf", {
"action": "protect",
"title": page,
"reason": summary,
"protections": `edit=${details.edit}|move=${details.move}`,
"expiry": `${details.editExpiry}|${details.moveExpiry}`,
"tags": "WikiShield script"
});
return true;
} catch (err) {
console.log(err);
return false;
}
}
/**
* Make a GET request to the MediaWiki API
* @param {Object} params The parameters for the API request
* @returns {Promise<Object>} The API response
*/
async get(params) {
return await this.api.get(params);
}
/**
* Make a POST request to the MediaWiki API with a token
* @param {String} tokenType The type of token to use
* @param {Object} params The parameters for the API request
* @returns {Promise<Object>} The API response
*/
async postWithToken(tokenType, params) {
return await this.api.postWithToken(tokenType, params);
}
}
// </nowiki>
// <nowiki>
/**
* Puter.js AI Integration for edit analysis
*/
class wikishieldOllamaAI {
constructor(serverUrl, model) {
this.serverUrl = serverUrl || "http://localhost:11434";
this.model = model || "";
this.cache = new Map(); // Cache results to avoid repeated API calls
this.rateLimitDelay = 1000; // Minimum delay between API calls
this.lastCallTime = 0;
this.availableModels = [];
this.activeRequests = new Map(); // Track active requests by revid for cancellation
}
/**
* Fetch available models from Ollama server
* @returns {Promise<Array>} List of available models
*/
async fetchModels() {
try {
const response = await fetch(`${this.serverUrl}/api/tags`, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
});
if (!response.ok) {
throw new Error(`Failed to fetch models: ${response.status} ${response.statusText}`);
}
const data = await response.json();
this.availableModels = data.models || [];
return this.availableModels;
} catch (err) {
console.error('Error fetching Ollama models:', err);
throw err;
}
}
/**
* Test connection to Ollama server
* @returns {Promise<boolean>} True if server is reachable
*/
async testConnection() {
try {
const response = await fetch(`${this.serverUrl}/api/version`, {
method: 'GET'
});
return response.ok;
} catch (err) {
console.error('Ollama connection test failed:', err);
return false;
}
}
/**
* Analyze an edit using Ollama AI
* @param {Object} edit The edit object containing diff, title, user, comment, etc.
* @returns {Promise<Object>} Analysis result with issues array and summary
*/
async analyzeEdit(edit) {
if (!wikishield.options.enableOllamaAI) {
return null;
}
if (!this.model) {
console.error('No Ollama model selected');
return null;
}
// Check cache
const cacheKey = `${edit.revid}`;
if (this.cache.has(cacheKey)) {
return this.cache.get(cacheKey);
}
// Cancel any existing request for this edit
if (this.activeRequests.has(cacheKey)) {
this.activeRequests.get(cacheKey).abort();
this.activeRequests.delete(cacheKey);
}
// Create abort controller for this request
const abortController = new AbortController();
this.activeRequests.set(cacheKey, abortController);
// Rate limiting
const now = Date.now();
const timeSinceLastCall = now - this.lastCallTime;
if (timeSinceLastCall < this.rateLimitDelay) {
await new Promise(resolve => setTimeout(resolve, this.rateLimitDelay - timeSinceLastCall));
}
// Check if request was cancelled during rate limit delay
if (abortController.signal.aborted) {
this.activeRequests.delete(cacheKey);
console.log(`AI analysis cancelled for edit ${cacheKey} (during rate limit)`);
return null;
}
try {
const prompt = this.buildAnalysisPrompt(edit);
const response = await this.callOllamaAI(prompt, abortController.signal);
const analysis = this.parseOllamaResponse(response);
// Cache the result
this.cache.set(cacheKey, analysis);
// Limit cache size
if (this.cache.size > 100) {
const firstKey = this.cache.keys().next().value;
this.cache.delete(firstKey);
}
this.lastCallTime = Date.now();
// Clean up active request
this.activeRequests.delete(cacheKey);
return analysis;
} catch (err) {
// Clean up active request
this.activeRequests.delete(cacheKey);
// If request was aborted, return null instead of error
if (err.name === 'AbortError' || err.message?.includes('aborted')) {
console.log(`AI analysis cancelled for edit ${cacheKey}`);
return null;
}
console.error("Ollama AI analysis error:", err);
return {
hasIssues: false,
issues: [],
summary: "Analysis failed",
error: err.message
};
}
}
/**
* Convert HTML diff to human-readable text format with context
* @param {String} diffHTML The HTML diff from MediaWiki
* @returns {String} Readable text representation
*/
convertDiffToReadable(diffHTML) {
if (!diffHTML) return "No changes visible";
// Create a temporary div to parse HTML
const tempDiv = document.createElement('div');
// Wrap in table since the diff HTML is just table rows
tempDiv.innerHTML = `<table>${diffHTML}</table>`;
let readableLines = [];
let contextBuffer = []; // Buffer for context lines
const MAX_CONTEXT = 2; // Number of context lines before/after changes
// Get all table rows
const rows = tempDiv.querySelectorAll('tr');
for (let i = 0; i < rows.length; i++) {
const row = rows[i];
// Skip line number rows
if (row.querySelector('.diff-lineno')) {
continue;
}
// Get the cells from both sides
const marker = row.querySelector('.diff-marker');
const leftCell = row.querySelector('.diff-side-deleted');
const rightCell = row.querySelector('.diff-side-added');
if (!leftCell || !rightCell) continue;
// Check if this is a context line (unchanged on both sides)
const isContext = leftCell.classList.contains('diff-context') &&
rightCell.classList.contains('diff-context');
if (isContext) {
// Get the text content
const contextText = this.cleanDiffText(leftCell);
// Skip empty lines
if (!contextText.trim() || contextText === '<br />') {
continue;
}
// Add to context buffer
contextBuffer.push(` ${contextText}`);
// Keep only last MAX_CONTEXT lines in buffer
if (contextBuffer.length > MAX_CONTEXT) {
contextBuffer.shift();
}
} else {
// This is a change line
// First, flush context buffer if we have any
if (contextBuffer.length > 0) {
// Add spacing if not first group
if (readableLines.length > 0) {
readableLines.push('');
}
readableLines.push(...contextBuffer);
contextBuffer = [];
}
// Process the change
const markerText = marker?.getAttribute('data-marker') || '';
if (markerText === '−' || leftCell.classList.contains('diff-deletedline')) {
// Deleted line
const text = this.cleanDiffText(leftCell, true);
if (text.trim() && text !== '<br />') {
readableLines.push(`- ${text}`);
}
}
if (markerText === '+' || rightCell.classList.contains('diff-addedline')) {
// Added line
const text = this.cleanDiffText(rightCell, true);
if (text.trim() && text !== '<br />') {
readableLines.push(`+ ${text}`);
}
}
// Clear context buffer after changes (we'll start fresh)
contextBuffer = [];
// Look ahead for immediate context after this change
let contextLinesAfter = 0;
for (let j = i + 1; j < Math.min(i + 1 + MAX_CONTEXT, rows.length); j++) {
const nextRow = rows[j];
const nextLeft = nextRow.querySelector('.diff-side-deleted');
const nextRight = nextRow.querySelector('.diff-side-added');
if (!nextLeft || !nextRight) continue;
const isNextContext = nextLeft.classList.contains('diff-context') &&
nextRight.classList.contains('diff-context');
if (isNextContext) {
const nextText = this.cleanDiffText(nextLeft);
if (nextText.trim() && nextText !== '<br />') {
readableLines.push(` ${nextText}`);
contextLinesAfter++;
}
} else {
break; // Stop at next change
}
}
// Skip the context lines we just added
i += contextLinesAfter;
}
}
// If no changes were found
if (readableLines.length === 0) {
return "No significant changes detected in diff";
}
// Limit output to prevent token explosion
if (readableLines.length > 60) {
const kept = readableLines.slice(0, 60);
kept.push(`\n... (${readableLines.length - 60} more lines omitted)`);
return kept.join('\n');
}
return readableLines.join('\n');
}
/**
* Clean and extract text from a diff cell
* @param {Element} cell The diff cell element
* @param {Boolean} highlightChanges Whether to highlight ins/del tags
* @returns {String} Clean text content
*/
cleanDiffText(cell, highlightChanges = false) {
if (!cell) return '';
const div = cell.querySelector('div');
if (!div) {
const text = cell.textContent || '';
return text.trim();
}
const clone = div.cloneNode(true);
if (highlightChanges) {
// Highlight inline insertions
const insElements = clone.querySelectorAll('ins');
insElements.forEach(ins => {
const text = ins.textContent || '';
ins.replaceWith(`[[${text}]]`);
});
// Highlight inline deletions
const delElements = clone.querySelectorAll('del');
delElements.forEach(del => {
const text = del.textContent || '';
del.replaceWith(`~~${text}~~`);
});
} else {
// For context lines, just remove the tags
const insElements = clone.querySelectorAll('ins');
insElements.forEach(ins => {
ins.replaceWith(ins.textContent || '');
});
const delElements = clone.querySelectorAll('del');
delElements.forEach(del => {
del.replaceWith(del.textContent || '');
});
}
// Get text and clean up
let text = clone.textContent || clone.innerText || '';
// Clean up excessive whitespace but preserve structure
text = text.replace(/\s+/g, ' ').trim();
// Limit line length
if (text.length > 500) {
text = text.substring(0, 500) + '...';
}
return text;
} /**
* Build the prompt for AI analysis
* @param {Object} edit The edit object
* @returns {String} The prompt text
*/
buildAnalysisPrompt(edit) {
const diffHTML = edit.diff;
const sizediff = edit.sizediff || 0;
const oresScore = edit.ores || 0;
const pageTitle = edit.page?.title || 'Unknown';
const userEditCount = edit.user?.editCount || 0;
const warningLevel = edit.user?.warningLevel || '0';
const userName = edit.user?.name || 'Unknown';
const summary = edit.comment || 'No summary';
const isIP = /^\d+\.\d+\.\d+\.\d+$/.test(userName);
// Determine namespace
let namespace = "Main";
let namespaceGuidance = "Main article namespace - STRICT standards. Accuracy, neutrality, verifiability required. Catch vandalism and policy violations.";
if (pageTitle.includes(':')) {
const prefix = pageTitle.split(':')[0];
const namespaceMap = {
'Talk': 'Talk',
'User': 'User',
'User talk': 'User talk',
'Wikipedia': 'Project',
'Wikipedia talk': 'Project talk',
'File': 'File',
'File talk': 'File talk',
'Template': 'Template',
'Template talk': 'Template talk',
'Category': 'Category',
'Category talk': 'Category talk',
'Draft': 'Draft',
'Draft talk': 'Draft talk',
'Help': 'Help',
'Portal': 'Portal'
};
namespace = namespaceMap[prefix] || prefix;
// Provide namespace-specific guidance
const guidanceMap = {
'Talk': "Discussion/conversation page - VERY LENIENT. Opinions and debates are normal and expected. Only flag offensive/attack content.",
'User': "User's personal sandbox - EXTREMELY LENIENT. Users can experiment here. Only flag severe policy violations or attack pages.",
'User talk': "User communication page - VERY LENIENT. Direct messages to users. Only flag if attacking/harassing.",
'Project': "Wikipedia policy/guideline space - MODERATE. Discussion and proposals are normal. Check for disruption.",
'Project talk': "Project discussion page - VERY LENIENT. Policy debates happen here. Opinions expected.",
'Draft': "Draft article space - LENIENT. Work in progress. Missing sources and formatting issues are NORMAL and ACCEPTABLE. Only flag clear vandalism.",
'Draft talk': "Draft discussion page - VERY LENIENT. Feedback and questions are normal.",
'File': "File description pages - MODERATE. Check for copyright issues and appropriate descriptions.",
'File talk': "File discussion page - VERY LENIENT. Questions and discussions are normal.",
'Template': "Template pages - MODERATE. Technical pages. Check for vandalism breaking functionality.",
'Template talk': "Template discussion page - VERY LENIENT. Technical discussions are normal.",
'Category': "Category pages - MODERATE. Check for inappropriate categorization.",
'Category talk': "Category discussion page - VERY LENIENT. Discussions are normal."
};
namespaceGuidance = guidanceMap[namespace] || namespaceGuidance;
}
// Special check for sandbox pages
if (pageTitle.toLowerCase().includes('/sandbox')) {
namespaceGuidance = "User sandbox - MAXIMUM LENIENCY. Test/practice space. Experiments and incomplete content are EXPECTED and FINE. Almost always approve.";
}
// Convert HTML diff to readable text
const readableDiff = this.convertDiffToReadable(diffHTML);
// Determine user experience level and risk profile
let userProfile = "";
if (isIP) {
userProfile = "Anonymous IP editor - could be anyone. IPs have higher vandalism rates but many make good edits. Judge the edit, not the editor.";
} else if (userEditCount === 0) {
userProfile = "Brand new account (0 edits) - First ever edit. Could be legitimate new user or sockpuppet/vandal. Higher scrutiny needed.";
} else if (userEditCount < 10) {
userProfile = "Very new user (< 10 edits) - Still learning. Expect mistakes but assume good faith unless clearly malicious.";
} else if (userEditCount < 50) {
userProfile = "New user (< 50 edits) - Gaining experience. Minor errors expected, likely good faith.";
} else if (userEditCount < 500) {
userProfile = "Intermediate user (50-500 edits) - Should understand basic policies. Mistakes possible but less common.";
} else {
userProfile = "Experienced user (500+ edits) - Knows Wikipedia policies well. Trust their judgment unless clearly problematic.";
}
// Warning level context
let warningContext = "";
switch(warningLevel) {
case '0':
warningContext = "No previous warnings - Clean record. First problematic edit (if any).";
break;
case '1':
warningContext = "Warning level 1 - Minor previous issue. They've been notified once. Still assume good faith.";
break;
case '2':
warningContext = "Warning level 2 - Has been warned twice. Pattern may be emerging. Less benefit of doubt.";
break;
case '3':
warningContext = "Warning level 3 - Serious warnings given. Next vandalism = likely block. Watch closely.";
break;
case '4':
case '4im':
warningContext = "Warning level 4/4im - FINAL WARNING given. Any further vandalism should result in AIV report.";
break;
default:
warningContext = `Warning level ${warningLevel} - Has received warnings previously.`;
}
return `You are an expert Wikipedia anti-vandalism system. Analyze this edit decisively and accurately.
═══════════════════════════════════════════════════════════
📋 EDIT INFORMATION
═══════════════════════════════════════════════════════════
Page: "${pageTitle}"
Namespace: ${namespace} — ${namespaceGuidance}
${namespace.toLowerCase().includes('talk') || namespace === 'User' || namespace === 'Draft' || pageTitle.toLowerCase().includes('sandbox') ? '⚠️ This namespace does NOT require citations or sources!' : ''}
Editor: ${userName}${isIP ? ' (IP)' : ''} • ${userEditCount} edits
${userProfile}
Warnings: Level ${warningLevel} • ${warningContext}
Summary: "${summary}"
${summary === 'No summary' || summary.trim() === '' ? '(No summary - common but slightly suspicious)' :
summary.toLowerCase().includes('test') ? '⚠️ Contains "test" - major vandalism indicator!' :
summary.toLowerCase().match(/revert|rv|undo/) ? '(Appears to be counter-vandalism revert)' :
summary.length > 50 ? '(Detailed - suggests good faith)' : '(Brief but normal)'}
Size: ${sizediff > 0 ? '+' : ''}${sizediff} bytes • ORES Score: ${(oresScore * 100).toFixed(1)}%
🚨 DECEPTIVE SUMMARY CHECK:
Compare "${summary}" to ${Math.abs(sizediff)} byte change:
• "typo/spelling/grammar" should be ~5-20 bytes, NOT 100+
• "nothing/minor/fix" should be tiny, NOT 200+
• "punctuation/comma" should be <50 bytes
• "formatting" should be <500 bytes
If there's a mismatch → MAJOR RED FLAG for hidden vandalism
═══════════════════════════════════════════════════════════
📝 DIFF (What Changed)
═══════════════════════════════════════════════════════════
Legend: " " = unchanged context | "- " = removed | "+ " = added
[[text]] = inline addition | ~~text~~ = inline removal
${readableDiff}
═══════════════════════════════════════════════════════════
🎯 YOUR TASK
═══════════════════════════════════════════════════════════
BE DECISIVE. You are an expert, not a hesitant assistant.
• 85-90% of edits should be APPROVED
• Use "review" <3% of the time (almost never)
• When uncertain → DEFAULT TO APPROVE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 1: CHECK NAMESPACE FIRST
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚨 CRITICAL: Different namespaces have different standards!
📄 MAIN ARTICLES (no prefix):
→ Strict standards. Check for vandalism, unsourced BLP claims, POV
💬 TALK PAGES (Talk:, User talk:, etc.):
→ VERY LENIENT. Opinions/debates are NORMAL and EXPECTED
→ ⛔ DO NOT flag for "unreferenced" or "unsourced" - talk pages don't need sources!
→ Only flag: attacks, harassment, spam
👤 USER PAGES (User:):
→ EXTREMELY LENIENT. Personal space
→ ⛔ DO NOT flag for "unreferenced" or POV - it's their page!
→ Only flag: attack pages, severe violations
📝 SANDBOXES (*/sandbox):
→ MAXIMUM LENIENT. Test space - experiments are EXPECTED
→ Almost always APPROVE
📋 DRAFTS (Draft:):
→ LENIENT. Work in progress
→ ⛔ DO NOT flag for "unreferenced" - they're still adding sources!
→ Missing citations are NORMAL and ACCEPTABLE
→ Only flag: clear vandalism, attacks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 2: IDENTIFY OBVIOUS VANDALISM
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔴 DEFINITE VANDALISM → Rollback:
• Profanity, slurs, offensive language
• Nonsense ("asdfghj", "lololol", gibberish)
• "X was here" graffiti/signatures
• Blanking content without explanation
• Jokes, memes, obviously false info
• Summary says "test" or "vandalism"
• Deceptive summary (claims "typo" but 500 bytes changed)
✅ NOT VANDALISM → Don't flag:
• Poor grammar/writing
• Unsourced but plausible info (except BLP in main)
• Formatting mistakes
• Might be wrong but not OBVIOUSLY false
• Minor POV language
• ANY edit to talk/user/sandbox/draft pages (unless attacks)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 3: IS IT CONSTRUCTIVE?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Is the editor trying to help? Even if imperfect → APPROVE
Constructive signs:
• Fixing typos, grammar, formatting
• Adding relevant info (even without source)
• Improving readability
• Removing errors/vandalism
• Detailed summary
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 4: CHOOSE ACTION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
approve: Edit is acceptable (85-90% of time)
Use when: Good/harmless/minor issues but constructive
When uncertain → DEFAULT TO THIS
thank: Exceptional edit worth recognition
Use when: Adding sources, major improvements, fixing significant errors
review: Human judgment needed [<3% - ALMOST NEVER]
Use ONLY when: Truly impossible to evaluate
NOT for: "might be wrong", "can't verify", "unsure" → those are APPROVE
warn-and-revert: Policy violation but possibly good faith
Use when: Unsourced BLP, promotional content, significant POV, copyright
rollback: Obvious vandalism → immediate removal
Use when: Profanity, nonsense, blanking, test edits, deceptive summary
report-aiv: Report to admins (warning level 4/4im + continuing vandalism)
welcome: New user (<50 edits) making good contributions
report-uaa: Username violation (promotional, impersonating, offensive)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IMPORTANT RULES
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ DO:
• Be decisive - make clear judgments
• Default to APPROVE when uncertain
• Only flag issues you can CLEARLY see in the diff
• Quote specific problematic text
• Check namespace before flagging anything
❌ DON'T:
• Use "review" for uncertainty → use approve instead
• Flag talk/user/draft/sandbox pages for missing sources
• Speculate ("might be promotional" → be specific or don't flag)
• Flag minor issues or formatting
• Over-analyze - trust your judgment
═══════════════════════════════════════════════════════════
📤 RESPONSE FORMAT (JSON)
═══════════════════════════════════════════════════════════
{
"hasIssues": boolean,
"probability": 0-100,
"confidence": "high" | "medium" | "low",
"reasoning": "Brief explanation of your analysis",
"issues": [
{
"type": "vandalism|spam|pov|unsourced|attack|copyright|disruptive|factual-error|policy|username",
"severity": "critical|major|minor",
"description": "Specific issue with quoted evidence"
}
],
"constructive": boolean,
"flagUsername": boolean,
"summary": "One sentence assessment",
"action": "approve|thank|review|warn-and-revert|rollback|report-aiv|welcome|report-uaa",
"recommendation": "Why you chose this action"
}
Analyze now. Be confident and decisive.`;
}
/**
* Call the Puter AI API
* @param {String} prompt The prompt to send
* @param {AbortSignal} signal Optional abort signal for cancellation
* @returns {Promise<String>} The API response text
*/
/**
* Call Ollama AI API
* @param {String} prompt The prompt to send
* @param {AbortSignal} signal Optional abort signal for cancellation
* @returns {Promise<String>} The AI response text
*/
async callOllamaAI(prompt, signal = null) {
try {
const fetchOptions = {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: this.model,
prompt: prompt,
format: { // json schema for response
"type": "object",
"properties": {
"hasIssues": {
"type": "boolean"
},
"probability": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"confidence": {
"type": "string",
"enum": ["high", "medium", "low"]
},
"reasoning": {
"type": "string"
},
"issues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["vandalism", "spam", "pov", "unsourced", "attack", "copyright", "disruptive", "factual-error", "policy", "username"]
},
"severity": {
"type": "string",
"enum": ["critical", "major", "minor"]
},
"description": {
"type": "string"
}
},
"required": ["type", "severity", "description"]
}
},
"constructive": {
"type": "boolean"
},
"flagUsername": {
"type": "boolean"
},
"summary": {
"type": "string"
},
"action": {
"type": "string",
"enum": ["approve", "thank", "review", "warn", "warn-and-revert", "rollback", "report-aiv", "welcome", "report-uaa"]
},
"recommendation": {
"type": "string"
}
},
"required": ["hasIssues", "probability", "confidence", "reasoning", "issues", "constructive", "flagUsername", "summary", "action", "recommendation"]
},
stream: false,
options: {
temperature: 0.1,
top_p: 0.9,
num_predict: 1024
}
})
};
// Add abort signal if provided
if (signal) {
fetchOptions.signal = signal;
}
const response = await fetch(`${this.serverUrl}/api/generate`, fetchOptions);
if (!response.ok) {
throw new Error(`Ollama API error: ${response.status} ${response.statusText}`);
}
const data = await response.json();
if (!data.response) {
throw new Error('Empty response from Ollama');
}
return data.response;
} catch (error) {
throw new Error(`Ollama AI error: ${error?.message || 'Unknown error'}`);
}
}
/**
* Parse the Ollama API response
* @param {String|Object} responseText The response from Ollama AI
* @returns {Object} Parsed analysis object
*/
parseOllamaResponse(responseText) {
try {
// Handle if responseText is an object (shouldn't happen but just in case)
if (typeof responseText === 'object' && responseText !== null) {
if (responseText.content) {
responseText = responseText.content;
} else {
responseText = JSON.stringify(responseText);
}
}
// Ensure responseText is a string
if (typeof responseText !== 'string') {
responseText = String(responseText);
}
// Try to extract JSON from markdown code blocks if present
let jsonText = responseText.trim();
const jsonMatch = jsonText.match(/```json\s*([\s\S]*?)\s*```/);
if (jsonMatch) {
jsonText = jsonMatch[1];
} else {
// Try to find JSON object - be more aggressive about finding the complete object
// Match opening brace to closing brace, handling nested objects/arrays
const startIdx = jsonText.indexOf('{');
if (startIdx !== -1) {
let depth = 0;
let inString = false;
let escapeNext = false;
let foundComplete = false;
for (let i = startIdx; i < jsonText.length; i++) {
const char = jsonText[i];
if (escapeNext) {
escapeNext = false;
continue;
}
if (char === '\\') {
escapeNext = true;
continue;
}
if (char === '"') {
inString = !inString;
continue;
}
if (inString) continue;
if (char === '{' || char === '[') depth++;
if (char === '}' || char === ']') depth--;
if (depth === 0 && i > startIdx) {
jsonText = jsonText.substring(startIdx, i + 1);
foundComplete = true;
break;
}
}
// If we didn't find a complete JSON object, try to fix it
if (!foundComplete) {
jsonText = jsonText.substring(startIdx);
// Count unclosed braces and brackets
let openBraces = 0;
let openBrackets = 0;
inString = false;
escapeNext = false;
for (let i = 0; i < jsonText.length; i++) {
const char = jsonText[i];
if (escapeNext) {
escapeNext = false;
continue;
}
if (char === '\\') {
escapeNext = true;
continue;
}
if (char === '"') {
inString = !inString;
continue;
}
if (inString) continue;
if (char === '{') openBraces++;
if (char === '}') openBraces--;
if (char === '[') openBrackets++;
if (char === ']') openBrackets--;
}
// Add missing closing brackets and braces
while (openBrackets > 0) {
jsonText += ']';
openBrackets--;
}
while (openBraces > 0) {
jsonText += '}';
openBraces--;
}
}
}
}
// Remove JavaScript-style comments that may be in the JSON
// This handles both // single-line and /* multi-line */ comments
jsonText = jsonText
// Remove single-line comments (// ...) but not inside strings
.split('\n')
.map(line => {
// Simple approach: remove // comments if not inside quotes
let inString = false;
let result = '';
for (let i = 0; i < line.length; i++) {
if (line[i] === '"' && (i === 0 || line[i-1] !== '\\')) {
inString = !inString;
}
if (!inString && line[i] === '/' && line[i+1] === '/') {
break; // Stop processing this line
}
result += line[i];
}
return result;
})
.join('\n')
// Remove multi-line comments /* ... */
.replace(/\/\*[\s\S]*?\*\//g, '');
const parsed = JSON.parse(jsonText);
return {
hasIssues: parsed.hasIssues || false,
probability: parsed.probability || 0,
confidence: parsed.confidence || 'low',
reasoning: parsed.reasoning || '',
issues: parsed.issues || [],
constructive: parsed.constructive !== undefined ? parsed.constructive : true,
flagUsername: parsed.flagUsername || false,
summary: parsed.summary || 'No issues detected',
action: parsed.action || 'review',
recommendation: parsed.recommendation || 'No specific recommendation',
rawResponse: responseText
};
} catch (err) {
console.error("Failed to parse Puter response:", err);
console.log("Raw response:", responseText);
// Ensure responseText is a string for fallback processing
const textStr = String(responseText);
// Fallback: try to determine if there are issues from the text
const hasIssues = textStr.toLowerCase().includes('issue') ||
textStr.toLowerCase().includes('problem') ||
textStr.toLowerCase().includes('vandalism');
return {
hasIssues: hasIssues,
probability: hasIssues ? 50 : 10,
confidence: 'low',
issues: [],
summary: hasIssues ? 'Potential issues detected (parsing failed)' : 'No clear issues detected',
action: 'review',
recommendation: 'Manual review recommended due to parsing error',
rawResponse: responseText,
parseError: err.message
};
}
}
/**
* Clear the analysis cache
*/
clearCache() {
this.cache.clear();
}
/**
* Cancel a specific edit analysis request
* @param {String|Number} revid The revision ID to cancel
*/
cancelAnalysis(revid) {
const cacheKey = `${revid}`;
if (this.activeRequests.has(cacheKey)) {
console.log(`Cancelling AI analysis for edit ${cacheKey}`);
this.activeRequests.get(cacheKey).abort();
this.activeRequests.delete(cacheKey);
}
}
/**
* Cancel all active analysis requests
*/
cancelAllAnalyses() {
console.log(`Cancelling ${this.activeRequests.size} active AI analysis requests`);
for (const [revid, controller] of this.activeRequests.entries()) {
controller.abort();
}
this.activeRequests.clear();
}
}
// </nowiki>
// <nowiki>
class wikishieldQueue {
constructor() {
this.queue = [];
this.previousItems = [];
this.editsSince = "";
this.lastRevid = 0;
this.currentEdit = null;
this.backoff = 2000;
}
/**
* Fetch recent changes from the API
*/
async fetchRecentChanges() {
if (this.queue.length >= wikishield.options.maxQueueSize) {
window.setTimeout(this.fetchRecentChanges.bind(this), wikishield.options.refreshTime);
return;
}
try {
this.editsSince = wikishield.util.utcString(new Date());
const namespaceString = wikishield.options.namespacesShown.join("|");
const recentChanges = (await wikishield.api.recentChanges(namespaceString))
.filter(edit => edit.revid > this.lastRevid);
this.lastRevid = Math.max(...recentChanges.map(edit => edit.revid));
const usersToFetch = recentChanges
.map(edit => mw.util.isIPv6Address(edit.user) ? edit.user.toUpperCase() : edit.user);
const editCounts = (await wikishield.api.editCount(usersToFetch.join("|")))
.filter(user => user["invalid"] || user["editcount"] <= wikishield.options.maxEditCount);
const dict = editCounts
.reduce((a, v) => ({...a, [v.name]: v.editcount}), {});
const warnings = (await wikishield.api.getText(
usersToFetch.map(user => `User_talk:${user}`).join("|")
));
const blocks = await wikishield.api.usersBlocked(usersToFetch.join("|"));
const ores = (await wikishield.api.ores(recentChanges.map(edit => edit.revid).join("|")));
recentChanges
.filter(edit => edit.user in dict)
.filter(edit => (ores[edit.revid] || 0) >= wikishield.options.minimumORESScore || wikishield.highlighted.has(edit.user))
.filter(edit => !wikishield.whitelist.has(edit.user))
.forEach(edit => {
const talkPageText = warnings[`User talk:${edit.user}`] || "";
this.addQueueItem(
edit,
dict[edit.user] || -1,
this.getWarningLevel(talkPageText),
ores[edit.revid] || 0,
blocks[edit.user] || false,
talkPageText.trim() === "" // Check if talk page is empty
);
});
// Check for outdated edits in queue
await this.checkForOutdatedEdits();
this.backoff = wikishield.options.refreshTime;
} catch (err) {
console.log("Error while fetching recent changes", err);
this.backoff = Math.min(this.backoff * 2, 120000);
}
window.setTimeout(this.fetchRecentChanges.bind(this), this.backoff);
}
/**
* Add an edit to the queue
* @param {Object} edit The edit to add
* @param {Number} count The edit count of the user
* @param {String} warningLevel The warning level of the user
* @param {Number} ores The ORES score of the edit
* @param {Boolean} blocked Whether the user is blocked
* @param {Boolean} emptyTalkPage Whether the user's talk page is empty
*/
async addQueueItem(edit, count, warningLevel, ores, blocked, emptyTalkPage) {
if (this.queue.filter(e => e.revid === edit.revid).length > 0 ||
this.previousItems.filter(e => e.revid === edit.revid).length > 0) {
return;
}
const item = await this.generateQueueItem(edit, count, warningLevel, ores, blocked, null, null, emptyTalkPage);
this.queue.push(item);
const sorted = this.queue.splice(1)
.sort((a, b) => {
const bScore = b.ores + (wikishield.highlighted.has(b.user.name) ? 100 : 0);
const aScore = a.ores + (wikishield.highlighted.has(a.user.name) ? 100 : 0);
return bScore - aScore;
});
this.queue = [this.queue[0], ...sorted];
// Only auto-select first edit if no edit is currently selected
if (this.queue.length === 1 && !this.currentEdit) {
this.currentEdit = this.queue[0];
}
// Play sound alert if ORES score is above threshold
if (wikishield.options.enableSoundAlerts && ores >= wikishield.options.soundAlertORESScore) {
this.playAlertSound();
}
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Play an alert sound for high ORES scores
*/
playAlertSound() {
try {
// Create a simple beep sound using Web Audio API
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const oscillator = audioContext.createOscillator();
const gainNode = audioContext.createGain();
oscillator.connect(gainNode);
gainNode.connect(audioContext.destination);
oscillator.frequency.value = 800; // Frequency in Hz
oscillator.type = 'sine';
gainNode.gain.setValueAtTime(0.3, audioContext.currentTime);
gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.5);
oscillator.start(audioContext.currentTime);
oscillator.stop(audioContext.currentTime + 0.5);
} catch (err) {
console.log("Could not play alert sound:", err);
}
}
/**
* Play a pleasant notification sound (two-tone chime)
*/
playNotificationSound() {
try {
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
// First tone (higher pitch)
const osc1 = audioContext.createOscillator();
const gain1 = audioContext.createGain();
osc1.connect(gain1);
gain1.connect(audioContext.destination);
osc1.frequency.value = 660; // E5
osc1.type = 'sine';
gain1.gain.setValueAtTime(0.2, audioContext.currentTime);
gain1.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.2);
osc1.start(audioContext.currentTime);
osc1.stop(audioContext.currentTime + 0.2);
// Second tone (lower pitch, slightly delayed)
const osc2 = audioContext.createOscillator();
const gain2 = audioContext.createGain();
osc2.connect(gain2);
gain2.connect(audioContext.destination);
osc2.frequency.value = 523; // C5
osc2.type = 'sine';
gain2.gain.setValueAtTime(0.2, audioContext.currentTime + 0.15);
gain2.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.4);
osc2.start(audioContext.currentTime + 0.15);
osc2.stop(audioContext.currentTime + 0.4);
} catch (err) {
console.log("Could not play notification sound:", err);
}
}
/**
* Check and remove edits that have been superseded by newer edits on the same page
*/
async checkForOutdatedEdits() {
if (this.queue.length === 0) return;
// Get all unique page titles from queue, filtering out invalid ones
const allPageTitles = [...new Set(this.queue.map(item => item.page.title))];
const pageTitles = allPageTitles.filter(title => {
// Filter out titles that look like URLs or contain invalid characters
const isValid = title &&
!title.includes('?') &&
!title.includes('&') &&
!title.startsWith('http') &&
!title.includes('index.php');
if (!isValid) {
console.log(`Skipping invalid page title: ${title}`);
}
return isValid;
});
if (pageTitles.length === 0) return;
// Fetch latest revision for each page
const latestRevisions = await wikishield.api.getLatestRevisions(pageTitles.join("|"));
// Track items to remove
const itemsToRemove = [];
for (const item of this.queue) {
const latestRevid = latestRevisions[item.page.title];
if (latestRevid && latestRevid > item.revid) {
// This edit has been superseded
itemsToRemove.push(item);
console.log(`Removing outdated edit: ${item.page.title} (rev ${item.revid}, latest is ${latestRevid})`);
}
}
// Remove outdated items
if (itemsToRemove.length > 0) {
for (const item of itemsToRemove) {
const index = this.queue.indexOf(item);
if (index > -1) {
this.queue.splice(index, 1);
wikishield.interface.removeQueueItem(item.revid);
}
}
// Update current edit if it was removed
if (itemsToRemove.includes(this.currentEdit)) {
this.currentEdit = this.queue.length > 0 ? this.queue[0] : null;
}
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
}
/**
* Generate a queue item from an edit
* @param {Object} edit The edit to generate the queue item from
* @param {Number} count The edit count of the user
* @param {String} warningLevel The warning level of the user
* @param {Number} ores The ORES score of the edit
* @param {Boolean} blocked Whether the user is blocked
* @param {Boolean} emptyTalkPage Whether the user's talk page is empty
* @returns {Object} The queue item
*/
async generateQueueItem(edit, count, warningLevel, ores, blocked, contribs, history, emptyTalkPage) {
contribs = contribs || await wikishield.api.contribs(edit.user);
history = history || await wikishield.api.history(edit.title);
const diff = await wikishield.api.diff(edit.title, edit.old_revid || edit.parentid, edit.revid);
const metadata = await wikishield.api.getPageMetadata(edit.title);
const queueItem = {
page: {
title: edit.title,
history: history,
dateFormat: metadata.dateFormat,
englishVariant: metadata.englishVariant
},
user: {
name: edit.user,
contribs: contribs,
editCount: count,
warningLevel: warningLevel,
originalWarningLevel: warningLevel, // Store the warning level at time of queueing
blocked: blocked,
emptyTalkPage: emptyTalkPage !== undefined ? emptyTalkPage : false
},
ores: ores,
revid: edit.revid,
timestamp: edit.timestamp,
comment: edit.comment,
minor: "minor" in edit, // Store whether this is a minor edit (check if property exists)
sizediff: (edit["newlen"] ? edit.newlen - edit.oldlen : edit.sizediff) || 0,
diff: diff,
tags: edit.tags,
reviewed: false,
aiAnalysis: null // Will be populated asynchronously
};
// Perform AI analysis asynchronously if enabled
if (wikishield.options.enableOllamaAI && wikishield.ollamaAI) {
// Don't await - let it run in background and update when ready
wikishield.ollamaAI.analyzeEdit(queueItem).then(analysis => {
queueItem.aiAnalysis = analysis;
// Update UI if this edit is currently being displayed
if (this.currentEdit && this.currentEdit.revid === queueItem.revid) {
wikishield.interface.updateAIAnalysisDisplay(analysis);
}
}).catch(err => {
console.error("AI analysis failed:", err);
queueItem.aiAnalysis = {
hasIssues: false,
error: err.message
};
});
}
return queueItem;
}
/**
* Given the text of a user talk page, get the warning level of the user
* @param {String} text The text of the user talk page
* @returns {String} The warning level of the user
*/
getWarningLevel(text) {
const monthSections = text.split(/(?=== ?[\w\d ]+ ?==)/g);
for (let section of monthSections) {
if (new RegExp("== ?" + wikishield.util.monthSectionName() + " ?==").test(section)) {
// Only match templates with numbered warning levels (e.g., uw-vandalism1, uw-test4im)
// Excludes templates without numbers like uw-minor
const templates = section.match(/<\!-- Template:[\w-]+?(\d(?:i?m)?) -->/g);
if (templates === null) {
return "0";
}
const filteredTemplates = templates.map(t => {
const match = t.match(/<\!-- Template:[\w-]+?(\d(?:i?m)?) -->/);
return match ? match[1] : "0";
});
return filteredTemplates.sort()[filteredTemplates.length - 1].toString();
}
}
return "0";
}
/**
* Get detailed warning history from user talk page
* @param {String} text - User talk page content
* @returns {Array} Array of warning objects with template name, level, and timestamp
*/
getWarningHistory(text) {
const warnings = [];
const monthSections = text.split(/(?=== ?[\w\d ]+ ?==)/g);
const currentMonthName = wikishield.util.monthSectionName();
for (let section of monthSections) {
// Check if this is the current month section
const isCurrentMonth = new RegExp("== ?" + currentMonthName + " ?==").test(section);
// Only process warnings from the current month (those that count toward warning level)
if (!isCurrentMonth) {
continue;
}
// Extract section title (month/year)
const sectionMatch = section.match(/== ?([\w\d ]+) ?==/);
const sectionTitle = sectionMatch ? sectionMatch[1] : "Unknown";
// Find all warning templates with their full context
const templateMatches = section.matchAll(/<\!-- Template:([\w-]+?)(\d(?:i?m)?) -->(.+?)(?=<\!-- Template:|$)/gs);
for (let match of templateMatches) {
const templateName = match[1]; // e.g., "uw-vandalism"
const level = match[2]; // e.g., "1", "4", "4im"
const content = match[3]; // Content after template
// Try to extract timestamp (looks for signature pattern)
// Extract the timestamp and remove any HTML tags
const timestampMatch = content.match(/(\d{2}:\d{2}.*?\d{4} \(UTC\))/);
let timestamp = timestampMatch ? timestampMatch[1] : null;
if (timestamp) {
// Remove any HTML tags from the timestamp
timestamp = timestamp.replace(/<[^>]*>/g, '');
}
// Extract username from signature (look for User: or User talk: links)
let username = null;
const userLinkMatch = content.match(/\[\[User(?:[ _]talk)?:([^\]|]+)/i);
if (userLinkMatch) {
username = userLinkMatch[1].trim();
}
// Try to extract article name if present
const articleMatch = content.match(/\[\[([^\]]+?)\]\]/);
const article = articleMatch ? articleMatch[1] : null;
warnings.push({
template: templateName,
level: level,
timestamp: timestamp,
username: username,
article: article,
section: sectionTitle,
isCurrentMonth: isCurrentMonth
});
}
}
// Warnings are already from current month, just return them in order
return warnings;
}
/**
* Set the current edit to the next item in the queue
*/
nextItem() {
if (this.queue.length === 0) {
return;
}
// Cancel AI analysis for the edit we're leaving
if (this.queue[0] && wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAnalysis(this.queue[0].revid);
}
if (!this.queue[0].reviewed) {
this.queue[0].reviewed = true;
wikishield.statistics.reviewed += 1;
wikishield.saveStats(wikishield.statistics);
}
// Auto-welcome the user we're leaving (before removing from queue)
const leavingEdit = this.queue[0];
if (leavingEdit) {
this.checkAndAutoWelcome(leavingEdit);
this.checkAndAutoReportUAA(leavingEdit);
}
const removedElem = this.queue.shift();
this.previousItems.push(removedElem);
wikishield.interface.removeQueueItem(removedElem.revid);
if (this.previousItems.length > 50) {
this.previousItems.shift();
}
this.currentEdit = this.queue.length ? this.queue[0] : null;
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Set the current edit to the previous item in the queue
*/
prevItem() {
if (this.previousItems.length === 0) {
return;
}
// Cancel AI analysis for the edit we're leaving
if (this.currentEdit && wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAnalysis(this.currentEdit.revid);
}
// Auto-welcome the user we're leaving (before changing currentEdit)
if (this.currentEdit) {
this.checkAndAutoWelcome(this.currentEdit);
this.checkAndAutoReportUAA(this.currentEdit);
}
this.queue.unshift(this.previousItems.pop());
this.currentEdit = this.queue[0];
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Check if user should be auto-welcomed and do so if needed
* @param {Object} edit The edit object to check
*/
async checkAndAutoWelcome(edit) {
// Only auto-welcome registered users (not IPs) with empty talk pages
if (!edit.user || !edit.user.name || mw.util.isIPAddress(edit.user.name)) {
return;
}
// Check if user is in the no-auto-welcome list
if (wikishield.noAutoWelcomeList.has(edit.user.name)) {
return;
}
// Check if talk page appears empty
if (!edit.user.emptyTalkPage) {
return;
}
// Only auto-welcome if the edit was constructive (according to AI analysis)
if (edit.aiAnalysis && edit.aiAnalysis.constructive === false) {
console.log(`Skipping auto-welcome for ${edit.user.name} - edit not constructive`);
return;
}
// Double-check by fetching the talk page to see if it exists
try {
const talkPageContent = await wikishield.api.getSinglePageContent(`User talk:${edit.user.name}`);
// Check if the talk page exists at all (not whether it's blank)
// If the page doesn't exist, talkPageContent will be an empty string
// If the page exists (even if blank), talkPageContent will not be an empty string
if (talkPageContent !== "") {
// Talk page exists, update the flag
edit.user.emptyTalkPage = false;
return;
}
// Show confirmation dialog
const confirmed = await wikishield.interface.showConfirmationDialog(
"Auto-welcome User",
`Would you like to welcome <span class="confirmation-modal-username">${wikishield.util.escapeHtml(edit.user.name)}</span>?<br><br>
<span style="font-size: 0.9em; color: #888;">Editing: <strong>${wikishield.util.escapeHtml(edit.page.title)}</strong></span>`,
edit.user.name
);
if (!confirmed) {
console.log(`Auto-welcome cancelled for: ${edit.user.name}`);
// Add user to no-auto-welcome list
wikishield.noAutoWelcomeList.add(edit.user.name);
return;
}
// Show progress notification
const progressBar = new wikishieldProgressBar();
progressBar.set("Auto-welcoming...", 0.5, "var(--main-blue)");
// Determine which template to use based on username characters and mentorship
// Check if username contains non-Latin characters (takes precedence)
const hasNonLatin = /[^\u0000-\u007F\u0080-\u00FF\u0100-\u017F\u0180-\u024F]/.test(edit.user.name);
let template;
if (hasNonLatin) {
template = "Latin";
} else {
// Check if user is a mentee (only if not non-Latin)
const isMentee = await wikishield.checkIfMentee(edit.user.name);
template = isMentee ? "Mentor" : "Default";
}
// Auto-welcome with appropriate template
await wikishield.welcomeUser(edit.user.name, template);
// Update progress to complete
progressBar.set(`Welcomed ${edit.user.name}`, 1, "var(--main-green)");
console.log(`Auto-welcomed user: ${edit.user.name}`);
} catch (err) {
console.log("Error during auto-welcome check:", err);
}
}
/**
* Check if user should be reported to UAA based on username
* @param {Object} edit The edit object to check
*/
async checkAndAutoReportUAA(edit) {
// Only check registered users (not IPs)
if (!edit.user || !edit.user.name || mw.util.isIPAddress(edit.user.name)) {
return;
}
// Check if user is in the no-auto-welcome list (also used for UAA to avoid duplicate prompts)
if (wikishield.noAutoWelcomeList.has(edit.user.name)) {
return;
}
// Check if AI flagged the username
if (!edit.aiAnalysis || !edit.aiAnalysis.flagUsername) {
return;
}
// Show confirmation dialog
const confirmed = await wikishield.interface.showConfirmationDialog(
"Report Username to UAA",
`The username <span class="confirmation-modal-username">${wikishield.util.escapeHtml(edit.user.name)}</span> may violate Wikipedia's username policy.<br><br>
<span style="font-size: 0.9em; color: #888;">Would you like to report it to <a href="https://en.wikipedia.org/wiki/Wikipedia:Usernames_for_administrator_attention" target="_blank" style="color: #0645ad;">Usernames for administrator attention (UAA)</a>?</span><br><br>
<strong>AI Assessment:</strong> ${wikishield.util.escapeHtml(edit.aiAnalysis.recommendation || 'Username may be promotional, impersonation, or otherwise inappropriate.')}`,
edit.user.name
);
if (!confirmed) {
console.log(`UAA report cancelled for: ${edit.user.name}`);
// Add user to no-auto-welcome list to avoid future prompts
wikishield.noAutoWelcomeList.add(edit.user.name);
return;
}
// Open UAA report interface
try {
// Use the existing event system to trigger UAA report
const reportEvent = wikishield.events.events.reportUserUAA;
if (reportEvent && reportEvent.func) {
await reportEvent.func(edit);
}
// Add user to no-auto-welcome list after reporting
wikishield.noAutoWelcomeList.add(edit.user.name);
} catch (err) {
console.log("Error during auto UAA report:", err);
}
}
/**
* Clear the queue
*/
delete() {
// Cancel all active AI analyses
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
this.queue = [];
this.currentEdit = null;
wikishield.interface.clearQueue();
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Load an edit from the user contributions list
* @param {Number} revid
*/
async loadFromContribs(revid) {
const edit = this.currentEdit.user.contribs.filter(e => e.revid === Number(revid))[0];
const diffContainer = wikishield.interface.elem("#diff-container");
diffContainer.innerHTML = ``;
this.currentEdit = await this.generateQueueItem(
edit,
this.currentEdit.user.editCount,
this.currentEdit.user.warningLevel,
null,
this.currentEdit.user.blocked,
null,
null,
this.currentEdit.user.emptyTalkPage
);
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
/**
* Load an edit from the page history list
* @param {Number} revid
*/
async loadFromHistory(revid) {
const edit = this.currentEdit.page.history.filter(e => e.revid === Number(revid))[0];
edit["title"] = this.currentEdit.page.title;
const diffContainer = wikishield.interface.elem("#diff-container");
diffContainer.innerHTML = ``;
const results = await Promise.all([
wikishield.api.editCount(edit.user),
wikishield.api.getSinglePageContent(`User talk:${edit.user}`),
wikishield.api.contribs(edit.user),
wikishield.api.history(edit.title)
]);
const talkPageText = results[1];
this.currentEdit = await this.generateQueueItem(
edit,
results[0][0].editcount,
this.getWarningLevel(talkPageText),
null, false, results[2], results[3],
talkPageText.trim() === ""
);
wikishield.interface.renderQueue(this.queue, this.currentEdit);
}
}
// </nowiki>
// <nowiki>
const wikishieldEventData = {
conditions: {
"operatorNonAdmin": {
desc: "You are not an admin",
check: (_) => !wikishield.rights.block
},
"operatorAdmin": {
desc: "You are an admin",
check: (_) => wikishield.rights.block
},
"atFinalWarning": {
desc: "User already has a final warning (before any new warnings)",
check: (edit) => {
// Check the ORIGINAL warning level from when edit was first queued
// This ensures we only report if they ALREADY had a final warning
// Not if they just received one in this action sequence
const original = edit.user.originalWarningLevel?.toString() || edit.user.warningLevel.toString();
const current = edit.user.warningLevel.toString();
console.log(`[atFinalWarning] User: ${edit.user.name}, Original: ${original}, Current: ${current}`);
return ["4", "4im"].includes(original);
}
}
},
welcomeTemplates: {
"Default": "{{subst:Welcome}} ~~~~",
"Basic": "{{subst:W-basic}}",
"Links": "{{subst:W-graphical}}",
"Latin": "{{subst:welcome non-latin|LuniZunie}} ~~~~",
"COI": "{{subst:welcome-coi}} ~~~~",
"Mentor": "{{subst:Mentor welcome-autosign}}"
}
};
class wikishieldEventManager {
constructor() {
this.events = {
prevEdit: {
description: "Go to the previous edit in the queue",
icon: "fas fa-arrow-left",
runWithoutEdit: true,
func: () => {
wikishield.queue.prevItem();
}
},
nextEdit: {
description: "Go to the next edit in the queue",
icon: "fas fa-arrow-right",
func: () => {
wikishield.queue.nextItem();
}
},
deleteQueue: {
description: "Remove all items from the queue",
icon: "fas fa-trash-can",
runWithoutEdit: true,
func: () => {
wikishield.queue.delete();
}
},
openSettings: {
description: "Open the settings interface",
icon: "fas fa-gear",
runWithoutEdit: true,
func: () => {
wikishield.interface.settings.openSettings();
}
},
openUserPage: {
description: "Open user page in a new tab",
icon: "fas fa-circle-user",
func: () => {
window.open(wikishield.util.pageLink(`User:${this.getRelevantEdit().user.name}`));
}
},
openUserTalk: {
description: "Open user talk page in a new tab",
icon: "fas fa-comment",
func: () => {
window.open(wikishield.util.pageLink(`User talk:${this.getRelevantEdit().user.name}`));
}
},
openUserContribs: {
description: "Open user contributions page in a new tab",
icon: "fas fa-list",
func: () => {
window.open(wikishield.util.pageLink(`Special:Contributions/${this.getRelevantEdit().user.name}`));
}
},
openFilterLog: {
description: "Open user filter log in a new tab",
icon: "fas fa-filter",
func: () => {
const encodedName = wikishield.util.encodeuri(this.getRelevantEdit().user.name);
window.open(wikishield.util.pageLink(
`?title=Special:AbuseLog&wpSearchUser=${encodedName}`,
true
));
}
},
addToWhitelist: {
description: "Add user to the whitelist",
icon: "fas fa-thumbs-up",
includeInProgress: true,
progressDesc: "Whitelisting...",
func: () => {
wikishield.whitelist.add(this.getRelevantEdit().user.name);
}
},
highlight: {
description: "Highlight this user's contributions",
icon: "fas fa-highlighter",
includeInProgress: true,
progressDesc: "Highlighting...",
func: () => {
const username = this.getRelevantEdit().user.name;
// Set highlight to expire in 1 hour (3600000 ms)
const expirationTime = Date.now() + 3600000;
wikishield.highlighted.set(username, expirationTime);
wikishield.logger.log(`Highlighted user ${username} until ${new Date(expirationTime).toLocaleTimeString()}`);
// Trigger immediate UI refresh
wikishield.interface.renderQueue(wikishield.queue.queue, wikishield.queue.currentEdit);
}
},
openPage: {
description: "Open page being edited in new tab",
icon: "fas fa-file-lines",
func: () => {
window.open(wikishield.util.pageLink(this.getRelevantEdit().page.title));
}
},
openTalk: {
description: "Open talk page in new tab",
icon: "fas fa-comments",
func: () => {
const pageTitle = this.getRelevantEdit().page.title.split(":");
let talkNamespace = "Talk";
if (pageTitle.length > 1) {
talkNamespace = pageTitle[0].toLowerCase().includes("talk")
? pageTitle[0]
: pageTitle[0] + " talk";
}
window.open(wikishield.util.pageLink(`${talkNamespace}:${pageTitle.length === 1 ? pageTitle[0] : pageTitle[1]}`));
}
},
openHistory: {
description: "Open page history in new tab",
icon: "fas fa-clock-rotate-left",
func: () => {
window.open(wikishield.util.pageLink(`Special:PageHistory/${this.getRelevantEdit().page.title}`));
}
},
openRevision: {
description: "Open revision in new tab",
icon: "fas fa-pen-to-square",
func: () => {
window.open(wikishield.util.pageLink(`Special:PermanentLink/${this.getRelevantEdit().revid}`));
}
},
openDiff: {
description: "Open diff in new tab",
icon: "fas fa-code-commit",
func: () => {
window.open(wikishield.util.pageLink(`Special:Diff/${this.getRelevantEdit().revid}`));
}
},
thankUser: {
description: "Thank user",
icon: "fas fa-user-check",
includeInProgress: true,
progressDesc: "Thanking...",
func: async () => {
const edit = this.getRelevantEdit();
// Check if user is an IP address
if (mw.util.isIPAddress(edit.user.name)) {
// For IP users, leave a thank you message on their talk page
const talkPageName = `User talk:${edit.user.name}`;
const talkPageContent = await wikishield.api.getSinglePageContent(talkPageName) || "";
await wikishield.api.edit(
talkPageName,
talkPageContent + `\n{{subst:Thanks-autosign}}`,
`Thanking for edit to [[${edit.page.title}]] ([[WP:WikiShield|WikiShield]])`
);
} else {
// For registered users, use the API thank function
await wikishield.api.thank(edit.revid);
}
}
},
rollback: {
description: "Rollback edits",
icon: "fas fa-backward",
includeInProgress: true,
progressDesc: "Rolling back...",
func: async (params={}) => {
return await wikishield.revert(this.getRelevantEdit(), params.label || "");
}
},
rollbackGoodFaith: {
description: "Rollback edits (good faith)",
icon: "fas fa-arrow-rotate-left",
parameters: [
{
title: "Summary (optional)",
id: "summary",
type: "text"
}
],
includeInProgress: true,
progressDesc: "Rolling back...",
func: async (params) => {
return await wikishield.revert(this.getRelevantEdit(), params["summary"] || "", true);
}
},
undo: {
description: "Undo this edit only",
icon: "fas fa-undo",
parameters: [
{
title: "Reason",
id: "reason",
type: "text"
}
],
includeInProgress: true,
progressDesc: "Undoing...",
func: async (params) => {
const edit = this.getRelevantEdit();
const reason = params["reason"] || "Undoing edit";
return await wikishield.api.undoEdit(edit, reason);
}
},
warn: {
description: "Warn user",
icon: "fas fa-triangle-exclamation",
parameters: [
{
title: "Warning type",
id: "warningType",
type: "choice",
options: Object.keys(wikishieldData.warnings)
},
{
title: "Level",
id: "level",
type: "choice",
options: [ "auto", 1, 2, 3, 4, 5 ]
}
],
includeInProgress: true,
progressDesc: "Warning...",
needsContinuity: true,
validateParameters: (params) => {
// If custom templates are provided, skip validation
if (params["warningTemplates"]) {
return true;
}
return params["level"] === "auto" ||
wikishieldData.warnings[params["warningType"]].templates.length >= params["level"];
},
func: async (params) => {
// Use custom templates if provided, otherwise use standard warning set
let warningTemplates, warningLabel, requiresArticle;
if (params["warningTemplates"]) {
// Custom warning from warn menu
warningTemplates = params["warningTemplates"];
warningLabel = params["warningLabel"];
requiresArticle = params["requiresArticle"];
} else {
// Standard warning from revert menu
const warningSet = params["warningType"] && Object.keys(wikishieldData.warnings).includes(params["warningType"])
? wikishieldData.warnings[params["warningType"]]
: wikishieldData.warnings["Vandalism"];
warningTemplates = warningSet.templates;
warningLabel = null; // Will use default behavior in warnUser
requiresArticle = true;
}
// Store the original warning level before warning
const originalLevel = this.getRelevantEdit().user.warningLevel;
await wikishield.warnUser(
this.getRelevantEdit().user.name,
warningTemplates,
params["level"] || "auto",
requiresArticle !== false ? this.getRelevantEdit().page.title : null,
this.getRelevantEdit().revid
);
// Return whether they were already at final warning
return {
wasAtFinalWarning: ["4", "4im"].includes(originalLevel.toString())
};
}
},
reportToAIV: {
description: "Report user to AIV",
icon: "fas fa-flag",
parameters: [
{
title: "Report message",
id: "reportMessage",
type: "choice",
options: [
"Vandalism past final warning",
"Vandalism-only account",
"Long-term abuse"
]
}
],
includeInProgress: true,
progressDesc: "Reporting...",
func: async (params) => {
await wikishield.reportToAIV(
this.getRelevantEdit().user.name,
params["reportMessage"]
);
}
},
reportToUAA: {
description: "Report user to UAA",
icon: "fas fa-flag",
parameters: [
{
title: "Report message",
id: "reportMessage",
type: "choice",
options: [
"Disruptive username",
"Offensive username",
"Promotional username",
"Misleading username"
]
}
],
includeInProgress: true,
progressDesc: "Reporting...",
func: async (params) => {
await wikishield.reportToUAA(
this.getRelevantEdit().user.name,
params["reportMessage"]
);
}
},
requestProtection: {
description: "Request protection",
icon: "fas fa-shield",
parameters: [
{
title: "Level",
id: "level",
type: "choice",
options: [
"Semi-protection",
"Extended-confirmed protection",
"Full protection",
"Pending changes protection"
]
},
{
title: "Reason",
id: "reason",
type: "choice",
options: [
"Persistent vandalism",
"Edit warring",
"BLP violations",
"Sockpuppetry"
]
}
],
includeInProgress: true,
progressDesc: "Requesting protection...",
func: async (params) => {
await wikishield.requestProtection(
this.getRelevantEdit().page.title,
params["level"],
params["reason"]
);
}
},
block: {
description: "Block user",
icon: "fas fa-ban",
parameters: [
{
title: "Block summary",
id: "blockSummary",
type: "choice",
options: [
"[[Wikipedia:Vandalism|Vandalism]]",
"[[Wikipedia:DISRUPTONLY|Vandalism-only account]]",
"Long-term abuse"
]
},
{
title: "Duration",
id: "duration",
type: "choice",
options: [
"31 hours",
"1 week",
"2 weeks",
"1 month",
"3 months",
"6 months",
"1 year",
"3 years",
"infinite"
]
}
],
includeInProgress: true,
progressDesc: "Blocking...",
func: async (params) => {
await wikishield.api.block(
this.getRelevantEdit().user.name,
params["blockSummary"],
params["duration"],
true, false, false, true
);
}
},
protect: {
description: "Protect page",
icon: "fas fa-lock",
includeInProgress: true,
progressDesc: "Protecting...",
func: async () => {
}
},
welcome: {
description: "Welcome user",
icon: "fas fa-door-open",
parameters: [
{
title: "Template",
id: "template",
type: "choice",
options: Object.keys(wikishieldEventData.welcomeTemplates)
}
],
includeInProgress: true,
progressDesc: "Welcoming...",
func: async (params) => {
console.log("here");
await wikishield.welcomeUser(
this.getRelevantEdit().user.name,
params["template"]
);
}
}
};
}
/**
* Returns the edit events should be actioned on
*/
getRelevantEdit() {
return wikishield.tempCurrentEdit || wikishield.queue.currentEdit;
}
/**
* When a button is clicked, trigger the given event
* @param {HTMLElement} elem Button to add listener to
* @param {String} event Event to trigger
* @param {Boolean} runWithoutEdit Whether this event can be run with no edit selected
*/
linkButton(elem, event, runWithoutEdit) {
elem.addEventListener("click", () => {
wikishield.interface.selectedMenu = null;
wikishield.interface.updateMenuElements();
if (runWithoutEdit) {
this.events[event].func();
} else {
wikishield.executeScript({
actions: [
{
name: event,
params: {}
}
]
});
}
});
}
}
// </nowiki>
// <nowiki>
const wikishieldSettingsAllowedKeys = [
"!", "@", "#", "$", "%", "^", "&", "*", "(", ")",
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0",
"q", "w", "e", "r", "t", "y", "u", "i", "o", "p",
"a", "s", "d", "f", "g", "h", "j", "k", "l",
"z", "x", "c", "v", "b", "n", "m",
"-", "=", "[", "]", "\\", ";", "'", ",", ".", "/", "enter",
"_", "+", "{", "}", "|", ":", "\"", "<", ">", "?",
"arrowleft", "arrowup", "arrowdown", "arrowright"
];
class wikishieldSettingsInterface {
constructor() {
this.contentContainer = null;
this.isOpen = false;
this.keypressCallback = null;
}
/**
* Open settings container and go to general settings
*/
openSettings() {
this.closeSettings();
this.isOpen = true;
const container = document.createElement("div");
container.classList.add("settings-container");
document.body.appendChild(container);
container.innerHTML = wikishieldHTML.settings;
container.addEventListener("click", this.closeSettings.bind(this));
container.querySelector(".settings").addEventListener("click", (event) => event.stopPropagation());
container.querySelector("#settings-general-button").classList.add("selected");
this.contentContainer = container.querySelector(".settings-right");
[
[ "#settings-general-button", this.openGeneral.bind(this) ],
[ "#settings-ai-button", this.openAI.bind(this) ],
[ "#settings-controls-button", this.openControls.bind(this) ],
[ "#settings-whitelist-button", this.openWhitelist.bind(this) ],
[ "#settings-highlight-button", this.openHighlighted.bind(this) ],
[ "#settings-statistics-button", this.openStatistics.bind(this) ],
[ "#settings-appearance-button", this.openAppearance.bind(this) ],
[ "#settings-about-button", this.openAbout.bind(this) ]
].forEach(([sel, func]) => container.querySelector(sel).addEventListener("click", () => {
this.contentContainer.innerHTML = "";
[...document.querySelectorAll(".settings-left-menu-item.selected")]
.forEach(e => e.classList.remove("selected"));
container.querySelector(sel).classList.add("selected");
func();
}));
this.openGeneral();
}
/**
* Open general settings section
*/
openGeneral() {
this.contentContainer.innerHTML = `
<div class="settings-section" id="maximum-edit-count">
<div class="settings-section-title">Maximum edit count</div>
<div class="settings-section-desc">Edits from users with more than this edit count will not be shown</div>
</div>
<div class="settings-section" id="maximum-queue-size">
<div class="settings-section-title">Maximum queue size</div>
<div class="settings-section-desc">The queue will not load additional edits after reaching this size</div>
</div>
<div class="settings-section" id="minimum-ores-score">
<div class="settings-section-title">Minimum ORES score</div>
<div class="settings-section-desc">Edits with an <a href="https://www.mediawiki.org/wiki/ORES" target="_blank">ORES score</a> below this threshold will not be shown</div>
</div>
<div class="settings-section" id="sound-alert-toggle">
<div class="settings-section-title">Enable sound alerts for high ORES scores</div>
<div class="settings-section-desc">Play a sound when an edit above the threshold is added to the queue</div>
</div>
<div class="settings-section" id="sound-alert-ores-score">
<div class="settings-section-title">Sound alert ORES threshold</div>
<div class="settings-section-desc">Play a sound alert when an edit with an ORES score above this value is added</div>
</div>
<div class="settings-section" id="watchlist-expiry">
<div class="settings-section-title">Watchlist expiry for warned users</div>
<div class="settings-section-desc">How long to watch user talk pages after issuing warnings</div>
</div>
<div class="settings-section">
<div class="settings-section-title">Namespaces to show</div>
<div class="settings-section-desc">Only edits from the selected namespaces will be shown in your queue.</div>
<div id="namespace-container"></div>
</div>
`;
this.createNumericInput(
this.contentContainer.querySelector("#maximum-edit-count"),
wikishield.options.maxEditCount, 0, 500, 5,
(newValue) => {
wikishield.options.maxEditCount = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createNumericInput(
this.contentContainer.querySelector("#maximum-queue-size"),
wikishield.options.maxQueueSize, 10, 100, 5,
(newValue) => {
wikishield.options.maxQueueSize = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createNumericInput(
this.contentContainer.querySelector("#minimum-ores-score"),
wikishield.options.minimumORESScore, 0, 1, 0.05,
(newValue) => {
wikishield.options.minimumORESScore = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createToggle(
this.contentContainer.querySelector("#sound-alert-toggle"),
wikishield.options.enableSoundAlerts,
(newValue) => {
wikishield.options.enableSoundAlerts = newValue;
wikishield.saveOptions(wikishield.options);
}
);
this.createNumericInput(
this.contentContainer.querySelector("#sound-alert-ores-score"),
wikishield.options.soundAlertORESScore, 0, 1, 0.05,
(newValue) => {
wikishield.options.soundAlertORESScore = newValue;
wikishield.saveOptions(wikishield.options);
}
);
// Create watchlist expiry dropdown
const watchlistContainer = this.contentContainer.querySelector("#watchlist-expiry");
const watchlistSelect = document.createElement("select");
watchlistSelect.innerHTML = `
<option value="1 week">1 week</option>
<option value="2 weeks">2 weeks</option>
<option value="1 month">1 month</option>
<option value="3 months">3 months</option>
<option value="6 months">6 months</option>
<option value="1 year">1 year</option>
<option value="indefinite">Indefinite</option>
`;
watchlistSelect.value = wikishield.options.watchlistExpiry;
watchlistSelect.addEventListener("change", () => {
wikishield.options.watchlistExpiry = watchlistSelect.value;
wikishield.saveOptions(wikishield.options);
});
watchlistContainer.appendChild(watchlistSelect);
wikishieldData.namespaces.forEach(ns => {
this.contentContainer.querySelector("#namespace-container").innerHTML += `
<div>
<input
type="checkbox"
data-nsid="${ns.id}"
class="ns-checkbox"
${wikishield.options.namespacesShown.includes(ns.id) ? "checked" : ""}>
<label>${ns.name}</label>
</div>
`;
});
[...this.contentContainer.querySelectorAll(".ns-checkbox")].forEach(elem => {
elem.addEventListener("change", () => {
if (elem.checked) {
const set = new Set(wikishield.options.namespacesShown);
set.add(Number(elem.dataset["nsid"]));
wikishield.options.namespacesShown = [...set];
} else {
wikishield.options.namespacesShown = wikishield.options.namespacesShown
.filter(n => n !== Number(elem.dataset["nsid"]));
}
wikishield.saveOptions(wikishield.options);
});
});
}
/**
* Open AI Analysis settings section
*/
openAI() {
this.contentContainer.innerHTML = `
<div class="settings-section" id="enable-ollama-ai">
<div class="settings-section-title">Enable Ollama AI Analysis 🤖</div>
<div class="settings-section-desc">Use your local Ollama server to analyze edits for potential issues. Run any model locally with full privacy!</div>
</div>
<div class="settings-section" id="ollama-server-url">
<div class="settings-section-title">Ollama Server URL</div>
<div class="settings-section-desc">
Enter your Ollama server URL (default: http://localhost:11434)
<div style="margin-top: 8px;">
<input type="text" id="ollama-url-input" value="${wikishield.options.ollamaServerUrl}"
style="width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 4px; font-family: monospace;"
placeholder="http://localhost:11434">
<button id="test-connection-btn" style="margin-top: 8px; padding: 8px 16px; background: #667eea; color: white; border: none; border-radius: 4px; cursor: pointer;">
Test Connection
</button>
<span id="connection-status" style="margin-left: 8px;"></span>
</div>
</div>
</div>
<div class="settings-section" id="ollama-model-select">
<div class="settings-section-title">Select Model</div>
<div class="settings-section-desc">
Choose an Ollama model from your server. Click "Refresh Models" to fetch available models.
<div style="margin-top: 8px;">
<button id="refresh-models-btn" style="padding: 8px 16px; background: #667eea; color: white; border: none; border-radius: 4px; cursor: pointer;">
<span class="fa fa-sync"></span> Refresh Models
</button>
<span id="models-status" style="margin-left: 8px;"></span>
</div>
<div style="margin-top: 12px;" id="models-container">
<div style="color: #666; font-style: italic;">Click "Refresh Models" to load available models</div>
</div>
</div>
</div>
<div class="settings-section">
<div class="settings-section-title">About Ollama AI</div>
<div class="settings-section-desc">
Ollama allows you to run large language models locally on your machine with complete privacy and control.
<br><strong style="color: #28a745;">⚡ Benefits:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>100% Local - Your data never leaves your machine</li>
<li>Free to use - No API costs</li>
<li>Choose your model - Use any model you have installed</li>
<li>Fast responses - No network latency</li>
</ul>
<strong style="color: #667eea;">📚 Get started:</strong> <a href="https://ollama.com" target="_blank" style="color: #667eea; font-weight: bold;">ollama.com</a>
<br><strong>Popular models:</strong> llama3.2, mistral, gemma2, qwen2.5, deepseek-r1
</div>
</div>
<div class="settings-section">
<div class="settings-section-title" style="color: #dc3545;">⚠️ CORS Setup Required</div>
<div class="settings-section-desc warning-box" style="background: #fff3cd; padding: 12px; border-radius: 6px; border-left: 4px solid #ffc107;">
<strong>Important:</strong> Ollama needs to be configured to allow CORS requests from Wikipedia.
<br><br>
<strong>Option 1: Set Environment Variable Permanently (Recommended)</strong>
<br><br>
<strong>Windows:</strong>
<ol style="margin: 8px 0; padding-left: 20px;">
<li>Open System Properties (Win + Pause/Break or Right-click "This PC" → Properties → Advanced system settings)</li>
<li>Click "Environment Variables"</li>
<li>Under "System variables" or "User variables", click "New"</li>
<li>Variable name: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">OLLAMA_ORIGINS</code></li>
<li>Variable value: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">https://en.wikipedia.org,https://*.wikipedia.org</code></li>
<li>Click OK and restart Ollama</li>
</ol>
<strong>macOS/Linux (Add to shell profile):</strong>
<br>Add this line to <code>~/.bashrc</code>, <code>~/.zshrc</code>, or <code>~/.profile</code>:
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">export OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org"</pre>
Then run: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">source ~/.bashrc</code> (or your profile file)
<br><br>
<strong>Option 2: Temporary (One-Time Use)</strong>
<br><br>
<strong>Windows PowerShell:</strong>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">$env:OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org"
ollama serve</pre>
<strong>macOS/Linux Terminal:</strong>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org" ollama serve</pre>
<strong>Option 3: Systemd Service (Linux)</strong>
<br>Edit <code>/etc/systemd/system/ollama.service</code> and add:
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 12px; border-radius: 4px; overflow-x: auto; margin: 8px 0;">[Service]
Environment="OLLAMA_ORIGINS=https://en.wikipedia.org,https://*.wikipedia.org"</pre>
Then run: <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px;">sudo systemctl daemon-reload && sudo systemctl restart ollama</code>
<br><br>
<strong style="color: #dc3545;">⚠️ Without CORS setup, the connection will fail!</strong>
<br>After setting the environment variable, restart Ollama for changes to take effect.
</div>
</div>
<div class="settings-section">
<div class="settings-section-title">AI Analysis Features</div>
<div class="settings-section-desc">
<strong>What the AI can detect:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>Vandalism (content removal, nonsense additions, blanking)</li>
<li>Spam and promotional content</li>
<li>Bias and non-neutral point of view (POV)</li>
<li>Unsourced claims and BLP violations</li>
<li>Personal attacks and uncivil language</li>
<li>Copyright violations and plagiarism indicators</li>
<li>Disruptive editing patterns</li>
<li>Factual errors and misinformation</li>
<li>Policy violations</li>
</ul>
<strong>Features:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>Real-time analysis of edit diffs with surrounding context</li>
<li>Human-like review process with reasoning</li>
<li>Confidence levels and severity ratings</li>
<li>Specific issue identification with descriptions</li>
<li>Actionable recommendations (revert, warn, review, approve)</li>
<li>Visual indicators in the interface</li>
</ul>
</div>
</div>
`;
// Enable/disable toggle
this.createToggle(
this.contentContainer.querySelector("#enable-ollama-ai"),
wikishield.options.enableOllamaAI,
(newValue) => {
wikishield.options.enableOllamaAI = newValue;
wikishield.saveOptions(wikishield.options);
// Initialize or destroy Ollama AI instance
if (newValue) {
wikishield.ollamaAI = new wikishieldOllamaAI(
wikishield.options.ollamaServerUrl,
wikishield.options.ollamaModel
);
wikishield.logger.log("Ollama AI integration enabled");
} else {
wikishield.ollamaAI = null;
wikishield.logger.log("Ollama AI integration disabled");
}
}
);
// Server URL input handler
const urlInput = this.contentContainer.querySelector("#ollama-url-input");
urlInput.addEventListener('change', () => {
wikishield.options.ollamaServerUrl = urlInput.value.trim();
wikishield.saveOptions(wikishield.options);
if (wikishield.ollamaAI) {
wikishield.ollamaAI.serverUrl = wikishield.options.ollamaServerUrl;
}
wikishield.logger.log(`Ollama server URL updated: ${wikishield.options.ollamaServerUrl}`);
});
// Test connection button
const testBtn = this.contentContainer.querySelector("#test-connection-btn");
const statusSpan = this.contentContainer.querySelector("#connection-status");
testBtn.addEventListener('click', async () => {
// Cancel all active AI requests
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
statusSpan.innerHTML = '<span style="color: #ffc107;">Testing...</span>';
testBtn.disabled = true;
const tempAI = new wikishieldOllamaAI(wikishield.options.ollamaServerUrl, "");
const connected = await tempAI.testConnection();
if (connected) {
statusSpan.innerHTML = '<span style="color: #28a745;"><span class="fa fa-check-circle"></span> Connected!</span>';
} else {
statusSpan.innerHTML = `
<span style="color: #dc3545;">
<span class="fa fa-times-circle"></span> Failed to connect
<br><small style="font-size: 0.85em;">Make sure Ollama is running with CORS enabled (see instructions above)</small>
</span>
`;
}
testBtn.disabled = false;
});
// Refresh models button
const refreshBtn = this.contentContainer.querySelector("#refresh-models-btn");
const modelsStatus = this.contentContainer.querySelector("#models-status");
const modelsContainer = this.contentContainer.querySelector("#models-container");
refreshBtn.addEventListener('click', async () => {
// Cancel all active AI requests
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
modelsStatus.innerHTML = '<span style="color: #ffc107;">Loading...</span>';
refreshBtn.disabled = true;
try {
const tempAI = new wikishieldOllamaAI(wikishield.options.ollamaServerUrl, "");
const models = await tempAI.fetchModels();
if (models.length === 0) {
modelsContainer.innerHTML = '<div style="color: #dc3545;">No models found. Please install models using: <code>ollama pull [model-name]</code></div>';
modelsStatus.innerHTML = '<span style="color: #dc3545;">No models found</span>';
} else {
modelsStatus.innerHTML = `<span style="color: #28a745;"><span class="fa fa-check-circle"></span> Found ${models.length} model(s)</span>`;
let modelsHTML = '<div style="display: grid; gap: 8px; margin-top: 8px;">';
models.forEach(model => {
const isSelected = model.name === wikishield.options.ollamaModel;
const sizeGB = (model.size / 1024 / 1024 / 1024).toFixed(1);
modelsHTML += `
<div class="ollama-model-item" data-model="${model.name}" style="
padding: 12px;
border: 2px solid ${isSelected ? '#667eea' : 'rgba(128, 128, 128, 0.3)'};
border-radius: 6px;
cursor: pointer;
background: ${isSelected ? 'rgba(102, 126, 234, 0.15)' : 'transparent'};
transition: all 0.2s;
">
<div style="display: flex; align-items: center; gap: 8px;">
<span class="fa ${isSelected ? 'fa-check-circle' : 'fa-circle'}" style="color: ${isSelected ? '#667eea' : 'rgba(128, 128, 128, 0.5)'};"></span>
<strong style="flex: 1;">${model.name}</strong>
<span style="font-size: 0.85em; opacity: 0.7;">${sizeGB} GB</span>
</div>
<div style="font-size: 0.85em; opacity: 0.6; margin-top: 4px;">
Modified: ${new Date(model.modified_at).toLocaleDateString()}
</div>
</div>
`;
});
modelsHTML += '</div>';
modelsContainer.innerHTML = modelsHTML;
// Add click handlers for model selection
modelsContainer.querySelectorAll('.ollama-model-item').forEach(item => {
item.addEventListener('click', () => {
// Cancel all active AI requests when switching models
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAllAnalyses();
}
const modelName = item.dataset.model;
wikishield.options.ollamaModel = modelName;
wikishield.saveOptions(wikishield.options);
if (wikishield.ollamaAI) {
wikishield.ollamaAI.model = modelName;
}
wikishield.logger.log(`Ollama model selected: ${modelName}`);
// Update UI
modelsContainer.querySelectorAll('.ollama-model-item').forEach(i => {
i.style.border = '2px solid rgba(128, 128, 128, 0.3)';
i.style.background = 'transparent';
i.querySelector('.fa').classList.remove('fa-check-circle');
i.querySelector('.fa').classList.add('fa-circle');
i.querySelector('.fa').style.color = 'rgba(128, 128, 128, 0.5)';
});
item.style.border = '2px solid #667eea';
item.style.background = 'rgba(102, 126, 234, 0.15)';
item.querySelector('.fa').classList.remove('fa-circle');
item.querySelector('.fa').classList.add('fa-check-circle');
item.querySelector('.fa').style.color = '#667eea';
});
// Hover effects
item.addEventListener('mouseenter', () => {
if (item.dataset.model !== wikishield.options.ollamaModel) {
item.style.borderColor = '#667eea';
}
});
item.addEventListener('mouseleave', () => {
if (item.dataset.model !== wikishield.options.ollamaModel) {
item.style.borderColor = 'rgba(128, 128, 128, 0.3)';
}
});
});
}
} catch (err) {
modelsContainer.innerHTML = `
<div class="error-box" style="color: #dc3545; padding: 12px; background: #fff3cd; border-radius: 6px; border-left: 4px solid #dc3545;">
<strong>Error:</strong> ${err.message}
<br><br>
<strong>Troubleshooting:</strong>
<ul style="margin: 8px 0; padding-left: 20px;">
<li>Make sure Ollama is running</li>
<li>Check that CORS is enabled (see instructions above)</li>
<li>Verify the server URL is correct</li>
<li>Try the "Test Connection" button first</li>
</ul>
</div>
`;
modelsStatus.innerHTML = '<span style="color: #dc3545;"><span class="fa fa-times-circle"></span> Error loading models</span>';
}
refreshBtn.disabled = false;
});
}
/**
* Open roles settings section
*/
openRoles() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">User Roles</div>
<div class="settings-section-desc">Choose which user role activities you want to monitor</div>
<div class="settings-roles">
<label class="role-toggle" for="show-patroller">
<input type="checkbox" id="show-patroller" ${wikishield.options.showPatroller ? 'checked' : ''} />
<div class="toggle-switch"></div>
<span class="toggle-label">Show patroller activity</span>
</label>
<label class="role-toggle" for="show-admin">
<input type="checkbox" id="show-admin" ${wikishield.options.showAdmin ? 'checked' : ''} />
<div class="toggle-switch"></div>
<span class="toggle-label">Show admin activity</span>
</label>
<label class="role-toggle" for="show-bot">
<input type="checkbox" id="show-bot" ${wikishield.options.showBot ? 'checked' : ''} />
<div class="toggle-switch"></div>
<span class="toggle-label">Show bot activity</span>
</label>
</div>
<style>
.settings-roles {
display: flex;
flex-direction: column;
gap: var(--space-3);
margin-top: var(--space-4);
}
.role-toggle {
display: flex;
align-items: center;
cursor: pointer;
user-select: none;
padding: var(--space-2);
border-radius: var(--radius-md);
transition: background-color var(--transition-normal);
}
.role-toggle:hover {
background-color: var(--bg-hover);
}
.role-toggle input {
display: none;
}
.toggle-switch {
position: relative;
width: 36px;
height: 20px;
background: var(--bg-tertiary);
border-radius: 10px;
margin-right: var(--space-3);
transition: background var(--transition-normal);
}
.toggle-switch::before {
content: '';
position: absolute;
left: 2px;
top: 2px;
width: 16px;
height: 16px;
background: var(--text-primary);
border-radius: 8px;
transition: transform var(--transition-normal), background var(--transition-normal);
}
.role-toggle input:checked + .toggle-switch {
background: var(--primary);
}
.role-toggle input:checked + .toggle-switch::before {
transform: translateX(16px);
background: var(--bg-primary);
}
.role-toggle:hover .toggle-switch {
opacity: 0.9;
}
.role-toggle:focus-within .toggle-switch {
outline: 2px solid var(--primary);
outline-offset: 2px;
}
.toggle-label {
font-size: 0.95rem;
color: var(--text-primary);
}
</style>
</div>
`;
// Add event listeners for the role toggles
['patroller', 'admin', 'bot'].forEach(role => {
this.contentContainer.querySelector(`#show-${role}`).addEventListener('change', (e) => {
wikishield.options[`show${role.charAt(0).toUpperCase() + role.slice(1)}`] = e.target.checked;
wikishield.saveOptions(wikishield.options);
});
});
}
/**
* Open appearance settings section
*/
openAppearance() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Appearance</div>
<div class="settings-appearance-boxes">
<div class="settings-appearance-box" id="box-light" role="button" tabindex="0" aria-label="Switch to light theme">
<div class="theme-preview light-preview">
<div class="theme-preview-header"></div>
<div class="theme-preview-content">
<div class="preview-line"></div>
<div class="preview-line"></div>
<div class="preview-line short"></div>
</div>
</div>
<div class="theme-label">Light</div>
</div>
<div class="settings-appearance-box" id="box-dark" role="button" tabindex="0" aria-label="Switch to dark theme">
<div class="theme-preview dark-preview">
<div class="theme-preview-header"></div>
<div class="theme-preview-content">
<div class="preview-line"></div>
<div class="preview-line"></div>
<div class="preview-line short"></div>
</div>
</div>
<div class="theme-label">Dark</div>
</div>
</div>
<style>
.settings-appearance-boxes {
display: flex;
gap: var(--space-4);
margin-top: var(--space-4);
}
.settings-appearance-box {
padding: var(--space-4);
border-radius: var(--radius-lg);
border: 2px solid var(--border-color);
cursor: pointer;
transition: all var(--transition-normal);
min-width: 140px;
}
.settings-appearance-box:hover {
transform: translateY(-2px);
box-shadow: var(--shadow-md);
}
.settings-appearance-box:focus {
outline: 2px solid var(--primary);
outline-offset: 2px;
}
.theme-preview {
background: var(--bg-secondary);
border-radius: var(--radius-md);
overflow: hidden;
margin-bottom: var(--space-2);
}
.theme-preview-header {
height: 12px;
background: var(--primary);
opacity: 0.8;
}
.theme-preview-content {
padding: var(--space-2);
}
.preview-line {
height: 6px;
background: var(--text-secondary);
opacity: 0.2;
margin: 4px 0;
border-radius: 3px;
}
.preview-line.short {
width: 60%;
}
.theme-label {
text-align: center;
margin-top: var(--space-2);
font-weight: 500;
}
.light-preview {
background: var(--light-bg-secondary);
}
.light-preview .theme-preview-header {
background: var(--light-primary);
}
.light-preview .preview-line {
background: var(--light-text-secondary);
}
.dark-preview {
background: var(--dark-bg-secondary);
}
.dark-preview .theme-preview-header {
background: var(--dark-primary);
}
.dark-preview .preview-line {
background: var(--dark-text-secondary);
}
</style>
</div>
`;
this.contentContainer.querySelector("#box-light").addEventListener("click", () => {
wikishield.interface.loadTheme("theme-light");
});
this.contentContainer.querySelector("#box-dark").addEventListener("click", () => {
wikishield.interface.loadTheme("theme-dark");
});
}
/**
* Create an input with +/- buttons
* @param {HTMLElement} container Element to add the input to
* @param {Number} value Initial value for the input
* @param {Number} min Minimum input value
* @param {Number} max Maximum input value
* @param {Number} step Amount the +/- buttons change value by
* @param {(newValue: number) => void} onChange Callback function for input change
*/
/**
* Create a toggle switch
* @param {HTMLElement} container The container to add the toggle to
* @param {Boolean} value The initial value
* @param {Function} onChange Callback when value changes
*/
createToggle(container, value, onChange) {
const toggle = document.createElement("div");
toggle.classList.add("settings-toggle");
if (value) toggle.classList.add("active");
container.appendChild(toggle);
toggle.innerHTML = `
<div class="toggle-switch">
<div class="toggle-slider"></div>
</div>
`;
toggle.addEventListener("click", () => {
value = !value;
if (value) {
toggle.classList.add("active");
} else {
toggle.classList.remove("active");
}
onChange(value);
});
}
createNumericInput(container, value, min, max, step, onChange) {
const input = document.createElement("div");
input.classList.add("numeric-input-container");
container.appendChild(input);
input.innerHTML = `
<span class="fa fa-minus numeric-input-button"></span>
<input type="text" class="numeric-input" value=${value}>
<span class="fa fa-plus numeric-input-button"></span>
`;
const inputElem = input.querySelector("input");
input.querySelector(".fa-minus").addEventListener("click", () => {
value = Math.round(Math.max(value - step, min) * 100) / 100;
inputElem.value = value;
onChange(value);
});
input.querySelector(".fa-plus").addEventListener("click", () => {
value = Math.round(Math.min(value + step, max) * 100) / 100;
inputElem.value = value;
onChange(value);
});
const onInputChange = () => {
if (isNaN(Number(inputElem.value))) {
inputElem.value = value;
}
value = Math.round(Math.min(Math.max(Number(inputElem.value), min), max) * 100) / 100;
value = step >= 1 ? Math.round(value) : value;
inputElem.value = value;
onChange(value);
};
inputElem.addEventListener("blur", onInputChange);
inputElem.addEventListener("keyup", (event) => {
if (event.key.toLowerCase() === "enter") {
onInputChange();
inputElem.blur();
}
});
}
/**
* Open controls settings section
*/
openControls() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Control scripts</div>
<div class="settings-section-desc">Below you can change what actions are completed when a key is pressed.</div>
<div class="add-action-button new-control-script">
<span class="fa fa-plus"></span>
New control script
</div>
</div>
`;
for (const control of wikishield.options.controlScripts) {
const container = document.createElement("div");
container.classList.add("settings-section");
this.contentContainer.appendChild(container);
this.createControlInterface(container, control);
}
this.updateDuplicateControls();
const addButton = this.contentContainer.querySelector(".new-control-script");
addButton.addEventListener("click", () => {
wikishield.options.controlScripts.unshift({
keys: [],
actions: []
});
this.openControls();
});
}
/**
* Find which, if any, keys are used for more than one control
* @returns {String[]} List of keys used more than once
*/
findDuplicateControls() {
const keys = {};
for (const control of wikishield.options.controlScripts) {
for (const key of control.keys) {
if (!keys[key]) {
keys[key] = 0
}
keys[key] += 1;
}
}
const multiples = [];
Object.keys(keys).forEach(key => {
if (keys[key] > 1) {
multiples.push(key);
}
});
return multiples;
}
/**
* Highlight any duplicated control keys
*/
updateDuplicateControls() {
const duplicateControls = this.findDuplicateControls();
[...document.querySelectorAll(".control-keys > div[data-key]")].forEach(elem => {
if (duplicateControls.includes(elem.dataset.key)) {
elem.classList.add("key-duplicate");
} else {
elem.classList.remove("key-duplicate");
}
});
}
/**
* Create interface for changing what a control does
* @param {HTMLElement} container Parent element
* @param {Object} control The control object, see wikishieldData.controlScripts
*/
createControlInterface(container, control) {
container.innerHTML = `
<div class="control-container">
<div class="control-container-title">When these keys are pressed</div>
<div class="control-keys"></div>
<div class="control-container-title" style="margin-top: 10px;">Complete these actions</div>
<div class="control-actions"></div>
</div>
`;
const keyContainer = container.querySelector(".control-keys");
const actionContainer = container.querySelector(".control-actions");
for (const key of control.keys) {
const keyElem = document.createElement("div");
keyContainer.appendChild(keyElem);
keyElem.innerHTML = `
<div class="key-elem-title">${key === " " ? "space" : key}</div>
<span class="fas fa-trash-can remove"></span>
`;
keyElem.dataset.key = key;
keyElem.querySelector(".remove").addEventListener("click", () => {
const set = new Set(control.keys);
set.delete(key);
control.keys = [...set];
this.createControlInterface(container, control);
this.updateDuplicateControls();
wikishield.saveOptions(wikishield.options);
});
}
const plusElem = document.createElement("div");
keyContainer.appendChild(plusElem);
plusElem.innerHTML = `<span class="fas fa-plus"></span>`;
plusElem.style.cursor = "pointer";
plusElem.addEventListener("click", () => {
[...document.querySelectorAll(".key-select")].forEach(elem => elem.remove());
const keySelect = document.createElement("div");
keySelect.classList.add("key-select");
keySelect.innerHTML = "Press a key...";
plusElem.parentElement.insertBefore(keySelect, plusElem);
keySelect.addEventListener("click", () => keySelect.remove());
this.keypressCallback = (key) => {
const set = new Set(control.keys);
set.add(key);
control.keys = [...set];
this.createControlInterface(container, control);
this.updateDuplicateControls();
this.keypressCallback = null;
wikishield.saveOptions(wikishield.options);
}
});
for (const action of control.actions) {
this.createActionItem(
actionContainer,
action,
control,
() => {
wikishield.saveOptions(wikishield.options);
this.createControlInterface(container, control);
}
);
}
const bottomContainer = document.createElement("div");
bottomContainer.classList.add("control-bottom-container");
bottomContainer.innerHTML = `
<div class="add-action-container"></div>
<div>
<div class="add-action-button control-delete">Delete</div>
</div>
`;
actionContainer.appendChild(bottomContainer);
bottomContainer.querySelector(".control-delete").addEventListener("click", () => {
wikishield.options.controlScripts.splice(wikishield.options.controlScripts.indexOf(control), 1);
wikishield.saveOptions(wikishield.options);
this.openControls();
});
const addContainer = bottomContainer.querySelector(".add-action-container");
const resetAddContainer = () => {
addContainer.innerHTML = `<div class="add-action-button new-button">Add new action</div>`;
addContainer.querySelector(".new-button").addEventListener("click", () => {
addContainer.innerHTML = `
<select style="height: 35px;"></select>
<div class="add-action-button cancel-button">Cancel</div>
<div class="add-action-button create-button">Create</div>
`;
const select = addContainer.querySelector("select");
Object.keys(wikishield.interface.eventManager.events).forEach(name => {
select.innerHTML += `<option value="${name}">${wikishield.interface.eventManager.events[name].description}</option>`;
});
select.innerHTML += `<option value="if">If condition</option>`;
addContainer.querySelector(".cancel-button").addEventListener("click", () => resetAddContainer());
addContainer.querySelector(".create-button").addEventListener("click", () => {
const action = {
name: select.value,
params: {}
};
if (select.value === "if") {
action.actions = [];
action.condition = "operatorNonAdmin";
}
control.actions.push(action);
wikishield.saveOptions(wikishield.options);
this.createControlInterface(container, control);
});
});
};
resetAddContainer();
}
/**
* Given an action, find its parent
* @param {Object} action
* @param {Object} parent Object to search through
* @returns {Object} The parent action
*/
findParentOfAction(action, parent) {
if (parent.actions.indexOf(action) !== -1) {
return parent;
}
for (const act of parent.actions) {
if (act.name === "if") {
const result = this.findParentOfAction(action, act);
if (result) {
return result;
}
}
}
}
/**
* Create the interface for a single action
* @param {HTMLElement} container Parent element
* @param {Object} action
* @param {Object} control The parent control object
* @param {() => void} onChange Function to callback if the action is modified
*/
createActionItem(container, action, control, onChange) {
const itemContainer = document.createElement("div");
itemContainer.classList.add("control-action");
container.appendChild(itemContainer);
if (action.name === "if") {
itemContainer.innerHTML = `
<div class="control-action-title">
<div class="control-action-title-left">
<span class="fas fa-circle-question"></span>
If <select></select> then:
</div>
<div class="control-action-title-right"></div>
</div>
`;
const select = itemContainer.querySelector("select");
for (const key in wikishieldEventData.conditions) {
select.innerHTML += `<option value=${key}>${wikishieldEventData.conditions[key].desc}</option>`;
}
select.value = action.condition;
select.addEventListener("change", () => {
action.condition = select.value;
onChange();
});
for (const subaction of action.actions) {
this.createActionItem(itemContainer, subaction, control, onChange);
}
} else {
const event = wikishield.interface.eventManager.events[action.name];
itemContainer.innerHTML = `
<div class="control-action-title">
<div class="control-action-title-left">
<span class="${event.icon}"></span>
${event.description}
</div>
<div class="control-action-title-right"></div>
</div>
`;
for (const param of (event.parameters || [])) {
this.createItemParameter(itemContainer, param, action.params[param.id] || "", (value) => {
action.params[param.id] = value;
wikishield.saveOptions(wikishield.options);
});
}
}
itemContainer.querySelector(".control-action-title-right").innerHTML = `
<span class="fas fa-chevron-up move-action-up"></span>
<span class="fas fa-chevron-down move-action-down"></span>
<span class="fas fa-trash-can delete-action"></span>
`;
itemContainer.querySelector(".move-action-down").addEventListener("click", () => {
const parent = this.findParentOfAction(action, control);
const actionIndex = parent.actions.indexOf(action);
if (parent.actions.indexOf(action) === parent.actions.length - 1) {
if (parent.name !== "if") {
return;
}
const grandparent = this.findParentOfAction(parent, control);
grandparent.actions.splice(grandparent.actions.indexOf(parent) + 1, 0, action);
parent.actions.splice(actionIndex, 1);
} else {
const nextSibling = parent.actions[actionIndex + 1];
if (nextSibling.name === "if") {
nextSibling.actions.unshift(action);
parent.actions.splice(actionIndex, 1);
} else {
parent.actions.splice(actionIndex, 1);
parent.actions.splice(actionIndex + 1, 0, action);
}
}
onChange();
});
itemContainer.querySelector(".move-action-up").addEventListener("click", () => {
const parent = this.findParentOfAction(action, control);
const actionIndex = parent.actions.indexOf(action);
if (parent.actions.indexOf(action) === 0) {
if (parent.name !== "if") {
return;
}
const grandparent = this.findParentOfAction(parent, control);
grandparent.actions.splice(grandparent.actions.indexOf(parent), 0, action);
parent.actions.splice(actionIndex, 1);
} else {
const prevSibling = parent.actions[actionIndex - 1];
if (prevSibling.name === "if") {
prevSibling.actions.push(action);
parent.actions.splice(actionIndex, 1);
} else {
parent.actions.splice(actionIndex, 1);
parent.actions.splice(actionIndex - 1, 0, action);
}
}
onChange();
});
itemContainer.querySelector(".delete-action").addEventListener("click", () => {
const parent = this.findParentOfAction(action, control);
parent.actions.splice(parent.actions.indexOf(action), 1);
onChange();
});
}
/**
* Given a parameter, create a label and input
* @param {HTMLElement} container
* @param {Object} parameter
* @param {String} value
* @param {(value: string) => void} onChange
*/
createItemParameter(container, parameter, value, onChange) {
const parameterElem = document.createElement("div");
parameterElem.classList.add("action-parameter");
container.appendChild(parameterElem);
parameterElem.innerHTML = `
<div class="parameter-title">${parameter.title}</div>
`;
if (parameter.type === "choice") {
parameterElem.innerHTML += `<select></select>`;
const select = parameterElem.querySelector("select");
for (const choice of parameter.options) {
select.innerHTML += `<option>${choice}</option>`;
}
select.value = value;
select.addEventListener("change", () => onChange(select.value));
} else if (parameter.type === "text") {
parameterElem.innerHTML += `<input type="text">`;
const input = parameterElem.querySelector("input");
input.value = value;
input.addEventListener("keydown", (event) => {
if (event.key.toLowerCase() === "enter") {
onChange(input.value);
input.blur();
}
});
input.addEventListener("blur", () => onChange(input.value));
}
}
/**
* Open whitelist settings section
*/
openWhitelist() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Whitelisted users</div>
<div class="settings-section-desc">This is a list of users you have whitelisted. Edits by these users will not appear in your queue. The list of whitelisted users resets whenever you restart wikishield.</div>
</div>
<div class="settings-section user-container"></div>
`;
const container = this.contentContainer.querySelector(".user-container");
this.createUserList(container, wikishield.whitelist);
}
/**
* Create a list of users given a set of usernames
* @param {HTMLElement} container
* @param {Set<string>} set
*/
createUserList(container, set) {
for (const user of [...set]) {
const userItem = document.createElement("div");
container.appendChild(userItem);
userItem.innerHTML = `
<div>
<a target="_blank" href="${wikishield.util.pageLink(`Special:Contributions/${user}`)}">${user}</a>
</div>
<div class="add-action-button remove-button">Remove</div>
`;
userItem.querySelector(".remove-button").addEventListener("click", () => {
set.delete(user);
userItem.remove();
});
}
}
/**
* Open highlighted settings section
*/
openHighlighted() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Highlighted users</div>
<div class="settings-section-desc">This is a list of users you have highlighted. Edits by these users will appear before other edits in your queue. The list of highlighted users resets whenever you restart wikishield.</div>
</div>
<div class="settings-section user-container"></div>
`;
const container = this.contentContainer.querySelector(".user-container");
this.createUserList(container, wikishield.highlighted);
}
/**
* Open statistics settings section
*/
openStatistics() {
const revertRate = Math.round(wikishield.statistics.reverts / wikishield.statistics.reviewed * 1000) / 10;
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">Statistics</div>
<p>You have reviewed a total of <b>${wikishield.statistics.reviewed}</b> edits, and reverted <b>${wikishield.statistics.reverts}</b> (${revertRate}%).</p>
<p>You have reported users or requested protection <b>${wikishield.statistics.reports}</b> times.</p>
</div>
`;
}
/**
* Open about settings section
*/
openAbout() {
this.contentContainer.innerHTML = `
<div class="settings-section">
<div class="settings-section-title">About wikishield</div>
<p>Created by User:Ingenuity. Version ${wikishieldVersion}</p>
</div>
<div class="settings-section">
${wikishieldChangelog || "<p>No changelog is available.</p>"}
</div>
`;
}
/**
* Remove all existing settings containers
*/
closeSettings() {
this.isOpen = false;
[...document.querySelectorAll(".settings-container")].forEach(elem => elem.remove());
}
/**
* Handle a keypress while settings are open
* @param {KeyboardEvent} event
*/
handleKeypress(event) {
if (event.key.toLowerCase() === "escape") {
this.closeSettings();
return;
}
if (this.keypressCallback && wikishieldSettingsAllowedKeys.includes(event.key.toLowerCase())) {
this.keypressCallback(event.key.toLowerCase());
event.preventDefault();
}
}
}
// </nowiki>
// <nowiki>
class wikishieldInterface {
constructor() {
this.selectedWidthAdjust = null;
this.startingSectionWidth = null;
this.startingMouseX = null;
this.lastCurrentEdit = null;
this.eventManager = new wikishieldEventManager();
this.settings = new wikishieldSettingsInterface();
this.selectedMenu = null;
this.selectedSubmenu = null;
}
/**
* Create a stylesheet with the given theme's style
* @param {String} name
*/
loadTheme(name) {
this.removeTheme();
// Apply base styles first
const baseStyle = document.createElement("style");
baseStyle.classList.add("wikishield-theme-base");
baseStyle.innerHTML = wikishieldStyling["base"];
document.head.appendChild(baseStyle);
// Apply theme-specific styles
const style = document.createElement("style");
style.classList.add("wikishield-theme");
style.innerHTML = wikishieldStyling[name];
document.head.appendChild(style);
// Set the data-theme attribute on the root element
document.documentElement.setAttribute("data-theme", name.replace("theme-", ""));
// Save the theme preference
wikishield.options.theme = name;
wikishield.saveOptions(wikishield.options);
}
/**
* Remove all theme stylesheets
*/
removeTheme() {
document.querySelectorAll(".wikishield-theme, .wikishield-theme-base").forEach(elem => elem.remove());
document.documentElement.removeAttribute("data-theme");
}
/**
* Build the starting page
*/
async build() {
document.head.innerHTML = `
<title>wikishield</title>
<style>${wikishieldStyling["initial"]}</style>
`;
document.body.innerHTML = wikishieldHTML["initial"];
if (wikishield.rights.rollback) {
this.elem("#rollback-needed").style.display = "none";
} else {
this.elem("#start-button").style.display = "none";
}
this.elem("#start-button").addEventListener("click", () => {
wikishield.start();
});
this.loadTheme(wikishield.options.theme || "theme-light");
}
/**
* Build the main interface, and link buttons to events
*/
start() {
document.head.innerHTML = `
<title>wikishield</title>
<style>${wikishieldStyling["main"]}${wikishieldStyling["mobile"]}</style>
${wikishieldHTML["head"]}
`;
this.loadTheme(wikishield.options.theme || "theme-light");
document.body.innerHTML = wikishieldHTML["main"];
[...document.querySelectorAll(".bottom-tool-title")].forEach(elem => {
elem.addEventListener("click", () => {
this.selectedMenu = this.selectedMenu === elem ? null : elem;
this.selectedSubmenu = null;
this.updateMenuElements();
});
});
[...document.querySelectorAll(".submenu")].forEach(elem => {
elem.addEventListener("click", () => {
this.selectedSubmenu = this.selectedSubmenu === elem ? null : elem;
this.updateMenuElements();
});
});
[...document.querySelectorAll(".bottom-tool-option-subcontent")].forEach(elem => {
elem.addEventListener("click", (event) => event.stopPropagation());
});
[
this.elem("#delete-queue"),
this.elem("#open-settings"),
this.elem("#notifications-icon"),
this.elem("#user-contribs-level")
].forEach(e => this.addTooltipListener(e));
// Notification icon click handler
this.elem("#notifications-icon").addEventListener("click", (e) => {
e.stopPropagation();
const panel = this.elem("#notifications-panel");
panel.classList.toggle("show");
});
// Mark all as read handler
this.elem("#mark-all-read").addEventListener("click", () => {
wikishield.markAllNotificationsRead();
});
// Close notifications panel when clicking outside
document.addEventListener("click", (e) => {
const panel = this.elem("#notifications-panel");
const icon = this.elem("#notifications-icon");
if (panel && !panel.contains(e.target) && !icon.contains(e.target)) {
panel.classList.remove("show");
}
});
this.eventManager.linkButton(
this.elem("#delete-queue"),
"deleteQueue", true
);
this.eventManager.linkButton(
this.elem("#open-settings"),
"openSettings", true
);
this.eventManager.linkButton(
this.elem("#user-open-user-page"),
"openUserPage"
);
this.eventManager.linkButton(
this.elem("#user-open-user-talk"),
"openUserTalk"
);
this.eventManager.linkButton(
this.elem("#user-view-contribs"),
"openUserContribs"
);
this.eventManager.linkButton(
this.elem("#user-view-filter-log"),
"openFilterLog"
);
this.eventManager.linkButton(
this.elem("#user-add-whitelist"),
"addToWhitelist"
);
this.eventManager.linkButton(
this.elem("#user-highlight"),
"highlight"
);
this.eventManager.linkButton(
this.elem("#page-open-page"),
"openPage"
);
this.eventManager.linkButton(
this.elem("#page-open-talk"),
"openTalk"
);
this.eventManager.linkButton(
this.elem("#page-view-history"),
"openHistory"
);
this.eventManager.linkButton(
this.elem("#edit-view-revision"),
"openRevision"
);
this.eventManager.linkButton(
this.elem("#edit-view-diff"),
"openDiff"
);
this.eventManager.linkButton(
this.elem("#edit-thank-user"),
"thankUser"
);
this.eventManager.linkButton(
this.elem("#edit-rollback"),
"rollback"
);
this.createSubmenu(
this.elem("#edit-rollback-goodfaith .bottom-tool-option-subcontent"),
"rollbackGoodFaith"
);
this.createSubmenu(
this.elem("#edit-undo .bottom-tool-option-subcontent"),
"undo"
);
this.createSubmenu(
this.elem("#user-report-aiv .bottom-tool-option-subcontent"),
"reportToAIV"
);
this.createSubmenu(
this.elem("#user-report-uaa .bottom-tool-option-subcontent"),
"reportToUAA"
);
// this.createSubmenu(
// this.elem("#user-block .bottom-tool-option-subcontent"),
// "block"
// );
this.createSubmenu(
this.elem("#page-request-protection .bottom-tool-option-subcontent"),
"requestProtection"
);
// this.createSubmenu(
// this.elem("#page-protect .bottom-tool-option-subcontent"),
// "protect"
// );
this.createSubmenu(
this.elem("#user-welcome .bottom-tool-option-subcontent"),
"welcome"
);
this.createSubmenu(
this.elem("#edit-rollback-goodfaith .bottom-tool-option-subcontent"),
"rollbackGoodFaith"
);
if (!wikishield.rights.block) {
[...document.querySelectorAll(".tool-block")].forEach(elem => elem.style.display = "none");
}
if (!wikishield.rights.protect) {
[...document.querySelectorAll(".tool-protect")].forEach(elem => elem.style.display = "none");
}
[...this.elem("#bottom-tools").querySelectorAll("[data-tooltip]")]
.forEach(elem => this.addTooltipListener(elem));
this.createRevertMenu(this.elem("#revert-menu"));
this.createWarnMenu(this.elem("#warn-menu"));
const queueWidthAdjust = this.elem("#queue-width-adjust");
const queue = this.elem("#queue");
const detailsWidthAdjust = this.elem("#details-width-adjust");
const details = this.elem("#right-details");
queueWidthAdjust.addEventListener("mousedown", (event) => {
this.selectedWidthAdjust = queueWidthAdjust;
this.startingMouseX = event.clientX;
this.startingSectionWidth = queue.getBoundingClientRect().width;
});
detailsWidthAdjust.addEventListener("mousedown", (event) => {
this.selectedWidthAdjust = detailsWidthAdjust;
this.startingMouseX = event.clientX;
this.startingSectionWidth = details.getBoundingClientRect().width;
});
window.addEventListener("mouseup", () => this.selectedWidthAdjust = null);
window.addEventListener("mousemove", (event) => {
if (this.selectedWidthAdjust === queueWidthAdjust) {
const newWidth = event.clientX - this.startingMouseX + this.startingSectionWidth;
queue.style.width = Math.min(Math.max(newWidth, 200), 400) + "px";
this.elem("#right-container").style.width = `calc(100% - ${queue.style.width})`;
}
if (this.selectedWidthAdjust === detailsWidthAdjust) {
const newWidth = this.startingMouseX - event.clientX + this.startingSectionWidth;
details.style.width = Math.min(Math.max(newWidth, 250), 400) + "px";
this.elem("#main-container").style.width = `calc(100% - ${details.style.width})`;
}
});
window.addEventListener("click", () => {
[...document.querySelectorAll(".context-menu")].forEach(elem => elem.remove());
});
if (wikishield.getChangelogVersion() !== wikishieldChangelogVersion) {
const container = document.createElement("div");
container.classList.add("settings-container");
document.body.appendChild(container);
container.innerHTML = `
<div class="settings">
<div class="settings-section changelog">
${wikishieldChangelog}
<button id="close-changelog" class="add-action-button">Close</button>
</div>
</div>
`;
document.getElementById("close-changelog").addEventListener("click", () => {
container.remove();
wikishield.updateChangelogVersion();
});
}
}
/**
* Update which menu elements are selected and open
*/
updateMenuElements() {
[...document.querySelectorAll(".bottom-tool-content")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".bottom-tool-title-selected")].forEach(e => e.classList.remove("bottom-tool-title-selected"));
[...document.querySelectorAll(".bottom-tool-title")].forEach(elem => {
if (this.selectedMenu === elem) {
elem.classList.add("bottom-tool-title-selected");
elem.parentElement.querySelector(".bottom-tool-content").style.display = "initial";
}
});
[...document.querySelectorAll(".bottom-tool-option-subcontent")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".submenu-selected")].forEach(e => e.classList.remove("submenu-selected"));
[...document.querySelectorAll(".submenu")].forEach(elem => {
if (this.selectedSubmenu === elem) {
elem.classList.add("submenu-selected");
elem.children[2].style.display = "initial";
}
});
}
/**
* Close all bottom menu popups
*/
closeAllMenus() {
this.selectedMenu = null;
this.selectedSubmenu = null;
[...document.querySelectorAll(".bottom-tool-content")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".bottom-tool-title-selected")].forEach(e => e.classList.remove("bottom-tool-title-selected"));
[...document.querySelectorAll(".bottom-tool-option-subcontent")].forEach(e => e.style.display = "none");
[...document.querySelectorAll(".submenu-selected")].forEach(e => e.classList.remove("submenu-selected"));
}
/**
* Create the menu for warning types
* @param {HTMLElement} container
*/
createRevertMenu(container) {
const table = document.createElement("table");
table.classList.add("revert-menu-table");
container.appendChild(table);
for (const warningType in wikishieldData.warnings) {
const row = document.createElement("tr");
table.appendChild(row);
const levels = [ "Auto", "1", "2", "3", "4", "4im" ];
row.innerHTML += `
<td class="revert-menu-title">${warningType}</td>
<td class="revert-menu-info" data-tooltip="${wikishieldData.warnings[warningType].desc}">
<span class="fas fa-circle-question"></span>
</td>
`;
const templates = [ "Auto", ...wikishieldData.warnings[warningType].templates ];
for (const template in templates) {
const level = levels[template];
const elem = document.createElement("td");
row.appendChild(elem);
elem.innerText = level;
if (level === "Auto") {
elem.style.backgroundColor = "#00a000";
} else {
elem.style.backgroundColor = wikishieldData.warningTemplateColors[level];
}
elem.classList.add("revert-menu-item");
elem.addEventListener("click", async () => {
await wikishield.executeScript({
actions: [
{
name: "rollback",
params: {
"label": wikishieldData.warnings[warningType].label
}
},
{
name: "warn",
params: {
warningType,
level: level === "Auto" ? "auto" : (level === "4im" ? "4im" : Number(template) + 1)
}
},
{
name: "highlight",
params: {}
},
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{
name: "reportToAIV",
params: {
reportMessage: "Vandalism past final warning"
}
}
]
}
]
},
{
name: "nextEdit",
params: {}
}
]
});
this.selectedMenu = null;
this.updateMenuElements();
});
}
}
[...container.querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
}
/**
* Create the warn menu (without rollback)
* @param {HTMLElement} container Container element for the menu
*/
createWarnMenu(container) {
const warnTypes = {
"Gaming the system": {
templates: [
"subst:uw-gaming1",
"subst:uw-gaming2",
"subst:uw-gaming3",
"subst:uw-gaming4",
"subst:uw-gaming4im"
],
label: "[[WP:GAME|gaming the system]]",
desc: "Warning for gaming the system or manipulating Wikipedia processes.",
requiresArticle: true
},
"Misleading edit summaries": {
templates: [
"subst:uw-mislead1",
"subst:uw-mislead2",
"subst:uw-mislead3",
"subst:uw-mislead4"
],
label: "using [[WP:EDITSUMMARY|misleading edit summaries]]",
desc: "Warning for using misleading or false edit summaries.",
requiresArticle: true
},
"Incorrect minor edits": {
templates: [
"subst:uw-minor"
],
label: "incorrect use of [[Help:Minor edit|minor edits]]",
desc: "Warning for incorrectly marking edits as minor.",
requiresArticle: false
}
};
const table = document.createElement("table");
table.classList.add("revert-menu-table");
container.appendChild(table);
for (const warningType in warnTypes) {
const row = document.createElement("tr");
table.appendChild(row);
const warningData = warnTypes[warningType];
const levels = warningData.templates.length === 1 ? ["Only"] : ["1", "2", "3", "4", "4im"];
row.innerHTML += `
<td class="revert-menu-title">${warningType}</td>
<td class="revert-menu-info" data-tooltip="${warningData.desc}">
<span class="fas fa-circle-question"></span>
</td>
`;
for (let i = 0; i < warningData.templates.length; i++) {
const template = warningData.templates[i];
const level = levels[i];
const elem = document.createElement("td");
row.appendChild(elem);
elem.innerText = level;
// Color coding for levels
if (warningData.templates.length === 1) {
elem.style.backgroundColor = "#4a90e2";
} else if (level === "4im") {
elem.style.backgroundColor = wikishieldData.warningTemplateColors["4im"];
} else {
elem.style.backgroundColor = wikishieldData.warningTemplateColors[level];
}
elem.classList.add("revert-menu-item");
elem.addEventListener("click", async () => {
await wikishield.executeScript({
actions: [
{
name: "warn",
params: {
warningType: warningType,
level: i + 1,
warningTemplates: warningData.templates,
warningLabel: warningData.label,
requiresArticle: warningData.requiresArticle
}
},
{
name: "highlight",
params: {}
},
{
name: "nextEdit",
params: {}
}
]
});
this.selectedMenu = null;
this.updateMenuElements();
});
}
}
[...container.querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
}
/**
* Create a form for a submenu based on an event
* @param {HTMLElement} container Container element for the submenu
* @param {String} eventName EventManager event name
*/
createSubmenu(container, eventName) {
const event = this.eventManager.events[eventName];
container.innerHTML = `
<div class="bottom-subcontent-title">${event.description}</div>
`;
for (const param of (event.parameters || [])) {
container.innerHTML += `<div class="bottom-subcontent-input-title">${param.title}</div>`;
switch (param.type) {
case "choice":
const optionHTML = param.options.reduce((prev, cur) => prev + `<option>${cur}</option>`, "");
container.innerHTML += `
<select data-paramid="${param.id}">
${optionHTML}
</select>
`;
break;
case "text":
container.innerHTML += `<input type="text" data-paramid="${param.id}">`
break;
default:
break;
}
}
const button = document.createElement("button");
button.innerText = "Submit";
button.classList.add("bottom-subcontent-button");
container.appendChild(button);
button.addEventListener("click", () => {
const params = {};
for (const param of (event.parameters || [])) {
const input = container.querySelector(`[data-paramid="${param.id}"]`);
params[param.id] = input.value;
}
wikishield.executeScript({
actions: [
{
name: eventName,
params
}
]
});
this.selectedMenu = null;
this.selectedSubmenu = null;
this.updateMenuElements();
});
}
/**
* Add edits to the queue if they aren't already there
* @param {Object} queue
* @param {Object} currentEdit
*/
renderQueue(queue, currentEdit) {
let lastEditElem = null;
this.elem("#queue-top-items").innerText = queue.length + " item" + (queue.length === 1 ? "" : "s");
for (const edit of queue) {
// Scope the selector to only search within #queue-items
let elem = this.elem(`#queue-items .queue-edit[data-revid="${edit.revid}"]`);
if (!elem) {
elem = document.createElement("div");
elem.classList.add("queue-edit");
elem.dataset.revid = edit.revid.toString();
elem.innerHTML = this.generateEditHTML(edit);
if (lastEditElem) {
lastEditElem.parentElement.insertBefore(elem, lastEditElem.nextSibling);
} else {
if (edit === currentEdit) {
this.elem("#queue-items").prepend(elem);
} else {
this.elem("#queue-items").appendChild(elem);
}
}
[...elem.querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
elem.addEventListener("contextmenu", (event) => {
event.preventDefault();
[...document.querySelectorAll(".context-menu")].forEach(e => e.remove());
const contextMenu = document.createElement("div");
contextMenu.classList.add("context-menu");
contextMenu.innerHTML = wikishieldHTML["edit-context-menu"];
document.body.appendChild(contextMenu);
contextMenu.style.left = event.clientX + "px";
contextMenu.style.top = event.clientY + "px";
contextMenu.querySelector("#context-ores-number").innerText = Math.round(edit.ores * 100) || 0;
contextMenu.querySelector("#context-ores-number").style.color = this.getORESColor(edit.ores || 0);
contextMenu.querySelector("#context-remove").addEventListener("click", () => {
// Cancel AI analysis for the edit being removed
if (wikishield.ollamaAI) {
wikishield.ollamaAI.cancelAnalysis(edit.revid);
}
if (edit === currentEdit) {
wikishield.queue.nextItem();
} else {
for (let i = 0; i < queue.length; i++) {
if (queue[i] === edit) {
queue.splice(i, 1);
break;
}
}
this.removeQueueItem(edit.revid);
}
wikishield.queue.previousItems.push(edit);
contextMenu.remove();
});
contextMenu.querySelector("#context-whitelist").addEventListener("click", () => {
wikishield.whitelist.add(edit.user.name);
contextMenu.remove();
});
contextMenu.querySelector("#context-open-history").addEventListener("click", () => {
window.open(wikishield.util.pageLink(`Special:PageHistory/${edit.page.title}`));
contextMenu.remove();
});
contextMenu.querySelector("#context-open-contribs").addEventListener("click", () => {
window.open(wikishield.util.pageLink(`Special:Contributions/${edit.user.name}`));
contextMenu.remove();
});
contextMenu.addEventListener("click", (mevent) => {
mevent.stopPropagation();
});
});
elem.addEventListener("click", () => {
wikishield.queue.currentEdit = edit;
this.renderQueue(wikishield.queue.queue, edit);
// Trigger AI analysis when clicking to view a different edit
if (edit && wikishield.options.enableOllamaAI && wikishield.ollamaAI) {
wikishield.ollamaAI.analyzeEdit(edit).then(analysis => {
edit.aiAnalysis = analysis;
if (wikishield.queue.currentEdit === edit && wikishield.interface) {
wikishield.interface.updateAIAnalysisDisplay(analysis);
}
}).catch(err => {
console.error("AI analysis failed:", err);
});
}
});
}
if (edit === currentEdit) {
elem.classList.add("queue-edit-current");
} else {
elem.classList.remove("queue-edit-current");
}
lastEditElem = elem;
}
if (this.lastCurrentEdit !== currentEdit) {
this.lastCurrentEdit = currentEdit;
this.newEditSelected(currentEdit);
}
}
/**
* Generate the HTML for a single edit in the queue, user edits, or page history sections
* @param {Object} edit
* @param {Boolean} includeORES include the ORES score of the edit
* @param {Boolean} includeTitle include the page title
* @param {Boolean} includeUser include the name of the user who made the edit
* @param {Boolean} includeTime include the edit's timestamp
*/
generateEditHTML(edit, includeORES=true, includeTitle=true, includeUser=true, includeTime=false) {
let tagHTML = "";
for (const tag of edit.tags) {
tagHTML += `<span class="queue-edit-tag">${tag}</span>`;
}
const diff = edit.sizediff || 0;
const summaryTruncated = edit.comment ? wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.comment, 100)) : "";
const summaryFull = edit.comment ? wikishield.util.escapeHtml(edit.comment) : "";
// Add minor edit indicator before summary
const minorIndicator = edit.minor ? `<span class="minor-indicator" data-tooltip="Minor edit">m</span> ` : "";
const oresHTML = includeORES ? `<div class="queue-edit-color" style="background: ${this.getORESColor(edit.ores || 0)};"></div>` : "";
const titleHTML = includeTitle ? `
<div class="queue-edit-title" data-tooltip="${edit.page ? edit.page.title : edit.title}">
<span class="fa fa-file-lines queue-edit-icon"></span>
${edit.page ? edit.page.title : edit.title}
</div>` : "";
// Determine user highlight classes
let userClasses = "";
if (edit.user && wikishield.highlighted.has(edit.user.name)) {
userClasses = "queue-edit-user-highlight";
} else if (edit.user && typeof edit.user === "object" && edit.user.emptyTalkPage) {
userClasses = "queue-edit-user-empty-talk";
}
const userHTML = includeUser ? `
<div class="queue-edit-user ${userClasses}">
<span class="fa fa-user queue-edit-icon"></span>
${!edit.user ? "<em>Username removed</em>" : typeof edit.user === "string" ? edit.user : edit.user.name}
</div>` : "";
const timeHTML = includeTime ? `
<div class="queue-edit-time" data-tooltip="${edit.timestamp}">
<span class="fa fa-clock queue-edit-icon"></span>
${wikishield.util.timeAgo(edit.timestamp)}
</div>` : "";
return `
${oresHTML}
<div class="queue-edit-content">
${titleHTML}
${userHTML}
<div class="queue-edit-summary" data-tooltip="${summaryFull}">
<span class="fa fa-comment-dots queue-edit-icon"></span>
${minorIndicator}${summaryTruncated || "<em>No summary provided</em>"}
</div>
${timeHTML}
<div class="queue-edit-tags">
${tagHTML}
</div>
</div>
<div class="queue-edit-change" style="${Math.abs(diff) >= 500 ? "font-weight: bold;" : ""}color: ${wikishield.util.getChangeColor(diff)}">
${wikishield.util.getChangeString(diff)}
</div>
`;
}
/**
* Update the main container when a new edit is selected
* @param {Object} edit
*/
async newEditSelected(edit) {
// Close all bottom menu popups when switching pages
this.closeAllMenus();
const userContribsLevel = this.elem("#user-contribs-level");
const contribsContainer = this.elem("#user-contribs-content"),
historyContainer = this.elem("#page-history-content");
contribsContainer.innerHTML = "";
historyContainer.innerHTML = "";
// Remove any existing tooltips when switching diffs
this.removeTooltips();
if (edit === null) {
this.elem("#right-top").innerHTML = "";
this.elem("#user-contribs-count").innerText = "_ edits";
userContribsLevel.style.display = "none";
this.elem("#diff-container").innerHTML = "";
// Remove AI analysis container when no edit
const aiContainer = document.querySelector("#ai-analysis-container");
if (aiContainer) {
aiContainer.remove();
}
// Remove old edit notice when no edit
const noticeContainer = document.querySelector("#old-edit-notice");
if (noticeContainer) {
noticeContainer.remove();
}
// Update diff height
this.updateDiffContainerHeight();
// Hide block count indicator
const blockIndicator = document.querySelector("#user-contribs #block-count-indicator");
if (blockIndicator) {
blockIndicator.style.display = "none";
blockIndicator.innerHTML = "";
}
// Clear protection indicator
const protIndicator = document.querySelector("#page-history #protection-indicator");
if (protIndicator) {
protIndicator.innerHTML = "";
}
return;
}
// If this is the first time viewing this edit, check for newer revisions
if (!edit.reviewed && edit.page.history && edit.page.history.length > 0) {
const newestRevision = edit.page.history[0];
if (newestRevision.revid !== edit.revid) {
// There's a newer revision, load it
await wikishield.queue.loadFromHistory(newestRevision.revid);
return; // Exit early since loadFromHistory will trigger newEditSelected again
}
}
userContribsLevel.style.display = "initial";
userContribsLevel.style.background = wikishieldData.warningTemplateColors[edit.user.warningLevel] || "grey";
userContribsLevel.innerText = edit.user.warningLevel;
// Fetch warning history for tooltip
if (edit.user.warningLevel !== "0") {
wikishield.api.getSinglePageContent(`User talk:${edit.user.name}`).then(talkContent => {
const warningHistory = wikishield.queue.getWarningHistory(talkContent);
if (warningHistory.length > 0) {
let tooltipHtml = '<div class="tooltip-title">⚠️ Warning History</div>';
warningHistory.slice(0, 5).forEach(warning => {
const templateDisplay = `${warning.template}${warning.level}`;
const articleInfo = warning.article ? `<span class="tooltip-item-article"> (${wikishield.util.escapeHtml(warning.article)})</span>` : "";
const userInfo = warning.username ? `User:${wikishield.util.escapeHtml(warning.username)}` : (warning.timestamp || warning.section);
tooltipHtml += `<div class="tooltip-item">`;
tooltipHtml += `<span class="tooltip-item-level">${wikishield.util.escapeHtml(templateDisplay)}</span>`;
tooltipHtml += articleInfo;
tooltipHtml += `<br><span class="tooltip-item-time">${wikishield.util.escapeHtml(userInfo)}</span>`;
tooltipHtml += `</div>`;
});
if (warningHistory.length > 5) {
tooltipHtml += `<div class="tooltip-more">... and ${warningHistory.length - 5} more</div>`;
}
userContribsLevel.setAttribute("data-tooltip", tooltipHtml);
userContribsLevel.setAttribute("data-tooltip-html", "true");
} else {
userContribsLevel.setAttribute("data-tooltip", `Warning level: ${edit.user.warningLevel}`);
userContribsLevel.setAttribute("data-tooltip-html", "false");
}
}).catch(() => {
userContribsLevel.setAttribute("data-tooltip", `Warning level: ${edit.user.warningLevel}`);
userContribsLevel.setAttribute("data-tooltip-html", "false");
});
} else {
userContribsLevel.setAttribute("data-tooltip", "No warnings");
userContribsLevel.setAttribute("data-tooltip-html", "false");
}
this.elem("#user-contribs-count").innerText = edit.user.editCount === -1 ? "N/A edits"
: edit.user.editCount + " edit" + (edit.user.editCount === 1 ? "" : "s");
const summaryTruncated = edit.comment ? wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.comment, 150)) : "";
const summaryFull = edit.comment ? wikishield.util.escapeHtml(edit.comment) : "";
const minorIndicator = edit.minor ? `<span class="minor-indicator" data-tooltip="Minor edit">m</span> ` : "";
const title = wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.page.title, 50));
const titleFull = wikishield.util.escapeHtml(edit.page.title);
const username = wikishield.util.escapeHtml(wikishield.util.maxStringLength(edit.user.name, 30));
const usernameFull = wikishield.util.escapeHtml(edit.user.name);
// Fetch page protection info and user block count
const protectionPromise = wikishield.api.getPageProtection(edit.page.title);
const blockCountPromise = wikishield.api.getBlockCount(edit.user.name);
this.elem("#right-top").innerHTML = `
<div>
<span class="fa fa-file-lines"></span>
<a href="${wikishield.util.pageLink(edit.page.title)}" target="_blank" data-tooltip="${titleFull}">${title}</a>
</div>
<div>
<span class="fa fa-user"></span>
<a href="${wikishield.util.pageLink("Special:Contributions/" + edit.user.name)}" target="_blank" data-tooltip="${usernameFull}">${username}</a>
</div>
<div>
<span class="fa fa-pencil"></span>
<span style="color: ${wikishield.util.getChangeColor(edit.sizediff || 0)}">${wikishield.util.getChangeString(edit.sizediff || 0)}</span>
</div>
<div class="right-top-comment" data-tooltip="${summaryFull}">
<span class="fa fa-comment-dots"></span>
${minorIndicator}${summaryTruncated || "<em>No summary provided</em>"}
</div>
`;
// Highlight username in top bar based on status (same as queue highlighting)
const myUsername = mw.config.get("wgUserName");
const rightTop = this.elem("#right-top");
const userDiv = rightTop.children[1]; // Second div contains the username
if (userDiv) {
// Detect current theme
const isDarkMode = wikishield.options.theme === "theme-dark";
// Apply padding and border radius for highlights
const highlightStyle = "padding: 4px 8px; border-radius: 4px;";
// Check if user is highlighted (yellow) or has empty talk page (red)
if (wikishield.highlighted.has(edit.user.name)) {
const bgColor = isDarkMode ? "#727237" : "#ffffbe"; // Yellow highlight
userDiv.style.cssText = `background: ${bgColor}; ${highlightStyle}`;
} else if (edit.user.emptyTalkPage) {
const bgColor = isDarkMode ? "#6b3737" : "#ffcccc"; // Red highlight for empty talk page
userDiv.style.cssText = `background: ${bgColor}; ${highlightStyle}`;
}
// Also add outline if it's the current user's name
if (myUsername && edit.user.name === myUsername) {
userDiv.style.outline = "2px solid #ffc107";
userDiv.style.outlineOffset = "-2px";
}
}
// Load protection info and display in page history header
protectionPromise.then(protection => {
const protIndicator = document.querySelector("#page-history #protection-indicator");
if (protIndicator) {
if (protection.protected) {
let icon = "🔒";
let tooltip = "Protected";
if (protection.level === "full") {
icon = "🔒";
tooltip = "Fully protected";
} else if (protection.level === "semi") {
icon = "🔓";
tooltip = "Semi-protected";
} else if (protection.level === "extended") {
icon = "🔐";
tooltip = "Extended confirmed protected";
}
protIndicator.innerHTML = `<span style="cursor: help;" data-tooltip="${tooltip}">${icon}</span>`;
this.addTooltipListener(protIndicator.querySelector("[data-tooltip]"));
} else {
protIndicator.innerHTML = "";
}
}
});
// Load block count and display next to warning level
blockCountPromise.then(async blockCount => {
const blockIndicator = document.querySelector("#user-contribs #block-count-indicator");
if (blockIndicator) {
if (blockCount > 0) {
// Fetch detailed block history for tooltip
const blockHistory = await wikishield.api.getBlockHistory(edit.user.name);
let tooltipHtml = `<div class="tooltip-title">🚫 Block History (${blockCount} total)</div>`;
if (blockHistory.length > 0) {
blockHistory.forEach(block => {
// Extract plain text from blocker name (remove any HTML tags)
let blockerName = block.user || "Unknown";
blockerName = blockerName.replace(/<[^>]*>/g, '');
const timestamp = new Date(block.timestamp).toLocaleString('en-US', {
month: 'short',
day: 'numeric',
year: 'numeric',
hour: '2-digit',
minute: '2-digit'
});
// Extract plain text from duration (remove any HTML tags)
let duration = block.params?.duration || "Unknown duration";
duration = duration.replace(/<[^>]*>/g, '');
// Extract plain text from reason (remove any HTML tags)
let reason = block.comment || "No reason specified";
reason = reason.replace(/<[^>]*>/g, '');
tooltipHtml += `<div class="tooltip-item">`;
tooltipHtml += `<span class="tooltip-item-level">By ${wikishield.util.escapeHtml(blockerName)}</span><br>`;
tooltipHtml += `<span class="tooltip-item-time">${timestamp} • ${wikishield.util.escapeHtml(duration)}</span><br>`;
tooltipHtml += `<span class="tooltip-item-article">${wikishield.util.escapeHtml(reason)}</span>`;
tooltipHtml += `</div>`;
});
if (blockCount > blockHistory.length) {
tooltipHtml += `<div class="tooltip-more">... and ${blockCount - blockHistory.length} more</div>`;
}
}
blockIndicator.style.display = "initial";
blockIndicator.innerHTML = `<span style="cursor: help;" data-tooltip="${wikishield.util.escapeHtml(tooltipHtml)}" data-tooltip-html="true">${blockCount}×</span>`;
this.addTooltipListener(blockIndicator.querySelector("[data-tooltip]"));
} else {
blockIndicator.style.display = "none";
blockIndicator.innerHTML = "";
}
}
});
// Add tooltip listeners to the new elements
[...this.elem("#right-top").querySelectorAll("[data-tooltip]")].forEach(e => {
this.addTooltipListener(e);
});
// Update page metadata display
const metadataElem = this.elem("#page-metadata");
if (metadataElem) {
const parts = [];
if (edit.page.dateFormat && edit.page.dateFormat !== "Unknown") {
parts.push(edit.page.dateFormat);
}
if (edit.page.englishVariant && edit.page.englishVariant !== "Unknown") {
parts.push(edit.page.englishVariant);
}
metadataElem.innerHTML = parts.length > 0 ? parts.join(" • ") : "";
}
for (const cedit of edit.user.contribs) {
const current = cedit.revid === wikishield.queue.currentEdit.revid ? "queue-edit-current" : "";
contribsContainer.innerHTML += `
<div class="queue-edit ${current}" data-revid="${cedit.revid}">
${this.generateEditHTML(cedit, false, true, false, true)}
</div>
`;
}
for (const hedit of edit.page.history) {
const current = hedit.revid === wikishield.queue.currentEdit.revid ? "queue-edit-current" : "";
historyContainer.innerHTML += `
<div class="queue-edit ${current}" data-revid="${hedit.revid}">
${this.generateEditHTML(hedit, false, false, true, true)}
</div>
`;
}
[
...contribsContainer.querySelectorAll("[data-tooltip]"),
...historyContainer.querySelectorAll("[data-tooltip]")
].forEach(elem => this.addTooltipListener(elem));
[...contribsContainer.querySelectorAll(".queue-edit")].forEach(elem => {
elem.addEventListener("click", () => wikishield.queue.loadFromContribs(elem.dataset["revid"]));
});
[...historyContainer.querySelectorAll(".queue-edit")].forEach(elem => {
elem.addEventListener("click", () => wikishield.queue.loadFromHistory(elem.dataset["revid"]));
});
this.elem("#diff-container").innerHTML = `<table>${edit.diff}</table>`;
// Remove any existing old edit notice
const existingNotice = document.querySelector("#old-edit-notice");
if (existingNotice) {
existingNotice.remove();
}
// Show compact notice if not viewing the most recent edit
const isNewestEdit = wikishield.queue.queue.length > 0 &&
wikishield.queue.queue[0].revid === edit.revid;
if (!isNewestEdit && wikishield.queue.queue.length > 0) {
const newestEdit = wikishield.queue.queue[0];
const noticeDiv = document.createElement("div");
noticeDiv.id = "old-edit-notice";
noticeDiv.style.cssText = `
margin: 10px 10px 0 10px;
padding: 8px 12px;
background: #fff3cd;
border-left: 4px solid #ffc107;
border-radius: 4px;
color: #856404;
display: flex;
align-items: center;
gap: 8px;
font-size: 0.9em;
flex-shrink: 0;
`;
noticeDiv.innerHTML = `
<span class="fa fa-info-circle"></span>
<span style="flex: 1;">Viewing older edit</span>
<a href="#" id="view-newest-edit" style="color: #004085; font-weight: 600; text-decoration: none; white-space: nowrap;">
View latest →
</a>
`;
this.elem("#diff-container").parentElement.insertBefore(noticeDiv, this.elem("#diff-container"));
// Add click handler for the link
document.getElementById("view-newest-edit").addEventListener("click", (e) => {
e.preventDefault();
wikishield.queue.currentEdit = newestEdit;
wikishield.interface.renderQueue(wikishield.queue.queue, newestEdit);
});
// Update diff height after adding notice
this.updateDiffContainerHeight();
} else {
// Update diff height when no notice
this.updateDiffContainerHeight();
}
// Highlight elements containing current user's username in the diff
const currentUsername = mw.config.get("wgUserName");
if (currentUsername) {
const diffContainer = this.elem("#diff-container");
// Find all elements (typically td cells) in the diff
const allElements = diffContainer.querySelectorAll("td");
allElements.forEach(elem => {
if (elem.textContent.includes(currentUsername)) {
elem.style.outline = "2px solid #ffc107";
elem.style.outlineOffset = "-2px";
}
});
}
// Scroll to the first changed line in the diff
const diffContainer = this.elem("#diff-container");
const firstChange = diffContainer.querySelector(".diff-addedline, .diff-deletedline");
if (firstChange) {
// Use setTimeout to ensure the DOM is fully rendered before scrolling
setTimeout(() => {
firstChange.scrollIntoView({ behavior: "smooth", block: "center" });
}, 100);
}
// Display AI analysis if available
this.updateAIAnalysisDisplay(edit.aiAnalysis);
}
/**
* Update or create AI analysis display
* @param {Object} analysis The AI analysis object
*/
updateAIAnalysisDisplay(analysis) {
// Find or create AI analysis container
let aiContainer = document.querySelector("#ai-analysis-container");
if (!analysis) {
// Remove AI container if no analysis
if (aiContainer) {
aiContainer.remove();
}
this.updateDiffContainerHeight();
return;
}
if (!aiContainer) {
// Create container if it doesn't exist
const diffContainer = document.querySelector("#diff-container");
if (!diffContainer) return;
aiContainer = document.createElement("div");
aiContainer.id = "ai-analysis-container";
aiContainer.style.cssText = `
margin: 10px 10px 0 10px;
padding: 0;
border-radius: 8px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
overflow: auto;
flex-shrink: 0;
`;
diffContainer.parentElement.insertBefore(aiContainer, diffContainer);
}
if (analysis.error) {
aiContainer.innerHTML = `
<div style="display: flex; align-items: center; gap: 8px; padding: 12px;">
<span class="fa fa-exclamation-triangle"></span>
<span>AI analysis failed: ${analysis.error}</span>
</div>
`;
this.updateDiffContainerHeight();
return;
}
// Build issue badges
let issueHTML = '';
if (analysis.hasIssues && analysis.issues && analysis.issues.length > 0) {
const severityColors = {
'critical': '#dc3545',
'major': '#fd7e14',
'minor': '#ffc107'
};
const typeIcons = {
'vandalism': 'fa-skull-crossbones',
'spam': 'fa-spam',
'pov': 'fa-balance-scale',
'unsourced': 'fa-question-circle',
'attack': 'fa-bomb',
'copyright': 'fa-copyright',
'disruptive': 'fa-circle-exclamation',
'error': 'fa-bug',
'policy': 'fa-gavel',
'ai-generated': 'fa-robot'
};
issueHTML = '<div style="display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px;">';
for (const issue of analysis.issues.slice(0, 5)) {
const iconClass = typeIcons[issue.type] || 'fa-exclamation-circle';
const bgColor = severityColors[issue.severity] || '#6c757d';
issueHTML += `
<span style="
display: inline-flex;
align-items: center;
gap: 4px;
padding: 4px 8px;
background: ${bgColor};
border-radius: 4px;
font-size: 0.85em;
font-weight: 500;
" data-tooltip="${wikishield.util.escapeHtml(issue.description)}">
<span class="fa ${iconClass}"></span>
${issue.type}
</span>
`;
}
if (analysis.issues.length > 5) {
issueHTML += `<span style="opacity: 0.8;">+${analysis.issues.length - 5} more</span>`;
}
issueHTML += '</div>';
}
// Build recommendation/action badge
const actionColors = {
'rollback': '#dc3545',
'warn-and-revert': '#e74c3c',
'warn': '#fd7e14',
'report-uaa': '#9b59b6',
'report-aiv': '#8e44ad',
'review': '#ffc107',
'approve': '#28a745',
'thank': '#17a2b8',
'welcome': '#20c997'
};
const actionIcons = {
'rollback': 'fa-rotate-left',
'warn-and-revert': 'fa-exclamation-triangle',
'warn': 'fa-exclamation-triangle',
'report-uaa': 'fa-flag',
'report-aiv': 'fa-gavel',
'review': 'fa-eye',
'approve': 'fa-check-circle',
'thank': 'fa-heart',
'welcome': 'fa-hand-wave'
};
const action = analysis.action || 'review';
const actionColor = actionColors[action] || '#6c757d';
const actionIcon = actionIcons[action] || 'fa-question';
const probability = analysis.probability || 0;
aiContainer.innerHTML = `
<div style="padding: 12px;">
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 8px;">
<span class="fa fa-robot" style="font-size: 1.2em;"></span>
<strong>AI Analysis</strong>
<span style="
padding: 2px 8px;
background: rgba(255,255,255,0.2);
border-radius: 4px;
font-size: 0.85em;
">
${probability}% probability
</span>
<span style="
padding: 2px 8px;
background: rgba(255,255,255,0.15);
border-radius: 4px;
font-size: 0.85em;
">
${analysis.confidence || 'unknown'} confidence
</span>
<span style="
display: inline-flex;
align-items: center;
gap: 4px;
padding: 3px 8px;
background: ${actionColor};
border-radius: 4px;
font-size: 0.85em;
font-weight: 500;
margin-left: auto;
">
<span class="fa ${actionIcon}"></span>
${action.replace(/-/g, ' ')}
</span>
</div>
<div style="opacity: 0.95; font-size: 0.95em; margin-bottom: 4px;">
<strong>Summary:</strong> ${analysis.summary}
</div>
${analysis.reasoning ? `
<div style="opacity: 0.9; font-size: 0.85em; margin-bottom: 4px; padding: 6px; background: rgba(0,0,0,0.1); border-radius: 4px;">
<strong>🔍 Reasoning:</strong> ${analysis.reasoning}
</div>
` : ''}
<div style="opacity: 0.9; font-size: 0.9em; margin-bottom: 4px;">
<strong>Recommendation:</strong> ${analysis.recommendation}
</div>
${issueHTML}
</div>
`; // Add tooltip listeners to issue badges
aiContainer.querySelectorAll('[data-tooltip]').forEach(elem => {
this.addTooltipListener(elem);
});
// Update diff container height after AI analysis is displayed
this.updateDiffContainerHeight();
}
/**
* Dynamically adjust diff container height based on AI analysis and notices
*/
updateDiffContainerHeight() {
// Since we're using flexbox, we don't need to manually calculate height
// The diff-container will automatically fill available space
// This method is kept for potential future use or other adjustments
} /**
* Create a tooltip when an element is hovered over
* @param {HTMLElement} elem
*/
addTooltipListener(elem) {
elem.addEventListener("mouseenter", () => {
this.removeTooltips();
if (!elem.dataset.tooltip) {
return;
}
const tooltip = document.createElement("div");
tooltip.classList.add("tooltip");
// Check if tooltip content is HTML or plain text
if (elem.dataset.tooltipHtml === "true") {
tooltip.innerHTML = elem.dataset.tooltip;
} else {
tooltip.innerText = elem.dataset.tooltip;
}
document.body.appendChild(tooltip);
// Force a reflow to ensure dimensions are calculated
tooltip.offsetHeight;
const tooltipWidth = tooltip.getBoundingClientRect().width,
tooltipHeight = tooltip.getBoundingClientRect().height;
const elemBox = elem.getBoundingClientRect();
// Calculate center position for the tooltip
const centerLeft = (elemBox.left + elemBox.right - tooltipWidth) / 2;
const canFitRight = elemBox.right < window.innerWidth - tooltipWidth - 30;
const canFitLeft = elemBox.left > tooltipWidth + 30;
// Check if tooltip can fit centered AND if centered position is actually on screen
const canFitMiddle = centerLeft > 10 && centerLeft + tooltipWidth < window.innerWidth - 10;
const canFitTop = canFitMiddle && elemBox.top > tooltipHeight + 30;
const canFitBottom = canFitMiddle && elemBox.bottom < window.innerHeight - tooltipHeight - 30;
// Position the tooltip
if (canFitTop) {
tooltip.style.left = (elemBox.left + elemBox.right - tooltipWidth) / 2 + "px";
tooltip.style.top = (elemBox.top - tooltipHeight - 10) + "px";
} else if (canFitBottom) {
tooltip.style.left = (elemBox.left + elemBox.right - tooltipWidth) / 2 + "px";
tooltip.style.top = (elemBox.bottom + 10) + "px";
} else if (canFitRight) {
tooltip.style.left = (elemBox.right + 10) + "px";
tooltip.style.top = (elemBox.top - 4) + "px";
} else if (canFitLeft) {
tooltip.style.left = (elemBox.left - 10 - tooltipWidth) + "px";
tooltip.style.top = (elemBox.top - 4) + "px";
} else {
// Fallback: center on element, clip if necessary
tooltip.style.left = Math.max(10, (elemBox.left + elemBox.right - tooltipWidth) / 2) + "px";
tooltip.style.top = Math.max(10, elemBox.bottom + 10) + "px";
}
tooltip.style.opacity = 1;
});
elem.addEventListener("mouseleave", () => {
this.removeTooltips();
});
}
/**
* Delete all existing tooltip elements
*/
removeTooltips() {
[...document.querySelectorAll(".tooltip")].forEach(elem => {
elem.style.opacity = 0;
window.setTimeout(() => elem.remove(), 200);
});
}
/**
* Remove all elements from the queue
*/
clearQueue() {
this.elem("#queue-items").innerHTML = "";
}
/**
* Remove a specific item from the queue
* @param {Number} revid
*/
removeQueueItem(revid) {
const elem = this.elem(`.queue-edit[data-revid="${revid}"]`);
if (elem) {
elem.remove();
}
}
/**
* From the ORES score, get the color to display
* @param {Number} ores The ORES score
* @returns {String} The color to display
*/
getORESColor(ores) {
const colors = wikishieldData.colorPalettes[wikishield.options.selectedPalette];
return colors[Math.floor(ores * colors.length)];
}
/**
* Return a specific element
* @param {String} selector
* @returns
*/
elem(selector) {
return document.querySelector(selector);
}
/**
* Escape HTML to prevent XSS
*/
escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
/**
* Show a toast notification on screen
* @param {String} title - Title of the notification
* @param {String} message - Message content
* @param {Number} duration - How long to show (ms), default 5000
*/
showToast(title, message, duration = 5000) {
// Create toast element
const toast = document.createElement("div");
toast.classList.add("toast-notification");
toast.innerHTML = `
<div class="toast-icon">⚠️</div>
<div class="toast-content">
<div class="toast-title">${this.escapeHtml(title)}</div>
<div class="toast-message">${this.escapeHtml(message)}</div>
</div>
<div class="toast-close">×</div>
`;
document.body.appendChild(toast);
// Trigger animation
setTimeout(() => toast.classList.add("show"), 10);
// Close button handler
const closeBtn = toast.querySelector(".toast-close");
closeBtn.addEventListener("click", () => {
this.hideToast(toast);
});
// Auto-hide after duration
setTimeout(() => {
this.hideToast(toast);
}, duration);
}
/**
* Hide and remove a toast notification
*/
hideToast(toast) {
if (!toast || !toast.parentElement) return;
toast.classList.add("hide");
setTimeout(() => {
if (toast.parentElement) {
toast.remove();
}
}, 300);
}
/**
* Show UAA reason selection dialog
* @param {String} username - Username to report
* @returns {Promise<String|null>} Selected reason or null if cancelled
*/
showUAAReasonDialog(username) {
return new Promise((resolve) => {
// Create overlay
const overlay = document.createElement("div");
overlay.classList.add("confirmation-modal-overlay");
// Create modal
const modal = document.createElement("div");
modal.classList.add("confirmation-modal");
modal.innerHTML = `
<div class="confirmation-modal-header">
<div class="confirmation-modal-title">Report to UAA</div>
</div>
<div class="confirmation-modal-body">
Select reason for reporting <span class="confirmation-modal-username">${this.escapeHtml(username)}</span>:
</div>
<div class="confirmation-modal-footer confirmation-modal-footer-vertical">
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Disruptive username">Disruptive username</button>
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Offensive username">Offensive username</button>
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Promotional username">Promotional username</button>
<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Misleading username">Misleading username</button>
<button class="confirmation-modal-button confirmation-modal-button-cancel">Cancel</button>
</div>
`;
overlay.appendChild(modal);
document.body.appendChild(overlay);
// Disable all keybinds while modal is open
const keyHandler = (e) => {
if (e.key === "Escape") {
e.preventDefault();
e.stopPropagation();
closeModal(null);
return false;
} else if (e.key !== "Tab") {
e.preventDefault();
e.stopPropagation();
return false;
}
};
document.addEventListener("keydown", keyHandler, true);
const closeModal = (result) => {
document.removeEventListener("keydown", keyHandler, true);
overlay.classList.add("closing");
modal.classList.add("closing");
setTimeout(() => {
overlay.remove();
resolve(result);
}, 200);
};
// Handle reason button clicks
modal.querySelectorAll(".confirmation-modal-button-reason").forEach(btn => {
btn.addEventListener("click", () => {
closeModal(btn.dataset.reason);
});
});
// Handle cancel button
modal.querySelector(".confirmation-modal-button-cancel").addEventListener("click", () => {
closeModal(null);
});
// Close on overlay click
overlay.addEventListener("click", (e) => {
if (e.target === overlay) {
closeModal(null);
}
});
});
}
/**
* Show a confirmation dialog and return a promise that resolves to true (Yes) or false (No)
* @param {String} title - Dialog title
* @param {String} message - Dialog message (can include HTML)
* @param {String} username - Optional username to enable UAA report button
*/
showConfirmationDialog(title, message, username = null) {
return new Promise((resolve) => {
// Create overlay
const overlay = document.createElement("div");
overlay.classList.add("confirmation-modal-overlay");
// Create modal
const modal = document.createElement("div");
modal.classList.add("confirmation-modal");
const uaaButton = username ? `<button class="confirmation-modal-button confirmation-modal-button-uaa">Report to UAA</button>` : '';
modal.innerHTML = `
<div class="confirmation-modal-header">
<div class="confirmation-modal-title">${this.escapeHtml(title)}</div>
</div>
<div class="confirmation-modal-body">${message}</div>
<div class="confirmation-modal-footer">
${uaaButton}
<div class="confirmation-modal-footer-right">
<button class="confirmation-modal-button confirmation-modal-button-no">No</button>
<button class="confirmation-modal-button confirmation-modal-button-yes">Yes</button>
</div>
</div>
`;
overlay.appendChild(modal);
document.body.appendChild(overlay);
// Disable all keybinds while modal is open
const keyHandler = (e) => {
// Only allow Tab, Enter, Escape
if (e.key === "Enter") {
e.preventDefault();
e.stopPropagation();
closeModal(true);
return false;
} else if (e.key === "Escape") {
e.preventDefault();
e.stopPropagation();
closeModal(false);
return false;
} else if (e.key !== "Tab") {
// Block all other keys
e.preventDefault();
e.stopPropagation();
return false;
}
};
document.addEventListener("keydown", keyHandler, true);
// Handle button clicks
const yesBtn = modal.querySelector(".confirmation-modal-button-yes");
const noBtn = modal.querySelector(".confirmation-modal-button-no");
const uaaBtn = modal.querySelector(".confirmation-modal-button-uaa");
const closeModal = (result) => {
// Remove key handler
document.removeEventListener("keydown", keyHandler, true);
overlay.classList.add("closing");
modal.classList.add("closing");
setTimeout(() => {
overlay.remove();
resolve(result);
}, 200);
};
yesBtn.addEventListener("click", () => closeModal(true));
noBtn.addEventListener("click", () => closeModal(false));
// UAA report button
if (uaaBtn && username) {
uaaBtn.addEventListener("click", async () => {
// Close the current modal first
document.removeEventListener("keydown", keyHandler, true);
overlay.classList.add("closing");
modal.classList.add("closing");
setTimeout(async () => {
overlay.remove();
// Show UAA reason selection dialog
const reason = await this.showUAAReasonDialog(username);
if (reason) {
// User selected a reason, proceed with report
const progressBar = new wikishieldProgressBar();
progressBar.set("Reporting to UAA...", 0.5, "var(--main-blue)");
try {
await wikishield.reportToUAA(username, reason);
progressBar.set(`Reported ${username} to UAA`, 1, "var(--main-green)");
} catch (err) {
progressBar.set("Report failed", 1, "var(--main-red)");
console.error("UAA report error:", err);
}
resolve(false);
} else {
// User cancelled, show the welcome dialog again
const confirmed = await this.showConfirmationDialog(title, message, username);
resolve(confirmed);
}
}, 200);
});
}
// Close on overlay click
overlay.addEventListener("click", (e) => {
if (e.target === overlay) {
closeModal(false);
}
});
// Focus the Yes button by default
setTimeout(() => yesBtn.focus(), 50);
});
}
}
class wikishieldProgressBar {
constructor() {
this.element = document.createElement("div");
this.element.className = "progress-bar"; this.overlay = document.createElement("div");
this.overlay.className = "progress-bar-overlay";
this.text = document.createElement("div");
this.text.className = "progress-bar-text";
wikishield.interface.elem("#progress-bar-container").appendChild(this.element);
this.element.appendChild(this.overlay);
this.element.appendChild(this.text);
this.nextChangeTime = 0;
}
/**
* Set the progress bar's text, width, and color; remove after 2s if at 100%
* @param {String} text The text to display
* @param {Number} width The width of the progress bar
* @param {String} color The color of the progress bar
*/
set(text, width, color) {
const delay = Math.max(0, this.nextChangeTime - new Date().getTime());
window.setTimeout(() => {
this.text.innerHTML = text;
this.overlay.style.width = `${Math.round(width * 100)}%`;
this.overlay.style.background = color;
if (width === 1) {
this.remove(2000);
}
}, delay);
this.nextChangeTime = Math.max(new Date().getTime() + 200, this.nextChangeTime + 200);
}
/**
* Remove the progress bar after a given time
* @param {Number} time The time to wait before removing the progress bar
*/
remove(time) {
window.setTimeout(() => {
this.element.style.opacity = "0";
}, time - 300);
window.setTimeout(() => {
this.element.remove();
}, time);
}
}
// </nowiki>
// <nowiki>
class WikiShield {
constructor() {
this.options = this.loadOptions();
this.statistics = this.loadStats();
this.interface = new wikishieldInterface();
this.queue = new wikishieldQueue();
this.api = new wikishieldAPI(new mw.Api());
this.logger = new wikishieldLog();
this.util = new wikishieldUtil();
this.whitelist = new Set();
this.highlighted = new Map(); // Map of username -> expiration timestamp
this.noAutoWelcomeList = new Set(); // Track users who shouldn't be auto-welcomed
// Start periodic cleanup of expired highlights (every 30 seconds)
this.highlightCleanupInterval = setInterval(() => {
this.cleanupExpiredHighlights();
}, 30000);
// Initialize Ollama AI if enabled (preserves last saved state)
this.ollamaAI = null;
if (this.options.enableOllamaAI) {
this.ollamaAI = new wikishieldOllamaAI(
this.options.ollamaServerUrl,
this.options.ollamaModel
);
this.logger.log("Ollama AI integration enabled");
}
this.aivReports = [];
this.uaaReports = [];
this.rights = {
rollback: false,
protect: false,
block: false
};
this.username = mw.config.values.wgUserName;
this.handleLoadingReported();
this.handleLoadingNotifications();
this.testingMode = false;
this.tempCurrentEdit = null;
this.notifications = [];
this.lastSeenRevision = null;
}
/**
* Create the interface for checking if the user is allowed to use wikishield
*/
async startInterface() {
const userRights = await mw.user.getRights();
this.rights.rollback = userRights.includes("rollback");
this.rights.protect = userRights.includes("protect");
this.rights.block = userRights.includes("block");
this.interface.build();
this.handleUpdatingContributions();
}
/**
* Fetch and display the current user's total contribution count
*/
async updateMyContributions() {
try {
const result = await this.api.api.get({
action: "query",
list: "users",
ususers: this.username,
usprop: "editcount"
});
if (result.query && result.query.users && result.query.users[0]) {
const editCount = result.query.users[0].editcount || 0;
const statElem = document.querySelector("#stat-total-contribs");
if (statElem) {
statElem.textContent = editCount.toLocaleString();
}
}
} catch (err) {
console.log("Failed to fetch user contribution count:", err);
}
}
/**
* Start periodic updates of contribution count every 10 seconds
*/
handleUpdatingContributions() {
this.updateMyContributions();
window.setTimeout(() => {
this.handleUpdatingContributions();
}, 10000); // Update every 10 seconds
}
/**
* Clean up expired highlights and refresh UI if needed
*/
cleanupExpiredHighlights() {
const now = Date.now();
let needsRefresh = false;
for (const [username, expirationTime] of this.highlighted.entries()) {
if (now >= expirationTime) {
this.highlighted.delete(username);
needsRefresh = true;
this.logger.log(`Removed expired highlight for user: ${username}`);
}
}
// Refresh the queue display if any highlights were removed
if (needsRefresh && this.queue && this.queue.queue) {
this.interface.renderQueue(this.queue.queue, this.queue.currentEdit);
}
}
/**
* Create the main interface
*/
start() {
this.interface.start();
this.queue.fetchRecentChanges();
}
/**
* Load options from storage; if an option is missing, add it with the default value
* @returns {Object} The options object
*/
loadOptions() {
let options = {};
try {
options = JSON.parse(mw.storage.store.getItem("wikishieldSettings"));
} catch (err) {}
if (!options) {
options = {};
}
for (const item in wikishieldData.defaultSettings) {
if (typeof options[item] === "undefined") {
options[item] = wikishieldData.defaultSettings[item];
}
if (typeof options[item] === "object") {
for (const subitem in wikishieldData.defaultSettings[item]) {
if (typeof options[item][subitem] === "undefined") {
options[item][subitem] = wikishieldData.defaultSettings[item][subitem];
}
}
}
}
for (const item in options.controls) {
if (typeof options.controls[item] === "string") {
options.controls[item] = [options.controls[item]];
}
for (let i = 0; i < options.controls[item].length; i++) {
options.controls[item][i] = options.controls[item][i].toLowerCase();
}
}
this.saveOptions(options);
return options;
}
/**
* Save options to storage
* @param {Object} options The options object
*/
saveOptions(options) {
mw.storage.store.setItem("wikishieldSettings", JSON.stringify(options));
}
/**
* Load the changelog version from storage
* @returns {String} The changelog version
*/
getChangelogVersion() {
const version = mw.storage.store.getItem("wikishieldChangelogVersion");
if (!version) {
mw.storage.store.setItem("wikishieldChangelogVersion", 0);
return 0;
}
return version;
}
/**
* Update changelog version to hide popup
*/
updateChangelogVersion() {
mw.storage.store.setItem("wikishieldChangelogVersion", wikishieldChangelogVersion);
}
/**
* Load statistics from storage
* @returns {Object} The statistics object
*/
loadStats() {
let stats;
try {
stats = JSON.parse(mw.storage.store.getItem("wikishieldStats"));
} catch (err) {}
if (!stats) {
stats = { reviewed: 0, reverts: 0, reports: 0 };
}
this.saveStats(stats);
return stats;
}
/**
* Save statistics to storage
* @param {Object} stats The statistics object
*/
saveStats(stats) {
mw.storage.store.setItem("wikishieldStats", JSON.stringify(stats));
}
/**
* Revert an edit, using either rollback or manual reverting
* @param {Object} edit The edit object
* @param {String} message Message to use in the edit summary
*/
async revert(edit, message, goodFaith=false) {
if (!edit) {
return;
}
const gfStr = goodFaith ? "[[WP:AGF|good faith]] " : "";
const summary = `Reverted ${gfStr}edits by [[Special:Contributions/${edit.user.name}|${edit.user.name}]] ([[User talk:${edit.user.name}|talk]])${message ? ": " + message : ""} ([[WP:WikiShield|WikiShield]])`;
if (this.rights.rollback) {
const result = await this.api.rollback(edit.page.title, edit.user.name, summary);
if (!result) {
// Rollback failed - show toast notification
this.interface.showToast(
"Revert Failed",
`Could not revert edits on "${edit.page.title}" - a newer edit may have been made`
);
return false;
}
} else {
return false;
}
this.statistics.reverts++;
this.saveStats(this.statistics);
// Update contribution count after successful revert
this.updateMyContributions();
}
/**
* Warn a user with the given template
* @param {String} user The username to warn
* @param {String[]} warningTemplates The warning template set to use
* @param {String|Number} warnLevel Level of warning to use; 1-5 or "auto"
* @param {String} articleName The article name to use in the warning
* @param {Number} revid Edit revid to use in edit summary
*/
async warnUser(user, warningTemplates, warnLevel, articleName, revid) {
if (!warningTemplates) {
return;
}
let userTalkContent = await this.api.getSinglePageContent(`User talk:${user}`);
let warnTemplate = "";
// Handle manual level selection (not "auto")
if (warnLevel !== "auto") {
if (warnLevel === "4im") {
// 4im is the 5th template (index 4)
if (warningTemplates.length >= 5) {
warnTemplate = warningTemplates[4];
} else {
// If no 4im template exists, use the last available template
warnTemplate = warningTemplates[warningTemplates.length - 1];
}
} else if (warnLevel > 0 && warnLevel <= warningTemplates.length) {
// Standard numbered level (1-4)
warnTemplate = warningTemplates[warnLevel - 1];
}
}
// Handle auto level selection
if (warnLevel === "auto") {
const warningLevel = this.queue.getWarningLevel(userTalkContent);
const levelAsNumber = warningLevel === "4im" ? 5 : Number(warningLevel);
if (warningLevel === "4" || warningLevel === "4im" || levelAsNumber >= warningTemplates.length) {
return;
}
warnTemplate = warningTemplates[levelAsNumber];
}
if (!warnTemplate) {
return;
}
if (!userTalkContent.match("== ?" + wikishield.util.monthSectionName() + " ?==")) {
userTalkContent += `\n== ${wikishield.util.monthSectionName()} ==\n`;
}
const sections = userTalkContent.split(/(?=== ?[\w\d ]+ ?==)/g);
for (let section in sections) {
if (sections[section].match(new RegExp("== ?" + wikishield.util.monthSectionName() + " ?=="))) {
// If articleName is null, template doesn't take a parameter
if (articleName) {
sections[section] += `\n\n{{${warnTemplate}|${articleName}}} ~~~~`;
} else {
sections[section] += `\n\n{{${warnTemplate}}} ~~~~`;
}
break;
}
}
const newContent = sections.join("")
.replace(/(\n){3,}/g, "\n\n");
const levelMatch = warnTemplate.match(/(\d(?:im)?)$/);
const levelName = levelMatch ? levelMatch[1] : null;
// Create edit summary based on whether article name is provided
const editSummary = articleName
? (levelName
? `Message about [[Special:Diff/${revid}|your edit]] on [[${articleName}]] (level ${levelName}) ([[WP:WikiShield|WikiShield]])`
: `Message about [[Special:Diff/${revid}|your edit]] on [[${articleName}]] ([[WP:WikiShield|WikiShield]])`)
: (levelName
? `Message about your edits (level ${levelName}) ([[WP:WikiShield|WikiShield]])`
: `Message about your edits ([[WP:WikiShield|WikiShield]])`);
await this.api.edit(
`User talk:${user}`,
newContent,
editSummary
);
// Add user talk page to watchlist with configured expiry
try {
await this.api.postWithToken("watch", {
"action": "watch",
"titles": `User talk:${user}`,
"expiry": wikishield.options.watchlistExpiry
});
} catch (err) {
console.log(`Could not add User talk:${user} to watchlist:`, err);
}
// Update the warning level in the current edit object (only if the template has a numbered level)
if (levelName && this.queue.currentEdit && this.queue.currentEdit.user.name === user) {
console.log(`[warnUser] Updating warning level for ${user} from ${this.queue.currentEdit.user.warningLevel} to ${levelName}`);
console.log(`[warnUser] Original warning level: ${this.queue.currentEdit.user.originalWarningLevel}`);
this.queue.currentEdit.user.warningLevel = levelName;
}
}
/**
* Load the users currently reported to AIV and UAA
*/
async loadReportedUsers() {
try {
const content = await this.api.getText(`${AIVNAME}|${UAANAME}`);
const regex = new RegExp(`{{(?:(?:ip)?vandal|user-uaa)\\|(?:1=)?(.+?)}}`, "gi");
this.aivReports = [...content[AIVNAME].matchAll(regex)]
.map(report => report[1]);
this.uaaReports = [...content[UAANAME].matchAll(regex)]
.map(report => report[1]);
} catch (err) {
console.log("Error while fetching reported users", err);
}
}
/**
* Every 15 seconds, call loadReportedUsers
*/
async handleLoadingReported() {
await this.loadReportedUsers();
window.setTimeout(() => {
this.handleLoadingReported();
}, 15000);
}
/**
* Load notifications from Wikipedia
*/
async loadNotifications() {
try {
// Fetch both Echo notifications (alerts and notices) and talk page edits
const [alertsResponse, noticesResponse, talkResponse] = await Promise.all([
// Get Echo alert notifications (mentions, thanks, page links, etc.)
this.api.api.get({
action: "query",
meta: "notifications",
notlimit: 20,
notprop: "list",
notfilter: "!read",
notsections: "alert"
}),
// Get Echo notice notifications (user rights, thanks, etc.)
this.api.api.get({
action: "query",
meta: "notifications",
notlimit: 20,
notprop: "list",
notfilter: "!read",
notsections: "message"
}),
// Get talk page edits
this.api.api.get({
action: "query",
prop: "revisions",
titles: `User talk:${this.username}`,
rvlimit: 10,
rvprop: "timestamp|user|comment|ids",
rvdir: "older"
})
]);
const notifications = [];
// Process Echo alert notifications
if (alertsResponse.query?.notifications?.list) {
const alertList = Object.values(alertsResponse.query.notifications.list);
for (const notif of alertList) {
// MediaWiki timestamps are in format: YYYYMMDDHHMMSS
let timestamp = notif.timestamp?.mw || notif.timestamp?.utcmw;
if (timestamp && typeof timestamp === 'string' && timestamp.length === 14) {
// Convert YYYYMMDDHHMMSS to ISO format
timestamp = `${timestamp.slice(0,4)}-${timestamp.slice(4,6)}-${timestamp.slice(6,8)}T${timestamp.slice(8,10)}:${timestamp.slice(10,12)}:${timestamp.slice(12,14)}Z`;
} else {
timestamp = new Date().toISOString();
}
// Get notification type display name
let categoryLabel = "Alert";
if (notif.type === "mention" || notif.type === "mention-success") {
categoryLabel = "Mention";
} else if (notif.type === "thank-you-edit") {
categoryLabel = "Thanks";
} else if (notif.type === "page-linked") {
categoryLabel = "Page Link";
} else if (notif.type === "reverted") {
categoryLabel = "Revert";
} else if (notif.type === "edit-user-talk") {
categoryLabel = "Talk";
}
notifications.push({
id: `alert-${notif.id}`,
type: "alert",
subtype: notif.type,
timestamp: timestamp,
title: notif.title?.full || "Unknown page",
agent: notif.agent?.name || "Someone",
category: categoryLabel,
read: false
});
}
}
// Process Echo notice notifications
if (noticesResponse.query?.notifications?.list) {
const noticeList = Object.values(noticesResponse.query.notifications.list);
for (const notif of noticeList) {
// MediaWiki timestamps are in format: YYYYMMDDHHMMSS
let timestamp = notif.timestamp?.mw || notif.timestamp?.utcmw;
if (timestamp && typeof timestamp === 'string' && timestamp.length === 14) {
// Convert YYYYMMDDHHMMSS to ISO format
timestamp = `${timestamp.slice(0,4)}-${timestamp.slice(4,6)}-${timestamp.slice(6,8)}T${timestamp.slice(8,10)}:${timestamp.slice(10,12)}:${timestamp.slice(12,14)}Z`;
} else {
timestamp = new Date().toISOString();
}
let categoryLabel = "Notice";
if (notif.type === "user-rights") {
categoryLabel = "User Rights";
} else if (notif.type === "emailuser") {
categoryLabel = "Email";
}
notifications.push({
id: `notice-${notif.id}`,
type: "notice",
subtype: notif.type,
timestamp: timestamp,
title: notif.title?.full || "Notification",
agent: notif.agent?.name || "System",
category: categoryLabel,
read: false
});
}
}
// Process talk page edits
const pages = talkResponse.query?.pages;
if (pages) {
const page = Object.values(pages)[0];
const revisions = page.revisions || [];
// Check if we have stored the last seen revision
if (!this.lastSeenRevision) {
// First load - just store the latest revision
if (revisions.length > 0) {
this.lastSeenRevision = revisions[0].revid;
}
} else {
// Find new revisions since last check
for (const rev of revisions) {
if (rev.revid > this.lastSeenRevision) {
// Skip self-edits
if (rev.user !== this.username) {
notifications.push({
id: `talk-${rev.revid}`,
type: "talk",
revid: rev.revid,
user: rev.user,
comment: rev.comment || "Edit to your talk page",
timestamp: rev.timestamp,
read: false
});
}
} else {
break;
}
}
// Update last seen revision
if (revisions.length > 0) {
this.lastSeenRevision = Math.max(this.lastSeenRevision, revisions[0].revid);
}
}
}
// Merge with existing notifications and remove duplicates
let hasNewNotifications = false;
for (const newNotif of notifications) {
const existingNotif = this.notifications.find(n => n.id === newNotif.id);
if (!existingNotif) {
this.notifications.unshift(newNotif);
hasNewNotifications = true;
}
}
// Play sound if there are new notifications
if (hasNewNotifications && this.notifications.length > 0) {
wikishield.queue.playNotificationSound();
}
// Sort by timestamp
this.notifications.sort((a, b) => {
const timeA = new Date(a.timestamp);
const timeB = new Date(b.timestamp);
return timeB - timeA;
});
// Keep only last 25 notifications
if (this.notifications.length > 25) {
this.notifications = this.notifications.slice(0, 25);
}
this.updateNotificationDisplay();
} catch (err) {
console.log("Error while fetching notifications", err);
}
}
/**
* Every 10 seconds, call loadNotifications
*/
async handleLoadingNotifications() {
await this.loadNotifications();
window.setTimeout(() => {
this.handleLoadingNotifications();
}, 10000);
}
/**
* Update the notification count and list display
*/
updateNotificationDisplay() {
const unreadCount = this.notifications.filter(n => !n.read).length;
const countElem = document.querySelector("#notification-count");
const listElem = document.querySelector("#notifications-list");
// Check if elements exist (UI might not be ready yet)
if (!countElem || !listElem) {
return;
}
if (unreadCount > 0) {
countElem.textContent = unreadCount > 9 ? "9+" : unreadCount;
countElem.style.display = "block";
} else {
countElem.style.display = "none";
}
// Update list
if (listElem) {
if (this.notifications.length === 0) {
listElem.innerHTML = '<div style="padding: 20px; text-align: center; color: #666;">No new notifications</div>';
} else {
listElem.innerHTML = this.notifications.map(notif => {
// Parse timestamp
const time = new Date(notif.timestamp);
const timeStr = this.formatNotificationTime(time);
let title, subtitle, typeLabel, clickData;
if (notif.type === "alert") {
// Echo alert notification (mentions, thanks, page links, etc.)
typeLabel = notif.category || "Alert";
if (notif.subtype === "mention" || notif.subtype === "mention-success") {
title = `${notif.agent} mentioned you`;
subtitle = `on ${notif.title}`;
} else if (notif.subtype === "thank-you-edit") {
title = `${notif.agent} thanked you`;
subtitle = `for your edit on ${notif.title}`;
} else if (notif.subtype === "page-linked") {
title = `Your page was linked`;
subtitle = `from ${notif.title}`;
} else if (notif.subtype === "reverted") {
title = `${notif.agent} reverted your edit`;
subtitle = `on ${notif.title}`;
} else if (notif.subtype === "edit-user-talk") {
title = `${notif.agent} edited your talk page`;
subtitle = notif.title;
} else if (notif.subtype === "emailuser") {
title = `${notif.agent} sent you an email`;
subtitle = notif.title;
} else if (notif.subtype === "foreign") {
title = `Alert from ${notif.agent}`;
subtitle = notif.title;
} else {
// Generic alert with more context
title = `Alert: ${notif.subtype || 'notification'}`;
subtitle = `${notif.agent} - ${notif.title}`;
}
clickData = `data-page="${this.escapeHtml(notif.title)}"`;
} else if (notif.type === "notice") {
// Echo notice notification (user rights, etc.)
typeLabel = notif.category || "Notice";
if (notif.subtype === "user-rights") {
title = `Your user rights were changed`;
subtitle = notif.title;
} else if (notif.subtype === "emailuser") {
title = `Email notification`;
subtitle = notif.title;
} else if (notif.subtype === "flow-discussion") {
title = `New discussion activity`;
subtitle = notif.title;
} else {
// Generic notice with more context
title = `Notice: ${notif.subtype || 'system notification'}`;
subtitle = `${notif.agent} - ${notif.title}`;
}
clickData = `data-page="${this.escapeHtml(notif.title)}"`;
} else {
// Talk page edit notification
typeLabel = "Talk Page";
title = `${notif.user} edited your talk page`;
subtitle = notif.comment || "No edit summary";
clickData = `data-revid="${notif.revid}"`;
}
const readClass = notif.read ? "" : "unread";
return `
<div class="notification-item ${readClass}" data-notif-id="${notif.id}" data-notif-type="${notif.type}" ${clickData}>
<div class="notification-header">
<span class="notification-type">${typeLabel}</span>
<span class="notification-time">${timeStr}</span>
</div>
<div class="notification-title">${this.escapeHtml(title)}</div>
${subtitle ? `<div class="notification-subtitle">${this.escapeHtml(subtitle)}</div>` : ''}
</div>
`;
}).join("");
// Add click handlers
listElem.querySelectorAll(".notification-item").forEach(item => {
item.addEventListener("click", () => {
const notifId = item.dataset.notifId;
const notifType = item.dataset.notifType;
this.markNotificationRead(notifId);
if (notifType === "alert" || notifType === "notice") {
// Open the page for Echo notifications
const page = item.dataset.page;
if (page) {
window.open(mw.util.getUrl(page), "_blank");
}
} else {
// Open the diff for talk page edit
const revid = item.dataset.revid;
if (revid) {
window.open(mw.util.getUrl(`Special:Diff/${revid}`), "_blank");
}
}
});
});
}
}
}
/**
* Add a local notification (not from Wikipedia API)
*/
addLocalNotification(config) {
const notification = {
id: `local-${Date.now()}-${Math.random()}`,
type: config.type || "info",
title: config.title || "Notification",
subtitle: config.subtitle || "",
page: config.page || "",
timestamp: new Date().toISOString(),
read: false
};
this.notifications.unshift(notification);
this.updateNotificationDisplay();
}
/**
* Escape HTML to prevent XSS
*/
escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
/**
* Format notification timestamp as relative time
*/
formatNotificationTime(date) {
const now = new Date();
const diff = Math.floor((now - date) / 1000); // seconds
// Handle future timestamps (clock skew)
if (diff < 0) return "Just now";
if (diff < 60) return "Just now";
if (diff < 3600) {
const mins = Math.floor(diff / 60);
return `${mins} min${mins !== 1 ? 's' : ''} ago`;
}
if (diff < 86400) {
const hours = Math.floor(diff / 3600);
return `${hours} hour${hours !== 1 ? 's' : ''} ago`;
}
if (diff < 604800) {
const days = Math.floor(diff / 86400);
return `${days} day${days !== 1 ? 's' : ''} ago`;
}
return date.toLocaleDateString();
}
/**
* Mark a notification as read
*/
markNotificationRead(notifId) {
const notif = this.notifications.find(n => n.id === notifId);
if (notif) {
notif.read = true;
}
this.updateNotificationDisplay();
}
/**
* Mark all notifications as read
*/
markAllNotificationsRead() {
this.notifications.forEach(n => n.read = true);
this.updateNotificationDisplay();
}
/**
* Check if a user is reported to AIV
* @param {String} name The username to check
* @param {Boolean} recheck Whether to recheck the reports
* @returns {Promise<Boolean>} Whether the user is reported to AIV
*/
async userReportedToAiv(name, recheck=true) {
if (recheck) {
await this.loadReportedUsers();
}
return this.aivReports.some((report) => report.toLowerCase() === name.toLowerCase());
}
/**
* Check if a user is reported to UAA
* @param {String} name The username to check
* @param {Boolean} recheck Whether to recheck the reports
* @returns {Promise<Boolean>} Whether the user is reported to UAA
*/
async userReportedToUaa(name, recheck=true) {
if (recheck) {
await this.loadReportedUsers();
}
return this.uaaReports.some((report) => report.toLowerCase() === name.toLowerCase());
}
/**
* Check if a user is one of your mentees
* @param {String} username The username to check
* @returns {Promise<Boolean>} Whether the user is your mentee
*/
async checkIfMentee(username) {
try {
// First, try to get the list of mentees using the Growth API
const response = await this.api.get({
"action": "query",
"list": "growthmentees",
"geminactive": "false",
"format": "json"
});
console.log("Mentee check response:", response);
if (response && response.query && response.query.growthmentees) {
const mentees = response.query.growthmentees;
const isMentee = mentees.some(mentee => mentee.name === username);
console.log(`Is ${username} a mentee?`, isMentee);
return isMentee;
}
// Fallback: Check if the user has you as their mentor
const userInfoResponse = await this.api.get({
"action": "query",
"meta": "growthexperiments",
"format": "json"
});
console.log("Growth experiments response:", userInfoResponse);
return false;
} catch (err) {
console.log("Error while checking if mentee:", err);
return false;
}
}
/**
* Check if there is a welcome template on a user's talk page
* @param {String} name The username to check
* @param {String?} talkPageContent The talk page content, if already fetched
* @returns {Boolean} Whether the user has been welcomed
*/
async checkIfWelcomed(name, talkPageContent) {
try {
if (talkPageContent === null) {
talkPageContent = await this.api.getSinglePageContent(`User talk:${name}`);
}
// Check if the talk page exists (not if it's blank)
// If the page doesn't exist, talkPageContent will be an empty string
return talkPageContent !== "";
} catch (err) {
console.log("Error while checking if welcomed", err);
return true;
}
}
/**
* Give a user a welcome template, if not already given
* @param {String} name The user to welcome
* @param {String} template Which welcome template to use
*/
async welcomeUser(name, template) {
try {
const talkPageName = `User talk:${name}`;
const talkPageContent = await this.api.getSinglePageContent(talkPageName);
if (await this.checkIfWelcomed(name, talkPageContent)) {
return;
}
await this.api.edit(
talkPageName,
talkPageContent + `\n${wikishieldEventData.welcomeTemplates[template]}`,
"Welcome to Wikipedia! ([[WP:WikiShield|WikiShield]])"
); // Update all edits from this user to reflect that the talk page is no longer empty
// Update tempCurrentEdit if it exists (during script execution)
if (this.tempCurrentEdit && this.tempCurrentEdit.user && this.tempCurrentEdit.user.name === name) {
this.tempCurrentEdit.user.emptyTalkPage = false;
}
// Update currentEdit
if (this.queue.currentEdit && this.queue.currentEdit.user.name === name) {
this.queue.currentEdit.user.emptyTalkPage = false;
}
// Update all edits in the queue from this user
this.queue.queue.forEach(edit => {
if (edit.user && edit.user.name === name) {
edit.user.emptyTalkPage = false;
// Remove the existing DOM element so it gets re-rendered
const elem = document.querySelector(`.queue-edit[data-revid="${edit.revid}"]`);
if (elem) {
elem.remove();
}
}
});
// Re-render the queue to update the display
this.interface.renderQueue(this.queue.queue, this.queue.currentEdit);
} catch (err) {
console.log("Error while welcoming user", err);
}
}
/**
* Check if protection has already been requested at RFPP
* @param {String} title Page to check
* @returns {Promise<Boolean>} Whether there is an existing request
*/
async checkIfProtectionRequested(title) {
const rfppContent = await this.api.getSinglePageContent(RFPPNAME);
const pageRegex = new RegExp(`= ?${RegExp.escape(title)} ?=`, "i");
return rfppContent.match(pageRegex) !== null;
}
/**
* Add a new request for protection at RFPP
* @param {String} title Page to request protection for
* @param {String} level Semi, pending, extended, full
* @param {String} reason Reason for requesting protection
*/
async requestProtection(title, level, reason) {
if (await this.checkIfProtectionRequested(title)) {
return false;
}
await this.api.appendText(RFPPNAME, `
=== [[${title}]] ===
* {{pagelinks|${title}}}
'''${level}''': ${reason} ~~~~
`.replaceAll("\t", ""), `Requesting protection for [[${title}]] ([[WP:WikiShield|WikiShield]])`);
this.statistics.reports++;
this.saveStats(this.statistics);
}
/**
* Report a user to AIV
* @param {String} name The username to report
* @param {String} message The message to use in the report
*/
async reportToAIV(user, message) {
const blocked = await this.api.usersBlocked(user);
if (blocked[user]) {
return;
}
if (await this.userReportedToAiv(user)) {
return;
}
const content = `* {{vandal|${user}}} – ${message} ~~~~`;
await this.api.appendText(
AIVNAME,
content,
`Reporting [[Special:Contributions/${user}|${user}]] ([[WP:WikiShield|WikiShield]])`
);
this.statistics.reports++;
this.saveStats(this.statistics);
}
/**
* Report a user to UAA
* @param {String} name The username to report
* @param {String} message The message to use in the report
*/
async reportToUAA(user, message) {
const blocked = await this.api.usersBlocked(user);
if (blocked[user]) {
// already blocked
return;
}
if (await this.userReportedToUaa(user)) {
// already reported
return;
}
const content = `\n* {{user-uaa|${user}}} – ${message} ~~~~`;
await this.api.appendText(
UAANAME,
content,
`Reporting [[Special:Contributions/${user}|${user}]] ([[WP:WikiShield|WikiShield]])`
);
// Add user to no-auto-welcome list since they were reported to UAA
this.noAutoWelcomeList.add(user);
this.statistics.reports++;
this.saveStats(this.statistics);
}
/**
* Handle a keypress
* @param {KeyboardEvent} event The keypress event
*/
async keyPressed(event) {
if (this.interface.settings.isOpen) {
this.interface.settings.handleKeypress(event);
return;
}
if (document.activeElement.tagName.toLowerCase() === "input") {
return;
}
if (event.ctrlKey || event.altKey || event.metaKey) {
return;
}
if (event.key === " " && event.target === document.body) {
event.preventDefault();
}
// Open revert menu when up arrow is pressed
if (event.key.toLowerCase() === "arrowup") {
const revertMenuTitle = document.querySelector("#bottom-revert .bottom-tool-title");
if (revertMenuTitle) {
this.interface.selectedMenu = this.interface.selectedMenu === revertMenuTitle ? null : revertMenuTitle;
this.interface.selectedSubmenu = null;
this.interface.updateMenuElements();
}
event.preventDefault();
return;
}
if (!this.tempCurrentEdit) {
for (const script of this.options.controlScripts) {
if (script.keys.includes(event.key.toLowerCase())) {
await this.executeScript(script);
}
}
}
}
/**
* Execute a control script
* @param {Object} script
*/
async executeScript(script, hasContinuity=true, updateProgress=null) {
const base = updateProgress === null;
if (base && this.tempCurrentEdit) {
return;
}
if (base) {
const allScripts = [ script ];
let totalActions = 0;
while (allScripts.length > 0) {
const current = allScripts[0];
const willBeRun = (current["name"] && current["name"] === "if"
&& wikishieldEventData.conditions[current["condition"]].check(this.queue.currentEdit)) || !current["name"];
if (willBeRun) {
allScripts.push(...current["actions"]);
}
if (current["name"] && current["name"] !== "if"
&& this.interface.eventManager.events[current["name"]].includeInProgress) {
totalActions++;
}
allScripts.splice(0, 1);
}
if (totalActions > 0) {
let actionsCompleted = 0;
const progressBar = new wikishieldProgressBar();
updateProgress = (text) => {
const portion = text === "Done" ? 1 : actionsCompleted / totalActions;
progressBar.set(text, portion, "rgb(0, 170, 255)");
actionsCompleted++;
};
} else {
updateProgress = (_) => {};
}
this.tempCurrentEdit = this.queue.currentEdit || 1;
}
const ifAndTrue = script["name"] && script["name"] === "if"
&& wikishieldEventData.conditions[script["condition"]].check(this.tempCurrentEdit);
if (ifAndTrue || !script["name"]) {
for (const action of script["actions"]) {
if (action["name"] === "if") {
hasContinuity = this.executeScript(action, hasContinuity, updateProgress);
} else {
const event = this.interface.eventManager.events[action["name"]];
if (hasContinuity || !event["needsContinuity"]) {
if (event["includeInProgress"]) {
updateProgress(event["progressDesc"]);
}
if (this.tempCurrentEdit !== 1 || event.runWithoutEdit) {
const result = await event.func(action["params"]);
if (result === false) {
hasContinuity = false;
}
}
}
}
}
}
if (!script["name"]) {
updateProgress("Done");
}
if (base) {
this.tempCurrentEdit = null;
}
return hasContinuity;
}
}
// </nowiki>
// <nowiki>
let wikishield;
if (mw.config.get("wgRelevantPageName") === "Wikipedia:AntiVandal/run" && mw.config.get("wgAction") === "view") {
wikishield = new WikiShield();
wikishield.startInterface();
window.addEventListener("keydown", wikishield.keyPressed.bind(wikishield));
} else {
mw.util.addPortletLink(
'p-personal',
mw.util.getUrl('Wikipedia:AntiVandal/run'),
'🛡️WikiShield',
'pt-wikishield',
'wikishield',
null,
'#pt-preferences'
);
// add link to sticky header for Vector2022
mw.util.addPortletLink(
'p-personal-sticky-header',
mw.util.getUrl('Wikipedia:wikishield/run'),
'wikishield',
'pt-wikishield',
'wikishield',
null,
'#pt-preferences'
);
}
// </nowiki>
b6mhzlep0se0zuj9l5n7b4autcmlgy9
619600
619599
2026-08-02T01:30:20Z
LuniZunie
25284
test
619600
javascript
text/javascript
!function(){"use strict";var t={6:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.WikiShieldQueue=void 0;e.WikiShieldQueue=class{constructor(t){this.wikishield=t,this.queue=[],this.previousItems=[],this.editsSince="",this.lastRevid=0,this.currentEdit=null,this.backoff=2e3}async fetchRecentChanges(){if(this.queue.length>=this.wikishield.options.maxQueueSize)window.setTimeout(this.fetchRecentChanges.bind(this),this.wikishield.__script__.config.refresh);else{try{this.editsSince=this.wikishield.util.utcString(new Date);const t=this.wikishield.__script__.tags.whitelisted,e=this.wikishield.options.namespacesShown.join("|"),n=(await this.wikishield.api.recentChanges(e)).filter(e=>{var n;return!(null!==(n=e.tags)&&void 0!==n&&n.some(e=>t.includes(e)))}).filter(t=>t.revid>this.lastRevid);this.lastRevid=Math.max(...n.map(t=>t.revid));for(const t of n){const e=[];for(const n of this.queue)this.currentEdit&&n.revid===this.currentEdit.revid||n.page.title===t.title&&n.revid<t.revid&&e.push(n);for(const t of e){const e=this.queue.indexOf(t);e>-1&&(this.queue.splice(e,1),this.wikishield.interface.removeQueueItem(t.revid))}}const i=n.reduce((t,e)=>t+(""===t?"":"|")+e.user,""),o=(await this.wikishield.api.editCount(i)).filter(t=>t.invalid||t.editcount<=this.wikishield.options.maxEditCount).reduce((t,e)=>({...t,[e.name]:e.editcount}),{}),a=await this.wikishield.api.getText(n.reduce((t,e)=>t+(""===t?"":"|")+`User_talk:${e.user}`,"")),s=await this.wikishield.api.usersBlocked(i),r=await this.wikishield.api.ores(n.reduce((t,e)=>t+(""===t?"":"|")+e.revid,""));n.filter(t=>t.user in o).filter(t=>(r[t.revid]||0)>=this.wikishield.options.minimumORESScore||this.wikishield.highlighted.has(t.user)).filter(t=>!this.wikishield.whitelist.has(t.user)).forEach(async t=>{const e=a[`User talk:${t.user}`]||"";this.addQueueItem(t,o[t.user]||-1,this.getWarningLevel(e),r[t.revid]||0,s[t.user]||!1,!await this.wikishield.api.pageExists(`User talk:${t.user}`))}),await this.checkForOutdatedEdits(),this.backoff=this.wikishield.__script__.config.refresh}catch(t){console.log("Error while fetching recent changes",t),this.backoff=Math.min(2*this.backoff,12e4)}window.setTimeout(this.fetchRecentChanges.bind(this),this.backoff)}}async addQueueItem(t,e,n,i,o,a){if(this.queue.filter(e=>e.revid===t.revid).length>0||this.previousItems.filter(e=>e.revid===t.revid).length>0)return;const s=await this.generateQueueItem(t,e,n,i,o,null,null,a);this.queue.push(s);const r=this.queue.findIndex(t=>{var e;return t.revid===(null===(e=this.currentEdit)||void 0===e?void 0:e.revid)});let l;l=-1===r?this.queue:this.queue.slice(0,r).concat(this.queue.slice(r+1)),l=l.sort((t,e)=>{const n=t.fromHistory,i=e.fromHistory;if(n&&i)return n-i;if(n)return-1;if(i)return 1;let o=t.ores;this.wikishield.highlighted.has(t.user.name)?o+=100:t.mentionsMe&&(o+=50);let a=e.ores;return this.wikishield.highlighted.has(e.user.name)?a+=100:e.mentionsMe&&(a+=50),a-o}),r>=0&&l.splice(r,0,this.currentEdit),this.queue=[...l],1!==this.queue.length||this.currentEdit||(this.currentEdit=this.queue[0]),i>=this.wikishield.options.soundAlertORESScore&&this.playAlertSound(),this.wikishield.interface.renderQueue(this.queue,this.currentEdit)}playSound(t){var e;const n=document.getElementById("welcome-container");if(n&&"none"!==n.style.display)return;const i=(null===(e=this.wikishield.options.soundMappings)||void 0===e?void 0:e[t])||t,o=this.wikishield.wikishieldData.sounds[i];if(o&&"none"!==i)try{var a,s,r,l;const e=new(window.AudioContext||window.webkitAudioContext),n=null!==(a=this.wikishield.options.masterVolume)&&void 0!==a?a:.5,i=n*(null!==(s=null===(r=this.wikishield.options.volumes)||void 0===r?void 0:r[t])&&void 0!==s?s:.5)*(null!==(l=o.volume)&&void 0!==l?l:1);if(0===i)return;const d=o.repeats||[0],c=o.frequencies;d.forEach((t,n)=>{const a=c[n%c.length],s=e.createOscillator(),r=e.createGain();s.connect(r),r.connect(e.destination),s.type=o.type;const l=e.currentTime+t;o.sweep?(s.frequency.setValueAtTime(o.sweep.from,l),s.frequency.exponentialRampToValueAtTime(o.sweep.to,l+o.duration)):s.frequency.setValueAtTime(a,l),"function"==typeof o.envelope&&o.envelope(r,e,l,i),s.start(l),s.stop(l+o.duration)})}catch(t){console.error(`Could not play ${i}:`,t)}}playAlertSound(){this.playSound("alert")}playNotificationSound(){this.playSound("notification")}playWatchlistSound(){this.playSound("watchlist")}playClickSound(){this.playSound("click")}playWhooshSound(){this.playSound("whoosh")}playWarnSound(){this.playSound("warn")}playRollbackSound(){this.playSound("rollback")}playReportSound(){this.playSound("report")}playThankSound(){this.playSound("thank")}playProtectionSound(){this.playSound("protection")}playBlockSound(){this.playSound("block")}playSparkleSound(){this.playSound("sparkle")}async checkForOutdatedEdits(){if(0===this.queue.length)return;const t=[...new Set(this.queue.map(t=>t.page.title))];if(0===t.length)return;const e=await this.wikishield.api.getLatestRevisions(t.join("|")),n=[];for(const t of this.queue){if(this.currentEdit&&t.revid===this.currentEdit.revid)continue;const i=e[t.page.title];i&&i>t.revid&&n.push(t)}if(n.length>0){for(const t of n){const e=this.queue.indexOf(t);e>-1&&(this.queue.splice(e,1),this.wikishield.interface.removeQueueItem(t.revid))}this.wikishield.interface.renderQueue(this.queue,this.currentEdit)}}async generateQueueItem(t,e,n,i,o,a,s,r){var l;a=a||await this.wikishield.api.contribs(t.user),s=s||await this.wikishield.api.history(t.title);const d=await this.wikishield.api.diff(t.title,t.old_revid||t.parentid,t.revid),c=await this.wikishield.api.getPageMetadata(t.title),u=null!==(l=await this.wikishield.api.categories(t.old_revid||t.parentid))&&void 0!==l?l:[],p=mw.config.get("wgUserName"),h=await this.wikishield.api.countReverts(t.title,p);let m=!1;if(p&&d){const t=document.createElement("div");t.innerHTML=d;m=(t.textContent||t.innerText||"").toLowerCase().includes(p.toLowerCase())}const g={page:{title:t.title,history:s,dateFormat:c.dateFormat,englishVariant:c.englishVariant,categories:u,namespace:t.ns},user:{name:t.user,contribs:a,editCount:e,warningLevel:n,originalWarningLevel:n,blocked:o,emptyTalkPage:void 0!==r&&r},ores:i,revid:t.revid,timestamp:t.timestamp,comment:t.comment,minor:"minor"in t,sizediff:(t.newlen?t.newlen-t.oldlen:t.sizediff)||0,diff:d,tags:t.tags,reviewed:!1,mentionsMe:m,aiAnalysis:null,usernameAnalysis:null,isBLP:u.some(t=>"Category:Living people"===t.title),reverts:h,consecutive:this.wikishield.api.consecutive(t.title,t.user),fromHistory:!1,isTalk:t.ns%2==1};return this.wikishield.options.enableOllamaAI&&this.wikishield.ollamaAI&&(this.wikishield.ollamaAI.analyzeEdit(g).then(t=>{g.aiAnalysis=t,this.currentEdit&&this.currentEdit.revid===g.revid&&this.wikishield.interface.updateAIAnalysisDisplay(t)}).catch(t=>{console.error("AI analysis failed:",t),g.aiAnalysis={hasIssues:!1,error:t.message}}),mw.util.isTemporaryUser(t.user)||this.wikishield.whitelist.has(t.user)||this.wikishield.ollamaAI.analyzeUsername(t.user,t.title).then(t=>{g.usernameAnalysis=t,t&&!t.cancelled&&t.shouldFlag&&t.confidence>=.5&&this.promptForUAAReport(g)}).catch(t=>{console.error("Username analysis failed:",t),g.usernameAnalysis={shouldFlag:!1,error:t.message}})),g}getWarningLevel(t){const e=t.split(/(?=== ?[\w\d ]+ ?==)/g);for(let t of e)if(new RegExp("== ?"+this.wikishield.util.monthSectionName()+" ?==").test(t)){const e=t.match(/<\!-- Template:[\w-]+?(\d(?:i?m)?) -->/g);if(null===e)return"0";const n=e.map(t=>{const e=t.match(/<\!-- Template:[\w-]+?(\d(?:i?m)?) -->/);return e?e[1]:"0"});return n.sort()[n.length-1].toString()}return"0"}getWarningHistory(t){const e=[],n=t.split(/(?=== ?[\w\d ]+ ?==)/g),i=this.wikishield.util.monthSectionName();for(let t of n){const n=new RegExp("== ?"+i+" ?==").test(t);if(!n)continue;const o=t.match(/== ?([\w\d ]+) ?==/),a=o?o[1]:"Unknown",s=t.matchAll(/<!-- Template:([\w-]+?)(\d(?:i?m)?) -->([^]+?)(?=<!-- Template:|$)/g);for(let t of s){const i=t[1],o=t[2],s=t[3],r=s.match(/(\d{2}:\d{2}.*?\d{4} \(UTC\))/);let l=r?r[1]:null;l&&(l=l.replace(/<[^>]*>/g,""));let d=null;const c=s.match(/\[\[User(?:[ _]talk)?:([^\]|]+)/i);c&&(d=c[1].trim());const u=s.match(/\[\[([^\]]+?)\]\]/),p=u?u[1]:null;e.push({template:i,level:o,timestamp:l,username:d,article:p,section:a,isCurrentMonth:n})}}return e}nextItem(){if(0===this.queue.length)return;if(!this.currentEdit)return this.currentEdit=this.queue[0],void this.wikishield.interface.renderQueue(this.queue,this.currentEdit);const t=this.queue.findIndex(t=>t.revid===this.currentEdit.revid);if(-1===t)return this.currentEdit=this.queue[0],void this.wikishield.interface.renderQueue(this.queue,this.currentEdit);const e=this.currentEdit;e&&this.wikishield.ollamaAI&&this.wikishield.ollamaAI.cancelAnalysis(e.revid),0!==t||e.reviewed||(e.reviewed=!0),this.queue.splice(t,1),this.wikishield.interface.removeQueueItem(e.revid),this.queue.length>0?t<this.queue.length?this.currentEdit=this.queue[t]:this.currentEdit=this.queue[this.queue.length-1]:this.currentEdit=null,this.previousItems.push({...e,fromHistory:Date.now()}),this.wikishield.interface.renderQueue(this.queue,this.currentEdit),e&&(this.checkAndAutoWelcome(e),this.checkAndAutoReportUAA(e))}prevItem(){if(!this.currentEdit&&this.queue.length>0)return this.currentEdit=this.queue[0],void this.wikishield.interface.renderQueue(this.queue,this.currentEdit);const t=this.currentEdit?this.queue.findIndex(t=>t.revid===this.currentEdit.revid):-1,e=this.currentEdit;if(t<=0){if(0===this.previousItems.length)return;return e&&this.wikishield.ollamaAI&&this.wikishield.ollamaAI.cancelAnalysis(e.revid),this.queue.unshift(this.previousItems.pop()),this.currentEdit=this.queue[0],this.wikishield.interface.renderQueue(this.queue,this.currentEdit),void(e&&(this.checkAndAutoWelcome(e),this.checkAndAutoReportUAA(e)))}e&&this.wikishield.ollamaAI&&this.wikishield.ollamaAI.cancelAnalysis(e.revid),this.currentEdit=this.queue[t-1],this.wikishield.interface.renderQueue(this.queue,this.currentEdit),e&&(this.checkAndAutoWelcome(e),this.checkAndAutoReportUAA(e))}async checkAndAutoWelcome(t){var e;if(!this.wikishield.options.enableAutoWelcome)return;if(!t.user||!t.user.name||mw.util.isTemporaryUser(t.user.name))return;const n=(null===(e=t.page)||void 0===e?void 0:e.title)||"unknown";if(!n.toLowerCase().includes("/sandbox")&&!n.toLowerCase().endsWith(":sandbox")&&!this.wikishield.noAutoWelcomeList.has(t.user.name)&&t.user.emptyTalkPage&&(!t.aiAnalysis||!1!==t.aiAnalysis.constructive))try{if(await this.wikishield.api.pageExists(`User talk:${t.user.name}`))return void(t.user.emptyTalkPage=!1);if(!await this.wikishield.interface.showConfirmationDialog("Auto-welcome User",`Would you like to welcome <span class="confirmation-modal-username">${this.wikishield.util.escapeHtml(t.user.name)}</span>?<br><br>\n\t\t\t\t<span style="font-size: 0.9em; color: #888;">Editing: <strong>${this.wikishield.util.escapeHtml(t.page.title)}</strong></span>`,t.user.name))return void this.wikishield.noAutoWelcomeList.add(t.user.name);const e=new this.wikishield.WikiShieldProgressBar;e.set("Auto-welcoming...",.5,"var(--main-blue)");let n=null;if(this.wikishield.options.enableWelcomeLatin){/[^\u0000-\u007F\u0080-\u00FF\u0100-\u017F\u0180-\u024F]/.test(t.user.name)&&(n="Latin")}null===n&&(n="Default"),await this.wikishield.welcomeUser(t.user.name,n),e.set(`Welcomed ${t.user.name}`,1,"var(--main-green)")}catch(t){console.log("Error during auto-welcome check:",t)}}async promptForUAAReport(t){if(!t.user||!t.user.name||mw.util.isTemporaryUser(t.user.name))return;if(this.wikishield.noAutoWelcomeList.has(t.user.name))return;const e=t.usernameAnalysis;if(!e||!e.shouldFlag)return;if(this.wikishield.uaaReports&&this.wikishield.uaaReports.includes(t.user.name))return void this.wikishield.noAutoWelcomeList.add(t.user.name);const n="none"!==e.violationType?` (${e.violationType})`:"",i=Math.round(100*e.confidence);if(await this.wikishield.interface.showConfirmationDialog("Report Username to UAA",`The username <span class="confirmation-modal-username">${this.wikishield.util.escapeHtml(t.user.name)}</span> may violate Wikipedia's username policy${n}.<br><br>\n\t\t\t<span style="font-size: 0.9em; color: #888;">Would you like to report it to <a href="https://en.wikipedia.org/wiki/Wikipedia:Usernames_for_administrator_attention" target="_blank" style="color: #0645ad;">Usernames for administrator attention (UAA)</a>?</span><br><br>\n\t\t\t<strong>AI Confidence:</strong> ${i}%<br>\n\t\t\t<strong>Reasoning:</strong> ${this.wikishield.util.escapeHtml(e.reasoning)}<br>\n\t\t\t<strong>Recommendation:</strong> ${this.wikishield.util.escapeHtml(e.recommendation)}`,t.user.name))try{const e=this.wikishield.events.events.reportUserUAA;e&&e.func&&await e.func(t),this.wikishield.noAutoWelcomeList.add(t.user.name)}catch(t){console.log("Error during auto UAA report:",t)}else this.wikishield.noAutoWelcomeList.add(t.user.name)}async checkAndAutoReportUAA(t){t.usernameAnalysis&&t.usernameAnalysis.shouldFlag&&t.usernameAnalysis.confidence>=.5&&!t.usernameAnalysis.cancelled&&await this.promptForUAAReport(t)}delete(){this.playWhooshSound(),this.wikishield.ollamaAI&&this.wikishield.ollamaAI.cancelAllAnalyses(),this.queue=[],this.currentEdit=null,this.wikishield.interface.clearQueue(),this.wikishield.interface.renderQueue(this.queue,this.currentEdit)}async loadFromContribs(t){const e=this.currentEdit.user.contribs.filter(e=>e.revid===Number(t))[0];this.wikishield.interface.elem("#diff-container").innerHTML="";const n=this.queue.findIndex(t=>{var e;return t.revid===(null===(e=this.currentEdit)||void 0===e?void 0:e.revid)});this.currentEdit=await this.generateQueueItem(e,this.currentEdit.user.editCount,this.currentEdit.user.warningLevel,null,this.currentEdit.user.blocked,null,null,this.currentEdit.user.emptyTalkPage),n>-1&&(this.queue[n]=this.currentEdit),this.wikishield.interface.renderQueue(this.queue,this.currentEdit)}async loadFromHistory(t){const e=this.currentEdit.page.history.filter(e=>e.revid===Number(t))[0];e.title=this.currentEdit.page.title;this.wikishield.interface.elem("#diff-container").innerHTML="";const n=await Promise.all([this.wikishield.api.editCount(e.user),this.wikishield.api.getSinglePageContent(`User talk:${e.user}`),this.wikishield.api.contribs(e.user),this.wikishield.api.history(e.title)]),i=n[1],o=this.queue.findIndex(t=>{var e;return t.revid===(null===(e=this.currentEdit)||void 0===e?void 0:e.revid)});this.currentEdit=await this.generateQueueItem(e,n[0][0].editcount,this.getWarningLevel(i),null,!1,n[2],n[3],!await this.wikishield.api.pageExists(`User talk:${e.user}`)),o>-1&&(this.queue[o]=this.currentEdit),this.wikishield.interface.renderQueue(this.queue,this.currentEdit)}async loadSpecificRevision(t,e){try{const n=this.wikishield.interface.elem("#diff-container");n.innerHTML='<div class="loading-spinner">Loading revision...</div>';const i=await this.wikishield.api.getRevisionData(t);if(!i)return void(n.innerHTML='<div class="error">Failed to load revision</div>');const o=await Promise.all([this.wikishield.api.editCount(i.user),this.wikishield.api.getSinglePageContent(`User talk:${i.user}`),this.wikishield.api.contribs(i.user),this.wikishield.api.history(e)]),a=o[1],s={revid:i.revid,parentid:i.parentid,user:i.user,comment:i.comment,timestamp:i.timestamp,size:i.size,oldlen:i.oldlen||0,newlen:i.size,title:e};this.currentEdit=await this.generateQueueItem(s,o[0][0].editcount,this.getWarningLevel(a),null,!1,o[2],o[3],!await this.wikishield.api.pageExists(`User talk:${s.user}`)),this.wikishield.interface.renderQueue(this.queue,this.currentEdit)}catch(t){console.error("Failed to load specific revision:",t),this.wikishield.interface.elem("#diff-container").innerHTML='<div class="error">Failed to load revision</div>'}}}},27:function(t){t.exports='* {\n\tfont-family: sans-serif;\n\tbox-sizing: border-box;\n}\n\nbody, html, #container {\n\twidth: 100%;\n\theight: 100%;\n\tmargin: 0;\n\toverflow: hidden;\n}\n\nbody {\n\tbackground: #ffffff;\n\tcolor: #333;\n\ttransition: background-color 0.3s ease, color 0.3s ease;\n}\n\nbody.dark-mode {\n\tbackground: #1a1d24;\n\tcolor: #e0e0e0;\n}\n\n#container {\n\tdisplay: flex;\n}\n\n#queue {\n\twidth: 300px;\n\theight: 100%;\n\tborder-right: 2px solid #bfbfbf;\n\tposition: relative;\n}\n\nbody.dark-mode #queue {\n\tborder-right: 2px solid #3a3d4a;\n}\n\n#queue-top {\n\theight: 60px;\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n\tposition: relative;\n\tz-index: 2;\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 15px;\n\tjustify-content: space-between;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tbackground: rgba(255, 255, 255, 0.98);\n\t-webkit-backdrop-filter: blur(8px);\n\tbackdrop-filter: blur(8px);\n}\n\nbody.dark-mode #queue-top {\n\tbackground: rgba(30, 33, 42, 0.98);\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n}\n\n#queue-top-left, #user-contribs-left {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n#queue-top-title {\n\tfont-weight: bold;\n\tfont-size: 1.1em;\n}\n\nbody.dark-mode #queue-top-title {\n\tcolor: #e0e0e0;\n}\n\n#queue-top-items, #user-contribs-count {\n\tfont-size: 0.85em;\n}\n\nbody.dark-mode #queue-top-items,\nbody.dark-mode #user-contribs-count {\n\tcolor: #999;\n}\n\n#queue-top-right {\n\tfont-size: 1.4em;\n}\n\n#queue-top-right span {\n\tmargin-left: 5px;\n\tcursor: pointer;\n\tcolor: #444;\n\ttransition: 0.2s;\n}\n\nbody.dark-mode #queue-top-right span {\n\tcolor: #c0c0c0;\n}\n\n#queue-top-right span:hover {\n\tcolor: black;\n}\n\nbody.dark-mode #queue-top-right span:hover {\n\tcolor: #8fa3ff;\n}\n\n#notifications-panel, #watchlist-panel {\n\tposition: absolute;\n\ttop: 55px;\n\tleft: 15px;\n\twidth: 380px;\n\tmax-height: 550px;\n\tbackground: rgba(30, 33, 42, 0.97);\n\t-webkit-backdrop-filter: blur(20px);\n\tbackdrop-filter: blur(20px);\n\tborder: 1px solid rgba(255, 255, 255, 0.12);\n\tborder-radius: 16px;\n\tbox-shadow: 0 12px 48px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255, 255, 255, 0.05);\n\tdisplay: none;\n\tz-index: 1000;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n\nbody.dark-mode #notifications-panel, body.dark-mode #watchlist-panel {\n\tbackground: rgba(30, 33, 42, 0.97);\n\tborder: 1px solid rgba(255, 255, 255, 0.12);\n\tbox-shadow: 0 12px 48px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255, 255, 255, 0.05);\n}\n\n#notifications-panel.show, #watchlist-panel.show {\n\tdisplay: flex;\n\tanimation: slideDownFancy 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n@keyframes slideDownFancy {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(-20px) scale(0.95);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0) scale(1);\n\t}\n}\n\n#notifications-header, #watchlist-header {\n\tpadding: 16px 18px;\n\tborder-bottom: 1px solid rgba(255, 255, 255, 0.08);\n\tfont-weight: 700;\n\tfont-size: 1.05em;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.1) 0%, rgba(118, 75, 162, 0.1) 100%);\n}\n\nbody.dark-mode #notifications-header, body.dark-mode #watchlist-header {\n\tborder-bottom: 1px solid rgba(255, 255, 255, 0.08);\n\tcolor: #e8e8e8;\n}\n\n#notifications-list, #watchlist-list {\n\toverflow: hidden auto;\n\tmax-height: 500px;\n}\n\n.notification-item, .watchlist-item {\n\tpadding: 14px 18px;\n\tborder-bottom: 1px solid rgba(255, 255, 255, 0.05);\n\tcursor: pointer;\n\ttransition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n\tposition: relative;\n}\n\nbody.dark-mode .notification-item, body.dark-mode .watchlist-item {\n\tborder-bottom: 1px solid rgba(255, 255, 255, 0.05);\n}\n\n.notification-item:hover, .watchlist-item:hover {\n\tbackground: rgba(255, 255, 255, 0.06);\n\ttransform: translateX(4px);\n}\n\nbody.dark-mode .notification-item:hover, body.dark-mode .watchlist-item:hover {\n\tbackground: rgba(255, 255, 255, 0.06);\n}\n\n.notification-item.unread, .watchlist-item.unread {\n\tbackground: linear-gradient(90deg, rgba(102, 126, 234, 0.2) 0%, rgba(102, 126, 234, 0.05) 100%);\n\tborder-left: 3px solid #8fa3ff;\n\tpadding-left: 15px;\n}\n\n.notification-item.unread::before, .watchlist-item.unread::before {\n\tcontent: \'\';\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tbottom: 0;\n\twidth: 3px;\n\tbackground: linear-gradient(180deg, #8fa3ff 0%, rgba(143, 163, 255, 0.5) 100%);\n}\n\nbody.dark-mode .notification-item.unread, body.dark-mode .watchlist-item.unread {\n\tbackground: linear-gradient(90deg, rgba(102, 126, 234, 0.2) 0%, rgba(102, 126, 234, 0.05) 100%);\n\tborder-left: 3px solid #8fa3ff;\n}\n\n.notification-header, .watchlist-header {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: flex-start;\n\tmargin-bottom: 6px;\n}\n\n.notification-type, .watchlist-type {\n\tfont-size: 0.7em;\n\ttext-transform: uppercase;\n\tfont-weight: 700;\n\tletter-spacing: 0.8px;\n\topacity: 0.7;\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.25), rgba(118, 75, 162, 0.25));\n\tpadding: 2px 8px;\n\tborder-radius: 4px;\n}\n\n.notification-title, .watchlist-title {\n\tfont-weight: 600;\n\tmargin-bottom: 4px;\n\tfont-size: 0.98em;\n\tline-height: 1.4;\n\tcolor: #222;\n}\n\nbody.dark-mode .notification-title, body.dark-mode .watchlist-title {\n\tcolor: #e8e8e8;\n}\n\n.notification-subtitle, .watchlist-subtitle {\n\tfont-size: 0.88em;\n\tcolor: #555;\n\tmargin-bottom: 6px;\n\tline-height: 1.45;\n}\n\nbody.dark-mode .notification-subtitle, body.dark-mode .watchlist-subtitle {\n\tcolor: #aaa;\n}\n\n.notification-read, .watchlist-read {\n\tdisplay: inline-block;\n\tpadding: 6px 10px;\n\tborder-radius: 8px;\n\tfont-size: 0.85em;\n\tfont-weight: 500;\n\tcursor: pointer;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tbackground: rgba(102, 126, 234, 0.08);\n\ttransition: all 0.15s ease;\n}\n\n.notification-read:hover, .watchlist-read:hover {\n\tbackground: rgba(102, 126, 234, 0.25);\n\tcolor: #667eea;\n}\n\n.notification-time, .watchlist-time {\n\tfont-size: 0.78em;\n\tcolor: #888;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 5px;\n\tfont-style: italic;\n}\n\nbody.dark-mode .notification-time, body.dark-mode .watchlist-time {\n\tcolor: #777;\n}\n\n.notification-time::before, .watchlist-time::before {\n\tcontent: \'🕒\';\n\tfont-size: 1.1em;\n\tfilter: grayscale(0.3);\n}\n\n.toast-notification {\n\tposition: fixed;\n\tbottom: 100px;\n\tright: 30px;\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.95) 0%, rgba(118, 75, 162, 0.95) 100%);\n\t-webkit-backdrop-filter: blur(20px);\n\tbackdrop-filter: blur(20px);\n\tcolor: white;\n\tpadding: 18px 24px;\n\tborder-radius: 16px;\n\tbox-shadow: 0 12px 40px rgba(102, 126, 234, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.1);\n\tborder: 1px solid rgba(255, 255, 255, 0.2);\n\tz-index: 10000;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 14px;\n\tmin-width: 320px;\n\tmax-width: 500px;\n\tanimation: slideInBounce 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55);\n\topacity: 0;\n\ttransform: translateX(100%) scale(0.8);\n}\n\n.toast-notification.success {\n\tbackground: linear-gradient(135deg, rgba(76, 175, 80, 0.95) 0%, rgba(56, 142, 60, 0.95) 100%);\n\tbox-shadow: 0 12px 40px rgba(76, 175, 80, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.1);\n}\n\n.toast-notification.error {\n\tbackground: linear-gradient(135deg, rgba(244, 67, 54, 0.95) 0%, rgba(211, 47, 47, 0.95) 100%);\n\tbox-shadow: 0 12px 40px rgba(244, 67, 54, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.1);\n}\n\n.toast-notification.warning {\n\tbackground: linear-gradient(135deg, rgba(255, 152, 0, 0.95) 0%, rgba(245, 124, 0, 0.95) 100%);\n\tbox-shadow: 0 12px 40px rgba(255, 152, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.1);\n}\n\n.toast-notification.show {\n\topacity: 1;\n\ttransform: translateX(0) scale(1);\n}\n\n.toast-notification.hide {\n\tanimation: slideOutBounce 0.4s cubic-bezier(0.6, -0.28, 0.735, 0.045) forwards;\n}\n\n@keyframes slideInBounce {\n\t0% {\n\t\topacity: 0;\n\t\ttransform: translateX(100%) scale(0.8);\n\t}\n\t60% {\n\t\topacity: 1;\n\t\ttransform: translateX(-10px) scale(1.05);\n\t}\n\t100% {\n\t\topacity: 1;\n\t\ttransform: translateX(0) scale(1);\n\t}\n}\n\n@keyframes slideOutBounce {\n\t0% {\n\t\topacity: 1;\n\t\ttransform: translateX(0) scale(1);\n\t}\n\t100% {\n\t\topacity: 0;\n\t\ttransform: translateX(150%) scale(0.7);\n\t}\n}\n\n.toast-icon {\n\tfont-size: 1.8em;\n\tflex-shrink: 0;\n\tfilter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));\n}\n\n.toast-content {\n\tflex: 1;\n}\n\n.toast-title {\n\tfont-weight: 700;\n\tfont-size: 1.05em;\n\tmargin-bottom: 4px;\n\tletter-spacing: 0.3px;\n}\n\n.toast-message {\n\tfont-size: 0.9em;\n\topacity: 0.95;\n\tline-height: 1.4;\n}\n\n.toast-close {\n\tcursor: pointer;\n\tfont-size: 1.3em;\n\topacity: 0.8;\n\ttransition: all 0.2s;\n\tflex-shrink: 0;\n\tpadding: 4px;\n\tborder-radius: 6px;\n}\n\n.toast-close:hover {\n\topacity: 1;\n\tbackground: rgba(255, 255, 255, 0.15);\n\ttransform: scale(1.1);\n}\n\n.confirmation-modal-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tbackground: rgba(0, 0, 0, 0.5);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tz-index: 10001;\n\tanimation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n\tfrom {\n\t\topacity: 0;\n\t}\n\tto {\n\t\topacity: 1;\n\t}\n}\n\n@keyframes fadeOut {\n\tfrom {\n\t\topacity: 1;\n\t}\n\tto {\n\t\topacity: 0;\n\t}\n}\n\n.confirmation-modal {\n\tbackground: rgba(255, 255, 255, 0.98);\n\t-webkit-backdrop-filter: blur(20px);\n\tbackdrop-filter: blur(20px);\n\tborder-radius: 16px;\n\tbox-shadow: 0 12px 48px rgba(0, 0, 0, 0.25);\n\tborder: 1px solid rgba(255, 255, 255, 0.8);\n\tmin-width: 400px;\n\tmax-width: 500px;\n\tanimation: scaleIn 0.2s ease-out;\n}\n\n@keyframes scaleIn {\n\tfrom {\n\t\ttransform: scale(0.9);\n\t\topacity: 0;\n\t}\n\tto {\n\t\ttransform: scale(1);\n\t\topacity: 1;\n\t}\n}\n\n@keyframes scaleOut {\n\tfrom {\n\t\ttransform: scale(1);\n\t\topacity: 1;\n\t}\n\tto {\n\t\ttransform: scale(0.9);\n\t\topacity: 0;\n\t}\n}\n\n.confirmation-modal-overlay.closing {\n\tanimation: fadeOut 0.2s ease-out forwards;\n}\n\n.confirmation-modal.closing {\n\tanimation: scaleOut 0.2s ease-out forwards;\n}\n\n.confirmation-modal-header {\n\tpadding: 20px 24px;\n\tborder-bottom: 1px solid #e0e0e0;\n}\n\n.confirmation-modal-title {\n\tfont-size: 1.2em;\n\tfont-weight: bold;\n\tcolor: #333;\n}\n\n.confirmation-modal-body {\n\tpadding: 24px;\n\tcolor: #555;\n\tline-height: 1.5;\n}\n\n.confirmation-modal-username {\n\tfont-weight: bold;\n\tcolor: #0645ad;\n}\n\n.confirmation-modal-footer {\n\tpadding: 16px 24px;\n\tborder-top: 1px solid #e0e0e0;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tgap: 12px;\n}\n\n.confirmation-modal-footer-right {\n\tdisplay: flex;\n\tgap: 12px;\n}\n\n.confirmation-modal-button {\n\tpadding: 10px 24px;\n\tborder-radius: 6px;\n\tfont-weight: 500;\n\tcursor: pointer;\n\tborder: none;\n\tfont-size: 0.95em;\n\ttransition: all 0.2s;\n}\n\n.confirmation-modal-button-no {\n\tbackground: #f5f5f5;\n\tcolor: #333;\n}\n\n.confirmation-modal-button-no:hover {\n\tbackground: #e0e0e0;\n}\n\n.confirmation-modal-button-yes {\n\tbackground: #36c;\n\tcolor: white;\n}\n\n.confirmation-modal-button-yes:hover {\n\tbackground: #2855a8;\n}\n\n.confirmation-modal-button-uaa {\n\tbackground: #d33;\n\tcolor: white;\n}\n\n.confirmation-modal-button-uaa:hover {\n\tbackground: #a82828;\n}\n\n.confirmation-modal-button-yes:hover {\n\tbackground: #2855a8;\n}\n\n.confirmation-modal-footer-vertical {\n\tflex-direction: column;\n\talign-items: stretch;\n}\n\n.confirmation-modal-footer-vertical .confirmation-modal-button {\n\twidth: 100%;\n}\n\n.confirmation-modal-button-reason {\n\tbackground: #36c;\n\tcolor: white;\n}\n\n.confirmation-modal-button-reason:hover {\n\tbackground: #2855a8;\n}\n\n.confirmation-modal-button-cancel {\n\tbackground: #f5f5f5;\n\tcolor: #333;\n}\n\n.confirmation-modal-button-cancel:hover {\n\tbackground: #e0e0e0;\n}\n\n#queue-items {\n\theight: calc(100% - 60px);\n\toverflow-x: hidden;\n\toverflow-y: auto;\n}\n\n.width-adjust {\n\twidth: 8px;\n\theight: 100%;\n\tposition: absolute;\n\ttop: 0;\n\tright: -4px;\n\tz-index: 3;\n\tcursor: col-resize;\n}\n\n#details-width-adjust {\n\tleft: -4px;\n}\n\n#right-container {\n\twidth: calc(100% - 300px);\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n#middle-top, #right-top {\n\theight: 60px;\n\tdisplay: flex;\n\talign-items: center;\n\talign-content: center;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\tpadding: 8px 15px;\n\tbackground: rgba(255, 255, 255, 0.98);\n\t-webkit-backdrop-filter: blur(8px);\n\tbackdrop-filter: blur(8px);\n\tborder-bottom: 2px solid #e0e0e0;\n}\n\n#right-top > .icons {\n\tfont-size: 1.4em;\n\n\twidth: 100%;\n display: flex;\n justify-content: center;\n\n\t& > .hidden {\n\t\tdisplay: none;\n\t}\n\n\t& > .icon {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0 6px;\n\t\tborder-radius: 10px;\n\t\tcolor: #667eea;\n\t\tfont-size: 1.1em;\n\t\tbackground: rgba(255, 255, 255, 0.03);\n\t\tborder: 2px solid rgba(255, 255, 255, 0.06);\n\t\tbox-shadow: 0 6px 18px rgba(102, 126, 234, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.04);\n\t\ttransition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s ease, background 0.18s ease, color 0.18s ease;\n\t\tcursor: pointer;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t}\n\n\t& > .icon:hover {\n\t\ttransform: translateY(-3px) scale(1.03);\n\t\tbox-shadow: 0 10px 28px rgba(102, 126, 234, 0.18);\n\t\tbackground: linear-gradient(135deg, rgba(102,126,234,0.06) 0%, rgba(118,75,162,0.04) 100%);\n\t\tcolor: #2b3bff;\n\t}\n\n\t& > .icon.selected,\n\t& > .icon.active {\n\t\tbackground: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n\t\tcolor: #fff;\n\t\tbox-shadow: 0 10px 28px rgba(102, 126, 234, 0.35), inset 0 1px 0 rgba(255,255,255,0.12);\n\t\ttransform: scale(1.02);\n\t}\n\n\tbody.dark-mode & > .icon {\n\t\tcolor: #8fa3ff;\n\t\tbackground: rgba(255, 255, 255, 0.02);\n\t\tborder: 2px solid rgba(143, 163, 255, 0.06);\n\t\tbox-shadow: 0 6px 18px rgba(143, 163, 255, 0.06);\n\t}\n\n\tbody.dark-mode & > .icon:hover {\n\t\tcolor: #fff;\n\t\tbackground: linear-gradient(135deg, rgba(102,126,234,0.16) 0%, rgba(118,75,162,0.12) 100%);\n\t\tbox-shadow: 0 10px 28px rgba(143, 163, 255, 0.18);\n\t}\n}\n\n#right-top > .tabs {\n\twidth: 100%;\n display: flex;\n justify-content: center;\n}\n#right-top > .tabs > .tab {\n\tcursor: pointer;\n\topacity: 0.75;\n padding: 10px;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\n\t-webkit-backdrop-filter: blur(8px);\n\tbackdrop-filter: blur(8px);\n\n\ttransition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n\tbackground: rgba(60, 63, 75, 0.8);\n\tbox-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.4);\n\tborder: 2px solid rgba(255, 255, 255, 0.08);\n\n\t&:hover {\n\t\topacity: 1;\n\t}\n\t&.selected {\n\t\tbackground: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n\t\tbox-shadow:\n\t\t\t0 4px 12px rgba(102, 126, 234, 0.5),\n\t\t\tinset 0 1px 2px rgba(255, 255, 255, 0.2);\n\t\tborder: 2px solid rgba(102, 126, 234, 0.4);\n\t}\n\n\t&.hidden {\n\t\tdisplay: none;\n\t}\n\n\t&#latest-edits-tab {\n\t\tborder-top-left-radius: 10px;\n\t\tborder-bottom-left-radius: 10px;\n\t}\n\t&#consecutive-edits-tab {\n\t\tborder-top-right-radius: 10px;\n\t\tborder-bottom-right-radius: 10px;\n\t}\n}\n\n#middle-top {\n\twidth: calc(100% - 300px);\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;\n}\n\n#middle-top a {\n\ttext-decoration: none;\n\tcolor: #0645ad;\n\tfont-weight: 500;\n\ttransition: color 0.2s ease;\n}\n\n#middle-top a:hover {\n\tcolor: #0b7ad1;\n}\n\n#middle-top div {\n\tpadding: 0 6px;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 0px;\n}\n\n#middle-top .fa {\n\tmargin-right: 6px;\n\tcolor: #555;\n\tfont-size: 0.95em;\n}\n\n.middle-top-comment {\n\tflex-basis: 100%;\n\ttext-align: center;\n\tjustify-content: center;\n\tmax-width: 100%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n#right-content {\n\twidth: 100%;\n\theight: calc(100% - 60px);\n\tdisplay: flex;\n}\n\n#main-container {\n\tposition: relative;\n\twidth: calc(100% - 300px);\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n}\n\n/* Diff Container - Modern Redesign */\n#diff-container {\n\toverflow-y: auto;\n\tflex: 1;\n\tpadding: 16px;\n\tscroll-behavior: smooth;\n\tbackground: linear-gradient(180deg,\n\trgba(248, 249, 250, 0.3) 0%,\n\trgba(241, 243, 245, 0.2) 100%);\n}\n\nbody.dark-mode #diff-container {\n\tbackground: linear-gradient(180deg,\n\trgba(30, 34, 45, 0.4) 0%,\n\trgba(25, 28, 36, 0.3) 100%);\n}\n\n#diff-container table {\n\twidth: 100%;\n\tborder-collapse: separate;\n\tborder-spacing: 0;\n\tbackground: rgba(255, 255, 255, 0.6);\n\t-webkit-backdrop-filter: blur(20px);\n\tbackdrop-filter: blur(20px);\n\tborder-radius: 12px;\n\toverflow: hidden;\n\tbox-shadow:\n\t0 4px 20px rgba(0, 0, 0, 0.08),\n\tinset 0 1px 0 rgba(255, 255, 255, 0.4),\n\tinset 0 -1px 0 rgba(0, 0, 0, 0.05);\n\tborder: 1px solid rgba(102, 126, 234, 0.15);\n\tmargin-bottom: 16px;\n}\n\nbody.dark-mode #diff-container table {\n\tbackground: rgba(35, 40, 52, 0.7);\n\tborder: 1px solid rgba(143, 163, 255, 0.2);\n\tbox-shadow:\n\t0 4px 20px rgba(0, 0, 0, 0.3),\n\tinset 0 1px 0 rgba(255, 255, 255, 0.08),\n\tinset 0 -1px 0 rgba(0, 0, 0, 0.3);\n}\n\n#diff-container td,\n#diff-container tr {\n\toverflow-wrap: anywhere;\n\tborder: none;\n}\n\n#diff-container * {\n\tfont-family: \'Consolas\', \'Monaco\', \'Courier New\', monospace;\n\tvertical-align: baseline;\n\tfont-size: .95em;\n\tline-height: 1.5;\n}\n\n#diff-container td:not(.diff-marker) {\n\twidth: 50%;\n\tpadding: 8px 14px;\n\ttransition: background 0.2s ease;\n}\n\n/* Diff Line Numbers */\n.diff-lineno {\n\tbackground: linear-gradient(135deg,\n\trgba(102, 126, 234, 0.12) 0%,\n\trgba(118, 75, 162, 0.08) 100%) !important;\n\tborder-bottom: 1px solid rgba(102, 126, 234, 0.2) !important;\n\tcolor: #667eea !important;\n\tfont-weight: 600;\n\tpadding: 8px 16px !important;\n\ttext-align: center;\n\tfont-size: 0.85em;\n\tletter-spacing: 0.5px;\n\t-webkit-user-select: none;\n\tuser-select: none;\n}\n\nbody.dark-mode .diff-lineno {\n\tbackground: linear-gradient(135deg,\n\trgba(143, 163, 255, 0.15) 0%,\n\trgba(158, 115, 212, 0.1) 100%) !important;\n\tborder-bottom: 1px solid rgba(143, 163, 255, 0.25) !important;\n\tcolor: #8fa3ff !important;\n}\n\n/* Diff Marker Column */\n.diff-marker {\n\twidth: 30px !important;\n\ttext-align: center;\n\tfont-weight: 700;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tpadding: 6px 8px !important;\n\tbackground: rgba(0, 0, 0, 0.03);\n\tborder-right: 1px solid rgba(0, 0, 0, 0.08);\n}\n\nbody.dark-mode .diff-marker {\n\tbackground: rgba(0, 0, 0, 0.2);\n\tborder-right: 1px solid rgba(255, 255, 255, 0.05);\n}\n\n/* Added Lines */\n.diff-addedline {\n\tbackground: linear-gradient(90deg,\n\trgba(76, 175, 80, 0.15) 0%,\n\trgba(76, 175, 80, 0.08) 100%) !important;\n\tborder-left: 3px solid #4CAF50 !important;\n\tposition: relative;\n}\n\n.diff-addedline::before {\n\tcontent: \'\';\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tbottom: 0;\n\twidth: 3px;\n\tbackground: linear-gradient(180deg,\n\trgba(76, 175, 80, 0.8) 0%,\n\trgba(76, 175, 80, 0.4) 100%);\n\tbox-shadow: 0 0 8px rgba(76, 175, 80, 0.4);\n}\n\n.diff-addedline:hover {\n\tbackground: linear-gradient(90deg,\n\trgba(76, 175, 80, 0.22) 0%,\n\trgba(76, 175, 80, 0.12) 100%) !important;\n}\n\nbody.dark-mode .diff-addedline {\n\tbackground: linear-gradient(90deg,\n\trgba(0, 164, 0, 0.25) 0%,\n\trgba(0, 164, 0, 0.12) 100%) !important;\n\tborder-left: 3px solid #00a400 !important;\n}\n\nbody.dark-mode .diff-addedline:hover {\n\tbackground: linear-gradient(90deg,\n\trgba(0, 164, 0, 0.32) 0%,\n\trgba(0, 164, 0, 0.16) 100%) !important;\n}\n\n/* Deleted Lines */\n.diff-deletedline {\n\tbackground: linear-gradient(90deg,\n\trgba(244, 67, 54, 0.15) 0%,\n\trgba(244, 67, 54, 0.08) 100%) !important;\n\tborder-left: 3px solid #f44336 !important;\n\tposition: relative;\n}\n\n.diff-deletedline::before {\n\tcontent: \'\';\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tbottom: 0;\n\twidth: 3px;\n\tbackground: linear-gradient(180deg,\n\trgba(244, 67, 54, 0.8) 0%,\n\trgba(244, 67, 54, 0.4) 100%);\n\tbox-shadow: 0 0 8px rgba(244, 67, 54, 0.4);\n}\n\n.diff-deletedline:hover {\n\tbackground: linear-gradient(90deg,\n\trgba(244, 67, 54, 0.22) 0%,\n\trgba(244, 67, 54, 0.12) 100%) !important;\n}\n\nbody.dark-mode .diff-deletedline {\n\tbackground: linear-gradient(90deg,\n\trgba(244, 67, 54, 0.25) 0%,\n\trgba(244, 67, 54, 0.12) 100%) !important;\n\tborder-left: 3px solid #f44336 !important;\n}\n\nbody.dark-mode .diff-deletedline:hover {\n\tbackground: linear-gradient(90deg,\n\trgba(244, 67, 54, 0.32) 0%,\n\trgba(244, 67, 54, 0.16) 100%) !important;\n}\n\n/* Inline Changes Highlighting */\nins {\n\tbackground: rgba(76, 175, 80, 0.35) !important;\n\ttext-decoration: none;\n\tborder-radius: 4px;\n\tpadding: 0px 2px;\n\tfont-weight: 600;\n\tbox-shadow: 0 0 0 1px rgba(76, 175, 80, 0.3);\n\ttransition: all 0.15s ease;\n}\n\nins:hover {\n\tbackground: rgba(76, 175, 80, 0.5) !important;\n\tbox-shadow: 0 0 0 2px rgba(76, 175, 80, 0.5);\n}\n\nbody.dark-mode ins {\n\tbackground: rgba(130, 169, 26, 0.45) !important;\n\tbox-shadow: 0 0 0 1px rgba(130, 169, 26, 0.4);\n}\n\nbody.dark-mode ins:hover {\n\tbackground: rgba(130, 169, 26, 0.6) !important;\n\tbox-shadow: 0 0 0 2px rgba(130, 169, 26, 0.6);\n}\n\ndel {\n\tbackground: rgba(244, 67, 54, 0.35) !important;\n\ttext-decoration: none;\n\tborder-radius: 4px;\n\tpadding: 2px 4px;\n\tfont-weight: 600;\n\tbox-shadow: 0 0 0 1px rgba(244, 67, 54, 0.3);\n\ttransition: all 0.15s ease;\n}\n\ndel:hover {\n\tbackground: rgba(244, 67, 54, 0.5) !important;\n\tbox-shadow: 0 0 0 2px rgba(244, 67, 54, 0.5);\n}\n\nbody.dark-mode del {\n\tbackground: rgba(244, 67, 54, 0.45) !important;\n\tbox-shadow: 0 0 0 1px rgba(244, 67, 54, 0.4);\n}\n\nbody.dark-mode del:hover {\n\tbackground: rgba(244, 67, 54, 0.6) !important;\n\tbox-shadow: 0 0 0 2px rgba(244, 67, 54, 0.6);\n}\n\n/* Context Lines (unchanged) */\n#diff-container tr:not(.diff-addedline):not(.diff-deletedline) td {\n\tcolor: #666;\n\tbackground: rgba(0, 0, 0, 0.02);\n}\n\nbody.dark-mode #diff-container tr:not(.diff-addedline):not(.diff-deletedline) td {\n\tcolor: #aaa;\n\tbackground: rgba(255, 255, 255, 0.02);\n}\n\n#diff-container tr:hover td {\n\tbackground: rgba(102, 126, 234, 0.05);\n}\n\nbody.dark-mode #diff-container tr:hover td {\n\tbackground: rgba(143, 163, 255, 0.08);\n}\n\n#bottom-tools {\n\theight: 50px;\n\tflex-shrink: 0;\n}\n\n#right-details {\n\twidth: 300px;\n\tborder-left: 2px solid #cfcfcf;\n\tposition: relative;\n}\n\n#user-contribs, #page-history {\n\theight: 50%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n#page-history {\n\tborder-top: 2px solid rgba(102, 126, 234, 0.2);\n}\n\nbody.dark-mode #page-history {\n\tborder-top: 2px solid rgba(143, 163, 255, 0.25);\n}\n\n#user-contribs-top, #page-history-top {\n\theight: 70px;\n\tborder-bottom: 1px solid rgba(102, 126, 234, 0.15);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 0 16px;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tbackground: linear-gradient(135deg,\n\trgba(102, 126, 234, 0.1) 0%,\n\trgba(118, 75, 162, 0.08) 50%,\n\trgba(102, 126, 234, 0.06) 100%);\n\t-webkit-backdrop-filter: blur(25px);\n\tbackdrop-filter: blur(25px);\n\tbox-shadow:\n\t0 2px 12px rgba(102, 126, 234, 0.1),\n\tinset 0 1px 0 rgba(255, 255, 255, 0.15),\n\tinset 0 -1px 0 rgba(102, 126, 234, 0.1);\n\tposition: relative;\n\tflex-shrink: 0;\n}\n\nbody.dark-mode #user-contribs-top,\nbody.dark-mode #page-history-top {\n\tbackground: linear-gradient(135deg,\n\trgba(143, 163, 255, 0.15) 0%,\n\trgba(158, 115, 212, 0.12) 50%,\n\trgba(143, 163, 255, 0.1) 100%);\n\tborder-bottom: 1px solid rgba(143, 163, 255, 0.2);\n\tbox-shadow:\n\t0 2px 16px rgba(0, 0, 0, 0.4),\n\tinset 0 1px 0 rgba(255, 255, 255, 0.08),\n\tinset 0 -1px 0 rgba(143, 163, 255, 0.15);\n}\n\n#user-contribs-title, #page-history-title {\n\tfont-weight: 700;\n\tfont-size: 1em;\n\tcolor: #2c3e50;\n\tletter-spacing: 0.5px;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 10px;\n\ttext-transform: uppercase;\n\tfont-size: 0.85em;\n}\n\nbody.dark-mode #user-contribs-title,\nbody.dark-mode #page-history-title {\n\tcolor: #e8e8e8;\n}\n\n#user-contribs-title::before {\n\tcontent: "\\f007";\n\tfont-family: "Font Awesome 6 Free";\n\tfont-weight: 900;\n\tcolor: #667eea;\n\tfont-size: 1.2em;\n\tfilter: drop-shadow(0 2px 4px rgba(102, 126, 234, 0.3));\n}\n\nbody.dark-mode #user-contribs-title::before {\n\tcolor: #8fa3ff;\n\tfilter: drop-shadow(0 2px 6px rgba(143, 163, 255, 0.4));\n}\n\n#page-history-title::before {\n\tcontent: "\\f1da";\n\tfont-family: "Font Awesome 6 Free";\n\tfont-weight: 900;\n\tcolor: #667eea;\n\tfont-size: 1.2em;\n\tfilter: drop-shadow(0 2px 4px rgba(102, 126, 234, 0.3));\n}\n\nbody.dark-mode #page-history-title::before {\n\tcolor: #8fa3ff;\n\tfilter: drop-shadow(0 2px 6px rgba(143, 163, 255, 0.4));\n}\n\n#user-contribs-left {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n}\n\n#user-contribs-count {\n\tfont-size: 0.8em;\n\tcolor: #777;\n\tfont-weight: 500;\n\tletter-spacing: 0.3px;\n}\n\nbody.dark-mode #user-contribs-count {\n\tcolor: #aaa;\n}\n\n/* Warn Level Badge - Modern Redesign */\n#user-contribs-level {\n\tpadding: 4px 10px;\n\tborder-radius: 10px;\n\tcolor: white;\n\tfont-weight: 700;\n\tfont-size: 0.8em;\n\tbox-shadow:\n\t0 2px 8px rgba(0, 0, 0, 0.2),\n\tinset 0 1px 0 rgba(255, 255, 255, 0.2),\n\tinset 0 -1px 0 rgba(0, 0, 0, 0.1);\n\ttransition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n\tcursor: help;\n\tposition: relative;\n\tletter-spacing: 0.3px;\n\tborder: 1px solid rgba(255, 255, 255, 0.2);\n}\n\n#user-contribs-level:hover {\n\ttransform: translateY(-1px) scale(1.03);\n\tbox-shadow:\n\t0 4px 12px rgba(0, 0, 0, 0.25),\n\tinset 0 1px 0 rgba(255, 255, 255, 0.25),\n\tinset 0 -1px 0 rgba(0, 0, 0, 0.15);\n\tborder-color: rgba(255, 255, 255, 0.3);\n}\n\n/* Block Count Badge - Modern Redesign */\n#block-count-indicator {\n\tpadding: 4px 10px;\n\tborder-radius: 10px;\n\tbackground: linear-gradient(135deg,\n\trgba(255, 68, 68, 0.95) 0%,\n\trgba(220, 38, 38, 0.95) 100%);\n\tcolor: white;\n\tfont-weight: 700;\n\tfont-size: 0.8em;\n\tmargin-right: 6px;\n\tborder: 1px solid rgba(255, 255, 255, 0.3);\n\tbox-shadow:\n\t0 2px 8px rgba(255, 68, 68, 0.3),\n\tinset 0 1px 0 rgba(255, 255, 255, 0.2),\n\tinset 0 -1px 0 rgba(0, 0, 0, 0.15);\n\ttransition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n\tcursor: help;\n\tletter-spacing: 0.3px;\n\tposition: relative;\n}\n\n#block-count-indicator::before {\n\tcontent: "🚫";\n\tmargin-right: 4px;\n\tfont-size: 0.9em;\n\tfilter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3));\n}\n\n#block-count-indicator:hover {\n\ttransform: translateY(-1px) scale(1.03);\n\tbox-shadow:\n\t0 4px 14px rgba(255, 68, 68, 0.4),\n\tinset 0 1px 0 rgba(255, 255, 255, 0.25),\n\tinset 0 -1px 0 rgba(0, 0, 0, 0.2);\n\tborder-color: rgba(255, 255, 255, 0.4);\n}\n\n/* Protection Indicator - Modern Redesign */\n#protection-indicator {\n\tfont-size: 1.6em;\n\tcolor: #667eea;\n\tfilter: drop-shadow(0 2px 6px rgba(102, 126, 234, 0.4));\n\ttransition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n\tcursor: help;\n}\n\nbody.dark-mode #protection-indicator {\n\tcolor: #8fa3ff;\n\tfilter: drop-shadow(0 2px 8px rgba(143, 163, 255, 0.5));\n}\n\n#protection-indicator:hover {\n\ttransform: scale(1.15) rotate(5deg);\n\tfilter: drop-shadow(0 4px 12px rgba(102, 126, 234, 0.6));\n}\n\nbody.dark-mode #protection-indicator:hover {\n\tfilter: drop-shadow(0 4px 12px rgba(143, 163, 255, 0.7));\n}\n\n#user-contribs-content, #page-history-content {\n\theight: calc(100% - 70px);\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\tflex: 1;\n\tbackground: rgba(248, 249, 252, 0.4);\n\tpadding: 4px;\n}\n\nbody.dark-mode #user-contribs-content,\nbody.dark-mode #page-history-content {\n\tbackground: rgba(20, 22, 28, 0.3);\n}\n\n#user-contribs-content .queue-edit,\n#page-history-content .queue-edit {\n\tanimation: none !important;\n\tmargin: 4px 0;\n\tborder-radius: 8px;\n\toverflow: hidden;\n}\n\n#bottom-tools {\n\toverflow: auto hidden;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\theight: 56px;\n\tpadding: 0 16px;\n\tborder-top: 1px solid rgba(0, 0, 0, 0.1);\n\tbackground: rgba(255, 255, 255, 0.98);\n\t-webkit-backdrop-filter: blur(12px);\n\tbackdrop-filter: blur(12px);\n\tbox-shadow: 0 -2px 8px rgba(0, 0, 0, 0.05);\n\tposition: relative;\n\tz-index: 10;\n}\n\nbody.dark-mode #bottom-tools {\n\tbackground: rgba(30, 33, 42, 0.98);\n\tborder-top: 1px solid rgba(255, 255, 255, 0.1);\n\tbox-shadow: 0 -2px 8px rgba(0, 0, 0, 0.3);\n}\n\n/* Blur bottom bar when settings are open */\nbody.settings-open #bottom-tools {\n\tfilter: blur(4px);\n\tpointer-events: none;\n}\n\n#bottom-tools-left {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n}\n\n/* Menu Trigger Buttons */\n.bottom-tool-item {\n\tposition: relative;\n\twhite-space: nowrap;\n}\n\n.bottom-tool-trigger {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 8px 14px;\n\tborder-radius: 8px;\n\tcursor: pointer;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\ttransition: all 0.2s ease;\n\tfont-weight: 500;\n\tfont-size: 0.9em;\n\tcolor: #444;\n\tbackground: transparent;\n}\n\nbody.dark-mode .bottom-tool-trigger {\n\tcolor: #c0c0c0;\n}\n\n.bottom-tool-trigger:hover {\n\tbackground: rgba(0, 0, 0, 0.05);\n\tcolor: #667eea;\n}\n\nbody.dark-mode .bottom-tool-trigger:hover {\n\tbackground: rgba(255, 255, 255, 0.08);\n\tcolor: #8fa3ff;\n}\n\n.bottom-tool-trigger.active {\n\tbackground: rgba(102, 126, 234, 0.12);\n\tcolor: #667eea;\n}\n\nbody.dark-mode .bottom-tool-trigger.active {\n\tbackground: rgba(102, 126, 234, 0.2);\n\tcolor: #8fa3ff;\n}\n\n.bottom-tool-trigger i:first-child {\n\tfont-size: 1em;\n}\n\n.bottom-tool-chevron {\n\tfont-size: 0.75em;\n\ttransition: transform 0.2s ease;\n}\n\n.bottom-tool-trigger.active .bottom-tool-chevron {\n\ttransform: rotate(180deg);\n}\n\n/* Dropdown Menus */\n.bottom-tool-menu {\n\tposition: absolute;\n\tbottom: calc(100% + 8px);\n\tleft: 0;\n\tmin-width: 240px;\n\tmax-width: calc(100vw - 40px);\n\tbackground: rgba(255, 255, 255, 0.98);\n\t-webkit-backdrop-filter: blur(20px);\n\tbackdrop-filter: blur(20px);\n\tborder: 1px solid rgba(0, 0, 0, 0.08);\n\tborder-radius: 12px;\n\tbox-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n\tpadding: 6px;\n\tdisplay: none;\n\tz-index: 1000;\n\tanimation: slideUpFadeIn 0.2s ease-out;\n\toverflow-y: visible;\n}\n\n.bottom-tool-menu::-webkit-scrollbar {\n\theight: 8px;\n}\n\n.bottom-tool-menu::-webkit-scrollbar-track {\n\tbackground: rgba(0, 0, 0, 0.05);\n\tborder-radius: 4px;\n}\n\n.bottom-tool-menu::-webkit-scrollbar-thumb {\n\tbackground: rgba(0, 0, 0, 0.2);\n\tborder-radius: 4px;\n}\n\nbody.dark-mode .bottom-tool-menu::-webkit-scrollbar-track {\n\tbackground: rgba(255, 255, 255, 0.05);\n}\n\nbody.dark-mode .bottom-tool-menu::-webkit-scrollbar-thumb {\n\tbackground: rgba(255, 255, 255, 0.2);\n}\n\nbody.dark-mode .bottom-tool-menu {\n\tbackground: rgba(35, 38, 48, 0.98);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\tbox-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);\n}\n\n.bottom-tool-menu.show {\n\tdisplay: block;\n}\n\n@keyframes slideUpFadeIn {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n/* Menu Options */\n.menu-option {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n\tpadding: 10px 12px;\n\tborder-radius: 8px;\n\tcursor: pointer;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\ttransition: all 0.15s ease;\n\tfont-size: 0.9em;\n\tcolor: #333;\n\tposition: relative;\n}\n\nbody.dark-mode .menu-option {\n\tcolor: #e0e0e0;\n}\n\n.menu-option:hover {\n\tbackground: rgba(102, 126, 234, 0.08);\n\tcolor: #667eea;\n}\n\nbody.dark-mode .menu-option:hover {\n\tbackground: rgba(102, 126, 234, 0.15);\n\tcolor: #8fa3ff;\n}\n\n.menu-option i:first-child {\n\twidth: 18px;\n\tfont-size: 1.1em;\n\ttext-align: center;\n\topacity: 0.8;\n}\n\n.menu-option:hover i:first-child {\n\topacity: 1;\n}\n\n.menu-option span {\n\tflex: 1;\n}\n\n.menu-option-icon,\n.menu-option-chevron {\n\tfont-size: 0.85em;\n\topacity: 0.5;\n\tmargin-left: auto;\n}\n\n.menu-option:hover .menu-option-icon,\n.menu-option:hover .menu-option-chevron {\n\topacity: 1;\n}\n\n/* Menu Divider */\n.menu-divider {\n\theight: 1px;\n\tbackground: rgba(0, 0, 0, 0.08);\n\tmargin: 6px 8px;\n}\n\nbody.dark-mode .menu-divider {\n\tbackground: rgba(255, 255, 255, 0.1);\n}\n\n/* Submenus */\n.submenu-trigger {\n\tposition: relative;\n}\n\n.submenu {\n\tposition: absolute;\n\tleft: calc(100% + 4px);\n\ttop: -6px;\n\tmin-width: 240px;\n\tbackground: rgba(255, 255, 255, 0.98);\n\t-webkit-backdrop-filter: blur(20px);\n\tbackdrop-filter: blur(20px);\n\tborder: 1px solid rgba(0, 0, 0, 0.08);\n\tborder-radius: 12px;\n\tbox-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n\tpadding: 6px;\n\tdisplay: none;\n\tz-index: 1100;\n}\n\nbody.dark-mode .submenu {\n\tbackground: rgba(35, 38, 48, 0.98);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\tbox-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);\n}\n\n.submenu.show {\n\tdisplay: block;\n\tanimation: slideRightFadeIn 0.2s ease-out;\n}\n\n@keyframes slideRightFadeIn {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateX(-10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateX(0);\n\t}\n}\n\n/* Stats Section */\n#bottom-tools-stats {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 16px;\n\tfont-size: 0.9em;\n}\n\n.stat-item {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n\tpadding: 6px 12px;\n\tbackground: rgba(0, 0, 0, 0.03);\n\tborder-radius: 8px;\n\tcolor: #666;\n}\n\nbody.dark-mode .stat-item {\n\tbackground: rgba(255, 255, 255, 0.05);\n\tcolor: #999;\n}\n\n.stat-item i {\n\tfont-size: 1.1em;\n}\n\n.bottom-stat-value {\n\tfont-weight: 700;\n\tcolor: #333;\n\tfont-size: 1em;\n}\n\nbody.dark-mode .bottom-stat-value {\n\tcolor: #e0e0e0;\n}\n\n.stat-value {\n\tfont-weight: 700;\n\tcolor: #333;\n}\n\nbody.dark-mode .stat-value {\n\tcolor: #e0e0e0;\n}\n\n.stat-label {\n\topacity: 0.8;\n}\n\n/* Revert & Warn Menu Tables */\n.revert-menu-table {\n\twidth: 100%;\n\tborder-collapse: separate;\n\tborder-spacing: 4px;\n}\n\n.revert-menu-table tr {\n\tborder-bottom: none;\n}\n\n.revert-menu-table tr:last-child {\n\tborder-bottom: none;\n}\n\n.revert-menu-title {\n\tpadding: 8px 10px;\n\tfont-weight: 500;\n\tfont-size: 0.85em;\n\tcolor: #333;\n\twhite-space: nowrap;\n\tbackground: transparent;\n\tborder-radius: 0;\n}\n\nbody.dark-mode .revert-menu-title {\n\tcolor: #e0e0e0;\n\tbackground: transparent;\n}\n\n.revert-menu-info {\n\tpadding: 8px 6px;\n\ttext-align: center;\n\tcursor: help;\n\tcolor: #667eea;\n\tfont-size: 0.85em;\n\twidth: 28px;\n\tbackground: transparent;\n\tborder-radius: 0;\n}\n\nbody.dark-mode .revert-menu-info {\n\tcolor: #8fa3ff;\n\tbackground: transparent;\n}\n\n.revert-menu-info:hover {\n\tcolor: #5a67d8;\n}\n\nbody.dark-mode .revert-menu-info:hover {\n\tcolor: #a5b4ff;\n}\n\n.revert-menu-item {\n\tpadding: 6px 8px;\n\ttext-align: center;\n\tfont-weight: 600;\n\tfont-size: 0.8em;\n\tcursor: pointer;\n\ttransition: all 0.15s ease;\n\tcolor: white;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tmin-width: 38px;\n\twidth: 38px;\n\tborder-radius: 6px;\n}\n\n.revert-menu-item:hover {\n\tfilter: brightness(1.15);\n\ttransform: scale(1.08);\n\tbox-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n}\n\n.revert-menu-item:active {\n\ttransform: scale(0.98);\n}\n\n.revert-menu-category {\n\tpadding: 10px 12px 6px 12px;\n\tfont-weight: 700;\n\tfont-size: 0.75em;\n\ttext-transform: uppercase;\n\tletter-spacing: 0.5px;\n\tcolor: #667eea;\n\tbackground: rgba(102, 126, 234, 0.08);\n\tborder-radius: 6px 6px 0 0;\n}\n\nbody.dark-mode .revert-menu-category {\n\tcolor: #8fa3ff;\n\tbackground: rgba(143, 163, 255, 0.1);\n}\n\n.warning-menu {\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\tmin-width: 350px;\n\tgap: 10px;\n\tpadding: 8px;\n\tborder-radius: 12px;\n}\n\n/* Section headers */\n.warning-menu-section h2 {\n\tmargin: 4px 0 6px 4px;\n\tfont-size: 0.95em;\n\tfont-weight: 600;\n\ttext-transform: uppercase;\n\topacity: 0.8;\n}\n\n/* Warning item container */\n.warning-menu-item {\n\tcursor: pointer;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 10px;\n\tpadding: 8px 10px;\n\tborder-radius: 8px;\n\ttransition: background 0.15s ease;\n\tposition: relative;\n\n\t& > .icon {\n\t\theight: 1em;\n\t\ttext-align: center;\n\t\taspect-ratio: 1 / 1;\n\t}\n}\n\n.warning-menu-item:hover {\n\tbackground: rgba(102, 126, 234, 0.08);\n}\n\nbody.dark-mode .warning-menu-item:hover {\n\tbackground: rgba(102, 126, 234, 0.15);\n}\n\n/* Warning title */\n.warning-menu-title {\n\tflex: 1;\n\tfont-size: 0.9em;\n\tfont-weight: 500;\n}\n\n/* Buttons */\n.warning-menu-button {\n\tpadding: 6px 10px;\n\tborder-radius: 8px;\n\tfont-size: 0.85em;\n\tfont-weight: 500;\n\tcursor: pointer;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tbackground: rgba(102, 126, 234, 0.08);\n\ttransition: all 0.15s ease;\n}\n\n.warning-menu-button:hover {\n\tbackground: rgba(102, 126, 234, 0.25);\n\tcolor: #667eea;\n}\n\n/* Submenu (Levels) */\n.levels-menu {\n\tposition: absolute;\n\tmin-width: 0px;\n\tbackground: rgba(255, 255, 255, 0.98);\n\t-webkit-backdrop-filter: blur(20px);\n\tbackdrop-filter: blur(20px);\n\tborder: 1px solid rgba(0, 0, 0, 0.08);\n\tborder-radius: 12px;\n\tbox-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n\tpadding: 6px;\n\tdisplay: none;\n\tz-index: 1100;\n\tanimation: slideRightFadeIn 0.2s ease-out;\n}\n\nbody.dark-mode .levels-menu {\n\tbackground: rgba(35, 38, 48, 0.98);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\tbox-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);\n}\n\n.levels-menu.show {\n\tdisplay: block;\n}\n\n/* Items inside submenu */\n.levels-menu-item {\n\tdisplay: inline-block;\n\tmargin: 3px;\n\tpadding: 6px 14px;\n\tborder-radius: 8px;\n\tcursor: pointer;\n\tfont-size: 0.9em;\n\tcolor: #333;\n\ttext-align: center;\n\ttransition: all 0.15s ease;\n}\n\nbody.dark-mode .levels-menu-item {\n\tcolor: #e0e0e0;\n}\n\n.levels-menu-item:hover {\n\tbackground: rgba(102, 126, 234, 0.1);\n\tcolor: #667eea;\n}\n\nbody.dark-mode .levels-menu-item:hover {\n\tbackground: rgba(102, 126, 234, 0.15);\n\tcolor: #8fa3ff;\n}\n\nselect, input[type=text] {\n\tmax-width: 250px;\n\tbackground: rgba(255, 255, 255, 0.95);\n\t-webkit-backdrop-filter: blur(8px);\n\tbackdrop-filter: blur(8px);\n\tborder: 1px solid rgba(0, 0, 0, 0.15);\n\tpadding: 8px 12px;\n\tborder-radius: 8px;\n\tcursor: pointer;\n\ttransition: all 0.2s ease;\n\tfont-size: 0.95em;\n\tbox-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);\n}\n\nbody.dark-mode select,\nbody.dark-mode input[type=text] {\n\tbackground: rgba(40, 43, 52, 0.95);\n\tborder: 1px solid rgba(255, 255, 255, 0.15);\n\tcolor: #e0e0e0;\n\tbox-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);\n}\n\nselect:hover, input[type=text]:hover {\n\tborder-color: rgba(0, 0, 0, 0.25);\n\tbox-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\nbody.dark-mode select:hover,\nbody.dark-mode input[type=text]:hover {\n\tborder-color: rgba(255, 255, 255, 0.25);\n\tbox-shadow: 0 3px 10px rgba(0, 0, 0, 0.4);\n}\n\nselect:focus, input[type=text]:focus {\n\toutline: none;\n\tborder-color: rgba(33, 150, 243, 0.6);\n\tbox-shadow: 0 0 0 3px rgba(33, 150, 243, 0.15);\n\tbackground: rgba(255, 255, 255, 1);\n}\n\nbody.dark-mode select:focus,\nbody.dark-mode input[type=text]:focus {\n\tborder-color: rgba(102, 126, 234, 0.8);\n\tbox-shadow: 0 0 0 3px rgba(102, 126, 234, 0.3);\n\tbackground: rgba(40, 43, 52, 1);\n}\n\ninput[type=text] {\n\tcursor: text !important;\n}\n\n#revert-menu {\n\tmax-height: calc(100vh - 120px);\n\toverflow: hidden auto;\n}\n\n#warn-menu {\n\tmax-height: calc(100vh - 120px);\n\toverflow: hidden auto;\n}\n\n.revert-menu-table {\n\tpadding: 12px;\n}\n\n.revert-menu-title, .revert-menu-info {\n\tpadding-right: 15px;\n}\n\n.revert-menu-item {\n\tcolor: white;\n\twidth: 35px;\n\tborder-radius: 8px;\n\theight: 35px;\n\tfont-size: 0.9em;\n\ttext-align: center;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tcursor: pointer;\n\ttransition: all 0.2s ease;\n\tbox-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);\n\t-webkit-backdrop-filter: blur(8px);\n\tbackdrop-filter: blur(8px);\n\tborder: 1px solid rgba(255, 255, 255, 0.15);\n}\n\n.revert-menu-item:hover {\n\tfilter: brightness(0.9);\n\ttransform: translateY(-2px);\n\tbox-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);\n}\n\n.revert-menu-item:active {\n\ttransform: translateY(0);\n\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n}\n\n/* Submenu Form Content */\n.bottom-subcontent-title {\n\tfont-size: 0.95em;\n\tfont-weight: 600;\n\tcolor: #333;\n\tmargin-bottom: 12px;\n\tpadding-bottom: 8px;\n\tborder-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\nbody.dark-mode .bottom-subcontent-title {\n\tcolor: #e0e0e0;\n\tborder-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.bottom-subcontent-input-title {\n\tfont-size: 0.9em;\n\tmargin: 10px 0 2px 0;\n\tcolor: #666;\n}\n\nbody.dark-mode .bottom-subcontent-input-title {\n\tcolor: #999;\n}\n\n.submenu select,\n.submenu input[type="text"] {\n\twidth: 100%;\n\tpadding: 8px 12px;\n\tborder: 1px solid rgba(0, 0, 0, 0.15);\n\tborder-radius: 8px;\n\tbackground: rgba(255, 255, 255, 0.8);\n\tfont-size: 0.9em;\n\ttransition: all 0.2s ease;\n}\n\nbody.dark-mode .submenu select,\nbody.dark-mode .submenu input[type="text"] {\n\tbackground: rgba(0, 0, 0, 0.3);\n\tborder: 1px solid rgba(255, 255, 255, 0.2);\n\tcolor: #e0e0e0;\n}\n\n.submenu select:focus,\n.submenu input[type="text"]:focus {\n\toutline: none;\n\tborder-color: #667eea;\n\tbox-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.bottom-subcontent-button {\n\tfont-size: 0.9em;\n\tmargin: 10px 0 2px 0;\n}\n\n.bottom-subcontent-button {\n\tmargin-top: 10px;\n\tdisplay: block;\n\twidth: 100%;\n\tbackground: linear-gradient(to bottom, #667eea, #5a67d8);\n\tborder: 1px solid rgba(102, 126, 234, 0.3);\n\tborder-radius: 8px;\n\tcursor: pointer;\n\tpadding: 10px 16px;\n\tfont-weight: 600;\n\tcolor: white;\n\ttransition: all 0.2s ease;\n\tbox-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);\n}\n\n.bottom-subcontent-button:hover {\n\tbackground: linear-gradient(to bottom, #5a67d8, #4c51bf);\n\ttransform: translateY(-1px);\n\tbox-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);\n}\n\n.bottom-subcontent-button:active {\n\ttransform: translateY(0);\n\tbox-shadow: 0 1px 4px rgba(102, 126, 234, 0.3);\n}\n\nbody.dark-mode .bottom-subcontent-button {\n\tbackground: linear-gradient(to bottom, #8fa3ff, #7b8ff5);\n\tbox-shadow: 0 2px 8px rgba(143, 163, 255, 0.3);\n}\n\nbody.dark-mode .bottom-subcontent-button:hover {\n\tbackground: linear-gradient(to bottom, #7b8ff5, #667eea);\n\tbox-shadow: 0 4px 12px rgba(143, 163, 255, 0.4);\n}\n\n.queue-edit {\n\tdisplay: flex;\n\tposition: relative;\n\tfont-size: 0.95em;\n\ttransition: all 0.2s ease;\n\tborder-radius: 10px;\n\tmargin: 8px;\n\toverflow: hidden;\n\tbackground: rgba(255, 255, 255, 0.6);\n\t-webkit-backdrop-filter: blur(10px);\n\tbackdrop-filter: blur(10px);\n\tborder: 1px solid rgba(0, 0, 0, 0.08);\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);\n}\n\nbody.dark-mode .queue-edit {\n\tcolor: #c0c0c0;\n\tbackground: rgba(40, 43, 52, 0.7);\n\tborder: 1px solid rgba(255, 255, 255, 0.08);\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);\n}\n\n.queue-edit:hover {\n\tbackground: rgba(255, 255, 255, 0.85);\n\tborder-color: rgba(102, 126, 234, 0.3);\n\tbox-shadow: 0 4px 16px rgba(102, 126, 234, 0.15);\n\ttransform: translateX(2px);\n}\n\nbody.dark-mode .queue-edit:hover {\n\tbackground: rgba(50, 54, 66, 0.85);\n\tborder-color: rgba(143, 163, 255, 0.3);\n\tbox-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);\n}\n\n.queue-edit:not(.queue-edit-current) {\n\tanimation: fadein 0.5s ease-out 0s 1;\n}\n\n@keyframes fadein {\n\tfrom {\n\t\tbackground: #e8e8e8;\n\t\ttransform: translateX(-5px);\n\t}\n\n\tto {\n\t\tbackground: transparent;\n\t\ttransform: translateX(0);\n\t}\n}\n\nbody.dark-mode .queue-edit:not(.queue-edit-current) {\n\tanimation: fadeinDark 0.5s ease-out 0s 1;\n}\n\n@keyframes fadeinDark {\n\tfrom {\n\t\tbackground: rgba(255, 255, 255, 0.1);\n\t\ttransform: translateX(-5px);\n\t}\n\n\tto {\n\t\tbackground: transparent;\n\t\ttransform: translateX(0);\n\t}\n}\n\n.queue-edit-title, .queue-edit-user, .queue-edit-summary, .queue-edit-time {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\tmargin-bottom: 3px;\n\tposition: relative;\n\twidth: max-content;\n\tmax-width: 100%;\n\theight: 22px;\n}\n\n.queue-edit-user, .queue-edit-summary, .queue-edit-time {\n\tfont-size: 0.9em;\n}\n\n#user-contribs-content .queue-edit-content,\n#page-history-content .queue-edit-content {\n\tpadding: 12px 14px;\n\tgap: 5px;\n}\n\n#user-contribs-content .queue-edit,\n#page-history-content .queue-edit {\n\ttransition: all 0.2s ease;\n}\n\n#user-contribs-content .queue-edit:hover,\n#page-history-content .queue-edit:hover {\n\ttransform: translateX(3px);\n\tbackground: rgba(102, 126, 234, 0.08) !important;\n}\n\nbody.dark-mode #user-contribs-content .queue-edit:hover,\nbody.dark-mode #page-history-content .queue-edit:hover {\n\tbackground: rgba(143, 163, 255, 0.12) !important;\n}\n\n#user-contribs-content .queue-edit-change,\n#page-history-content .queue-edit-change {\n\tfont-size: 0.75em !important;\n\tmin-width: 45px;\n\tpadding: 2px 6px;\n}\n\n.queue-edit-icon {\n\twidth: 25px;\n\tflex-shrink: 0;\n\tcolor: #333;\n}\n\nbody.dark-mode .queue-edit-icon {\n\tcolor: #c0c0c0;\n}\n\n.queue-edit-color {\n\twidth: 8px;\n\tflex-shrink: 0;\n\tbackground: gray;\n\ttransition: all 0.3s ease;\n\tposition: relative;\n}\n\n.queue-edit-color::after {\n\tcontent: attr(data-ores-score);\n\tposition: absolute;\n\tright: 10px;\n\ttop: 50%;\n\ttransform: translateY(-50%);\n\tfont-size: 0.7em;\n\tfont-weight: 700;\n\tcolor: white;\n\tbackground: rgba(0, 0, 0, 0.3);\n\t-webkit-backdrop-filter: blur(8px);\n\tbackdrop-filter: blur(8px);\n\tpadding: 3px 6px;\n\tborder-radius: 5px;\n\topacity: 0;\n\ttransition: opacity 0.3s ease;\n\twhite-space: nowrap;\n\tpointer-events: none;\n\tz-index: 10;\n}\n\n.queue-edit:hover .queue-edit-color {\n\twidth: 55px;\n}\n\n.queue-edit:hover .queue-edit-color::after {\n\topacity: 1;\n}\n\n.queue-edit-content {\n\tpadding: 14px 16px;\n\twidth: 100%;\n\tborder-bottom: none;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 6px;\n}\n\nbody.dark-mode .queue-edit-content {\n\tborder-bottom: none;\n}\n\n.queue-edit-tags {\n\tdisplay: flex;\n}\n\n.queue-edit-tag {\n\tfont-size: 0.8em;\n\tpadding: 3px 10px;\n\tflex-shrink: 0;\n\tmargin-right: 5px;\n\tborder-radius: 6px;\n\tbackground: rgba(234, 234, 234, 0.9);\n\t-webkit-backdrop-filter: blur(8px);\n\tbackdrop-filter: blur(8px);\n\tborder: 1px solid rgba(0, 0, 0, 0.08);\n\ttransition: all 0.2s ease;\n}\n\nbody.dark-mode .queue-edit-tag {\n\tbackground: rgba(50, 54, 66, 0.9);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\tcolor: #c0c0c0;\n}\n\n.queue-edit-tag:hover {\n\tbackground: rgba(220, 220, 220, 0.95);\n}\n\nbody.dark-mode .queue-edit-tag:hover {\n\tbackground: rgba(60, 64, 76, 0.95);\n}\n\n.queue-edit-tag-minor {\n\tbackground: rgba(212, 212, 212, 0.95);\n\t-webkit-backdrop-filter: blur(8px);\n\tbackdrop-filter: blur(8px);\n\tborder: 1px solid rgba(0, 0, 0, 0.1);\n\tfont-weight: bold;\n\tcolor: #666;\n\tfont-style: italic;\n}\n\nbody.dark-mode .queue-edit-tag-minor {\n\tbackground: rgba(60, 64, 76, 0.95);\n\tborder: 1px solid rgba(255, 255, 255, 0.15);\n\tcolor: #999;\n}\n\n.minor-indicator {\n\tfont-weight: bold;\n\tcolor: #666;\n\tfont-size: 0.9em;\n\tpadding: 0px 4px;\n\tbackground: rgba(232, 232, 232, 0.9);\n\t-webkit-backdrop-filter: blur(8px);\n\tbackdrop-filter: blur(8px);\n\tborder: 1px solid rgba(0, 0, 0, 0.08);\n\tborder-radius: 4px;\n\tmargin-right: 4px;\n}\n\nbody.dark-mode .minor-indicator {\n\tcolor: #999;\n\tbackground: rgba(60, 64, 76, 0.9);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.queue-edit-change {\n\tposition: absolute;\n\ttop: 0;\n\theight: calc(100% - 2px);\n\tright: 0;\n\tdisplay: flex;\n\twidth: 100px;\n\talign-items: center;\n\tjustify-content: right;\n\tpadding-right: 10px;\n\tbackground: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));\n}\n\n.queue-edit-current {\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.12), rgba(118, 75, 162, 0.08)) !important;\n\tborder-left: 5px solid #667eea !important;\n\tbox-shadow:\n\tinset 0 0 20px rgba(102, 126, 234, 0.1),\n\t0 4px 16px rgba(102, 126, 234, 0.2) !important;\n\ttransform: translateX(0) !important;\n}\n\nbody.dark-mode .queue-edit-current {\n\tbackground: linear-gradient(135deg, rgba(143, 163, 255, 0.15), rgba(158, 115, 212, 0.1)) !important;\n\tborder-left: 5px solid #8fa3ff !important;\n\tbox-shadow:\n\tinset 0 0 20px rgba(143, 163, 255, 0.15),\n\t0 4px 16px rgba(0, 0, 0, 0.5) !important;\n}\n\n.queue-edit:hover .queue-edit-color {\n\twidth: 80px;\n}\n\n.tooltip {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 10000;\n\topacity: 0;\n\ttransition: opacity 0.2s ease;\n\tfont-size: 0.9em;\n\tmax-width: 450px;\n\tmin-width: 0px;\n\tpadding: 10px 14px;\n\tbackground: rgba(44, 62, 80, 0.96);\n\t-webkit-backdrop-filter: blur(12px);\n\tbackdrop-filter: blur(12px);\n\tborder-radius: 10px;\n\tcolor: white;\n\tbox-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\twhite-space: normal;\n\tline-height: 1.5;\n\tfont-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;\n\tword-wrap: break-word;\n\toverflow-wrap: break-word;\n}\n\n/* Tooltip Content Styling - Modern Redesign */\n.tooltip-title {\n\tfont-weight: 700;\n\tfont-size: 1em;\n\tmargin-bottom: 10px;\n\tborder-bottom: 2px solid rgba(255, 255, 255, 0.25);\n\tpadding-bottom: 6px;\n\tword-wrap: break-word;\n\tletter-spacing: 0.3px;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n\n.tooltip-item {\n\tmargin: 8px 0;\n\tpadding: 8px 10px;\n\tbackground: rgba(0, 0, 0, 0.15);\n\tborder-radius: 6px;\n\tborder-left: 3px solid rgba(255, 215, 0, 0.5);\n\tword-wrap: break-word;\n\toverflow-wrap: break-word;\n\ttransition: all 0.2s ease;\n}\n\n.tooltip-item:hover {\n\tbackground: rgba(0, 0, 0, 0.25);\n\tborder-left-color: rgba(255, 215, 0, 0.8);\n\ttransform: translateX(2px);\n}\n\n.tooltip-item-level {\n\tdisplay: inline-block;\n\tmin-width: 65px;\n\tfont-weight: 700;\n\tcolor: #ffd700;\n\tword-wrap: break-word;\n\tbackground: rgba(255, 215, 0, 0.15);\n\tpadding: 2px 8px;\n\tborder-radius: 4px;\n\tfont-size: 0.95em;\n\tletter-spacing: 0.3px;\n}\n\n.tooltip-item-article {\n\tcolor: #87ceeb;\n\tword-wrap: break-word;\n\tfont-weight: 500;\n}\n\n.tooltip-item-time {\n\tcolor: #c0c0c0;\n\tfont-size: 0.85em;\n\tword-wrap: break-word;\n\tfont-weight: 500;\n\topacity: 0.9;\n}\n\n.tooltip-more {\n\tmargin-top: 10px;\n\tpadding-top: 8px;\n\tborder-top: 1px solid rgba(255, 255, 255, 0.15);\n\tfont-style: italic;\n\tcolor: #aaa;\n\tfont-size: 0.9em;\n\ttext-align: center;\n}\n\n.context-menu {\n\tposition: fixed;\n\tpadding: 8px;\n\tbackground: rgba(255, 255, 255, 0.95);\n\t-webkit-backdrop-filter: blur(12px);\n\tbackdrop-filter: blur(12px);\n\tborder: 1px solid rgba(0, 0, 0, 0.1);\n\tborder-radius: 10px;\n\tz-index: 100;\n\tbox-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);\n}\n\n.context-menu div {\n\tpadding: 8px 12px;\n\tmargin: 4px;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tcursor: pointer;\n\tborder-radius: 6px;\n\ttransition: background 0.2s ease;\n}\n\n.context-menu div:not(#context-ores):hover {\n\tbackground: rgba(0, 0, 0, 0.08);\n}\n\n#context-ores {\n\tcolor: #444;\n\tfont-size: 0.8em;\n}\n\n#context-ores-number {\n\tfont-size: 1.2em;\n\tfont-weight: bold;\n\tfilter: brightness(0.6);\n}\n\n.settings-container {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\t-webkit-backdrop-filter: blur(12px);\n\tbackdrop-filter: blur(12px);\n\tbackground: rgba(0, 0, 0, 0.4);\n\tz-index: 10;\n\tanimation: settingsBackdropFadeIn 0.3s ease-out;\n}\n\nbody.dark-mode .settings-container {\n\tbackground: rgba(0, 0, 0, 0.7);\n}\n\n@keyframes settingsBackdropFadeIn {\n\tfrom {\n\t\topacity: 0;\n\t\t-webkit-backdrop-filter: blur(12px);\n\t\tbackdrop-filter: blur(0px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\t-webkit-backdrop-filter: blur(12px);\n\t\tbackdrop-filter: blur(12px);\n\t}\n}\n\n.settings {\n\tdisplay: flex;\n\tbackground: rgba(255, 255, 255, 0.95);\n\t-webkit-backdrop-filter: blur(30px);\n\tbackdrop-filter: blur(30px);\n\tborder: 1px solid rgba(255, 255, 255, 0.3);\n\tborder-radius: 20px;\n\tbox-shadow:\n\t0 20px 60px rgba(0, 0, 0, 0.3),\n\t0 0 1px rgba(255, 255, 255, 0.5) inset;\n\toverflow: hidden;\n\tanimation: settingsPanelSlideIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);\n\tmax-width: 1100px;\n\twidth: 90vw;\n}\n\nbody.dark-mode .settings {\n\tbackground: rgba(30, 33, 42, 0.95);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\tbox-shadow:\n\t0 20px 60px rgba(0, 0, 0, 0.6),\n\t0 0 1px rgba(102, 126, 234, 0.3) inset;\n}\n\n@keyframes settingsPanelSlideIn {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: scale(0.95) translateY(20px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: scale(1) translateY(0);\n\t}\n}\n\n.settings > div {\n\theight: 650px;\n}\n\n.settings-left {\n\twidth: 240px;\n\tborder-right: 1px solid rgba(0, 0, 0, 0.08);\n\tbackground: linear-gradient(180deg, rgba(0, 0, 0, 0.02), rgba(0, 0, 0, 0.05));\n\tpadding: 20px 0;\n\toverflow-y: auto;\n}\n\nbody.dark-mode .settings-left {\n\tborder-right: 1px solid rgba(255, 255, 255, 0.1);\n\tbackground: linear-gradient(180deg, rgba(255, 255, 255, 0.02), rgba(255, 255, 255, 0.05));\n}\n\n.settings-category {\n\tmargin-bottom: 20px;\n}\n\n.settings-category:last-child {\n\tmargin-bottom: 0;\n}\n\n.settings-category-header {\n\tpadding: 12px 20px;\n\tfont-size: 0.7em;\n\tfont-weight: 800;\n\ttext-transform: uppercase;\n\tletter-spacing: 1.5px;\n\tcolor: #999;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tmargin-bottom: 4px;\n}\n\nbody.dark-mode .settings-category-header {\n\tcolor: #666;\n}\n\n.settings-category-header i {\n\tfont-size: 1.1em;\n\topacity: 0.7;\n}\n\n.settings-left-menu-item {\n\tpadding: 12px 20px;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tcursor: pointer;\n\ttransition: all 0.2s ease;\n\tmargin: 2px 12px;\n\tborder-radius: 10px;\n\tcolor: #444;\n\tfont-weight: 500;\n\tfont-size: 0.95em;\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n}\n\nbody.dark-mode .settings-left-menu-item {\n\tcolor: #c0c0c0;\n}\n\n.settings-left-menu-item i {\n\twidth: 20px;\n\tfont-size: 1.1em;\n\tcolor: #666;\n\ttransition: color 0.2s ease;\n}\n\nbody.dark-mode .settings-left-menu-item i {\n\tcolor: #888;\n}\n\n.settings-left-menu-item:hover {\n\tbackground: rgba(102, 126, 234, 0.08);\n\tcolor: #667eea;\n}\n\nbody.dark-mode .settings-left-menu-item:hover {\n\tbackground: rgba(102, 126, 234, 0.15);\n\tcolor: #8fa3ff;\n}\n\n.settings-left-menu-item:hover i {\n\tcolor: #667eea;\n}\n\nbody.dark-mode .settings-left-menu-item:hover i {\n\tcolor: #8fa3ff;\n}\n\n.settings-left-menu-item.selected {\n\tbackground: rgba(102, 126, 234, 0.12) !important;\n\tcolor: #667eea !important;\n\tfont-weight: 600;\n}\n\nbody.dark-mode .settings-left-menu-item.selected {\n\tbackground: rgba(102, 126, 234, 0.2) !important;\n\tcolor: #8fa3ff !important;\n\tbox-shadow: 0 0 20px rgba(102, 126, 234, 0.2);\n}\n\n.settings-left-menu-item.selected i {\n\tcolor: #667eea;\n}\n\nbody.dark-mode .settings-left-menu-item.selected i {\n\tcolor: #8fa3ff;\n}\n\n.settings-right {\n\tflex: 1;\n\toverflow-y: auto;\n\tpadding: 30px 40px;\n\tbackground: rgba(250, 250, 252, 0.5);\n}\n\nbody.dark-mode .settings-right {\n\tbackground: rgba(20, 22, 28, 0.5);\n}\n\n.settings-section {\n\tmargin-bottom: 30px;\n\tpadding: 25px;\n\tbackground: rgba(255, 255, 255, 0.8);\n\t-webkit-backdrop-filter: blur(10px);\n\tbackdrop-filter: blur(10px);\n\tborder-radius: 16px;\n\tborder: 1px solid rgba(0, 0, 0, 0.06);\n\tbox-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);\n}\n\nbody.dark-mode .settings-section {\n\tbackground: rgba(35, 38, 48, 0.8) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.08) !important;\n\tbox-shadow: 0 4px 20px rgba(0, 0, 0, 0.3) !important;\n}\n\n.settings-section-title {\n\tfont-size: 1.4em;\n\tmargin-bottom: 8px;\n\tfont-weight: 700;\n\tcolor: #1a1a1a;\n\tletter-spacing: -0.5px;\n}\n\nbody.dark-mode .settings-section-title {\n\tcolor: #e0e0e0;\n}\n\n.settings-section-desc {\n\tfont-size: 0.95em;\n\tmargin-bottom: 20px;\n\tcolor: #666;\n\tline-height: 1.6;\n}\n\nbody.dark-mode .settings-section-desc {\n\tcolor: #999;\n}\n\nbody.dark-mode .settings-section a {\n\tcolor: #8fa3ff;\n}\n\nbody.dark-mode .settings-section a:hover {\n\tcolor: #b0c0ff;\n}\n\n.stats-grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n\tgap: 16px;\n\tmargin-top: 20px;\n}\n\n.stat-card {\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.08) 0%, rgba(118, 75, 162, 0.08) 100%);\n\tpadding: 20px;\n\tborder-radius: 12px;\n\ttext-align: center;\n\tborder: 2px solid rgba(102, 126, 234, 0.15);\n\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\nbody.dark-mode .stat-card {\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.15) 0%, rgba(118, 75, 162, 0.15) 100%);\n\tborder: 2px solid rgba(102, 126, 234, 0.25);\n}\n\n.stat-card:hover {\n\ttransform: translateY(-4px);\n\tborder-color: rgba(102, 126, 234, 0.4);\n\tbox-shadow: 0 8px 24px rgba(102, 126, 234, 0.2);\n}\n\nbody.dark-mode .stat-card:hover {\n\tborder-color: rgba(102, 126, 234, 0.5);\n\tbox-shadow: 0 8px 24px rgba(102, 126, 234, 0.3);\n}\n\n.stat-value {\n\tfont-size: 2.2em;\n\tfont-weight: 700;\n\tbackground: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n\t-webkit-background-clip: text;\n\t-webkit-text-fill-color: transparent;\n\tbackground-clip: text;\n\tmargin-bottom: 8px;\n}\n\n.stat-label {\n\tfont-size: 0.95em;\n\tfont-weight: 600;\n\tcolor: #555;\n\tmargin-bottom: 4px;\n}\n\nbody.dark-mode .stat-label {\n\tcolor: #aaa;\n}\n\n.stat-sublabel {\n\tfont-size: 0.8em;\n\tcolor: #888;\n\tfont-style: italic;\n}\n\nbody.dark-mode .stat-sublabel {\n\tcolor: #777;\n}\n\n/* Color Palette Selector */\n.palette-selector {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(auto-fill, minmax(250px, 1fr));\n\tgap: 16px;\n\tmargin-top: 20px;\n}\n\n.palette-option {\n\tbackground: rgba(255, 255, 255, 0.5);\n\tborder: 2px solid rgba(0, 0, 0, 0.1);\n\tborder-radius: 12px;\n\tpadding: 16px;\n\tcursor: pointer;\n\ttransition: all 0.3s ease;\n}\n\nbody.dark-mode .palette-option {\n\tbackground: rgba(35, 38, 48, 0.5);\n\tborder: 2px solid rgba(255, 255, 255, 0.1);\n}\n\n.palette-option:hover {\n\ttransform: translateY(-2px);\n\tbox-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);\n\tborder-color: rgba(102, 126, 234, 0.5);\n}\n\n.palette-option.selected {\n\tborder-color: #667eea;\n\tborder-width: 3px;\n\tbackground: rgba(102, 126, 234, 0.1);\n}\n\nbody.dark-mode .palette-option.selected {\n\tbackground: rgba(102, 126, 234, 0.2);\n\tborder-color: #667eea;\n}\n\n.palette-preview {\n\tdisplay: flex;\n\tgap: 4px;\n\tmargin-bottom: 12px;\n\theight: 40px;\n\tborder-radius: 8px;\n\toverflow: hidden;\n\tpointer-events: none;\n}\n\n.palette-color {\n\tflex: 1;\n\ttransition: all 0.2s ease;\n}\n\n.palette-color:hover {\n\tflex: 1.5;\n}\n\n.palette-name {\n\ttext-align: center;\n\tfont-weight: 600;\n\tfont-size: 0.9em;\n\tcolor: #666;\n\tpointer-events: none;\n}\n\nbody.dark-mode .palette-name {\n\tcolor: #aaa;\n}\n\n.danger-button {\n\tbackground: linear-gradient(135deg, #ff5252 0%, #f44336 100%) !important;\n\tcolor: white !important;\n\tborder: none;\n\tpadding: 12px 24px;\n\tborder-radius: 10px;\n\tfont-weight: 600;\n\tfont-size: 0.95em;\n\tcursor: pointer;\n\ttransition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n\tbox-shadow: 0 4px 12px rgba(244, 67, 54, 0.3) !important;\n}\n\ndanger-button:hover {\n\ttransform: translateY(-2px);\n\tbox-shadow: 0 6px 16px rgba(244, 67, 54, 0.4) !important;\n}\n\ndanger-button:active {\n\ttransform: translateY(0);\n}\n\n.settings-compact-grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, 1fr);\n\tgap: 18px;\n\tmargin-bottom: 25px;\n}\n\n.settings-section.compact {\n\tmargin-bottom: 0;\n\tpadding: 18px;\n}\n\n.settings-section.compact .settings-section-title {\n\tfont-size: 1.05em;\n\tmargin-bottom: 5px;\n}\n\n.settings-section.compact .settings-section-desc {\n\tfont-size: 0.85em;\n\tmargin-bottom: 12px;\n}\n\n.settings-toggles-section {\n\tmargin-bottom: 30px;\n\tpadding: 20px;\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.08) 0%, rgba(118, 75, 162, 0.08) 100%);\n\t-webkit-backdrop-filter: blur(10px);\n\tbackdrop-filter: blur(10px);\n\tborder-radius: 16px;\n\tborder: 1px solid rgba(102, 126, 234, 0.2);\n}\n\nbody.dark-mode .settings-toggles-section {\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.15) 0%, rgba(118, 75, 162, 0.15) 100%);\n\tborder: 1px solid rgba(102, 126, 234, 0.3);\n}\n\n.settings-section-header {\n\tfont-size: 1.2em;\n\tfont-weight: 700;\n\tmargin-bottom: 15px;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 10px;\n\tcolor: #333;\n}\n\nbody.dark-mode .settings-section-header {\n\tcolor: #e8e8e8;\n}\n\n.settings-section-header-icon {\n\tfont-size: 1.3em;\n\tfilter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2));\n}\n\n.settings-section.inline {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 14px 16px;\n\tmargin-bottom: 12px;\n\tbackground: rgba(255, 255, 255, 0.6);\n}\n\nbody.dark-mode .settings-section.inline {\n\tbackground: rgba(35, 38, 48, 0.6) !important;\n}\n\n.settings-section.inline:last-child {\n\tmargin-bottom: 0;\n}\n\n.settings-section.inline .settings-section-content {\n\tflex: 1;\n}\n\n.settings-section.inline .settings-section-title {\n\tfont-size: 1em;\n\tmargin-bottom: 3px;\n}\n\n.settings-section.inline .settings-section-desc {\n\tfont-size: 0.82em;\n\tmargin-bottom: 0;\n}\n\n#settings-general-button:nth-child(1) {\n\tborder-top-left-radius: 8px;\n}\n\n#namespace-container {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n#namespace-container > div {\n\twidth: 200px;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 10px;\n\tmargin-bottom: 8px;\n}\n\n/* Custom checkbox styling */\n.ns-checkbox {\n\t-webkit-appearance: none;\n\tappearance: none;\n\twidth: 22px;\n\theight: 22px;\n\tborder: 2px solid rgba(102, 126, 234, 0.4);\n\tborder-radius: 6px;\n\tbackground: rgba(255, 255, 255, 0.8);\n\tcursor: pointer;\n\tposition: relative;\n\ttransition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n\tflex-shrink: 0;\n}\n\nbody.dark-mode .ns-checkbox {\n\tbackground: rgba(35, 38, 48, 0.8);\n\tborder: 2px solid rgba(102, 126, 234, 0.5);\n}\n\n.ns-checkbox:hover {\n\tborder-color: rgba(102, 126, 234, 0.7);\n\tbackground: rgba(255, 255, 255, 1);\n\ttransform: scale(1.08);\n}\n\nbody.dark-mode .ns-checkbox:hover {\n\tborder-color: rgba(102, 126, 234, 0.8);\n\tbackground: rgba(35, 38, 48, 1);\n}\n\n.ns-checkbox:checked {\n\tbackground: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n\tborder-color: rgba(102, 126, 234, 0.8);\n}\n\n.ns-checkbox:checked::after {\n\tcontent: \'✓\';\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tcolor: white;\n\tfont-size: 14px;\n\tfont-weight: bold;\n\ttext-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n}\n\n.ns-checkbox:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 4px rgba(102, 126, 234, 0.2);\n}\n\n#namespace-container label {\n\tcursor: pointer;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tfont-size: 0.95em;\n\tcolor: #333;\n\ttransition: color 0.2s;\n}\n\nbody.dark-mode #namespace-container label {\n\tcolor: #d5d5d5;\n}\n\n#namespace-container > div:hover label {\n\tcolor: #667eea;\n}\n\nbody.dark-mode #namespace-container > div:hover label {\n\tcolor: #8fa3ff;\n}\n\n.numeric-input-container {\n\tdisplay: flex;\n}\n\n.settings-toggle {\n\twidth: 60px;\n\theight: 32px;\n\tcursor: pointer;\n\tposition: relative;\n\tflex-shrink: 0;\n}\n\n.toggle-switch {\n\twidth: 100%;\n\theight: 100%;\n\tbackground: rgba(200, 200, 200, 0.6);\n\tborder-radius: 16px;\n\tposition: relative;\n\ttransition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n\tbox-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.15);\n\tborder: 2px solid rgba(0, 0, 0, 0.06);\n}\n\n.settings-toggle.active .toggle-switch {\n\tbackground: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n\tbox-shadow:\n\t0 4px 12px rgba(102, 126, 234, 0.4),\n\tinset 0 1px 2px rgba(255, 255, 255, 0.2);\n\tborder: 2px solid rgba(102, 126, 234, 0.3);\n}\n\n.toggle-slider {\n\twidth: 24px;\n\theight: 24px;\n\tbackground: white;\n\tborder-radius: 50%;\n\tposition: absolute;\n\ttop: 2px;\n\tleft: 2px;\n\ttransition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n\tbox-shadow: 0 3px 8px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.15);\n}\n\n.settings-toggle.active .toggle-slider {\n\tleft: 30px;\n\tbox-shadow: 0 4px 10px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n.settings-toggle:hover .toggle-switch {\n\ttransform: scale(1.02);\n}\n\nbody.dark-mode .toggle-switch {\n\tbackground: rgba(60, 63, 75, 0.8);\n\tbox-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.4);\n\tborder: 2px solid rgba(255, 255, 255, 0.08);\n}\n\nbody.dark-mode .settings-toggle.active .toggle-switch {\n\tbackground: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n\tbox-shadow:\n\t\t0 4px 12px rgba(102, 126, 234, 0.5),\n\t\tinset 0 1px 2px rgba(255, 255, 255, 0.2);\n\tborder: 2px solid rgba(102, 126, 234, 0.4);\n}\n\n.numeric-input-button {\n\twidth: 35px;\n\theight: 35px;\n\tfont-size: 1.3em;\n\tdisplay: flex !important;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\tborder-radius: 8px;\n\ttransition: all 0.2s ease;\n\tbackground: rgba(255, 255, 255, 0.6);\n\tborder: 1px solid rgba(0, 0, 0, 0.1);\n\tcolor: #444;\n}\n\nbody.dark-mode .numeric-input-button {\n\tbackground: rgba(50, 54, 66, 0.8);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\tcolor: #c0c0c0;\n}\n\n.numeric-input-button:hover {\n\tbackground: rgba(102, 126, 234, 0.1);\n\tborder-color: #667eea;\n\tcolor: #667eea;\n\ttransform: scale(1.05);\n}\n\nbody.dark-mode .numeric-input-button:hover {\n\tbackground: rgba(102, 126, 234, 0.2);\n\tborder-color: #8fa3ff;\n\tcolor: #8fa3ff;\n}\n\n.numeric-input {\n\tbackground: rgba(255, 255, 255, 0.8);\n\tborder: 1px solid rgba(0, 0, 0, 0.1);\n\tcolor: #333;\n\tfont-size: 1.1em;\n\tpadding: 6px 12px;\n\twidth: 100px;\n\tborder-radius: 8px;\n\tmargin: 0 5px;\n\ttransition: all 0.2s ease;\n}\n\nbody.dark-mode .numeric-input {\n\tbackground: rgba(50, 54, 66, 0.8);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\tcolor: #e0e0e0;\n}\n\n.numeric-input:focus {\n\tborder: 1px solid #667eea !important;\n\toutline: none;\n\tbox-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n\tbackground: white;\n}\n\nbody.dark-mode .numeric-input:focus {\n\tbackground: rgba(50, 54, 66, 1);\n\tbox-shadow: 0 0 0 3px rgba(102, 126, 234, 0.3);\n}\n\n/* Style number input arrows/spinners */\ninput[type="number"]::-webkit-inner-spin-button,\ninput[type="number"]::-webkit-outer-spin-button {\n\t-webkit-appearance: none;\n\tmargin: 0;\n}\n\ninput[type="number"] {\n\t-moz-appearance: textfield;\n\tappearance: textfield;\n}\n\n.audio-volume-input {\n\tposition: relative;\n}\n\n/* Custom number input with styled arrows */\n.audio-volume-input-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n}\n\n.audio-volume-input-arrows {\n\tposition: absolute;\n\tright: 2px;\n\ttop: 50%;\n\ttransform: translateY(-50%);\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 1px;\n}\n\n.audio-volume-input-arrow {\n\twidth: 20px;\n\theight: 14px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\tbackground: rgba(102, 126, 234, 0.1);\n\tborder-radius: 3px;\n\ttransition: all 0.2s ease;\n\tfont-size: 10px;\n\tcolor: #667eea;\n}\n\nbody.dark-mode .audio-volume-input-arrow {\n\tbackground: rgba(102, 126, 234, 0.15);\n\tcolor: #8898f0;\n}\n\n.audio-volume-input-arrow:hover {\n\tbackground: rgba(102, 126, 234, 0.25);\n\tcolor: #5568d3;\n}\n\nbody.dark-mode .audio-volume-input-arrow:hover {\n\tbackground: rgba(102, 126, 234, 0.3);\n\tcolor: #a0aef5;\n}\n\n.audio-volume-input-arrow:active {\n\tbackground: rgba(102, 126, 234, 0.4);\n\ttransform: scale(0.95);\n}\n\n/* Audio Volume Controls */\n.audio-volume-control {\n\tmargin: 20px 0;\n\tpadding: 20px;\n\tbackground: rgba(255, 255, 255, 0.6);\n\tborder: 1px solid rgba(0, 0, 0, 0.08);\n\tborder-radius: 12px;\n\ttransition: all 0.2s ease;\n}\n\nbody.dark-mode .audio-volume-control {\n\tbackground: rgba(40, 43, 52, 0.7);\n\tborder: 1px solid rgba(255, 255, 255, 0.08);\n}\n\n.audio-volume-control:hover {\n\tbackground: rgba(255, 255, 255, 0.8);\n\tborder-color: rgba(102, 126, 234, 0.2);\n\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n}\n\nbody.dark-mode .audio-volume-control:hover {\n\tbackground: rgba(40, 43, 52, 0.9);\n\tborder-color: rgba(102, 126, 234, 0.3);\n\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);\n}\n\n.audio-control-header {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: flex-start;\n\tmargin-bottom: 16px;\n\tgap: 20px;\n}\n\n.audio-control-info {\n\tflex: 1;\n}\n\n.audio-control-title {\n\tfont-size: 1.05em;\n\tfont-weight: 600;\n\tcolor: #1a1a1a;\n\tmargin-bottom: 6px;\n}\n\nbody.dark-mode .audio-control-title {\n\tcolor: #e0e0e0;\n}\n\n.audio-control-desc {\n\tfont-size: 0.9em;\n\tcolor: #666;\n\tline-height: 1.4;\n}\n\nbody.dark-mode .audio-control-desc {\n\tcolor: #999;\n}\n\n.audio-preview-button {\n\tpadding: 10px 18px;\n\tbackground: linear-gradient(135deg, #667eea, #764ba2);\n\tcolor: white;\n\tborder: none;\n\tborder-radius: 8px;\n\tfont-size: 0.9em;\n\tfont-weight: 500;\n\tcursor: pointer;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\ttransition: all 0.2s ease;\n\twhite-space: nowrap;\n\tbox-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);\n}\n\n.audio-preview-button:hover {\n\tbackground: linear-gradient(135deg, #5568d3, #6a3f8f);\n\tbox-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);\n\ttransform: translateY(-1px);\n}\n\n.audio-preview-button:active {\n\ttransform: translateY(0);\n\tbox-shadow: 0 2px 6px rgba(102, 126, 234, 0.3);\n}\n\n.audio-control-slider-container {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 16px;\n}\n\n.audio-volume-slider {\n\tflex: 1;\n\theight: 6px;\n\tbackground: rgba(0, 0, 0, 0.1);\n\tborder-radius: 3px;\n\toutline: none;\n\t-webkit-appearance: none;\n\tappearance: none;\n}\n\nbody.dark-mode .audio-volume-slider {\n\tbackground: rgba(255, 255, 255, 0.1);\n}\n\n.audio-volume-slider::-webkit-slider-thumb {\n\t-webkit-appearance: none;\n\tappearance: none;\n\twidth: 18px;\n\theight: 18px;\n\tbackground: linear-gradient(135deg, #667eea, #764ba2);\n\tborder-radius: 50%;\n\tcursor: pointer;\n\tbox-shadow: 0 2px 6px rgba(102, 126, 234, 0.3);\n\ttransition: all 0.2s ease;\n}\n\n.audio-volume-slider::-webkit-slider-thumb:hover {\n\ttransform: scale(1.15);\n\tbox-shadow: 0 3px 10px rgba(102, 126, 234, 0.5);\n}\n\n.audio-volume-slider::-moz-range-thumb {\n\twidth: 18px;\n\theight: 18px;\n\tbackground: linear-gradient(135deg, #667eea, #764ba2);\n\tborder-radius: 50%;\n\tcursor: pointer;\n\tborder: none;\n\tbox-shadow: 0 2px 6px rgba(102, 126, 234, 0.3);\n\ttransition: all 0.2s ease;\n}\n\n.audio-volume-slider::-moz-range-thumb:hover {\n\ttransform: scale(1.15);\n\tbox-shadow: 0 3px 10px rgba(102, 126, 234, 0.5);\n}\n\n.audio-volume-input {\n\twidth: 70px;\n\tpadding: 8px 12px;\n\tbackground: rgba(255, 255, 255, 0.8);\n\tborder: 1px solid rgba(0, 0, 0, 0.1);\n\tborder-radius: 8px;\n\tcolor: #333;\n\tfont-size: 0.95em;\n\ttext-align: center;\n\ttransition: all 0.2s ease;\n}\n\nbody.dark-mode .audio-volume-input {\n\tbackground: rgba(50, 54, 66, 0.8);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\tcolor: #e0e0e0;\n}\n\n.audio-volume-input:focus {\n\tborder: 1px solid #667eea;\n\toutline: none;\n\tbox-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n\tbackground: white;\n}\n\nbody.dark-mode .audio-volume-input:focus {\n\tbackground: rgba(50, 54, 66, 1);\n\tbox-shadow: 0 0 0 3px rgba(102, 126, 234, 0.3);\n}\n\n/* Sound selector dropdown */\n.audio-sound-selector {\n\tpadding: 8px 12px;\n\tbackground: rgba(255, 255, 255, 0.8);\n\tborder: 1px solid rgba(0, 0, 0, 0.1);\n\tborder-radius: 8px;\n\tcolor: #333;\n\tfont-size: 0.95em;\n\tcursor: pointer;\n\ttransition: all 0.2s ease;\n\twidth: 100%;\n\tmargin-top: 12px;\n}\n\nbody.dark-mode .audio-sound-selector {\n\tbackground: rgba(50, 54, 66, 0.8);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\tcolor: #e0e0e0;\n}\n\n.audio-sound-selector:hover {\n\tborder-color: #667eea;\n\tbackground: rgba(255, 255, 255, 1);\n}\n\nbody.dark-mode .audio-sound-selector:hover {\n\tbackground: rgba(50, 54, 66, 1);\n\tborder-color: #667eea;\n}\n\n.audio-sound-selector:focus {\n\tborder: 1px solid #667eea;\n\toutline: none;\n\tbox-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\nbody.dark-mode .audio-sound-selector:focus {\n\tbox-shadow: 0 0 0 3px rgba(102, 126, 234, 0.3);\n}\n\n#sound-volumes-container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0;\n}\n\n#sound-volumes-container .audio-volume-control:last-child {\n\tmargin-bottom: 0;\n}\n\n.control-container {\n\tbackground: rgba(255, 255, 255, 0.6);\n\tborder: 1px solid rgba(0, 0, 0, 0.08);\n\tpadding: 18px 22px;\n\tborder-radius: 12px;\n\tfont-size: 0.9em;\n\tmargin-bottom: 15px;\n\ttransition: all 0.2s ease;\n}\n\nbody.dark-mode .control-container {\n\tbackground: rgba(40, 43, 52, 0.7);\n\tborder: 1px solid rgba(255, 255, 255, 0.08);\n}\n\n.control-container:hover {\n\tbackground: rgba(255, 255, 255, 0.8);\n\tborder-color: rgba(102, 126, 234, 0.2);\n\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n}\n\nbody.dark-mode .control-container:hover {\n\tbackground: rgba(40, 43, 52, 0.9);\n\tborder-color: rgba(102, 126, 234, 0.3);\n\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);\n}\n\n.control-container-title {\n\tfont-size: 1.1em;\n\tfont-weight: 600;\n\tcolor: #1a1a1a;\n\tmargin-bottom: 12px;\n}\n\nbody.dark-mode .control-container-title {\n\tcolor: #e0e0e0;\n}\n\n.control-action {\n\tmargin-top: 12px;\n\tpadding: 0 0 0 16px;\n\tborder-left: 2px solid rgba(102, 126, 234, 0.3);\n}\n\nbody.dark-mode .control-action {\n\tborder-left-color: rgba(102, 126, 234, 0.5);\n}\n\n.control-action-title {\n\tcolor: #666;\n\tmargin-bottom: 8px;\n\tfont-weight: 500;\n}\n\nbody.dark-mode .control-action-title {\n\tcolor: #999;\n}\n\n.control-action-title span {\n\tmargin-right: 5px;\n}\n\n.control-action-title-left span {\n\twidth: 17px;\n}\n\n.control-action-title-left select {\n\tmargin: 0 5px;\n\tbackground: rgba(255, 255, 255, 0.8);\n\tborder: 1px solid rgba(0, 0, 0, 0.1);\n\tcolor: #333;\n\tpadding: 6px 10px;\n\tborder-radius: 6px;\n\ttransition: all 0.2s ease;\n}\n\nbody.dark-mode .control-action-title-left select {\n\tbackground: rgba(50, 54, 66, 0.8);\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\tcolor: #e0e0e0;\n}\n\n.control-action-title-left select:focus {\n\toutline: none;\n\tborder-color: #667eea;\n\tbox-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\nbody.dark-mode .control-action-title-left select:focus {\n\tbox-shadow: 0 0 0 3px rgba(102, 126, 234, 0.3);\n}\n\n.control-keys {\n\tdisplay: flex;\n\tgap: 8px;\n\tflex-wrap: wrap;\n}\n\n.control-keys > div {\n\tdisplay: flex;\n\talign-items: center;\n\tbackground: rgba(255, 255, 255, 0.9);\n\tborder: 1px solid rgba(0, 0, 0, 0.1);\n\twidth: max-content;\n\tpadding: 8px 14px;\n\tborder-radius: 8px;\n\tcolor: #444;\n\tfont-weight: 500;\n\ttransition: all 0.2s ease;\n\tbox-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);\n}\n\nbody.dark-mode .control-keys > div {\n\tbackground: rgba(50, 54, 66, 0.9);\n\tborder: 1px solid rgba(255, 255, 255, 0.15);\n\tcolor: #c0c0c0;\n\tbox-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);\n}\n\n.control-keys > div:hover {\n\tbackground: white;\n\tborder-color: #667eea;\n\tbox-shadow: 0 4px 12px rgba(102, 126, 234, 0.15);\n\ttransform: translateY(-1px);\n}\n\nbody.dark-mode .control-keys > div:hover {\n\tbackground: rgba(60, 64, 76, 1);\n\tborder-color: #8fa3ff;\n\tbox-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);\n}\n\n.control-keys > div:hover {\n\tborder-color: rgba(0, 0, 0, 0.25);\n\tbox-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);\n}\n\n.control-keys .remove {\n\tcursor: pointer;\n}\n\n.key-elem-title {\n\tmargin-right: 10px;\n}\n\n.key-select {\n\tfont-style: italic;\n\tborder: 2px solid #8989ec !important;\n}\n\n.key-duplicate {\n\tborder: 2px solid red !important;\n}\n\n.control-action-title {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n}\n\n.control-action-title-right {\n\tdisplay: flex;\n}\n\n.control-action-title-right span {\n\tfont-size: 1.2em;\n\twidth: 30px;\n\theight: 30px;\n\tmargin-right: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\tborder-radius: 5px;\n\ttransition: 0.1s;\n}\n\n.control-action-title-right span:hover {\n\tbackground: #eaeaea;\n}\n\n.add-action-button {\n\twidth: max-content;\n\tborder: 1px solid rgba(0, 0, 0, 0.15);\n\tpadding: 8px 16px;\n\tborder-radius: 8px;\n\tbackground: linear-gradient(to bottom, #ffffff, #f5f5f5);\n\tcursor: pointer;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\ttransition: all 0.2s ease;\n\tfont-weight: 500;\n\tbox-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);\n}\n\n.add-action-button:hover {\n\tborder-color: rgba(0, 0, 0, 0.2);\n\ttransform: translateY(-1px);\n\tbox-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);\n}\n\n.add-action-button:active {\n\ttransform: translateY(0);\n\tbox-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);\n}\n\n.add-action-button:hover {\n\tbackground: linear-gradient(to bottom, #ffffff, #f0f0f0);\n\ttransform: translateY(-1px);\n\tbox-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);\n}\n\n.add-action-button:active {\n\ttransform: translateY(0);\n\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n.add-action-container {\n\tdisplay: flex;\n}\n\n.cancel-button, .create-button {\n\tmargin-left: 5px;\n}\n\n.control-delete {\n\tcolor: red;\n}\n\n.control-bottom-container {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tmargin-top: 10px;\n}\n\n.new-control-script {\n\tfont-size: 0.9em;\n}\n\n.new-control-script span {\n\tmargin-right: 5px;\n}\n\n.action-parameter {\n\tmargin-left: 26px;\n\tdisplay: inline-block;\n}\n\n.parameter-title {\n\tmargin: 5px 0 2px 0;\n\tfont-size: 0.9em;\n}\n\n.user-input-container {\n\tdisplay: flex;\n\tgap: 12px;\n\tmargin-top: 18px;\n\tpadding: 16px;\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.08) 0%, rgba(118, 75, 162, 0.08) 100%);\n\tborder-radius: 12px;\n\tborder: 2px dashed rgba(102, 126, 234, 0.25);\n}\n\nbody.dark-mode .user-input-container {\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.15) 0%, rgba(118, 75, 162, 0.15) 100%);\n\tborder: 2px dashed rgba(102, 126, 234, 0.35);\n}\n\n.username-input {\n\tflex: 1;\n\tpadding: 10px 16px;\n\tborder: 2px solid rgba(102, 126, 234, 0.3);\n\tborder-radius: 10px;\n\tfont-size: 0.95em;\n\tbackground: rgba(255, 255, 255, 0.9);\n\ttransition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n\toutline: none;\n}\n\n.username-input:focus {\n\tborder-color: rgba(102, 126, 234, 0.6);\n\tbox-shadow: 0 0 0 4px rgba(102, 126, 234, 0.15);\n\tbackground: white;\n}\n\nbody.dark-mode .username-input {\n\tbackground: rgba(35, 38, 48, 0.9);\n\tborder: 2px solid rgba(102, 126, 234, 0.4);\n\tcolor: #e8e8e8;\n}\n\nbody.dark-mode .username-input:focus {\n\tborder-color: rgba(102, 126, 234, 0.7);\n\tbox-shadow: 0 0 0 4px rgba(102, 126, 234, 0.2);\n\tbackground: rgba(35, 38, 48, 1);\n}\n\n.add-user-button {\n\tpadding: 10px 24px;\n\tbackground: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n\tcolor: white;\n\tborder: none;\n\tborder-radius: 10px;\n\tfont-weight: 600;\n\tfont-size: 0.95em;\n\tcursor: pointer;\n\ttransition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);\n\twhite-space: nowrap;\n\tflex-shrink: 0;\n}\n\n.add-user-button:hover {\n\ttransform: translateY(-2px);\n\tbox-shadow: 0 6px 16px rgba(102, 126, 234, 0.4);\n}\n\n.add-user-button:active {\n\ttransform: translateY(0);\n}\n\n.user-container > div {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tborder: 1px solid rgba(0, 0, 0, 0.1);\n\tborder-radius: 8px;\n\tpadding: 8px 8px 8px 15px;\n\tmargin-bottom: 8px;\n\tbackground: rgba(0, 0, 0, 0.02);\n\ttransition: all 0.2s ease;\n}\n\n.user-container > div:hover {\n\tbackground: rgba(0, 0, 0, 0.04);\n\tborder-color: rgba(0, 0, 0, 0.15);\n\ttransform: translateX(2px);\n}\n\n.user-container a {\n\tcolor: black;\n\ttext-decoration: none;\n}\n\n.queue-edit-user-highlight {\n\tcolor: #d4a400 !important;\n\tfont-weight: 600 !important;\n\tbackground: none !important;\n\t-webkit-backdrop-filter: none !important;\n\tbackdrop-filter: none !important;\n\tborder: none !important;\n\tpadding: 0 !important;\n\tborder-radius: 0 !important;\n\tbox-shadow: none !important;\n}\n\n.queue-edit-user-highlight .queue-edit-icon {\n\tcolor: #d4a400 !important;\n}\n\n.queue-edit-user-empty-talk {\n\tcolor: #d63031 !important;\n\tfont-weight: 600 !important;\n\tbackground: none !important;\n\t-webkit-backdrop-filter: none !important;\n\tbackdrop-filter: none !important;\n\tborder: none !important;\n\tpadding: 0 !important;\n\tborder-radius: 0 !important;\n\tbox-shadow: none !important;\n}\n\n.queue-edit-user-empty-talk .queue-edit-icon {\n\tcolor: #d63031 !important;\n}\n\n/* Special highlight for edits that mention current user */\n.queue-edit-mentions-me {\n\tborder: 2px solid #667eea !important;\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.15) 0%, rgba(118, 75, 162, 0.15) 100%) !important;\n\tbox-shadow: 0 0 20px rgba(102, 126, 234, 0.3), 0 4px 16px rgba(0, 0, 0, 0.1) !important;\n\tanimation: pulse-mention 2s ease-in-out infinite !important;\n}\n\nbody.dark-mode .queue-edit-mentions-me {\n\tborder: 2px solid #8fa3ff !important;\n\tbackground: linear-gradient(135deg, rgba(143, 163, 255, 0.2) 0%, rgba(168, 85, 247, 0.2) 100%) !important;\n\tbox-shadow: 0 0 20px rgba(143, 163, 255, 0.4), 0 4px 16px rgba(0, 0, 0, 0.3) !important;\n}\n\n.queue-edit-mentions-me:hover {\n\tborder-color: #764ba2 !important;\n\tbox-shadow: 0 0 25px rgba(118, 75, 162, 0.5), 0 6px 20px rgba(0, 0, 0, 0.15) !important;\n}\n\nbody.dark-mode .queue-edit-mentions-me:hover {\n\tborder-color: #a855f7 !important;\n\tbox-shadow: 0 0 25px rgba(168, 85, 247, 0.6), 0 6px 20px rgba(0, 0, 0, 0.4) !important;\n}\n\n@keyframes pulse-mention {\n\t0%, 100% {\n\t\tbox-shadow: 0 0 20px rgba(143, 163, 255, 0.4), 0 4px 16px rgba(0, 0, 0, 0.3);\n\t}\n\t50% {\n\t\tbox-shadow: 0 0 30px rgba(143, 163, 255, 0.6), 0 6px 20px rgba(0, 0, 0, 0.4);\n\t}\n}\n\n#progress-bar-container {\n\tposition: absolute;\n\ttop: calc(100% - 120px);\n\theight: 40px;\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\talign-items: center;\n\twidth: 100%;\n\tpadding: 0px 20px;\n}\n\n.progress-bar {\n\tborder-radius: 16px;\n\twidth: 180px;\n\theight: 32px;\n\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.1), rgba(118, 75, 162, 0.1));\n\t-webkit-backdrop-filter: blur(12px);\n\tbackdrop-filter: blur(12px);\n\tfont-size: 0.85em;\n\tfont-weight: 500;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tposition: relative;\n\tmargin-left: 10px;\n\topacity: 1;\n\ttransition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n\toverflow: hidden;\n\tborder: 1px solid rgba(102, 126, 234, 0.2);\n\tbox-shadow: 0 4px 16px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.progress-bar-overlay {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tborder-radius: 16px;\n\twidth: 0px;\n\ttransition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n\theight: 100%;\n\tbackground: linear-gradient(90deg,\n\trgba(102, 126, 234, 0.4),\n\trgba(118, 75, 162, 0.4));\n\tbox-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.2);\n}\n\n.progress-bar-text {\n\tposition: relative;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tpadding: 0 12px;\n\tmax-width: 100%;\n\tcolor: #ffffff;\n\ttext-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n\n.changelog {\n\twidth: 100%;\n\tmargin: 20px 20px 0 20px;\n\n\tfont-size: 0.9em;\n\tline-height: 1.6em;\n}\n\n.settings-appearance-box {\n\tdisplay: inline-flex;\n\twidth: 160px;\n\theight: 70px;\n\tjustify-content: center;\n\talign-items: center;\n\tborder-radius: 12px;\n\tmargin: 10px 10px 0 0;\n\tcursor: pointer;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\ttransition: all 0.2s ease;\n\tfont-weight: 600;\n\tfont-size: 1em;\n\tborder: 2px solid rgba(0, 0, 0, 0.08);\n\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n}\n\nbody.dark-mode .settings-appearance-box {\n\tborder: 2px solid rgba(255, 255, 255, 0.1);\n\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n}\n\n.settings-appearance-box:hover {\n\ttransform: translateY(-3px);\n\tbox-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);\n\tborder-color: #667eea;\n}\n\nbody.dark-mode .settings-appearance-box:hover {\n\tbox-shadow: 0 8px 20px rgba(0, 0, 0, 0.5);\n\tborder-color: #8fa3ff;\n}\n\n#box-light {\n\tbackground: linear-gradient(135deg, #ffffff, #f5f5f5);\n\tcolor: #333 !important;\n}\n#box-light > div {\n\tcolor: #333 !important;\n}\n\n#box-dark {\n\tbackground: linear-gradient(135deg, #2a2d3a, #1f2229);\n\tcolor: white;\n}\n\n.add-action-button {\n\twidth: max-content;\n\tborder: 1px solid rgba(0, 0, 0, 0.15);\n\tpadding: 8px 16px;\n\tborder-radius: 8px;\n\tbackground: linear-gradient(to bottom, #ffffff, #f5f5f5);\n\tcursor: pointer;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\ttransition: all 0.2s ease;\n\tfont-weight: 500;\n\tbox-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);\n}\n\nbody.dark-mode .add-action-button {\n\tborder: 1px solid rgba(255, 255, 255, 0.15);\n\tbackground: linear-gradient(to bottom, #3a3d4a, #2f323e);\n\tcolor: #e0e0e0;\n\tbox-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);\n}\n\n.add-action-button:hover {\n\tborder-color: rgba(0, 0, 0, 0.2);\n\ttransform: translateY(-1px);\n\tbox-shadow: 0 3px 10px rgba(0, 0, 0, 0.12);\n\tbackground: linear-gradient(to bottom, #ffffff, #f0f0f0);\n}\n\nbody.dark-mode .add-action-button:hover {\n\tborder-color: rgba(102, 126, 234, 0.5);\n\tbox-shadow: 0 3px 10px rgba(0, 0, 0, 0.5);\n\tbackground: linear-gradient(to bottom, #4a4d5a, #3f424e);\n}\n\n.add-action-button:active {\n\ttransform: translateY(0);\n\tbox-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);\n}\n\n.control-action-title-right span:hover {\n\tbackground: #eaeaea;\n}\n\nbody.dark-mode .control-action-title-right span:hover {\n\tbackground: rgba(255, 255, 255, 0.1);\n}\n\n.user-container > div {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tborder: 1px solid rgba(0, 0, 0, 0.1);\n\tborder-radius: 8px;\n\tpadding: 8px 8px 8px 15px;\n\tmargin-bottom: 8px;\n\tbackground: rgba(0, 0, 0, 0.02);\n\ttransition: all 0.2s ease;\n}\n\nbody.dark-mode .user-container > div {\n\tborder: 1px solid rgba(255, 255, 255, 0.1);\n\tbackground: rgba(255, 255, 255, 0.03);\n}\n\n.user-container > div:hover {\n\tbackground: rgba(0, 0, 0, 0.04);\n\tborder-color: rgba(0, 0, 0, 0.15);\n\ttransform: translateX(2px);\n}\n\nbody.dark-mode .user-container > div:hover {\n\tbackground: rgba(255, 255, 255, 0.06);\n\tborder-color: rgba(255, 255, 255, 0.15);\n}\n\n.user-container a {\n\tcolor: black;\n\ttext-decoration: none;\n}\n\nbody.dark-mode .user-container a {\n\tcolor: #c0c0c0;\n}\n\n::-webkit-scrollbar {\n\twidth: 10px;\n}\n\n::-webkit-scrollbar-track {\n\tbackground: rgba(0, 0, 0, 0.03);\n\tborder-radius: 10px;\n}\n\nbody.dark-mode ::-webkit-scrollbar-track {\n\tbackground: rgba(255, 255, 255, 0.03);\n}\n\n::-webkit-scrollbar-thumb {\n\tbackground: rgba(0, 0, 0, 0.15);\n\tborder-radius: 10px;\n\ttransition: all 0.2s ease;\n}\n\nbody.dark-mode ::-webkit-scrollbar-thumb {\n\tbackground: rgba(255, 255, 255, 0.2);\n}\n\n::-webkit-scrollbar-thumb:hover {\n\tbackground: rgba(102, 126, 234, 0.4);\n}\n\nbody.dark-mode ::-webkit-scrollbar-thumb:hover {\n\tbackground: rgba(102, 126, 234, 0.6);\n}\n\n.settings-right::-webkit-scrollbar-track {\n\tbackground: transparent;\n}'},103:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.WhitelistSettings=e.VolumeControl=e.UserList=e.Toggle=e.StatisticsSettings=e.SettingsSection=e.SettingsCompactGrid=e.NumericInput=e.ImportExportSettings=e.HighlightedSettings=e.GeneralSettings=e.AudioSettings=e.AppearanceSettings=e.AboutSettings=e.AISettings=void 0;var i=n(172),o=n(201);function a(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class s extends i.Component{render(){const{value:t,onChange:e,label:n,description:i}=this.props;return(0,o.jsx)("div",{class:"settings-toggle "+(t?"active":""),onClick:()=>e(!t),children:(0,o.jsx)("div",{class:"toggle-switch",children:(0,o.jsx)("div",{class:"toggle-slider"})})})}}e.Toggle=s;class r extends i.Component{constructor(t){super(t),a(this,"handleMinus",()=>{const{min:t,step:e,onChange:n}=this.props,i=Number(this.state.inputValue),o=Math.round(100*Math.max(i-e,t))/100;this.setState({inputValue:o}),n(o)}),a(this,"handlePlus",()=>{const{max:t,step:e,onChange:n}=this.props,i=Number(this.state.inputValue),o=Math.round(100*Math.min(i+e,t))/100;this.setState({inputValue:o}),n(o)}),a(this,"handleInputChange",()=>{const{min:t,max:e,step:n,onChange:i}=this.props,{inputValue:o}=this.state;if(isNaN(Number(o)))return void this.setState({inputValue:this.props.value});let a=Math.round(100*Math.min(Math.max(Number(o),t),e))/100;a=n>=1?Math.round(a):a,this.setState({inputValue:a}),i(a)}),a(this,"handleKeyUp",t=>{"enter"===t.key.toLowerCase()&&(this.handleInputChange(),t.target.blur())}),this.state={inputValue:t.value}}componentDidUpdate(t){t.value!==this.props.value&&this.setState({inputValue:this.props.value})}render(){const{inputValue:t}=this.state;return(0,o.jsxs)("div",{class:"numeric-input-container",children:[(0,o.jsx)("span",{class:"fa fa-minus numeric-input-button",onClick:this.handleMinus}),(0,o.jsx)("input",{type:"text",class:"numeric-input",value:t,onInput:t=>this.setState({inputValue:t.target.value}),onBlur:this.handleInputChange,onKeyUp:this.handleKeyUp}),(0,o.jsx)("span",{class:"fa fa-plus numeric-input-button",onClick:this.handlePlus})]})}}e.NumericInput=r;class l extends i.Component{constructor(t){super(t),a(this,"playSound",()=>{const{playFunction:t}=this.props;t&&t()}),this.state={currentSound:t.currentSound||t.triggerKey}}render(){const{title:t,description:e,value:n,soundOptions:i,onVolumeChange:a,onSoundChange:s,sounds:r}=this.props,{currentSound:l}=this.state;return(0,o.jsxs)("div",{class:"audio-volume-control",children:[(0,o.jsxs)("div",{class:"volume-control-header",children:[(0,o.jsxs)("div",{class:"volume-control-info",children:[(0,o.jsx)("div",{class:"volume-control-title",children:t}),(0,o.jsx)("div",{class:"volume-control-desc",children:e})]}),(0,o.jsx)("button",{class:"volume-control-preview",onClick:this.playSound,title:"Preview sound",children:(0,o.jsx)("span",{class:"fa fa-play"})})]}),(0,o.jsxs)("div",{class:"volume-control-main",children:[(0,o.jsx)("select",{class:"volume-control-sound-select",value:l,onChange:t=>{this.setState({currentSound:t.target.value}),s(t.target.value)},children:i}),(0,o.jsxs)("div",{class:"volume-control-slider-container",children:[(0,o.jsx)("span",{class:"fa fa-volume-down"}),(0,o.jsx)("input",{type:"range",class:"volume-control-slider",min:"0",max:"1",step:"0.01",value:n,onInput:t=>a(parseFloat(t.target.value))}),(0,o.jsx)("span",{class:"fa fa-volume-up"}),(0,o.jsxs)("span",{class:"volume-control-value",children:[Math.round(100*n),"%"]})]})]})]})}}e.VolumeControl=l;class d extends i.Component{render(){const{title:t,description:e,compact:n,children:i,id:a}=this.props;return(0,o.jsxs)("div",{class:"settings-section "+(n?"compact":""),id:a,children:[t&&(0,o.jsx)("div",{class:"settings-section-title",children:t}),e&&(0,o.jsx)("div",{class:"settings-section-desc",children:e}),i]})}}e.SettingsSection=d;class c extends i.Component{render(){return(0,o.jsx)("div",{class:"settings-compact-grid",children:this.props.children})}}e.SettingsCompactGrid=c;class u extends i.Component{render(){const{maxEditCount:t,maxQueueSize:e,minOresScore:n,watchlistExpiry:i,highlightedExpiry:a,namespaces:l,selectedNamespaces:u,enableUsernameHighlighting:p,onMaxEditCountChange:h,onMaxQueueSizeChange:m,onMinOresScoreChange:g,onWatchlistExpiryChange:b,onHighlightedExpiryChange:f,onNamespaceToggle:v,onUsernameHighlightingChange:x}=this.props;return(0,o.jsxs)("div",{children:[(0,o.jsxs)(c,{children:[(0,o.jsx)(d,{compact:!0,id:"maximum-edit-count",title:"Maximum edit count",description:"Edits from users with more than this edit count will not be shown",children:(0,o.jsx)(r,{value:t,min:0,max:1e5,step:100,onChange:h})}),(0,o.jsx)(d,{compact:!0,id:"maximum-queue-size",title:"Maximum queue size",description:"The queue will not load additional edits after reaching this size",children:(0,o.jsx)(r,{value:e,min:1,max:500,step:1,onChange:m})}),(0,o.jsx)(d,{compact:!0,id:"minimum-ores-score",title:"Minimum ORES score",description:(0,o.jsxs)("span",{children:["Edits with an ",(0,o.jsx)("a",{href:"https://www.mediawiki.org/wiki/ORES",target:"_blank",children:"ORES score"})," below this threshold will not be shown"]}),children:(0,o.jsx)(r,{value:n,min:0,max:1,step:.01,onChange:g})})]}),(0,o.jsx)(d,{title:"Expiries",children:(0,o.jsxs)(c,{children:[(0,o.jsx)(d,{compact:!0,id:"watchlist-expiry",title:"Watchlist expiry for warned users",description:"How long to watch user talk pages after issuing warnings",children:(0,o.jsxs)("select",{value:i,onChange:t=>b(t.target.value),children:[(0,o.jsx)("option",{value:"none",children:"None"}),(0,o.jsx)("option",{value:"1 hour",children:"1 hour"}),(0,o.jsx)("option",{value:"1 day",children:"1 day"}),(0,o.jsx)("option",{value:"1 week",children:"1 week"}),(0,o.jsx)("option",{value:"1 month",children:"1 month"}),(0,o.jsx)("option",{value:"3 months",children:"3 months"}),(0,o.jsx)("option",{value:"6 months",children:"6 months"}),(0,o.jsx)("option",{value:"indefinite",children:"Indefinite"})]})}),(0,o.jsx)(d,{compact:!0,id:"highlighted-expiry",title:"Highlighted user expiry",description:"How long to keep users highlighted before expiration",children:(0,o.jsxs)("select",{value:a,onChange:t=>f(t.target.value),children:[(0,o.jsx)("option",{value:"none",children:"None"}),(0,o.jsx)("option",{value:"1 hour",children:"1 hour"}),(0,o.jsx)("option",{value:"1 day",children:"1 day"}),(0,o.jsx)("option",{value:"1 week",children:"1 week"}),(0,o.jsx)("option",{value:"1 month",children:"1 month"}),(0,o.jsx)("option",{value:"3 months",children:"3 months"}),(0,o.jsx)("option",{value:"6 months",children:"6 months"}),(0,o.jsx)("option",{value:"indefinite",children:"Indefinite"})]})})]})}),(0,o.jsx)(d,{title:"Namespaces to show",description:"Only edits from the selected namespaces will be shown in your queue.",children:(0,o.jsx)("div",{id:"namespace-container",children:Object.entries(l).map(([t,e])=>(0,o.jsx)("div",{class:"namespace-item",children:(0,o.jsxs)("label",{children:[(0,o.jsx)("input",{type:"checkbox",checked:u.includes(parseInt(t)),onChange:e=>v(parseInt(t),e.target.checked)}),(0,o.jsx)("span",{class:"namespace-label",children:e.name})]})},t))})}),(0,o.jsx)(d,{title:"Username Highlighting",description:"Highlight edits that contain your username in the diff",children:(0,o.jsx)(s,{value:p,onChange:x})})]})}}e.GeneralSettings=u;class p extends i.Component{render(){const{volumes:t,soundMappings:e,sounds:n,onVolumeChange:i,onSoundChange:a,playSound:s}=this.props,r={};Object.entries(n).forEach(([t,e])=>{const n=e.category||"other";r[n]||(r[n]=[]),r[n].push({key:t,sound:e})});const c=["ui","alert","warning","action","notification","positive","negative","other"],u={ui:"UI Sounds",alert:"Alerts",warning:"Warnings",action:"Actions",notification:"Notifications",positive:"Positive",negative:"Negative",other:"Other"},p=(()=>{const t=[];return t.push((0,o.jsx)("option",{value:"none",children:"🔇 Disabled"})),c.forEach(e=>{if(r[e]){const n=r[e].map(({key:t,sound:e})=>(0,o.jsxs)("option",{value:t,children:[e.icon||"🔊"," ",e.name||t]},t));t.push((0,o.jsx)("optgroup",{label:u[e]||e,children:n},e))}}),t})();return(0,o.jsx)("div",{children:(0,o.jsx)(d,{title:"Audio Controls",description:"Configure volume and sounds for different actions",children:[{key:"click",title:"Button Click Sound",description:"Played when clicking buttons"},{key:"alert",title:"Alert Sound",description:"Played for important alerts"},{key:"sparkle",title:"Sparkle Sound",description:"Played for positive actions"},{key:"error",title:"Error Sound",description:"Played when an error occurs"},{key:"notification",title:"Notification Sound",description:"Played for new notifications"},{key:"warning",title:"Warning Sound",description:"Played when issuing warnings"},{key:"rollback",title:"Rollback Sound",description:"Played when rolling back edits"},{key:"queue",title:"Queue Update Sound",description:"Played when the queue updates"}].map(({key:r,title:d,description:c})=>{var u;return(0,o.jsx)(l,{triggerKey:r,title:d,description:c,value:null!==(u=t[r])&&void 0!==u?u:.5,currentSound:e[r]||r,soundOptions:p,sounds:n,onVolumeChange:t=>i(r,t),onSoundChange:t=>a(r,t),playFunction:()=>s(r)},r)})})})}}e.AudioSettings=p;class h extends i.Component{constructor(t){super(t),a(this,"handlePaletteChange",t=>{this.setState({selectedPalette:t}),this.props.onPaletteChange(t)}),this.state={selectedPalette:t.selectedPalette}}render(){const{colorPalettes:t}=this.props,{selectedPalette:e}=this.state;return(0,o.jsx)("div",{children:(0,o.jsx)(d,{title:"Color Palette",description:"Choose how ORES scores are displayed visually",children:(0,o.jsx)("div",{class:"palette-selector",children:t.map((t,n)=>(0,o.jsxs)("div",{class:"palette-option "+(e===n?"selected":""),onClick:()=>this.handlePaletteChange(n),children:[(0,o.jsx)("div",{class:"palette-preview",children:t.map((t,e)=>(0,o.jsx)("div",{class:"palette-color",style:{backgroundColor:t}},e))}),(0,o.jsxs)("div",{class:"palette-name",children:["Palette ",n+1]})]},n))})})})}}e.AppearanceSettings=h;class m extends i.Component{render(){const{users:t,onRemove:e,showDates:n}=this.props;return 0===t.length?(0,o.jsx)("div",{class:"user-list-empty",children:"No users in this list"}):(0,o.jsx)("div",{class:"user-list",children:t.map(t=>(0,o.jsxs)("div",{class:"user-list-item",children:[(0,o.jsx)("span",{class:"user-list-name",children:t.name}),n&&t.date&&(0,o.jsx)("span",{class:"user-list-date",children:new Date(t.date).toLocaleDateString()}),(0,o.jsx)("button",{class:"user-list-remove",onClick:()=>e(t.name),title:"Remove user",children:(0,o.jsx)("span",{class:"fa fa-times"})})]},t.name))})}}e.UserList=m;class g extends i.Component{constructor(t){super(t),a(this,"handleAdd",()=>{const{newUsername:t}=this.state;t.trim()&&(this.props.onAdd(t.trim()),this.setState({newUsername:""}))}),this.state={newUsername:""}}render(){const{users:t,onRemove:e}=this.props,{newUsername:n}=this.state;return(0,o.jsx)("div",{children:(0,o.jsxs)(d,{title:"Whitelist",description:"Users on the whitelist will not appear in your queue",children:[(0,o.jsxs)("div",{class:"user-list-controls",children:[(0,o.jsx)("input",{type:"text",class:"user-list-input",placeholder:"Enter username...",value:n,onInput:t=>this.setState({newUsername:t.target.value}),onKeyDown:t=>{"Enter"===t.key&&this.handleAdd()}}),(0,o.jsxs)("button",{class:"user-list-add-button",onClick:this.handleAdd,children:[(0,o.jsx)("span",{class:"fa fa-plus"})," Add User"]})]}),(0,o.jsx)(m,{users:t,onRemove:e,showDates:!0})]})})}}e.WhitelistSettings=g;class b extends i.Component{constructor(t){super(t),a(this,"handleAdd",()=>{const{newUsername:t}=this.state;t.trim()&&(this.props.onAdd(t.trim()),this.setState({newUsername:""}))}),this.state={newUsername:""}}render(){const{users:t,onRemove:e}=this.props,{newUsername:n}=this.state;return(0,o.jsx)("div",{children:(0,o.jsxs)(d,{title:"Highlighted Users",description:"Edits from highlighted users will be shown with a yellow indicator",children:[(0,o.jsxs)("div",{class:"user-list-controls",children:[(0,o.jsx)("input",{type:"text",class:"user-list-input",placeholder:"Enter username...",value:n,onInput:t=>this.setState({newUsername:t.target.value}),onKeyDown:t=>{"Enter"===t.key&&this.handleAdd()}}),(0,o.jsxs)("button",{class:"user-list-add-button",onClick:this.handleAdd,children:[(0,o.jsx)("span",{class:"fa fa-plus"})," Add User"]})]}),(0,o.jsx)(m,{users:t,onRemove:e,showDates:!0})]})})}}e.HighlightedSettings=b;class f extends i.Component{render(){const{stats:t}=this.props;return(0,o.jsx)("div",{children:(0,o.jsx)(d,{title:"Your Statistics",description:"Your WikiShield usage statistics",children:(0,o.jsxs)("div",{class:"stats-grid",children:[(0,o.jsxs)("div",{class:"stat-item",children:[(0,o.jsx)("div",{class:"stat-value",children:t.editsReviewed||0}),(0,o.jsx)("div",{class:"stat-label",children:"Edits Reviewed"})]}),(0,o.jsxs)("div",{class:"stat-item",children:[(0,o.jsx)("div",{class:"stat-value",children:t.editsReverted||0}),(0,o.jsx)("div",{class:"stat-label",children:"Edits Reverted"})]}),(0,o.jsxs)("div",{class:"stat-item",children:[(0,o.jsx)("div",{class:"stat-value",children:t.warningsIssued||0}),(0,o.jsx)("div",{class:"stat-label",children:"Warnings Issued"})]}),(0,o.jsxs)("div",{class:"stat-item",children:[(0,o.jsx)("div",{class:"stat-value",children:t.usersReported||0}),(0,o.jsx)("div",{class:"stat-label",children:"Users Reported"})]}),(0,o.jsxs)("div",{class:"stat-item",children:[(0,o.jsx)("div",{class:"stat-value",children:t.pagesProtected||0}),(0,o.jsx)("div",{class:"stat-label",children:"Pages Protected"})]}),(0,o.jsxs)("div",{class:"stat-item",children:[(0,o.jsx)("div",{class:"stat-value",children:t.thanksGiven||0}),(0,o.jsx)("div",{class:"stat-label",children:"Thanks Given"})]})]})})})}}e.StatisticsSettings=f;class v extends i.Component{constructor(t){super(t),a(this,"testConnection",async()=>{const{ollamaServerUrl:t,onTestConnection:e}=this.props;this.setState({testingConnection:!0,connectionStatus:"Testing..."});const n=await e();this.setState({testingConnection:!1,connectionStatus:n?"Connected!":"Failed to connect"})}),a(this,"refreshModels",async()=>{const{onRefreshModels:t}=this.props;this.setState({loadingModels:!0,modelsStatus:"Loading..."});const e=await t();this.setState({loadingModels:!1,availableModels:e||[],modelsStatus:e?`Found ${e.length} models`:"Failed to load models"})}),this.state={connectionStatus:"",modelsStatus:"",availableModels:[],testingConnection:!1,loadingModels:!1}}render(){const{enableOllamaAI:t,ollamaServerUrl:e,selectedModel:n,onEnableChange:i,onServerUrlChange:a,onModelSelect:r}=this.props,{connectionStatus:l,modelsStatus:c,availableModels:u,testingConnection:p,loadingModels:h}=this.state;return(0,o.jsxs)("div",{children:[(0,o.jsx)(d,{id:"enable-ollama-ai",title:"Enable Ollama AI Analysis",description:"Use local AI models with complete privacy. Free & fast.",children:(0,o.jsx)(s,{value:t,onChange:i})}),(0,o.jsx)(d,{id:"ollama-server-url",title:"Server URL",children:(0,o.jsxs)("div",{class:"ollama-url-controls",children:[(0,o.jsx)("input",{type:"text",id:"ollama-url-input",value:e,onInput:t=>a(t.target.value),placeholder:"http://localhost:11434",style:"width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 4px; font-family: monospace; margin-bottom: 8px;"}),(0,o.jsx)("button",{id:"test-connection-btn",onClick:this.testConnection,disabled:p,style:"padding: 6px 12px; background: #667eea; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 0.9em;",children:"Test Connection"}),(0,o.jsx)("span",{id:"connection-status",style:"margin-left: 8px; font-size: 0.9em;",children:l})]})}),(0,o.jsx)(d,{id:"ollama-model-select",title:"Model Selection",children:(0,o.jsxs)("div",{class:"ollama-model-controls",children:[(0,o.jsxs)("button",{id:"refresh-models-btn",onClick:this.refreshModels,disabled:h,style:"padding: 6px 12px; background: #667eea; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 0.9em;",children:[(0,o.jsx)("span",{class:"fa fa-sync"})," Refresh Models"]}),(0,o.jsx)("span",{id:"models-status",style:"margin-left: 8px; font-size: 0.9em;",children:c}),(0,o.jsx)("div",{style:"margin-top: 12px;",id:"models-container",children:0===u.length?(0,o.jsx)("div",{style:"color: #666; font-style: italic; font-size: 0.9em;",children:'Click "Refresh Models" to load available models'}):(0,o.jsx)("div",{class:"models-list",children:u.map(t=>(0,o.jsxs)("div",{class:"model-item "+(n===t.name?"selected":""),onClick:()=>r(t.name),children:[(0,o.jsx)("div",{class:"model-name",children:t.name}),(0,o.jsx)("div",{class:"model-size",children:t.size})]},t.name))})})]})}),(0,o.jsxs)(d,{children:[(0,o.jsx)("div",{class:"settings-section-title",style:"color: #dc3545;",children:"CORS Setup Required"}),(0,o.jsxs)("div",{class:"settings-section-desc",style:"background: rgba(255, 243, 205, 0.2); padding: 10px; border-radius: 6px; border-left: 4px solid #ffc107; font-size: 0.9em;",children:[(0,o.jsx)("strong",{children:"Set environment variable:"})," ",(0,o.jsx)("code",{style:"background: #f0f0f0; padding: 2px 6px; border-radius: 3px; color: #333;",children:"OLLAMA_ORIGINS"}),(0,o.jsx)("br",{}),(0,o.jsx)("strong",{children:"Value:"})," ",(0,o.jsx)("code",{style:"background: #f0f0f0; padding: 2px 6px; border-radius: 3px; color: #333;",children:"https://en.wikipedia.org,https://*.wikipedia.org"}),(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),(0,o.jsxs)("details",{style:"cursor: pointer;",children:[(0,o.jsx)("summary",{style:"font-weight: 600; margin-bottom: 6px;",children:"Windows (Permanent)"}),(0,o.jsxs)("ol",{style:"margin: 6px 0; padding-left: 20px; font-size: 0.85em;",children:[(0,o.jsx)("li",{children:"System Properties → Environment Variables"}),(0,o.jsxs)("li",{children:["New Variable: ",(0,o.jsx)("code",{style:"color: #333;",children:"OLLAMA_ORIGINS"})]}),(0,o.jsxs)("li",{children:["Value: ",(0,o.jsx)("code",{style:"color: #333;",children:"https://en.wikipedia.org,https://*.wikipedia.org"})]}),(0,o.jsx)("li",{children:"Restart Ollama"})]})]}),(0,o.jsxs)("details",{style:"cursor: pointer;",children:[(0,o.jsx)("summary",{style:"font-weight: 600; margin-bottom: 6px;",children:"Windows (Temporary)"}),(0,o.jsx)("pre",{style:"background: #2d2d2d; color: #f8f8f2; padding: 8px; border-radius: 4px; font-size: 0.8em; margin: 6px 0;",children:'$env:OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org"\nollama serve'})]}),(0,o.jsxs)("details",{style:"cursor: pointer;",children:[(0,o.jsx)("summary",{style:"font-weight: 600; margin-bottom: 6px;",children:"macOS/Linux"}),"Add to ",(0,o.jsx)("code",{children:"~/.bashrc"})," or ",(0,o.jsx)("code",{children:"~/.zshrc"}),":",(0,o.jsx)("pre",{style:"background: #2d2d2d; color: #f8f8f2; padding: 8px; border-radius: 4px; font-size: 0.8em; margin: 6px 0;",children:'export OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org"'}),"Then: ",(0,o.jsx)("code",{children:"source ~/.bashrc && ollama serve"})]})]})]}),(0,o.jsx)(d,{title:"Quick Info",children:(0,o.jsxs)("div",{class:"settings-section-desc",style:"font-size: 0.9em;",children:[(0,o.jsx)("strong",{children:"Get Ollama:"})," ",(0,o.jsx)("a",{href:"https://ollama.com",target:"_blank",style:"color: #667eea; font-weight: bold;",children:"ollama.com"}),(0,o.jsx)("br",{}),(0,o.jsx)("strong",{children:"Popular models:"})," llama3.2, mistral, gemma2, qwen2.5",(0,o.jsx)("br",{}),(0,o.jsx)("strong",{children:"Detects:"})," Vandalism, spam, POV, attacks, copyright issues, policy violations"]})})]})}}e.AISettings=v;class x extends i.Component{constructor(t){super(t),a(this,"handleExport",()=>{try{this.props.onExport();this.setState({statusMessage:{type:"success",title:"Settings exported successfully!",message:"The base64 string has been copied to your clipboard."}}),setTimeout(()=>this.setState({statusMessage:null}),5e3)}catch(t){this.setState({statusMessage:{type:"error",title:"Export failed!",message:t.message}})}}),a(this,"handleImportToggle",()=>{this.state.showImportInput?this.handleImportApply():this.setState({showImportInput:!0,statusMessage:null})}),a(this,"handleImportApply",()=>{const{importValue:t}=this.state;if(t.trim())try{const e=this.props.onImport(t);let n="";e.warnings&&e.warnings.length>0&&(n=`<div style="margin-top: 8px; padding-top: 8px; border-top: 1px solid rgba(40, 167, 69, 0.3);">\n\t\t\t\t\t<strong>Warnings:</strong>\n\t\t\t\t\t<ul style="margin: 4px 0 0 20px; font-size: 0.9em;">\n\t\t\t\t\t\t${e.warnings.map(t=>`<li>${t}</li>`).join("")}\n\t\t\t\t\t</ul>\n\t\t\t\t</div>`),this.setState({statusMessage:{type:"success",title:"Settings imported successfully!",message:"Please reload the page for all changes to take effect.",extra:n},showImportInput:!1,importValue:""})}catch(t){this.setState({statusMessage:{type:"error",title:"Import failed!",message:t.message}})}else this.setState({statusMessage:{type:"error",title:"No input!",message:"Please paste a base64 settings string."}})}),a(this,"handleReset",async()=>{await this.props.onReset()&&this.setState({statusMessage:{type:"success",title:"Settings reset successfully!",message:"All settings have been restored to default values."}})}),this.state={showImportInput:!1,importValue:"",statusMessage:null}}render(){const{showImportInput:t,importValue:e,statusMessage:n}=this.state;return(0,o.jsx)("div",{children:(0,o.jsxs)(d,{title:"Import/Export Settings",description:"Import, export, or reset your WikiShield settings. Settings are encoded as a base64 string for easy sharing.",children:[(0,o.jsxs)("div",{style:"display: flex; gap: 12px; margin-top: 12px; flex-wrap: wrap;",children:[(0,o.jsxs)("button",{id:"export-settings-btn",class:"add-action-button",onClick:this.handleExport,style:"flex: 1; min-width: 120px;",children:[(0,o.jsx)("span",{class:"fa fa-download"})," Export Settings"]}),(0,o.jsxs)("button",{id:"import-settings-btn",class:"add-action-button",onClick:this.handleImportToggle,style:"flex: 1; min-width: 120px; "+(t?"background: #28a745;":""),children:[(0,o.jsx)("span",{class:"fa "+(t?"fa-check":"fa-upload")}),t?" Apply Import":" Import Settings"]}),(0,o.jsxs)("button",{id:"reset-settings-btn",class:"add-action-button",onClick:this.handleReset,style:"flex: 1; min-width: 120px; background: #dc3545;",children:[(0,o.jsx)("span",{class:"fa fa-undo"})," Reset to Default"]})]}),n&&(0,o.jsx)("div",{id:"import-export-status",style:`\n\t\t\t\t\t\t\t\tmargin-top: 12px;\n\t\t\t\t\t\t\t\tpadding: 12px;\n\t\t\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\t\t\tbackground: ${"success"===n.type?"rgba(40, 167, 69, 0.2)":"rgba(220, 53, 69, 0.2)"};\n\t\t\t\t\t\t\t\tborder: 2px solid ${"success"===n.type?"#28a745":"#dc3545"};\n\t\t\t\t\t\t\t\tcolor: ${"success"===n.type?"#28a745":"#dc3545"};\n\t\t\t\t\t\t\t`,children:(0,o.jsxs)("div",{style:"display: flex; align-items: start; gap: 8px;",children:[(0,o.jsx)("span",{class:"fa "+("success"===n.type?"fa-check-circle":"fa-times-circle"),style:"margin-top: 2px;"}),(0,o.jsxs)("div",{style:"flex: 1;",children:[(0,o.jsx)("strong",{children:n.title}),(0,o.jsx)("div",{style:"font-size: 0.9em; margin-top: 4px;",children:n.message}),n.extra&&(0,o.jsx)("div",{dangerouslySetInnerHTML:{__html:n.extra}})]})]})}),t&&(0,o.jsx)("textarea",{id:"import-settings-input",placeholder:"Paste base64 settings string here...",value:e,onInput:t=>this.setState({importValue:t.target.value}),style:" width: 100%; min-height: 100px; margin-top: 12px; padding: 12px; border: 2px solid rgba(128, 128, 128, 0.3); border-radius: 6px; font-family: 'Courier New', monospace; font-size: 0.85em; background: rgba(0, 0, 0, 0.2); color: inherit; "})]})})}}e.ImportExportSettings=x;class y extends i.Component{render(){const{version:t,changelog:e}=this.props;return(0,o.jsxs)("div",{children:[(0,o.jsx)(d,{title:"About WikiShield",children:(0,o.jsxs)("div",{class:"about-content",children:[(0,o.jsxs)("div",{class:"about-version",children:[(0,o.jsx)("span",{class:"fa fa-shield-alt"}),(0,o.jsxs)("span",{children:["WikiShield v",t]})]}),(0,o.jsxs)("div",{class:"about-description",children:[(0,o.jsx)("p",{children:"WikiShield is a powerful tool for patrolling Wikipedia edits in real-time."}),(0,o.jsx)("p",{children:"Developed with ❤️ for the Wikipedia community."})]}),(0,o.jsxs)("div",{class:"about-links",children:[(0,o.jsxs)("a",{href:"https://en.wikipedia.org/wiki/Wikipedia:WikiShield",target:"_blank",children:[(0,o.jsx)("span",{class:"fa fa-book"})," Documentation"]}),(0,o.jsxs)("a",{href:"https://github.com/LuniZunie/WikiShield",target:"_blank",children:[(0,o.jsx)("span",{class:"fa fa-code-branch"})," Source Code"]}),(0,o.jsxs)("a",{href:"https://en.wikipedia.org/wiki/Wikipedia_talk:WikiShield",target:"_blank",children:[(0,o.jsx)("span",{class:"fa fa-comments"})," Feedback"]})]})]})}),e&&(0,o.jsx)(d,{title:"Changelog",children:(0,o.jsx)("div",{class:"changelog-content",dangerouslySetInnerHTML:{__html:e}})})]})}}e.AboutSettings=y},172:function(t,e,n){n.r(e),n.d(e,{Component:function(){return C},Fragment:function(){return A},cloneElement:function(){return G},createContext:function(){return K},createElement:function(){return k},createRef:function(){return E},h:function(){return k},hydrate:function(){return Q},isValidElement:function(){return s},options:function(){return o},render:function(){return Y},toChildArray:function(){return I}});var i,o,a,s,r,l,d,c,u,p,h,m,g,b={},f=[],v=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,x=Array.isArray;function y(t,e){for(var n in e)t[n]=e[n];return t}function w(t){t&&t.parentNode&&t.parentNode.removeChild(t)}function k(t,e,n){var o,a,s,r={};for(s in e)"key"==s?o=e[s]:"ref"==s?a=e[s]:r[s]=e[s];if(arguments.length>2&&(r.children=arguments.length>3?i.call(arguments,2):n),"function"==typeof t&&null!=t.defaultProps)for(s in t.defaultProps)void 0===r[s]&&(r[s]=t.defaultProps[s]);return S(t,r,o,a,null)}function S(t,e,n,i,s){var r={type:t,props:e,key:n,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==s?++a:s,__i:-1,__u:0};return null==s&&null!=o.vnode&&o.vnode(r),r}function E(){return{current:null}}function A(t){return t.children}function C(t,e){this.props=t,this.context=e}function T(t,e){if(null==e)return t.__?T(t.__,t.__i+1):null;for(var n;e<t.__k.length;e++)if(null!=(n=t.__k[e])&&null!=n.__e)return n.__e;return"function"==typeof t.type?T(t):null}function _(t){var e,n;if(null!=(t=t.__)&&null!=t.__c){for(t.__e=t.__c.base=null,e=0;e<t.__k.length;e++)if(null!=(n=t.__k[e])&&null!=n.__e){t.__e=t.__c.base=n.__e;break}return _(t)}}function L(t){(!t.__d&&(t.__d=!0)&&r.push(t)&&!q.__r++||l!=o.debounceRendering)&&((l=o.debounceRendering)||d)(q)}function q(){for(var t,e,n,i,a,s,l,d=1;r.length;)r.length>d&&r.sort(c),t=r.shift(),d=r.length,t.__d&&(n=void 0,i=void 0,a=(i=(e=t).__v).__e,s=[],l=[],e.__P&&((n=y({},i)).__v=i.__v+1,o.vnode&&o.vnode(n),U(e.__P,n,i,e.__n,e.__P.namespaceURI,32&i.__u?[a]:null,s,null==a?T(i):a,!!(32&i.__u),l),n.__v=i.__v,n.__.__k[n.__i]=n,N(s,n,l),i.__e=i.__=null,n.__e!=a&&_(n)));q.__r=0}function M(t,e,n,i,o,a,s,r,l,d,c){var u,p,h,m,g,v,x,y=i&&i.__k||f,w=e.length;for(l=$(n,e,y,l,w),u=0;u<w;u++)null!=(h=n.__k[u])&&(p=-1==h.__i?b:y[h.__i]||b,h.__i=u,v=U(t,h,p,o,a,s,r,l,d,c),m=h.__e,h.ref&&p.ref!=h.ref&&(p.ref&&V(p.ref,null,h),c.push(h.ref,h.__c||m,h)),null==g&&null!=m&&(g=m),(x=!!(4&h.__u))||p.__k===h.__k?l=R(h,l,t,x):"function"==typeof h.type&&void 0!==v?l=v:m&&(l=m.nextSibling),h.__u&=-7);return n.__e=g,l}function $(t,e,n,i,o){var a,s,r,l,d,c=n.length,u=c,p=0;for(t.__k=new Array(o),a=0;a<o;a++)null!=(s=e[a])&&"boolean"!=typeof s&&"function"!=typeof s?(l=a+p,(s=t.__k[a]="string"==typeof s||"number"==typeof s||"bigint"==typeof s||s.constructor==String?S(null,s,null,null,null):x(s)?S(A,{children:s},null,null,null):null==s.constructor&&s.__b>0?S(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):s).__=t,s.__b=t.__b+1,r=null,-1!=(d=s.__i=W(s,n,l,u))&&(u--,(r=n[d])&&(r.__u|=2)),null==r||null==r.__v?(-1==d&&(o>c?p--:o<c&&p++),"function"!=typeof s.type&&(s.__u|=4)):d!=l&&(d==l-1?p--:d==l+1?p++:(d>l?p--:p++,s.__u|=4))):t.__k[a]=null;if(u)for(a=0;a<c;a++)null!=(r=n[a])&&!(2&r.__u)&&(r.__e==i&&(i=T(r)),F(r,r));return i}function R(t,e,n,i){var o,a;if("function"==typeof t.type){for(o=t.__k,a=0;o&&a<o.length;a++)o[a]&&(o[a].__=t,e=R(o[a],e,n,i));return e}t.__e!=e&&(i&&(e&&t.type&&!e.parentNode&&(e=T(t)),n.insertBefore(t.__e,e||null)),e=t.__e);do{e=e&&e.nextSibling}while(null!=e&&8==e.nodeType);return e}function I(t,e){return e=e||[],null==t||"boolean"==typeof t||(x(t)?t.some(function(t){I(t,e)}):e.push(t)),e}function W(t,e,n,i){var o,a,s,r=t.key,l=t.type,d=e[n],c=null!=d&&!(2&d.__u);if(null===d&&null==t.key||c&&r==d.key&&l==d.type)return n;if(i>(c?1:0))for(o=n-1,a=n+1;o>=0||a<e.length;)if(null!=(d=e[s=o>=0?o--:a++])&&!(2&d.__u)&&r==d.key&&l==d.type)return s;return-1}function j(t,e,n){"-"==e[0]?t.setProperty(e,null==n?"":n):t[e]=null==n?"":"number"!=typeof n||v.test(e)?n:n+"px"}function P(t,e,n,i,o){var a,s;t:if("style"==e)if("string"==typeof n)t.style.cssText=n;else{if("string"==typeof i&&(t.style.cssText=i=""),i)for(e in i)n&&e in n||j(t.style,e,"");if(n)for(e in n)i&&n[e]==i[e]||j(t.style,e,n[e])}else if("o"==e[0]&&"n"==e[1])a=e!=(e=e.replace(u,"$1")),s=e.toLowerCase(),e=s in t||"onFocusOut"==e||"onFocusIn"==e?s.slice(2):e.slice(2),t.l||(t.l={}),t.l[e+a]=n,n?i?n.u=i.u:(n.u=p,t.addEventListener(e,a?m:h,a)):t.removeEventListener(e,a?m:h,a);else{if("http://www.w3.org/2000/svg"==o)e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!=e&&"height"!=e&&"href"!=e&&"list"!=e&&"form"!=e&&"tabIndex"!=e&&"download"!=e&&"rowSpan"!=e&&"colSpan"!=e&&"role"!=e&&"popover"!=e&&e in t)try{t[e]=null==n?"":n;break t}catch(t){}"function"==typeof n||(null==n||!1===n&&"-"!=e[4]?t.removeAttribute(e):t.setAttribute(e,"popover"==e&&1==n?"":n))}}function O(t){return function(e){if(this.l){var n=this.l[e.type+t];if(null==e.t)e.t=p++;else if(e.t<n.u)return;return n(o.event?o.event(e):e)}}}function U(t,e,n,i,a,s,r,l,d,c){var u,p,h,m,g,b,f,v,k,S,E,T,_,L,q,$,R,I=e.type;if(null!=e.constructor)return null;128&n.__u&&(d=!!(32&n.__u),s=[l=e.__e=n.__e]),(u=o.__b)&&u(e);t:if("function"==typeof I)try{if(v=e.props,k="prototype"in I&&I.prototype.render,S=(u=I.contextType)&&i[u.__c],E=u?S?S.props.value:u.__:i,n.__c?f=(p=e.__c=n.__c).__=p.__E:(k?e.__c=p=new I(v,E):(e.__c=p=new C(v,E),p.constructor=I,p.render=B),S&&S.sub(p),p.props=v,p.state||(p.state={}),p.context=E,p.__n=i,h=p.__d=!0,p.__h=[],p._sb=[]),k&&null==p.__s&&(p.__s=p.state),k&&null!=I.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=y({},p.__s)),y(p.__s,I.getDerivedStateFromProps(v,p.__s))),m=p.props,g=p.state,p.__v=e,h)k&&null==I.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),k&&null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(k&&null==I.getDerivedStateFromProps&&v!==m&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(v,E),!p.__e&&null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(v,p.__s,E)||e.__v==n.__v){for(e.__v!=n.__v&&(p.props=v,p.state=p.__s,p.__d=!1),e.__e=n.__e,e.__k=n.__k,e.__k.some(function(t){t&&(t.__=e)}),T=0;T<p._sb.length;T++)p.__h.push(p._sb[T]);p._sb=[],p.__h.length&&r.push(p);break t}null!=p.componentWillUpdate&&p.componentWillUpdate(v,p.__s,E),k&&null!=p.componentDidUpdate&&p.__h.push(function(){p.componentDidUpdate(m,g,b)})}if(p.context=E,p.props=v,p.__P=t,p.__e=!1,_=o.__r,L=0,k){for(p.state=p.__s,p.__d=!1,_&&_(e),u=p.render(p.props,p.state,p.context),q=0;q<p._sb.length;q++)p.__h.push(p._sb[q]);p._sb=[]}else do{p.__d=!1,_&&_(e),u=p.render(p.props,p.state,p.context),p.state=p.__s}while(p.__d&&++L<25);p.state=p.__s,null!=p.getChildContext&&(i=y(y({},i),p.getChildContext())),k&&!h&&null!=p.getSnapshotBeforeUpdate&&(b=p.getSnapshotBeforeUpdate(m,g)),$=u,null!=u&&u.type===A&&null==u.key&&($=H(u.props.children)),l=M(t,x($)?$:[$],e,n,i,a,s,r,l,d,c),p.base=e.__e,e.__u&=-161,p.__h.length&&r.push(p),f&&(p.__E=p.__=null)}catch(t){if(e.__v=null,d||null!=s)if(t.then){for(e.__u|=d?160:128;l&&8==l.nodeType&&l.nextSibling;)l=l.nextSibling;s[s.indexOf(l)]=null,e.__e=l}else{for(R=s.length;R--;)w(s[R]);z(e)}else e.__e=n.__e,e.__k=n.__k,t.then||z(e);o.__e(t,e,n)}else null==s&&e.__v==n.__v?(e.__k=n.__k,e.__e=n.__e):l=e.__e=D(n.__e,e,n,i,a,s,r,d,c);return(u=o.diffed)&&u(e),128&e.__u?void 0:l}function z(t){t&&t.__c&&(t.__c.__e=!0),t&&t.__k&&t.__k.forEach(z)}function N(t,e,n){for(var i=0;i<n.length;i++)V(n[i],n[++i],n[++i]);o.__c&&o.__c(e,t),t.some(function(e){try{t=e.__h,e.__h=[],t.some(function(t){t.call(e)})}catch(t){o.__e(t,e.__v)}})}function H(t){return"object"!=typeof t||null==t||t.__b&&t.__b>0?t:x(t)?t.map(H):y({},t)}function D(t,e,n,a,s,r,l,d,c){var u,p,h,m,g,f,v,y=n.props,k=e.props,S=e.type;if("svg"==S?s="http://www.w3.org/2000/svg":"math"==S?s="http://www.w3.org/1998/Math/MathML":s||(s="http://www.w3.org/1999/xhtml"),null!=r)for(u=0;u<r.length;u++)if((g=r[u])&&"setAttribute"in g==!!S&&(S?g.localName==S:3==g.nodeType)){t=g,r[u]=null;break}if(null==t){if(null==S)return document.createTextNode(k);t=document.createElementNS(s,S,k.is&&k),d&&(o.__m&&o.__m(e,r),d=!1),r=null}if(null==S)y===k||d&&t.data==k||(t.data=k);else{if(r=r&&i.call(t.childNodes),y=n.props||b,!d&&null!=r)for(y={},u=0;u<t.attributes.length;u++)y[(g=t.attributes[u]).name]=g.value;for(u in y)if(g=y[u],"children"==u);else if("dangerouslySetInnerHTML"==u)h=g;else if(!(u in k)){if("value"==u&&"defaultValue"in k||"checked"==u&&"defaultChecked"in k)continue;P(t,u,null,g,s)}for(u in k)g=k[u],"children"==u?m=g:"dangerouslySetInnerHTML"==u?p=g:"value"==u?f=g:"checked"==u?v=g:d&&"function"!=typeof g||y[u]===g||P(t,u,g,y[u],s);if(p)d||h&&(p.__html==h.__html||p.__html==t.innerHTML)||(t.innerHTML=p.__html),e.__k=[];else if(h&&(t.innerHTML=""),M("template"==e.type?t.content:t,x(m)?m:[m],e,n,a,"foreignObject"==S?"http://www.w3.org/1999/xhtml":s,r,l,r?r[0]:n.__k&&T(n,0),d,c),null!=r)for(u=r.length;u--;)w(r[u]);d||(u="value","progress"==S&&null==f?t.removeAttribute("value"):null!=f&&(f!==t[u]||"progress"==S&&!f||"option"==S&&f!=y[u])&&P(t,u,f,y[u],s),u="checked",null!=v&&v!=t[u]&&P(t,u,v,y[u],s))}return t}function V(t,e,n){try{if("function"==typeof t){var i="function"==typeof t.__u;i&&t.__u(),i&&null==e||(t.__u=t(e))}else t.current=e}catch(t){o.__e(t,n)}}function F(t,e,n){var i,a;if(o.unmount&&o.unmount(t),(i=t.ref)&&(i.current&&i.current!=t.__e||V(i,null,e)),null!=(i=t.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(t){o.__e(t,e)}i.base=i.__P=null}if(i=t.__k)for(a=0;a<i.length;a++)i[a]&&F(i[a],e,n||"function"!=typeof t.type);n||w(t.__e),t.__c=t.__=t.__e=void 0}function B(t,e,n){return this.constructor(t,n)}function Y(t,e,n){var a,s,r,l;e==document&&(e=document.documentElement),o.__&&o.__(t,e),s=(a="function"==typeof n)?null:n&&n.__k||e.__k,r=[],l=[],U(e,t=(!a&&n||e).__k=k(A,null,[t]),s||b,b,e.namespaceURI,!a&&n?[n]:s?null:e.firstChild?i.call(e.childNodes):null,r,!a&&n?n:s?s.__e:e.firstChild,a,l),N(r,t,l)}function Q(t,e){Y(t,e,Q)}function G(t,e,n){var o,a,s,r,l=y({},t.props);for(s in t.type&&t.type.defaultProps&&(r=t.type.defaultProps),e)"key"==s?o=e[s]:"ref"==s?a=e[s]:l[s]=void 0===e[s]&&null!=r?r[s]:e[s];return arguments.length>2&&(l.children=arguments.length>3?i.call(arguments,2):n),S(t.type,l,o||t.key,a||t.ref,null)}function K(t){function e(t){var n,i;return this.getChildContext||(n=new Set,(i={})[e.__c]=this,this.getChildContext=function(){return i},this.componentWillUnmount=function(){n=null},this.shouldComponentUpdate=function(t){this.props.value!=t.value&&n.forEach(function(t){t.__e=!0,L(t)})},this.sub=function(t){n.add(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){n&&n.delete(t),e&&e.call(t)}}),t.children}return e.__c="__cC"+g++,e.__=t,e.Provider=e.__l=(e.Consumer=function(t,e){return t.children(e)}).contextType=e,e}i=f.slice,o={__e:function(t,e,n,i){for(var o,a,s;e=e.__;)if((o=e.__c)&&!o.__)try{if((a=o.constructor)&&null!=a.getDerivedStateFromError&&(o.setState(a.getDerivedStateFromError(t)),s=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(t,i||{}),s=o.__d),s)return o.__E=o}catch(e){t=e}throw t}},a=0,s=function(t){return null!=t&&null==t.constructor},C.prototype.setState=function(t,e){var n;n=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=y({},this.state),"function"==typeof t&&(t=t(y({},n),this.props)),t&&y(n,t),null!=t&&this.__v&&(e&&this._sb.push(e),L(this))},C.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),L(this))},C.prototype.render=A,r=[],d="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,c=function(t,e){return t.__v.__b-e.__v.__b},q.__r=0,u=/(PointerCapture)$|Capture$/i,p=0,h=O(!1),m=O(!0),g=0},185:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.checkKillswitch=o,e.killswitch_status=e.killswitch_config=void 0,e.startKillswitchPolling=function(t,e){const a=async()=>{await o(t,!1),"function"==typeof e&&e(i),setTimeout(a,n.polling_interval)};a()};const n=e.killswitch_config={killswitch_page:"User:LuniZunie/killswitch.js",polling_interval:1e4},i=e.killswitch_status={disabled:!1,reload:{soft:!1,hard:!1},notifications:[]};async function o(t,e=!0){try{var o,a,s;const r=await t.getSinglePageContent(n.killswitch_page);if(!r)return console.warn("WikiShield: Killswitch page not found or could not be fetched"),i;const l=null===(o=JSON.parse(r))||void 0===o?void 0:o.WikiShield;"boolean"==typeof l.disabled&&(i.disabled=l.disabled);const d=null===(a=l.reload)||void 0===a?void 0:a.soft,c=null===(s=l.reload)||void 0===s?void 0:s.hard;if(e)"number"==typeof d&&window.sessionStorage.setItem("WikiShield:SoftReload",d),"number"==typeof c&&window.sessionStorage.setItem("WikiShield:HardReload",c);else{if("number"==typeof d){d>+window.sessionStorage.getItem("WikiShield:SoftReload")&&(window.sessionStorage.setItem("WikiShield:SoftReload",d),console.log("WikiShield: Soft reload triggered by killswitch"),i.notifications.push({id:`app-${performance.now()}`,type:"app",subtype:"soft-reload",timestamp:Date.now(),title:"A newer version of WikiShield has been released! Reload to update.",agent:"WikiShield Development",category:"WikiShield",read:!1}))}if("number"==typeof c){c>+window.sessionStorage.getItem("WikiShield:HardReload")&&(window.sessionStorage.setItem("WikiShield:HardReload",c),window.sessionStorage.setItem("WikiShield:SendHardReloadNotification",!0),console.log("WikiShield: Hard reload triggered by killswitch"),location.reload())}}return i}catch(t){return console.error("WikiShield: Failed to check killswitch:",t),i}}},201:function(t,e,n){n.r(e),n.d(e,{Fragment:function(){return i.Fragment},jsx:function(){return d},jsxAttr:function(){return h},jsxDEV:function(){return d},jsxEscape:function(){return m},jsxTemplate:function(){return c},jsxs:function(){return d}});var i=n(172),o=/["&<]/;function a(t){if(0===t.length||!1===o.test(t))return t;for(var e=0,n=0,i="",a="";n<t.length;n++){switch(t.charCodeAt(n)){case 34:a=""";break;case 38:a="&";break;case 60:a="<";break;default:continue}n!==e&&(i+=t.slice(e,n)),i+=a,e=n+1}return n!==e&&(i+=t.slice(e,n)),i}var s=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,r=0,l=Array.isArray;function d(t,e,n,o,a,s){e||(e={});var l,d,c=e;if("ref"in c)for(d in c={},e)"ref"==d?l=e[d]:c[d]=e[d];var u={type:t,props:c,key:n,ref:l,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--r,__i:-1,__u:0,__source:a,__self:s};if("function"==typeof t&&(l=t.defaultProps))for(d in l)void 0===c[d]&&(c[d]=l[d]);return i.options.vnode&&i.options.vnode(u),u}function c(t){var e=d(i.Fragment,{tpl:t,exprs:[].slice.call(arguments,1)});return e.key=e.__v,e}var u={},p=/[A-Z]/g;function h(t,e){if(i.options.attr){var n=i.options.attr(t,e);if("string"==typeof n)return n}if(e=null!==(o=e)&&"object"==typeof o&&"function"==typeof o.valueOf?o.valueOf():o,"ref"===t||"key"===t)return"";var o;if("style"===t&&"object"==typeof e){var r="";for(var l in e){var d=e[l];if(null!=d&&""!==d){var c="-"==l[0]?l:u[l]||(u[l]=l.replace(p,"-$&").toLowerCase()),h=";";"number"!=typeof d||c.startsWith("--")||s.test(c)||(h="px;"),r=r+c+":"+d+h}}return t+'="'+a(r)+'"'}return null==e||!1===e||"function"==typeof e||"object"==typeof e?"":!0===e?t:t+'="'+a(""+e)+'"'}function m(t){if(null==t||"boolean"==typeof t||"function"==typeof t)return null;if("object"==typeof t){if(void 0===t.constructor)return t;if(l(t)){for(var e=0;e<t.length;e++)t[e]=m(t[e]);return t}}return a(""+t)}},207:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.WikiShieldInterface=void 0;var i=n(839),o=n(327),a=n(924),s=n(599),r=n(877),l=n(917),d=n(596);e.WikiShieldInterface=class{constructor(t){this.wikishield=t,this.selectedWidthAdjust=null,this.startingSectionWidth=null,this.startingMouseX=null,this.lastCurrentEdit=null,this.newerRevisionInterval=null,this.queueWidth=void 0,this.detailsWidth=void 0,this.eventManager=new i.WikiShieldEventManager(this.wikishield),this.settings=new o.WikiShieldSettingsInterface(this.wikishield),this.selectedMenu=null,this.selectedSubmenu=null}loadTheme(t){this.removeTheme();const e=document.createElement("style");e.classList.add("this.wikishield-theme-base"),e.innerHTML=a.wikishieldStyling.base,document.head.appendChild(e);const n=document.createElement("style");n.classList.add("this.wikishield-theme"),n.innerHTML=a.wikishieldStyling["theme-dark"],document.head.appendChild(n),document.documentElement.setAttribute("data-theme","dark"),document.body.classList.add("dark-mode"),this.wikishield.options.theme="theme-dark"}removeTheme(){document.querySelectorAll(".this.wikishield-theme, .this.wikishield-theme-base").forEach(t=>t.remove()),document.documentElement.removeAttribute("data-theme"),document.body.classList.remove("dark-mode")}openFloatingIframe(t,e){this.closeFloatingIframe();const n=document.createElement("div");n.classList.add("wiki-iframe-overlay"),n.id="wiki-iframe-overlay";const i=document.createElement("div");i.classList.add("wiki-iframe-container");const o=document.createElement("div");o.classList.add("wiki-iframe-header");const a=document.createElement("div");a.classList.add("wiki-iframe-title"),a.innerHTML=`\n\t\t\t\t<span class="fa fa-book"></span>\n\t\t\t\t<span class="wiki-iframe-title-text">${this.escapeHTML(e)}</span>\n\t\t\t`;const s=document.createElement("div");s.classList.add("wiki-iframe-controls");const r=document.createElement("button");r.classList.add("wiki-iframe-btn"),r.innerHTML='<span class="fa fa-external-link-alt"></span> Open in New Tab',r.addEventListener("click",()=>{window.open(t,"_blank")});const l=document.createElement("button");l.classList.add("wiki-iframe-btn","close-btn"),l.innerHTML='<span class="fa fa-times"></span> Close',l.addEventListener("click",()=>{this.closeFloatingIframe()}),s.appendChild(r),s.appendChild(l),o.appendChild(a),o.appendChild(s);const d=document.createElement("div");d.classList.add("wiki-iframe-content");const c=document.createElement("div");c.classList.add("wiki-iframe-loading"),c.innerHTML='\n\t\t\t\t<div class="wiki-iframe-spinner"></div>\n\t\t\t\t<span>Loading Wikipedia page...</span>\n\t\t\t',d.appendChild(c);const u=document.createElement("iframe");u.src=t,u.setAttribute("sandbox","allow-same-origin allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox");let p=!1;u.addEventListener("load",()=>{p=!0,c.remove()}),u.addEventListener("error",()=>{c.innerHTML=`\n\t\t\t\t\t<span class="fa fa-exclamation-triangle" style="color: var(--danger); font-size: 2rem;"></span>\n\t\t\t\t\t<span>This page cannot be displayed in a frame. <a href="${t}" target="_blank" style="color: var(--primary); text-decoration: underline;">Open in new tab instead</a></span>\n\t\t\t\t`}),setTimeout(()=>{p||(this.closeFloatingIframe(),window.open(t,"_blank"),this.showToast("Wikipedia doesn't allow embedding. Opening in a new tab instead.","info"))},3e3),d.appendChild(u),i.appendChild(o),i.appendChild(d),n.appendChild(i),n.addEventListener("click",t=>{t.target===n&&this.closeFloatingIframe()}),i.addEventListener("click",t=>{t.stopPropagation()});document.addEventListener("keydown",t=>{"Escape"===t.key&&this.closeFloatingIframe()}),n.dataset.escapeHandler="true",document.body.appendChild(n)}closeFloatingIframe(){const t=document.getElementById("wiki-iframe-overlay");t&&(t.dataset.escapeHandler&&document.removeEventListener("keydown",this.closeFloatingIframe),t.remove())}escapeHTML(t){const e=document.createElement("div");return e.textContent=t,e.innerHTML}async build(){document.head.innerHTML=`\n\t\t\t<title>WikiShield</title>\n\t\t\t<style>${a.wikishieldStyling.initial}</style>\n\t\t`,document.body.innerHTML=s.wikishieldHTML.initial(r.__script__.version);const t=document.getElementById("dots-canvas"),e=t.getContext("2d");let n,i=[];const o=()=>{t.width=window.innerWidth,t.height=window.innerHeight};o(),window.addEventListener("resize",o);class l{constructor(){this.x=Math.random()*t.width,this.y=Math.random()*t.height,this.vx=.5*(Math.random()-.5),this.vy=.5*(Math.random()-.5),this.radius=2;const e=["102, 126, 234","240, 147, 251","118, 75, 162","217, 70, 239"];this.color=e[Math.floor(Math.random()*e.length)]}update(){this.x+=this.vx,this.y+=this.vy,this.x<0&&(this.x=t.width),this.x>t.width&&(this.x=0),this.y<0&&(this.y=t.height),this.y>t.height&&(this.y=0)}draw(){e.beginPath(),e.arc(this.x,this.y,this.radius,0,2*Math.PI),e.fillStyle=`rgba(${this.color}, 0.8)`,e.shadowBlur=10,e.shadowColor=`rgba(${this.color}, 0.8)`,e.fill(),e.shadowBlur=0}}const d=Math.floor(t.width*t.height/5e3);for(let t=0;t<d;t++)i.push(new l);const c=()=>{e.clearRect(0,0,t.width,t.height),i.forEach(t=>{t.update(),t.draw()});const o=i.length;for(let t=0;t<o;t++)for(let n=t+1;n<o;n++){const o=i[t].x-i[n].x,a=i[t].y-i[n].y,s=Math.sqrt(o*o+a*a);if(s<150){e.beginPath(),e.moveTo(i[t].x,i[t].y),e.lineTo(i[n].x,i[n].y);const o=.4*(1-s/150),a=(parseInt(i[t].color.split(",")[0])+parseInt(i[n].color.split(",")[0]))/2,r=(parseInt(i[t].color.split(",")[1])+parseInt(i[n].color.split(",")[1]))/2,l=(parseInt(i[t].color.split(",")[2])+parseInt(i[n].color.split(",")[2]))/2;e.strokeStyle=`rgba(${a}, ${r}, ${l}, ${o})`,e.lineWidth=1,e.stroke()}}n=requestAnimationFrame(c)};c();let u=null;const p=(t,e,n=.15,i="sine")=>{if(!u)return;const o=u.createOscillator(),a=u.createGain();o.connect(a),a.connect(u.destination),o.frequency.value=t,o.type=i,a.gain.setValueAtTime(n,u.currentTime),a.gain.exponentialRampToValueAtTime(.01,u.currentTime+e),o.start(u.currentTime),o.stop(u.currentTime+e)},h=()=>{p(800,.05,.08,"sine")},m=()=>{p(1200,.1,.1,"square"),setTimeout(()=>p(1e3,.08,.08,"square"),50)},g=()=>{if(!u)try{const t=window.AudioContext||window.webkitAudioContext;u=new t,(()=>{if(!u)try{const t=window.AudioContext||window.webkitAudioContext;u=new t}catch(t){return}p(523.25,.15,.12,"sine"),setTimeout(()=>p(659.25,.15,.12,"sine"),150),setTimeout(()=>p(783.99,.15,.12,"sine"),300),setTimeout(()=>p(1046.5,.4,.15,"sine"),450)})()}catch(t){}},b=(t,e)=>{const n=this.elem(t);n&&("hover"===e?n.addEventListener("mouseenter",h):"click"===e&&n.addEventListener("click",()=>{g(),m()}))};b("#start-button","hover"),b("#start-button","click"),document.querySelectorAll(".about-link").forEach(t=>{t.addEventListener("mouseenter",h),t.addEventListener("click",()=>{g(),m()})}),setTimeout(()=>{g()},500),this.wikishield.rights.rollback?(this.elem("#rollback-needed").style.display="none",this.elem("#start-button").style.display=""):(this.elem("#rollback-needed").style.display="",this.elem("#start-button").style.display="none"),this.elem("#start-button").addEventListener("click",()=>{n&&cancelAnimationFrame(n),this.wikishield.start()}),this.loadTheme("theme-dark")}start(){document.head.innerHTML=`\n\t\t\t\t<title>WikiShield</title>\n\t\t\t\t<style>${a.wikishieldStyling.main}</style>\n\t\t\t\t${s.wikishieldHTML.head}\n\t\t\t`,this.loadTheme("theme-dark"),document.body.innerHTML=s.wikishieldHTML.main,[...document.querySelectorAll(".bottom-tool-trigger")].forEach(t=>{t.addEventListener("click",e=>{e.stopPropagation();const n=t.closest(".bottom-tool-item"),i=document.querySelector(`#${n.dataset.menu}-menu`),o=i.classList.contains("show");switch(n.dataset.menu){case"revert":i.innerHTML="",this.createRevertMenu(i,this.wikishield.queue.currentEdit);break;case"warn":i.innerHTML="",this.createWarnMenu(i,this.wikishield.queue.currentEdit)}this.closeAllBottomMenus(),o||(i.classList.add("show"),t.classList.add("active"),this.positionBottomMenu(n,i))})}),[...document.querySelectorAll(".submenu-trigger")].forEach(t=>{t.addEventListener("mouseenter",()=>{const e=t.closest(".bottom-tool-menu");e&&e.querySelectorAll(".submenu").forEach(t=>t.classList.remove("show"));const n=t.querySelector(".submenu");n&&(n.classList.add("show"),this.positionSubmenu(n,t))})}),[...document.querySelectorAll(".menu-option:not(.submenu-trigger)")].forEach(t=>{t.addEventListener("click",()=>{this.closeAllBottomMenus()})}),[...document.querySelectorAll(".submenu")].forEach(t=>{t.addEventListener("click",t=>t.stopPropagation())}),[this.elem("#delete-queue"),this.elem("#open-settings"),this.elem("#notifications-icon"),this.elem("#watchlist-icon"),this.elem("#user-contribs-level")].forEach(t=>this.addTooltipListener(t)),this.elem("#notifications-icon").addEventListener("click",t=>{this.elem("#notifications-panel").classList.toggle("show")}),this.elem("#mark-all-notifications-read").addEventListener("click",()=>{this.wikishield.markAllNotificationsRead()}),this.elem("#watchlist-icon").addEventListener("click",t=>{this.elem("#watchlist-panel").classList.toggle("show")}),this.elem("#mark-all-watchlist-read").addEventListener("click",()=>{this.wikishield.markAllWatchlistRead()}),document.addEventListener("click",t=>{for(const e of["notifications","watchlist"]){const n=this.elem(`#${e}-panel`),i=this.elem(`#${e}-icon`);!n||n.contains(t.target)||i.contains(t.target)||n.classList.remove("show")}t.target.closest(".bottom-tool-menu")||this.closeAllBottomMenus()});const t=this.elem("#latest-edits-tab");t.addEventListener("click",t=>{this.updateDiffContainer(this.wikishield.queue.currentEdit,!1)}),this.addTooltipListener(t);const e=this.elem("#consecutive-edits-tab");e.addEventListener("click",t=>{this.updateDiffContainer(this.wikishield.queue.currentEdit,!0)}),this.addTooltipListener(e),this.addTooltipListener(this.elem("#right-top > .icons > .created-page")),this.eventManager.linkButton(this.elem("#delete-queue"),"deleteQueue",!0),this.eventManager.linkButton(this.elem("#open-settings"),"openSettings",!0),this.eventManager.linkButton(this.elem("#user-open-user-page"),"openUserPage"),this.eventManager.linkButton(this.elem("#user-open-user-talk"),"openUserTalk"),this.eventManager.linkButton(this.elem("#user-view-contribs"),"openUserContribs"),this.eventManager.linkButton(this.elem("#user-view-filter-log"),"openFilterLog"),this.eventManager.linkButton(this.elem("#user-add-whitelist"),"addToWhitelist"),this.eventManager.linkButton(this.elem("#user-remove-whitelist"),"removeFromWhitelist"),this.eventManager.linkButton(this.elem("#user-highlight"),"highlight"),this.eventManager.linkButton(this.elem("#user-unhighlight"),"unhighlight"),this.eventManager.linkButton(this.elem("#page-open-page"),"openPage"),this.eventManager.linkButton(this.elem("#page-open-talk"),"openTalk"),this.eventManager.linkButton(this.elem("#page-view-history"),"openHistory"),this.eventManager.linkButton(this.elem("#edit-view-revision"),"openRevision"),this.eventManager.linkButton(this.elem("#edit-view-diff"),"openDiff"),this.eventManager.linkButton(this.elem("#edit-thank-user"),"thankUser"),this.eventManager.linkButton(this.elem("#edit-rollback"),"rollback"),this.createSubmenu(this.elem("#edit-rollback-goodfaith .submenu"),"rollbackGoodFaith"),this.createSubmenu(this.elem("#edit-undo .submenu"),"undo"),this.createSubmenu(this.elem("#user-report-aiv .submenu"),"reportToAIV"),this.createSubmenu(this.elem("#user-report-uaa .submenu"),"reportToUAA"),this.createSubmenu(this.elem("#page-request-protection .submenu"),"requestProtection"),this.createSubmenu(this.elem("#user-welcome .submenu"),"welcome"),this.wikishield.rights.block||[...document.querySelectorAll(".tool-block")].forEach(t=>t.style.display="none"),this.wikishield.rights.protect||[...document.querySelectorAll(".tool-protect")].forEach(t=>t.style.display="none"),[...this.elem("#bottom-tools").querySelectorAll("[data-tooltip]")].forEach(t=>this.addTooltipListener(t));const n=this.elem("#queue-width-adjust"),i=this.elem("#queue"),o=this.elem("#details-width-adjust"),l=this.elem("#right-details"),d=this.wikishield.queueWidth,c=this.wikishield.detailsWidth;if(d&&(i.style.width=d,this.elem("#right-container").style.width=`calc(100% - ${d})`),c&&(l.style.width=c,this.elem("#main-container").style.width=`calc(100% - ${c})`,this.elem("#middle-top").style.width=`calc(100% - ${c})`,this.elem("#right-top").style.width=c),n.addEventListener("mousedown",t=>{this.selectedWidthAdjust=n,this.startingMouseX=t.clientX,this.startingSectionWidth=i.getBoundingClientRect().width}),o.addEventListener("mousedown",t=>{this.selectedWidthAdjust=o,this.startingMouseX=t.clientX,this.startingSectionWidth=l.getBoundingClientRect().width}),window.addEventListener("mouseup",()=>{this.selectedWidthAdjust===n&&(this.wikishield.queueWidth=i.style.width),this.selectedWidthAdjust===o&&(this.wikishield.detailsWidth=l.style.width),this.selectedWidthAdjust=null}),window.addEventListener("mousemove",t=>{if(this.selectedWidthAdjust===n){const e=t.clientX-this.startingMouseX+this.startingSectionWidth;i.style.width=`${Math.min(Math.max(e/window.innerWidth*100,10),30)}vw`,this.elem("#right-container").style.width=`calc(100% - ${i.style.width})`}if(this.selectedWidthAdjust===o){const e=this.startingMouseX-t.clientX+this.startingSectionWidth;l.style.width=`${Math.min(Math.max(e/window.innerWidth*100,10),30)}vw`,this.elem("#main-container").style.width=`calc(100% - ${l.style.width})`,this.elem("#middle-top").style.width=`calc(100% - ${l.style.width})`,this.elem("#right-top").style.width=l.style.width}}),window.addEventListener("click",()=>{[...document.querySelectorAll(".context-menu")].forEach(t=>t.remove())}),document.addEventListener("click",t=>{const e=t.target.closest("a[href][target='_blank']");if(!e)return;const n=e.getAttribute("href");if(!n||!n.includes("wikipedia.org"))return;if(1===t.button)return;if(t.ctrlKey||t.metaKey)return;t.preventDefault(),t.stopPropagation();let i="Wikipedia";try{const t=new URL(n).pathname.split("/");t.length>2&&(i=decodeURIComponent(t[t.length-1]).replace(/_/g," "))}catch(t){console.error("Failed to parse URL:",t)}window.open(n,"_blank")},!0),document.addEventListener("auxclick",t=>{const e=t.target.closest("a[href][target='_blank']");if(!e)return;const n=e.getAttribute("href");n&&n.includes("wikipedia.org")&&t.button},!0),this.wikishield.loadedChangelog!==r.__script__.changelog.version){const t=document.createElement("div");t.classList.add("settings-container"),document.body.appendChild(t),t.innerHTML=`\n\t\t\t\t\t<div class="settings">\n\t\t\t\t\t\t<div class="settings-section changelog">\n\t\t\t\t\t\t\t${r.__script__.changelog.HTML}\n\t\t\t\t\t\t\t<button id="close-changelog" class="add-action-button">Close</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t`,document.getElementById("close-changelog").addEventListener("click",()=>{t.remove()})}}updateMenuElements(){}closeAllMenus(){this.closeAllBottomMenus()}closeAllBottomMenus(){document.querySelectorAll(".bottom-tool-menu").forEach(t=>t.classList.remove("show")),document.querySelectorAll(".bottom-tool-trigger").forEach(t=>t.classList.remove("active")),document.querySelectorAll(".submenu").forEach(t=>t.classList.remove("show"))}positionBottomMenu(t,e){e.style.left="",e.style.right="",e.style.top="",e.style.bottom="";const n=()=>{if(!e.classList.contains("show"))return;const i=e.getBoundingClientRect(),o=t.getBoundingClientRect(),a=window.innerWidth,s=window.innerHeight;o.left+i.width<=a?(e.style.left=`${o.left}px`,e.style.right="auto"):(e.style.right=a-o.right+"px",e.style.left="auto");o.top>=i.height?(e.style.bottom=s-o.top+"px",e.style.top="auto"):(e.style.top=`${o.bottom}px`,e.style.bottom="auto"),requestAnimationFrame(n)};requestAnimationFrame(n)}positionSubmenu(t,e){t.style.left="",t.style.right="",t.style.top="",t.style.bottom="";const n=()=>{if(!t.classList.contains("show"))return;const i=t.getBoundingClientRect(),o=e.getBoundingClientRect(),a=window.innerWidth,s=window.innerHeight,r=a-o.right,l=o.left;r<i.width+20&&l>r&&(t.style.left="auto",t.style.right="calc(100% + 4px)");const d=s-o.bottom,c=o.top;i.bottom>s&&c>d&&(t.style.top="auto",t.style.bottom="0"),requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionLevelsMenu(t,e){e.style.left="",e.style.right="",e.style.top="",e.style.bottom="";const n=()=>{if(!e.classList.contains("show"))return;const i=e.getBoundingClientRect(),o=t.getBoundingClientRect(),a=window.innerWidth,s=window.innerHeight;o.right+i.width<=a?(e.style.left=`${o.right+8}px`,e.style.right="auto"):(e.style.right=a-o.left-8+"px",e.style.left="auto");let r=o.top+(o.height-i.height)/2;r<0&&(r=0),r+i.height>s&&(r=s-i.height),e.style.top=`${r}px`,e.style.bottom="auto",requestAnimationFrame(n)};requestAnimationFrame(n)}createRevertMenu(t,e){document.querySelectorAll(".levels-menu").forEach(t=>t.remove());const n=document.createElement("div");n.className="warning-menu",t.appendChild(n),n.addEventListener("click",t=>{document.body.querySelectorAll(".levels-menu.show").forEach(t=>t.classList.remove("show"))});const i=async(t,e)=>{await this.wikishield.executeScript({actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{summary:(0,l.getWarningFromLookup)(t).summary}},{name:"warn",params:{warningType:t,level:e}},{name:"highlight",params:{}},{name:"if",condition:"atFinalWarning",actions:[{name:"if",condition:"operatorNonAdmin",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]}]}]}),this.selectedMenu=null,this.updateMenuElements()};for(const[t,a]of Object.entries(l.warnings.revert)){const s=document.createElement("div");s.className="warning-menu-section";const r=document.createElement("h2");r.textContent=t,s.appendChild(r);const d=document.createElement("div");d.className="menu-divider",s.appendChild(d);for(const t of a){var o;if("function"==typeof t.show&&!t.show(e))continue;const n=document.createElement("div");n.className="warning-menu-item";const a=document.createElement("span");a.className=null!==(o=`icon ${t.icon}`)&&void 0!==o?o:"icon fas fa-mouse-pointer",n.appendChild(a);const r=document.createElement("span");r.className="warning-menu-title",r.textContent=t.title,n.appendChild(r);const d=document.createElement("span");d.className="fas fa-circle-question",d.dataset.tooltip=t.description,n.appendChild(d),this.addTooltipListener(d);const c=document.createElement("span");c.className="warning-menu-button warning-menu-levels-button",c.textContent="advanced",n.appendChild(c);const u=document.createElement("div");u.className="levels-menu bottom-tool-menu";for(const[e,n]of Object.entries(t.templates||{})){if(null===n||!1===n.exists)continue;const o=document.createElement("span");o.className="levels-menu-item",o.textContent=n.label||e,o.style.backgroundColor=l.warningTemplateColors[e],u.appendChild(o),o.addEventListener("click",async()=>{await i(t.title,e)})}document.body.appendChild(u),c.addEventListener("click",t=>{t.stopPropagation(),u.classList.toggle("show"),document.body.querySelectorAll(".levels-menu.show").forEach(t=>{t!==u&&t.classList.remove("show")}),this.positionLevelsMenu(c,u)}),n.addEventListener("click",async e=>{e.target.closest(".warning-menu-levels-button")||await i(t.title,"auto")}),s.appendChild(n)}n.appendChild(s)}}createWarnMenu(t,e){document.querySelectorAll(".levels-menu").forEach(t=>t.remove());const n=document.createElement("div");n.className="warning-menu",t.appendChild(n),n.addEventListener("click",t=>{document.body.querySelectorAll(".levels-menu.show").forEach(t=>t.classList.remove("show"))});const i=async(t,e)=>{await this.wikishield.executeScript({actions:[{name:"warn",params:{warningType:t,level:e}},{name:"highlight",params:{}}]}),this.selectedMenu=null,this.updateMenuElements()};for(const[t,a]of Object.entries(l.warnings.warn)){const s=document.createElement("div");s.className="warning-menu-section";const r=document.createElement("h2");r.textContent=t,s.appendChild(r);const d=document.createElement("div");d.className="menu-divider",s.appendChild(d);for(const t of a){var o;if("function"==typeof t.show&&!t.show(e))continue;const n=document.createElement("div");n.className="warning-menu-item";const a=document.createElement("span");a.className=null!==(o=`icon ${t.icon}`)&&void 0!==o?o:"icon fas fa-mouse-pointer",n.appendChild(a);const r=document.createElement("span");r.className="warning-menu-title",r.textContent=t.title,n.appendChild(r);const d=document.createElement("span");d.className="fas fa-circle-question",d.setAttribute("data-tooltip",t.description),n.appendChild(d),this.addTooltipListener(d);const c=document.createElement("span");c.className="warning-menu-button warning-menu-levels-button",c.textContent="advanced",n.appendChild(c);const u=document.createElement("div");u.className="levels-menu bottom-tool-menu";for(const[e,n]of Object.entries(t.templates||{})){if(null===n||!1===n.exists)continue;const o=document.createElement("span");o.className="levels-menu-item",o.textContent=n.label||e,o.style.backgroundColor=l.warningTemplateColors[e],u.appendChild(o),o.addEventListener("click",async()=>{await i(t.title,e)})}document.body.appendChild(u),c.addEventListener("click",t=>{t.stopPropagation(),u.classList.toggle("show"),document.body.querySelectorAll(".levels-menu.show").forEach(t=>{t!==u&&t.classList.remove("show")}),this.positionLevelsMenu(c,u)}),n.addEventListener("click",async e=>{e.target.closest(".warning-menu-levels-button")||await i(t.title,"auto")}),s.appendChild(n)}n.appendChild(s)}}createSubmenu(t,e){if(!t)return;const n=this.eventManager.events[e];t.innerHTML=`\n\t\t\t\t<div class="bottom-subcontent-title">${n.description}</div>\n\t\t\t`;for(const e of n.parameters||[])switch(t.innerHTML+=`<div class="bottom-subcontent-input-title">${e.title}</div>`,e.type){case"choice":const n=e.options.reduce((t,e)=>t+`<option>${e}</option>`,"");t.innerHTML+=`\n\t\t\t\t\t\t\t<select data-paramid="${e.id}">\n\t\t\t\t\t\t\t\t${n}\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t`;break;case"text":t.innerHTML+=`<input type="text" data-paramid="${e.id}">`}const i=document.createElement("button");i.innerText="Submit",i.classList.add("bottom-subcontent-button"),t.appendChild(i),i.addEventListener("click",()=>{const i={};for(const e of n.parameters||[]){const n=t.querySelector(`[data-paramid="${e.id}"]`);i[e.id]=n.value}this.wikishield.executeScript({actions:[{name:e,params:i}]}),this.closeAllBottomMenus()})}renderQueue(t,e){const n=this.elem("#queue-items");this.elem("#queue-top-items").innerText=t.length+" item"+(1===t.length?"":"s");const i=new Map;for(const t of n.children)i.set(+t.dataset.revid,t);let o=null;for(const a of t){let r=i.get(a.revid);r||(r=document.createElement("div"),r.classList.add("queue-edit"),r.dataset.revid=a.revid.toString(),r.innerHTML=this.generateEditHTML(a),a.mentionsMe&&this.wikishield.options.enableUsernameHighlighting&&(r.classList.add("queue-edit-mentions-me"),r.dataset.tooltip="This edit contains your username",this.addTooltipListener(r)),r.addEventListener("contextmenu",n=>{n.preventDefault(),this.wikishield.queue.playClickSound(),[...document.querySelectorAll(".context-menu")].forEach(t=>t.remove());const i=document.createElement("div");i.classList.add("context-menu"),i.innerHTML=s.wikishieldHTML["edit-context-menu"],document.body.appendChild(i),i.style.left=n.clientX+"px",i.style.top=n.clientY+"px",i.querySelector("#context-ores-number").innerText=Math.round(100*a.ores)||0,i.querySelector("#context-ores-number").style.color=this.getORESColor(a.ores||0);const o=i.querySelector("#context-whitelist");o&&(this.wikishield.whitelist.has(a.user.name)?o.textContent="Remove from whitelist":o.textContent="Whitelist user"),i.querySelector("#context-remove").addEventListener("click",()=>{this.wikishield.queue.playClickSound(),this.wikishield.ollamaAI&&this.wikishield.ollamaAI.cancelAnalysis(a.revid);const n=t.findIndex(t=>t.revid===a.revid);-1!==n&&(t.splice(n,1),this.removeQueueItem(a.revid),a===e&&(t.length>0?n<t.length?this.wikishield.queue.currentEdit=t[n]:this.wikishield.queue.currentEdit=t[t.length-1]:this.wikishield.queue.currentEdit=null),this.wikishield.queue.previousItems.push(a),this.renderQueue(t,this.wikishield.queue.currentEdit)),i.remove()}),i.querySelector("#context-whitelist").addEventListener("click",()=>{this.wikishield.queue.playSparkleSound(),this.wikishield.whitelist.has(a.user.name)?(this.wikishield.whitelist.delete(a.user.name),this.wikishield.logger.log(`Removed ${a.user.name} from whitelist`)):(this.wikishield.whitelist.set(a.user.name,Date.now()),this.wikishield.logger.log(`Added ${a.user.name} to whitelist`)),this.renderQueue(this.wikishield.queue.queue,this.wikishield.queue.currentEdit),i.remove()}),i.querySelector("#context-open-history").addEventListener("click",t=>{this.wikishield.queue.playClickSound();const e=this.wikishield.util.pageLink(`Special:PageHistory/${a.page.title}`);this.wikishield.interface.eventManager.openWikipediaLink(e,`History: ${a.page.title}`,t),i.remove()}),i.querySelector("#context-open-contribs").addEventListener("click",t=>{this.wikishield.queue.playClickSound();const e=this.wikishield.util.pageLink(`Special:Contributions/${a.user.name}`);this.wikishield.interface.eventManager.openWikipediaLink(e,`Contributions: ${a.user.name}`,t),i.remove()}),i.addEventListener("click",t=>t.stopPropagation())}),r.addEventListener("click",()=>{this.wikishield.queue.currentEdit=a,this.renderQueue(this.wikishield.queue.queue,a),a&&this.wikishield.options.enableOllamaAI&&this.wikishield.ollamaAI&&this.wikishield.ollamaAI.analyzeEdit(a).then(t=>{a.aiAnalysis=t,this.wikishield.queue.currentEdit===a&&this.wikishield.interface&&this.wikishield.interface.updateAIAnalysisDisplay(t)}).catch(t=>console.error("AI analysis failed:",t))}),n.appendChild(r)),null===o?r!==n.firstChild&&n.insertBefore(r,n.firstChild):r.previousSibling!==o&&n.insertBefore(r,o.nextSibling),r.classList.toggle("queue-edit-current",a===e),o=r}for(const[e,n]of i.entries())t.find(t=>t.revid===e)||n.remove();this.lastCurrentEdit!==e&&(this.lastCurrentEdit=e,this.newEditSelected(e))}generateEditHTML(t,e=!0,n=!0,i=!0,o=!1){let a="";if(t.tags&&Array.isArray(t.tags))for(const e of t.tags)a+=`<span class="queue-edit-tag">${e}</span>`;const s=t.sizediff||0,r=t.comment?this.wikishield.util.escapeHtml(this.wikishield.util.maxStringLength(t.comment,100)):"",l=t.comment?this.wikishield.util.escapeHtml(t.comment):"",d=t.minor?'<span class="minor-indicator" data-tooltip="Minor edit">m</span> ':"",c=t.ores||0,u=Math.round(100*c),p=e?`<div class="queue-edit-color" data-ores-score="${u}%" data-raw-ores-score="${c}" style="background: ${this.getORESColor(c)};"></div>`:"",h=n?`\n\t\t\t\t<div class="queue-edit-title" data-tooltip="${t.page?t.page.title:t.title}">\n\t\t\t\t\t<span class="fa fa-file-lines queue-edit-icon"></span>\n\t\t\t\t\t${t.page?t.page.title:t.title}\n\t\t\t\t</div>`:"";let m="";t.user&&this.wikishield.highlighted.has(t.user.name)?m="queue-edit-user-highlight":t.user&&"object"==typeof t.user&&t.user.emptyTalkPage&&(m="queue-edit-user-empty-talk");return`\n\t\t\t\t${p}\n\t\t\t\t<div class="queue-edit-content">\n\t\t\t\t\t${h}\n\t\t\t\t\t${i?`\n\t\t\t\t<div class="queue-edit-user ${m}">\n\t\t\t\t\t<span class="fa fa-user queue-edit-icon"></span>\n\t\t\t\t\t${t.user?"string"==typeof t.user?t.user:t.user.name:"<em>Username removed</em>"}\n\t\t\t\t</div>`:""}\n\t\t\t\t\t<div class="queue-edit-summary" data-tooltip="${l}">\n\t\t\t\t\t\t<span class="fa fa-comment-dots queue-edit-icon"></span>\n\t\t\t\t\t\t${d}${r||"<em>No summary provided</em>"}\n\t\t\t\t\t</div>\n\t\t\t\t\t${o?`\n\t\t\t\t<div class="queue-edit-time" data-tooltip="${new Date(t.timestamp).toUTCString()}">\n\t\t\t\t\t<span class="fa fa-clock queue-edit-icon"></span>\n\t\t\t\t\t${this.wikishield.util.timeAgo(t.timestamp)}\n\t\t\t\t</div>`:""}\n\t\t\t\t\t<div class="queue-edit-tags">\n\t\t\t\t\t\t${a}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="queue-edit-change" style="${Math.abs(s)>=500?"font-weight: bold;":""}color: ${this.wikishield.util.getChangeColor(s)}">\n\t\t\t\t\t${this.wikishield.util.getChangeString(s)}\n\t\t\t\t</div>\n\t\t\t`}async newEditSelected(t){this.elem("#latest-edits-tab").classList.add("hidden"),this.elem("#consecutive-edits-tab").classList.add("hidden"),document.querySelectorAll("#right-top > .icons > :not(.hidden)").forEach(t=>t.classList.add("hidden")),this.hide3RRNotice(),this.hideNewerEditButton(),this.closeAllMenus();const e=this.elem("#user-contribs-level"),n=this.elem("#user-contribs-content"),i=this.elem("#page-history-content");if(n.innerHTML="",i.innerHTML="",this.removeTooltips(),null===t){this.elem("#middle-top").innerHTML="",this.elem("#page-metadata").innerHTML="",this.elem("#user-contribs-count").innerText="_ edits",e.style.display="none",this.elem("#diff-container").innerHTML="",this.elem("#protection-indicator").innerHTML="";const t=document.querySelector("#ai-analysis-container");t&&t.remove();const n=document.querySelector("#old-edit-notice");n&&n.remove();const i=document.querySelector("#user-contribs #block-count-indicator");i&&(i.style.display="none",i.innerHTML="");const o=document.querySelector("#page-history #protection-indicator");return void(o&&(o.innerHTML=""))}t.seen||(this.wikishield.statistics.reviewed++,t.seen=!0),this.stopNewerRevisionCheck(),this.startNewerRevisionCheck(t),t.consecutive.then(e=>{Object.is(this.wikishield.queue.currentEdit,t)&&(e.count<=1||"string"==typeof e.priorRev?"created"===e.priorRev&&this.elem("#right-top > .icons > .created-page").classList.remove("hidden"):(this.elem("#latest-edits-tab").classList.remove("hidden"),this.elem("#consecutive-edits-tab").classList.remove("hidden")))}),e.style.display="initial",e.style.background=l.warningTemplateColors[t.user.warningLevel]||"grey",e.innerText=t.user.warningLevel;const o=()=>{const t=e.cloneNode(!0);e.parentNode.replaceChild(t,e),this.addTooltipListener(t)};"0"!==t.user.warningLevel?this.wikishield.api.getSinglePageContent(`User talk:${t.user.name}`).then(n=>{const i=this.wikishield.queue.getWarningHistory(n);if(i.length>0){let t='<div class="tooltip-title">Warning History</div>';i.slice(0,5).forEach(e=>{const n=`${e.template}${e.level}`,i=e.article?`<span class="tooltip-item-article"> (${this.wikishield.util.escapeHtml(e.article)})</span>`:"",o=e.username?`User:${this.wikishield.util.escapeHtml(e.username)}`:e.timestamp||e.section;t+='<div class="tooltip-item">',t+=`<span class="tooltip-item-level">${this.wikishield.util.escapeHtml(n)}</span>`,t+=i,t+=`<br><span class="tooltip-item-time">${this.wikishield.util.escapeHtml(o)}</span>`,t+="</div>"}),i.length>5&&(t+=`<div class="tooltip-more">... and ${i.length-5} more</div>`),e.setAttribute("data-tooltip",t),e.setAttribute("data-tooltip-html","true")}else e.setAttribute("data-tooltip",`Warning level: ${t.user.warningLevel}`),e.setAttribute("data-tooltip-html","false")}).catch(()=>{e.setAttribute("data-tooltip",`Warning level: ${t.user.warningLevel}`),e.setAttribute("data-tooltip-html","false")}).finally(o):(e.setAttribute("data-tooltip","No warnings"),e.setAttribute("data-tooltip-html","false"),o()),this.elem("#user-contribs-count").innerText=-1===t.user.editCount?"N/A edits":t.user.editCount+" edit"+(1===t.user.editCount?"":"s");t.comment&&this.wikishield.util.escapeHtml(this.wikishield.util.maxStringLength(t.comment,150)),t.comment&&this.wikishield.util.escapeHtml(t.comment),t.minor;const a=this.wikishield.util.escapeHtml(this.wikishield.util.maxStringLength(t.page.title,50)),s=this.wikishield.util.escapeHtml(t.page.title),r=this.wikishield.util.escapeHtml(this.wikishield.util.maxStringLength(t.user.name,30)),d=this.wikishield.util.escapeHtml(t.user.name),c=this.wikishield.api.getPageProtection(t.page.title),u=this.wikishield.api.getBlockCount(t.user.name);this.elem("#middle-top").innerHTML=`\n\t\t\t\t<div style="display: flex; overflow: auto hidden; white-space: nowrap">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span class="fa fa-file-lines"></span>\n\t\t\t\t\t\t<a href="${this.wikishield.util.pageLink(t.page.title)}" target="_blank" data-tooltip="${s}">${a}</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span class="fa fa-user"></span>\n\t\t\t\t\t\t<a href="${this.wikishield.util.pageLink("Special:Contributions/"+t.user.name)}" target="_blank" data-tooltip="${d}">${r}</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span class="fa fa-pencil"></span>\n\t\t\t\t\t\t<span id="diff-size-text" style="color: ${this.wikishield.util.getChangeColor(0)}">${this.wikishield.util.getChangeString(0)}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="middle-top-comment">\n\n\t\t\t\t</div>\n\t\t\t`,requestAnimationFrame(()=>{const e=this.elem("#middle-top").children[1],n=e?e.querySelector("a"):null,i=e?e.querySelector(".fa-user"):null;n&&(n.style.color="",n.style.fontWeight="",i&&(i.style.color=""),this.wikishield.highlighted.has(t.user.name)?(n.style.setProperty("color","#f4c430","important"),n.style.setProperty("font-weight","600","important"),i&&i.style.setProperty("color","#f4c430","important")):t.user.emptyTalkPage&&(n.style.setProperty("color","#ff6b6b","important"),n.style.setProperty("font-weight","600","important"),i&&i.style.setProperty("color","#ff6b6b","important")))});const p=this.elem("#user-add-whitelist"),h=this.elem("#user-remove-whitelist");if(p&&h){this.wikishield.whitelist.has(t.user.name)?(p.style="display: none;",h.style=""):(p.style="",h.style="display: none;")}const m=this.elem("#user-highlight"),g=this.elem("#user-unhighlight");if(m&&g){this.wikishield.highlighted.has(t.user.name)?(m.style="display: none;",g.style=""):(m.style="",g.style="display: none;")}c.then(t=>{const e=document.querySelector("#page-history #protection-indicator");if(e)if(t.protected){let n="🔒",i="Protected";"full"===t.level?(n="🔒",i="Fully protected"):"semi"===t.level?(n="🔓",i="Semi-protected"):"extended"===t.level&&(n="🔐",i="Extended confirmed protected"),e.innerHTML=`<span style="cursor: help;" data-tooltip="${i}">${n}</span>`,this.addTooltipListener(e.querySelector("[data-tooltip]"))}else e.innerHTML=""}),u.then(async e=>{const n=document.querySelector("#user-contribs #block-count-indicator");if(n)if(e>0){const i=await this.wikishield.api.getBlockHistory(t.user.name);let o=`<div class="tooltip-title">🚫 Block History (${e} total)</div>`;i.length>0&&(i.forEach(t=>{var e;let n=t.user||"Unknown";n=n.replace(/<[^>]*>/g,"");const i=new Date(t.timestamp).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"});let a=(null===(e=t.params)||void 0===e?void 0:e.duration)||"Unknown duration";a=a.replace(/<[^>]*>/g,"");let s=t.comment||"No reason specified";s=s.replace(/<[^>]*>/g,""),o+='<div class="tooltip-item">',o+=`<span class="tooltip-item-level">By ${this.wikishield.util.escapeHtml(n)}</span><br>`,o+=`<span class="tooltip-item-time">${i} • ${this.wikishield.util.escapeHtml(a)}</span><br>`,o+=`<span class="tooltip-item-article">${this.wikishield.util.escapeHtml(s)}</span>`,o+="</div>"}),e>i.length&&(o+=`<div class="tooltip-more">... and ${e-i.length} more</div>`)),n.style.display="initial",n.setAttribute("data-tooltip",o),n.setAttribute("data-tooltip-html","true"),n.innerHTML=`${e}×`,n.style.cursor="help",this.addTooltipListener(n)}else n.style.display="none",n.innerHTML="",n.removeAttribute("data-tooltip"),n.removeAttribute("data-tooltip-html")}),[...this.elem("#middle-top").querySelectorAll("[data-tooltip]")].forEach(t=>{this.addTooltipListener(t)});const b=this.elem("#page-metadata");if(b){const e=[];t.page.dateFormat&&"Unknown"!==t.page.dateFormat&&e.push(t.page.dateFormat),t.page.englishVariant&&"Unknown"!==t.page.englishVariant&&e.push(t.page.englishVariant),b.innerHTML=e.length>0?e.join(" • "):""}for(const e of t.user.contribs){const t=e.revid===this.wikishield.queue.currentEdit.revid?"queue-edit-current":"";n.innerHTML+=`\n\t\t\t\t\t<div class="queue-edit ${t}" data-revid="${e.revid}">\n\t\t\t\t\t\t${this.generateEditHTML(e,!1,!0,!1,!0)}\n\t\t\t\t\t</div>\n\t\t\t\t`}for(const e of t.page.history){const t=e.revid===this.wikishield.queue.currentEdit.revid?"queue-edit-current":"";i.innerHTML+=`\n\t\t\t\t\t<div class="queue-edit ${t}" data-revid="${e.revid}">\n\t\t\t\t\t\t${this.generateEditHTML(e,!1,!1,!0,!0)}\n\t\t\t\t\t</div>\n\t\t\t\t`}[...n.querySelectorAll("[data-tooltip]"),...i.querySelectorAll("[data-tooltip]")].forEach(t=>this.addTooltipListener(t)),[...n.querySelectorAll(".queue-edit")].forEach(t=>{t.addEventListener("click",()=>this.wikishield.queue.loadFromContribs(t.dataset.revid))}),[...i.querySelectorAll(".queue-edit")].forEach(t=>{t.addEventListener("click",()=>this.wikishield.queue.loadFromHistory(t.dataset.revid))});const f=document.querySelector("#old-edit-notice");if(f&&f.remove(),this.wikishield.options.enableUsernameHighlighting){const t=mw.config.get("wgUserName");if(t){this.elem("#diff-container").querySelectorAll("td").forEach(e=>{e.textContent.includes(t)&&(e.style.outline="2px solid #ffc107",e.style.outlineOffset="-2px")})}}this.updateAIAnalysisDisplay(t.aiAnalysis),this.hide3RRNotice(),t.reverts>=3&&this.show3RRNotice(t.reverts),this.updateDiffContainer(t,!1)}updateDiffContainer(t,e=!1){if(!t)return;if(document.querySelectorAll("#right-top > .tabs > .tab.selected").forEach(t=>t.classList.remove("selected")),e)this.elem("#consecutive-edits-tab").classList.add("selected"),this.elem("#diff-container").innerHTML="<table></table>",t.consecutive.then(e=>{if(!Object.is(this.wikishield.queue.currentEdit,t))return;const n=this.elem("#diff-size-text");n.innerHTML=this.wikishield.util.getChangeString(e.totalSizediff||0),n.style.color=this.wikishield.util.getChangeColor(e.totalSizediff||0),this.elem("#middle-top > .middle-top-comment").innerHTML=`\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span class="fa fa-clock"></span>\n\t\t\t\t\t\t<span id="consecutive-time" data-tooltip="${e.oldestTimestamp}">${this.wikishield.formatNotificationTimeShort(new Date(e.oldestTimestamp))}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span class="fa fa-edit"></span>\n\t\t\t\t\t\t<span id="consecutive-edits">${e.count}</span>\n\t\t\t\t\t</div>\n\t\t\t\t`,this.addTooltipListener(this.elem("#consecutive-time")),this.elem("#diff-container").innerHTML=`<table>${e.diff}</table>`});else{this.elem("#latest-edits-tab").classList.add("selected"),this.elem("#diff-container").innerHTML=`<table>${t.diff}</table>`;const e=this.elem("#diff-size-text");e.innerHTML=this.wikishield.util.getChangeString(t.sizediff||0),e.style.color=this.wikishield.util.getChangeColor(t.sizediff||0);const n=t.minor?'<span class="minor-indicator" data-tooltip="Minor edit">m</span> ':"",i=t.comment?this.wikishield.util.escapeHtml(this.wikishield.util.maxStringLength(t.comment,100)):"",o=t.comment?this.wikishield.util.escapeHtml(t.comment):"",a=this.elem("#middle-top > .middle-top-comment");a.innerHTML=`\n\t\t\t\t<span class="fa fa-comment-dots"></span>\n\t\t\t\t<span class="summary" data-tooltip="${o}">${n}${i||"<em>No summary provided</em>"}</span>\n\t\t\t`,this.addTooltipListener(a.querySelector(".summary"))}const n=this.elem("#diff-container").querySelector(".diff-addedline, .diff-deletedline");n&&setTimeout(()=>{n.scrollIntoView({behavior:"smooth",block:"center"})},100)}updateAIAnalysisDisplay(t){let e=document.querySelector("#ai-analysis-container");if(!t)return void(e&&e.remove());if(!e){const t=document.querySelector("#diff-container");if(!t)return;e=document.createElement("div"),e.id="ai-analysis-container",e.style.cssText="\n\t\t\t\t\tmargin: 12px;\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tborder-radius: 12px;\n\t\t\t\t\tbackground: linear-gradient(135deg,\n\t\t\t\t\t\trgba(102, 126, 234, 0.95) 0%,\n\t\t\t\t\t\trgba(118, 75, 162, 0.95) 50%,\n\t\t\t\t\t\trgba(102, 126, 234, 0.9) 100%);\n\t\t\t\t\t-webkit-backdrop-filter: blur(20px);\n\t\t\t\t\tbackdrop-filter: blur(20px);\n\t\t\t\t\tcolor: white;\n\t\t\t\t\tbox-shadow:\n\t\t\t\t\t\t0 8px 24px rgba(102, 126, 234, 0.4),\n\t\t\t\t\t\tinset 0 1px 0 rgba(255, 255, 255, 0.2),\n\t\t\t\t\t\tinset 0 -1px 0 rgba(0, 0, 0, 0.1);\n\t\t\t\t\tborder: 1px solid rgba(255, 255, 255, 0.15);\n\t\t\t\t\toverflow: hidden;\n\t\t\t\t\tflex-shrink: 0;\n\t\t\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t\t\t\t",t.parentElement.insertBefore(e,t)}if(t.error)return void(e.innerHTML=`\n\t\t\t\t\t<div style="display: flex; align-items: center; gap: 10px; padding: 16px; background: rgba(220, 53, 69, 0.15); border-left: 4px solid #dc3545;">\n\t\t\t\t\t\t<span class="fa fa-exclamation-triangle" style="font-size: 1.3em; color: #ff6b6b;"></span>\n\t\t\t\t\t\t<span style="font-weight: 500;">AI analysis failed: ${t.error}</span>\n\t\t\t\t\t</div>\n\t\t\t\t`);let n="";if(t.hasIssues&&t.issues&&t.issues.length>0){const e={critical:"rgba(220, 53, 69, 0.95)",major:"rgba(253, 126, 20, 0.95)",minor:"rgba(255, 193, 7, 0.95)"},i={vandalism:"fa-skull-crossbones",spam:"fa-spam",pov:"fa-balance-scale",unsourced:"fa-question-circle",attack:"fa-bomb",copyright:"fa-copyright",disruptive:"fa-circle-exclamation",error:"fa-bug",policy:"fa-gavel","ai-generated":"fa-robot"};n='<div style="display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px;">';for(const o of t.issues.slice(0,5)){const t=i[o.type]||"fa-exclamation-circle";n+=`\n\t\t\t\t\t<span style="\n\t\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\tgap: 4px;\n\t\t\t\t\t\tpadding: 4px 8px;\n\t\t\t\t\t\tbackground: ${e[o.severity]||"rgba(108, 117, 125, 0.95)"};\n\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\tfont-size: 0.75em;\n\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\tletter-spacing: 0.2px;\n\t\t\t\t\t\tbox-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);\n\t\t\t\t\t\tborder: 1px solid rgba(255, 255, 255, 0.2);\n\t\t\t\t\t\tcursor: help;\n\t\t\t\t\t\ttransition: all 0.2s ease;\n\t\t\t\t\t" data-tooltip="${this.wikishield.util.escapeHtml(o.description)}"\n\t\t\t\t\tonmouseover="this.style.transform='translateY(-1px)'; this.style.boxShadow='0 3px 10px rgba(0, 0, 0, 0.3)';"\n\t\t\t\t\tonmouseout="this.style.transform='translateY(0)'; this.style.boxShadow='0 1px 6px rgba(0, 0, 0, 0.2)';">\n\t\t\t\t\t\t<span class="fa ${t}"></span>\n\t\t\t\t\t\t${o.type}\n\t\t\t\t\t</span>\n\t\t\t\t`}t.issues.length>5&&(n+=`<span style="opacity: 0.85; font-size: 0.75em; padding: 4px 8px; background: rgba(0, 0, 0, 0.15); border-radius: 6px; font-weight: 500;">+${t.issues.length-5} more</span>`),n+="</div>"}const i=t.action||"review",o={rollback:"rgba(220, 53, 69, 0.95)","warn-and-revert":"rgba(231, 76, 60, 0.95)",warn:"rgba(253, 126, 20, 0.95)","report-aiv":"rgba(142, 68, 173, 0.95)",review:"rgba(255, 193, 7, 0.95)",approve:"rgba(40, 167, 69, 0.95)",thank:"rgba(23, 162, 184, 0.95)",welcome:"rgba(32, 201, 151, 0.95)"}[i]||"rgba(108, 117, 125, 0.95)",a={rollback:"fa-rotate-left","warn-and-revert":"fa-exclamation-triangle",warn:"fa-exclamation-triangle","report-aiv":"fa-gavel",review:"fa-eye",approve:"fa-check-circle",thank:"fa-heart",welcome:"fa-paper-plane"}[i]||"fa-question",s=t.probability||0;e.innerHTML=`\n\t\t\t<div style="padding: 10px 12px;">\n\t\t\t\t\x3c!-- Compact Header --\x3e\n\t\t\t\t<div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px;">\n\t\t\t\t\t<div style="display: flex; align-items: center; gap: 6px;">\n\t\t\t\t\t\t<span class="fa fa-robot" style="font-size: 1.1em;"></span>\n\t\t\t\t\t\t<strong style="font-size: 0.95em; letter-spacing: 0.3px;">AI Analysis</strong>\n\t\t\t\t\t\t<span style="padding: 3px 8px; background: rgba(255,255,255,0.25); border-radius: 6px; font-size: 0.8em; font-weight: 700;">\n\t\t\t\t\t\t\t${s}%\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span style="padding: 3px 8px; background: rgba(255,255,255,0.18); border-radius: 6px; font-size: 0.75em; font-weight: 600; text-transform: uppercase;">\n\t\t\t\t\t\t\t${t.confidence||"unknown"}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span style="display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; background: ${o}; border-radius: 6px; font-size: 0.8em; font-weight: 700; text-transform: uppercase; letter-spacing: 0.3px;">\n\t\t\t\t\t\t<span class="fa ${a}"></span>\n\t\t\t\t\t\t${i.replace(/-/g," ")}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- Compact Summary --\x3e\n\t\t\t\t<div style="font-size: 0.85em; line-height: 1.4; margin-bottom: 6px; opacity: 0.95;">\n\t\t\t\t\t${t.summary}\n\t\t\t\t</div>\n\n\t\t\t\t${t.reasoning?`\n\t\t\t\t<div style="font-size: 0.8em; line-height: 1.3; padding: 6px 8px; background: rgba(0,0,0,0.15); border-radius: 4px; margin-bottom: 6px; border-left: 3px solid rgba(143,163,255,0.5); opacity: 0.9;">\n\t\t\t\t\t<strong style="font-size: 0.85em;">🔍</strong> ${t.reasoning}\n\t\t\t\t</div>\n\t\t\t\t`:""}\n\n\t\t\t\t\x3c!-- Compact Recommendation --\x3e\n\t\t\t\t<div style="font-size: 0.82em; line-height: 1.3; padding: 6px 8px; background: rgba(255,255,255,0.08); border-radius: 4px; margin-bottom: ${t.hasIssues&&t.issues&&t.issues.length>0?"8px":"0"}; border-left: 3px solid rgba(40,167,69,0.6); opacity: 0.95;">\n\t\t\t\t\t<strong style="font-size: 0.85em;">💡</strong> ${t.recommendation}\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- Compact Issues --\x3e\n\t\t\t\t${n}\n\t\t\t</div>\n\t\t`,e.querySelectorAll("[data-tooltip]").forEach(t=>{this.addTooltipListener(t)})}show3RRNotice(t){if(this.hide3RRNotice(),t<3)return void console.error("Cannot show 3RR notice: improper revert count");const e=document.createElement("div");e.id="warn-3RR-notice",e.style.cssText="\n\t\t\t\tmargin: 10px 10px 0 10px;\n\t\t\t\tpadding: 8px 12px;\n\t\t\t\tbackground: #f73214;\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tcolor: #0c5460;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 8px;\n\t\t\t\tfont-size: 0.9em;\n\t\t\t\tflex-shrink: 0;\n\t\t\t",e.innerHTML=`\n\t\t\t\t<span class="fa fa-warning"></span>\n\t\t\t\t<span style="flex: 1;"><b>3RR:</b> You have made ${t} reverts on this article in the last 24 hours.</span>\n\t\t\t`;const n=this.elem("#diff-container");n&&n.parentElement&&n.parentElement.insertBefore(e,n)}hide3RRNotice(){const t=document.querySelector("#warn-3RR-notice");t&&t.remove()}showNewerEditButton(t,e){if(this.hideNewerEditButton(),!t||!e)return void console.error("Cannot show newer edit button: missing revid or page title");const n=document.createElement("div");n.id="old-edit-notice",n.setAttribute("data-newer-revision","true"),n.setAttribute("data-target-revid",t),n.setAttribute("data-target-page",e),n.style.cssText="\n\t\t\t\tmargin: 10px 10px 0 10px;\n\t\t\t\tpadding: 8px 12px;\n\t\t\t\tbackground: #d1ecf1;\n\t\t\t\tborder-left: 4px solid #17a2b8;\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tcolor: #0c5460;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 8px;\n\t\t\t\tfont-size: 0.9em;\n\t\t\t\tflex-shrink: 0;\n\t\t\t",n.innerHTML='\n\t\t\t\t<span class="fa fa-clock-rotate-left"></span>\n\t\t\t\t<span style="flex: 1;">Newer revision available on this page</span>\n\t\t\t\t<a href="#" id="view-newest-edit" style="color: #004085; font-weight: 600; text-decoration: none; white-space: nowrap;">\n\t\t\t\t\tView latest →\n\t\t\t\t</a>\n\t\t\t';const i=this.elem("#diff-container");i&&i.parentElement&&(i.parentElement.insertBefore(n,i),document.getElementById("view-newest-edit").addEventListener("click",t=>{t.preventDefault();const e=n.getAttribute("data-target-revid"),i=n.getAttribute("data-target-page");e&&i&&this.wikishield.queue.loadSpecificRevision(Number(e),i)}))}hideNewerEditButton(){const t=document.querySelector("#old-edit-notice[data-newer-revision='true']");t&&t.remove()}startNewerRevisionCheck(t){this.stopNewerRevisionCheck(),this.checkForNewerRevision(t),this.newerRevisionInterval=setInterval(()=>{this.wikishield.queue.currentEdit&&this.wikishield.queue.currentEdit.revid===t.revid?this.checkForNewerRevision(t):this.stopNewerRevisionCheck()},1e4)}stopNewerRevisionCheck(){this.newerRevisionInterval&&(clearInterval(this.newerRevisionInterval),this.newerRevisionInterval=null),this.hideNewerEditButton()}async checkForNewerRevision(t){try{const e=t.page.title,n=t.revid,i=(await this.wikishield.api.getLatestRevisions(e))[e];if(!i)return void this.hideNewerEditButton();i>n?this.showNewerEditButton(i,e):this.hideNewerEditButton()}catch(t){console.error("Failed to check for newer revision:",t),this.hideNewerEditButton()}}addTooltipListener(t){t.addEventListener("mouseenter",()=>{if(this.removeTooltips(),!t.dataset.tooltip)return;const e=document.createElement("div");e.classList.add("tooltip"),"true"===t.dataset.tooltipHtml?e.innerHTML=t.dataset.tooltip:e.innerText=t.dataset.tooltip,document.body.appendChild(e),e.offsetHeight;const n=e.getBoundingClientRect().width,i=e.getBoundingClientRect().height,o=t.getBoundingClientRect(),a=(o.left+o.right-n)/2,s=o.right<window.innerWidth-n-30,r=o.left>n+30,l=a>10&&a+n<window.innerWidth-10,d=l&&o.top>i+30,c=l&&o.bottom<window.innerHeight-i-30;d?(e.style.left=(o.left+o.right-n)/2+"px",e.style.top=o.top-i-10+"px"):c?(e.style.left=(o.left+o.right-n)/2+"px",e.style.top=o.bottom+10+"px"):s?(e.style.left=o.right+10+"px",e.style.top=o.top-4+"px"):r?(e.style.left=o.left-10-n+"px",e.style.top=o.top-4+"px"):(e.style.left=Math.max(10,(o.left+o.right-n)/2)+"px",e.style.top=Math.max(10,o.bottom+10)+"px"),e.style.opacity=1}),t.addEventListener("mouseleave",()=>{this.removeTooltips()})}removeTooltips(){[...document.querySelectorAll(".tooltip")].forEach(t=>{t.style.opacity=0,window.setTimeout(()=>t.remove(),200)})}clearQueue(){this.elem("#queue-items").innerHTML=""}removeQueueItem(t){const e=this.elem(`.queue-edit[data-revid="${t}"]`);e&&e.remove()}getORESColor(t){const e=d.colorPalettes[this.wikishield.options.selectedPalette];return e[Math.floor(t*e.length)]}elem(t){return document.querySelector(t)}escapeHtml(t){const e=document.createElement("div");return e.textContent=t,e.innerHTML}showToast(t,e,n=5e3,i="default"){const o=document.createElement("div");o.classList.add("toast-notification"),"success"===i?o.classList.add("success"):"error"===i?o.classList.add("error"):"warning"===i&&o.classList.add("warning");let a="⚠️";"success"===i?a="✓":"error"===i?a="✕":"warning"===i&&(a="⚠️"),o.innerHTML=`\n\t\t\t\t<div class="toast-icon">${a}</div>\n\t\t\t\t<div class="toast-content">\n\t\t\t\t\t<div class="toast-title">${this.escapeHtml(t)}</div>\n\t\t\t\t\t<div class="toast-message">${this.escapeHtml(e)}</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="toast-close">×</div>\n\t\t\t`,document.body.appendChild(o),setTimeout(()=>o.classList.add("show"),10);o.querySelector(".toast-close").addEventListener("click",()=>{this.hideToast(o)}),setTimeout(()=>{this.hideToast(o)},n)}hideToast(t){t&&t.parentElement&&(t.classList.add("hide"),setTimeout(()=>{t.parentElement&&t.remove()},300))}showUAAReasonDialog(t){return new Promise(e=>{const n=document.createElement("div");n.classList.add("confirmation-modal-overlay");const i=document.createElement("div");i.classList.add("confirmation-modal"),i.innerHTML=`\n\t\t\t\t\t<div class="confirmation-modal-header">\n\t\t\t\t\t\t<div class="confirmation-modal-title">Report to UAA</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="confirmation-modal-body">\n\t\t\t\t\t\tSelect reason for reporting <span class="confirmation-modal-username">${this.escapeHtml(t)}</span>:\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="confirmation-modal-footer confirmation-modal-footer-vertical">\n\t\t\t\t\t\t<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Disruptive username">Disruptive username</button>\n\t\t\t\t\t\t<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Offensive username">Offensive username</button>\n\t\t\t\t\t\t<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Promotional username">Promotional username</button>\n\t\t\t\t\t\t<button class="confirmation-modal-button confirmation-modal-button-reason" data-reason="Misleading username">Misleading username</button>\n\t\t\t\t\t\t<button class="confirmation-modal-button confirmation-modal-button-cancel">Cancel</button>\n\t\t\t\t\t</div>\n\t\t\t\t`,n.appendChild(i),document.body.appendChild(n);const o=t=>"Escape"===t.key?(t.preventDefault(),t.stopPropagation(),a(null),!1):"Tab"!==t.key?(t.preventDefault(),t.stopPropagation(),!1):void 0;document.addEventListener("keydown",o,!0);const a=t=>{document.removeEventListener("keydown",o,!0),n.classList.add("closing"),i.classList.add("closing"),setTimeout(()=>{n.remove(),e(t)},200)};i.querySelectorAll(".confirmation-modal-button-reason").forEach(t=>{t.addEventListener("click",()=>{a(t.dataset.reason)})}),i.querySelector(".confirmation-modal-button-cancel").addEventListener("click",()=>{a(null)}),n.addEventListener("click",t=>{t.target===n&&a(null)})})}showConfirmationDialog(t,e,n=null){return new Promise(i=>{const o=document.createElement("div");o.classList.add("confirmation-modal-overlay");const a=document.createElement("div");a.classList.add("confirmation-modal");const s=n?'<button class="confirmation-modal-button confirmation-modal-button-uaa">Report to UAA</button>':"";a.innerHTML=`\n\t\t\t\t\t<div class="confirmation-modal-header">\n\t\t\t\t\t\t<div class="confirmation-modal-title">${this.escapeHtml(t)}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="confirmation-modal-body">${e}</div>\n\t\t\t\t\t<div class="confirmation-modal-footer">\n\t\t\t\t\t\t${s}\n\t\t\t\t\t\t<div class="confirmation-modal-footer-right">\n\t\t\t\t\t\t\t<button class="confirmation-modal-button confirmation-modal-button-no">No</button>\n\t\t\t\t\t\t\t<button class="confirmation-modal-button confirmation-modal-button-yes">Yes</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t`,o.appendChild(a),document.body.appendChild(o);const r=t=>"Enter"===t.key?(t.preventDefault(),t.stopPropagation(),u(!0),!1):"Escape"===t.key?(t.preventDefault(),t.stopPropagation(),u(!1),!1):"Tab"!==t.key?(t.preventDefault(),t.stopPropagation(),!1):void 0;document.addEventListener("keydown",r,!0);const l=a.querySelector(".confirmation-modal-button-yes"),d=a.querySelector(".confirmation-modal-button-no"),c=a.querySelector(".confirmation-modal-button-uaa"),u=t=>{document.removeEventListener("keydown",r,!0),o.classList.add("closing"),a.classList.add("closing"),setTimeout(()=>{o.remove(),i(t)},200)};l.addEventListener("click",()=>u(!0)),d.addEventListener("click",()=>u(!1)),c&&n&&c.addEventListener("click",async()=>{document.removeEventListener("keydown",r,!0),o.classList.add("closing"),a.classList.add("closing"),setTimeout(async()=>{o.remove();const a=await this.showUAAReasonDialog(n);if(a){const t=new WikiShieldProgressBar;t.set("Reporting to UAA...",.5,"var(--main-blue)");try{await this.wikishield.reportToUAA(n,a),t.set(`Reported ${n} to UAA`,1,"var(--main-green)")}catch(e){t.set("Report failed",1,"var(--main-red)"),console.error("UAA report error:",e)}i(!1)}else{const o=await this.showConfirmationDialog(t,e,n);i(o)}},200)}),o.addEventListener("click",t=>{t.target===o&&u(!1)}),setTimeout(()=>l.focus(),50)})}}},209:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.WikiShieldAPI=void 0;e.WikiShieldAPI=class{constructor(t,e,n={}){this.wikishield=t,this.api=e,this.testingMode=n.testingMode||!1,this.logger=n.logger,this.util=n.util,this.historyCount=n.historyCount||10}async edit(t,e,n,i={}){if(this.testingMode)return console.log("Edit",{title:t,content:e,summary:n}),!0;try{return await this.api.postWithEditToken(Object.assign({},{action:"edit",title:t,text:e,summary:n,format:"json",tags:"WikiShield script"},i)),!0}catch(e){var o;return null===(o=this.logger)||void 0===o||o.log(`Could not edit page ${t}: ${e}`),!1}}async appendText(t,e,n){if(this.testingMode)return console.log("Append text",{title:t,content:e,summary:n}),!0;try{return await this.api.postWithEditToken({action:"edit",title:t,appendtext:"\n"+e,summary:n,format:"json",tags:"WikiShield script"}),!0}catch(e){return console.log(`Could not append text to page ${t}: ${e}`),!1}}async getText(t){if(""!==t)try{const e=await this.api.get({action:"query",prop:"revisions",titles:t,rvprop:"content",rvslots:"*",format:"json",formatversion:2});return e.query.pages.map(t=>[t.title,t.missing?"":t.revisions[0].slots.main.content]).reduce((t,e)=>({...t,[e[0]]:e[1]}),{})}catch(n){var e;null===(e=this.logger)||void 0===e||e.log(`Could not fetch page ${t}: ${n}`)}}async getSinglePageContent(t){try{return(await this.getText(t))[t]}catch(t){console.log("Could not fetch page",t)}}async pageExists(t){try{return!0!==(await this.api.get({action:"query",titles:t,format:"json",formatversion:2})).query.pages[0].missing}catch(n){var e;return null===(e=this.logger)||void 0===e||e.log(`Could not check if page ${t} exists: ${n}`),!1}}async getTextByRevid(t){if(""!==revids)try{const e=(await this.api.get({action:"query",prop:"revisions",revids:t,rvprop:"content",rvslots:"*",format:"json",formatversion:2})).query.pages[0];return e.missing?"":e.revisions[0].slots.main.content}catch(n){var e;null===(e=this.logger)||void 0===e||e.log(`Could not fetch page with revid ${t}: ${n}`)}}async getRevisionData(t){try{const e=(await this.api.get({action:"query",prop:"revisions",revids:t,rvprop:"ids|user|comment|timestamp|size",format:"json",formatversion:2})).query.pages[0];if(e.missing||!e.revisions||0===e.revisions.length)return null;const n=e.revisions[0];return{revid:n.revid,parentid:n.parentid,user:n.user,comment:n.comment||"",timestamp:n.timestamp,size:n.size,oldlen:n.parentid?null:0}}catch(n){var e;return null===(e=this.logger)||void 0===e||e.log(`Could not fetch revision data for revid ${t}: ${n}`),null}}async diff(t,e,n){try{return(await this.api.get({action:"compare",fromrev:e,torev:n,prop:"diff",format:"json",formatversion:2})).compare.body}catch(e){var i;null===(i=this.logger)||void 0===i||i.log(`Could not fetch diff for page ${t}: ${e}`)}}async countReverts(t,e){try{var n;const i=(await this.api.get({action:"query",prop:"revisions",titles:t,rvstart:null===(n=this.util)||void 0===n?void 0:n.utcString(new Date(Date.now()-864e5)),rvdir:"newer",rvuser:e,rvprop:"timestamp|tags",rvlimit:"max",format:"json",formatversion:2})).query.pages[0].revisions;return void 0===i?0:i.filter(t=>t.tags.some(t=>"mw-undo"===t||"mw-rollback"===t||"mw-manual-revert"===t)).length}catch(e){var i;null===(i=this.logger)||void 0===i||i.log(`Could not fetch revert count for page ${t}: ${e}`)}}async categories(t){try{return(await this.api.get({action:"query",prop:"categories",revids:t,cllimit:"max",format:"json",formatversion:2})).query.pages[0].categories}catch(n){var e;null===(e=this.logger)||void 0===e||e.log(`Could not fetch categories for revision ${t}: ${n}`)}}async consecutive(t,e){let n=0,i=0,o=null,a=null,s=null,r=null,l=e,d={},c=!1;for(;!c;){const e=await this.api.get({action:"query",prop:"revisions",titles:t,rvprop:"ids|timestamp|user|size",rvlimit:10,format:"json",formatversion:2,...d}),u=e.query.pages[0].revisions;for(let t=0;t<u.length;t++){const d=u[t];if(d.user!==l){r=d,c=!0;break}{let r;null===o&&(o=d),n++,a=d.timestamp,s=d,r=t+1<u.length?d.size-u[t+1].size:e.continue?null:d.size,null!==r&&(i+=r)}}!c&&e.continue?d=e.continue:c||(r="created",c=!0)}return null===o&&(r="outdated"),{count:n,totalSizediff:i,newestRevision:o,oldestTimestamp:a,oldestRev:s,priorRev:r,diff:"string"==typeof r?null:await this.diff(t,r.revid,o.revid)}}async contribs(t){try{return(await this.api.get({action:"query",list:"usercontribs",ucuser:t,uclimit:10,ucprop:"title|ids|timestamp|comment|flags|sizediff|tags",format:"json",formatversion:2})).query.usercontribs}catch(n){var e;null===(e=this.logger)||void 0===e||e.log(`Could not fetch contributions for user ${t}: ${n}`)}}async editCount(t){try{return(await this.api.get({action:"query",list:"users",ususers:t,usprop:"editcount",format:"json",formatversion:2})).query.users}catch(n){var e;null===(e=this.logger)||void 0===e||e.log(`Could not fetch edit count for users ${t}: ${n}`)}}async filterLog(t){try{return(await this.api.get({action:"query",list:"logevents",letype:"filter",leuser:t,lelimit:50,format:"json",formatversion:2})).query.logevents}catch(n){var e;null===(e=this.logger)||void 0===e||e.log(`Could not fetch filter log for user ${t}: ${n}`)}}async getBlockCount(t){try{const e=await this.api.get({action:"query",list:"logevents",letype:"block",letitle:`User:${t}`,leaction:"block/block",lelimit:"max",format:"json",formatversion:2});return e.query.logevents?e.query.logevents.length:0}catch(e){return console.log(`Could not fetch block count for user ${t}:`,e),0}}async getBlockHistory(t){try{return(await this.api.get({action:"query",list:"logevents",letype:"block",letitle:`User:${t}`,leaction:"block/block",lelimit:10,leprop:"user|timestamp|comment|details",format:"json",formatversion:2})).query.logevents||[]}catch(e){return console.log(`Could not fetch block history for user ${t}:`,e),[]}}async history(t){try{const e=(await this.api.get({action:"query",prop:"revisions",titles:t,rvprop:"title|ids|timestamp|comment|flags|sizediff|user|tags|size",rvlimit:11,format:"json",formatversion:2})).query.pages[0].revisions,n=Math.min(this.historyCount,e.length);for(let t=0;t<n;t++)t+1<e.length?e[t].sizediff=e[t].size-e[t+1].size:e[t].sizediff=e[t].size;return e.splice(0,this.historyCount)}catch(n){var e;null===(e=this.logger)||void 0===e||e.log(`Could not fetch history for page ${t}: ${n}`)}}async getPageProtection(t){try{const e=(await this.api.get({action:"query",titles:t,prop:"info",inprop:"protection",format:"json",formatversion:2})).query.pages[0];if(e&&e.protection&&e.protection.length>0){const t=e.protection;let n=null,i=[];for(const e of t)i.push(e.type),"sysop"===e.level?n="full":"autoconfirmed"===e.level&&"full"!==n?n="semi":"extendedconfirmed"===e.level&&"full"!==n&&(n="extended");return{protected:!0,level:n,types:i}}return{protected:!1}}catch(e){return console.log(`Could not fetch protection info for ${t}:`,e),{protected:!1}}}async getLatestRevisions(t){try{const e=t.split("|"),n={};for(const t of e)try{const e=await this.api.get({action:"query",titles:t,prop:"revisions",rvprop:"ids",rvlimit:1,format:"json"});if(e.query&&e.query.pages)for(const t in e.query.pages){const i=e.query.pages[t];i.revisions&&i.revisions.length>0&&i.title&&(n[i.title]=i.revisions[0].revid)}}catch(e){console.log(`Failed to fetch revision for ${t}: ${e}`)}return n}catch(t){var e;return null===(e=this.logger)||void 0===e||e.log(`Could not fetch latest revisions: ${t}`),{}}}async getPageMetadata(t){try{const e=await this.api.get({action:"parse",page:t,prop:"wikitext",format:"json",formatversion:2}),n=e.parse?e.parse.wikitext:"",i={dateFormat:{patterns:[{regex:/\{\{Use dmy dates/i,value:"dmy (day-month-year)"},{regex:/\{\{Use mdy dates/i,value:"mdy (month-day-year)"},{regex:/\{\{Use ymd dates/i,value:"ymd (year-month-day)"},{regex:/\{\{Use dMy dates/i,value:"dMy (day Month year)"}],default:"Unknown"},englishVariant:{patterns:[{regex:/\{\{Use British English/i,value:"British English"},{regex:/\{\{Use American English/i,value:"American English"},{regex:/\{\{Use Canadian English/i,value:"Canadian English"},{regex:/\{\{Use Australian English/i,value:"Australian English"},{regex:/\{\{Use New Zealand English/i,value:"New Zealand English"},{regex:/\{\{Use Irish English/i,value:"Irish English"},{regex:/\{\{Use South African English/i,value:"South African English"},{regex:/\{\{Use Indian English/i,value:"Indian English"},{regex:/\{\{Use Hong Kong English/i,value:"Hong Kong English"},{regex:/\{\{Use Singapore English/i,value:"Singapore English"}],default:"Unknown"}},o=(t,e)=>{for(const n of t)if(n.regex.test(e))return n.value;return null},a={};for(const[t,e]of Object.entries(i)){const i=o(e.patterns,n);a[t]=i||e.default}const s=[],r=/\{\{Use ([^}|]+)(?:\|[^}]*)?\}\}/gi;let l;for(;null!==(l=r.exec(n));){const t=l[1].trim();Object.values(i).flatMap(t=>t.patterns).some(t=>t.regex.test(l[0]))||s.push(t)}return s.length>0&&(a.otherTemplates=s),a}catch(n){var e;return null===(e=this.logger)||void 0===e||e.log(`Could not fetch metadata for page ${t}: ${n}`),{dateFormat:"Unknown",englishVariant:"Unknown"}}}async recentChanges(t,e){try{return(await this.api.get({action:"query",list:"recentchanges",rcnamespace:t,rclimit:50,rcprop:"title|ids|sizes|flags|user|tags|comment|timestamp",rctype:"edit",format:"json",rcstart:e||"",rcdir:e?"newer":"older"})).query.recentchanges}catch(t){var n;null===(n=this.logger)||void 0===n||n.log(`Could not fetch recent changes: ${t}`)}}async watchlist(t){try{return(await this.api.get({action:"query",list:"watchlist",wlnamespace:"*",allrev:!0,wllimit:25,wlprop:"title|ids|sizes|flags|user|tags|comment|timestamp",wltype:"edit",format:"json",wlstart:t||"",wldir:t?"newer":"older",wlexcludeuser:this.wikishield.username})).query.watchlist}catch(t){var e;null===(e=this.logger)||void 0===e||e.log(`Could not fetch watchlist: ${t}`)}}async ores(t){if(""!==t)try{const e=await this.api.get({action:"query",format:"json",formatversion:2,prop:"revisions",revids:t,rvprop:"oresscores|ids",rvslots:"*"});return e.query.pages.map(t=>"goodfaith"in t.revisions[0].oresscores?[t.revisions[0].revid,t.revisions[0].oresscores.goodfaith.false]:[t.revisions[0].revid,0]).reduce((t,e)=>({...t,[e[0]]:e[1]}),{})}catch(n){var e;null===(e=this.logger)||void 0===e||e.log(`Could not fetch ORES scores for revision ${t}: ${n}`)}}async usersBlocked(t){try{const e=await this.api.get({action:"query",list:"blocks",bkusers:t,bkprop:"id|user|by|timestamp|expiry|reason",format:"json",formatversion:2}),n={};return t.split("|").forEach(t=>n[t]=!1),e.query.blocks.forEach(t=>n[t.user]=!t.partial),n}catch(n){var e;null===(e=this.logger)||void 0===e||e.log(`Could not fetch blocks for users ${t}: ${n}`)}}async rollback(t,e,n){if(this.testingMode)return console.log("Rollback",{title:t,user:e,summary:n}),!0;try{const i=await this.api.rollback(t,e,{summary:n,tags:"WikiShield script"});if(null==i||!i.revid)throw new Error("Possible edit conflict.");const o=await this.getRevisionData(i.revid);if((null==o?void 0:o.user)!==this.wikishield.username)throw new Error("Possible edit conflict.");return!0}catch(t){return console.log(t),!1}}async undoEdit(t,e){if(this.testingMode)return console.log("Undo",{edit:t,reason:e}),!0;try{var n;const i=t.revid,o=t.page.title,a=await this.api.postWithToken("csrf",{action:"edit",title:o,undo:i,summary:e,tags:"WikiShield script"});if(null==a||null===(n=a.edit)||void 0===n||!n.newrevid)throw new Error("Possible edit conflict.");const s=await this.getRevisionData(a.edit.newrevid);if((null==s?void 0:s.user)!==this.wikishield.username)throw new Error("Possible edit conflict.");return!0}catch(t){return console.log("Error undoing edit:",t),!1}}async block(t,e,n,i=!1,o=!1,a=!1,s=!0){if(this.testingMode)return console.log("Block",{user:t,summary:e,duration:n}),!0;try{return await this.api.postWithToken("csrf",Object.assign({action:"block",user:t,expiry:n,reason:e,tags:"WikiShield script"},i?{nocreate:""}:{},o?{noemail:""}:{},a?{}:{allowusertalk:""},s?{anononly:""}:{})),!0}catch(t){return console.log(t),!1}}async thank(t){if(this.testingMode)return console.log("Thank",{revid:t}),!0;try{return await this.api.postWithToken("csrf",{action:"thank",rev:t}),!0}catch(t){return console.log(t),!1}}async getProtectionDetails(t){try{const e=await this.api.get({action:"query",list:"logevents",letype:"protect",letitle:t,lelimit:1}),n={edit:"all",editExpiry:"infinite",move:"all",moveExpiry:"infinite"};if(Object.keys(e).includes("params")&&Object.keys(e.params).includes("details"))for(const t of e.params.details)"edit"===t.type&&(n.edit=t.level,n.editExpiry=t.expiry),"move"===t.type&&(n.move=t.level,n.moveExpiry=t.expiry);return n}catch(t){console.log(t)}}async protect(t,e,n){if(this.testingMode)return console.log("Protect",{page:t,summary:e,details:n}),!0;try{return await this.api.postWithToken("csrf",{action:"protect",title:t,reason:e,protections:`edit=${n.edit}|move=${n.move}`,expiry:`${n.editExpiry}|${n.moveExpiry}`,tags:"WikiShield script"}),!0}catch(t){return console.log(t),!1}}async get(t){return await this.api.get(t)}async postWithToken(t,e){return await this.api.postWithToken(t,e)}}},224:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.WikiShield=void 0;var i=n(877),o=n(596),a=n(207),s=n(551),r=n(270),l=n(209),d=n(572),c=n(474);e.WikiShield=class{constructor(t){this.__script__=i.__script__,this.interface=new a.WikiShieldInterface(this),this.logger=new s.WikiShieldLog,this.util=new r.WikiShieldUtil,this.api=new l.WikiShieldAPI(this,new mw.Api,{testingMode:this.testingMode||!1,logger:this.logger,util:this.util,historyCount:i.__script__.config.historyCount}),this.queue=null,this.noAutoWelcomeList=new Set,this.ollamaAI=null,this.aivReports=[],this.uaaReports=[],this.rights={rollback:!1,protect:!1,block:!1},this.username=mw.config.values.wgUserName,this.mostRecentWatchlist=this.util.utcString(new Date),this.notifications=[],this.watchlist=[],this.testingMode=!1,this.tempCurrentEdit=null,this.lastSeenRevision=null,this.wikishieldData=t,this.wikishieldEventData=null,this.WikiShieldProgressBar=c.WikiShieldProgressBar}async init(){const t=await this.load();this.loadedChangelog=this.loadChangelogVersion(t.changelog),this.whitelist=this.loadWhitelist(t.whitelist),this.highlighted=this.loadHighlighted(t.highlighted),this.queueWidth=t.queueWidth||mw.storage.store.getItem("WikiShield:QueueWidth")||"15vw",this.detailsWidth=t.detailsWidth||mw.storage.store.getItem("WikiShield:DetailsWidth")||"15vw",this.statistics=this.loadStats(t.statistics),this.options=this.loadOptions(t.options),this.handleLoadingReported(),this.handleLoadingNotifications(),this.handleLoadingWatchlist(),this.highlightCleanupInterval=setInterval(()=>{this.cleanupExpiredHighlights()},3e4),this.options.enableOllamaAI&&(this.ollamaAI=new d.WikiShieldOllamaAI(this.options.ollamaServerUrl,this.options.ollamaModel,{enableOllamaAI:this.options.enableOllamaAI,enableEditAnalysis:this.options.enableEditAnalysis}),this.logger.log("Ollama AI integration enabled")),this.startInterface()}loadChangelogVersion(t){const e=null!=t?t:mw.storage.store.getItem("WikiShield:ChangelogVersion");return e||(mw.storage.store.setItem("WikiShield:ChangelogVersion",0),0)}loadOptions(t){let e={};try{e=null!=t?t:JSON.parse(mw.storage.store.getItem("WikiShield:Settings"))}catch(t){}e=e||{};for(const t in o.defaultSettings){const n=e[t];if(void 0===n)e[t]=o.defaultSettings[t];else if("object"==typeof n&&!Array.isArray(n))for(const e in o.defaultSettings[t])void 0===n[e]&&(n[e]=o.defaultSettings[t][e])}for(const t of null!==(n=e.controlScripts)&&void 0!==n?n:[]){var n;"string"==typeof t.keys&&(t.keys=[t.keys],t.keys=t.keys.map(t=>t.toLowerCase())),t.actions=t.actions.flatMap(t=>("rollbackAndWarn"===t.name&&(t=[{name:"rollback",params:{}},{name:"warn",params:{warningType:t.params.warningType||"Vandalism",level:t.params.level||"auto"}}]),t))}return e}loadWhitelist(t){try{const e=null!=t?t:JSON.parse(mw.storage.store.getItem("WikiShield:Whitelist"));return e&&e.length>0?"string"==typeof e[0]?new Map(e.map(t=>[t,Date.now()])):new Map(e):new Map}catch(t){return new Map}}loadHighlighted(t){try{const e=null!=t?t:JSON.parse(mw.storage.store.getItem("WikiShield:Highlighted"));return new Map(e||[])}catch(t){return new Map}}loadStats(t){let e;try{e=null!=t?t:JSON.parse(mw.storage.store.getItem("WikiShield:Statistics"))}catch(t){}return e=e||{reviewed:0,reverts:0,reports:0,warnings:0,welcomes:0,whitelisted:0,highlighted:0,blocks:0,sessionStart:Date.now()},void 0===e.warnings&&(e.warnings=0),void 0===e.welcomes&&(e.welcomes=0),void 0===e.whitelisted&&(e.whitelisted=0),void 0===e.highlighted&&(e.highlighted=0),void 0===e.blocks&&(e.blocks=0),void 0===e.sessionStart&&(e.sessionStart=Date.now()),e}async startInterface(){const t=await mw.user.getRights();this.rights.rollback=t.includes("rollback"),this.rights.protect=t.includes("protect"),this.rights.block=t.includes("block"),this.interface.build(),this.handleUpdatingContributions()}async updateMyContributions(){try{const t=await this.api.api.get({action:"query",list:"users",ususers:this.username,usprop:"editcount"});if(t.query&&t.query.users&&t.query.users[0]){const e=t.query.users[0].editcount||0,n=document.querySelector("#stat-total-contribs");n&&(n.textContent=e.toLocaleString())}}catch(t){console.log("Failed to fetch user contribution count:",t)}}handleUpdatingContributions(){this.updateMyContributions(),window.setTimeout(()=>{this.handleUpdatingContributions()},1e4)}cleanupExpiredHighlights(){const t=Date.now();let e=!1;for(const[n,i]of this.highlighted.entries())t>=i&&(this.highlighted.delete(n),e=!0,this.logger.log(`Removed expired highlight for user: ${n}`));e&&this.queue&&this.interface&&this.interface.renderQueue(this.queue.queue,this.queue.currentEdit)}start(){this.interface.start(),this.queue.fetchRecentChanges()}async revert(t,e,n=!1){if(!t)return!1;const i=`Reverted ${n?"[[WP:AGF|good faith]] ":""}edits by [[Special:Contributions/${t.user.name}|${t.user.name}]] ([[User talk:${t.user.name}|talk]])${e?": "+e:""} ([[WP:WikiShield|WS]])`;if(!this.rights.rollback)return!1;return await this.api.rollback(t.page.title,t.user.name,i)?(this.statistics.reverts++,this.updateMyContributions(),!0):(this.interface.showToast("Revert Failed",`Could not revert edits on "${t.page.title}" - a newer edit may have been made`,5e3,"error"),!1)}async warnUser(t,e,n,i,o){let a=await this.api.getSinglePageContent(`User talk:${t}`);const s=this.util.monthSectionName();a.match(`== ?${s} ?==`)||(a+=`\n== ${s} ==\n`);const r=a.split(/(?=== ?[\w\d ]+ ?==)/g);let l="";if("auto"!==n)l=e.templates[n];else{const t=this.queue.getWarningLevel(a).toString();l="function"==typeof e.auto?e.templates[e.auto(this.queue.currentEdit)]:e.templates[e.auto[t]]}if(!l)return;for(let t in r)if(r[t].match(new RegExp(`== ?${s} ?==`))){r[t]+=`\n\n{{${l.template}|${i}|${l.additional||""}}} ~~~~`;break}const d=r.join("").replace(/(\n){3,}/g,"\n\n"),c=l.template.match(/(\d(?:im)?)\s*$/),u=c?c[1]:null,p=i?u?`Message about [[Special:Diff/${o}|your edit]] on [[${i}]] (level ${u}) ([[WP:WikiShield|WS]])`:`Message about [[Special:Diff/${o}|your edit]] on [[${i}]] ([[WP:WikiShield|WS]])`:u?`Message about your edits (level ${u}) ([[WP:WikiShield|WS]])`:"Message about your edits ([[WP:WikiShield|WS]])";await this.api.edit(`User talk:${t}`,d,p),this.statistics.warnings++;try{const e=this.util.expiryToMilliseconds(this.options.watchlistExpiry);if(e>0){var h;const n=new Date(Date.now()+e);await this.api.postWithToken("watch",{action:"watch",titles:`User talk:${t}`,expiry:e===1/0?"infinity":null===(h=this.util)||void 0===h?void 0:h.utcString(n)})}}catch(e){console.log(`Could not add User talk:${t} to watchlist:`,e)}u&&this.queue.currentEdit&&this.queue.currentEdit.user.name===t&&(this.queue.currentEdit.user.warningLevel=u)}async loadReportedUsers(){try{const t=await this.api.getText(`${i.__script__.pages.AVI}|${i.__script__.pages.UAA}`),e=new RegExp("{{(?:(?:ip)?vandal|user-uaa)\\|(?:1=)?(.+?)}}","gi");t&&t[i.__script__.pages.AVI]?this.aivReports=[...t[i.__script__.pages.AVI].matchAll(e)].map(t=>t[1]):(console.warn("AVI content not found, skipping AVI reports"),this.aivReports=[]),t&&t[i.__script__.pages.UAA]?this.uaaReports=[...t[i.__script__.pages.UAA].matchAll(e)].map(t=>t[1]):(console.warn("UAA content not found, skipping UAA reports"),this.uaaReports=[])}catch(t){console.log("Error while fetching reported users",t),this.aivReports=this.aivReports||[],this.uaaReports=this.uaaReports||[]}}async handleLoadingReported(){await this.loadReportedUsers(),window.setTimeout(()=>{this.handleLoadingReported()},15e3)}async loadNotifications(){try{var t,e,n;const[u,p,h]=await Promise.all([this.api.api.get({action:"query",meta:"notifications",notlimit:20,notprop:"list",notfilter:"!read",notsections:"alert"}),this.api.api.get({action:"query",meta:"notifications",notlimit:20,notprop:"list",notfilter:"!read",notsections:"message"}),this.api.api.get({action:"query",prop:"revisions",titles:`User talk:${this.username}`,rvlimit:10,rvprop:"timestamp|user|comment|ids",rvdir:"older"})]),m=[];if(null!==(t=u.query)&&void 0!==t&&null!==(t=t.notifications)&&void 0!==t&&t.list){const t=Object.values(u.query.notifications.list);for(const e of t){var i,o,a,s;let t=(null===(i=e.timestamp)||void 0===i?void 0:i.mw)||(null===(o=e.timestamp)||void 0===o?void 0:o.utcmw);t=t&&"string"==typeof t&&14===t.length?`${t.slice(0,4)}-${t.slice(4,6)}-${t.slice(6,8)}T${t.slice(8,10)}:${t.slice(10,12)}:${t.slice(12,14)}Z`:(new Date).toISOString();let n="Alert";"mention"===e.type||"mention-success"===e.type?n="Mention":"thank-you-edit"===e.type?n="Thanks":"page-linked"===e.type?n="Page Link":"reverted"===e.type?n="Revert":"edit-user-talk"===e.type&&(n="Talk"),m.push({id:`alert-${e.id}`,type:"alert",subtype:e.type,timestamp:t,title:(null===(a=e.title)||void 0===a?void 0:a.full)||"Unknown page",agent:(null===(s=e.agent)||void 0===s?void 0:s.name)||"Someone",category:n,read:!1})}}if(null!==(e=p.query)&&void 0!==e&&null!==(e=e.notifications)&&void 0!==e&&e.list){const t=Object.values(p.query.notifications.list);for(const e of t){var r,l,d,c;let t=(null===(r=e.timestamp)||void 0===r?void 0:r.mw)||(null===(l=e.timestamp)||void 0===l?void 0:l.utcmw);t=t&&"string"==typeof t&&14===t.length?`${t.slice(0,4)}-${t.slice(4,6)}-${t.slice(6,8)}T${t.slice(8,10)}:${t.slice(10,12)}:${t.slice(12,14)}Z`:(new Date).toISOString();let n="Notice";"user-rights"===e.type?n="User Rights":"emailuser"===e.type&&(n="Email"),m.push({id:`notice-${e.id}`,type:"notice",subtype:e.type,timestamp:t,title:(null===(d=e.title)||void 0===d?void 0:d.full)||"Notification",agent:(null===(c=e.agent)||void 0===c?void 0:c.name)||"System",category:n,read:!1})}}const g=null===(n=h.query)||void 0===n?void 0:n.pages;if(g){const t=Object.values(g)[0].revisions||[];if(this.lastSeenRevision){for(const e of t){if(!(e.revid>this.lastSeenRevision))break;e.user!==this.username&&m.push({id:`talk-${e.revid}`,type:"talk",revid:e.revid,user:e.user,comment:e.comment||"Edit to your talk page",timestamp:e.timestamp,read:!1})}t.length>0&&(this.lastSeenRevision=Math.max(this.lastSeenRevision,t[0].revid))}else t.length>0&&(this.lastSeenRevision=t[0].revid)}let b=!1;for(const t of m){this.notifications.find(e=>e.id===t.id)||(this.notifications.unshift(t),b=!0)}b&&this.notifications.length>0&&this.queue.playNotificationSound(),this.notifications.sort((t,e)=>{const n=new Date(t.timestamp);return new Date(e.timestamp)-n}),this.notifications.length>25&&(this.notifications=this.notifications.slice(0,25)),this.updateNotificationDisplay()}catch(t){console.log("Error while fetching notifications",t)}}async handleLoadingNotifications(){await this.loadNotifications(),window.setTimeout(()=>{this.handleLoadingNotifications()},1e4)}updateNotificationDisplay(){const t=this.notifications.filter(t=>!t.read).length,e=document.querySelector("#notification-count"),n=document.querySelector("#notifications-list");e&&n&&(t>0?(e.textContent=t>9?"9+":t,e.style.display="block"):e.style.display="none",n&&(0===this.notifications.length?n.innerHTML='<div style="padding: 20px; text-align: center; color: #666;">No new notifications</div>':(n.innerHTML=this.notifications.map(t=>{const e=new Date(t.timestamp),n=this.formatNotificationTime(e);let i,o,a,s;"app"===t.type?(a=t.category||"WikiShield",i=t.agent,o=t.title,s=""):"alert"===t.type?(a=t.category||"Alert","mention"===t.subtype||"mention-success"===t.subtype?(i=`${t.agent} mentioned you`,o=`on ${t.title}`):"thank-you-edit"===t.subtype?(i=`${t.agent} thanked you`,o=`for your edit on ${t.title}`):"page-linked"===t.subtype?(i="Your page was linked",o=`from ${t.title}`):"reverted"===t.subtype?(i=`${t.agent} reverted your edit`,o=`on ${t.title}`):"edit-user-talk"===t.subtype?(i=`${t.agent} edited your talk page`,o=t.title):"emailuser"===t.subtype?(i=`${t.agent} sent you an email`,o=t.title):"foreign"===t.subtype?(i=`Alert from ${t.agent}`,o=t.title):(i=`Alert: ${t.subtype||"notification"}`,o=`${t.agent} - ${t.title}`),s=`data-page="${this.escapeHtml(t.title)}"`):"notice"===t.type?(a=t.category||"Notice","user-rights"===t.subtype?(i="Your user rights were changed",o=t.title):"emailuser"===t.subtype?(i="Email notification",o=t.title):"flow-discussion"===t.subtype?(i="New discussion activity",o=t.title):(i=`Notice: ${t.subtype||"system notification"}`,o=`${t.agent} - ${t.title}`),s=`data-page="${this.escapeHtml(t.title)}"`):(a="Talk Page",i=`${t.user} edited your talk page`,o=t.comment||"No edit summary",s=`data-revid="${t.revid}"`);return`\n\t\t\t\t\t\t\t<div class="notification-item ${t.read?"":"unread"}" data-notif-id="${t.id}" data-notif-type="${t.type}" ${s}>\n\t\t\t\t\t\t\t\t<div class="notification-header">\n\t\t\t\t\t\t\t\t\t<span class="notification-type">${a}</span>\n\t\t\t\t\t\t\t\t\t<span class="notification-time">${n}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="notification-title">${this.escapeHtml(i)}</div>\n\t\t\t\t\t\t\t\t${o?`<div class="notification-subtitle">${this.escapeHtml(o)}</div>`:""}\n\t\t\t\t\t\t\t\t${t.read?"":'<div class="notification-read">Mark as read</div>'}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`}).join(""),n.querySelectorAll(".notification-item").forEach(t=>{const e=t.querySelector(".notification-read");null==e||e.addEventListener("click",e=>{null==e||e.stopPropagation();const n=t.dataset.notifId;this.markNotificationRead(n)}),t.addEventListener("click",e=>{null==e||e.stopPropagation();const n=t.dataset.notifId;this.markNotificationRead(n);const i=t.dataset.notifType;if("alert"===i||"notice"===i){const e=t.dataset.page;e&&window.open(mw.util.getUrl(e),"_blank")}else{const e=t.dataset.revid;e&&window.open(mw.util.getUrl(`Special:Diff/${e}`),"_blank")}})}))))}addLocalNotification(t){const e={id:`local-${Date.now()}-${Math.random()}`,type:t.type||"info",title:t.title||"Notification",subtitle:t.subtitle||"",page:t.page||"",timestamp:(new Date).toISOString(),read:!1};this.notifications.unshift(e),this.updateNotificationDisplay()}escapeHtml(t){const e=document.createElement("div");return e.textContent=t,e.innerHTML}formatNotificationTime(t){const e=new Date,n=Math.floor((e-t)/1e3);if(n<0)return"Just now";if(n<60)return"Just now";if(n<3600){const t=Math.floor(n/60);return`${t} min${1!==t?"s":""} ago`}if(n<86400){const t=Math.floor(n/3600);return`${t} hour${1!==t?"s":""} ago`}if(n<604800){const t=Math.floor(n/86400);return`${t} day${1!==t?"s":""} ago`}return t.toLocaleDateString()}formatNotificationTimeShort(t){const e=new Date,n=Math.floor((e-t)/1e3);if(n<0)return"Now";if(n<60)return"Now";if(n<3600){return`${Math.floor(n/60)}m`}if(n<86400){return`${Math.floor(n/3600)}h`}if(n<604800){return`${Math.floor(n/86400)}d`}return t.toLocaleDateString()}markNotificationRead(t){const e=this.notifications.find(e=>e.id===t);e&&(e.read=!0),this.updateNotificationDisplay()}markAllNotificationsRead(){this.notifications.forEach(t=>t.read=!0),this.updateNotificationDisplay()}async loadWatchlist(){try{const t=await this.api.watchlist(this.mostRecentWatchlist),e=[];for(const n of null!=t?t:[]){let t="Alert";"edit"===n.type?t="Edit":"new"===n.type?t="New":"log"===n.type?t="Log":"external"===n.type?t="External":"categorize"===n.type&&(t="Categorize"),e.push({id:`item-${n.revid}`,type:n.type,timestamp:n.timestamp,title:n.title||"Unknown page",agent:n.user||"Someone",category:t,read:!1,comment:n.comment,revid:n.revid})}let n=!1;for(const t of e){this.watchlist.find(e=>e.id===t.id)||(this.watchlist.unshift(t),n=!0)}n&&this.watchlist.length>0&&this.queue.playWatchlistSound(),this.watchlist.sort((t,e)=>{const n=new Date(t.timestamp);return new Date(e.timestamp)-n}),this.watchlist.length>25&&(this.watchlist=this.watchlist.slice(0,25)),this.watchlist[0]&&(this.mostRecentWatchlist=this.watchlist[0].timestamp),this.updateWatchlistDisplay()}catch(t){console.log("Error while fetching watchlist",t)}}async handleLoadingWatchlist(){await this.loadWatchlist(),window.setTimeout(()=>{this.handleLoadingWatchlist()},1e4)}updateWatchlistDisplay(){const t=this.watchlist.filter(t=>!t.read).length,e=document.querySelector("#watchlist-count"),n=document.querySelector("#watchlist-list");e&&n&&(t>0?(e.textContent=t>9?"9+":t,e.style.display="block"):e.style.display="none",n&&(0===this.watchlist.length?n.innerHTML='<div style="padding: 20px; text-align: center; color: #666;">No new watchlist items</div>':(n.innerHTML=this.watchlist.map(t=>{const e=new Date(t.timestamp),n=this.formatNotificationTime(e),i=t.title,o=t.comment,a=t.category||"Watchlist item",s=`data-page="${this.escapeHtml(t.title)}"`;return`\n\t\t\t\t\t\t\t<div class="watchlist-item ${t.read?"":"unread"}" data-watchlist-id="${t.id}" data-revid="${t.revid}" data-title="${t.title}" ${s}>\n\t\t\t\t\t\t\t\t<div class="watchlist-header">\n\t\t\t\t\t\t\t\t\t<span class="watchlist-type">${a}</span>\n\t\t\t\t\t\t\t\t\t<span class="watchlist-time">${n}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="watchlist-title">${this.escapeHtml(i)}</div>\n\t\t\t\t\t\t\t\t<div class="watchlist-subtitle">By ${this.escapeHtml(t.agent)}${o?`<br>${this.escapeHtml(o)}`:""}</div>\n\t\t\t\t\t\t\t\t${t.read?"":'<div class="watchlist-read">Mark as read</div>'}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`}).join(""),n.querySelectorAll(".watchlist-item").forEach(t=>{const e=t.querySelector(".watchlist-read");null==e||e.addEventListener("click",e=>{null==e||e.stopPropagation();const n=t.dataset.watchlistId;this.markWathlistItemRead(n)}),t.addEventListener("click",e=>{null==e||e.stopPropagation();const n=t.dataset.watchlistId;this.markWathlistItemRead(n);const i=this.util.pageLink(`Special:Diff/${t.dataset.revid}`);this.interface.eventManager.openWikipediaLink(i,t.dataset.title,event)})}))))}markWathlistItemRead(t){const e=this.watchlist.find(e=>e.id===t);e&&(e.read=!0),this.updateWatchlistDisplay()}markAllWatchlistRead(){this.watchlist.forEach(t=>t.read=!0),this.updateWatchlistDisplay()}async userReportedToAiv(t,e=!0){return e&&await this.loadReportedUsers(),this.aivReports.some(e=>e.toLowerCase()===t.toLowerCase())}async userReportedToUaa(t,e=!0){return e&&await this.loadReportedUsers(),this.uaaReports.some(e=>e.toLowerCase()===t.toLowerCase())}async welcomeUser(t,e){try{const n=`User talk:${t}`,i=await this.api.getSinglePageContent(n);if(await this.api.pageExists(n))return;await this.api.edit(n,i+`\n${this.wikishieldEventData.welcomeTemplates[e]}`,"Welcome to Wikipedia! ([[WP:WikiShield|WS]])"),this.statistics.welcomes++,this.queue.queue.forEach(e=>{if(e.user&&e.user.name===t){e.user.emptyTalkPage=!1;const t=document.querySelector(`.queue-edit[data-revid="${e.revid}"]`);t&&t.remove()}}),this.interface.renderQueue(this.queue.queue,this.queue.currentEdit)}catch(t){console.log("Error while welcoming user",t)}}async checkIfProtectionRequested(t){const e=await this.api.getSinglePageContent(i.__script__.pages.RFPP),n=new RegExp(`= ?${RegExp.escape(t)} ?=`,"i");return null!==e.match(n)}async requestProtection(t,e,n){if(await this.checkIfProtectionRequested(t))return!1;await this.api.appendText(i.__script__.pages.RFPP,`\n\t\t\t\t=== [[${t}]] ===\n\t\t\t\t* {{pagelinks|${t}}}\n\t\t\t\t'''${e}''': ${n} ~~~~\n\t\t\t`.replaceAll("\t",""),`Requesting protection for [[${t}]] ([[WP:WikiShield|WS]])`),this.statistics.reports++}async reportToAIV(t,e){if((await this.api.usersBlocked(t))[t])return;if(await this.userReportedToAiv(t))return;const n=`* {{vandal|${t}}} – ${e} ~~~~`;await this.api.appendText(i.__script__.pages.AVI,n,`Reporting [[Special:Contributions/${t}|${t}]] ([[WP:WikiShield|WS]])`),this.statistics.reports++}async reportToUAA(t,e){if((await this.api.usersBlocked(t))[t])return;if(await this.userReportedToUaa(t))return;const n=`* {{user-uaa|${t}}} – ${e} ~~~~`;await this.api.appendText(i.__script__.pages.UAA,n,`Reporting [[Special:Contributions/${t}|${t}]] ([[WP:WikiShield|WS]])`),this.noAutoWelcomeList.add(t),this.statistics.reports++}keyPressed(t){if(this.interface.settings.isOpen)this.interface.settings.handleKeypress(t);else if("input"!==document.activeElement.tagName.toLowerCase()&&!(t.ctrlKey||t.altKey||t.metaKey)){" "===t.key&&t.target===document.body&&t.preventDefault();for(const e of this.options.controlScripts)e.keys.includes(t.key.toLowerCase())&&this.executeScript(e)}}async executeScript(t,e=!0,n=null,i){if(null===n){const e=[t];let o=0;for(;e.length>0;){const t=e[0];(t.name&&"if"===t.name&&this.wikishieldEventData.conditions[t.condition].check(this.queue.currentEdit)||!t.name)&&e.push(...t.actions),t.name&&"if"!==t.name&&this.interface.eventManager.events[t.name].includeInProgress&&o++,e.splice(0,1)}if(o>0){let t=0;const e=new c.WikiShieldProgressBar;n=n=>{const i="Done"===n?1:t/o;e.set(n,i,"var(--main-blue)"),t++}}else n=t=>{};i=this.queue.currentEdit||1}if(t.name&&"if"===t.name&&this.wikishieldEventData.conditions[t.condition].check(i)||!t.name)for(const o of t.actions)if("if"===o.name)e=await this.executeScript(o,e,n,i);else{const t=this.interface.eventManager.events[o.name];if((e||!t.needsContinuity)&&(t.includeInProgress&&n(t.progressDesc),1!==i||t.runWithoutEdit)){!1===await t.func(o.params,i)&&(e=!1)}}return t.name||n("Done"),e}async save(){const t={changelog:i.__script__.changelog.version,options:this.options,whitelist:[...this.whitelist.entries()],highlighted:[...this.highlighted.entries()],queueWidth:this.queueWidth,detailsWidth:this.detailsWidth,statistics:this.statistics},e=JSON.stringify(t);return await this.api.edit(`User:${mw.config.values.wgUserName}/ws-save.js`,btoa(e),"Updating WikiShield save ([[WP:WikiShield|WS]])",{minor:!0})}async load(){const t=await this.api.getSinglePageContent(`User:${mw.config.values.wgUserName}/ws-save.js`);return JSON.parse(atob(t||"e30="))}}},270:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.WikiShieldUtil=void 0;e.WikiShieldUtil=class{utcString(t){return t.getUTCFullYear()+"-"+this.padString(t.getUTCMonth()+1,2)+"-"+this.padString(t.getUTCDate(),2)+"T"+this.padString(t.getUTCHours(),2)+":"+this.padString(t.getUTCMinutes(),2)+":"+this.padString(t.getUTCSeconds(),2)}padString(t,e){for(t=t.toString();t.length<e;)t="0"+t;return t}encodeuri(t){return encodeURIComponent(t)}monthSectionName(){return["January","February","March","April","May","June","July","August","September","October","November","December"][(new Date).getUTCMonth()]+" "+(new Date).getUTCFullYear()}expiryToMilliseconds(t){var e;const n={none:0,"1 hour":36e5,"1 day":864e5,"1 week":6048e5,"1 month":24192e5,"3 months":24192e5,"6 months":24192e5,indefinite:1/0};return null!==(e=n[t])&&void 0!==e?e:n["1 hour"]}escapeHtml(t){return(t||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}pageLink(t,e="en",n=!1){return n?`https://${e}.wikipedia.org/w/index.php${t}`:`https://${e}.wikipedia.org/wiki/${this.encodeuri(t)}`}maxStringLength(t,e){return t.length>e?t.substring(0,e)+"...":t}getChangeColor(t){if(0===t)return"#888";if(t>0)return t>=1e3?"#00b894":t>=500?"#00d4a1":t>=100?"#26de81":"#55efc4";{const e=Math.abs(t);return e>=1e3?"#d63031":e>=500?"#e74c3c":e>=100?"#ff6b6b":"#ff8787"}}getChangeString(t){return t>0?"+"+t:0===t?"0":"–"+Math.abs(t).toString()}timeAgo(t){const e=Date.now()-new Date(t),n=Math.floor(e/1e3);if(n<0)return"just now";if(n>60){if(n>3600){if(n>86400){const t=Math.floor(n/60/60/24);return t+" day"+(1!==t?"s":"")+" ago"}const t=Math.floor(n/60/60);return t+" hour"+(1!==t?"s":"")+" ago"}const t=Math.floor(n/60);return t+" minute"+(1!==t?"s":"")+" ago"}return n+" second"+(1!==n?"s":"")+" ago"}}},327:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.wikishieldSettingsAllowedKeys=e.WikiShieldSettingsInterface=void 0;var i=n(172),o=n(596),a=n(372),s=n(680),r=n(599),l=n(103);const d=e.wikishieldSettingsAllowedKeys=["!","@","#","$","%","^","&","*","(",")","1","2","3","4","5","6","7","8","9","0","q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m","-","=","[","]","\\",";","'",",",".","/","enter","_","+","{","}","|",":",'"',"<",">","?"," ","arrowleft","arrowup","arrowdown","arrowright"];e.WikiShieldSettingsInterface=class{constructor(t){this.wikishield=t,this.contentContainer=null,this.isOpen=!1,this.keypressCallback=null}renderComponent(t,e=null){const n=e||this.contentContainer;if(n){try{(0,i.render)(null,n)}catch(t){}for(;n.firstChild;)n.removeChild(n.firstChild);(0,i.render)(t,n)}}clearContent(){if(this.contentContainer){try{(0,i.render)(null,this.contentContainer)}catch(t){}for(;this.contentContainer.firstChild;)this.contentContainer.removeChild(this.contentContainer.firstChild)}}createToggle(t,e,n){const i=document.createElement("div");i.classList.add("settings-toggle"),e&&i.classList.add("active"),t.appendChild(i),i.innerHTML='\n\t\t\t<div class="toggle-switch">\n\t\t\t\t<div class="toggle-slider"></div>\n\t\t\t</div>\n\t\t',i.addEventListener("click",()=>{this.wikishield.queue.playClickSound(),(e=!e)?i.classList.add("active"):i.classList.remove("active"),n(e)})}createVolumeControl(t,e,n,i,o){var a,r,l;const d=document.createElement("div");d.classList.add("audio-volume-control"),t.appendChild(d);const c=null!==(a=null===(r=this.wikishield.options.volumes)||void 0===r?void 0:r[e])&&void 0!==a?a:.5,u=(null===(l=this.wikishield.options.soundMappings)||void 0===l?void 0:l[e])||e,p={};Object.entries(s.sounds).forEach(([t,e])=>{const n=e.category||"other";p[n]||(p[n]=[]),p[n].push({key:t,sound:e})});const h={ui:"UI Sounds",alert:"Alerts",warning:"Warnings",action:"Actions",notification:"Notifications",positive:"Positive",negative:"Negative",other:"Other"};let m="";["ui","alert","warning","action","notification","positive","negative","other"].forEach(t=>{p[t]&&(m+=`<optgroup label="${h[t]||t}">`,p[t].forEach(({key:t,sound:e})=>{m+=`<option value="${t}" ${t===u?"selected":""}>${e.name}</option>`}),m+="</optgroup>")}),d.innerHTML=`\n\t\t\t<div class="audio-control-header">\n\t\t\t\t<div class="audio-control-info">\n\t\t\t\t\t<div class="audio-control-title">${n}</div>\n\t\t\t\t\t<div class="audio-control-desc">${i}</div>\n\t\t\t\t</div>\n\t\t\t\t<button class="audio-preview-button">\n\t\t\t\t\t<span class="fa fa-play"></span>\n\t\t\t\t\tPreview\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<select class="audio-sound-selector">\n\t\t\t\t${m}\n\t\t\t</select>\n\t\t\t<div class="audio-control-slider-container">\n\t\t\t\t<input type="range" class="audio-volume-slider" min="0" max="1" step="0.01" value="${c}">\n\t\t\t\t<input type="number" class="audio-volume-input" min="0" max="1" step="0.01" value="${c}">\n\t\t\t</div>\n\t\t`;const g=d.querySelector(".audio-volume-slider"),b=d.querySelector(".audio-volume-input"),f=d.querySelector(".audio-preview-button"),v=d.querySelector(".audio-sound-selector"),x=t=>{const n=Math.max(0,Math.min(1,Number(t)));g.value=n,b.value=n.toFixed(2),this.wikishield.options.volumes||(this.wikishield.options.volumes={}),this.wikishield.options.volumes[e]=n};g.addEventListener("input",()=>x(g.value)),b.addEventListener("change",()=>x(b.value)),v.addEventListener("change",()=>{this.wikishield.options.soundMappings||(this.wikishield.options.soundMappings={}),this.wikishield.options.soundMappings[e]=v.value}),f.addEventListener("click",()=>{o&&o.call(this.wikishield.queue)})}createNumericInput(t,e,n,i,o,a){const s=document.createElement("div");s.classList.add("numeric-input-container"),t.appendChild(s),s.innerHTML=`\n\t\t\t<span class="fa fa-minus numeric-input-button"></span>\n\t\t\t<input type="text" class="numeric-input" value=${e}>\n\t\t\t<span class="fa fa-plus numeric-input-button"></span>\n\t\t`;const r=s.querySelector("input");s.querySelector(".fa-minus").addEventListener("click",()=>{this.wikishield.queue.playClickSound(),e=Math.round(100*Math.max(e-o,n))/100,r.value=e,a(e)}),s.querySelector(".fa-plus").addEventListener("click",()=>{this.wikishield.queue.playClickSound(),e=Math.round(100*Math.min(e+o,i))/100,r.value=e,a(e)});const l=()=>{isNaN(Number(r.value))&&(r.value=e),e=Math.round(100*Math.min(Math.max(Number(r.value),n),i))/100,e=o>=1?Math.round(e):e,r.value=e,a(e)};r.addEventListener("blur",l),r.addEventListener("keyup",t=>{"enter"===t.key.toLowerCase()&&(l(),r.blur())})}openSettings(){this.closeSettings(),this.isOpen=!0;const t=document.createElement("div");t.classList.add("settings-container"),document.body.appendChild(t),document.body.classList.add("settings-open"),t.innerHTML=r.wikishieldHTML.settings,t.addEventListener("click",this.closeSettings.bind(this)),t.querySelector(".settings").addEventListener("click",t=>t.stopPropagation()),t.querySelector("#settings-general-button").classList.add("selected"),this.contentContainer=t.querySelector(".settings-right"),[["#settings-general-button",this.openGeneral.bind(this)],["#settings-audio-button",this.openAudio.bind(this)],["#settings-appearance-button",this.openAppearance.bind(this)],["#settings-controls-button",this.openControls.bind(this)],["#settings-ai-button",this.openAI.bind(this)],["#settings-gadgets-button",this.openGadgets.bind(this)],["#settings-whitelist-button",this.openWhitelist.bind(this)],["#settings-highlight-button",this.openHighlighted.bind(this)],["#settings-statistics-button",this.openStatistics.bind(this)],["#settings-about-button",this.openAbout.bind(this)],["#settings-import-export-button",this.openImportExport.bind(this)]].forEach(([e,n])=>t.querySelector(e).addEventListener("click",()=>{this.wikishield.queue.playClickSound(),this.clearContent(),[...document.querySelectorAll(".settings-left-menu-item.selected")].forEach(t=>t.classList.remove("selected")),t.querySelector(e).classList.add("selected"),n()})),this.openGeneral()}openGeneral(){this.renderComponent((0,i.h)(l.GeneralSettings,{maxEditCount:this.wikishield.options.maxEditCount,maxQueueSize:this.wikishield.options.maxQueueSize,minOresScore:this.wikishield.options.minimumORESScore,watchlistExpiry:this.wikishield.options.watchlistExpiry,highlightedExpiry:this.wikishield.options.highlightedExpiry,namespaces:a.namespaces,selectedNamespaces:this.wikishield.options.namespacesShown,enableUsernameHighlighting:this.wikishield.options.enableUsernameHighlighting,onMaxEditCountChange:t=>{this.wikishield.options.maxEditCount=t},onMaxQueueSizeChange:t=>{this.wikishield.options.maxQueueSize=t},onMinOresScoreChange:t=>{this.wikishield.options.minimumORESScore=t},onWatchlistExpiryChange:t=>{this.wikishield.options.watchlistExpiry=t},onHighlightedExpiryChange:t=>{this.wikishield.options.highlightedExpiry=t},onNamespaceToggle:(t,e)=>{if(e){const e=new Set(this.wikishield.options.namespacesShown);e.add(t),this.wikishield.options.namespacesShown=[...e]}else this.wikishield.options.namespacesShown=this.wikishield.options.namespacesShown.filter(e=>e!==t)},onUsernameHighlightingChange:t=>{this.wikishield.options.enableUsernameHighlighting=t}}))}openAudio(){var t;this.clearContent(),this.contentContainer.innerHTML='\n\t\t\t<div class="settings-section">\n\t\t\t\t<div class="settings-section-title">Master Volume</div>\n\t\t\t\t<div class="settings-section-desc">Controls the overall volume of all sounds</div>\n\t\t\t\t<div id="master-volume-control"></div>\n\t\t\t</div>\n\n\t\t\t<div class="settings-toggles-section">\n\t\t\t\t<div class="settings-section-header">\n\t\t\t\t\t<span class="settings-section-header-icon">ORES</span>\n\t\t\t\t\t<span>ORES Alerts</span>\n\t\t\t\t</div>\n\t\t\t\t<div class="settings-section compact inline" id="sound-alert-toggle">\n\t\t\t\t\t<div class="settings-section-content">\n\t\t\t\t\t\t<div class="settings-section-title">Sound alerts for high ORES scores</div>\n\t\t\t\t\t\t<div class="settings-section-desc">Play a sound when an edit above the threshold is added to the queue</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="settings-section compact inline" id="sound-alert-ores-score">\n\t\t\t\t\t<div class="settings-section-content">\n\t\t\t\t\t\t<div class="settings-section-title">ORES score threshold</div>\n\t\t\t\t\t\t<div class="settings-section-desc">Play a sound alert when an edit with an ORES score above this value is added</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="settings-section">\n\t\t\t\t<div class="settings-section-title">Individual Sound Volumes</div>\n\t\t\t\t<div class="settings-section-desc">Adjust the volume for each sound effect and preview them</div>\n\t\t\t\t<div id="sound-volumes-container"></div>\n\t\t\t</div>\n\t\t',this.createVolumeControl(this.contentContainer.querySelector("#master-volume-control"),null,"Master Volume","Controls all sound volumes",null);const e=this.contentContainer.querySelector("#master-volume-control");e.innerHTML="";const n=document.createElement("div");n.classList.add("audio-volume-control"),e.appendChild(n);const i=null!==(t=this.wikishield.options.masterVolume)&&void 0!==t?t:.5;n.innerHTML=`\n\t\t\t<div class="audio-control-slider-container">\n\t\t\t\t<input type="range" class="audio-volume-slider" min="0" max="1" step="0.01" value="${i}">\n\t\t\t\t<input type="number" class="audio-volume-input" min="0" max="1" step="0.01" value="${i}">\n\t\t\t</div>\n\t\t`;const o=n.querySelector(".audio-volume-slider"),a=n.querySelector(".audio-volume-input"),s=t=>{const e=Math.max(0,Math.min(1,Number(t)));o.value=e,a.value=e.toFixed(2),this.wikishield.options.masterVolume=e};o.addEventListener("input",()=>s(o.value)),a.addEventListener("change",()=>s(a.value)),this.createToggle(this.contentContainer.querySelector("#sound-alert-toggle"),this.wikishield.options.enableSoundAlerts,t=>{this.wikishield.options.enableSoundAlerts=t}),this.createNumericInput(this.contentContainer.querySelector("#sound-alert-ores-score"),this.wikishield.options.soundAlertORESScore,0,1,.05,t=>{this.wikishield.options.soundAlertORESScore=t});const r=this.contentContainer.querySelector("#sound-volumes-container");[{key:"click",title:"Click Sound",desc:"Played when clicking buttons and UI elements",fn:this.wikishield.queue.playClickSound},{key:"notification",title:"Notification Sound",desc:"Played when you receive an alert or notice",fn:this.wikishield.queue.playNotificationSound},{key:"watchlist",title:"Watchlist Sound",desc:"Played when you your watchlist is updated",fn:this.wikishield.queue.playWatchlistSound},{key:"alert",title:"Alert Sound",desc:"Played when a high ORES score edit is added to the queue",fn:this.wikishield.queue.playAlertSound},{key:"whoosh",title:"Whoosh Sound",desc:"Played when items are removed or cleared",fn:this.wikishield.queue.playWhooshSound},{key:"warn",title:"Warn Sound",desc:"Played when issuing a warning to a user",fn:this.wikishield.queue.playWarnSound},{key:"rollback",title:"Rollback Sound",desc:"Played when performing a rollback action",fn:this.wikishield.queue.playRollbackSound},{key:"report",title:"Report Sound",desc:"Played when reporting a user or page",fn:this.wikishield.queue.playReportSound},{key:"thank",title:"Thank Sound",desc:"Played when thanking a user for their edit",fn:this.wikishield.queue.playThankSound},{key:"protection",title:"Protection Sound",desc:"Played when requesting page protection",fn:this.wikishield.queue.playProtectionSound},{key:"block",title:"Block Sound",desc:"Played when blocking a user",fn:this.wikishield.queue.playBlockSound},{key:"sparkle",title:"Sparkle Sound",desc:"Played when highlighting or whitelisting users",fn:this.wikishield.queue.playSparkleSound}].forEach(t=>{this.createVolumeControl(r,t.key,t.title,t.desc,t.fn)})}openAppearance(){this.renderComponent((0,i.h)(l.AppearanceSettings,{selectedPalette:this.wikishield.options.selectedPalette,colorPalettes:o.colorPalettes,onPaletteChange:t=>{this.wikishield.queue.playClickSound(),this.wikishield.options.selectedPalette=t,document.querySelectorAll(".queue-edit-color").forEach(t=>{t.style.background=this.wikishield.interface.getORESColor(+t.dataset.rawOresScore)}),this.wikishield.interface&&this.wikishield.interface.renderQueue(this.wikishield.queue.queue,this.wikishield.queue.currentEdit)}}))}openControls(){this.clearContent(),this.contentContainer.innerHTML='\n\t\t\t\t<div class="settings-section">\n\t\t\t\t\t<div class="settings-section-title">Control scripts</div>\n\t\t\t\t\t<div class="settings-section-desc">Below you can change what actions are completed when a key is pressed.</div>\n\t\t\t\t\t<div class="add-action-button new-control-script">\n\t\t\t\t\t\t<span class="fa fa-plus"></span>\n\t\t\t\t\t\tNew control script\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t';for(const t of this.wikishield.options.controlScripts){const e=document.createElement("div");e.classList.add("settings-section"),this.contentContainer.appendChild(e),this.createControlInterface(e,t)}this.updateDuplicateControls();this.contentContainer.querySelector(".new-control-script").addEventListener("click",()=>{this.wikishield.options.controlScripts.unshift({keys:[],actions:[]}),this.openControls()})}findDuplicateControls(){const t={};for(const e of this.wikishield.options.controlScripts)for(const n of e.keys)t[n]||(t[n]=0),t[n]+=1;const e=[];return Object.keys(t).forEach(n=>{t[n]>1&&e.push(n)}),e}updateDuplicateControls(){const t=this.findDuplicateControls();[...document.querySelectorAll(".control-keys > div[data-key]")].forEach(e=>{t.includes(e.dataset.key)?e.classList.add("key-duplicate"):e.classList.remove("key-duplicate")})}createControlInterface(t,e){t.innerHTML='\n\t\t\t\t<div class="control-container">\n\t\t\t\t\t<div class="control-container-title">When these keys are pressed</div>\n\t\t\t\t\t<div class="control-keys"></div>\n\t\t\t\t\t<div class="control-container-title" style="margin-top: 10px;">Complete these actions</div>\n\t\t\t\t\t<div class="control-actions"></div>\n\t\t\t\t</div>\n\t\t\t';const n=t.querySelector(".control-keys"),i=t.querySelector(".control-actions");for(const i of e.keys){const o=document.createElement("div");n.appendChild(o),o.innerHTML=`\n\t\t\t\t\t<div class="key-elem-title">${" "===i?"space":i}</div>\n\t\t\t\t\t<span class="fas fa-trash-can remove"></span>\n\t\t\t\t`,o.dataset.key=i,o.querySelector(".remove").addEventListener("click",()=>{const n=new Set(e.keys);n.delete(i),e.keys=[...n],this.createControlInterface(t,e),this.updateDuplicateControls()})}const o=document.createElement("div");n.appendChild(o),o.innerHTML='<span class="fas fa-plus"></span>',o.style.cursor="pointer",o.addEventListener("click",()=>{[...document.querySelectorAll(".key-select")].forEach(t=>t.remove());const n=document.createElement("div");n.classList.add("key-select"),n.innerHTML="Press a key...",o.parentElement.insertBefore(n,o),n.addEventListener("click",()=>n.remove()),this.keypressCallback=n=>{const i=new Set(e.keys);i.add(n),e.keys=[...i],this.createControlInterface(t,e),this.updateDuplicateControls(),this.keypressCallback=null}});for(const n of e.actions)this.createActionItem(i,n,e,()=>{this.createControlInterface(t,e)});const a=document.createElement("div");a.classList.add("control-bottom-container"),a.innerHTML='\n\t\t\t\t<div class="add-action-container"></div>\n\t\t\t\t<div>\n\t\t\t\t\t<div class="add-action-button control-delete">Delete</div>\n\t\t\t\t</div>\n\t\t\t',i.appendChild(a),a.querySelector(".control-delete").addEventListener("click",()=>{this.wikishield.queue.playClickSound(),this.wikishield.options.controlScripts.splice(this.wikishield.options.controlScripts.indexOf(e),1),this.openControls()});const s=a.querySelector(".add-action-container"),r=()=>{s.innerHTML='<div class="add-action-button new-button">Add new action</div>',s.querySelector(".new-button").addEventListener("click",()=>{this.wikishield.queue.playClickSound(),s.innerHTML='\n\t\t\t\t\t\t<select style="height: 35px;"></select>\n\t\t\t\t\t\t<div class="add-action-button cancel-button">Cancel</div>\n\t\t\t\t\t\t<div class="add-action-button create-button">Create</div>\n\t\t\t\t\t';const n=s.querySelector("select");Object.keys(this.wikishield.interface.eventManager.events).forEach(t=>{"description"in this.wikishield.interface.eventManager.events[t]&&(n.innerHTML+=`<option value="${t}">${this.wikishield.interface.eventManager.events[t].description}</option>`)}),n.innerHTML+='<option value="if">If condition</option>',s.querySelector(".cancel-button").addEventListener("click",()=>{this.wikishield.queue.playClickSound(),r()}),s.querySelector(".create-button").addEventListener("click",()=>{this.wikishield.queue.playClickSound();const i={name:n.value,params:{}};"if"===n.value&&(i.actions=[],i.condition="operatorNonAdmin"),e.actions.push(i),this.createControlInterface(t,e)})})};r()}findParentOfAction(t,e){if(-1!==e.actions.indexOf(t))return e;for(const n of e.actions)if("if"===n.name){const e=this.findParentOfAction(t,n);if(e)return e}}createActionItem(t,e,n,i){const o=document.createElement("div");if(o.classList.add("control-action"),t.appendChild(o),"if"===e.name){o.innerHTML='\n\t\t\t\t\t<div class="control-action-title">\n\t\t\t\t\t\t<div class="control-action-title-left">\n\t\t\t\t\t\t\t<span class="fas fa-circle-question"></span>\n\t\t\t\t\t\t\tIf <select></select> then:\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="control-action-title-right"></div>\n\t\t\t\t\t</div>\n\t\t\t\t';const t=o.querySelector("select");for(const e in this.wikishield.interface.eventManager.events.conditions){const n=this.wikishield.interface.eventManager.events.conditions[e];"desc"in n&&(t.innerHTML+=`<option value=${e}>${n.desc}</option>`)}t.value=e.condition,t.addEventListener("change",()=>{e.condition=t.value,i()});for(const t of e.actions)this.createActionItem(o,t,n,i)}else{const t=this.wikishield.interface.eventManager.events[e.name];o.innerHTML=`\n\t\t\t\t\t<div class="control-action-title">\n\t\t\t\t\t\t<div class="control-action-title-left">\n\t\t\t\t\t\t\t<span class="${t.icon}"></span>\n\t\t\t\t\t\t\t${t.description}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="control-action-title-right"></div>\n\t\t\t\t\t</div>\n\t\t\t\t`;for(const n of t.parameters||[])this.createItemParameter(o,n,e.params[n.id]||"",t=>{e.params[n.id]=t})}o.querySelector(".control-action-title-right").innerHTML='\n\t\t\t\t<span class="fas fa-chevron-up move-action-up"></span>\n\t\t\t\t<span class="fas fa-chevron-down move-action-down"></span>\n\t\t\t\t<span class="fas fa-trash-can delete-action"></span>\n\t\t\t',o.querySelector(".move-action-down").addEventListener("click",()=>{const t=this.findParentOfAction(e,n),o=t.actions.indexOf(e);if(t.actions.indexOf(e)===t.actions.length-1){if("if"!==t.name)return;const i=this.findParentOfAction(t,n);i.actions.splice(i.actions.indexOf(t)+1,0,e),t.actions.splice(o,1)}else{const n=t.actions[o+1];"if"===n.name?(n.actions.unshift(e),t.actions.splice(o,1)):(t.actions.splice(o,1),t.actions.splice(o+1,0,e))}i()}),o.querySelector(".move-action-up").addEventListener("click",()=>{const t=this.findParentOfAction(e,n),o=t.actions.indexOf(e);if(0===t.actions.indexOf(e)){if("if"!==t.name)return;const i=this.findParentOfAction(t,n);i.actions.splice(i.actions.indexOf(t),0,e),t.actions.splice(o,1)}else{const n=t.actions[o-1];"if"===n.name?(n.actions.push(e),t.actions.splice(o,1)):(t.actions.splice(o,1),t.actions.splice(o-1,0,e))}i()}),o.querySelector(".delete-action").addEventListener("click",()=>{const t=this.findParentOfAction(e,n);t.actions.splice(t.actions.indexOf(e),1),i()})}createItemParameter(t,e,n,i){const o=document.createElement("div");if(o.classList.add("action-parameter"),t.appendChild(o),o.innerHTML=`\n\t\t\t\t<div class="parameter-title">${e.title}</div>\n\t\t\t`,"choice"===e.type){o.innerHTML+="<select></select>";const t=o.querySelector("select");for(const n of e.options)t.innerHTML+=`<option>${n}</option>`;t.value=n,t.addEventListener("change",()=>i(t.value))}else if("text"===e.type){o.innerHTML+='<input type="text">';const t=o.querySelector("input");t.value=n,t.addEventListener("keydown",e=>{"enter"===e.key.toLowerCase()&&(i(t.value),t.blur())}),t.addEventListener("blur",()=>i(t.value))}}openAI(){this.clearContent(),this.contentContainer.innerHTML=`\n\t\t\t\t<div class="settings-section" id="enable-ollama-ai">\n\t\t\t\t\t<div class="settings-section-title">Enable Ollama AI Analysis</div>\n\t\t\t\t\t<div class="settings-section-desc">Use local AI models with complete privacy. Free & fast.</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="settings-section" id="ollama-server-url">\n\t\t\t\t\t<div class="settings-section-title">Server URL</div>\n\t\t\t\t\t<div class="settings-section-desc">\n\t\t\t\t\t\t<input type="text" id="ollama-url-input" value="${this.wikishield.options.ollamaServerUrl}"\n\t\t\t\t\t\t\tstyle="width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 4px; font-family: monospace; margin-bottom: 8px;"\n\t\t\t\t\t\t\tplaceholder="http://localhost:11434">\n\t\t\t\t\t\t<button id="test-connection-btn" style="padding: 6px 12px; background: #667eea; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 0.9em;">\n\t\t\t\t\t\t\tTest Connection\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<span id="connection-status" style="margin-left: 8px; font-size: 0.9em;"></span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="settings-section" id="ollama-model-select">\n\t\t\t\t\t<div class="settings-section-title">Model Selection</div>\n\t\t\t\t\t<div class="settings-section-desc">\n\t\t\t\t\t\t<button id="refresh-models-btn" style="padding: 6px 12px; background: #667eea; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 0.9em;">\n\t\t\t\t\t\t\t<span class="fa fa-sync"></span> Refresh Models\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<span id="models-status" style="margin-left: 8px; font-size: 0.9em;"></span>\n\t\t\t\t\t\t<div style="margin-top: 12px;" id="models-container">\n\t\t\t\t\t\t\t<div style="color: #666; font-style: italic; font-size: 0.9em;">Click "Refresh Models" to load available models</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="settings-section">\n\t\t\t\t\t<div class="settings-section-title" style="color: #dc3545;">CORS Setup Required</div>\n\t\t\t\t\t<div class="settings-section-desc" style="background: #fff3cd20; padding: 10px; border-radius: 6px; border-left: 4px solid #ffc107; font-size: 0.9em; color: #333;">\n\t\t\t\t\t\t<strong>Set environment variable:</strong> <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px; color: #333;">OLLAMA_ORIGINS</code>\n\t\t\t\t\t\t<br><strong>Value:</strong> <code style="background: #f0f0f0; padding: 2px 6px; border-radius: 3px; color: #333;">https://en.wikipedia.org,https://*.wikipedia.org</code>\n\t\t\t\t\t\t<br><br>\n\t\t\t\t\t\t<details style="cursor: pointer;">\n\t\t\t\t\t\t\t<summary style="font-weight: 600; margin-bottom: 6px;">Windows (Permanent)</summary>\n\t\t\t\t\t\t\t<ol style="margin: 6px 0; padding-left: 20px; font-size: 0.85em;">\n\t\t\t\t\t\t\t\t<li>System Properties → Environment Variables</li>\n\t\t\t\t\t\t\t\t<li>New Variable: <code style="color: #333;">OLLAMA_ORIGINS</code></li>\n\t\t\t\t\t\t\t\t<li>Value: <code style="color: #333;">https://en.wikipedia.org,https://*.wikipedia.org</code></li>\n\t\t\t\t\t\t\t\t<li>Restart Ollama</li>\n\t\t\t\t\t\t\t</ol>\n\t\t\t\t\t\t</details>\n\t\t\t\t\t\t<details style="cursor: pointer;">\n\t\t\t\t\t\t\t<summary style="font-weight: 600; margin-bottom: 6px;">Windows (Temporary)</summary>\n\t\t\t\t\t\t\t<pre style="background: #2d2d2d; color: #f8f8f2; padding: 8px; border-radius: 4px; font-size: 0.8em; margin: 6px 0;">$env:OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org" ollama serve</pre>\n\t\t\t\t\t\t</details>\n\t\t\t\t\t\t<details style="cursor: pointer;">\n\t\t\t\t\t\t\t<summary style="font-weight: 600; margin-bottom: 6px;">macOS/Linux</summary>\n\t\t\t\t\t\t\tAdd to <code>~/.bashrc</code> or <code>~/.zshrc</code>:\n\t\t\t\t\t\t\t<pre style="background: #2d2d2d; color: #f8f8f2; padding: 8px; border-radius: 4px; font-size: 0.8em; margin: 6px 0;">export OLLAMA_ORIGINS="https://en.wikipedia.org,https://*.wikipedia.org"</pre>\n\t\t\t\t\t\t\tThen: <code>source ~/.bashrc && ollama serve</code>\n\t\t\t\t\t\t</details>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="settings-section">\n\t\t\t\t\t<div class="settings-section-title">Quick Info</div>\n\t\t\t\t\t<div class="settings-section-desc" style="font-size: 0.9em;">\n\t\t\t\t\t\t<strong>Get Ollama:</strong> <a href="https://ollama.com" target="_blank" style="color: #667eea; font-weight: bold;">ollama.com</a>\n\t\t\t\t\t\t<br><strong>Popular models:</strong> llama3.2, mistral, gemma2, qwen2.5\n\t\t\t\t\t\t<br><strong>Detects:</strong> Vandalism, spam, POV, attacks, copyright issues, policy violations\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`,this.createToggle(this.contentContainer.querySelector("#enable-ollama-ai"),this.wikishield.options.enableOllamaAI,t=>{this.wikishield.options.enableOllamaAI=t,t?(this.wikishield.ollamaAI=new WikiShieldOllamaAI(this.wikishield.options.ollamaServerUrl,this.wikishield.options.ollamaModel,{enableOllamaAI:this.wikishield.options.enableOllamaAI,enableEditAnalysis:this.wikishield.options.enableEditAnalysis}),this.wikishield.logger.log("Ollama AI integration enabled")):(this.wikishield.ollamaAI=null,this.wikishield.logger.log("Ollama AI integration disabled"))});const t=this.contentContainer.querySelector("#ollama-url-input");t.addEventListener("change",()=>{this.wikishield.options.ollamaServerUrl=t.value.trim(),this.wikishield.ollamaAI&&(this.wikishield.ollamaAI.serverUrl=this.wikishield.options.ollamaServerUrl),this.wikishield.logger.log(`Ollama server URL updated: ${this.wikishield.options.ollamaServerUrl}`)});const e=this.contentContainer.querySelector("#test-connection-btn"),n=this.contentContainer.querySelector("#connection-status");e.addEventListener("click",async()=>{this.wikishield.ollamaAI&&this.wikishield.ollamaAI.cancelAllAnalyses(),n.innerHTML='<span style="color: #ffc107;">Testing...</span>',e.disabled=!0;const t=new WikiShieldOllamaAI(this.wikishield.options.ollamaServerUrl,"",{}),i=await t.testConnection();n.innerHTML=i?'<span style="color: #28a745;"><span class="fa fa-check-circle"></span> Connected!</span>':'\n\t\t\t\t\t\t<span style="color: #dc3545;">\n\t\t\t\t\t\t\t<span class="fa fa-times-circle"></span> Failed to connect\n\t\t\t\t\t\t\t<br><small style="font-size: 0.85em;">Make sure Ollama is running with CORS enabled (see instructions above)</small>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t',e.disabled=!1});const i=this.contentContainer.querySelector("#refresh-models-btn"),o=this.contentContainer.querySelector("#models-status"),a=this.contentContainer.querySelector("#models-container");i.addEventListener("click",async()=>{this.wikishield.ollamaAI&&this.wikishield.ollamaAI.cancelAllAnalyses(),o.innerHTML='<span style="color: #ffc107;">Loading...</span>',i.disabled=!0;try{const t=new WikiShieldOllamaAI(this.wikishield.options.ollamaServerUrl,"",{}),e=await t.fetchModels();if(0===e.length)a.innerHTML='<div style="color: #dc3545;">No models found. Please install models using: <code>ollama pull [model-name]</code></div>',o.innerHTML='<span style="color: #dc3545;">No models found</span>';else{o.innerHTML=`<span style="color: #28a745;"><span class="fa fa-check-circle"></span> Found ${e.length} model(s)</span>`;let t='<div style="display: grid; gap: 8px; margin-top: 8px;">';e.forEach(e=>{const n=e.name===this.wikishield.options.ollamaModel,i=(e.size/1024/1024/1024).toFixed(1);t+=`\n\t\t\t\t\t\t\t\t<div class="ollama-model-item" data-model="${e.name}" style="\n\t\t\t\t\t\t\t\t\tpadding: 12px;\n\t\t\t\t\t\t\t\t\tborder: 2px solid ${n?"#667eea":"rgba(128, 128, 128, 0.3)"};\n\t\t\t\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\t\t\t\tbackground: ${n?"rgba(102, 126, 234, 0.15)":"transparent"};\n\t\t\t\t\t\t\t\t\ttransition: all 0.2s;\n\t\t\t\t\t\t\t\t">\n\t\t\t\t\t\t\t\t\t<div style="display: flex; align-items: center; gap: 8px;">\n\t\t\t\t\t\t\t\t\t\t<span class="fa ${n?"fa-check-circle":"fa-circle"}" style="color: ${n?"#667eea":"rgba(128, 128, 128, 0.5)"};"></span>\n\t\t\t\t\t\t\t\t\t\t<strong style="flex: 1;">${e.name}</strong>\n\t\t\t\t\t\t\t\t\t\t<span style="font-size: 0.85em; opacity: 0.7;">${i} GB</span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div style="font-size: 0.85em; opacity: 0.6; margin-top: 4px;">\n\t\t\t\t\t\t\t\t\t\tModified: ${new Date(e.modified_at).toLocaleDateString()}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`}),t+="</div>",a.innerHTML=t,a.querySelectorAll(".ollama-model-item").forEach(t=>{t.addEventListener("click",()=>{this.wikishield.ollamaAI&&this.wikishield.ollamaAI.cancelAllAnalyses();const e=t.dataset.model;this.wikishield.options.ollamaModel=e,this.wikishield.ollamaAI&&(this.wikishield.ollamaAI.model=e),this.wikishield.logger.log(`Ollama model selected: ${e}`),a.querySelectorAll(".ollama-model-item").forEach(t=>{t.style.border="2px solid rgba(128, 128, 128, 0.3)",t.style.background="transparent",t.querySelector(".fa").classList.remove("fa-check-circle"),t.querySelector(".fa").classList.add("fa-circle"),t.querySelector(".fa").style.color="rgba(128, 128, 128, 0.5)"}),t.style.border="2px solid #667eea",t.style.background="rgba(102, 126, 234, 0.15)",t.querySelector(".fa").classList.remove("fa-circle"),t.querySelector(".fa").classList.add("fa-check-circle"),t.querySelector(".fa").style.color="#667eea"}),t.addEventListener("mouseenter",()=>{t.dataset.model!==this.wikishield.options.ollamaModel&&(t.style.borderColor="#667eea")}),t.addEventListener("mouseleave",()=>{t.dataset.model!==this.wikishield.options.ollamaModel&&(t.style.borderColor="rgba(128, 128, 128, 0.3)")})})}}catch(t){a.innerHTML=`\n\t\t\t\t\t\t<div class="error-box" style="color: #721c24; padding: 12px; background: #fff3cd20; border-radius: 6px; border-left: 4px solid #dc3545;">\n\t\t\t\t\t\t\t<strong>Error:</strong> ${t.message}\n\t\t\t\t\t\t\t<br><br>\n\t\t\t\t\t\t\t<strong>Troubleshooting:</strong>\n\t\t\t\t\t\t\t<ul style="margin: 8px 0; padding-left: 20px;">\n\t\t\t\t\t\t\t\t<li>Make sure Ollama is running</li>\n\t\t\t\t\t\t\t\t<li>Check that CORS is enabled (see instructions above)</li>\n\t\t\t\t\t\t\t\t<li>Verify the server URL is correct</li>\n\t\t\t\t\t\t\t\t<li>Try the "Test Connection" button first</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,o.innerHTML='<span style="color: #dc3545;"><span class="fa fa-times-circle"></span> Error loading models</span>'}i.disabled=!1})}openGadgets(){this.clearContent(),this.contentContainer.innerHTML='\n\t\t\t\t<div class="settings-toggles-section">\n\t\t\t\t\t<div class="settings-section-header">\n\t\t\t\t\t\t<span class="settings-section-header-icon">Simple</span>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t</div>\n <div class="settings-section compact inline" id="username-highlighting-toggle">\n\t\t\t\t\t\t<div class="settings-section-content">\n\t\t\t\t\t\t\t<div class="settings-section-title">Highlight username</div>\n\t\t\t\t\t\t\t<div class="settings-section-desc">If your username appears in a diff, the edit is highlighted in the queue and outlined in the diff.</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n <div class="settings-section compact inline" id="welcome-latin-toggle">\n\t\t\t\t\t\t<div class="settings-section-content">\n\t\t\t\t\t\t\t<div class="settings-section-title">Latin welcome</div>\n\t\t\t\t\t\t\t<div class="settings-section-desc">When a Latin character is detected in a username, the Latin welcome template will be used instead of the default.</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-section compact inline" id="auto-welcome-toggle">\n\t\t\t\t\t\t<div class="settings-section-content">\n\t\t\t\t\t\t\t<div class="settings-section-title">Automatic welcoming of new users</div>\n\t\t\t\t\t\t\t<div class="settings-section-desc">Automatically welcome new users with empty talk pages when moving past their constructive edits</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="settings-toggles-section">\n\t\t\t\t\t<div class="settings-section-header">\n\t\t\t\t\t\t<span class="settings-section-header-icon">AI</span>\n\t\t\t\t\t\t<span>Requires AI Analysis to be enabled</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-section compact inline" id="edit-analysis-toggle">\n\t\t\t\t\t\t<div class="settings-section-content">\n\t\t\t\t\t\t\t<div class="settings-section-title">Edit Analysis</div>\n\t\t\t\t\t\t\t<div class="settings-section-desc">Suggests actions to take on edits, such as "welcome", "thank", "rollback", "rever-and-warn"</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-section compact inline" id="username-analysis-toggle">\n\t\t\t\t\t\t<div class="settings-section-content">\n\t\t\t\t\t\t\t<div class="settings-section-title">Username Analysis</div>\n\t\t\t\t\t\t\t<div class="settings-section-desc">Flags potentially problematic usernames and prompts you to report them to UAA</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t',this.createToggle(this.contentContainer.querySelector("#username-highlighting-toggle"),this.wikishield.options.enableUsernameHighlighting,t=>{this.wikishield.options.enableUsernameHighlighting=t}),this.createToggle(this.contentContainer.querySelector("#welcome-latin-toggle"),this.wikishield.options.enableWelcomeLatin,t=>{this.wikishield.options.enableWelcomeLatin=t}),this.createToggle(this.contentContainer.querySelector("#auto-welcome-toggle"),this.wikishield.options.enableAutoWelcome,t=>{this.wikishield.options.enableAutoWelcome=t}),this.createToggle(this.contentContainer.querySelector("#edit-analysis-toggle"),this.wikishield.options.enableEditAnalysis,t=>{this.wikishield.options.enableEditAnalysis=t}),this.createToggle(this.contentContainer.querySelector("#username-analysis-toggle"),this.wikishield.options.enableUsernameAnalysis,t=>{this.wikishield.options.enableUsernameAnalysis=t})}openWhitelist(){this.clearContent(),this.contentContainer.innerHTML='\n\t\t\t\t<div class="settings-section">\n\t\t\t\t\t<div class="settings-section-title">Whitelisted users</div>\n\t\t\t\t\t<div class="settings-section-desc">This is a list of users you have whitelisted. Edits by these users will not appear in your queue.</div>\n\t\t\t\t\t<div class="user-input-container">\n\t\t\t\t\t\t<input type="text" id="whitelist-username-input" placeholder="Enter username to whitelist..." class="username-input">\n\t\t\t\t\t\t<button id="add-whitelist-user" class="add-user-button">\n\t\t\t\t\t\t\tAdd User\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="settings-section user-container"></div>\n\t\t\t';const t=this.contentContainer.querySelector(".user-container"),e=this.contentContainer.querySelector("#whitelist-username-input"),n=this.contentContainer.querySelector("#add-whitelist-user"),i=()=>{const t=e.value.trim();t&&(this.wikishield.whitelist.set(t,Date.now()),e.value="",this.openWhitelist(),this.wikishield.sounds.success())};n.addEventListener("click",i),e.addEventListener("keypress",t=>{"Enter"===t.key&&i()}),this.createUserListWithDates(t,this.wikishield.whitelist,this.wikishield.save.bind(this.wikishield))}createUserList(t,e){for(const n of[...e]){const i=document.createElement("div");t.appendChild(i),i.innerHTML=`\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<a target="_blank" href="${this.wikishield.util.pageLink(`Special:Contributions/${n}`)}">${n}</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="add-action-button remove-button">Remove</div>\n\t\t\t\t`,i.querySelector(".remove-button").addEventListener("click",()=>{e.delete(n),i.remove()})}}createUserListWithDates(t,e,n){const i=[...e.entries()].sort((t,e)=>e[1]-t[1]);for(const[o,a]of i){const i=document.createElement("div");i.style.display="flex",i.style.justifyContent="space-between",i.style.alignItems="center",i.style.padding="8px 12px",i.style.marginBottom="6px",i.style.background="rgba(255, 255, 255, 0.05)",i.style.borderRadius="8px",i.style.border="1px solid rgba(255, 255, 255, 0.1)";const s=new Date(a),r=s.toLocaleDateString()+" "+s.toLocaleTimeString();t.appendChild(i),i.innerHTML=`\n\t\t\t\t\t<div style="display: flex; flex-direction: column; gap: 4px;">\n\t\t\t\t\t\t<a target="_blank" href="${this.wikishield.util.pageLink(`Special:Contributions/${o}`)}" style="font-weight: 600;">${o}</a>\n\t\t\t\t\t\t<span style="font-size: 0.85em; opacity: 0.7;">Added: ${r}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="add-action-button remove-button">Remove</div>\n\t\t\t\t`,i.querySelector(".remove-button").addEventListener("click",()=>{e.delete(o),i.remove(),n&&n()})}0===i.length&&(t.innerHTML='<div style="opacity: 0.6; text-align: center; padding: 20px;">No users in list</div>')}openHighlighted(){const t=this.wikishield.options.highlightedExpiry;this.clearContent(),this.contentContainer.innerHTML=`\n\t\t\t\t<div class="settings-section">\n\t\t\t\t\t<div class="settings-section-title">Highlighted users</div>\n\t\t\t\t\t<div class="settings-section-desc">This is a list of users you have highlighted. Edits by these users will appear before other edits in your queue. Highlights expire based on your configured expiry time (currently: ${t}).</div>\n\t\t\t\t\t<div class="user-input-container">\n\t\t\t\t\t\t<input type="text" id="highlighted-username-input" placeholder="Enter username to highlight..." class="username-input">\n\t\t\t\t\t\t<button id="add-highlighted-user" class="add-user-button">\n\t\t\t\t\t\t\tAdd User\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="settings-section user-container"></div>\n\t\t\t`;const e=this.contentContainer.querySelector(".user-container"),n=this.contentContainer.querySelector("#highlighted-username-input"),i=this.contentContainer.querySelector("#add-highlighted-user"),o=()=>{const t=n.value.trim();if(t){const e=this.wikishield.util.expiryToMilliseconds(this.wikishield.options.highlightedExpiry),i=Date.now()+e;this.wikishield.highlighted.set(t,i),n.value="",this.openHighlighted(),this.wikishield.sounds.success()}};i.addEventListener("click",o),n.addEventListener("keypress",t=>{"Enter"===t.key&&o()}),this.createHighlightedUserList(e)}createHighlightedUserList(t){const e=[...this.wikishield.highlighted.entries()].sort((t,e)=>e[1]-t[1]);for(const[n,i]of e){const e=document.createElement("div");e.style.display="flex",e.style.justifyContent="space-between",e.style.alignItems="center",e.style.padding="8px 12px",e.style.marginBottom="6px",e.style.background="rgba(255, 255, 255, 0.05)",e.style.borderRadius="8px",e.style.border="1px solid rgba(255, 255, 255, 0.1)";const o=this.wikishield.util.expiryToMilliseconds(this.wikishield.options.highlightedExpiry),a=new Date(i-o),s=a.toLocaleDateString()+" "+a.toLocaleTimeString(),r=new Date(i),l=r.toLocaleDateString()+" "+r.toLocaleTimeString(),d=Date.now()>i;t.appendChild(e),e.innerHTML=`\n\t\t\t\t\t<div style="display: flex; flex-direction: column; gap: 4px;">\n\t\t\t\t\t\t<a target="_blank" href="${this.wikishield.util.pageLink(`Special:Contributions/${n}`)}" style="font-weight: 600;">${n}</a>\n\t\t\t\t\t\t<span style="font-size: 0.85em; opacity: 0.7;">Added: ${s}</span>\n\t\t\t\t\t\t<span style="font-size: 0.85em; opacity: 0.7; color: ${d?"#ff6b6b":"#51cf66"};">\n\t\t\t\t\t\t\t${d?"Expired":"Expires"}: ${l}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="add-action-button remove-button">Remove</div>\n\t\t\t\t`,e.querySelector(".remove-button").addEventListener("click",()=>{this.wikishield.highlighted.delete(n),e.remove()})}0===e.length&&(t.innerHTML='<div style="opacity: 0.6; text-align: center; padding: 20px;">No users highlighted</div>')}openStatistics(){const t=this.wikishield.statistics,e=t.reviewed>0?Math.round(t.reverts/t.reviewed*1e3)/10:0,n=Date.now()-(t.sessionStart||Date.now()),i=Math.floor(n/36e5),o=Math.floor(n%36e5/6e4),a=i>0?Math.round(t.reviewed/i*10)/10:0;this.clearContent(),this.contentContainer.innerHTML=`\n\t\t\t\t<div class="settings-section">\n\t\t\t\t\t<div class="settings-section-title">Statistics Overview</div>\n\t\t\t\t\t<div class="stats-grid">\n\t\t\t\t\t\t<div class="stat-card">\n\t\t\t\t\t\t\t<div class="stat-value">${t.reviewed}</div>\n\t\t\t\t\t\t\t<div class="stat-label">Edits Reviewed</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="stat-card">\n\t\t\t\t\t\t\t<div class="stat-value">${t.reverts}</div>\n\t\t\t\t\t\t\t<div class="stat-label">Reverts Made</div>\n\t\t\t\t\t\t\t<div class="stat-sublabel">${e}% revert rate</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="stat-card">\n\t\t\t\t\t\t\t<div class="stat-value">${t.warnings}</div>\n\t\t\t\t\t\t\t<div class="stat-label">Warnings Issued</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="stat-card">\n\t\t\t\t\t\t\t<div class="stat-value">${t.reports}</div>\n\t\t\t\t\t\t\t<div class="stat-label">Reports Filed</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="stat-card">\n\t\t\t\t\t\t\t<div class="stat-value">${t.welcomes}</div>\n\t\t\t\t\t\t\t<div class="stat-label">Users Welcomed</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="stat-card">\n\t\t\t\t\t\t\t<div class="stat-value">${t.blocks}</div>\n\t\t\t\t\t\t\t<div class="stat-label">Blocks Issued</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="stat-card">\n\t\t\t\t\t\t\t<div class="stat-value">${t.whitelisted}</div>\n\t\t\t\t\t\t\t<div class="stat-label">Users Whitelisted</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="stat-card">\n\t\t\t\t\t\t\t<div class="stat-value">${t.highlighted}</div>\n\t\t\t\t\t\t\t<div class="stat-label">Users Highlighted</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="stat-card">\n\t\t\t\t\t\t\t<div class="stat-value">${i}h ${o}m</div>\n\t\t\t\t\t\t\t<div class="stat-label">Session Time</div>\n\t\t\t\t\t\t\t<div class="stat-sublabel">${a} edits/hour</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="settings-section">\n\t\t\t\t\t<button id="reset-stats-button" class="danger-button">Reset Statistics</button>\n\t\t\t\t</div>\n\t\t\t`,this.contentContainer.querySelector("#reset-stats-button").addEventListener("click",()=>{confirm("Are you sure you want to reset all statistics? This cannot be undone.")&&(this.wikishield.statistics={reviewed:0,reverts:0,reports:0,warnings:0,welcomes:0,whitelisted:0,highlighted:0,blocks:0,sessionStart:Date.now()},this.openStatistics(),this.wikishield.sounds.success())})}openAbout(){this.renderComponent((0,i.h)(l.AboutSettings,{version:this.wikishield.__script__.version,changelog:this.wikishield.__script__.changelog.HTML}))}validateAndMergeSettings(t){const e={success:!1,settings:JSON.parse(JSON.stringify(this.wikishield.options)),warnings:[],appliedCount:0,error:null};if(!t||"object"!=typeof t)return e.error="Invalid settings format",e;const n=o.defaultSettings,i=Object.keys(s.sounds),r=a.namespaces.map(t=>t.id),l=["none","1 hour","1 day","1 week","1 month","3 months","6 months","indefinite"];for(const[a,s]of Object.entries(t))if(a in n)try{switch(a){case"maxQueueSize":case"maxEditCount":"number"==typeof s&&s>=1&&s<=500?(e.settings[a]=Math.floor(s),e.appliedCount++):e.warnings.push(`${a}: Invalid value (${s}), must be 1-500`);break;case"minimumORESScore":case"soundAlertORESScore":case"masterVolume":"number"==typeof s&&s>=0&&s<=1?(e.settings[a]=s,e.appliedCount++):e.warnings.push(`${a}: Invalid value (${s}), must be 0-1`);break;case"enableUsernameHighlighting":case"enableWelcomeLatin":case"enableAutoWelcome":case"enableEditAnalysis":case"enableUsernameAnalysis":case"showTemps":case"showUsers":case"sortQueueItems":case"enableOllamaAI":"boolean"==typeof s?(e.settings[a]=s,e.appliedCount++):e.warnings.push(`${a}: Invalid value (${s}), must be boolean`);break;case"volumes":if("object"==typeof s&&null!==s){let t=0;for(const[n,i]of Object.entries(s))"number"==typeof i&&i>=0&&i<=1?(e.settings.volumes||(e.settings.volumes={}),e.settings.volumes[n]=i,t++):e.warnings.push(`volumes.${n}: Invalid value (${i}), must be 0-1`);t>0&&e.appliedCount++}else e.warnings.push("volumes: Invalid format, must be object");break;case"soundMappings":if("object"==typeof s&&null!==s){let t=0;for(const[n,o]of Object.entries(s))i.includes(o)?(e.settings.soundMappings||(e.settings.soundMappings={}),e.settings.soundMappings[n]=o,t++):e.warnings.push(`soundMappings.${n}: Invalid sound (${o})`);t>0&&e.appliedCount++}else e.warnings.push("soundMappings: Invalid format, must be object");break;case"watchlistExpiry":case"highlightedExpiry":"string"==typeof s&&l.includes(s)?(e.settings[a]=s,e.appliedCount++):e.warnings.push(`${a}: Invalid value (${s}), must be one of: ${l.join(", ")}`);break;case"wiki":"string"==typeof s&&s.length>=2&&s.length<=20?(e.settings[a]=s,e.appliedCount++):e.warnings.push(`${a}: Invalid value (${s}), must be 2-20 characters`);break;case"namespacesShown":if(Array.isArray(s)){const t=s.filter(t=>r.includes(t));t.length>0?(e.settings[a]=t,e.appliedCount++,t.length<s.length&&e.warnings.push("namespacesShown: Some invalid namespace IDs were excluded")):e.warnings.push("namespacesShown: No valid namespace IDs found")}else e.warnings.push("namespacesShown: Invalid format, must be array");break;case"ollamaServerUrl":"string"==typeof s&&(s.startsWith("http://")||s.startsWith("https://"))?(e.settings[a]=s,e.appliedCount++):e.warnings.push(`${a}: Invalid URL format`);break;case"ollamaModel":"string"==typeof s?(e.settings[a]=s,e.appliedCount++):e.warnings.push(`${a}: Invalid value, must be string`);break;case"controlScripts":if(Array.isArray(s)){const t=s.filter(t=>t&&Array.isArray(t.keys)&&Array.isArray(t.actions)&&t.keys.length>0);t.length>0?(e.settings[a]=t,e.appliedCount++,t.length<s.length&&e.warnings.push("controlScripts: Some invalid scripts were excluded")):e.warnings.push("controlScripts: No valid control scripts found")}else e.warnings.push("controlScripts: Invalid format, must be array");break;case"selectedPalette":"number"==typeof s&&s>=0&&s<o.colorPalettes.length?(e.settings[a]=Math.floor(s),e.appliedCount++):e.warnings.push(`${a}: Invalid value (${s}), must be 0-${o.colorPalettes.length-1}`);break;case"theme":"string"==typeof s&&["theme-light","theme-dark"].includes(s)?(e.settings[a]=s,e.appliedCount++):e.warnings.push(`${a}: Invalid value (${s}), must be 'theme-light' or 'theme-dark'`);break;default:typeof s==typeof n[a]?(e.settings[a]=s,e.appliedCount++):e.warnings.push(`${a}: Type mismatch, expected ${typeof n[a]}, got ${typeof s}`)}}catch(t){e.warnings.push(`${a}: Error validating - ${t.message}`)}else e.warnings.push(`${a}: Unknown setting, ignored`);return e.success=e.appliedCount>0,e.success||0!==e.warnings.length||(e.error="No valid settings found in import"),e}openImportExport(){this.clearContent(),this.contentContainer.innerHTML='\n\t\t\t\t<div class="settings-section">\n\t\t\t\t\t<div class="settings-section-title">Import/Export Settings</div>\n\t\t\t\t\t<div class="settings-section-desc">\n\t\t\t\t\t\tImport, export, or reset your WikiShield settings. Settings are encoded as a base64 string for easy sharing.\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style="display: flex; gap: 12px; margin-top: 12px; flex-wrap: wrap;">\n\t\t\t\t\t\t<button id="export-settings-btn" class="add-action-button" style="flex: 1; min-width: 120px;">\n\t\t\t\t\t\t\t<span class="fa fa-download"></span> Export Settings\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button id="import-settings-btn" class="add-action-button" style="flex: 1; min-width: 120px;">\n\t\t\t\t\t\t\t<span class="fa fa-upload"></span> Import Settings\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button id="reset-settings-btn" class="add-action-button" style="flex: 1; min-width: 120px; background: #dc3545;">\n\t\t\t\t\t\t\t<span class="fa fa-undo"></span> Reset to Default\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div id="import-export-status" style="margin-top: 12px; padding: 12px; border-radius: 6px; display: none;"></div>\n\t\t\t\t\t<textarea id="import-settings-input"\n\t\t\t\t\t\tplaceholder="Paste base64 settings string here..."\n\t\t\t\t\t\tstyle="\n\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\tmin-height: 100px;\n\t\t\t\t\t\t\tmargin-top: 12px;\n\t\t\t\t\t\t\tpadding: 12px;\n\t\t\t\t\t\t\tborder: 2px solid rgba(128, 128, 128, 0.3);\n\t\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\t\tfont-family: \'Courier New\', monospace;\n\t\t\t\t\t\t\tfont-size: 0.85em;\n\t\t\t\t\t\t\tbackground: rgba(0, 0, 0, 0.2);\n\t\t\t\t\t\t\tcolor: inherit;\n\t\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\t"></textarea>\n\t\t\t\t</div>\n\t\t\t';const t=this.contentContainer.querySelector("#export-settings-btn"),e=this.contentContainer.querySelector("#import-settings-btn"),n=this.contentContainer.querySelector("#reset-settings-btn"),i=this.contentContainer.querySelector("#import-export-status"),a=this.contentContainer.querySelector("#import-settings-input");t.addEventListener("click",()=>{try{const t=JSON.stringify(this.wikishield.options),e=btoa(t),n=document.createElement("textarea");n.value=e,document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n),i.style.display="block",i.style.background="rgba(40, 167, 69, 0.2)",i.style.border="2px solid #28a745",i.style.color="#28a745",i.innerHTML='\n\t\t\t\t\t\t<div style="display: flex; align-items: center; gap: 8px;">\n\t\t\t\t\t\t\t<span class="fa fa-check-circle"></span>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<strong>Settings exported successfully!</strong>\n\t\t\t\t\t\t\t\t<div style="font-size: 0.9em; margin-top: 4px;">The base64 string has been copied to your clipboard.</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t',setTimeout(()=>{i.style.display="none"},5e3)}catch(t){i.style.display="block",i.style.background="rgba(220, 53, 69, 0.2)",i.style.border="2px solid #dc3545",i.style.color="#dc3545",i.innerHTML=`\n\t\t\t\t\t\t<div style="display: flex; align-items: center; gap: 8px;">\n\t\t\t\t\t\t\t<span class="fa fa-times-circle"></span>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<strong>Export failed!</strong>\n\t\t\t\t\t\t\t\t<div style="font-size: 0.9em; margin-top: 4px;">${t.message}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}}),e.addEventListener("click",()=>{if("none"===a.style.display)a.style.display="block",e.innerHTML='<span class="fa fa-check"></span> Apply Import',e.style.background="#28a745",i.style.display="none";else{const t=a.value.trim();if(!t)return i.style.display="block",i.style.background="rgba(220, 53, 69, 0.2)",i.style.border="2px solid #dc3545",i.style.color="#dc3545",void(i.innerHTML='\n\t\t\t\t\t\t\t<div style="display: flex; align-items: center; gap: 8px;">\n\t\t\t\t\t\t\t\t<span class="fa fa-exclamation-circle"></span>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<strong>No input!</strong>\n\t\t\t\t\t\t\t\t\t<div style="font-size: 0.9em; margin-top: 4px;">Please paste a base64 settings string.</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t');try{const e=atob(t),n=JSON.parse(e),o=this.validateAndMergeSettings(n);if(!o.success)throw new Error(o.error);{this.wikishield.options=o.settings,i.style.display="block",i.style.background="rgba(40, 167, 69, 0.2)",i.style.border="2px solid #28a745",i.style.color="#28a745";let t="";o.warnings.length>0&&(t=`\n\t\t\t\t\t\t\t\t\t<div style="margin-top: 8px; padding-top: 8px; border-top: 1px solid rgba(40, 167, 69, 0.3);">\n\t\t\t\t\t\t\t\t\t\t<strong>Warnings:</strong>\n\t\t\t\t\t\t\t\t\t\t<ul style="margin: 4px 0 0 20px; font-size: 0.9em;">\n\t\t\t\t\t\t\t\t\t\t\t${o.warnings.map(t=>`<li>${t}</li>`).join("")}\n\t\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`),i.innerHTML=`\n\t\t\t\t\t\t\t\t<div style="display: flex; align-items: start; gap: 8px;">\n\t\t\t\t\t\t\t\t\t<span class="fa fa-check-circle" style="margin-top: 2px;"></span>\n\t\t\t\t\t\t\t\t\t<div style="flex: 1;">\n\t\t\t\t\t\t\t\t\t\t<strong>Settings imported successfully!</strong>\n\t\t\t\t\t\t\t\t\t\t<div style="font-size: 0.9em; margin-top: 4px;">\n\t\t\t\t\t\t\t\t\t\t\t${o.appliedCount} setting(s) applied.\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t${t}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`}}catch(t){i.style.display="block",i.style.background="rgba(220, 53, 69, 0.2)",i.style.border="2px solid #dc3545",i.style.color="#dc3545",i.innerHTML=`\n\t\t\t\t\t\t\t<div style="display: flex; align-items: center; gap: 8px;">\n\t\t\t\t\t\t\t\t<span class="fa fa-times-circle"></span>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<strong>Import failed!</strong>\n\t\t\t\t\t\t\t\t\t<div style="font-size: 0.9em; margin-top: 4px;">${t.message}</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`}a.style.display="none",a.value="",e.innerHTML='<span class="fa fa-upload"></span> Import Settings',e.style.background=""}}),n.addEventListener("click",()=>{confirm("Are you sure you want to reset all settings to default? This cannot be undone.")&&(this.wikishield.options=JSON.parse(JSON.stringify(o.defaultSettings)),i.style.display="block",i.style.background="rgba(255, 193, 7, 0.2)",i.style.border="2px solid #ffc107",i.style.color="#ffc107",i.innerHTML='\n\t\t\t\t\t\t<div style="display: flex; align-items: center; gap: 8px;">\n\t\t\t\t\t\t\t<span class="fa fa-info-circle"></span>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<strong>Settings reset to default!</strong>\n\t\t\t\t\t\t\t\t<div style="font-size: 0.9em; margin-top: 4px;">Settings have been reset.</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t')})}closeSettings(){this.isOpen=!1,document.body.classList.remove("settings-open"),[...document.querySelectorAll(".settings-container")].forEach(t=>t.remove())}handleKeypress(t){"escape"!==t.key.toLowerCase()?this.keypressCallback&&d.includes(t.key.toLowerCase())&&(this.keypressCallback(t.key.toLowerCase()),t.preventDefault()):this.closeSettings()}}},332:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.fullTrim=void 0;e.fullTrim=t=>{const e=t.split("\n"),n=e.length;let i=!0,o=1/0,a=[],s=[];for(let t=0;t<n;t++){const n=e[t];if(""===n.trim()){if(i)continue;a.push("")}else{i?i=!1:(s=s.concat(a),a=[]);const t=n.match(/^(\s*)/)[0].length;o=Math.min(o,t),s.push(n)}}const r=s.length;if(0===r)return"";const l=[];for(let t=0;t<r;t++){const e=s[t].trimEnd();""===e?l.push(""):l.push(e.slice(o))}return l.join("\n")}},372:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.namespaces=void 0;e.namespaces=[{name:"Main",id:0},{name:"User",id:2},{name:"Project",id:4},{name:"File",id:6},{name:"MediaWiki",id:8},{name:"Template",id:10},{name:"Help",id:12},{name:"Category",id:14},{name:"Portal",id:100},{name:"Draft",id:118},{name:"Talk",id:1},{name:"User talk",id:3},{name:"Project talk",id:5},{name:"File talk",id:7},{name:"MediaWiki talk",id:9},{name:"Template talk",id:11},{name:"Help talk",id:13},{name:"Category talk",id:15},{name:"Portal talk",id:101},{name:"Draft talk",id:119}]},474:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.WikiShieldProgressBar=e.ProgressBar=void 0,e.useProgressBar=function(){const t={current:null};return[t,(e,n,i="var(--main-blue)")=>{t.current||(t.current=new s),t.current.set(e,n,i)}]};var i=n(172),o=n(201);class a extends i.Component{constructor(t){super(t),this.state={text:"",width:0,color:"var(--main-blue)",opacity:1,isVisible:!0}}componentDidMount(){this.props.onMount&&this.props.onMount(this)}updateProgress(t,e,n){this.setState({text:t,width:Math.round(100*e),color:n,opacity:1,isVisible:!0}),1===e&&this.scheduleRemoval(2e3)}scheduleRemoval(t){setTimeout(()=>{this.setState({opacity:0})},t-300),setTimeout(()=>{this.setState({isVisible:!1}),this.props.onRemove&&this.props.onRemove()},t)}render(){const{text:t,width:e,color:n,opacity:i,isVisible:a}=this.state;return a?(0,o.jsxs)("div",{className:"progress-bar",style:{opacity:i,transition:"opacity 0.3s ease"},children:[(0,o.jsx)("div",{className:"progress-bar-overlay",style:{width:`${e}%`,background:n,transition:"width 0.2s ease, background 0.2s ease"}}),(0,o.jsx)("div",{className:"progress-bar-text",children:t})]}):null}}class s{constructor(){this.nextChangeTime=0,this.updateQueue=[],this.componentRef=null,this.container=document.querySelector("#progress-bar-container"),this.container?(this.element=document.createElement("div"),this.container.appendChild(this.element),(0,i.render)((0,o.jsx)(a,{onMount:t=>{this.componentRef=t,this.processQueue()},onRemove:()=>{this.cleanup()}}),this.element)):console.warn("Progress bar container not found")}set(t,e,n){const i=Math.max(0,this.nextChangeTime-Date.now());this.updateQueue.push({text:t,width:e,color:n,delay:i}),this.nextChangeTime=Math.max(Date.now()+200,this.nextChangeTime+200),this.componentRef&&this.processQueue()}processQueue(){for(;this.updateQueue.length>0&&this.componentRef;){const t=this.updateQueue.shift();setTimeout(()=>{this.componentRef&&this.componentRef.updateProgress(t.text,t.width,t.color)},t.delay)}}remove(t){this.componentRef&&this.componentRef.scheduleRemoval(t)}cleanup(){this.element&&this.element.parentNode&&((0,i.render)(null,this.element),this.element.parentNode.removeChild(this.element)),this.componentRef=null,this.updateQueue=[]}}e.WikiShieldProgressBar=s;e.ProgressBar=({text:t,width:e,color:n="var(--main-blue)",onComplete:i})=>(0,o.jsxs)("div",{className:"progress-bar",children:[(0,o.jsx)("div",{className:"progress-bar-overlay",style:{width:`${Math.round(100*e)}%`,background:n,transition:"width 0.2s ease"}}),(0,o.jsx)("div",{className:"progress-bar-text",children:t})]})},551:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.WikiShieldLog=void 0;e.WikiShieldLog=class{log(t){console.log(`🛡️WikiShield: ${t}`)}}},572:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.WikiShieldOllamaAI=void 0;var i=n(587);e.WikiShieldOllamaAI=class{constructor(t,e,n={}){this.serverUrl=t||"http://localhost:11434",this.model=e||"",this.cache=new Map,this.rateLimitDelay=1e3,this.lastCallTime=0,this.availableModels=[],this.activeRequests=new Map,this.options=n}async fetchModels(){try{const t=await fetch(`${this.serverUrl}/api/tags`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!t.ok)throw new Error(`Failed to fetch models: ${t.status} ${t.statusText}`);const e=await t.json();return this.availableModels=e.models||[],this.availableModels}catch(t){throw console.error("Error fetching Ollama models:",t),t}}async testConnection(){try{return(await fetch(`${this.serverUrl}/api/version`,{method:"GET"})).ok}catch(t){return console.error("Ollama connection test failed:",t),!1}}async analyzeEdit(t){if(!this.options.enableOllamaAI||!this.options.enableEditAnalysis)return null;if(!this.model)return console.error("No Ollama model selected"),null;const e=`${t.revid}`;if(this.cache.has(e))return this.cache.get(e);this.activeRequests.has(e)&&(this.activeRequests.get(e).abort(),this.activeRequests.delete(e));const n=new AbortController;this.activeRequests.set(e,n);const i=Date.now()-this.lastCallTime;if(i<this.rateLimitDelay&&await new Promise(t=>setTimeout(t,this.rateLimitDelay-i)),n.signal.aborted)return this.activeRequests.delete(e),null;try{const i=this.buildAnalysisPrompt(t),o=await this.callOllamaAI(i,n.signal),a=this.parseOllamaResponse(o);if(this.cache.set(e,a),this.cache.size>100){const t=this.cache.keys().next().value;this.cache.delete(t)}return this.lastCallTime=Date.now(),this.activeRequests.delete(e),a}catch(t){var o;return this.activeRequests.delete(e),"AbortError"===t.name||null!==(o=t.message)&&void 0!==o&&o.includes("aborted")?null:(console.error("Ollama AI analysis error:",t),{hasIssues:!1,issues:[],summary:"Analysis failed",error:t.message})}}convertDiffToReadable(t){if(!t)return"No changes visible";const e=document.createElement("div");e.innerHTML=`<table>${t}</table>`;let n=[],i=[];const o=e.querySelectorAll("tr"),a=o.length;for(let t=0;t<a;t++){const e=o[t];if(e.querySelector(".diff-lineno"))continue;const a=e.querySelector(".diff-marker"),s=e.querySelector(".diff-side-deleted"),r=e.querySelector(".diff-side-added");if(!s||!r)continue;if(s.classList.contains("diff-context")&&r.classList.contains("diff-context")){const t=this.cleanDiffText(s);if(!t.trim()||"<br />"===t)continue;i.push(` ${t}`),i.length>2&&i.shift()}else{i.length>0&&(n.length>0&&n.push(""),n.push(...i),i=[]);const e=(null==a?void 0:a.getAttribute("data-marker"))||"";if("−"===e||s.classList.contains("diff-deletedline")){const t=this.cleanDiffText(s,!0);t.trim()&&"<br />"!==t&&n.push(`- ${t}`)}if("+"===e||r.classList.contains("diff-addedline")){const t=this.cleanDiffText(r,!0);t.trim()&&"<br />"!==t&&n.push(`+ ${t}`)}i=[];let l=0;const d=Math.min(t+1+2,o.length);for(let e=t+1;e<d;e++){const t=o[e],i=t.querySelector(".diff-side-deleted"),a=t.querySelector(".diff-side-added");if(!i||!a)continue;if(!(i.classList.contains("diff-context")&&a.classList.contains("diff-context")))break;{const t=this.cleanDiffText(i);t.trim()&&"<br />"!==t&&(n.push(` ${t}`),l++)}}t+=l}}if(0===n.length)return"No significant changes detected in diff";if(n.length>60){const t=n.slice(0,60);return t.push(`\n... (${n.length-60} more lines omitted)`),t.join("\n")}return n.join("\n")}cleanDiffText(t,e=!1){if(!t)return"";const n=t.querySelector("div");if(!n){return(t.textContent||"").trim()}const i=n.cloneNode(!0);if(e){i.querySelectorAll("ins").forEach(t=>{const e=t.textContent||"";t.replaceWith(`[[${e}]]`)});i.querySelectorAll("del").forEach(t=>{const e=t.textContent||"";t.replaceWith(`~~${e}~~`)})}else{i.querySelectorAll("ins").forEach(t=>{t.replaceWith(t.textContent||"")});i.querySelectorAll("del").forEach(t=>{t.replaceWith(t.textContent||"")})}let o=i.textContent||i.innerText||"";return o=o.replace(/\s+/g," ").trim(),o.length>500&&(o=o.substring(0,500)+"..."),o}buildAnalysisPrompt(t){return(0,i.BuildAIAnalysisPrompt)(t,this.convertDiffToReadable.bind(this))}buildUsernamePrompt(t,e){return(0,i.BuildAIUsernamePrompt)(t,e)}async callOllamaAI(t,e=null){try{const n={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:this.model,prompt:t,format:{type:"object",properties:{hasIssues:{type:"boolean"},probability:{type:"number",minimum:0,maximum:100},confidence:{type:"string",enum:["high","medium","low"]},reasoning:{type:"string"},issues:{type:"array",items:{type:"object",properties:{type:{type:"string",enum:["vandalism","spam","pov","unsourced","attack","copyright","disruptive","factual-error","policy","username"]},severity:{type:"string",enum:["critical","major","minor"]},description:{type:"string"}},required:["type","severity","description"]}},constructive:{type:"boolean"},flagUsername:{type:"boolean"},summary:{type:"string"},action:{type:"string",enum:["approve","thank","review","warn","warn-and-revert","rollback","report-aiv","welcome"]},recommendation:{type:"string"}},required:["hasIssues","probability","confidence","reasoning","issues","constructive","summary","action","recommendation"]},stream:!1,options:{temperature:.1,top_p:.9,num_predict:1024}})};e&&(n.signal=e);const i=await fetch(`${this.serverUrl}/api/generate`,n);if(!i.ok)throw new Error(`Ollama API error: ${i.status} ${i.statusText}`);const o=await i.json();if(!o.response)throw new Error("Empty response from Ollama");return o.response}catch(t){throw new Error(`Ollama AI error: ${(null==t?void 0:t.message)||"Unknown error"}`)}}parseOllamaResponse(t){try{"object"==typeof t&&null!==t&&(t=t.content?t.content:JSON.stringify(t)),"string"!=typeof t&&(t=String(t));let e=t.trim();const n=e.match(/```json\s*([\s\S]*?)\s*```/);if(n)e=n[1];else{const t=e.indexOf("{");if(-1!==t){let n=0,i=!1,o=!1,a=!1;const s=e.length;for(let r=t;r<s;r++){const s=e[r];if(o)o=!1;else if("\\"!==s)if('"'!==s){if(!i&&("{"!==s&&"["!==s||n++,"}"!==s&&"]"!==s||n--,0===n&&r>t)){e=e.substring(t,r+1),a=!0;break}}else i=!i;else o=!0}if(!a){e=e.substring(t);let n=0,a=0;i=!1,o=!1;const s=e.length;for(let t=0;t<s;t++){const s=e[t];o?o=!1:"\\"!==s?'"'!==s?i||("{"===s&&n++,"}"===s&&n--,"["===s&&a++,"]"===s&&a--):i=!i:o=!0}for(;a>0;)e+="]",a--;for(;n>0;)e+="}",n--}}}e=e.split("\n").map(t=>{let e=!1,n="";const i=t.length;for(let o=0;o<i&&('"'!==t[o]||0!==o&&"\\"===t[o-1]||(e=!e),e||"/"!==t[o]||"/"!==t[o+1]);o++)n+=t[o];return n}).join("\n").replace(/\/\*[\s\S]*?\*\//g,"");const i=JSON.parse(e);return{hasIssues:i.hasIssues||!1,probability:i.probability||0,confidence:i.confidence||"low",reasoning:i.reasoning||"",issues:i.issues||[],constructive:void 0===i.constructive||i.constructive,summary:i.summary||"No issues detected",action:i.action||"review",recommendation:i.recommendation||"No specific recommendation",rawResponse:t}}catch(e){console.error("Failed to parse Ollama response:",e);const n=String(t),i=n.toLowerCase().includes("issue")||n.toLowerCase().includes("problem")||n.toLowerCase().includes("vandalism");return{hasIssues:i,probability:i?50:10,confidence:"low",issues:[],summary:i?"Potential issues detected (parsing failed)":"No clear issues detected",action:"review",recommendation:"Manual review recommended due to parsing error",rawResponse:t,parseError:e.message}}}async analyzeUsername(t,e){if(!this.options.enableOllamaAI||!this.options.enableEditAnalysis)return null;try{const n=this.buildUsernamePrompt(t,e),i=new AbortController,o=`username:${t}`;this.activeRequests.set(o,i);try{const t=await fetch(`${this.serverUrl}/api/generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:this.model,prompt:n,format:{type:"object",properties:{shouldFlag:{type:"boolean"},confidence:{type:"number",minimum:0,maximum:1},violationType:{type:"string",enum:["promotional","impersonation","offensive","confusing","shared","none"]},reasoning:{type:"string"},recommendation:{type:"string"}},required:["shouldFlag","confidence","violationType","reasoning","recommendation"]},stream:!1,options:{temperature:.1,top_p:.9,num_predict:512}}),signal:i.signal});if(!t.ok)throw new Error(`Ollama API error: ${t.status} ${t.statusText}`);const e=await t.json();if(!e.response)throw new Error("Empty response from Ollama");const o=JSON.parse(e.response);return{shouldFlag:o.shouldFlag||!1,confidence:o.confidence||0,violationType:o.violationType||"none",reasoning:o.reasoning||"",recommendation:o.recommendation||""}}finally{this.activeRequests.delete(o)}}catch(t){return"AbortError"===t.name?{shouldFlag:!1,confidence:0,violationType:"none",reasoning:"Analysis cancelled",recommendation:"",cancelled:!0}:(console.error("Username analysis error:",t),{shouldFlag:!1,confidence:0,violationType:"none",reasoning:`Error analyzing username: ${t.message}`,recommendation:"Manual review recommended due to analysis error",error:t.message})}}clearCache(){this.cache.clear()}cancelAnalysis(t){const e=`${t}`;this.activeRequests.has(e)&&(this.activeRequests.get(e).abort(),this.activeRequests.delete(e))}cancelAllAnalyses(){for(const[,t]of this.activeRequests.entries())t.abort();this.activeRequests.clear()}}},587:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.BuildAIUsernamePrompt=e.BuildAIAnalysisPrompt=void 0;var i=n(332);e.BuildAIAnalysisPrompt=(t,e)=>{var n,o,a,s;const r=t.diff,l=t.sizediff||0,d=t.ores||0,c=(null===(n=t.page)||void 0===n?void 0:n.title)||"Unknown",u=(null===(o=t.user)||void 0===o?void 0:o.editCount)||0,p=(null===(a=t.user)||void 0===a?void 0:a.warningLevel)||"0",h=(null===(s=t.user)||void 0===s?void 0:s.name)||"Unknown",m=t.comment||"No summary",g=mw.util.isTemporaryUser(h);let b="Main",f="Main article namespace - STRICT standards. Accuracy, neutrality, verifiability required. Catch vandalism and policy violations.";if(c.includes(":")){const t=c.split(":")[0];b={Talk:"Talk",User:"User","User talk":"User talk",Wikipedia:"Project","Wikipedia talk":"Project talk",File:"File","File talk":"File talk",Template:"Template","Template talk":"Template talk",Category:"Category","Category talk":"Category talk",Draft:"Draft","Draft talk":"Draft talk",Help:"Help",Portal:"Portal"}[t]||t;f={Talk:"Discussion/conversation page - VERY LENIENT. Opinions and debates are normal and expected. Only flag offensive/attack content.",User:"User's personal sandbox - EXTREMELY LENIENT. Users can experiment here. Only flag severe policy violations or attack pages.","User talk":"User communication page - VERY LENIENT. Direct messages to users. Only flag if attacking/harassing.",Project:"Wikipedia policy/guideline space - MODERATE. Discussion and proposals are normal. Check for disruption.","Project talk":"Project discussion page - VERY LENIENT. Policy debates happen here. Opinions expected.",Draft:"Draft article space - LENIENT. Work in progress. Missing sources and formatting issues are NORMAL and ACCEPTABLE. Only flag clear vandalism.","Draft talk":"Draft discussion page - VERY LENIENT. Feedback and questions are normal.",File:"File description pages - MODERATE. Check for copyright issues and appropriate descriptions.","File talk":"File discussion page - VERY LENIENT. Questions and discussions are normal.",Template:"Template pages - MODERATE. Technical pages. Check for vandalism breaking functionality.","Template talk":"Template discussion page - VERY LENIENT. Technical discussions are normal.",Category:"Category pages - MODERATE. Check for inappropriate categorization.","Category talk":"Category discussion page - VERY LENIENT. Discussions are normal."}[b]||f}(c.toLowerCase().includes("/sandbox")||c.toLowerCase().endsWith(":sandbox"))&&(f="User sandbox - MAXIMUM LENIENCY. Test/practice space. Experiments and incomplete content are EXPECTED and FINE. Almost always approve.");const v=e(r);let x="";x=g?"Anonymous temporary editor - could be anyone. Temporary accounts have higher vandalism rates but many make good edits. Judge the edit, not the editor.":0===u?"Brand new account (0 edits) - First ever edit. Could be legitimate new user or sockpuppet/vandal. Higher scrutiny needed.":u<10?"Very new user (< 10 edits) - Still learning. Expect mistakes but assume good faith unless clearly malicious.":u<50?"New user (< 50 edits) - Gaining experience. Minor errors expected, likely good faith.":u<500?"Intermediate user (50-500 edits) - Should understand basic policies. Mistakes possible but less common.":"Experienced user (500+ edits) - Knows Wikipedia policies well. Trust their judgment unless clearly problematic.";let y="";switch(p){case"0":y="No previous warnings - Clean record. First problematic edit (if any).";break;case"1":y="Warning level 1 - Minor previous issue. They've been notified once. Still assume good faith.";break;case"2":y="Warning level 2 - Has been warned twice. Pattern may be emerging. Less benefit of doubt.";break;case"3":y="Warning level 3 - Serious warnings given. Next vandalism = likely block. Watch closely.";break;case"4":case"4im":y="Warning level 4/4im - FINAL WARNING given. Any further vandalism should result in AIV report.";break;default:y=`Warning level ${p} - Has received warnings previously.`}return(0,i.fullTrim)(`\n\t\tYou are an expert Wikipedia anti-vandalism reviewer. Analyze the provided edit decisively and produce a single JSON verdict (see schema at end). Be fast, precise, and conservative only when required. Default to APPROVE unless clear evidence of vandalism, policy violation, or harmful material appears.\n\n\t\t════════════════════════════════════════════════════════════════\n\t\tEDIT METADATA (inputs)\n\t\t════════════════════════════════════════════════════════════════\n\t\tPage: "${c}"\n\t\tNamespace: ${b} — ${f}\n\t\tPage title: "${c}"\n\t\tEditor: ${h}${g?" (TEMPORARY)":""} • ${u} edits\n\t\tUser profile: ${x}\n\t\tSummary: "${m}"\n\t\tSize change: ${l>0?"+":""}${l} bytes\n\t\tORES score: ${(100*d).toFixed(1)}%\n\t\tReadable diff:\n\t\t${v}\n\n\t\tIf namespace is a talk, user, draft, or sandbox page, treat missing citations and opinion as acceptable. Flag only attacks, harassment, spam, or clear disruption on those pages.\n\n\t\t════════════════════════════════════════════════════════════════\n\t\tQUICK DECEPTIVE-SUMMARY CHECK\n\t\t════════════════════════════════════════════════════════════════\n\t\tCompare edit summary to byte delta. Treat large mismatches as red flags:\n\t\t• "typo/spelling/grammar" ≈ 5–20 bytes. Not 100+.\n\t\t• "nothing/minor/fix" should be tiny. Not 200+.\n\t\t• "punctuation/comma" < 50 bytes.\n\t\t• "formatting" < 500 bytes.\n\t\tIf mismatch → treat as potential deception and escalate severity. (such as "fixed typo" but then adds new information)\n\n\t\t════════════════════════════════════════════════════════════════\n\t\tDIFF LEGEND\n\t\t════════════════════════════════════════════════════════════════\n\t\t" " = unchanged context\n\t\t"- " = removed\n\t\t"+ " = added\n\t\t[[text]] = inline addition\n\t\t~~text~~ = inline removal\n\n\t\t════════════════════════════════════════════════════════════════\n\t\tDECISIVE RULES (apply in this order)\n\t\t════════════════════════════════════════════════════════════════\n\n\t\t1) Namespace rules (highest priority)\n\t\t- Main/article namespace: enforce strict standards (vandalism, unsourced BLP claims, POV).\n\t\t- Talk/User/Sandbox/Draft: extremely lenient for sourcing. Only flag attacks, harassment, spam, or clear disruption.\n\n\t\t2) Obvious vandalism → immediate rollback\n\t\tRollback when any of:\n\t\t- Profanity or slurs.\n\t\t- Gibberish or repeated nonsense ("asdfgh", "lololol").\n\t\t- Graffiti signatures ("X was here").\n\t\t- Blank/erase content without reason.\n\t\t- Obvious jokes, memes, or patently false claims.\n\t\t- Summary explicitly says "test" or "vandalism".\n\t\t- Deceptive summary that masks a large change.\n\n\t\t3) Not vandalism (do not flag)\n\t\t- Poor grammar or style.\n\t\t- Unsourced but plausible claims (except BLP on main namespace).\n\t\t- Formatting fixes and rewording.\n\t\t- Minor POV or pushing a viewpoint without clear policy violation.\n\t\t- Any constructive edit on talk/user/sandbox/draft pages unless harassment or spam.\n\n\t\t4) Constructive signals (favor APPROVE)\n\t\t• Fixes to grammar, formatting, or readability.\n\t\t• Adding information that appears relevant.\n\t\t• Removing clear error or vandalism.\n\t\t• Detailed, honest edit summary.\n\n\t\t════════════════════════════════════════════════════════════════\n\t\tACTIONS (use one)\n\t\t════════════════════════════════════════════════════════════════\n\t\t- approve: Default. Use for constructive or harmless edits.\n\t\t- thank: Exceptional contribution (added sources, major improvement).\n\t\t- welcome: New user (<50 edits) who made a good contribution.\n\t\t- warn-and-revert: Policy violation but possibly good faith (e.g., unsourced BLP, promotional content).\n\t\t- rollback: Definite vandalism (profanity, blanking, gibberish).\n\t\t- report-aiv: Serious malicious pattern or sustained bad actor (admin report needed).\n\t\t- review: Rare (<3%). Only when evaluation is truly impossible from the diff.\n\n\t\tGuideline: 85–90% of edits should be APPROVE. Use REVIEW under 3% of the time. When uncertain, APPROVE.\n\n\t\t════════════════════════════════════════════════════════════════\n\t\tEVIDENCE & REASONING\n\t\t════════════════════════════════════════════════════════════════\n\t\tWhen you flag or choose a non-approve action:\n\t\t• Quote the exact problematic text from the diff.\n\t\t• State the rule and namespace that justify the action.\n\t\t• Provide a concise one-sentence remediation recommendation (e.g., "Revert and warn; unsourced BLP on main page. Provide reliable references before re-adding.").\n\n\t\t════════════════════════════════════════════════════════════════\n\t\tRESPONSE FORMAT (strict JSON only)\n\t\t════════════════════════════════════════════════════════════════\n\t\tReturn exactly one JSON object with these fields:\n\n\t\t{\n\t\t"hasIssues": boolean,\n\t\t"probability": 0-100,\n\t\t"confidence": "high" | "medium" | "low",\n\t\t"reasoning": "Concise statement of why",\n\t\t"issues": [\n\t\t\t{\n\t\t\t"type": "vandalism|spam|pov|unsourced|attack|copyright|disruptive|factual-error|policy|username",\n\t\t\t"severity": "critical|major|minor",\n\t\t\t"description": "Quoted evidence and brief note"\n\t\t\t}\n\t\t],\n\t\t"constructive": boolean,\n\t\t"summary": "One-sentence final assessment",\n\t\t"action": "approve|thank|review|warn-and-revert|rollback|report-aiv|welcome",\n\t\t"recommendation": "One-line explaining chosen action and next steps"\n\t\t}\n\n\t\t════════════════════════════════════════════════════════════════\n\t\tPERFORMANCE NOTES\n\t\t════════════════════════════════════════════════════════════════\n\t\t• Be decisive. Short, specific reasoning only.\n\t\t• Do not invent external facts. Judge only by the diff, metadata, and provided context.\n\t\t• If a claim requires external verification but is not obviously harmful, APPROVE.\n\t\t• Use "review" only when the diff cannot be judged at all from available inputs.\n\n\t\tAnalyze now and return the JSON verdict.\n\t`)};e.BuildAIUsernamePrompt=(t,e)=>(0,i.fullTrim)(`\n\t\tYou are analyzing a Wikipedia username to determine if it violates Wikipedia's username policy.\n\n\t\t━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\t\tUSERNAME TO ANALYZE\n\t\t━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n\t\tUsername: ${t}\n\t\tCurrently editing: ${e}\n\t\t→ The page title should ONLY be taken onto account to detect promotional edits.\n\n\t\t━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\t\tWIKIPEDIA USERNAME POLICY\n\t\t━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n\t\tVIOLATIONS TO FLAG:\n\n\t\t1. PROMOTIONAL/ADVERTISING\n\t\t• Company/organization names (e.g., "AppleInc", "CocaCola")\n\t\t• Product/brand names (e.g., "iPhone15Pro", "TeslaModelS")\n\t\t• Website/domain names (e.g., "ExampleDotCom", "MyWebsite123")\n\t\t• Commercial slogans or marketing language\n\t\t• Exception: Personal names that happen to match brands are usually OK\n\n\t\t2. IMPERSONATION\n\t\t• Claiming to be a famous person (e.g., "RealTaylorSwift", "ElonMusk")\n\t\t• Pretending to be a Wikipedia admin/official (e.g., "WikipediaAdmin")\n\t\t• Using "official" or "real" prefixes to imply authority\n\t\t• Exception: Obviously fictional/parody names are usually OK\n\n\t\t3. OFFENSIVE/INAPPROPRIATE\n\t\t• Profanity, slurs, or vulgar language\n\t\t• Sexual/explicit content in username\n\t\t• Hateful or discriminatory language\n\t\t• Attack usernames targeting individuals\n\n\t\t4. SHARED/ROLE ACCOUNTS\n\t\t• Implies multiple people (e.g., "MarketingTeam", "CompanyStaff")\n\t\t• Organization/group accounts\n\n\t\tACCEPTABLE USERNAMES:\n\n\t\t✓ Personal names (even if unusual): "John Smith", "StardustDreamer"\n\t\t✓ Random/creative combinations: "PurpleCat42", "MountainReader"\n\t\t✓ Descriptive interests: "HistoryBuff", "ScienceFan2023"\n\t\t✓ Misspellings or variations of common words\n\t\t✓ Foreign language names/words (unless offensive)\n\t\t✓ Numbers and dates (birthdates, lucky numbers, etc.)\n\n\t\t━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\t\tANALYSIS GUIDELINES\n\t\t━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n\t\tBE CONSERVATIVE: When in doubt, DON'T flag\n\t\t• Most usernames are acceptable\n\t\t• Only flag clear violations\n\t\t• Consider context (editing relevant articles is OK)\n\t\t• Personal names that match brands are usually fine\n\n\t\tCONFIDENCE LEVELS:\n\t\t• 0.9-1.0: Obvious violation (company name, clear impersonation)\n\t\t• 0.7-0.9: Strong indicators (promotional with editing pattern)\n\t\t• 0.5-0.7: Moderate concern (borderline case)\n\t\t• 0.0-0.5: Acceptable or insufficient evidence\n\n\t\tCONTEXT MATTERS:\n\t\t• User editing related articles? (e.g., "AppleFan" editing Apple Inc.)\n\t\t• Username could be personal name? (e.g., "Jordan" is a name AND brand)\n\t\t• Is it obviously parody/fictional?\n\n\t\t═══════════════════════════════════════════════════════════\n\t\tRESPONSE FORMAT (JSON)\n\t\t═══════════════════════════════════════════════════════════\n\n\t\t{\n\t\t\t"shouldFlag": boolean,\n\t\t\t"confidence": 0.0-1.0,\n\t\t\t"violationType": "promotional|impersonation|offensive|confusing|shared|none",\n\t\t\t"reasoning": "Specific explanation of why username violates or doesn't violate policy",\n\t\t\t"recommendation": "Brief recommendation for action or why it's acceptable"\n\t\t}\n\n\t\tAnalyze the username now. Be conservative and consider context.\n\t`)},596:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.defaultSettings=e.colorPalettes=void 0;e.defaultSettings={maxQueueSize:50,maxEditCount:50,minimumORESScore:0,soundAlertORESScore:.95,enableUsernameHighlighting:!0,enableWelcomeLatin:!1,enableAutoWelcome:!1,enableEditAnalysis:!1,enableUsernameAnalysis:!1,masterVolume:.5,volumes:{click:.5,notification:.5,watchlist:.5,alert:.5,whoosh:.5,warn:.5,rollback:.5,report:.5,thank:.5,protection:.5,block:.5,sparkle:.5},soundMappings:{click:"click",notification:"notify",watchlist:"ping",alert:"alert",whoosh:"whoosh",warn:"warn",rollback:"rollback",report:"report",thank:"thank",protection:"protection",block:"block",sparkle:"sparkle"},watchlistExpiry:"1 week",highlightedExpiry:"1 hour",wiki:"en",namespacesShown:[0,2,4,6,8,10,12,14,100,118,1,3,5,7,9,11,13,15,101,119],showTemps:!0,showUsers:!0,sortQueueItems:!0,enableOllamaAI:!1,ollamaServerUrl:"http://localhost:11434",ollamaModel:"",controlScripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warningType:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"if",condition:"operatorNonAdmin",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]}]},{name:"highlight",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"default"}}]}],selectedPalette:0,theme:"theme-light"},e.colorPalettes=[["#78c675","#fdff7a","#fcff54","#fbff12","#ffc619","#ff8812","#f56214","#f73214","#fc0303","#fc0303"],["#bfbfbf","#ffd9d9","#ffc9c9","#ffb0b0","#ff9797","#ff7d7d","#ff6464","#ff4b4b","#ff3131","#ff1818"],["#bfbfbf","#d9ffd9","#c9ffc9","#b0ffb0","#97ff97","#7dff7d","#64ff64","#4bff4b","#31ff31","#18ff18"],["#bfbfbf","#d9d9ff","#c9c9ff","#b0b0ff","#9797ff","#7d7dff","#6464ff","#4b4bff","#3131ff","#1818ff"]]},599:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.wikishieldHTML=void 0;e.wikishieldHTML={head:'\n\t\t<meta name="viewport" content="width=device-width, initial-scale=1.0">\n\t\t<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">\n\t',initial:t=>`\n\t\t<div id="container">\n\t\t\t<canvas id="dots-canvas"></canvas>\n\t\t\t<div id="welcome-container">\n\t\t\t\t<div class="shield-container">\n\t\t\t\t\t<div class="glow-ring"></div>\n\t\t\t\t\t<div class="glow-ring"></div>\n\t\t\t\t\t<div class="glow-ring"></div>\n\t\t\t\t\t<div class="sparkle"></div>\n\t\t\t\t\t<div class="sparkle"></div>\n\t\t\t\t\t<div class="sparkle"></div>\n\t\t\t\t\t<div class="sparkle"></div>\n\t\t\t\t\t<div class="shield-icon">🛡️</div>\n\t\t\t\t</div>\n\t\t\t\t<h1>Welcome to WikiShield</h1>\n\t\t\t\t<div class="about-links">\n\t\t\t\t\t<a href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="about-link">About</a>\n\t\t\t\t\t<a href="https://en.wikipedia.org/wiki/Wikipedia talk:WikiShield" target="_blank" class="about-link">Discuss</a>\n\t\t\t\t\t<span class="about-link">v${t}</span>\n\t\t\t\t</div>\n\t\t\t\t<div id="rollback-needed" style="display: none;">\n\t\t\t\t\t<p><span class="fa fa-exclamation-triangle"></span> You must have rollback or admin rights to use this script.</p>\n\t\t\t\t\t<p>You can apply for rollback rights <a href="https://en.wikipedia.org/wiki/WP:PERM/R" target="_blank">here</a>.</p>\n\t\t\t\t</div>\n\t\t\t\t<button id="start-button">\n\t\t\t\t\t<span class="fa fa-play"></span> Start WikiShield\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t`,main:'\n\t\t<div id="container">\n\t\t\t<div id="queue">\n\t\t\t\t<div id="queue-top">\n\t\t\t\t\t<div id="queue-top-left">\n\t\t\t\t\t\t<span id="queue-top-title">Queue</span>\n\t\t\t\t\t\t<span id="queue-top-items">0 items</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div id="queue-top-right">\n\t\t\t\t\t\t<span class="fa fa-book-bookmark" id="watchlist-icon" data-tooltip="Watchlist" style="position: relative;">\n\t\t\t\t\t\t\t<span id="watchlist-count" style="display: none; position: absolute; top: -5px; right: -5px; background: dodgerblue; color: white; border-radius: 50%; width: 16px; height: 16px; font-size: 10px; text-align: center; line-height: 16px; font-family: sans-serif;"></span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class="fa fa-bell" id="notifications-icon" data-tooltip="Notifications" style="position: relative;">\n\t\t\t\t\t\t\t<span id="notification-count" style="display: none; position: absolute; top: -5px; right: -5px; background: red; color: white; border-radius: 50%; width: 16px; height: 16px; font-size: 10px; text-align: center; line-height: 16px; font-family: sans-serif;"></span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class="fa fa-trash" id="delete-queue" data-tooltip="Clear queue"></span>\n\t\t\t\t\t\t<span class="fa fa-gear" id="open-settings" data-tooltip="Open settings"></span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div id="queue-items"></div>\n\t\t\t\t<div class="width-adjust" id="queue-width-adjust"></div>\n\t\t\t</div>\n\t\t\t<div id="notifications-panel">\n\t\t\t\t<div id="notifications-header">\n\t\t\t\t\t<span>Notifications</span>\n\t\t\t\t\t<span id="mark-all-notifications-read" style="font-size: 0.85em; font-weight: normal; cursor: pointer; color: dodgerblue;">Mark all as read</span>\n\t\t\t\t</div>\n\t\t\t\t<div id="notifications-list"></div>\n\t\t\t</div>\n\t\t\t<div id="watchlist-panel">\n\t\t\t\t<div id="watchlist-header">\n\t\t\t\t\t<span>Watchlist</span>\n\t\t\t\t\t<span id="mark-all-watchlist-read" style="font-size: 0.85em; font-weight: normal; cursor: pointer; color: dodgerblue;">Mark all as read</span>\n\t\t\t\t</div>\n\t\t\t\t<div id="watchlist-list"></div>\n\t\t\t</div>\n\t\t\t<div id="right-container">\n\t\t\t\t<div id="middle-top"></div>\n\t\t\t\t<div id="right-top">\n\t\t\t\t\t<div class="tabs">\n\t\t\t\t\t\t<div id="latest-edits-tab" class="tab hidden selected" data-tooltip="Latest edit">\n\t\t\t\t\t\t\t<i class="fas fa-user"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div id="consecutive-edits-tab" class="tab hidden" data-tooltip="Consecutive edits">\n\t\t\t\t\t\t\t<i class="fas fa-users"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class="icons">\n\t\t\t\t\t\t<i class="created-page hidden fas fa-file-circle-plus" data-tooltip="No other users have edited this page"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div id="right-content">\n\t\t\t\t\t<div id="main-container">\n\t\t\t\t\t\t<div id="diff-container"></div>\n\t\t\t\t\t\t<div id="progress-bar-container"></div>\n\t\t\t\t\t\t<div id="bottom-tools">\n\t\t\t\t\t\t\t<div id="bottom-tools-left">\n\t\t\t\t\t\t\t\t<div class="bottom-tool-item" data-menu="revert">\n\t\t\t\t\t\t\t\t\t<div class="bottom-tool-trigger">\n\t\t\t\t\t\t\t\t\t\t<i class="fas fa-undo"></i>\n\t\t\t\t\t\t\t\t\t\t<span>Revert & Warn</span>\n\t\t\t\t\t\t\t\t\t\t<i class="fas fa-chevron-up bottom-tool-chevron"></i>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<div class="bottom-tool-item" data-menu="warn">\n\t\t\t\t\t\t\t\t\t<div class="bottom-tool-trigger">\n\t\t\t\t\t\t\t\t\t\t<i class="fas fa-exclamation-triangle"></i>\n\t\t\t\t\t\t\t\t\t\t<span>Warn</span>\n\t\t\t\t\t\t\t\t\t\t<i class="fas fa-chevron-up bottom-tool-chevron"></i>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<div class="bottom-tool-item" data-menu="user">\n\t\t\t\t\t\t\t\t\t<div class="bottom-tool-trigger">\n\t\t\t\t\t\t\t\t\t\t<i class="fas fa-user"></i>\n\t\t\t\t\t\t\t\t\t\t<span>User</span>\n\t\t\t\t\t\t\t\t\t\t<i class="fas fa-chevron-up bottom-tool-chevron"></i>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<div class="bottom-tool-item" data-menu="page">\n\t\t\t\t\t\t\t\t\t<div class="bottom-tool-trigger">\n\t\t\t\t\t\t\t\t\t\t<i class="fas fa-file-lines"></i>\n\t\t\t\t\t\t\t\t\t\t<span>Page</span>\n\t\t\t\t\t\t\t\t\t\t<i class="fas fa-chevron-up bottom-tool-chevron"></i>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<div class="bottom-tool-item" data-menu="edit">\n\t\t\t\t\t\t\t\t\t<div class="bottom-tool-trigger">\n\t\t\t\t\t\t\t\t\t\t<i class="fas fa-pen-to-square"></i>\n\t\t\t\t\t\t\t\t\t\t<span>Edit</span>\n\t\t\t\t\t\t\t\t\t\t<i class="fas fa-chevron-up bottom-tool-chevron"></i>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div id="bottom-tools-stats">\n\t\t\t\t\t\t\t\t<div class="stat-item">\n\t\t\t\t\t\t\t\t\t<i class="fas fa-user"></i>\n\t\t\t\t\t\t\t\t\t<span class="bottom-stat-value" id="stat-total-contribs">-</span>\n\t\t\t\t\t\t\t\t\t<span>edits</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div id="right-details">\n\t\t\t\t\t\t<div class="width-adjust" id="details-width-adjust"></div>\n\t\t\t\t\t\t<div id="user-contribs">\n\t\t\t\t\t\t\t<div id="user-contribs-top">\n\t\t\t\t\t\t\t\t<div id="user-contribs-left">\n\t\t\t\t\t\t\t\t\t\t<div id="user-contribs-title">User Contributions</div>\n\t\t\t\t\t\t\t\t\t<div id="user-contribs-count">_ edits</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div id="block-count-indicator" style="display: none;"></div>\n\t\t\t\t\t\t\t\t<div id="user-contribs-level" data-tooltip="Warning level">0</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div id="user-contribs-content"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="height-adjust"></div>\n\t\t\t\t\t\t<div id="page-history">\n\t\t\t\t\t\t\t<div id="page-history-top">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<div id="page-history-title">Page History</div>\n\t\t\t\t\t\t\t\t\t<div id="page-metadata" style="font-size: 0.75em; color: #666; margin-top: 3px;"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div id="protection-indicator"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div id="page-history-content"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class="bottom-tool-menu" id="revert-menu"></div>\n\t\t<div class="bottom-tool-menu" id="warn-menu"></div>\n\t\t<div class="bottom-tool-menu" id="user-menu">\n\t\t\t<div id="user-open-user-page" class="menu-option">\n\t\t\t\t<i class="fas fa-user-circle"></i>\n\t\t\t\t<span>Open user page</span>\n\t\t\t\t<i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\n\t\t\t</div>\n\t\t\t<div id="user-open-user-talk" class="menu-option">\n\t\t\t\t<i class="fas fa-comments"></i>\n\t\t\t\t<span>Open user talk</span>\n\t\t\t\t<i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\n\t\t\t</div>\n\t\t\t<div id="user-view-contribs" class="menu-option">\n\t\t\t\t<i class="fas fa-list"></i>\n\t\t\t\t<span>View contributions</span>\n\t\t\t\t<i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\n\t\t\t</div>\n\t\t\t<div id="user-view-filter-log" class="menu-option">\n\t\t\t\t<i class="fas fa-filter"></i>\n\t\t\t\t<span>View filter log</span>\n\t\t\t\t<i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\n\t\t\t</div>\n\t\t\t<div class="menu-divider"></div>\n\t\t\t<div id="user-add-whitelist" class="menu-option">\n\t\t\t\t<i class="fas fa-user-check"></i>\n\t\t\t\t<span>Add to whitelist</span>\n\t\t\t</div>\n\t\t\t<div id="user-remove-whitelist" class="menu-option" style="display: none;">\n\t\t\t\t<i class="fas fa-user-xmark"></i>\n\t\t\t\t<span>Remove from whitelist</span>\n\t\t\t</div>\n\t\t\t<div id="user-highlight" class="menu-option">\n\t\t\t\t<i class="fas fa-star"></i>\n\t\t\t\t<span>Highlight user</span>\n\t\t\t</div>\n\t\t\t<div id="user-unhighlight" class="menu-option" style="display: none;">\n\t\t\t\t<i class="fas fa-star"></i>\n\t\t\t\t<span>Unhighlight user</span>\n\t\t\t</div>\n\t\t\t<div class="menu-divider"></div>\n\t\t\t<div id="user-welcome" class="menu-option submenu-trigger">\n\t\t\t\t<i class="fas fa-paper-plane"></i>\n\t\t\t\t<span>Welcome</span>\n\t\t\t\t<i class="fas fa-chevron-right menu-option-chevron"></i>\n\t\t\t\t<div class="submenu"></div>\n\t\t\t</div>\n\t\t\t<div id="user-report-aiv" class="menu-option submenu-trigger">\n\t\t\t\t<i class="fas fa-flag"></i>\n\t\t\t\t<span>Report (AIV)</span>\n\t\t\t\t<i class="fas fa-chevron-right menu-option-chevron"></i>\n\t\t\t\t<div class="submenu"></div>\n\t\t\t</div>\n\t\t\t<div id="user-report-uaa" class="menu-option submenu-trigger">\n\t\t\t\t<i class="fas fa-user-slash"></i>\n\t\t\t\t<span>Report (UAA)</span>\n\t\t\t\t<i class="fas fa-chevron-right menu-option-chevron"></i>\n\t\t\t\t<div class="submenu"></div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="bottom-tool-menu" id="page-menu">\n\t\t\t<div id="page-open-page" class="menu-option">\n\t\t\t\t<i class="fas fa-file"></i>\n\t\t\t\t<span>Open page</span>\n\t\t\t\t<i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\n\t\t\t</div>\n\t\t\t<div id="page-open-talk" class="menu-option">\n\t\t\t\t<i class="fas fa-comments"></i>\n\t\t\t\t<span>Open talk page</span>\n\t\t\t\t<i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\n\t\t\t</div>\n\t\t\t<div id="page-view-history" class="menu-option">\n\t\t\t\t<i class="fas fa-clock-rotate-left"></i>\n\t\t\t\t<span>View page history</span>\n\t\t\t\t<i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\n\t\t\t</div>\n\t\t\t<div class="menu-divider"></div>\n\t\t\t<div id="page-request-protection" class="menu-option submenu-trigger">\n\t\t\t\t<i class="fas fa-shield-halved"></i>\n\t\t\t\t<span>Request protection</span>\n\t\t\t\t<i class="fas fa-chevron-right menu-option-chevron"></i>\n\t\t\t\t<div class="submenu"></div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="bottom-tool-menu" id="edit-menu">\n\t\t\t<div id="edit-view-revision" class="menu-option">\n\t\t\t\t<i class="fas fa-eye"></i>\n\t\t\t\t<span>View revision</span>\n\t\t\t\t<i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\n\t\t\t</div>\n\t\t\t<div id="edit-view-diff" class="menu-option">\n\t\t\t\t<i class="fas fa-code-compare"></i>\n\t\t\t\t<span>View diff</span>\n\t\t\t\t<i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\n\t\t\t</div>\n\t\t\t<div class="menu-divider"></div>\n\t\t\t<div id="edit-thank-user" class="menu-option">\n\t\t\t\t<i class="fas fa-heart"></i>\n\t\t\t\t<span>Thank user</span>\n\t\t\t</div>\n\t\t\t<div id="edit-rollback" class="menu-option">\n\t\t\t\t<i class="fas fa-rotate-left"></i>\n\t\t\t\t<span>Rollback</span>\n\t\t\t</div>\n\t\t\t<div id="edit-rollback-goodfaith" class="menu-option submenu-trigger">\n\t\t\t\t<i class="fas fa-handshake"></i>\n\t\t\t\t<span>Rollback (good faith)</span>\n\t\t\t\t<i class="fas fa-chevron-right menu-option-chevron"></i>\n\t\t\t\t<div class="submenu"></div>\n\t\t\t</div>\n\t\t\t<div id="edit-undo" class="menu-option submenu-trigger">\n\t\t\t\t<i class="fas fa-arrow-rotate-left"></i>\n\t\t\t\t<span>Undo</span>\n\t\t\t\t<i class="fas fa-chevron-right menu-option-chevron"></i>\n\t\t\t\t<div class="submenu"></div>\n\t\t\t</div>\n\t\t</div>\n\t',"edit-context-menu":'\n\t\t<div id="context-ores"><span id="context-ores-number">0</span> ORES score</div>\n\t\t<div id="context-remove">Remove from queue</div>\n\t\t<div id="context-whitelist">Whitelist user</div>\n\t\t<div id="context-open-history">View page history</div>\n\t\t<div id="context-open-contribs">View user contribs</div>\n\t',settings:'\n\t\t<div class="settings">\n\t\t\t<div class="settings-left">\n\t\t\t\t<div class="settings-category">\n\t\t\t\t\t<div class="settings-category-header">\n\t\t\t\t\t\t<span>CORE</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-left-menu-item" id="settings-general-button">\n\t\t\t\t\t\t<span>General</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-left-menu-item" id="settings-audio-button">\n\t\t\t\t\t\t<span>Audio</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-left-menu-item" id="settings-appearance-button">\n\t\t\t\t\t\t<span>Appearance</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-left-menu-item" id="settings-controls-button">\n\t\t\t\t\t\t<span>Controls</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="settings-category">\n\t\t\t\t\t<div class="settings-category-header">\n\t\t\t\t\t\t<span>MODERATION</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-left-menu-item" id="settings-ai-button">\n\t\t\t\t\t\t<span>AI Analysis</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-left-menu-item" id="settings-gadgets-button">\n\t\t\t\t\t\t<span>Gadgets</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-left-menu-item" id="settings-whitelist-button">\n\t\t\t\t\t\t<span>Whitelist</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-left-menu-item" id="settings-highlight-button">\n\t\t\t\t\t\t<span>Highlighted</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="settings-category">\n\t\t\t\t\t<div class="settings-category-header">\n\t\t\t\t\t\t<span>INFO</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-left-menu-item" id="settings-statistics-button">\n\t\t\t\t\t\t<span>Statistics</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-left-menu-item" id="settings-about-button">\n\t\t\t\t\t\t<span>About</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="settings-category">\n\t\t\t\t\t<div class="settings-category-header">\n\t\t\t\t\t\t<span>MISC</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="settings-left-menu-item" id="settings-import-export-button">\n\t\t\t\t\t\t<span>Import / Export</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="settings-right"></div>\n\t\t</div>\n\t'}},680:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.sounds=void 0;e.sounds={click:{name:"Click",description:"Crisp UI click",category:"ui",type:"sine",frequencies:[600],duration:.15,volume:1,envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.06),t.gain.exponentialRampToValueAtTime(.001*i,n+.15)}},tap:{name:"Tap",description:"Soft tap",category:"ui",type:"sine",frequencies:[440],duration:.15,volume:1,envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.6*i,n+.06),t.gain.exponentialRampToValueAtTime(.001*i,n+.15)}},pop:{name:"Pop",description:"Bouncy pop",category:"ui",type:"sine",frequencies:[660,528],duration:.2,volume:1,repeats:[0,.1],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.6*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.2)}},alert:{name:"Alert",description:"Urgent notification",category:"alert",type:"sine",frequencies:[440,523.25],duration:.15,volume:1,repeats:[0,.18],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.3)}},bell:{name:"Bell",description:"Notification bell",category:"alert",type:"sine",frequencies:[523.25,659.25],duration:.35,volume:1,repeats:[0,.18],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.8*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.35)}},ping:{name:"Ping",description:"High ping",category:"alert",type:"sine",frequencies:[784],duration:.3,volume:1,envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.3)}},warn:{name:"Warning",description:"Caution tone",category:"warning",type:"sine",frequencies:[587.33,523.25],duration:.18,volume:1,repeats:[0,.2],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.18)}},beep:{name:"Beep",description:"Simple beep",category:"warning",type:"sine",frequencies:[784],duration:.12,volume:1,envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.12)}},buzz:{name:"Buzz",description:"Attention buzz",category:"warning",type:"sine",frequencies:[440],duration:.15,volume:1,repeats:[0,.08,.16],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.6*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.05)}},whoosh:{name:"Whoosh",description:"Smooth transition",category:"action",type:"sine",frequencies:[600],duration:.25,volume:1,sweep:{from:600,to:250},envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.8*i,n+.04),t.gain.exponentialRampToValueAtTime(.001*i,n+.25)}},swoosh:{name:"Swoosh",description:"Quick swipe",category:"action",type:"sine",frequencies:[800],duration:.18,volume:1,sweep:{from:800,to:400},envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.6*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.18)}},swipe:{name:"Swipe",description:"Fast swipe",category:"action",type:"sine",frequencies:[750],duration:.12,volume:1,sweep:{from:750,to:400},envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.5*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.12)}},rollback:{name:"Rollback",description:"Reverse action",category:"action",type:"sine",frequencies:[400],duration:.22,volume:1,sweep:{from:400,to:800},envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.65*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.22)}},notify:{name:"Notify",description:"Soft notification",category:"notification",type:"sine",frequencies:[523.25,392],duration:.2,volume:1,repeats:[0,.12],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.8*i,n+.02),t.gain.exponentialRampToValueAtTime(.001*i,n+.2)}},chime:{name:"Chime",description:"Pleasant chime",category:"notification",type:"sine",frequencies:[523.25,659.25,783.99],duration:.3,volume:1,repeats:[0,.08,.16],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.3)}},ding:{name:"Ding",description:"Gentle ding",category:"notification",type:"sine",frequencies:[523.25],duration:.28,volume:1,envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.28)}},success:{name:"Success",description:"Achievement",category:"positive",type:"sine",frequencies:[523.25,659.25,783.99,523.25],duration:.18,volume:1,repeats:[0,.06,.12,.18],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.25)}},complete:{name:"Complete",description:"Task complete",category:"positive",type:"sine",frequencies:[659.25,440,659.25],duration:.25,volume:1,repeats:[0,.08,.16],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.65*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.28)}},sparkle:{name:"Sparkle",description:"Magical sparkle",category:"positive",type:"sine",frequencies:[659.25,784,988,1175],duration:.15,volume:1,repeats:[0,.04,.08,.12],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.6*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.12)}},twinkle:{name:"Twinkle",description:"Soft twinkle",category:"positive",type:"sine",frequencies:[784,1047,1319],duration:.2,volume:1,repeats:[0,.07,.14],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.6*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.18)}},error:{name:"Error",description:"Error tone",category:"negative",type:"sine",frequencies:[392],duration:.25,volume:1,sweep:{from:392,to:294},envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.25)}},denied:{name:"Denied",description:"Access denied",category:"negative",type:"sine",frequencies:[330,311],duration:.2,volume:1,repeats:[0,.12],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.18)}},thud:{name:"Thud",description:"Heavy thud",category:"negative",type:"sine",frequencies:[165],duration:.18,volume:1,envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.8*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.25)}},report:{name:"Report",description:"Report sent",category:"notification",type:"sine",frequencies:[587.33,698.46,880],duration:.16,volume:1,repeats:[0,.08,.16],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.65*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.2)}},thank:{name:"Thank",description:"Thank you",category:"positive",type:"sine",frequencies:[523.25,659.25],duration:.3,volume:1,repeats:[0,.15],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.3)}},protection:{name:"Protection",description:"Shield up",category:"action",type:"sine",frequencies:[440,554,659],duration:.3,volume:1,repeats:[0,.1,.2],envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.7*i,n+.04),t.gain.exponentialRampToValueAtTime(.001*i,n+.25)}},block:{name:"Block",description:"Blocked",category:"negative",type:"sine",frequencies:[220],duration:.2,volume:1,envelope:(t,e,n,i)=>{t.gain.setValueAtTime(.001*i,n),t.gain.exponentialRampToValueAtTime(.8*i,n+.08),t.gain.exponentialRampToValueAtTime(.001*i,n+.2)}},none:{name:"None (Silent)",description:"No sound",category:"other",type:"sine",frequencies:[440],duration:.001,volume:1,envelope:(t,e,n,i)=>{t.gain.setValueAtTime(0,n)}}}},755:function(t){t.exports='/* Base theme configuration */\n:root {\n\t/* Light theme colors */\n\t--light-bg-primary: #ffffff;\n\t--light-bg-secondary: #f8f9fa;\n\t--light-bg-tertiary: #f1f3f5;\n\t--light-bg-hover: #e2e8f0;\n\t--light-text-primary: #1a1a1a;\n\t--light-text-secondary: #4a5568;\n\t--light-border: #e2e8f0;\n\t--light-primary: #2962ff;\n\t--light-primary-hover: #1e88e5;\n\t--light-danger: #dc3545;\n\t--light-warning: #f59e0b;\n\t--light-success: #22c55e;\n\t--light-surface: #ffffff;\n\t--light-shadow: rgba(0, 0, 0, 0.1);\n\t--light-shadow-hover: rgba(0, 0, 0, 0.15);\n\t--light-highlight: rgba(41, 98, 255, 0.1);\n\n\t/* Dark theme colors */\n\t--dark-bg-primary: #1a1a1a;\n\t--dark-bg-secondary: #242424;\n\t--dark-bg-tertiary: #2d2d2d;\n\t--dark-bg-hover: #333333;\n\t--dark-text-primary: #f8f9fa;\n\t--dark-text-secondary: #a0aec0;\n\t--dark-border: #404040;\n\t--dark-primary: #60a5fa;\n\t--dark-primary-hover: #3b82f6;\n\t--dark-danger: #ef4444;\n\t--dark-warning: #f59e0b;\n\t--dark-success: #10b981;\n\t--dark-surface: #242424;\n\t--dark-shadow: rgba(0, 0, 0, 0.3);\n\t--dark-shadow-hover: rgba(0, 0, 0, 0.4);\n\t--dark-highlight: rgba(96, 165, 250, 0.15);\n\n\t/* Default fallback values (will be overridden by theme) */\n\t--bg-primary: var(--light-bg-primary);\n\t--bg-secondary: var(--light-bg-secondary);\n\t--bg-tertiary: var(--light-bg-tertiary);\n\t--bg-hover: var(--light-bg-hover);\n\t--text-primary: var(--light-text-primary);\n\t--text-secondary: var(--light-text-secondary);\n\t--border-color: var(--light-border);\n\t--primary: var(--light-primary);\n\t--primary-hover: var(--light-primary-hover);\n\t--danger: var(--light-danger);\n\t--warning: var(--light-warning);\n\t--success: var(--light-success);\n\t--surface: var(--light-surface);\n\t--shadow: var(--light-shadow);\n\t--shadow-hover: var(--light-shadow-hover);\n\t--highlight: var(--light-highlight);\n\n\t/* Animation durations */\n\t--transition-fast: 0.15s;\n\t--transition-normal: 0.25s;\n\t--transition-slow: 0.4s;\n\n\t/* Border radius */\n\t--radius-sm: 4px;\n\t--radius-md: 8px;\n\t--radius-lg: 12px;\n\n\t/* Spacing */\n\t--space-1: 4px;\n\t--space-2: 8px;\n\t--space-3: 12px;\n\t--space-4: 16px;\n\t--space-5: 20px;\n\t--space-6: 24px;\n\n\t/* Elevation shadows */\n\t--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n\t--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n\t--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n\t--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.15);\n}\n\n/* Base styles */\n* {\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n\ttransition: background-color var(--transition-normal),\n\t\t\t\tborder-color var(--transition-normal),\n\t\t\t\tcolor var(--transition-normal),\n\t\t\t\tbox-shadow var(--transition-normal),\n\t\t\t\ttransform var(--transition-fast);\n}\n\nbody {\n\tfont-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n\tline-height: 1.5;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n/* Interactive elements */\nbutton,\n.interactive {\n\tcursor: pointer;\n\tborder-radius: var(--radius-md);\n\tborder: 1px solid transparent;\n\tpadding: var(--space-2) var(--space-4);\n\tfont-weight: 500;\n\ttransition: all var(--transition-normal);\n}\n\nbutton:hover,\n.interactive:hover {\n\ttransform: translateY(-1px);\n}\n\nbutton:active,\n.interactive:active {\n\ttransform: translateY(0);\n}\n\n/* Accessibility */\nbutton:focus-visible,\na:focus-visible,\ninput:focus-visible,\nselect:focus-visible {\n\toutline: 2px solid var(--light-primary);\n\toutline-offset: 2px;\n}\n\n[data-theme="dark"] button:focus-visible,\n[data-theme="dark"] a:focus-visible,\n[data-theme="dark"] input:focus-visible,\n[data-theme="dark"] select:focus-visible {\n\toutline-color: var(--dark-primary);\n}\n\n/* Scrollbars */\n::-webkit-scrollbar {\n\twidth: 10px;\n\theight: 10px;\n}\n\n::-webkit-scrollbar-track {\n\tbackground: transparent;\n}\n\n::-webkit-scrollbar-thumb {\n\tbackground: var(--light-border);\n\tborder-radius: var(--radius-lg);\n\tborder: 2px solid transparent;\n\tbackground-clip: content-box;\n}\n\n::-webkit-scrollbar-thumb:hover {\n\tbackground: var(--light-text-secondary);\n\tborder: 2px solid transparent;\n\tbackground-clip: content-box;\n}\n\n[data-theme="dark"] ::-webkit-scrollbar-thumb {\n\tbackground: var(--dark-border);\n}\n\n[data-theme="dark"] ::-webkit-scrollbar-thumb:hover {\n\tbackground: var(--dark-text-secondary);\n}\n\n/* Floating iframe modal */\n.wiki-iframe-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: rgba(0, 0, 0, 0.6);\n\t-webkit-backdrop-filter: blur(4px);\n\tbackdrop-filter: blur(4px);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tz-index: 10000;\n\tanimation: fadeIn 0.2s ease;\n}\n\n@keyframes fadeIn {\n\tfrom {\n\t\topacity: 0;\n\t}\n\tto {\n\t\topacity: 1;\n\t}\n}\n\n.wiki-iframe-container {\n\twidth: 90%;\n\theight: 90%;\n\tmax-width: 1400px;\n\tmax-height: 900px;\n\tbackground: var(--bg-primary);\n\tborder-radius: var(--radius-lg);\n\tbox-shadow: var(--shadow-xl);\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n\tanimation: slideUp 0.3s ease;\n}\n\n@keyframes slideUp {\n\tfrom {\n\t\ttransform: translateY(20px);\n\t\topacity: 0;\n\t}\n\tto {\n\t\ttransform: translateY(0);\n\t\topacity: 1;\n\t}\n}\n\n.wiki-iframe-header {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: var(--space-3) var(--space-4);\n\tbackground: var(--bg-secondary);\n\tborder-bottom: 1px solid var(--border-color);\n}\n\n.wiki-iframe-title {\n\tfont-weight: 600;\n\tcolor: var(--text-primary);\n\tfont-size: 0.95rem;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tflex: 1;\n\tmin-width: 0;\n}\n\n.wiki-iframe-title-text {\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.wiki-iframe-controls {\n\tdisplay: flex;\n\tgap: var(--space-2);\n}\n\n.wiki-iframe-btn {\n\tpadding: var(--space-2) var(--space-3);\n\tbackground: transparent;\n\tborder: 1px solid var(--border-color);\n\tborder-radius: var(--radius-md);\n\tcursor: pointer;\n\tcolor: var(--text-primary);\n\tfont-size: 0.9rem;\n\ttransition: all var(--transition-fast);\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n}\n\n.wiki-iframe-btn:hover {\n\tbackground: var(--bg-hover);\n\tborder-color: var(--primary);\n}\n\n.wiki-iframe-btn.close-btn {\n\tcolor: var(--danger);\n}\n\n.wiki-iframe-btn.close-btn:hover {\n\tbackground: var(--danger);\n\tcolor: white;\n\tborder-color: var(--danger);\n}\n\n.wiki-iframe-content {\n\tflex: 1;\n\tposition: relative;\n\toverflow: hidden;\n}\n\n.wiki-iframe-content iframe {\n\twidth: 100%;\n\theight: 100%;\n\tborder: none;\n}\n\n.wiki-iframe-loading {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tcolor: var(--text-secondary);\n\tfont-size: 0.95rem;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: var(--space-3);\n}\n\n.wiki-iframe-spinner {\n\twidth: 40px;\n\theight: 40px;\n\tborder: 3px solid var(--border-color);\n\tborder-top-color: var(--primary);\n\tborder-radius: 50%;\n\tanimation: spin 0.8s linear infinite;\n}\n\n@keyframes spin {\n\tto {\n\t\ttransform: rotate(360deg);\n\t}\n}\n\n/* Dark mode specific overrides for iframe modal */\n[data-theme="dark"] .wiki-iframe-overlay {\n\tbackground: rgba(0, 0, 0, 0.8);\n}\n\n[data-theme="dark"] .wiki-iframe-container {\n\tbackground: var(--dark-bg-primary);\n}\n\n[data-theme="dark"] .wiki-iframe-header {\n\tbackground: var(--dark-bg-secondary);\n\tborder-bottom-color: var(--dark-border);\n}\n\n[data-theme="dark"] .wiki-iframe-title {\n\tcolor: var(--dark-text-primary);\n}\n\n[data-theme="dark"] .wiki-iframe-btn {\n\tcolor: var(--dark-text-primary);\n\tborder-color: var(--dark-border);\n\tbackground: transparent;\n}\n\n[data-theme="dark"] .wiki-iframe-btn:hover {\n\tbackground: var(--dark-bg-hover);\n\tborder-color: var(--dark-primary);\n}\n\n[data-theme="dark"] .wiki-iframe-btn.close-btn {\n\tcolor: var(--dark-danger);\n}\n\n[data-theme="dark"] .wiki-iframe-btn.close-btn:hover {\n\tbackground: var(--dark-danger);\n\tcolor: white;\n\tborder-color: var(--dark-danger);\n}\n\n[data-theme="dark"] .wiki-iframe-loading {\n\tcolor: var(--dark-text-secondary);\n}\n\n[data-theme="dark"] .wiki-iframe-spinner {\n\tborder-color: var(--dark-border);\n\tborder-top-color: var(--dark-primary);\n}'},783:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.subdomains=void 0;e.subdomains={aa:"Afar",ab:"Abkhaz",ace:"Acehnese",ady:"Adyghe",af:"Afrikaans",ak:"Akan",als:"Alemannic",alt:"Southern Altai",am:"Amharic",ami:"Amis",an:"Aragonese",ang:"Old English",ann:"Obolo",anp:"Angika",ar:"Arabic",arc:"Aramaic",ary:"Moroccan Arabic",arz:"Egyptian Arabic",as:"Assamese",ast:"Asturian",atj:"Atikamekw",av:"Avar",avk:"Kotava",awa:"Awadhi",ay:"Aymara",az:"Azerbaijani",azb:"South Azerbaijani",ba:"Bashkir",ban:"Balinese",bar:"Bavarian","bat-smg":"Samogitian",bbc:"Toba Batak",bcl:"Central Bikol",bdr:"Bajau Sama",be:"Belarusian","be-tarask":"Belarusian (Classical)",bew:"Betawi",bg:"Bulgarian",bh:"Bhojpuri",bi:"Bislama",bjn:"Banjarese",blk:"Pa'O",bm:"Bambara",bn:"Bengali",bo:"Tibetan",bpy:"Bishnupriya Manipuri",br:"Breton",bs:"Bosnian",btm:"Mandailing Batak",bug:"Buginese",bxr:"Buryat",ca:"Catalan","cbk-zam":"Chavacano",cdo:"Eastern Min",ce:"Chechen",ceb:"Cebuano",ch:"Chamorro",cho:"Choctaw",chr:"Cherokee",chy:"Cheyenne",ckb:"Sorani Kurdish",co:"Corsican",cr:"Cree",crh:"Crimean Tatar",cs:"Czech",csb:"Kashubian",cu:"Old Church Slavonic",cv:"Chuvash",cy:"Welsh",da:"Danish",dag:"Dagbani",de:"German",dga:"Dagaare",din:"Dinka",diq:"Zazaki",dsb:"Lower Sorbian",dtp:"Dusun",dty:"Doteli",dv:"Maldivian",dz:"Dzongkha",ee:"Ewe",el:"Greek",eml:"Emilian–Romagnol",en:"English",eo:"Esperanto",es:"Spanish",et:"Estonian",eu:"Basque",ext:"Extremaduran",fa:"Persian",fat:"Fante",ff:"Fula",fi:"Finnish","fiu-vro":"Võro",fj:"Fijian",fo:"Faroese",fon:"Fon",fr:"French",frp:"Franco-Provençal",frr:"North Frisian",fur:"Friulian",fy:"West Frisian",ga:"Irish",gag:"Gagauz",gan:"Gan",gcr:"Guianan Creole",gd:"Scottish Gaelic",gl:"Galician",glk:"Gilaki",gn:"Guarani",gom:"Konkani",gor:"Gorontalo",got:"Gothic",gpe:"Ghanaian Pidgin English",gu:"Gujarati",guc:"Wayuu",gur:"Gurenne",guw:"Gun",gv:"Manx",ha:"Hausa",hak:"Hakka",haw:"Hawaiian",he:"Hebrew",hi:"Hindi",hif:"Fiji Hindi",ho:"Hiri Motu",hr:"Croatian",hsb:"Upper Sorbian",ht:"Haitian Creole",hu:"Hungarian",hy:"Armenian",hyw:"Western Armenian",hz:"Herero",ia:"Interlingua",iba:"Iban",id:"Indonesian",ie:"Interlingue",ig:"Igbo",igl:"Igala",ii:"Sichuan Yi",ik:"Inupiaq",ilo:"Ilocano",inh:"Ingush",io:"Ido",is:"Icelandic",it:"Italian",iu:"Inuktitut",ja:"Japanese",jam:"Jamaican Patois",jbo:"Lojban",jv:"Javanese",ka:"Georgian",kaa:"Karakalpak",kab:"Kabyle",kbd:"Kabardian",kbp:"Kabiye",kcg:"Tyap",kg:"Kongo",kge:"Komering",ki:"Kikuyu",kj:"Kwanyama",kk:"Kazakh",kl:"Greenlandic",km:"Khmer",kn:"Kannada",knc:"Central Kanuri",ko:"Korean",koi:"Komi-Permyak",kr:"Kanuri",krc:"Karachay-Balkar",ks:"Kashmiri",ksh:"Ripuarian",ku:"Kurdish",kus:"Kusaal",kv:"Komi",kw:"Cornish",ky:"Kyrgyz",la:"Latin",lad:"Judaeo-Spanish",lb:"Luxembourgish",lbe:"Lak",lez:"Lezgian",lfn:"Lingua Franca Nova",lg:"Luganda",li:"Limburgish",lij:"Ligurian",lld:"Ladin",lmo:"Lombard",ln:"Lingala",lo:"Lao",lrc:"Northern Luri",lt:"Lithuanian",ltg:"Latgalian",lv:"Latvian",mad:"Madurese",mai:"Maithili","map-bms":"Banyumasan",mdf:"Moksha",mg:"Malagasy",mh:"Marshallese",mhr:"Meadow Mari",mi:"Maori",min:"Minangkabau",mk:"Macedonian",ml:"Malayalam",mn:"Mongolian",mni:"Meitei",mnw:"Mon",mo:"Moldovan",mos:"Moore",mr:"Marathi",mrj:"Hill Mari",ms:"Malay",mt:"Maltese",mus:"Muscogee",mwl:"Mirandese",my:"Burmese",myv:"Erzya",mzn:"Mazanderani",na:"Nauruan",nah:"Nahuatl",nap:"Neapolitan",nds:"Low German","nds-nl":"Dutch Low Saxon",ne:"Nepali",new:"Newar",ng:"Ndonga",nia:"Nias",nl:"Dutch",nn:"Norwegian (Nynorsk)",no:"Norwegian",nostalgia:"Nostalgia",nov:"Novial",nqo:"N'Ko",nr:"Southern Ndebele",nrm:"Norman",nso:"Northern Sotho",nup:"Nupe",nv:"Navajo",ny:"Chewa",oc:"Occitan",olo:"Livvi-Karelian",om:"Oromo",or:"Odia",os:"Ossetian",pa:"Punjabi",pag:"Pangasinan",pam:"Kapampangan",pap:"Papiamento",pcd:"Picard",pcm:"Nigerian Pidgin",pdc:"Pennsylvania Dutch",pfl:"Palatine German",pi:"Pali",pih:"Norfuk",pl:"Polish",pms:"Piedmontese",pnb:"Western Punjabi",pnt:"Pontic",ps:"Pashto",pt:"Portuguese",pwn:"Paiwan",qu:"Quechua",rki:"Rakhine",rm:"Romansh",rmy:"Romani",rn:"Kirundi",ro:"Romanian","roa-rup":"Aromanian","roa-tara":"Tarantino",rsk:"Pannonian Rusyn",ru:"Russian","ru-sib":"Siberian",rue:"Rusyn",rw:"Kinyarwanda",sa:"Sanskrit",sah:"Yakut",sat:"Santali",sc:"Sardinian",scn:"Sicilian",sco:"Scots",sd:"Sindhi",se:"Northern Sami",sep11:"September 11",sg:"Sango",sh:"Serbo-Croatian",shi:"Shilha",shn:"Shan",si:"Sinhala",simple:"Simple English",sk:"Slovak",skr:"Saraiki",sl:"Slovene",sm:"Samoan",smn:"Inari Sami",sn:"Shona",so:"Somali",sq:"Albanian",sr:"Serbian",srn:"Sranan Tongo",ss:"Swazi",st:"Sotho",stq:"Saterland Frisian",su:"Sundanese",sv:"Swedish",sw:"Swahili",syl:"Sylheti",szl:"Silesian",szy:"Sakizaya",ta:"Tamil",tay:"Atayal",tcy:"Tulu",tdd:"Tai Nuea",te:"Telugu",ten:"10",test:"Test",test2:"Test2",tet:"Tetum",tg:"Tajik",th:"Thai",ti:"Tigrinya",tig:"Tigre",tk:"Turkmen",tl:"Tagalog",tlh:"Klingon",tly:"Talysh",tn:"Tswana",to:"Tongan",tokipona:"Toki Pona",tpi:"Tok Pisin",tr:"Turkish",trv:"Seediq",ts:"Tsonga",tt:"Tatar",tum:"Tumbuka",tw:"Twi",ty:"Tahitian",tyv:"Tuvan",udm:"Udmurt",ug:"Uyghur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",ve:"Venda",vec:"Venetian",vep:"Veps",vi:"Vietnamese",vls:"West Flemish",vo:"Volapük",wa:"Walloon",war:"Waray",wo:"Wolof",wuu:"Wu",xal:"Kalmyk",xh:"Xhosa",xmf:"Mingrelian",yi:"Yiddish",yo:"Yoruba",za:"Zhuang",zea:"Zeelandic",zgh:"Moroccan Amazigh",zh:"Chinese","zh-classical":"Classical Chinese","zh-min-nan":"Southern Min","zh-yue":"Cantonese",zu:"Zulu"}},828:function(t){t.exports="body {\n\tbackground: #22262f;\n}\n\n*, .about-link {\n\tcolor: #f1f5ff;\n}\n\nbutton {\n\tbackground: rgba(74, 125, 204, 0.95) !important;\n\t-webkit-backdrop-filter: blur(8px) !important;\n\tbackdrop-filter: blur(8px) !important;\n\tborder: 1px solid rgba(74, 125, 204, 0.3) !important;\n\tbox-shadow: 0 2px 8px rgba(74, 125, 204, 0.3) !important;\n}\n\nbutton:hover {\n\tbackground: rgba(91, 154, 255, 0.95) !important;\n\tbox-shadow: 0 4px 12px rgba(91, 154, 255, 0.4) !important;\n}\n\n.queue-edit-current, .progress-bar, .queue-edit-tag {\n\tbackground: rgba(41, 47, 60, 0.95) !important;\n\t-webkit-backdrop-filter: blur(8px) !important;\n\tbackdrop-filter: blur(8px) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.06) !important;\n}\n\n.queue-edit-tag-minor {\n\tbackground: rgba(31, 36, 48, 0.95) !important;\n\t-webkit-backdrop-filter: blur(8px) !important;\n\tbackdrop-filter: blur(8px) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.08) !important;\n\tcolor: #a8b0c0 !important;\n}\n\n.minor-indicator {\n\tbackground: rgba(54, 62, 81, 0.9) !important;\n\t-webkit-backdrop-filter: blur(8px) !important;\n\tbackdrop-filter: blur(8px) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.08) !important;\n\tcolor: #a8b0c0 !important;\n}\n\n.queue-edit-content {\n\tborder-bottom: 2px solid #363e51 !important;\n}\n\n#queue {\n\tborder-right: 2px solid #363e51 !important;\n}\n\n#right-details {\n\tborder-left: 2px solid #363e51 !important;\n}\n\n#bottom-tools {\n\tborder-top: 2px solid #363e51 !important;\n}\n\n#bottom-tools-stats {\n\tcolor: #aaa !important;\n}\n\n#bottom-tools-stats .bottom-stat-value {\n\tcolor: #e0e0e0 !important;\n}\n\n.toast-notification {\n\tbackground: rgba(211, 47, 47, 0.96) !important;\n\t-webkit-backdrop-filter: blur(12px) !important;\n\tbackdrop-filter: blur(12px) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.15) !important;\n\tbox-shadow: 0 6px 20px rgba(211, 47, 47, 0.4) !important;\n}\n\n.confirmation-modal-overlay {\n\tbackground: rgba(0, 0, 0, 0.7) !important;\n}\n\n.confirmation-modal {\n\tbackground: rgba(41, 47, 60, 0.98) !important;\n\t-webkit-backdrop-filter: blur(20px) !important;\n\tbackdrop-filter: blur(20px) !important;\n\tbox-shadow: 0 12px 48px rgba(0, 0, 0, 0.7) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.1) !important;\n}\n\n.confirmation-modal-header {\n\tborder-bottom: 1px solid #363e51 !important;\n}\n\n.confirmation-modal-title {\n\tcolor: #f1f5ff !important;\n}\n\n.confirmation-modal-body {\n\tcolor: #bbb !important;\n}\n\n.confirmation-modal-username {\n\tcolor: #5b9aff !important;\n}\n\n.confirmation-modal-footer {\n\tborder-top: 1px solid #363e51 !important;\n}\n\n.confirmation-modal-button-no {\n\tbackground: #363e51 !important;\n\tcolor: #f1f5ff !important;\n}\n\n.confirmation-modal-button-no:hover {\n\tbackground: #4a5468 !important;\n}\n\n.confirmation-modal-button-yes {\n\tbackground: #4a7dcc !important;\n}\n\n.confirmation-modal-button-yes:hover {\n\tbackground: #5b9aff !important;\n}\n\n.confirmation-modal-button-uaa {\n\tbackground: #c13030 !important;\n}\n\n.confirmation-modal-button-uaa:hover {\n\tbackground: #d94444 !important;\n}\n\n.confirmation-modal-button-reason {\n\tbackground: #4a7dcc !important;\n}\n\n.confirmation-modal-button-reason:hover {\n\tbackground: #5b9aff !important;\n}\n\n.confirmation-modal-button-cancel {\n\tbackground: #363e51 !important;\n\tcolor: #f1f5ff !important;\n}\n\n.confirmation-modal-button-cancel:hover {\n\tbackground: #4a5468 !important;\n}\n\n#user-contribs-top, #page-history-top {\n\tborder-bottom: 2px solid #363e51 !important;\n}\n\n#page-history {\n\tborder-top: 2px solid #363e51 !important;\n}\n\n/* Legacy selectors for compatibility */\n.settings-left-menu-item:hover, .settings-left-menu-item.selected,\n.context-menu div:not(#context-ores):hover {\n\tbackground: #292f3c !important;\n}\n\n.numeric-input-button:hover {\n\tbackground: #2e3442 !important;\n}\n\n.context-menu {\n\tbackground: rgba(41, 47, 60, 0.95) !important;\n\t-webkit-backdrop-filter: blur(12px) !important;\n\tbackdrop-filter: blur(12px) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.08) !important;\n\tbox-shadow: 0 8px 24px rgba(0, 0, 0, 0.4) !important;\n}\n\n.settings {\n\tbackground: rgba(41, 47, 60, 0.95) !important;\n\t-webkit-backdrop-filter: blur(12px) !important;\n\tbackdrop-filter: blur(12px) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.08) !important;\n\tbox-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;\n}\n\n#notifications-panel {\n\tbackground: rgba(41, 47, 60, 0.95) !important;\n\t-webkit-backdrop-filter: blur(12px) !important;\n\tbackdrop-filter: blur(12px) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.08) !important;\n\tbox-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;\n}\n\nselect, input[type=text], .bottom-subcontent-button {\n\tbackground: rgba(46, 52, 66, 0.95) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.08) !important;\n\tcolor: #e0e0e0 !important;\n\tborder-radius: 8px !important;\n}\n\nselect:hover, input[type=text]:focus, .bottom-subcontent-button:hover {\n\tborder-color: rgba(91, 154, 255, 0.4) !important;\n\tbackground: rgba(46, 52, 66, 1) !important;\n}\n\n.queue-edit-change {\n\tbackground: linear-gradient(to right, rgba(34, 38, 47, 0), rgba(34, 38, 47, 1)) !important;\n}\n\n#middle-top, #queue-top, #right-top {\n\tbox-shadow: none !important;\n\tborder-bottom: 2px solid #363e51;\n}\n\n.queue-edit:not(.queue-edit-current) {\n\tanimation: fadeindark 0.5s linear 0s 1 !important;\n}\n\n@keyframes fadeindark {\n\tfrom {\n\t\tbackground: #363e51;\n\t}\n\n\tto {\n\t\tbackground: transparent;\n\t}\n}\n\n.settings, .context-menu, .control-keys > div, .add-action-button, .control-container,\n.user-container > div {\n\tbackground: #22262f;\n\tborder: 2px solid #363e51;\n}\n\n.settings-left {\n\tborder-right: 2px solid #363e51;\n}\n\n.settings-section {\n\tbackground: rgba(35, 38, 48, 0.8) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.08) !important;\n\tbox-shadow: 0 4px 20px rgba(0, 0, 0, 0.3) !important;\n}\n\n.settings-section-title {\n\tcolor: #e0e0e0 !important;\n}\n\n.settings-section-desc {\n\tcolor: #999 !important;\n}\n\n.settings-section a {\n\tcolor: #8fa3ff !important;\n}\n\n.settings-section a:hover {\n\tcolor: #b0c0ff !important;\n}\n\n.settings-right {\n\tbackground: rgba(20, 22, 28, 0.5) !important;\n}\n\n#notifications-panel {\n\tbackground: rgba(34, 38, 47, 0.95) !important;\n\t-webkit-backdrop-filter: blur(12px) !important;\n\tbackdrop-filter: blur(12px) !important;\n\tborder: 1px solid rgba(255, 255, 255, 0.08) !important;\n\tbox-shadow: 0 8px 32px rgba(0, 0, 0, 0.4) !important;\n}\n\n#notifications-header {\n\tborder-bottom: 1px solid #363e51 !important;\n}\n\n.notification-item {\n\tborder-bottom: 1px solid #363e51 !important;\n}\n\n.notification-item:hover {\n\tbackground: #292f3c !important;\n}\n\n.notification-item.unread {\n\tbackground: #2a3a4a !important;\n\tborder-left-color: #5588cc !important;\n}\n\n.notification-subtitle {\n\tcolor: #aaa !important;\n}\n\n.notification-time {\n\tcolor: #888 !important;\n}\n\n.notification-type {\n\tcolor: #999 !important;\n}\n\n#page-metadata {\n\tcolor: #999 !important;\n}\n\n#mark-all-read {\n\tcolor: #6ba3d8 !important;\n}\n\n.queue-edit-user-highlight {\n\tcolor: #f4c430 !important;\n\tfont-weight: 600 !important;\n\tbackground: none !important;\n\t-webkit-backdrop-filter: none !important;\n\tbackdrop-filter: none !important;\n\tborder: none !important;\n\tpadding: 0 !important;\n\tborder-radius: 0 !important;\n\tbox-shadow: none !important;\n}\n\n.queue-edit-user-empty-talk {\n\tcolor: #ff6b6b !important;\n\tfont-weight: 600 !important;\n\tbackground: none !important;\n\t-webkit-backdrop-filter: none !important;\n\tbackdrop-filter: none !important;\n\tborder: none !important;\n\tpadding: 0 !important;\n\tborder-radius: 0 !important;\n\tbox-shadow: none !important;\n}\n\n.toggle-switch {\n\tbackground: #363e51 !important;\n}\n\n.settings-toggle.active .toggle-switch {\n\tbackground: #4a7dcc !important;\n}\n\n.toggle-slider {\n\tbackground: #f1f5ff !important;\n}\n\n#block-count-indicator {\n\tbackground: #22262f !important;\n\tborder-color: #ff6666 !important;\n}\n\n::-webkit-scrollbar {\n\tbackground: #22262f;\n\twidth: 10px;\n}\n\n::-webkit-scrollbar-track {\n\tbackground: #1a1e27;\n\tborder-radius: 10px;\n}\n\n::-webkit-scrollbar-thumb {\n\tbackground: #3a4052;\n\tborder-radius: 10px;\n\ttransition: background 0.2s;\n}\n\n::-webkit-scrollbar-thumb:hover {\n\tbackground: #4a5468;\n}\n\n.queue-edit-current {\n\tbackground: #2a3444 !important;\n\tborder-left: 4px solid #5b9aff !important;\n\tbox-shadow: inset 0 0 10px rgba(91, 154, 255, 0.15) !important;\n}\n\n#middle-top, #right-top {\n\tbackground: rgba(41, 47, 60, 0.98) !important;\n\t-webkit-backdrop-filter: blur(8px) !important;\n\tbackdrop-filter: blur(8px) !important;\n\tborder-bottom: 2px solid #363e51 !important;\n}\n\n#queue-top {\n\tbackground: rgba(41, 47, 60, 0.98) !important;\n\t-webkit-backdrop-filter: blur(8px) !important;\n\tbackdrop-filter: blur(8px) !important;\n}\n\n#bottom-tools {\n\tbackground: rgba(41, 47, 60, 0.98) !important;\n\t-webkit-backdrop-filter: blur(8px) !important;\n\tbackdrop-filter: blur(8px) !important;\n}\n\n#middle-top a, #right-top a {\n\tcolor: #6ba3d8 !important;\n}\n\n#middle-top a:hover, #right-top a:hover {\n\tcolor: #89b8e8 !important;\n}\n\n#middle-top .fa, #right-top .fa {\n\tcolor: #aaa !important;\n}\n\n/* Warning/Notice boxes - dark mode compatible */\n.warning-box, .notice-box {\n\tbackground: rgba(139, 92, 0, 0.15) !important;\n\tborder-left-color: #c5a000 !important;\n\tcolor: #f0d48a !important;\n}\n\n.error-box {\n\tbackground: rgba(139, 0, 0, 0.15) !important;\n\tborder-left-color: #dc3545 !important;\n\tcolor: #ffb3b3 !important;\n}\n\n/* Older edit notice */\n#old-edit-notice {\n\tbackground: rgba(139, 92, 0, 0.15) !important;\n\tborder-left-color: #c5a000 !important;\n\tcolor: #f0d48a !important;\n}\n\n#old-edit-notice a {\n\tcolor: #a3c5ff !important;\n}\n\n/* Code blocks in light backgrounds */\ncode {\n\tbackground: rgba(70, 80, 100, 0.5) !important;\n\tcolor: #e0e0e0 !important;\n}"},839:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.WikiShieldEventManager=void 0;var i=n(917);e.WikiShieldEventManager=class{constructor(t){this.wikishield=t,this.openWikipediaLink=(t,e,n=null)=>{n&&1===n.button||n&&(n.ctrlKey||n.metaKey)?window.open(t):window.open(t,"_blank")},this.events=null}initializeEvents(t){const e=this.wikishield;this.events={prevEdit:{description:"Go to the previous edit in the queue",icon:"fas fa-arrow-left",runWithoutEdit:!0,func:()=>(e.queue.prevItem(),!0)},nextEdit:{description:"Go to the next edit in the queue",icon:"fas fa-arrow-right",func:()=>(e.queue.nextItem(),!0)},deleteQueue:{description:"Remove all items from the queue",icon:"fas fa-trash-can",runWithoutEdit:!0,func:()=>(e.queue.delete(),!0)},openRevertMenu:{description:"Toggle the revert & warn menu",icon:"fas fa-undo",runWithoutEdit:!0,func:()=>{const t=document.querySelector('[data-menu="revert"]'),n=e.interface.elem("#revert-menu");if(n.innerHTML="",e.interface.createRevertMenu(n,e.queue.currentEdit),t){const n=t.querySelector(".bottom-tool-trigger"),i=document.querySelector(`#${t.dataset.menu}-menu`);n&&i&&(i.classList.contains("show")?(i.classList.remove("show"),n.classList.remove("active")):(e.interface.closeAllBottomMenus(),i.classList.add("show"),n.classList.add("active"),e.interface.positionBottomMenu(t,i)))}return!0}},openWarnMenu:{description:"Toggle the warn-only menu",icon:"fas fa-triangle-exclamation",runWithoutEdit:!0,func:()=>{const t=document.querySelector('[data-menu="warn"]'),n=e.interface.elem("#warn-menu");if(n.innerHTML="",e.interface.createWarnMenu(n,e.queue.currentEdit),t){const n=t.querySelector(".bottom-tool-trigger"),i=document.querySelector(`#${t.dataset.menu}-menu`);n&&i&&(i.classList.contains("show")?(i.classList.remove("show"),n.classList.remove("active")):(e.interface.closeAllBottomMenus(),i.classList.add("show"),n.classList.add("active"),e.interface.positionBottomMenu(t,i)))}return!0}},openReportMenu:{description:"Toggle the report menu",icon:"fas fa-flag",runWithoutEdit:!0,func:()=>{const t=document.querySelector('[data-menu="report"]');if(t){const n=t.querySelector(".bottom-tool-trigger"),i=document.querySelector(`#${t.dataset.menu}-menu`);n&&i&&(i.classList.contains("show")?(i.classList.remove("show"),n.classList.remove("active")):(e.interface.closeAllBottomMenus(),i.classList.add("show"),n.classList.add("active"),e.interface.positionBottomMenu(t,i)))}return!0}},openSettings:{description:"Open the settings interface",icon:"fas fa-gear",runWithoutEdit:!0,func:()=>(e.interface.settings.openSettings(),!0)},openUserPage:{description:"Open user page in a new tab",icon:"fas fa-circle-user",func:(t,n)=>{const i=n.user.name,o=e.util.pageLink(`User:${i}`);return this.openWikipediaLink(o,`User:${i}`,t),!0}},openUserTalk:{description:"Open user talk page in a new tab",icon:"fas fa-comment",func:(t,n)=>{const i=n.user.name,o=e.util.pageLink(`User talk:${i}`);return this.openWikipediaLink(o,`User talk:${i}`,t),!0}},openUserContribs:{description:"Open user contributions page in a new tab",icon:"fas fa-list",func:(t,n)=>{const i=n.user.name,o=e.util.pageLink(`Special:Contributions/${i}`);return this.openWikipediaLink(o,`Contributions: ${i}`,t),!0}},openFilterLog:{description:"Open user filter log in a new tab",icon:"fas fa-filter",func:(t,n)=>{const i=e.util.encodeuri(n.user.name),o=e.util.pageLink(`?title=Special:AbuseLog&wpSearchUser=${i}`,!0),a=n.user.name;return this.openWikipediaLink(o,`Filter Log: ${a}`,t),!0}},addToWhitelist:{description:"Add user to the whitelist",icon:"fas fa-user-check",includeInProgress:!0,progressDesc:"Whitelisting...",func:(t,n)=>{e.queue.playSparkleSound();const i=n.user.name;return e.whitelist.set(i,Date.now()),e.statistics.whitelisted++,e.logger.log(`Added ${i} to whitelist`),e.interface.renderQueue(e.queue.queue,e.queue.currentEdit),!0}},removeFromWhitelist:{description:"Remove user from the whitelist",icon:"fas fa-user-xmark",includeInProgress:!0,progressDesc:"Removing whitelist...",func:(t,n)=>{e.queue.playSparkleSound();const i=n.user.name;return e.whitelist.has(i)&&(e.whitelist.delete(i),e.logger.log(`Removed ${i} from whitelist`)),e.interface.renderQueue(e.queue.queue,e.queue.currentEdit),!0}},highlight:{description:"Highlight this user's contributions",icon:"fas fa-star",includeInProgress:!0,progressDesc:"Highlighting...",func:(t,n)=>{e.queue.playSparkleSound();const i=n.user.name,o=e.util.expiryToMilliseconds(e.options.highlightedExpiry),a=Date.now()+o;return e.highlighted.set(i,a),e.statistics.highlighted++,e.logger.log(`Highlighted user ${i} until ${new Date(a).toLocaleString()}`),e.interface.renderQueue(e.queue.queue,e.queue.currentEdit),!0}},unhighlight:{description:"Unhighlight this user's contributions",icon:"fas fa-star",includeInProgress:!0,progressDesc:"Removing highlight...",func:(t,n)=>{e.queue.playSparkleSound();const i=n.user.name;return e.highlighted.has(i)&&(e.highlighted.delete(i),e.logger.log(`Removed highlight from ${i}`)),e.interface.renderQueue(e.queue.queue,e.queue.currentEdit),!0}},openPage:{description:"Open page being edited in new tab",icon:"fas fa-file",func:(t,n)=>{const i=n.page,o=e.util.pageLink(i.title);return this.openWikipediaLink(o,i.title,t),!0}},openTalk:{description:"Open talk page in new tab",icon:"fas fa-comments",func:(t,n)=>{const i=n.page.title.split(":");let o="Talk";i.length>1&&(o=i[0].toLowerCase().includes("talk")?i[0]:i[0]+" talk");const a=`${o}:${1===i.length?i[0]:i[1]}`,s=e.util.pageLink(a);return this.openWikipediaLink(s,a,t),!0}},openHistory:{description:"Open page history in new tab",icon:"fas fa-clock-rotate-left",func:(t,n)=>{const i=n.page,o=e.util.pageLink(`Special:PageHistory/${i.title}`);return this.openWikipediaLink(o,`History: ${i.title}`,t),!0}},openRevision:{description:"Open revision in new tab",icon:"fas fa-eye",func:(t,n)=>{const i=n.revid,o=e.util.pageLink(`Special:PermanentLink/${i}`);return this.openWikipediaLink(o,`Revision ${i}`,t),!0}},openDiff:{description:"Open diff in new tab",icon:"fas fa-code-compare",func:(t,n)=>{const i=n.revid,o=e.util.pageLink(`Special:Diff/${i}`);return this.openWikipediaLink(o,`Diff ${i}`,t),!0}},thankUser:{description:"Thank user",icon:"fas fa-heart",includeInProgress:!0,progressDesc:"Thanking...",func:async(t,n)=>{if(e.queue.playThankSound(),mw.util.isTemporaryUser(n.user.name)){const t=`User talk:${n.user.name}`,i=await e.api.getSinglePageContent(t)||"";return await e.api.edit(t,i+"\n{{subst:Thanks-autosign}}",`Thanking for edit to [[${n.page.title}]] ([[WP:WikiShield|WS]])`),!0}return await e.api.thank(n.revid),!0}},warn:{description:"Warn user",icon:"fas fa-triangle-exclamation",parameters:[{title:"Warning type",id:"warningType",type:"choice",options:Object.keys(i.warningsLookup)},{title:"Level",id:"level",type:"choice",options:["auto","0","1","2","3","4","4im"]}],includeInProgress:!0,progressDesc:"Warning...",needsContinuity:!0,validateParameters:(t,e)=>{var n;return"auto"===t.level||null!==(null===(n=(0,i.getWarningFromLookup)(t.warningType))||void 0===n?void 0:n.templates[t.level])},func:async(t,n)=>{var o;e.queue.playWarnSound();const a=(0,i.getWarningFromLookup)(t.warningType),s=n.user.warningLevel;return n.user.atFinalWarning="report"===(null==a||null===(o=a.auto)||void 0===o?void 0:o[s.toString()]),await e.warnUser(n.user.name,a,t.level||"auto",n.page.title,n.revid)}},rollback:{description:"Rollback edits",icon:"fas fa-backward",parameters:[{title:"Summary (optional)",id:"summary",type:"text"}],includeInProgress:!0,progressDesc:"Rolling back...",func:async(t,n)=>(e.queue.playRollbackSound(),await e.revert(n,t.summary||""))},rollbackGoodFaith:{description:"Rollback edits (good faith)",icon:"fas fa-arrow-rotate-left",parameters:[{title:"Summary (optional)",id:"summary",type:"text"}],includeInProgress:!0,progressDesc:"Rolling back...",func:async(t,n)=>(e.queue.playRollbackSound(),await e.revert(n,t.summary||"",!0))},undo:{description:"Undo this edit only",icon:"fas fa-undo",parameters:[{title:"Reason",id:"reason",type:"text"}],includeInProgress:!0,progressDesc:"Undoing...",func:async(t,n)=>(e.queue.playRollbackSound(),await e.api.undoEdit(n,t.reason||`Undid edit by ${n.user.name} ([[WP:WikiShield|WS]])`))},reportToAIV:{description:"Report user to AIV",icon:"fas fa-flag",parameters:[{title:"Report message",id:"reportMessage",type:"choice",options:["Vandalism past final warning","Vandalism-only account","Long-term abuse"]},{title:"Comment (optional)",id:"comment",type:"text"}],includeInProgress:!0,needsContinuity:!0,progressDesc:"Reporting...",func:async(t,n)=>{e.queue.playReportSound();const i=t.comment?`${t.reportMessage}: ${t.comment}`:t.reportMessage;return await e.reportToAIV(n.user.name,i),!0}},reportToUAA:{description:"Report user to UAA",icon:"fas fa-flag",parameters:[{title:"Report message",id:"reportMessage",type:"choice",options:["Disruptive username","Offensive username","Promotional username","Misleading username"]},{title:"Comment (optional)",id:"comment",type:"text"}],includeInProgress:!0,progressDesc:"Reporting...",func:async(t,n)=>{e.queue.playReportSound();const i=t.comment?`${t.reportMessage}: ${t.comment}`:t.reportMessage;return await e.reportToUAA(n.user.name,i),!0}},requestProtection:{description:"Request protection",icon:"fas fa-shield-halved",parameters:[{title:"Level",id:"level",type:"choice",options:["Semi-protection","Extended-confirmed protection","Full protection","Pending changes protection"]},{title:"Reason",id:"reason",type:"choice",options:["Persistent vandalism","Edit warring","BLP violations","Sockpuppetry","Arbitration enforcement"]},{title:"Comment (optional)",id:"comment",type:"text"}],includeInProgress:!0,progressDesc:"Requesting protection...",func:async(t,n)=>{e.queue.playProtectionSound();const i=t.comment?`${t.reason}: ${t.comment}`:t.reason;return await e.requestProtection(n.page.title,t.level,i),!0}},block:{description:"Block user",icon:"fas fa-ban",parameters:[{title:"Block summary",id:"blockSummary",type:"choice",options:["[[Wikipedia:Vandalism|Vandalism]]","[[Wikipedia:DISRUPTONLY|Vandalism-only account]]","Long-term abuse"]},{title:"Duration",id:"duration",type:"choice",options:["31 hours","1 week","2 weeks","1 month","3 months","6 months","1 year","3 years","infinite"]}],includeInProgress:!0,progressDesc:"Blocking...",func:async(t,n)=>{e.queue.playBlockSound();return await e.api.block(n.user.name,t.blockSummary,t.duration,!0,!1,!1,!0)&&e.statistics.blocks++,!0}},protect:{description:"Protect page",icon:"fas fa-lock",includeInProgress:!0,progressDesc:"Protecting...",func:async()=>(e.queue.playProtectionSound(),!0)},welcome:{description:"Welcome user",icon:"fas fa-paper-plane",parameters:[{title:"Template",id:"template",type:"choice",options:Object.keys(t.welcomeTemplates)}],includeInProgress:!0,progressDesc:"Welcoming...",func:async(t,n)=>(e.queue.playSparkleSound(),await e.welcomeUser(n.user.name,t.template),n.user.emptyTalkPage=!1,!0)},toggleConsecutive:{description:"Toggle consecutive edits",icon:"fas fa-users",parameters:[],func:async(t,e)=>{const n=document.querySelector("#latest-edits-tab"),i=document.querySelector("#consecutive-edits-tab");return i.classList.contains("hidden")||(i.classList.contains("selected")?n.click():i.click()),!0}}},t&&Object.assign(this.events,t)}linkButton(t,e,n){const i=this.wikishield,o=(t,o=!1)=>{var a;if((o||["openUserPage","openUserTalk","openUserContribs","openFilterLog","openPage","openPageHistory","openDiff"].includes(e))&&null!==(a=this.events[e])&&void 0!==a&&a.func&&(1===t.button||t.ctrlKey||t.metaKey||o))return this.events[e].func(),void t.preventDefault();i.interface.selectedMenu=null,i.interface.updateMenuElements(),n?this.events[e].func():i.executeScript({actions:[{name:e,params:{}}]})};t.addEventListener("click",t=>o(t,!1)),t.addEventListener("auxclick",t=>{1===t.button&&o(t,!0)})}}},865:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.welcomeTemplates=e.createConditions=void 0;e.createConditions=t=>({operatorNonAdmin:{desc:"You are not an admin",check:e=>!t.rights.block},operatorAdmin:{desc:"You are an admin",check:e=>t.rights.block},userIsHighlighted:{desc:"User is highlighted",check:e=>t.highlighted.has(e.user.name)},userIsWhitelisted:{desc:"User is whitelisted",check:e=>t.whitelist.has(e.user.name)},userIsAnon:{desc:"User is anonymous (temporary account)",check:t=>mw.util.isTemporaryUser(t.user.name)},userIsRegistered:{desc:"User is registered (not temporary account)",check:t=>!mw.util.isTemporaryUser(t.user.name)},userHasEmptyTalkPage:{desc:"User has an empty talk page",check:t=>t.user.emptyTalkPage},editIsMinor:{desc:"Edit is marked as minor",check:t=>t.minor},editIsMajor:{desc:"Edit is not marked as minor",check:t=>!t.minor},editSizeNegative:{desc:"Edit removes content (negative bytes)",check:t=>(t.sizediff||0)<0},editSizePositive:{desc:"Edit adds content (positive bytes)",check:t=>(t.sizediff||0)>0},editSizeLarge:{desc:"Edit is large (>1000 bytes change)",check:t=>Math.abs(t.sizediff||0)>1e3},userEditCountLow:{desc:"User has less than 10 edits",check:t=>t.user.editCount<10&&t.user.editCount>=0},userEditCountHigh:{desc:"User has 100 or more edits",check:t=>t.user.editCount>=100},atFinalWarning:{desc:"User already has a final warning (before any new warnings)",check:t=>{var e;const n=(null===(e=t.user.originalWarningLevel)||void 0===e?void 0:e.toString())||t.user.warningLevel.toString();return["4","4im"].includes(n)}},userHasWarnings:{desc:"User has received warnings (level 1+)",check:t=>{var e;const n=(null===(e=t.user.warningLevel)||void 0===e?void 0:e.toString())||"0";return!["0",""].includes(n)}},userNoWarnings:{desc:"User has no warnings (level 0)",check:t=>{var e;const n=(null===(e=t.user.warningLevel)||void 0===e?void 0:e.toString())||"0";return["0",""].includes(n)}}});e.welcomeTemplates={Default:"{{subst:Welcome}} ~~~~",Basic:"{{subst:W-basic}}",Links:"{{subst:W-graphical}}",Latin:"{{subst:welcome non-latin}} ~~~~",COI:"{{subst:welcome-coi}} ~~~~",Mentor:"{{subst:Mentor welcome-autosign}}"}},877:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.__script__=void 0;n(783),n(332),n(587);var i=n(596),o=n(917),a=n(372),s=n(680),r=(n(599),n(924),n(270),n(551),n(209)),l=(n(572),n(6)),d=n(865),c=(n(839),n(327),n(207),n(474),n(224)),u=n(185);e.__script__={version:"1.0.0",changelog:{version:"1",HTML:'<h1 class="settings-section-title">Changelog</h1>\n\t\t<p>In development</p>'},pages:{AVI:"Wikipedia:Administrator intervention against vandalism",UAA:"Wikipedia:Usernames for administrator attention",RFPP:"Wikipedia:Requests for page protection/Increase"},config:{refresh:1e3,historyCount:10},tags:{whitelisted:["OAuth CID: 4978"]}};{const t={defaultSettings:i.defaultSettings,colorPalettes:i.colorPalettes,warningTemplateColors:o.warningTemplateColors,warnings:o.warnings,warningsLookup:o.warningsLookup,namespaces:a.namespaces,sounds:s.sounds};let e,n;if("Wikipedia:WikiShield/run"===mw.config.get("wgRelevantPageName")&&"view"===mw.config.get("wgAction")){const i=new r.WikiShieldAPI(null,new mw.Api);(0,u.checkKillswitch)(i,!0).then(()=>{if(u.killswitch_status.disabled)return console.log("WikiShield: Disabled by killswitch"),void mw.notify("WikiShield is currently disabled by the development team.",{type:"error"});window.sessionStorage.getItem("WikiShield:SendHardReloadNotification")&&(window.sessionStorage.removeItem("WikiShield:SendHardReloadNotification"),u.killswitch_status.notifications.push({id:`app-${performance.now()}`,type:"app",subtype:"hard-reload",timestamp:Date.now(),title:"The development team has forced a reload.",agent:"WikiShield Development",category:"WikiShield",read:!1})),e=new c.WikiShield(t),e.queue=new l.WikiShieldQueue(e),n={conditions:(0,d.createConditions)(e),welcomeTemplates:d.welcomeTemplates},e.wikishieldEventData=n,e.interface.eventManager.initializeEvents(n),e.init().then(()=>{window.addEventListener("beforeunload",()=>e.save());for(const t of u.killswitch_status.notifications)e.notifications.unshift(t);u.killswitch_status.notifications=[],(0,u.startKillswitchPolling)(e.api,t=>{for(const n of t.notifications)e.notifications.unshift(n);t.notifications=[]})}),window.addEventListener("keydown",e.keyPressed.bind(e))}).catch(i=>{console.error("WikiShield: Failed to check killswitch:",i),mw.notify("WikiShield: Failed to check killswitch. Loading anyway...",{type:"warn"}),e=new c.WikiShield(t),e.queue=new l.WikiShieldQueue(e),n={conditions:(0,d.createConditions)(e),welcomeTemplates:d.welcomeTemplates},e.wikishieldEventData=n,e.interface.eventManager.initializeEvents(n),e.init().then(()=>{window.addEventListener("beforeunload",()=>e.save()),(0,u.startKillswitchPolling)(e.api)}),window.addEventListener("keydown",e.keyPressed.bind(e))})}else mw.util.addPortletLink("p-personal",mw.util.getUrl("Wikipedia:WikiShield/run"),"🛡️ WikiShield","pt-wikishield","wikishield",null,"#pt-preferences"),mw.util.addPortletLink("p-personal-sticky-header",mw.util.getUrl("Wikipedia:WikiShield/run"),"🛡️ WikiShield","pt-wikishield","WikiShield",null,"#pt-preferences")}},878:function(t){t.exports="* {\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n}\n\nbody, html, #container {\n\twidth: 100%;\n\theight: 100%;\n\toverflow: hidden;\n}\n\n#container {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbackground: linear-gradient(135deg, #0f0c29 0%, #302b63 50%, #24243e 100%);\n\tposition: relative;\n}\n\n/* Animated dots canvas background */\n#dots-canvas {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 0;\n}\n\n/* Animated background particles */\n#container::before {\n\tcontent: '';\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tbackground:\n\t\tradial-gradient(circle at 20% 50%, rgba(102, 126, 234, 0.15) 0%, transparent 50%),\n\t\tradial-gradient(circle at 80% 80%, rgba(240, 147, 251, 0.15) 0%, transparent 50%),\n\t\tradial-gradient(circle at 40% 20%, rgba(118, 75, 162, 0.1) 0%, transparent 50%);\n\tanimation: particles 20s ease-in-out infinite;\n\tz-index: 1;\n}\n\n@keyframes particles {\n\t0%, 100% {\n\t\ttransform: translate(0, 0) rotate(0deg);\n\t}\n\t33% {\n\t\ttransform: translate(30px, -30px) rotate(120deg);\n\t}\n\t66% {\n\t\ttransform: translate(-20px, 20px) rotate(240deg);\n\t}\n}\n\n#welcome-container {\n\tposition: relative;\n\tz-index: 1;\n\ttext-align: center;\n\tpadding: 60px;\n\tbackground: linear-gradient(135deg, rgba(15, 12, 41, 0.8), rgba(48, 43, 99, 0.8));\n\t-webkit-backdrop-filter: blur(20px);\n\tbackdrop-filter: blur(20px);\n\tborder-radius: 24px;\n\tbox-shadow:\n\t\t0 20px 60px rgba(0, 0, 0, 0.5),\n\t\t0 0 40px rgba(102, 126, 234, 0.4),\n\t\t0 0 80px rgba(240, 147, 251, 0.3),\n\t\tinset 0 0 60px rgba(102, 126, 234, 0.15),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.2),\n\t\t0 0 0 2px rgba(102, 126, 234, 0.6),\n\t\t0 0 0 4px rgba(240, 147, 251, 0.4);\n\tanimation: containerFadeIn 1s ease-out, borderGlow 3s ease-in-out infinite;\n\tmax-width: 500px;\n\toverflow: hidden;\n}\n\n#welcome-container::before {\n\tcontent: '';\n\tposition: absolute;\n\tinset: -6px;\n\tbackground: linear-gradient(135deg, #667eea, #f093fb, #764ba2);\n\tborder-radius: 28px;\n\tz-index: -1;\n\tfilter: blur(12px);\n\topacity: 0.5;\n\tanimation: pulseGlow 2s ease-in-out infinite;\n}\n\n#welcome-container::after {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 0;\n\tleft: -100%;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: linear-gradient(90deg,\n\t\ttransparent,\n\t\trgba(255, 255, 255, 0.15),\n\t\ttransparent\n\t);\n\tanimation: shimmer 3s ease-in-out infinite;\n\tz-index: 1;\n\tpointer-events: none;\n\tborder-radius: 24px;\n}\n\n#welcome-container > * {\n\tposition: relative;\n\tz-index: 2;\n}\n\n@keyframes containerFadeIn {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(30px) scale(0.95);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0) scale(1);\n\t}\n}\n\n@keyframes pulseGlow {\n\t0%, 100% {\n\t\topacity: 0.4;\n\t\tfilter: blur(10px);\n\t}\n\t50% {\n\t\topacity: 0.8;\n\t\tfilter: blur(15px);\n\t}\n}\n\n@keyframes borderGlow {\n\t0%, 100% {\n\t\tbox-shadow:\n\t\t\t0 20px 60px rgba(0, 0, 0, 0.5),\n\t\t\t0 0 40px rgba(102, 126, 234, 0.4),\n\t\t\t0 0 80px rgba(240, 147, 251, 0.3),\n\t\t\tinset 0 0 60px rgba(102, 126, 234, 0.15),\n\t\t\tinset 0 1px 0 rgba(255, 255, 255, 0.2);\n\t}\n\t50% {\n\t\tbox-shadow:\n\t\t\t0 20px 60px rgba(0, 0, 0, 0.5),\n\t\t\t0 0 60px rgba(240, 147, 251, 0.6),\n\t\t\t0 0 120px rgba(102, 126, 234, 0.4),\n\t\t\tinset 0 0 80px rgba(240, 147, 251, 0.2),\n\t\t\tinset 0 1px 0 rgba(255, 255, 255, 0.3);\n\t}\n}\n\n@keyframes shimmer {\n\t0% {\n\t\tleft: -100%;\n\t}\n\t50%, 100% {\n\t\tleft: 100%;\n\t}\n}\n\n/* Shield icon container */\n.shield-container {\n\tposition: relative;\n\twidth: 120px;\n\theight: 120px;\n\tmargin: 0 auto 30px;\n\tanimation: shieldEntrance 1.5s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n@keyframes shieldEntrance {\n\t0% {\n\t\topacity: 0;\n\t\ttransform: scale(0) rotate(-180deg);\n\t}\n\t60% {\n\t\topacity: 1;\n\t\ttransform: scale(1.15) rotate(10deg);\n\t}\n\t100% {\n\t\ttransform: scale(1) rotate(0deg);\n\t}\n}\n\n.shield-icon {\n\tfont-size: 100px;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tz-index: 2;\n\tfilter: drop-shadow(0 10px 20px rgba(102, 126, 234, 0.4));\n\tanimation: shieldFloat 3s ease-in-out infinite;\n\n\t-ms-user-select: none;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\tuser-select: none;\n}\n\n@keyframes shieldFloat {\n\t0%, 100% {\n\t\ttransform: translate(-50%, -50%) translateY(0px);\n\t}\n\t50% {\n\t\ttransform: translate(-50%, -50%) translateY(-10px);\n\t}\n}\n\n/* Pulsing glow rings */\n.glow-ring {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 300px;\n\theight: 300px;\n\tborder: 3px solid rgba(102, 126, 234, 0.6);\n\tborder-radius: 50%;\n\ttransform: translate(-50%, -50%);\n\tanimation: pulse 2s ease-out infinite;\n\tpointer-events: none;\n}\n\n.glow-ring:nth-child(2) {\n\tanimation-delay: 0.5s;\n\tborder-color: rgba(240, 147, 251, 0.6);\n}\n\n.glow-ring:nth-child(3) {\n\tanimation-delay: 1s;\n\tborder-color: rgba(118, 75, 162, 0.6);\n}\n\n@keyframes pulse {\n\t0% {\n\t\ttransform: translate(-50%, -50%) scale(0.8);\n\t\topacity: 0;\n\t}\n\t50% {\n\t\ttransform: translate(-50%, -50%) scale(1);\n\t\topacity: 0.8;\n\t}\n\t100% {\n\t\ttransform: translate(-50%, -50%) scale(1.5);\n\t\topacity: 0;\n\t}\n}\n\n/* Sparkles */\n.sparkle {\n\tposition: absolute;\n\twidth: 6px;\n\theight: 6px;\n\tborder-radius: 50%;\n\tanimation: sparkle 1.5s ease-in-out infinite;\n}\n\n.sparkle:nth-child(4) {\n\ttop: 10%;\n\tleft: 20%;\n\tbackground: #f093fb;\n\tbox-shadow: 0 0 15px #f093fb;\n\tanimation-delay: 0s;\n}\n\n.sparkle:nth-child(5) {\n\ttop: 20%;\n\tright: 15%;\n\tbackground: #667eea;\n\tbox-shadow: 0 0 15px #667eea;\n\tanimation-delay: 0.3s;\n}\n\n.sparkle:nth-child(6) {\n\tbottom: 15%;\n\tleft: 25%;\n\tbackground: #d946ef;\n\tbox-shadow: 0 0 15px #d946ef;\n\tanimation-delay: 0.6s;\n}\n\n.sparkle:nth-child(7) {\n\tbottom: 20%;\n\tright: 20%;\n\tbackground: #764ba2;\n\tbox-shadow: 0 0 15px #764ba2;\n\tanimation-delay: 0.9s;\n}\n\n@keyframes sparkle {\n\t0%, 100% {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n\t50% {\n\t\ttransform: scale(1.5);\n\t\topacity: 1;\n\t}\n}\n\nh1 {\n\tmargin: 0 0 10px 0;\n\tfont-size: 2.5em;\n\tfont-weight: 700;\n\tcolor: white;\n\ttext-shadow: 0 0 20px rgba(102, 126, 234, 0.5);\n\tanimation: titleFadeIn 1s ease-out 0.3s both;\n}\n\n@keyframes titleSlideIn {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(-20px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n.about-links {\n\tdisplay: flex;\n\tgap: 15px;\n\tjustify-content: center;\n\tmargin: 20px 0;\n\tanimation: linksSlideIn 1s ease-out 0.5s both;\n}\n\n@keyframes linksSlideIn {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(-10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n.about-links > .about-link {\n\tcolor: #a0a0ff;\n\ttext-decoration: none;\n\tpadding: 8px 16px;\n\tborder-radius: 8px;\n\tfont-weight: 500;\n\tfont-size: 0.9em;\n\ttransition: all 0.3s ease;\n\tbackground: rgba(102, 126, 234, 0.2);\n\tdisplay: inline-block;\n\ttext-align: center;\n\tborder: 1px solid rgba(102, 126, 234, 0.3);\n}\n\n.about-link:hover {\n\tbackground: rgba(102, 126, 234, 0.3);\n\ttransform: translateY(-2px);\n\tbox-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);\n\tcolor: #c0c0ff;\n}\n\n#rollback-needed {\n\tmargin: 25px 0;\n\tpadding: 20px;\n\tbackground: linear-gradient(135deg, rgba(255, 107, 107, 0.1), rgba(255, 142, 83, 0.1));\n\tborder-radius: 12px;\n\tborder: 2px solid rgba(255, 107, 107, 0.3);\n\tanimation: warningFadeIn 1s ease-out 0.7s both;\n}\n\n@keyframes warningFadeIn {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: scale(0.95);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: scale(1);\n\t}\n}\n\n#rollback-needed p {\n\tmargin: 8px 0;\n\tcolor: #e74c3c;\n\tfont-weight: 500;\n}\n\n#rollback-needed a {\n\tcolor: #667eea !important;\n\tfont-weight: 600;\n}\n\nbutton {\n\twidth: 100%;\n\tpadding: 16px 32px;\n\tbackground: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n\tborder: none;\n\tborder-radius: 12px;\n\tcolor: white;\n\tcursor: pointer;\n\tfont-size: 1.1em;\n\tfont-weight: 600;\n\tbox-shadow:\n\t\t0 10px 30px rgba(102, 126, 234, 0.4),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.3);\n\ttransition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n\tposition: relative;\n\toverflow: hidden;\n\tanimation: buttonSlideIn 1s ease-out 0.9s both;\n}\n\n@keyframes buttonSlideIn {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(20px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\nbutton::before {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 0;\n\tleft: -100%;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);\n\ttransition: left 0.5s;\n}\n\nbutton:hover::before {\n\tleft: 100%;\n}\n\nbutton:hover {\n\ttransform: translateY(-3px) scale(1.02);\n\tbox-shadow:\n\t\t0 15px 40px rgba(102, 126, 234, 0.5),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.4);\n}\n\nbutton:active {\n\ttransform: translateY(-1px) scale(1);\n\tbox-shadow:\n\t\t0 8px 25px rgba(102, 126, 234, 0.4),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.3);\n}"},917:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.getWarningFromLookup=function(t){if(!(t in a))return;return a[t].reduce((t,e)=>t[e],i)},e.warningsLookup=e.warnings=e.warningTemplateColors=void 0;e.warningTemplateColors={0:"grey",1:"#4169e1",2:"#ff8c00",3:"#ff4500",4:"#b22222","4im":"#000000"};const n={0:"1",1:"2",2:"3",3:"4",4:null,"4im":null},i=e.warnings={revert:{Vandalism:[{title:"Vandalism",summary:"vandalism",description:"Warning for general vandalism.",icon:"fas fa-skull-crossbones",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-vandalism1"},2:{exists:!0,template:"subst:uw-vandalism2"},3:{exists:!0,template:"subst:uw-vandalism3"},4:{exists:!0,template:"subst:uw-vandalism4"},"4im":{exists:!0,template:"subst:uw-vandalism4im"}}},{title:"Subtle vandalism",summary:"subtle vandalism",description:"Warning for subtle vandalism.",icon:"fas fa-user-secret",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-subtle1"},2:{exists:!0,template:"subst:uw-subtle2"},3:{exists:!0,template:"subst:uw-subtle3"},4:{exists:!0,template:"subst:uw-subtle4"},"4im":null}},{title:"Image vandalism",summary:"image vandalism",description:"Warning for image vandalism.",icon:"fas fa-image",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-image1"},2:{exists:!0,template:"subst:uw-image2"},3:{exists:!0,template:"subst:uw-image3"},4:{exists:!0,template:"subst:uw-image4"},"4im":{exists:!0,template:"subst:uw-image4im"}}},{title:"Sandbox",summary:"[[WP:BADSAND|inappropriate]] use of sandbox",description:"Warning for vandalism, libelous, or defamatory content added to sandbox",icon:"fas fa-vial",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-sandbox1"},2:{exists:!0,template:"subst:uw-sandbox2"},3:{exists:!0,template:"subst:uw-sandbox3"},4:{exists:!0,template:"subst:uw-sandbox4"},"4im":{exists:!0,template:"subst:uw-sandbox4im"}}}],"Content Issues":[{title:"Unsourced",summary:"adding unsourced content",description:"Warning for unsourced content.",icon:"fas fa-question",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-unsourced1"},2:{exists:!0,template:"subst:uw-unsourced2"},3:{exists:!0,template:"subst:uw-unsourced3"},4:{exists:!0,template:"subst:uw-unsourced4"},"4im":null},show:t=>!(null!=t&&t.isBLP)},{title:"Unsourced (BLP)",summary:"adding unsourced content to [[WP:BLP|biographies of living persons]]",description:"Warning for unsourced BLP content.",icon:"fas fa-person-circle-question",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-biog1"},2:{exists:!0,template:"subst:uw-biog2"},3:{exists:!0,template:"subst:uw-biog3"},4:{exists:!0,template:"subst:uw-biog4"},"4im":{exists:!0,template:"subst:uw-biog4im"}},show:t=>null==t?void 0:t.isBLP},{title:"Unsourced genre",summary:"unsourced genre changes",description:"Warning for unsourced genre changes.",icon:"fas fa-music",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-genre1"},2:{exists:!0,template:"subst:uw-genre2"},3:{exists:!0,template:"subst:uw-genre3"},4:{exists:!0,template:"subst:uw-genre4"},"4im":null}},{title:"POV",summary:"adding [[WP:NPOV|non-neutral content]]",description:"Adding content which violates the neutral point of view policy.",icon:"fas fa-balance-scale-left",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-npov1"},2:{exists:!0,template:"subst:uw-npov2"},3:{exists:!0,template:"subst:uw-npov3"},4:{exists:!0,template:"subst:uw-npov4"},"4im":null}},{title:"Commentary",summary:"adding commentary",description:"Adding opinion or commentary to articles.",icon:"fas fa-comment-alt",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-talkinarticle1"},2:{exists:!0,template:"subst:uw-talkinarticle2"},3:{exists:!0,template:"subst:uw-talkinarticle3"},4:{exists:!1,template:"subst:uw-generic4",additional:"''Stop adding commentary to articles.''"},"4im":null}},{title:"AI-Generated",summary:"adding [[WP:LLM|AI-generated content]]",description:"Adding AI-generated content.",icon:"fas fa-robot",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-ai1"},2:{exists:!0,template:"subst:uw-ai2"},3:{exists:!0,template:"subst:uw-ai3"},4:{exists:!0,template:"subst:uw-ai4"},"4im":null},show:t=>!(null!=t&&t.isTalk)},{title:"AI-generated (talk)",summary:"adding [[WP:LLM|AI-generated content]] to a discussion",description:"Writing an AI-generated comment.",icon:"fas fa-robot",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-aitalk1"},2:{exists:!0,template:"subst:uw-aitalk2"},3:{exists:!0,template:"subst:uw-aitalk3"},4:{exists:!0,template:"subst:uw-aitalk4"},"4im":null},show:t=>null==t?void 0:t.isTalk},{title:"MOS violation",summary:"[[WP:MOS|manual of style]] violation",description:"Not following the Manual of Style.",icon:"fas fa-spell-check",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-mos1"},2:{exists:!0,template:"subst:uw-mos2"},3:{exists:!0,template:"subst:uw-mos3"},4:{exists:!0,template:"subst:uw-mos4"},"4im":null}},{title:"Censoring",summary:"[[WP:NOTCENSORED|censoring content]]",description:"Censoring topically-relevant content.",icon:"fas fa-ban",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-notcensored1"},2:{exists:!0,template:"subst:uw-notcensored2"},3:{exists:!0,template:"subst:uw-notcensored3"},4:{exists:!0,template:"subst:uw-notcensored4"},"4im":null}}],"Disruptive Behavior":[{title:"Disruption",summary:"[[WP:DE|disruptive editing]]",description:"Default warning for making disruptive edits (not always vandalism).",icon:"fas fa-exclamation",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-disruptive1"},2:{exists:!0,template:"subst:uw-disruptive2"},3:{exists:!0,template:"subst:uw-disruptive3"},4:{exists:!1,template:"subst:uw-generic4",additional:"''Stop making disruptive edits to Wikipedia.''"},"4im":null}},{title:"Deleting",summary:"unexplained deletion",description:"Used when a user does not explain deletion of part of an article.",icon:"fas fa-trash",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-delete1"},2:{exists:!0,template:"subst:uw-delete2"},3:{exists:!0,template:"subst:uw-delete3"},4:{exists:!0,template:"subst:uw-delete4"},"4im":{exists:!0,template:"subst:uw-delete4im"}}},{title:"Errors",summary:"adding deliberate errors to articles",description:"Adding deliberate errors to articles.",icon:"fas fa-bug",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-error1"},2:{exists:!0,template:"subst:uw-error2"},3:{exists:!0,template:"subst:uw-error3"},4:{exists:!0,template:"subst:uw-error4"},"4im":null}},{title:"Editing tests",summary:"adding deliberate errors to articles",description:"Adding deliberate errors to articles.",icon:"fas fa-flask",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-test1"},2:{exists:!0,template:"subst:uw-test2"},3:{exists:!0,template:"subst:uw-test3"},4:{exists:!1,template:"subst:uw-generic4",additional:"''Stop making test edits to Wikipedia.''"},"4im":null}},{title:"Chatting",summary:"conversation in article talk space",description:"Using article talk pages for inappropriate discussion.",icon:"fas fa-comments",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-chat1"},2:{exists:!0,template:"subst:uw-chat2"},3:{exists:!0,template:"subst:uw-chat3"},4:{exists:!0,template:"subst:uw-chat4"},"4im":null},show:t=>null==t?void 0:t.isTalk},{title:"Jokes",summary:"adding inappropriate humor",description:"Adding inappropriate humor to an article.",icon:"fas fa-grin-squint",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-joke1"},2:{exists:!0,template:"subst:uw-joke2"},3:{exists:!0,template:"subst:uw-joke3"},4:{exists:!0,template:"subst:uw-joke4"},"4im":{exists:!0,template:"subst:uw-joke4im"}}},{title:"Owning",summary:"assuming [[WP:OWN|ownership of articles]]",description:"Assuming ownership of articles.",icon:"fas fa-user-shield",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-own1"},2:{exists:!0,template:"subst:uw-own2"},3:{exists:!0,template:"subst:uw-own3"},4:{exists:!0,template:"subst:uw-own4"},"4im":{exists:!0,template:"subst:uw-own4im"}}}],"Spam & Promotion":[{title:"Advertising",summary:"[[WP:PROMO|advertising or promotion]]",description:"Adding promotional content to an article.",icon:"fas fa-bullhorn",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-advert1"},2:{exists:!0,template:"subst:uw-advert2"},3:{exists:!0,template:"subst:uw-advert3"},4:{exists:!0,template:"subst:uw-advert4"},"4im":{exists:!0,template:"subst:uw-advert4im"}}},{title:"Spam links",summary:"adding [[WP:ELNO|inappropriate links]]",description:"Adding external links that could be considered spam.",icon:"fas fa-link",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-spam1"},2:{exists:!0,template:"subst:uw-spam2"},3:{exists:!0,template:"subst:uw-spam3"},4:{exists:!0,template:"subst:uw-spam4"},"4im":{exists:!0,template:"subst:uw-spam4im"}}}],Conduct:[{title:"Personal attacks",summary:"[[WP:NPA|personal attacks]]",description:"Personal attacks towards another user.",icon:"fas fa-bomb",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-npa1"},2:{exists:!0,template:"subst:uw-npa2"},3:{exists:!0,template:"subst:uw-npa3"},4:{exists:!0,template:"subst:uw-npa4"},"4im":{exists:!0,template:"subst:uw-npa4im"}}},{title:"TPO",summary:"[[WP:TPO|removing or editing]] others' posts",description:"Removing or editing others' posts.",icon:"fas fa-hand-paper",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-tpv1"},2:{exists:!0,template:"subst:uw-tpv2"},3:{exists:!0,template:"subst:uw-tpv3"},4:{exists:!0,template:"subst:uw-tpv4"},"4im":{exists:!0,template:"subst:uw-tpv4im"}},show:t=>null==t?void 0:t.isTalk},{title:"Afd removal",summary:"removing AfD templates or comments",description:"Removing AfD templates or other users' comments from AfD discussions.",icon:"fas fa-gavel",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-afd1"},2:{exists:!0,template:"subst:uw-afd2"},3:{exists:!0,template:"subst:uw-afd3"},4:{exists:!0,template:"subst:uw-afd4"},"4im":null}}]},warn:{"Edit summary":[{title:"Misleading",summary:"misleading [[WP:ES|edit summary]]",description:"Misleading edit summaries.",icon:"fas fa-eye-slash",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-mislead1"},2:{exists:!0,template:"subst:uw-mislead2"},3:{exists:!0,template:"subst:uw-mislead3"},4:{exists:!1,template:"subst:uw-generic4",additional:"''Stop using misleading edit summaries on your edits.''"},"4im":null}},{title:"Inappropriate",summary:"inappropriate [[WP:ES|edit summary]]",description:"Edit summaries that appear to not be appropriate, civil, or otherwise constructive.",icon:"fas fa-exclamation-circle",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-bes1"},2:{exists:!0,template:"subst:uw-bes2"},3:{exists:!0,template:"subst:uw-bes3"},4:{exists:!0,template:"subst:uw-bes4"},"4im":{exists:!0,template:"subst:uw-bes4im"}}},{title:"Minor edit",summary:"improper use of [[WP:ME|minor edit]] checkbox",description:"Non-minor edit marked as minor",icon:"fas fa-pen",auto:()=>"0",templates:{0:{exists:!0,template:"subst:uw-minor"},1:null,2:null,3:null,4:null,"4im":null}}],Behavior:[{title:"Conflict of interest",summary:"[[WP:COI|conflict of interest]]",description:"Edits or username suggest an external relationship with the article.",icon:"fas fa-user-tie",auto:()=>"0",templates:{0:{exists:!0,template:"subst:uw-coi",label:"Notice"},1:{exists:!0,template:"subst:uw-coi-username",label:"Username"},2:null,3:null,4:{exists:!0,template:"subst:uw-coi-warn",label:"Warn"},"4im":null}},{title:"Gaming the system",summary:"[[WP:GAME|gaming the system]]",description:"Deliberately made edits to game Wikipedia's policies.",icon:"fas fa-chess-knight",auto:n,templates:{0:null,1:{exists:!0,template:"subst:uw-gaming1"},2:{exists:!0,template:"subst:uw-gaming2"},3:{exists:!0,template:"subst:uw-gaming3"},4:{exists:!0,template:"subst:uw-gaming4"},"4im":{exists:!0,template:"subst:uw-gaming4im"}}},{title:"Edit Warring",summary:"[[WP:EW|edit warring]]",description:"User is edit warring.",icon:"fas fa-people-arrows",auto:t=>{var e;return(null==t||null===(e=t.user)||void 0===e?void 0:e.editCount)<500?"1":"4"},templates:{0:null,1:{exists:!0,template:"subst:uw-ewsoft",label:"Soft"},2:null,3:null,4:{exists:!0,template:"subst:uw-ew",label:"Normal"},"4im":null}},{title:"Not English",summary:"non-English",description:"Content added in a language other than English.",icon:"fas fa-globe",auto:()=>"0",templates:{0:{exists:!0,template:"subst:uw-notenglish"},1:null,2:null,3:null,4:null,"4im":null}}]}},o={};for(const[t,e]of Object.entries(i))for(const[n,i]of Object.entries(e)){const e=i.length;for(let a=0;a<e;a++)o[i[a].title]=[t,n,a]}const a=e.warningsLookup=o},924:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.injectNamedStyles=function(...t){return c(d(...t),`wikishield-${t.join("-")}`)},e.injectStyles=c,e.loadStyles=d,e.wikishieldStyling=void 0;var i=r(n(755)),o=r(n(878)),a=r(n(27)),s=r(n(828));function r(t){return t&&t.__esModule?t:{default:t}}const l=e.wikishieldStyling={base:i.default,initial:o.default,main:a.default,"theme-dark":s.default};function d(...t){return t.map(t=>l[t]).filter(Boolean).join("\n\n")}function c(t,e=null){const n=document.createElement("style");return e&&(n.id=e),n.textContent=t,document.head.appendChild(n),n}}},e={};function n(i){var o=e[i];if(void 0!==o)return o.exports;var a=e[i]={exports:{}};return t[i](a,a.exports,n),a.exports}n.d=function(t,e){for(var i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};n(877)}();
1hpqbautxhwe234fqp5zq1ukan7gbc9
619601
619600
2026-08-02T01:31:40Z
LuniZunie
25284
Restored revision 619566 by [[Special:Contributions/LuniZunie|LuniZunie]] ([[en:w:User:BrandonXLF/Restorer|Restorer]])
619601
javascript
text/javascript
// Code is available at https://github.com/LuniZunie/WikiShield-App
/*<nowiki>*/!function(){"use strict";var e={4279(e){e.exports="@import url('https://fonts.googleapis.com/css2?family=Varela+Round&display=swap');\r\n\r\n:root {\r\n\t--max-z-index: 2147483647;\r\n\r\n --body-color: rgba(241, 245, 255, 1);\r\n --body-background: rgba(20, 20, 30, 1);\r\n\r\n font-family: 'Inter', sans-serif;\r\n \tfont-optical-sizing: auto;\r\n -webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n* {\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n::-webkit-scrollbar {\r\n\twidth: 10px;\r\n\theight: 10px;\r\n}\r\n\r\n::-webkit-scrollbar-track {\r\n\tbackground: transparent;\r\n}\r\n\r\n::-webkit-scrollbar-thumb {\r\n\tborder: 2px solid transparent;\r\n border-radius: 10px;\r\n\r\n\t/* Theme dependent */\r\n\tbackground: rgba(255, 255, 255, .1);\r\n\tbackground-clip: content-box;\r\n\r\n\t&:hover {\r\n\t\tborder: 2px solid transparent;\r\n\t\tborder-radius: 10px;\r\n\r\n\t\t/* Theme dependent */\r\n\t\tbackground: rgba(255, 255, 255, .2);\r\n\t\tbackground-clip: content-box;\r\n\t}\r\n}\r\n\r\nhtml, body {\r\n width: 100%;\r\n\theight: 100%;\r\n\r\n\toverflow: hidden;\r\n\r\n /* Theme dependent */\r\n background: linear-gradient(135deg,\r\n\t\trgba(20, 30, 48, 1),\r\n\t\trgba(36, 59, 85, 1)\r\n\t);\r\n}\r\n\r\n@keyframes loading-dots {\r\n\t0%, 100% {\r\n\t\tcontent: '';\r\n\t}\r\n\t25% {\r\n\t\tcontent: '.';\r\n\t}\r\n\t50% {\r\n\t\tcontent: '..';\r\n\t}\r\n\t75% {\r\n\t\tcontent: '...';\r\n\t}\r\n}\r\n\r\n.animate-loading-dots::after {\r\n\tcontent: '';\r\n\r\n\tdisplay: inline-block;\r\n\r\n\tanimation: loading-dots 1.5s steps(3, start) infinite;\r\n}"},5540(e){e.exports='<!DOCTYPE html>\r\n<html lang="en">\r\n <head>\r\n <meta charset="UTF-8">\r\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\r\n <meta http-equiv="Content-Security-Policy">\r\n\r\n <title>WikiShield</title>\r\n <link rel="icon" href="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" type="image/png">\r\n\r\n <link rel="stylesheet" href="https://fonts.cdnfonts.com/css/open-dyslexic">\r\n <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.0/css/all.min.css">\r\n\r\n <link rel="stylesheet" href="../common/style.css">\r\n <link rel="stylesheet" href="style.css">\r\n\r\n <script type="module" src="script.js"><\/script>\r\n </head>\r\n <body>\r\n <div id="loading">\r\n <img class="icon" src="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" alt="WikiShield Logo">\r\n </div>\r\n <div id="initial" class="hidden">\r\n\t\t\t<canvas id="dots-canvas"></canvas>\r\n\t\t\t<div id="welcome-container" class="shimmer shimmer-border">\r\n\t\t\t\t<div class="shield-container">\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="glow-ring"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="sparkle"></div>\r\n\t\t\t\t\t<div class="shield-icon">\r\n\t\t\t\t\t\t<img src="https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/src/assets/icon.png" alt="WikiShield Logo">\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<h1>Welcome to <span id="wikishield-sikiwhield">WikiShield</span></h1>\r\n\t\t\t\t<div class="about-links">\r\n\t\t\t\t\t<a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="about-link">About</a>\r\n\t\t\t\t\t<a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia talk:WikiShield" target="_blank" class="about-link">Discuss</a>\r\n\t\t\t\t\t<span class="about-link">v<span class="VERSION"></span></span>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div id="rollback-needed" class="hidden">\r\n\t\t\t\t\t<p><span class="fa fa-exclamation-triangle"></span> You must have rollback or admin rights to use this script.</p>\r\n\t\t\t\t\t<p>You can apply for rollback rights <a rel="noopener" class="request-link" href="https://www.wikidata.org/wiki/Q7765871" target="_blank">here</a>.</p>\r\n\t\t\t\t</div>\r\n\t\t\t\t<button type="button" id="start-button">\r\n\t\t\t\t\tStart WikiShield <i class="fas fa-arrow-right"></i>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n <div id="app" class="hidden">\r\n <div id="container">\r\n <div id="queue">\r\n <div id="queue-top">\r\n <div id="queue-top-left" class="queue-button-cluster" data-zen-show="alerts,messages">\r\n <span class="fa fa-bell" id="alerts-icon" data-tooltip="Alerts" data-zen-show="alerts">\r\n <span id="alerts-count" class="icon-count hidden red" data-zen-show="badges"></span>\r\n </span>\r\n <span class="fa fa-inbox" id="messages-icon" data-tooltip="Messages" data-zen-show="messages">\r\n <span id="messages-count" class="icon-count hidden blue" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="DEFCON">\r\n <div class="dot"></div>\r\n <span><span class="DEFCON-RPM">0</span> RPM</span>\r\n </div>\r\n <div id="queue-top-right" class="queue-button-cluster">\r\n <span class="fa fa-envelope" id="email-button" data-tooltip="Email Emergency, ArbCom, or Oversight" data-multiple-hrefs="email" href></span>\r\n <span class="fa fa-gear" id="settings-icon" data-tooltip="Settings"></span>\r\n </div>\r\n </div>\r\n <div id="queue-tabs">\r\n <div id="queue-tab-recent" class="queue-tab selected" data-tooltip="Recent edits">\r\n <span class="fas fa-stopwatch">\r\n <span class="icon-count hidden gray" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-pending" class="queue-tab" data-tooltip="Pending edits">\r\n <span class="fas fa-flag">\r\n <span class="icon-count hidden orange" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-users" class="queue-tab" data-tooltip="User creation logs">\r\n <span class="fas fa-user">\r\n <span class="icon-count hidden green" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-watchlist" class="queue-tab" data-tooltip="Watchlist edits">\r\n <span class="fas fa-book-bookmark">\r\n <span class="icon-count hidden blue" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n <div id="queue-tab-abuselog" class="queue-tab" data-tooltip="Abuse logs">\r\n <span class="fas fa-filter-circle-xmark">\r\n <span class="icon-count hidden red" data-zen-show="badges"></span>\r\n </span>\r\n </div>\r\n </div>\r\n <div id="queue-items" class="queue-list">\r\n <div class="queue-empty">\r\n No edits in queue.\r\n </div>\r\n </div>\r\n <div class="width-adjust" id="queue-width-adjust"></div>\r\n <div id="clear-queue">\r\n <span class="fa fa-trash"></span>\r\n </div>\r\n </div>\r\n <div id="alerts-panel" class="notification-panel">\r\n <div id="alerts-header" class="notification-header">\r\n <span>Alerts</span>\r\n <span id="mark-all-alerts-read" class="mark-all-read">Mark all as read</span>\r\n </div>\r\n <div id="alerts-list" class="notification-list"></div>\r\n </div>\r\n <div id="messages-panel" class="notification-panel">\r\n <div id="messages-header" class="notification-header">\r\n <span>Messages</span>\r\n <span id="mark-all-messages-read" class="mark-all-read">Mark all as read</span>\r\n </div>\r\n <div id="messages-list" class="notification-list"></div>\r\n </div>\r\n <div id="right-container">\r\n <div id="right-content">\r\n <div id="main-container">\r\n <div id="edit-details">\r\n <div class="central">Nothing selected</div>\r\n </div>\r\n <div id="previous-item-button" class="nav-item-button">\r\n <i class="fas fa-chevron-left"></i>\r\n </div>\r\n <div id="next-item-button" class="nav-item-button">\r\n <i class="fas fa-chevron-right"></i>\r\n </div>\r\n <div id="ai-analysis-container" class="hidden shimmer shimmer-border">\r\n <div class="header">\r\n <i class="fas fa-robot"></i>\r\n <span class="title">AI Analysis</span>\r\n <span class="assessment"></span>\r\n <span class="confidence"></span>\r\n </div>\r\n <div class="explanation"></div>\r\n <div class="issues"></div>\r\n </div>\r\n <div id="diff-scroll-up" class="diff-scroll-button hidden">\r\n <i class="fas fa-chevron-up"></i>\r\n </div>\r\n <div id="diff-container"></div>\r\n <div id="diff-scroll-down" class="diff-scroll-button hidden">\r\n <i class="fas fa-chevron-down"></i>\r\n </div>\r\n <div id="pending-changes-container" class="hidden">\r\n <div class="accept">Accept</div>\r\n <div class="reject">Reject</div>\r\n </div>\r\n <div id="progress-bar-container"></div>\r\n <div id="bottom-tools" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-item" data-menu="revert" data-queue-type="edit">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-undo"></i>\r\n <span>Revert</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="warn" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-exclamation-triangle"></i>\r\n <span>Warn</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="user" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-user"></i>\r\n <span>User</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="page" data-queue-type="edit,logevent,abuselog">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-file-lines"></i>\r\n <span>Page</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-item" data-menu="edit" data-queue-type="edit">\r\n <div class="bottom-tool-trigger">\r\n <i class="fas fa-pen-to-square"></i>\r\n <span>Edit</span>\r\n <i class="fas fa-chevron-up bottom-tool-chevron"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div id="copy-link" data-tooltip="Copy link" data-queue-type="edit,logevent,abuselog">\r\n <div>\r\n <i class="fas fa-link"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div id="right-details">\r\n <div id="right-top">\r\n <div class="tabs">\r\n <div id="latest-edits-tab" class="tab hidden selected" data-tooltip="Latest edit">\r\n <i class="fas fa-user"></i>\r\n </div>\r\n <div id="consecutive-edits-tab" class="tab hidden" data-tooltip="Consecutive edits">\r\n <i class="fas fa-users"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="icons"></div>\r\n </div>\r\n\r\n <div id="user-contributions" class="section" data-queue-type="edit,logevent,abuselog">\r\n <div class="header">\r\n <div class="title"><i id="refresh-user-contributions" class="fas fa-rotate"></i> Contributions</div>\r\n <div class="pills">\r\n\r\n </div>\r\n </div>\r\n <div class="queue-list">\r\n\r\n </div>\r\n <div class="footer">\r\n <span>View all contributions</span>\r\n <i class="fas fa-arrow-right"></i>\r\n </div>\r\n </div>\r\n\r\n <div id="page-history" class="section" data-queue-type="edit,abuselog">\r\n <div class="header">\r\n <div class="title"><i id="refresh-page-history" class="fas fa-rotate"></i> Page History</div>\r\n <div class="pills">\r\n\r\n </div>\r\n </div>\r\n <div class="queue-list">\r\n\r\n </div>\r\n <div class="footer">\r\n <span>View full page history</span>\r\n <i class="fas fa-arrow-right"></i>\r\n </div>\r\n </div>\r\n\r\n <div class="width-adjust" id="details-width-adjust"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="bottom-tool-menu" id="revert-menu"></div>\r\n <div class="bottom-tool-menu" id="warn-menu"></div>\r\n <div class="bottom-tool-menu" id="user-menu">\r\n <div id="user-open-user-page" class="menu-option">\r\n <i class="fas fa-user-circle"></i>\r\n <span>Open user page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-open-user-talk" class="menu-option">\r\n <i class="fas fa-comments"></i>\r\n <span>Open user talk</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-view-contribs" class="menu-option">\r\n <i class="fas fa-list"></i>\r\n <span>View contributions</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="user-view-filter-log" class="menu-option">\r\n <i class="fas fa-filter"></i>\r\n <span>View filter log</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-whitelist" class="menu-option">\r\n <i class="fas fa-check"></i>\r\n <span>Whitelist user</span>\r\n </div>\r\n <div id="user-unwhitelist" class="menu-option hidden">\r\n <i class="fas fa-xmark"></i>\r\n <span>Unwhitelist user</span>\r\n </div>\r\n <div id="user-highlight" class="menu-option">\r\n <i class="fas fa-star"></i>\r\n <span>Highlight user</span>\r\n </div>\r\n <div id="user-unhighlight" class="menu-option hidden">\r\n <i class="fas fa-star"></i>\r\n <span>Unhighlight user</span>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-welcome" class="menu-option submenu-trigger">\r\n <i class="fas fa-paper-plane"></i>\r\n <span>Welcome</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-report-aiv" class="menu-option submenu-trigger">\r\n <i class="fas fa-flag"></i>\r\n <span>Report (AIV)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-report-uaa" class="menu-option submenu-trigger">\r\n <i class="fas fa-user-slash"></i>\r\n <span>Report (UAA)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-request-global-block" class="menu-option submenu-trigger">\r\n <i class="fas fa-ban"></i>\r\n <span>Request global block</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="user-request-global-lock" class="menu-option submenu-trigger">\r\n <i class="fas fa-lock"></i>\r\n <span>Request global lock</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="user-new-talk-topic" class="menu-option submenu-trigger">\r\n <i class="fas fa-envelope"></i>\r\n <span>Message user</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n <div class="bottom-tool-menu" id="page-menu">\r\n <div id="page-open-page" class="menu-option">\r\n <i class="fas fa-file"></i>\r\n <span>Open page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="page-open-talk" class="menu-option">\r\n <i class="fas fa-comments"></i>\r\n <span>Open talk page</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="page-view-history" class="menu-option">\r\n <i class="fas fa-clock-rotate-left"></i>\r\n <span>View page history</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-watch" class="menu-option">\r\n <i class="fas fa-eye"></i>\r\n <span>Watch page</span>\r\n </div>\r\n <div id="page-unwatch" class="menu-option">\r\n <i class="fas fa-eye-slash"></i>\r\n <span>Unwatch page</span>\r\n </div>\r\n <div id="page-whitelist" class="menu-option">\r\n <i class="fas fa-check"></i>\r\n <span>Whitelist page</span>\r\n </div>\r\n <div id="page-unwhitelist" class="menu-option hidden">\r\n <i class="fas fa-xmark"></i>\r\n <span>Unwhitelist page</span>\r\n </div>\r\n <div id="page-highlight" class="menu-option">\r\n <i class="fas fa-star"></i>\r\n <span>Highlight page</span>\r\n </div>\r\n <div id="page-unhighlight" class="menu-option hidden">\r\n <i class="fas fa-star"></i>\r\n <span>Unhighlight page</span>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-request-protection" class="menu-option submenu-trigger">\r\n <i class="fas fa-shield-halved"></i>\r\n <span>Request protection</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="page-new-talk-topic" class="menu-option submenu-trigger">\r\n <i class="fas fa-envelope"></i>\r\n <span>New talk page topic</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n <div class="bottom-tool-menu" id="edit-menu">\r\n <div id="edit-view-revision" class="menu-option">\r\n <i class="fas fa-eye"></i>\r\n <span>View revision</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div id="edit-view-diff" class="menu-option">\r\n <i class="fas fa-code-compare"></i>\r\n <span>View diff</span>\r\n <i class="fas fa-arrow-up-right-from-square menu-option-icon"></i>\r\n </div>\r\n <div class="menu-divider"></div>\r\n <div id="edit-thank-user" class="menu-option">\r\n <i class="fas fa-heart"></i>\r\n <span>Thank user</span>\r\n </div>\r\n <div id="edit-rollback" class="menu-option submenu-trigger">\r\n <i class="fas fa-rotate-left"></i>\r\n <span>Rollback</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="edit-rollback-goodfaith" class="menu-option submenu-trigger">\r\n <i class="fas fa-handshake"></i>\r\n <span>Rollback (good faith)</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n <div id="edit-undo" class="menu-option submenu-trigger">\r\n <i class="fas fa-arrow-rotate-left"></i>\r\n <span>Undo</span>\r\n <i class="fas fa-chevron-right menu-option-chevron"></i>\r\n <div class="submenu"></div>\r\n </div>\r\n </div>\r\n\r\n <div id="settings-container">\r\n <div class="settings">\r\n <div class="settings-left">\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>CORE</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-general-button">\r\n <span><i class="fas fa-gear"></i>General</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-audio-button">\r\n <span><i class="fas fa-volume-high"></i>Audio</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-controls-button">\r\n <span><i class="fas fa-keyboard"></i>Controls</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-zen-button">\r\n <span><i class="fas fa-spa"></i>Zen Mode</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>APPEARANCE</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-app-button">\r\n <span><i class="fas fa-palette"></i>App</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-queue-button">\r\n <span><i class="fas fa-list"></i>Queue</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-accessibility-button">\r\n <span><i class="fas fa-universal-access"></i>Accessibility</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>TOOLS</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-auto-reporting-button">\r\n <span><i class="fas fa-flag"></i>Auto Reporting</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-gadgets-button">\r\n <span><i class="fas fa-toolbox"></i>Gadgets</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-AI-button">\r\n <span><i class="fas fa-robot"></i>AI Analysis</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>WHITELIST</span>\r\n </div>\r\n <div class="settings-left-menu-compact">\r\n <div class="settings-left-menu-item" id="settings-whitelist-users-button">\r\n <i class="fas fa-user" title="Users"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-whitelist-pages-button">\r\n <i class="fas fa-file" title="Pages"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-whitelist-tags-button">\r\n <i class="fas fa-tag" title="Tags"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>HIGHLIGHT</span>\r\n </div>\r\n <div class="settings-left-menu-compact">\r\n <div class="settings-left-menu-item" id="settings-highlight-users-button">\r\n <i class="fas fa-user" title="Users"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-highlight-pages-button">\r\n <i class="fas fa-file" title="Pages"></i>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-highlight-tags-button">\r\n <i class="fas fa-tag" title="Tags"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>DATA</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-statistics-button">\r\n <span><i class="fas fa-chart-area"></i>Statistics</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-save-button">\r\n <span><i class="fas fa-floppy-disk"></i>Save</span>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-category">\r\n <div class="settings-category-header">\r\n <span>WIKISHIELD</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-changelog-button">\r\n <span><i class="fas fa-file-alt"></i>Changelog</span>\r\n </div>\r\n <div class="settings-left-menu-item" id="settings-about-button">\r\n <span><i class="fas fa-info"></i>About</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="settings-right">\r\n <div class="general hidden">\r\n <div class="settings-section" data-electron="false">\r\n <div class="settings-section-title">Launch behavior</div>\r\n <div class="settings-section-desc">Choose whether WikiShield should open in the current tab or a new tab when launched.</div>\r\n <div id="settings-launch-behavior" class="settings-radio-group">\r\n <div class="settings-radio-option selected" data-value="current_page">Run on current page</div>\r\n <div class="settings-radio-option" data-value="new_page">Run on <a href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield/run">/Run</a> page</div>\r\n </div>\r\n </div>\r\n <div class="settings-compact-grid">\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Maximum edit count</div>\r\n <div class="settings-section-desc">Edits from users with more than this number of total edits will not be shown unless that user is highlighted.</div>\r\n <numeric-input id="settings-maximum-edit-count" step="5" min="0" value="50"></numeric-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Maximum queue size</div>\r\n <div class="settings-section-desc">Maximum number of edits to keep in the queue for review. Higher values may impact performance.</div>\r\n <numeric-input id="settings-maximum-queue-size" step="10" min="0" value="100"></numeric-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Minimum ORES score</div>\r\n <div class="settings-section-desc">Minimum ORES score required for an edit to appear in the recent changes queue.</div>\r\n <numeric-input id="settings-minimum-ores-score" step="0.05" min="0" max="1" value="0"></numeric-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">ORES bias</div>\r\n <div class="settings-section-desc">\r\n Select how ORES scores are calculated for edits in the recent changes queue. "Badfaith" is how likely an edit is to be made in bad faith, "Damaging" is how likely an edit is to be damaging.\r\n </div>\r\n <div id="settings-ores-bias" class="settings-slider">\r\n <div class="settings-slider-labels">\r\n <div class="settings-slider-label-left active">Badfaith<span class="percent">50%</span></div>\r\n <div class="settings-slider-label-right active">Damaging<span class="percent">50%</span></div>\r\n </div>\r\n <div class="settings-slider-track">\r\n <div class="settings-slider-thumb"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Watchlist expiry</div>\r\n <div class="settings-section-desc">Amount of time to leave warned user\'s talk pages on your watchlist.</div>\r\n <duration-input id="settings-watchlist-expiry"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Namespaces to monitor</div>\r\n <div class="settings-section-desc">Select which namespaces WikiShield should monitor for recent changes and pending changes.</div>\r\n <div id="settings-namespaces-container" class="checkbox-container">\r\n \x3c!-- Namespace checkboxes will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="audio hidden">\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-header">\r\n <span class="settings-section-header-icon">ORES</span>\r\n <span>ORES Alerts</span>\r\n </div>\r\n <div class="settings-section compact inline" id="sound-alert-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Sound alerts for high ORES scores</div>\r\n <div class="settings-section-desc">Play a sound when an edit above the threshold is added to the queue</div>\r\n </div>\r\n <toggle-input id="settings-ORES-alert-toggle" value="false"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="sound-alert-ores-score">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">ORES score threshold</div>\r\n <div class="settings-section-desc">Play a sound alert when an edit with an ORES score above this value is added</div>\r\n </div>\r\n <numeric-input id="settings-ORES-alert-threshold" step="0.05" min="0" max="1" value="0.9"></numeric-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Volume</div>\r\n <volume-control\r\n id="settings-master-volume"\r\n title="Master Volume"\r\n description="Controls the overall volume of all sounds"\r\n value="1"\r\n ></volume-control>\r\n <div id="settings-sounds-container" class="settings-section">\r\n \x3c!-- Individual sound settings will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="controls hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Keyboard shortcuts</div>\r\n <div class="settings-section-desc">Customize keyboard shortcuts for various actions in WikiShield.</div>\r\n <div class="settings-section compact inline" id="repeat-control-scripts">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Repeat control scripts</div>\r\n <div class="settings-section-desc">Allow control scripts to be triggered repeatedly when holding down keys</div>\r\n </div>\r\n <toggle-input id="repeat-control-scripts-toggle" value="true"></toggle-input>\r\n </div>\r\n <button type="button" id="settings-new-control-script" class="add-action-button new-control-script"><span class="fa fa-plus"></span> Add new action</button>\r\n </div>\r\n </div>\r\n <div class="zen hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Zen Mode</div>\r\n <div class="settings-section-desc">Your distraction-free editing experience.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable Zen Mode</div>\r\n <div class="settings-section-desc">Reduce on-screen distractions while reviewing edits.</div>\r\n </div>\r\n <toggle-input id="settings-zen-mode" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Customize Zen Mode</div>\r\n <div class="settings-compact-grid">\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Sound</div>\r\n <div class="settings-section-desc">Play sound in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-sound" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact" data-electron="true">\r\n <div class="settings-section-title">Music</div>\r\n <div class="settings-section-desc">Play background music in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-music" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Alerts</div>\r\n <div class="settings-section-desc">Show alerts in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-alerts" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Messages</div>\r\n <div class="settings-section-desc">Show messages in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-messages" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Toasts</div>\r\n <div class="settings-section-desc">Show toasts in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-toasts" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Badges</div>\r\n <div class="settings-section-desc">Show badges in Zen Mode.</div>\r\n <toggle-input id="settings-zen-mode-badges" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="app hidden">\r\n \x3c!-- <div class="settings-section">\r\n <div class="settings-section-title">App theme</div>\r\n <div class="settings-section-desc">Choose between light mode, dark mode, or automatic switching based on system settings.</div>\r\n <div id="settings-app-theme" class="settings-radio-group">\r\n <div class="settings-radio-option" data-value="light">Light mode</div>\r\n <div class="settings-radio-option selected" data-value="auto">Auto</div>\r\n <div class="settings-radio-option" data-value="dark">Dark mode</div>\r\n </div>\r\n </div> --\x3e\r\n <div class="settings-section">\r\n <div class="settings-section-title">Startup animation</div>\r\n <div class="settings-section-desc">Enable or disable the startup animation when launching WikiShield.</div>\r\n <div id="settings-startup-performance" class="settings-radio-group">\r\n <div class="settings-radio-option" data-value="always_off">Always off</div>\r\n <div class="settings-radio-option selected" data-value="adaptive">Adaptive (recommended)</div>\r\n <div class="settings-radio-option" data-value="always_on">Always on</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="queue hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Queues</div>\r\n <div class="settings-section-desc">Enable or disable different edit queues, and customize their order.</div>\r\n <draggable-order-list id="settings-queues">\r\n \x3c!-- Queue items will be populated here --\x3e\r\n </draggable-order-list>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Color palette</div>\r\n <div class="settings-section-desc">Select the color palette used for highlighting users and pages.</div>\r\n <div id="settings-palette-selector" class="palette-selector">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class="accessibility hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Accessibility Options</div>\r\n <div class="settings-section-desc">Customize accessibility features for better usability.</div>\r\n <div class="settings-compact-grid">\r\n \x3c!-- <div class="settings-section compact">\r\n <div class="settings-section-title">Colorblind Mode</div>\r\n <div class="settings-section-desc">Add indicators to help distinguish colors for colorblind users.</div>\r\n <toggle-input id="settings-colorblind-mode" value="false"></toggle-input>\r\n </div> --\x3e\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Dyslexia Friendly Font</div>\r\n <div class="settings-section-desc">Use a font that is easier to read for users with dyslexia.</div>\r\n <toggle-input id="settings-dyslexia-font" value="false"></toggle-input>\r\n </div>\r\n \x3c!-- <div class="settings-section compact">\r\n <div class="settings-section-title">High Contrast Mode</div>\r\n <div class="settings-section-desc">Increase contrast for better visibility.</div>\r\n <toggle-input id="settings-high-contrast-mode" value="false"></toggle-input>\r\n </div> --\x3e\r\n <div class="settings-section compact">\r\n <div class="settings-section-title">Reduce Motion</div>\r\n <div class="settings-section-desc">Minimize motion effects for users sensitive to motion.</div>\r\n <toggle-input id="settings-reduce-motion" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="auto-reporting hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Enable Auto Reporting</div>\r\n <div class="settings-section-desc">Automatically report edits that receive certain warnings.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Auto Reporting</div>\r\n <div class="settings-section-desc">When enabled, edits that trigger selected warnings will be automatically reported.</div>\r\n </div>\r\n <toggle-input id="settings-auto-reporting-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Auto Reporting Warnings</div>\r\n <div class="settings-section-desc">Select which warnings should trigger automatic reporting.</div>\r\n <div id="settings-auto-reporting-warnings-container" class="checkbox-container">\r\n \x3c!-- Checkboxes will be populated here --\x3e\r\n </div>\r\n </div>\r\n </div>\r\n <div class="gadgets hidden">\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Gadgets</div>\r\n <div class="settings-section-desc">Toggle various Wikishield features.</div>\r\n <div class="settings-section compact inline" id="auto-welcome-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Automatic welcoming of new users</div>\r\n <div class="settings-section-desc">Automatically welcome new users with empty talk pages when moving past their constructive edits</div>\r\n </div>\r\n <toggle-input id="settings-auto-welcome-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="wikipedia-popups-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Popups</div>\r\n <div class="settings-section-desc">When enabled, links will be opened in a new window. Otherwise, they will be opened in your default browser.<span class="disabled-note">This feature is disabled on your browser</span></div>\r\n </div>\r\n <toggle-input id="settings-wikipedia-popups-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="talk-page-thanks-for-temporary-users-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Send talk page thanks for temporary users</div>\r\n <div class="settings-section-desc">If enabled, when you thank a temporary user with an empty talk page, WikiShield will send them a welcoming thank you message in addition to the standard thank you message.</div>\r\n </div>\r\n <toggle-input id="settings-edit-summaries-toggle" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-title">Username Highlighting</div>\r\n <div class="settings-section compact inline" id="username-highlighting-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable username highlighting</div>\r\n <div class="settings-section-desc">Highlights usernames in edit summaries, edit diffs, and user creation logs.</div>\r\n </div>\r\n <toggle-input id="settings-username-highlighting-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline" id="username-highlighting-mode-toggle">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Toggle fuzzy matching mode</div>\r\n <div class="settings-section-desc">\r\n When enabled, highlights similar usernames. Not recommended for users with short usernames.<br/>\r\n <strong>NOTE:</strong> This may cause performance issues for those with long usernames, or users on weaker devices.\r\n </div>\r\n </div>\r\n <toggle-input id="settings-username-highlighting-fuzzy-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="AI hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">AI Analysis</div>\r\n <div class="settings-section-desc">Configure AI-powered analysis features.</div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Enable Ollama AI Analysis (<a href="https://ollama.com">ollama.com</a>)</div>\r\n <div class="settings-section-desc">Use local AI models with complete privacy.</div>\r\n </div>\r\n <toggle-input id="settings-AI-toggle" value="false"></toggle-input>\r\n </div>\r\n </div>\r\n <div class="settings-toggles-section">\r\n <div class="settings-section-header">\r\n <span class="settings-section-header-icon">Tools</span>\r\n </div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Edit Analysis</div>\r\n <div class="settings-section-desc">Suggests actions to take on edits.</div>\r\n </div>\r\n <toggle-input id="settings-AI-edit-analysis-toggle" value="true"></toggle-input>\r\n </div>\r\n <div class="settings-section compact inline">\r\n <div class="settings-section-content">\r\n <div class="settings-section-title">Username Analysis</div>\r\n <div class="settings-section-desc">Flags potentially problematic usernames and prompts you to report them to UAA</div>\r\n </div>\r\n <toggle-input id="settings-AI-username-analysis-toggle" value="true"></toggle-input>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-server-url">\r\n <div class="settings-section-title">Server URL</div>\r\n <div class="settings-section-desc">The URL of your local Ollama server</div>\r\n <div class="text-input-container">\r\n <input title="Ollama URL" type="text" id="ollama-url-input" autoComplete="off">\r\n <button type="button" id="settings-ollama-test-connection">Test Connection</button>\r\n </div>\r\n <div class="settings-section compact connection-status-container">\r\n <p id="settings-ollama-connection-status"></p>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-model-select">\r\n <div class="settings-section-title">\r\n Model Selection\r\n <button type="button" id="settings-ollama-refresh-models">\r\n <span class="fa fa-sync"></span> Refresh Models\r\n </button>\r\n </div>\r\n <div class="settings-section-desc">Select which Ollama model to use for edit analysis</div>\r\n <div class="settings-section compact models-container">\r\n <p id="settings-ollama-models-status">Click "Refresh Models" to load available models</p>\r\n <div id="settings-ollama-models"></div>\r\n </div>\r\n </div>\r\n\r\n <div class="settings-section" id="ollama-setup">\r\n <div class="settings-section-title">Setup required</div>\r\n <div class="settings-section-desc">\r\n <details>\r\n <summary><strong>Windows (Permanent)</strong></summary>\r\n <ol class="pad-list">\r\n <li>Press <code>Win + R</code>, type <code>sysdm.cpl</code>, and press Enter</li>\r\n <li>Go to the "Advanced" tab and click on "Environment Variables"</li>\r\n <li>Create a new variable under "System variables"</li>\r\n <li>Set the name to <code>OLLAMA_HOST</code> and the value to <code>http://127.0.0.11434</code>\r\n <ul class="pad-list">\r\n <li><strong>NOTE:</strong> You can change the port (11434) if that port is already in use, but make sure to update the "Server URL" setting in WikiShield accordingly</li>\r\n </ul>\r\n </li>\r\n <li>Click "OK" to save the variable</li>\r\n <li>Create another variable under "System variables"</li>\r\n <li>Set the name to <code>OLLAMA_ORIGINS</code> and the value to <code>https://*.wikipedia.org</code></li>\r\n <li>Click "OK" to save the variable, you can now close the Environment Variables and System Properties windows</li>\r\n <li>Restart Ollama</li>\r\n </ol>\r\n </details>\r\n\r\n <details>\r\n <summary><strong>Windows (Temporary)</strong></summary>\r\n <pre>\r\n$env:OLLAMA_HOST="http://127.0.0.11434"\r\n$env:OLLAMA_ORIGINS="https://*.wikipedia.org"\r\nollama serve</pre>\r\n </details>\r\n\r\n <details>\r\n <summary><strong>macOS / Linux</strong></summary>\r\n Add the following to <code>~/.bashrc</code> or <code>~/.zshrc</code>:\r\n <pre>\r\nexport OLLAMA_HOST="http://127.0.0.11434"\r\nexport OLLAMA_ORIGINS="https://*.wikipedia.org"</pre>\r\n Then run:\r\n <pre>source ~/.bashrc && ollama serve</pre>\r\n </details>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="whitelist users hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted users</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted user is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-users-expiry" label="Default expiry for whitelisted users"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Users</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted users.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-users-input" placeholder="Add user to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-users-add-button">Add user</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-users-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted users will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="whitelist pages hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted pages</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted page is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-pages-expiry" label="Default expiry for whitelisted pages"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Pages</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted pages.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-pages-input" placeholder="Add page to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-pages-add-button">Add page</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-pages-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted pages will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="whitelist tags hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for whitelisted tags</div>\r\n <div class="settings-section-desc">Amount of time before a whitelisted tag is automatically removed from the whitelist.</div>\r\n <duration-input id="settings-whitelist-tags-expiry" label="Default expiry for whitelisted tags"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Whitelisted Tags</div>\r\n <div class="settings-section-desc">Manage your list of whitelisted tags.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-whitelist-tags-input" placeholder="Add tag to whitelist..." autocomplete="off"/>\r\n <button type="button" id="settings-whitelist-tags-add-button">Add tag</button>\r\n </div>\r\n </div>\r\n <div id="settings-whitelist-tags-list" class="settings-section list-container">\r\n \x3c!-- Whitelisted tags will be populated here --\x3e\r\n </div>\r\n </div>\r\n\r\n <div class="highlight users hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted users</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted user is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-users-expiry" label="Default expiry for highlighted users"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Users</div>\r\n <div class="settings-section-desc">Manage your list of highlighted users.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-users-input" placeholder="Add user to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-users-add-button">Add user</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-users-list" class="settings-section list-container">\r\n \x3c!-- Highlighted users will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="highlight pages hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted pages</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted page is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-pages-expiry" label="Default expiry for highlighted pages"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Pages</div>\r\n <div class="settings-section-desc">Manage your list of highlighted pages.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-pages-input" placeholder="Add page to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-pages-add-button">Add page</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-pages-list" class="settings-section list-container">\r\n \x3c!-- Highlighted pages will be populated here --\x3e\r\n </div>\r\n </div>\r\n <div class="highlight tags hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">Expiry for highlighted tags</div>\r\n <div class="settings-section-desc">Amount of time before a highlighted tag is automatically removed from the highlight list.</div>\r\n <duration-input id="settings-highlight-tags-expiry" label="Default expiry for highlighted tags"></duration-input>\r\n </div>\r\n <div class="settings-section">\r\n <div class="settings-section-title">Highlighted Tags</div>\r\n <div class="settings-section-desc">Manage your list of highlighted tags.</div>\r\n <div class="text-input-container">\r\n <input type="text" id="settings-highlight-tags-input" placeholder="Add tag to highlight..." autocomplete="off"/>\r\n <button type="button" id="settings-highlight-tags-add-button">Add tag</button>\r\n </div>\r\n </div>\r\n <div id="settings-highlight-tags-list" class="settings-section list-container">\r\n \x3c!-- Highlighted tags will be populated here --\x3e\r\n </div>\r\n </div>\r\n\r\n <div class="statistics hidden">\r\n <div class="settings-section">\r\n <div class="settings-section-title">\r\n Statistics Overview\r\n <button type="button" id="reset-statistics-button">Reset Statistics</button>\r\n </div>\r\n <div class="stats-grid">\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-total-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Edits Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n You have thanked <span id="stats-thanks-percentage"></span>% of the edits you reviewed\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-recent-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Recent Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n Recent changes make up <span id="stats-recent-changes-percentage"></span>% of your reviewed edits\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-pending-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Pending Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n You have accepted <span id="stats-pending-changes-accepted"></span> (\r\n <span id="stats-pending-changes-accepted-percentage"></span>%\r\n ) pending changes\r\n </div>\r\n <div class="stat-sublabel">\r\n You have rejected <span id="stats-pending-changes-rejected"></span> (\r\n <span id="stats-pending-changes-rejected-percentage"></span>%\r\n ) pending changes from entering the public eye\r\n </div>\r\n <div class="stat-sublabel">\r\n Out of all the edits you’ve reviewed, <span id="stats-pending-changes-percentage"></span>% of them were pending review\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-user-creations-reviewed" class="stat-value"></div>\r\n <div class="stat-label">User Creations Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-user-creations-percentage"></span>% of your reviews came from user creations\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-watchlist-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Watchlist Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-watchlist-changes-percentage"></span>% of your reviews came from your watchlist\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-abuselog-changes-reviewed" class="stat-value"></div>\r\n <div class="stat-label">Abuse Log Changes Reviewed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-abuselog-changes-percentage"></span>% of your reviews came from your abuse log\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-reverts-made" class="stat-value"></div>\r\n <div class="stat-label">Reverts Made</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-reverts-percentage"></span>% of edits that cross your path are reverted by you\r\n </div>\r\n <div class="stat-sublabel">\r\n You assumed good faith <span id="stats-goodfaith-reverts-percentage"></span>% of the time\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-recent-reverts-percentage"></span>% of your reverts were from recent changes\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pending-reverts-percentage"></span>% of your reverts were pending\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-watchlist-reverts-percentage"></span>% of your reverts were from your watchlist\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-abuselog-reverts-percentage"></span>% of your reverts were from your abuse log\r\n </div>\r\n <div class="stat-sublabel">\r\n …and the last <span id="stats-other-reverts-percentage"></span>% weren’t even in your queue!\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-users-welcomed" class="stat-value"></div>\r\n <div class="stat-label">Users Welcomed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-welcomed-message"></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-warnings" class="stat-value"></div>\r\n <div class="stat-label">Warnings Issued</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-1-percentage"></span>% were level 1\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-2-percentage"></span>% were level 2\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-3-percentage"></span>% were level 3\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-4-percentage"></span>% were level 4\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-warning-4im-percentage"></span>% were level 4im\r\n </div>\r\n <div class="stat-sublabel">\r\n …and the rest we were too lazy to track =)\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-reports" class="stat-value"></div>\r\n <div class="stat-label">Reports Filed</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n AIV accounted for <span id="stats-AIV-reports-percentage"></span>% of your reports\r\n </div>\r\n <div class="stat-sublabel">\r\n another <span id="stats-UAA-reports-percentage"></span>% were for UAA\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-global-block-reports-percentage"></span>% were for global block requests\r\n </div>\r\n <div class="stat-sublabel">\r\n while <span id="stats-global-lock-reports-percentage"></span>% were for global lock requests\r\n </div>\r\n <div class="stat-sublabel">\r\n finally, <span id="stats-RFPP-reports-percentage"></span>% were posted at RFPP\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-pages-watched" class="stat-value"></div>\r\n <div class="stat-label">Pages Watched</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-unwatched"></span> pages were annoying enough to be unwatched\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-items-whitelisted" class="stat-value"></div>\r\n <div class="stat-label">Items Whitelisted</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-whitelisted"></span> (\r\n <span id="stats-users-whitelisted-percentage"></span>%\r\n ) were users\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-whitelisted"></span> (\r\n <span id="stats-pages-whitelisted-percentage"></span>%\r\n ) were pages\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-tags-whitelisted"></span> (\r\n <span id="stats-tags-whitelisted-percentage"></span>%\r\n ) were tags\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-items-highlighted" class="stat-value"></div>\r\n <div class="stat-label">Items Highlighted</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-users-highlighted"></span> (\r\n <span id="stats-users-highlighted-percentage"></span>%\r\n ) were users\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-pages-highlighted"></span> (\r\n <span id="stats-pages-highlighted-percentage"></span>%\r\n ) were pages\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-tags-highlighted"></span> (\r\n <span id="stats-tags-highlighted-percentage"></span>%\r\n ) were tags\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="stat-card">\r\n <div class="inside shimmer shimmer-border">\r\n <div class="front">\r\n <div id="stats-session-time" class="stat-value"></div>\r\n <div class="stat-label">Session Time</div>\r\n </div>\r\n <div class="back">\r\n <div class="stat-sublabel">\r\n <span id="stats-reports-per-day"></span> reports per day\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-reverts-per-hour"></span> reverts per hour\r\n </div>\r\n <div class="stat-sublabel">\r\n <span id="stats-reviews-per-minute"></span> reviews per minute\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="save hidden">\r\n <div class="save settings-section">\r\n <div class="save-settings-header">\r\n <div class="settings-section-title">Save Settings</div>\r\n <div class="settings-section-desc">Manage how and where your WikiShield settings are stored.</div>\r\n </div>\r\n\r\n <div class="save-settings-content">\r\n <div class="save-settings-card data-management-card">\r\n <div class="card-header">\r\n <div class="card-icon">\r\n <i class="fa fa-database"></i>\r\n </div>\r\n <div class="card-header-content">\r\n <div class="card-title">Data Management</div>\r\n <div class="card-desc">Import, export, or reset your WikiShield settings. Settings are encoded as base64 for easy sharing.</div>\r\n </div>\r\n </div>\r\n\r\n <div class="card-body">\r\n <div class="action-buttons-grid">\r\n <button type="button" id="settings-export-button" class="action-card export-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-download"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Export Settings</div>\r\n <div class="action-card-desc">Save your configuration</div>\r\n </div>\r\n </button>\r\n\r\n <button type="button" id="settings-import-button" class="action-card import-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-upload"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Import Settings</div>\r\n <div class="action-card-desc">Load saved configuration</div>\r\n </div>\r\n </button>\r\n\r\n <button type="button" id="settings-reset-button" class="action-card reset-card">\r\n <div class="action-card-icon">\r\n <i class="fa fa-undo"></i>\r\n </div>\r\n <div class="action-card-content">\r\n <div class="action-card-title">Reset Settings</div>\r\n <div class="action-card-desc">Restore to defaults</div>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div id="settings-save-status" class="status-message hidden"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="changelog hidden">\r\n <div class="settings-section">\r\n <div class="changelog-content">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class="about hidden">\r\n <div class="settings-section">\r\n <div class="about-content">\r\n <div class="about-version">\r\n <span class="fa fa-shield-alt"></span>\r\n <span>WikiShield v<span id="settings-about-version"></span></span>\r\n </div>\r\n\r\n <div class="about-tagline">\r\n <p>A powerful, real-time patrolling tool for Wikipedia editors</p>\r\n </div>\r\n\r\n <div class="about-links">\r\n <a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia:WikiShield" target="_blank" class="link-card docs">\r\n <div class="link-card-icon">\r\n <span class="fa fa-book"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Documentation</div>\r\n <div class="link-card-desc">Learn how to use WikiShield</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n <a rel="noopener" href="https://github.com/LuniZunie/WikiShield-App" target="_blank" class="link-card source">\r\n <div class="link-card-icon">\r\n <span class="fa fa-code-branch"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Source Code</div>\r\n <div class="link-card-desc">View on GitHub</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n <a rel="noopener" href="https://en.wikipedia.org/wiki/Wikipedia_talk:WikiShield" target="_blank" class="link-card feedback">\r\n <div class="link-card-icon">\r\n <span class="fa fa-comments"></span>\r\n </div>\r\n <div class="link-card-content">\r\n <div class="link-card-title">Feedback</div>\r\n <div class="link-card-desc">Share your thoughts</div>\r\n </div>\r\n <span class="fa fa-arrow-right link-card-arrow"></span>\r\n </a>\r\n </div>\r\n\r\n <div class="about-footer">\r\n <div class="footer-divider"></div>\r\n <div class="about-credits">\r\n <div>\r\n <div class="credit-card" data-link="https://about.luni.me">\r\n <div class="credit-icon">\r\n <span class="fa fa-code"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">LuniZunie</div>\r\n <div class="credit-role">Lead Developer</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:Ingenuity">\r\n <div class="credit-icon">\r\n <span class="fa fa-lightbulb"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">Ingenuity</div>\r\n <div class="credit-role">Original Creator</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:MSK">\r\n <div class="credit-icon">\r\n <span class="fa fa-database"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">MSK</div>\r\n <div class="credit-role">Backend</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:pro-anti-air">\r\n <div class="credit-icon">\r\n <span class="fa fa-book"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">Pro-anti-air</div>\r\n <div class="credit-role">Documentation</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:Chaotic_Enby">\r\n <div class="credit-icon">\r\n <span class="fa fa-paint-brush"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">Chaotic Enby</div>\r\n <div class="credit-role">Logo Design</div>\r\n </div>\r\n </div>\r\n <div class="credit-card" data-link="https://en.wikipedia.org/wiki/User:HurricaneZeta">\r\n <div class="credit-icon">\r\n <span class="fa fa-paint-brush"></span>\r\n </div>\r\n <div class="credit-info">\r\n <div class="credit-name">HurricaneZeta</div>\r\n <div class="credit-role">Logo Design</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="randomize">\r\n <div class="copyright-card" data-link="https://sound-effects.bbcrewind.co.uk">\r\n <div class="copyright-title">Nature sounds</div>\r\n <div class="copyright-desc">bbc.co.uk – © copyright 2026 BBC</div>\r\n </div>\r\n <div class="copyright-card" data-link="https://pixabay.com/sound-effects">\r\n <div class="copyright-title">Sound effects</div>\r\n <div class="copyright-desc">pixabay.com – CC0 License</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </body>\r\n</html>'},2459(e){e.exports="@keyframes startup {\n\tfrom {\n\t\topacity: 0;\n\t}\n\tto {\n\t\topacity: 1;\n\t}\n}\n\n@keyframes particles {\n\t0%, 100% {\n\t\ttransform: translate(0, 0) rotate(0deg);\n\t}\n\t33% {\n\t\ttransform: translate(30px, -30px) rotate(120deg);\n\t}\n\t66% {\n\t\ttransform: translate(-20px, 20px) rotate(240deg);\n\t}\n}\n\n@keyframes container-fade-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(30px) scale(.95);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0) scale(1);\n\t}\n}\n\n@keyframes border-glow {\n\t0%, 100% {\n\t\tbox-shadow:\n\t\t\t0 20px 60px rgba(0, 0, 0, .5),\n\t\t\t0 0 40px rgba(102, 126, 234, .4),\n\t\t\t0 0 80px rgba(240, 147, 251, .3),\n\t\t\tinset 0 0 60px rgba(102, 126, 234, .15),\n\t\t\tinset 0 1px 0 rgba(255, 255, 255, .2);\n\t}\n\t50% {\n\t\tbox-shadow:\n\t\t\t0 20px 60px rgba(0, 0, 0, .5),\n\t\t\t0 0 60px rgba(240, 147, 251, .6),\n\t\t\t0 0 120px rgba(102, 126, 234, .4),\n\t\t\tinset 0 0 80px rgba(240, 147, 251, .2),\n\t\t\tinset 0 1px 0 rgba(255, 255, 255, .3);\n\t}\n}\n\n@keyframes shield-entrance {\n\t0% {\n\t\topacity: 0;\n\t\ttransform: scale(0) rotate(-180deg);\n\t}\n\t60% {\n\t\topacity: 1;\n\t\ttransform: scale(1.15) rotate(10deg);\n\t}\n\t100% {\n\t\topacity: 1;\n\t\ttransform: scale(1) rotate(0deg);\n\t}\n}\n\n@keyframes shield-float {\n\t0%, 100% {\n\t\ttransform: translate(-50%, -50%) translateY(0px);\n\t}\n\t50% {\n\t\ttransform: translate(-50%, -50%) translateY(-10px);\n\t}\n}\n\n@keyframes pulse {\n\t0% {\n\t\ttransform: translate(-50%, -50%) scale(.8);\n\t\topacity: 0;\n\t}\n\t50% {\n\t\ttransform: translate(-50%, -50%) scale(1);\n\t\topacity: 0.8;\n\t}\n\t100% {\n\t\ttransform: translate(-50%, -50%) scale(1.5);\n\t\topacity: 0;\n\t}\n}\n\n@keyframes sparkle {\n\t0%, 100% {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n\t50% {\n\t\ttransform: scale(1.5);\n\t\topacity: 1;\n\t}\n}\n\n@keyframes title-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(-20px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes links-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(-10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes warning-fade-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: scale(.95);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: scale(1);\n\t}\n}\n\n@keyframes button-slide-in {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(40px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n\n@keyframes fade-in {\n\tfrom {\n\t\topacity: 0;\n\t}\n\tto {\n\t\topacity: 1;\n\t}\n}\n@keyframes fade-out {\n\tfrom {\n\t\topacity: 1;\n\t}\n\tto {\n\t\topacity: 0;\n\t}\n}\n\n@keyframes scale-in {\n\tfrom {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n\tto {\n\t\ttransform: scale(1);\n\t\topacity: 1;\n\t}\n}\n@keyframes scale-out {\n\tfrom {\n\t\ttransform: scale(1);\n\t\topacity: 1;\n\t}\n\tto {\n\t\ttransform: scale(0);\n\t\topacity: 0;\n\t}\n}\n\n@keyframes scale-x {\n from {\n transform: scaleX(0);\n }\n to {\n transform: scaleX(1);\n }\n}\n\n@keyframes bottom-tool-menu-enter {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateY(10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateY(0);\n\t}\n}\n@keyframes bottom-tool-submenu-enter {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: translateX(-10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: translateX(0);\n\t}\n}\n\n@keyframes toast-alert-enter {\n\t0% {\n\t\topacity: 0;\n\t\ttransform: translateX(100%) scale(.8);\n\t}\n\t60% {\n\t\topacity: 1;\n\t\ttransform: translateX(-10px) scale(1.05);\n\t}\n\t100% {\n\t\topacity: 1;\n\t\ttransform: translateX(0) scale(1);\n\t}\n}\n@keyframes toast-alert-leave {\n\t0% {\n\t\topacity: 1;\n\t\ttransform: translateX(0) scale(1);\n\t}\n\t100% {\n\t\topacity: 0;\n\t\ttransform: translateX(150%) scale(.7);\n\t}\n}\n\n@keyframes music-toast-enter {\n from {\n opacity: 0;\n transform: translateX(150%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n@keyframes music-toast-leave {\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(150%);\n }\n}\n\n@keyframes tooltip-enter {\n from {\n\t\ttransform: scale(.8);\n\t}\n\tto {\n\t\ttransform: scale(1);\n\t}\n}\n\n@keyframes star-spin {\n 0% {\n transform: rotate(0deg) scale(1);\n }\n 50% {\n transform: rotate(180deg) scale(1.3);\n }\n 100% {\n transform: rotate(360deg) scale(1);\n }\n}\n\n@keyframes flash-highlight {\n 0%, 100% {\n filter: brightness(1);\n }\n 50% {\n filter: brightness(.5);\n }\n}\n\n@keyframes logo-loader {\n 0%, 100% {\n transform: scale(1);\n\n /* Theme dependent */\n filter: drop-shadow(0 0 10px rgba(102, 126, 234, .4));\n }\n 50% {\n transform: scale(1.5);\n\n /* Theme dependent */\n filter: drop-shadow(0 0 20px rgba(102, 126, 234, .6));\n }\n}\n\n@keyframes refresh-rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse-DEFCON {\n 0% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.15);\n }\n 100% {\n transform: scale(1);\n }\n}\n\nbody {\n --transparency: 1;\n\n font-size: clamp(10px, 3vw, 16px);\n\n /* Theme dependent */\n color: rgba(241, 245, 255, 1);\n background: rgba(20, 20, 30, 1);\n\n &.dyslexia-font {\n font-family: \"Open-Dyslexic\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n\n *:not(.fa):not(.fas):not(.far):not(.fal):not(.fab) {\n font-family: \"Open-Dyslexic\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n }\n }\n\n &.reduce-motion * {\n animation-duration: 0.001s !important;\n transition-duration: 0.001s !important;\n }\n\n & a {\n text-decoration: none;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 0.9);\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n &:active {\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n }\n }\n\n & > #popup-blocker {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 1);\n\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n animation: fade-in .2s ease;\n }\n\n & > #loading {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 2);\n\n opacity: 1;\n\n transition: opacity .5s ease;\n\n /* Theme dependent */\n background: rgba(20, 20, 30, 1);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n\n & > .icon {\n width: 100vmin;\n }\n }\n\n & > .icon {\n aspect-ratio: 1 / 1;\n width: 12.5vmin;\n\n animation: logo-loader 2s ease-in-out infinite;\n\n transition: width .5s cubic-bezier(0.6, -0.28, 0.735, 0.045);\n }\n }\n\n & > #initial {\n display: flex;\n align-items: center;\n\t justify-content: center;\n\n width: 100%;\n height: 100%;\n\n position: relative;\n\n overflow: hidden;\n\n /* Theme dependent */\n background: rgba(20, 20, 30, 1);\n\n &.hidden {\n display: none;\n }\n\n &:before {\n content: '';\n position: absolute;\n inset: 0;\n z-index: 0;\n background:\n radial-gradient(circle at 20% 50%, rgba(102, 126, 234, .08) 0%, transparent 50%),\n radial-gradient(circle at 80% 80%, rgba(118, 75, 162, .06) 0%, transparent 50%);\n pointer-events: none;\n }\n\n &:not(.hidden) {\n animation: startup 1.2s ease-out;\n\n & > #welcome-container {\n animation: container-fade-in 1.2s ease-out;\n\n & > .shield-container {\n animation: shield-entrance 1.5s ease 2s forwards;\n }\n\n & > h1 {\n animation: title-fade-in 0.8s ease-out 0.5s both;\n }\n\n & > .about-links {\n animation: link-slide-in 0.8s ease-out 0.7s both;\n }\n\n & > #rollback-needed {\n animation: warning-fade-in 1s ease-out 0.7s both;\n }\n\n & > button {\n animation: button-slide-in 2s ease-out 1s both;\n }\n }\n }\n\n & > #dots-canvas {\n width: 100%;\n height: 100%;\n\n position: absolute;\n z-index: 0;\n left: 0;\n top: 0;\n }\n\n & > #welcome-container {\n padding: 48px;\n\n border-radius: 16px;\n\n max-width: 480px;\n\n position: relative;\n z-index: 2;\n\n text-align: center;\n\n overflow: hidden;\n\n /* Theme dependent */\n border: 1px solid rgba(143, 163, 255, .15);\n box-shadow:\n 0 12px 40px rgba(0, 0, 0, .4),\n inset 0 1px 0px rgba(255, 255, 255, .08),\n inset 0 -1px 0px rgba(0, 0, 0, .2);\n\n background: linear-gradient(135deg,\n rgba(30, 34, 45, .7),\n rgba(25, 25, 36, .5)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n & * {\n position: relative;\n z-index: 1;\n }\n\n & > .shield-container {\n width: 100px;\n height: 100px;\n\n position: relative;\n\n margin: 0 auto 24px;\n\n opacity: 0;\n\n & > .glow-ring {\n width: 240px;\n height: 240px;\n\n position: absolute;\n left: 50%;\n top: 50%;\n\n border: 2px solid;\n border-radius: 50%;\n\n transform: translate(-50%, -50%);\n\n animation: pulse 2.5s ease-in-out infinite;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n\n &:nth-child(2) {\n animation-delay: 0.4s;\n border-color: rgba(118, 75, 162, .25);\n }\n &:nth-child(3) {\n animation-delay: 0.8s;\n border-color: rgba(143, 163, 255, .2);\n }\n }\n\n & > .sparkle {\n width: 5px;\n height: 5px;\n\n position: absolute;\n\n border-radius: 50%;\n\n animation: sparkle 2s ease-in-out infinite;\n\n &:nth-child(4) {\n top: 15%;\n left: 25%;\n\n animation-delay: 0s;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .6);\n box-shadow: 0 0 8px rgba(143, 163, 255, .6);\n }\n &:nth-child(5) {\n top: 25%;\n left: 18%;\n\n animation-delay: 0.4s;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .6);\n box-shadow: 0 0 8px rgba(102, 126, 234, .6);\n }\n &:nth-child(6) {\n bottom: 20%;\n\t left: 30%;\n\n animation-delay: 0.8s;\n\n /* Theme dependent */\n background: rgba(118, 75, 162, .5);\n box-shadow: 0 0 8px rgba(118, 75, 162, .5);\n }\n &:nth-child(7) {\n bottom: 25%;\n right: 25%;\n\n animation-delay: 1.2s;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .5);\n box-shadow: 0 0 8px rgba(143, 163, 255, .5);\n }\n }\n\n & > .shield-icon {\n width: 100px;\n\n position: absolute;\n z-index: 2;\n left: 50%;\n top: 50%;\n\n transform: translate(-50%, -50%);\n\n animation: shield-float 3s ease-in-out infinite;\n\n /* Theme dependent */\n filter: drop-shadow(0 0 8px rgba(102, 126, 234, .3));\n\n & > img {\n width: 100%;\n height: 100%;\n }\n }\n }\n\n & > h1 {\n margin: 0 0 8px 0;\n\n font-size: 2.2em;\n font-weight: 700;\n line-height: 1.2;\n\n /* Theme dependent */\n color: rgba(241, 245, 255, 1);\n }\n\n & > .subtitle {\n margin: 0 0 24px 0;\n\n font-size: 0.95em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(160, 170, 200, 0.8);\n }\n\n & > .about-links {\n display: flex;\n justify-content: center;\n gap: 12px;\n flex-wrap: wrap;\n\n margin: 24px 0;\n\n & > .about-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n\n padding: 8px 14px;\n\n border: 1px solid;\n border-radius: 8px;\n\n font-size: 0.85em;\n font-weight: 500;\n text-decoration: none;\n\n transition: background .2s ease,\n transform .2s ease,\n color .2s ease,\n border-color .2s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, 0.9);\n background: rgba(102, 126, 234, .1);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n border-color: rgba(102, 126, 234, .4);\n background: rgba(102, 126, 234, .2);\n }\n }\n }\n\n & > #rollback-needed {\n margin: 20px 0;\n padding: 16px;\n\n border: 1px solid;\n border-radius: 12px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(247, 76, 60, .3);\n box-shadow:\n 0 4px 12px rgba(0, 0, 0, .2),\n\t\t inset 0 1px 0 rgba(255, 255, 255, .05);\n background: rgba(247, 76, 60, .08);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n display: none;\n }\n\n & p {\n margin: 6px 0;\n\n font-weight: 400;\n font-size: 0.9em;\n\n /* Theme dependent */\n color: rgba(247, 76, 60, 0.95);\n }\n & a {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n &:hover {\n text-decoration: underline;\n }\n }\n }\n\n & > button {\n cursor: pointer;\n\n width: 100%;\n\n padding: 12px 24px;\n\n border: 2px solid transparent;\n border-radius: 10px;\n\n position: relative;\n\n font-size: 1em;\n font-weight: 700;\n color: rgba(143, 163, 255, 1);\n letter-spacing: 0.5px;\n\n overflow: hidden;\n\n opacity: 1;\n\n transition: all .25s ease;\n\n /* Theme dependent */\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 0.8), rgba(118, 75, 162, 0.8)) border-box;\n box-shadow:\n 0 0 10px rgba(102, 126, 234, .6),\n 0 0 20px rgba(118, 75, 162, .3),\n inset 0 0 10px rgba(102, 126, 234, .1);\n\n &.hidden {\n display: none;\n }\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(160, 180, 255, 1);\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 75, 162, 1)) border-box;\n box-shadow:\n 0 0 15px rgba(102, 126, 234, .8),\n 0 0 30px rgba(118, 75, 162, .5),\n inset 0 0 15px rgba(102, 126, 234, .2);\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n background:\n linear-gradient(rgba(20, 20, 30, 1), rgba(20, 20, 30, 1)) padding-box,\n linear-gradient(135deg, rgba(102, 126, 234, 0.7), rgba(118, 75, 162, 0.7)) border-box;\n box-shadow:\n 0 0 8px rgba(102, 126, 234, .5),\n 0 0 16px rgba(118, 75, 162, .3),\n inset 0 0 8px rgba(102, 126, 234, .1);\n }\n\n &::before {\n content: \"\";\n\n width: 100%;\n height: 100%;\n\n position: absolute;\n left: -100%;\n top: 0;\n\n transition: left .4s ease;\n\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1),\n transparent\n );\n }\n\n & > i {\n margin-right: 6px;\n font-size: 14px;\n transition: transform 0.3s ease;\n }\n\n &:hover > i {\n transform: translateX(2px);\n }\n }\n }\n }\n\n & > #app {\n width: 100%;\n height: 100%;\n\n line-height: 1.5;\n color: var(--body-color);\n\n overflow: hidden;\n\n background: var(--body-background);\n\n &.hidden {\n display: none;\n }\n\n & > #container {\n display: flex;\n width: 100%;\n height: 100%;\n\n margin: 0;\n\n overflow: hidden;\n\n & > #queue {\n width: 15vw;\n height: 100%;\n\n position: relative;\n\n border-right: 1px solid;\n\n /* Theme dependent */\n border-right-color: rgba(58, 61, 74, 1);\n\n & > #queue-top {\n -webkit-user-select: none;\n user-select: none;\n\n container-type: inline-size;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 69px;\n\n position: relative;\n z-index: 2;\n\n overflow: auto hidden;\n\n border-bottom: 2px solid;\n border-right: 1px solid;\n border-bottom-right-radius: 8px;\n\n padding: 10px;\n\n /* Theme dependent */\n border-color: rgba(54, 62, 81, 1);\n\n background: rgba(41, 47, 60, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .queue-button-cluster {\n display: flex;\n align-items: center;\n gap: 20px;\n\n padding: 10px 14px;\n\n border: 1px solid;\n border-radius: 14px;\n\n font-size: 1.2em;\n\n /* Theme dependent */\n border-color: rgba(143, 143, 255, .2);\n background: rgba(143, 143, 255, .1);\n\n & > .fa {\n position: relative;\n }\n\n & > span {\n cursor: pointer;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > #DEFCON {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n padding: 4px 14px;\n\n border: 1px solid;\n border-radius: 14px;\n\n /* Theme dependent */\n border-color: rgba(143, 143, 255, .2);\n background: rgba(143, 143, 255, .1);\n\n & > .dot {\n flex: 0 0 auto;\n\n width: 10px;\n height: 10px;\n\n border-radius: 50%;\n\n animation: pulse-DEFCON 2s ease-in-out infinite;\n\n /* Theme dependent */\n background: rgba(100, 100, 100, 1);\n box-shadow: 0 0 0 4px rgba(100, 100, 100, .15);\n\n &.DEFCON-1 {\n background: rgba(255, 75, 75, 1);\n box-shadow: 0 0 0 4px rgba(255, 75, 75, .3);\n }\n &.DEFCON-2 {\n background: rgba(255, 165, 0, 1);\n box-shadow: 0 0 0 4px rgba(255, 165, 0, .3);\n }\n &.DEFCON-3 {\n background: rgba(255, 255, 0, 1);\n box-shadow: 0 0 0 4px rgba(255, 255, 0, .3);\n }\n &.DEFCON-4 {\n background: rgba(75, 255, 75, 1);\n box-shadow: 0 0 0 4px rgba(75, 255, 75, .3);\n }\n &.DEFCON-5 {\n background: rgba(75, 255, 255, 1);\n box-shadow: 0 0 0 4px rgba(75, 255, 255, .3);\n }\n }\n\n & > span {\n overflow: auto hidden;\n\n white-space: nowrap;\n font-size: 13px;\n font-weight: 500;\n }\n }\n }\n\n & > #queue-tabs {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-around;\n gap: 8px;\n\n position: relative;\n z-index: 2;\n\n border-radius: 0 0 12px 12px;\n padding: 10px 12px;\n\n overflow: hidden;\n\n /* Theme dependent */\n background: transparent;\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .queue-tab {\n cursor: pointer;\n\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n\n position: relative;\n\n border-radius: 50%;\n padding: 8px 14px;\n\n font-size: 1.4em;\n\n transition: transform .18s ease,\n color .18s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .85);\n\n &::after {\n content: \"\";\n\n height: 3px;\n\n position: absolute;\n left: 10px;\n right: 10px;\n bottom: 0;\n\n border-radius: 2px;\n\n transform: scaleX(0);\n\n transition: transform .22s cubic-bezier(.2, .9, .27, 1);\n\n /* Theme dependent */\n opacity: .95;\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, 1),\n rgba(118, 75, 162, 1)\n );\n }\n\n &:hover, &:focus-visible {\n transform: translateY(-2px);\n }\n\n &:not(.selected).mentions-me::after {\n animation: scale-x 1s ease-in-out infinite;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(244, 196, 32, 1),\n rgba(255, 107, 107, 1)\n );\n }\n\n &.selected {\n transform: translateY(-2px);\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n\n &::after {\n transform: scaleX(1);\n }\n }\n\n &.hidden {\n display: none;\n }\n\n & > .fas {\n position: relative;\n }\n }\n }\n\n & > .queue-list {\n height: calc(100% - 60px);\n\n position: relative;\n top: -60px;\n\n padding-top: 60px;\n padding-bottom: 10px;\n }\n\n & > .width-adjust {\n touch-action: none;\n cursor: col-resize;\n\n width: 10px;\n height: 100%;\n\n position: absolute;\n right: -5px;\n top: 0;\n z-index: 3;\n }\n\n & > #clear-queue {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 8px;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n left: 8px;\n bottom: 8px;\n z-index: 2;\n\n border: 1px solid;\n border-radius: 50%;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease,\n color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > div {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n }\n }\n }\n\n & > #right-container {\n display: flex;\n flex-wrap: wrap;\n width: calc(100% - 15vw);\n\n & > #right-content {\n display: flex;\n width: 100%;\n height: 100%;\n\n & > #main-container {\n display: flex;\n flex-direction: column;\n gap: 0px;\n width: calc(100% - 15vw);\n height: 100%;\n\n padding-top: 69px;\n\n position: relative;\n\n & > #edit-details {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 4px;\n\n width: calc(100% - 20vmin);\n height: 69px;\n\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n z-index: 2;\n\n margin-inline: auto;\n\n border: 1px solid;\n border-top: none;\n border-radius: 8px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n\n padding: 8px;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease;\n\n /* Theme dependent */\n background: rgba(30, 34, 45, 1);\n border-color: rgba(143, 163, 255, .2);\n box-shadow:\n 0 4px 12px rgba(0, 0, 0, .2),\n inset 0 1px 0px rgba(255, 255, 255, .05);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > .central {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n flex: 1;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: .75rem;\n\n width: 100%;\n\n font-size: 1em;\n\n & > .page-title {\n display: flex;\n align-items: center;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n /* Theme dependent */\n color: rgba(119, 166, 215, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > i {\n font-size: .9em;\n\n line-height: inherit;\n }\n\n & > a {\n color: inherit;\n\n white-space: nowrap;\n text-overflow: ellipsis;\n\n overflow: hidden;\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .75rem;\n\n & > .user-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n\n &.blocked {\n font-style: italic;\n text-decoration: line-through;\n\n opacity: .7;\n }\n &.empty-talk {\n /* Theme dependent */\n color: rgba(221, 105, 116, 1);\n }\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > a {\n color: inherit;\n }\n }\n\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px 8px;\n\n border: 1px solid;\n border-radius: calc(1rem + 4px);\n\n font-size: .8em;\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--diff-color);\n border-color: color-mix(in srgb, var(--diff-color) 20%, transparent);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n\n & > .subheader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: .75rem;\n\n width: 100%;\n\n font-size: .9em;\n\n & > .item-comment {\n display: flex;\n align-items: center;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n\n &.none {\n opacity: .6;\n }\n\n & > i {\n flex-shrink: 0;\n\n opacity: .6;\n }\n\n & > .text {\n white-space: nowrap;\n\n overflow: auto hidden;\n\n &.none {\n opacity: .6;\n }\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 4px;\n\n & > .minor-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 5px .5rem;\n\n border-radius: .375rem;\n\n font-size: .85rem;\n\n /* Theme dependent */\n color: rgba(175, 175, 175, 1);\n background: rgba(175, 175, 175, .15);\n }\n\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px 8px;\n\n border: 1px solid;\n border-radius: .375rem;\n\n font-size: .8em;\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--diff-color);\n border-color: color-mix(in srgb, var(--diff-color) 20%, transparent);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n }\n\n & > .nav-item-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 41px;\n height: 41px;\n\n position: absolute;\n top: 14px;\n z-index: 2;\n\n border-radius: 50%;\n border: 1px solid;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.disabled {\n pointer-events: none;\n\n opacity: 0;\n }\n\n &#previous-item-button {\n left: calc(5vmin - calc(41px / 2));\n }\n &#next-item-button {\n right: calc(5vmin - calc(41px / 2));\n }\n\n & > i {\n font-size: 16px;\n }\n }\n\n & > #ai-analysis-container {\n flex-shrink: 0;\n\n border: 1px solid;\n\n border-radius: 12px;\n margin: 12px;\n margin-bottom: 0;\n padding: 10px;\n\n overflow: none;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .2);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3),\n inset 0 1px 0px rgba(255, 255, 255, .08),\n inset 0 -1px 0px rgba(0, 0, 0, .3);\n\n background: linear-gradient(135deg,\n rgba(30, 34, 45, .7),\n rgba(25, 25, 36, .5)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.hidden {\n display: none;\n }\n\n & > .header {\n display: flex;\n align-items: center;\n gap: 6px;\n\n margin-bottom: 8px;\n\n & > .fa {\n font-size: 1.1em;\n }\n\n & > .title {\n font-size: .95em;\n letter-spacing: .3px;\n }\n\n & > .assessment {\n border-radius: 6px;\n padding: 3px 8px;\n\n font-size: .8em;\n font-weight: 700;\n\n &.low {\n /* Theme dependent */\n background: rgba(76, 175, 80, .25);\n }\n &.review {\n /* Theme dependent */\n background: rgba(255, 193, 7, .25);\n }\n &.suspicious {\n /* Theme dependent */\n background: rgba(244, 67, 54, .25);\n }\n &.bad {\n /* Theme dependent */\n background: rgba(211, 47, 47, .25);\n }\n &.error {\n /* Theme dependent */\n background: rgba(158, 158, 158, .25);\n }\n }\n\n & > .confidence {\n border-radius: 6px;\n padding: 3px 8px;\n\n font-size: .75em;\n font-weight: 600;\n }\n }\n\n & > .explanation {\n border-left: 3px solid;\n\n border-radius: 4px;\n margin-bottom: 6px;\n padding: 6px 8px;\n\n font-size: .8em;\n line-height: 1.3;\n\n /* Theme dependent */\n border-left-color: rgba(143, 163, 255, .4);\n }\n\n & > .issues {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n\n & > .issue {\n border-radius: 6px;\n padding: 4px 10px;\n\n font-size: .75em;\n font-weight: 600;\n\n &.low {\n /* Theme dependent */\n background: rgba(76, 175, 80, .25);\n }\n &.medium {\n /* Theme dependent */\n background: rgba(255, 193, 7, .25);\n }\n &.high {\n /* Theme dependent */\n background: rgba(244, 67, 54, .25);\n }\n &.critical {\n /* Theme dependent */\n background: rgba(211, 47, 47, .25);\n }\n }\n }\n }\n\n & > .notice {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: 8px;\n\n border-left: 4px solid;\n border-radius: 4px;\n\n margin: 10px;\n padding: 8px 12px;\n\n font-size: .9em;\n\n overflow: auto hidden;\n\n &.edit-war {\n /* Theme dependent */\n color: rgba(120, 27, 20, 1);\n border-left-color: rgba(247, 50, 20, 1);\n background: rgba(255, 205, 199, 1);\n }\n\n &.outdated {\n /* Theme dependent */\n color: rgba(102, 77, 3, 1);\n border-left-color: rgba(255, 193, 7, 1);\n background: rgba(255, 243, 205, 1);\n\n &.pending {\n /* Theme dependent */\n color: rgba(12, 84, 96, 1);\n border-left-color: rgba(23, 162, 184, 1);\n background: rgba(209, 236, 241, 1);\n }\n }\n\n & > .text {\n flex: 1;\n }\n\n & > .button {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n gap: 8px;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 6px 14px;\n\n font-size: .85em;\n font-weight: 600;\n white-space: nowrap;\n text-decoration: none;\n\n transition: color .2s ease,\n border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n color: rgba(102, 77, 3, 1);\n border-color: rgba(255, 193, 7, .35);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .1);\n\n background: rgba(255, 235, 159, .45);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > i {\n font-size: 14px;\n\n transition: transform .3s ease;\n }\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n color: rgba(80, 60, 0, 1);\n border-color: rgba(255, 193, 7, .6);\n box-shadow: 0 4px 16px rgba(255, 193, 7, .25);\n\n background: rgba(255, 235, 159, .65);\n\n & > i {\n transform: translateX(3px);\n\n &.restore {\n transform: rotateZ(180deg);\n }\n }\n }\n }\n\n &::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, .2);\n }\n }\n\n & > .diff-scroll-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n left: 8px;\n z-index: 2;\n\n border-radius: 50%;\n border: 1px solid;\n\n opacity: 1;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > i {\n font-size: 16px;\n }\n\n &#diff-scroll-up {\n top: 77px;\n }\n &#diff-scroll-down {\n bottom: 8px;\n }\n }\n\n & > #diff-container {\n flex: 1;\n\n padding: 12px;\n\n scroll-behavior: smooth;\n overflow: hidden auto;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(20, 22, 28, .3),\n transparent\n );\n\n & > .loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n height: 100%;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n\n & > .loading-spinner {\n margin-bottom: 24px;\n\n font-size: 56px;\n\n animation: logo-loader 2s ease-in-out infinite;\n }\n\n & > .loading-text {\n margin-bottom: 12px;\n\n font-size: 1.1em;\n text-align: center;\n font-weight: 500;\n letter-spacing: .3px;\n\n /* Theme dependent */\n color: rgba(160, 170, 200, 1);\n }\n }\n\n & > table {\n width: 100%;\n\n border: 1px solid;\n border-collapse: separate;\n border-spacing: 0;\n\n border-radius: 14px;\n margin-bottom: 24px;\n\n overflow: hidden;\n\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: .8em;\n line-height: 1.6;\n vertical-align: baseline;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .15);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .4),\n inset 0 1px 0px rgba(255, 255, 255, .1),\n inset 0 -1px 0px rgba(0, 0, 0, .2),\n 0 0 0 1px rgba(143, 163, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(35, 40, 52, .5),\n rgba(30, 35, 48, .4)\n );\n -webkit-backdrop-filter: blur(16px) saturate(110%);\n backdrop-filter: blur(16px) saturate(110%);\n\n & > tbody {\n .mw-diff-movedpara-left, .mw-diff-movedpara-right {\n text-decoration: none;\n }\n\n & > tr {\n border: none;\n\n overflow-wrap: anywhere;\n\n transition: background .25s ease;\n\n &:hover {\n & > td {\n /* Theme dependent */\n background: rgba(143, 163, 255, .12);\n }\n }\n\n &:not(.diff-addedline, .diff-deletedline) {\n & > td {\n /* Theme dependent */\n background: rgba(255, 255, 255, .02);\n }\n }\n\n .flash-highlight {\n animation: flash-highlight 1s ease-out infinite;\n }\n\n & > td {\n border: none;\n\n overflow-wrap: anywhere;\n\n transition: background .25s ease,\n color .25s ease;\n\n &:not(.diff-marker) {\n width: 50%;\n\n padding: 10px 14px;\n\n transition: background .25s ease;\n\n /* Theme dependent */\n color: rgba(200, 210, 230, 1);\n }\n\n &.diff-lineno {\n -webkit-user-select: none;\n user-select: none;\n\n border-bottom: 1px solid;\n\n padding: 10px 12px;\n\n font-size: .85em;\n font-weight: 600;\n text-align: center;\n letter-spacing: .6px;\n\n /* Theme dependent */\n border-bottom-color: rgba(143, 163, 255, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .12),\n rgba(158, 115, 212, .08)\n );\n }\n\n &.diff-marker {\n -webkit-user-select: none;\n user-select: none;\n\n width: 40px;\n\n border-right: 1px solid;\n\n padding: 10px 8px;\n\n font-weight: 700;\n text-align: center;\n\n /* Theme dependent */\n border-right-color: rgba(143, 163, 255, .15);\n\n color: rgba(160, 170, 200, .9);\n\n background: linear-gradient(90deg,\n rgba(40, 45, 60, .3),\n rgba(35, 40, 52, .2)\n );\n\n &::before {\n content: attr(data-marker);\n }\n }\n\n &.diff-empty {\n /* Theme dependent */\n background: rgba(20, 25, 35, .3);\n }\n\n &:is(.diff-addedline, .diff-deletedline) {\n position: relative;\n\n border-left: 4px solid;\n\n transition: background .25s ease,\n border-left-color .25s ease,\n box-shadow .25s ease;\n\n &.diff-addedline {\n /* Theme dependent */\n border-left-color: rgba(76, 175, 80, .9);\n\n background: rgba(76, 175, 80, .12);\n\n transition: background .25s ease;\n\n &:hover {\n /* Theme dependent */\n border-left-color: rgba(129, 199, 132, 1);\n background: rgba(129, 199, 132, .18);\n box-shadow: inset 0 0 12px rgba(76, 175, 80, .15);\n }\n }\n &.diff-deletedline {\n /* Theme dependent */\n border-left-color: rgba(244, 67, 54, .9);\n\n background: rgba(244, 67, 54, .12);\n\n transition: background .25s ease;\n\n &:hover {\n /* Theme dependent */\n border-left-color: rgba(255, 112, 97, 1);\n background: rgba(255, 112, 97, .18);\n box-shadow: inset 0 0 12px rgba(244, 67, 54, .15);\n }\n }\n }\n\n & > div {\n & > :is(ins, del) {\n border-radius: 6px;\n padding: 2px 6px;\n\n font-weight: 600;\n text-decoration: none;\n\n transition: background .25s ease,\n transform .15s ease;\n }\n\n & > ins {\n /* Theme dependent */\n background: rgba(130, 169, 26, .55);\n\n &:hover {\n /* Theme dependent */\n background: rgba(139, 195, 74, .6);\n\n transform: scale(1.08);\n }\n }\n & > del {\n /* Theme dependent */\n background: rgba(244, 67, 54, .55);\n\n &:hover {\n /* Theme dependent */\n background: rgba(255, 112, 97, .6);\n\n transform: scale(1.08);\n }\n }\n }\n\n a {\n text-decoration: none;\n\n /* Theme dependent */\n color: rgba(107, 163, 216, 1);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n text-decoration: underline;\n }\n }\n }\n }\n }\n }\n }\n\n & > #pending-changes-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n position: fixed;\n z-index: 2;\n\n transform: translateX(-50%);\n\n &.hidden {\n display: none;\n }\n\n & > :is(.accept, .reject) {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n gap: 8px;\n\n border: 1px solid;\n\n border-radius: 10px 10px 0 0;\n padding: 8px 12px;\n\n font-size: .95em;\n font-weight: 600;\n line-height: 1;\n text-decoration: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease,\n border-color .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.accept {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .14);\n box-shadow: 0 10px 26px rgba(46, 125, 50, .12),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .25),\n rgba(56, 142, 60, .15)\n );\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n box-shadow: 0 14px 30px rgba(46, 125, 50, .2),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n }\n &:active {\n /* Theme dependent */\n box-shadow: 0 6px 20px rgba(46, 125, 50, .1),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n }\n }\n &.reject {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, .14);\n box-shadow: 0 10px 26px rgba(155, 40, 34, .12),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n background: linear-gradient(135deg,\n rgba(244, 67, 54, .25),\n rgba(211, 47, 47, .15)\n );\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n box-shadow: 0 14px 30px rgba(155, 40, 34, .2),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n }\n &:active {\n /* Theme dependent */\n box-shadow: 0 6px 20px rgba(155, 40, 34, .1),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n }\n }\n }\n }\n\n & > #progress-bar-container {\n pointer-events: none;\n\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-direction: column;\n\n position: absolute;\n top: 0px;\n bottom: 56px;\n right: 0px;\n\n padding: 0;\n\n overflow: hidden;\n\n & > .progress-bar {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 180px;\n height: 32px;\n\n position: relative;\n\n border: 1px solid;\n\n border-radius: 16px;\n margin-bottom: 10px;\n margin-right: 10px;\n\n overflow: hidden;\n\n font-size: .85em;\n font-weight: 400;\n\n opacity: 1;\n\n transition: width .3s ease,\n opacity .3s ease,\n border-color .3s ease,\n box-shadow .4s cubic-bezier(.4, 0, .2, 1),\n background .4s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .15),\n 0 2px 4px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .1),\n rgba(158, 115, 212, .1)\n );\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.error {\n /* Theme dependent */\n border-color: rgba(239, 68, 68, .8);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .15),\n 0 2px 4px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(255, 68, 68, .1),\n rgba(220, 38, 38, .1)\n );\n\n & > .progress-bar-overlay {\n /* Theme dependent */\n box-shadow: inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(255, 68, 68, .6),\n rgba(220, 38, 38, .6)\n );\n }\n }\n\n & > .progress-bar-overlay {\n width: 0;\n height: 100%;\n\n position: absolute;\n left: 0;\n top: 0;\n\n border-radius: 16px;\n\n transition: width .4s cubic-bezier(.4, 0, .2, 1),\n box-shadow .4s cubic-bezier(.4, 0, .2, 1),\n background .4s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n box-shadow: inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .6),\n rgba(158, 115, 212, .6)\n );\n }\n\n & > .progress-bar-text {\n max-width: 100%;\n\n position: relative;\n\n padding: 0 12px;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n white-space: nowrap;\n\n /* Theme dependent */\n text-shadow: 0 1px 2px rgba(0, 0, 0, .2);\n\n color: rgba(255, 255, 255, 1);\n }\n }\n }\n\n & > #bottom-tools {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n\n max-width: calc(100% - 20vmin);\n width: fit-content;\n\n position: absolute;\n left: 0;\n right: 0;\n bottom: 8px;\n z-index: 2;\n\n margin-inline: auto;\n\n border: 1px solid;\n border-radius: 16px;\n\n padding: 8px;\n\n overflow: auto hidden;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > .bottom-tool-item {\n position: relative;\n\n white-space: nowrap;\n\n transition: opacity .2s ease;\n\n &.hidden {\n pointer-events: none;\n\n opacity: .2;\n }\n\n & > .bottom-tool-trigger {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-size: .9em;\n font-weight: 400;\n\n background: transparent;\n\n transition: color .2s ease,\n background .2s ease;\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(255, 255, 255, .08);\n }\n\n &.active {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n\n & > .bottom-tool-chevron {\n transform: rotate(180deg);\n }\n }\n\n & > .bottom-tool-chevron {\n font-size: .75em;\n\n transition: transform .2s ease;\n }\n }\n }\n\n & > .bottom-tool-action {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n\n transition: color .2s ease,\n background .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .9);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(255, 255, 255, .08);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: .2;\n }\n }\n }\n\n & > #copy-link {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 8px;\n\n width: 40px;\n height: 40px;\n\n position: absolute;\n right: 8px;\n bottom: 8px;\n z-index: 2;\n\n border: 1px solid;\n border-radius: 50%;\n\n overflow: auto hidden;\n\n opacity: 1;\n\n transition: opacity .3s ease,\n padding .3s ease,\n color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);\n color: rgba(255, 255, 255, .9);\n\n background: transparent;\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n }\n\n & > div {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n\n font-size: .9em;\n font-weight: 400;\n\n white-space: nowrap;\n\n background: transparent;\n }\n }\n }\n\n & > #right-details {\n width: 15vw;\n\n position: relative;\n\n border-left: 1px solid;\n\n /* Theme dependent */\n border-left-color: rgba(54, 62, 81, 1);\n\n & > #right-top {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n align-content: center;\n justify-content: center;\n\n width: 100%;\n height: 69px;\n\n border-bottom: 2px solid;\n border-left: 1px solid;\n border-bottom-left-radius: 8px;\n\n padding: 8px 15px;\n\n /* Theme dependent */\n border-color: rgba(54, 62, 81, 1);\n\n background: rgba(41, 47, 60, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n & > .tabs {\n display: flex;\n justify-content: center;\n width: 100%;\n\n & > .tab {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border: 2px solid;\n\n padding: 10px;\n\n opacity: .75;\n\n transition: background .35s cubic-bezier(.4, 0, .2, 1),\n opacity .35s cubic-bezier(.4, 0, .2, 1),\n box-shadow .35s cubic-bezier(.4, 0, .2, 1),\n border-color .35s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: inset 0 2px 6px rgba(0, 0, 0, .4);\n\n background: rgba(60, 63, 75, .8);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n\n &:hover, &:focus-visible {\n opacity: 1;\n }\n\n &.selected {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5),\n inset 0 1px 2px rgba(0, 0, 0, .2);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25),\n rgba(118, 75, 162, .25)\n );\n }\n\n &.hidden {\n display: none;\n }\n\n &:first-child {\n border-radius: 10px 0 0 10px;\n }\n &:last-child {\n border-radius: 0 10px 10px 0;\n }\n }\n }\n\n & > .icons {\n display: flex;\n justify-content: center;\n width: 100%;\n\n font-size: 1.4em;\n\n & > .hidden {\n display: none;\n }\n }\n }\n\n & > .section {\n display: flex;\n flex-direction: column;\n height: calc(50% - calc(69px / 2) - 15px);\n\n margin: 10px 10px 0 10px;\n\n border: 1px solid;\n border-radius: 16px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n background: rgba(30, 35, 45, .8);\n\n &.hidden {\n display: none;\n }\n\n & > .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n\n padding: 14px 14px 12px;\n\n border-bottom: 1px solid;\n\n /* Theme dependent */\n border-bottom-color: rgba(143, 163, 255, .2);\n background: rgba(30, 35, 45, .8);\n\n & > .title {\n font-weight: 600;\n font-size: .85em;\n text-transform: uppercase;\n letter-spacing: .07em;\n white-space: nowrap;\n\n & > i {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n cursor: pointer;\n\n margin-right: 4px;\n\n font-size: .9em;\n\n transition: transform .5s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .8);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n transform: rotate(180deg);\n }\n }\n }\n\n & > .pills {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-shrink: 0;\n\n & > .pill {\n border: 1px solid;\n border-radius: 10px;\n padding: 4px 8px;\n\n font-size: .75em;\n font-weight: 500;\n\n white-space: nowrap;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(224, 228, 240, 1);\n background: rgba(140, 132, 255, .1);\n\n &.uw-1 {\n /* Theme dependent */\n border-color: rgba(107, 163, 216, .8);\n background: rgba(107, 163, 216, .1);\n color: rgba(107, 163, 216, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .8);\n background: rgba(143, 163, 255, .15);\n color: rgba(143, 163, 255, 1);\n }\n }\n &.uw-2 {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .8);\n background: rgba(255, 193, 7, .1);\n color: rgba(255, 193, 7, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n color: rgba(255, 193, 7, 1);\n }\n }\n &.uw-3 {\n /* Theme dependent */\n border-color: rgba(255, 87, 34, .8);\n background: rgba(255, 87, 34, .1);\n color: rgba(255, 87, 34, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 87, 34, 1);\n background: rgba(255, 87, 34, .15);\n color: rgba(255, 87, 34, 1);\n }\n }\n &.uw-4 {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, .8);\n background: rgba(244, 67, 54, .1);\n color: rgba(244, 67, 54, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(244, 67, 54, 1);\n background: rgba(244, 67, 54, .15);\n color: rgba(244, 67, 54, 1);\n }\n }\n &.uw-4im {\n /* Theme dependent */\n border-color: rgba(178, 34, 34, .8);\n background: rgba(178, 34, 34, .1);\n color: rgba(178, 34, 34, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(178, 34, 34, 1);\n background: rgba(178, 34, 34, .15);\n color: rgba(178, 34, 34, 1);\n }\n }\n\n &.ub {\n /* Theme dependent */\n border-color: rgba(255, 99, 132, .8);\n background: rgba(255, 99, 132, .1);\n color: rgba(255, 99, 132, 1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 99, 132, 1);\n background: rgba(255, 99, 132, .15);\n color: rgba(255, 99, 132, 1);\n }\n }\n }\n }\n }\n\n & > .queue-list {\n flex: 1;\n height: 100%;\n\n padding: 4px;\n\n /* Theme dependent */\n background: rgba(20, 22, 28, .3);\n }\n\n & > .footer {\n cursor: pointer;\n\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n\n padding: 10px 14px;\n\n border-top: 1px solid;\n\n font-size: .85em;\n\n transition: background .2s ease;\n\n /* Theme dependent */\n background: rgba(30, 35, 45, .8);\n border-top-color: rgba(143, 163, 255, .2);\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n background: rgba(255, 255, 255, .08);\n\n & > i {\n transform: translateX(3px);\n }\n }\n\n & > i {\n transition: transform .2s ease;\n }\n }\n }\n\n &:has(#user-contributions.hidden) {\n & > #page-history {\n height: calc(100% - 89px);\n }\n }\n &:has(#page-history.hidden) {\n & > #user-contributions {\n height: calc(100% - 89px);\n }\n }\n\n & > .width-adjust {\n touch-action: none;\n cursor: col-resize;\n\n width: 10px;\n height: 100%;\n\n position: absolute;\n left: -5px;\n top: 0;\n z-index: 3;\n }\n\n & > .height-adjust {\n touch-action: none;\n cursor: row-resize;\n\n height: 10px;\n width: 100%;\n\n position: absolute;\n left: 0;\n top: calc(50% - 5px);\n z-index: 3;\n }\n }\n }\n }\n }\n\n & > .bottom-tool-menu {\n display: none;\n max-width: calc(100vw - 40px);\n min-width: 200px;\n\n position: absolute;\n left: 0;\n bottom: calc(100% + 8px);\n z-index: 3;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 6px;\n\n overflow-y: visible;\n\n animation: bottom-tool-menu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5);\n\n background: rgba(35, 38, 48, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.show {\n display: block;\n }\n\n & > .menu-option {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border-radius: 8px;\n padding: 10px 12px;\n\n font-size: .9em;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.hidden {\n display: none;\n }\n\n &:hover, &:focus-visible {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n\n & > i:first-child {\n opacity: 1;\n }\n\n & > :is(.menu-option-icon, .menu-option-chevron) {\n opacity: 1;\n }\n }\n\n & > i:first-child {\n width: 18px;\n\n font-size: 1.1em;\n text-align: center;\n\n opacity: .8;\n\n transition: opacity .2s ease;\n }\n\n & > span {\n flex: 1;\n }\n\n & > :is(.menu-option-icon, .menu-option-chevron) {\n margin-left: auto;\n\n font-size: .85em;\n\n opacity: .5;\n\n transition: opacity .2s ease;\n }\n\n & > .submenu {\n cursor: default;\n\n display: none;\n min-width: 240px;\n\n position: absolute;\n left: calc(100% + 4px);\n top: -6px;\n z-index: 4;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 6px;\n\n color: var(--body-color);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5);\n\n background: rgba(35, 38, 48, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.show {\n display: block;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n }\n\n & > .bottom-subcontent-title {\n border-bottom: 1px solid;\n\n margin-bottom: 12px;\n padding-bottom: 8px;\n\n font-size: .95em;\n font-weight: 600;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .1);\n }\n\n & > .bottom-subcontent-input-title {\n margin: 10px 0 2px 0;\n\n font-size: .9em;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n\n & > :is(select, input[type=\"text\"]) {\n width: 100%;\n\n font-size: .9em;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n }\n\n & > .bottom-subcontent-button {\n --background: 123, 143, 245;\n\n display: block;\n width: 100%;\n\n margin: 10px 0 2px 0;\n\n font-size: .9em;\n font-weight: 600;\n }\n }\n }\n\n &:is(#revert-menu, #warn-menu) {\n max-height: calc(100vh - 120px);\n\n overflow: hidden auto;\n\n & > .warning-menu {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 280px;\n\n position: relative;\n\n border-radius: 12px;\n padding: 8px;\n\n & > .warning-menu-no-items {\n text-align: center;\n padding: 20px;\n\n font-size: .9em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .7);\n }\n\n & > .favorites-section {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 4px;\n\n & > .favorites-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n\n font-size: .85em;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n\n /* Theme dependent */\n color: rgba(255, 193, 7, .9);\n\n & > .icon {\n font-size: 1.1em;\n }\n }\n\n & > .favorites-container {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n }\n\n & > .favorites-separator {\n height: 1px;\n margin: 8px 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1) 20%,\n rgba(255, 255, 255, .1) 80%,\n transparent\n );\n }\n\n & > .favorites-section:not(:has(.warning-menu-item)) {\n display: none;\n\n & ~ .favorites-separator {\n display: none;\n }\n }\n\n & > .menu-option {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n font-size: .95em;\n\n transition: border-color .2s ease,\n background .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n color: rgba(224, 228, 240, 1);\n background: rgba(40, 43, 52, .4);\n\n &:hover, &.focus-visible {\n transform: translateX(3px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n color: rgba(143, 163, 255, 1);\n background: rgba(102, 126, 234, .12);\n\n & > .icon {\n opacity: 1;\n transform: scale(1.1);\n }\n\n & > .submenu-arrow {\n opacity: 1;\n transform: translateX(2px);\n }\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n background: rgba(102, 126, 234, .15);\n }\n\n & > .icon {\n flex-shrink: 0;\n width: 20px;\n\n text-align: center;\n font-size: 1.1em;\n\n opacity: .85;\n\n transition: opacity .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n\n & > span:not(.icon):not(.submenu-arrow) {\n flex: 1;\n\n font-weight: 500;\n }\n\n & > .submenu-arrow {\n flex-shrink: 0;\n\n font-size: .8em;\n\n opacity: .5;\n\n transition: opacity .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .8);\n }\n }\n }\n }\n }\n\n & > .warning-submenu {\n display: none;\n max-width: calc(100vw - 60px);\n min-width: 420px;\n max-height: calc(100vh - 120px);\n\n position: absolute;\n z-index: 5;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 8px;\n\n overflow-y: auto;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 12px 48px rgba(0, 0, 0, .6),\n 0 0 0 1px rgba(255, 255, 255, .05);\n\n background: rgba(30, 33, 42, .98);\n -webkit-backdrop-filter: blur(25px);\n backdrop-filter: blur(25px);\n\n &.show {\n display: flex;\n flex-direction: column;\n gap: 3px;\n }\n }\n\n .warning-menu-item {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n font-size: .95em;\n\n transition: border-color .2s ease,\n background .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n background: rgba(40, 43, 52, .4);\n\n &:hover, &.focus-visible {\n transform: translateX(3px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n background: rgba(102, 126, 234, .12);\n }\n\n &.favorite-item {\n cursor: grab;\n\n &:active {\n cursor: grabbing;\n }\n\n &.dragging {\n opacity: 0.5;\n transform: scale(0.95);\n }\n }\n\n & > .favorite-star {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border-radius: 4px;\n\n font-size: 1.2em;\n line-height: 1;\n\n transition: transform .2s cubic-bezier(.4, 0, .2, 1),\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .4);\n\n &:hover {\n transform: scale(1.2);\n\n /* Theme dependent */\n color: rgba(255, 193, 7, .8);\n }\n\n &.favorited {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n\n &:hover {\n /* Theme dependent */\n color: rgba(255, 152, 0, 1);\n }\n }\n\n &.spin {\n animation: star-spin 0.5s cubic-bezier(.4, 0, .2, 1);\n }\n }\n\n & > .icon {\n flex-shrink: 0;\n width: 20px;\n\n text-align: center;\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n\n & > .warning-menu-title {\n flex: 1;\n\n font-size: .92em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 228, 240, 1);\n }\n\n & > .fa-circle-question {\n flex-shrink: 0;\n\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .6);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .warning-menu-buttons {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n\n margin-left: 8px;\n }\n\n & > .warning-menu-buttons > .warning-menu-button {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 7px 14px;\n\n font-size: .82em;\n font-weight: 500;\n text-transform: capitalize;\n\n transition: border-color .2s ease,\n background .2s ease,\n color .2s ease,\n transform .15s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, .95);\n background: rgba(102, 126, 234, .1);\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n color: rgba(143, 163, 255, 1);\n background: rgba(102, 126, 234, .22);\n }\n\n &:active {\n transform: translateY(0);\n }\n\n &.warning-menu-no-warn-button {\n /* Theme dependent */\n border-color: rgba(255, 152, 0, .2);\n color: rgba(255, 193, 7, .95);\n background: rgba(255, 152, 0, .1);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 152, 0, .4);\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 152, 0, .22);\n }\n }\n }\n }\n\n & > .levels-menu {\n display: none;\n min-width: 0px;\n\n position: fixed;\n z-index: 5;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 8px;\n\n animation: bottom-tool-submenu-enter .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .6),\n 0 0 0 1px rgba(255, 255, 255, .05);\n\n background: rgba(28, 30, 38, .98);\n -webkit-backdrop-filter: blur(24px);\n backdrop-filter: blur(24px);\n\n &.show {\n display: flex;\n gap: 6px;\n }\n\n & > .levels-menu-item {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n border-radius: 8px;\n padding: 6px 14px;\n\n font-size: .95em;\n font-weight: 600;\n text-align: center;\n white-space: nowrap;\n\n transition: all .2s cubic-bezier(.4, 0, .2, 1);\n\n background: rgba(255, 255, 255, .05);\n border: 1px solid rgba(255, 255, 255, .1);\n\n &:hover {\n transform: translateY(-2px);\n background: rgba(255, 255, 255, .08);\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n\n &:active {\n transform: translateY(0);\n }\n }\n }\n\n .queue-list {\n overflow: hidden auto;\n\n &:is(#user-contributions-content, #page-history-content) {\n & > .queue-item {\n margin: 4px 0;\n }\n }\n\n & > .queue-empty {\n text-align: center;\n padding: 40px 20px;\n font-size: 1em;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n }\n\n & > .historical-bar {\n height: 4px;\n width: 100%;\n\n position: relative;\n\n margin: 8px 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(255, 255, 255, .1) 20%,\n rgba(255, 255, 255, .1) 80%,\n transparent\n );\n\n & > .label {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n font-size: 1em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .8);\n }\n }\n\n & > .queue-item {\n cursor: pointer;\n\n display: flex;\n\n position: relative;\n\n border: 1px solid;\n border-radius: .75rem;\n\n margin: 4px;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .4);\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n background .2s ease;\n\n &:hover, &:focus-within {\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 4px 12px oklch(0 0 0 / 0.3);\n\n background: rgba(40, 43, 52, .6);\n }\n\n &.current {\n /* Theme dependent */\n border-color: linear-gradient(90deg,\n rgba(40, 43, 52, .4),\n rgba(40, 43, 82, .6)\n );\n box-shadow: 0 0 0 1px rgba(60, 63, 122, 1) inset;\n\n background: rgba(40, 43, 82, .6);\n\n & > .item-body {\n & > .item-tags {\n & > .tag {\n /* Theme dependent */\n color: rgba(145, 145, 165, 1);\n background: rgba(60, 63, 122, .4);\n border-color: rgba(60, 63, 122, .6);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .4);\n border-color: rgba(255, 193, 7, .6);\n }\n }\n }\n }\n }\n\n &.mentions-me {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n box-shadow: 0 0 0 1px rgba(255, 193, 7, 1) inset;\n\n background: rgba(40, 43, 52, .6);\n }\n\n & > .item-color {\n --ores-color: rgba(128, 128, 128, 1);\n\n flex-shrink: 0;\n width: 4px;\n\n position: relative;\n\n opacity: .85;\n\n /* Theme dependent */\n background: var(--ores-color);\n }\n\n & > .item-body {\n --ores-color: rgba(128, 128, 128, 1);\n --diff-color: rgba(128, 128, 128, 1);\n\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: .5rem;\n\n min-width: 0;\n\n padding: .75rem 1rem;\n\n & > .header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: .75rem;\n\n & > .page-title {\n display: flex;\n flex: 1;\n gap: 4px;\n\n min-width: 0;\n\n font-size: clamp(.825rem, .85rem + .35vw, .95rem);\n font-weight: 600;\n\n word-wrap: break-word;\n word-break: break-word;\n\n line-height: 1.35;\n\n /* Theme dependent */\n color: rgba(205, 204, 202, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n & > i {\n font-size: .9em;\n\n line-height: inherit;\n }\n }\n\n & > .timestamp {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: 4px;\n\n min-width: 3ex;\n\n padding-top: 1px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n white-space: nowrap;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n & > .meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .75rem;\n\n width: 100%;\n\n & > .user-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n font-weight: 500;\n\n hyphens: auto;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n\n &.blocked {\n font-style: italic;\n text-decoration: line-through;\n\n opacity: .7;\n }\n &.empty-talk {\n /* Theme dependent */\n color: rgba(221, 105, 116, 1);\n }\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n }\n\n & > .chips {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-grow: 1;\n gap: 4px;\n\n & > .ores-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n font-weight: 600;\n\n /* Theme dependent */\n color: var(--ores-color);\n background: color-mix(in srgb, var(--ores-color) 15%, transparent);\n }\n\n & > .diff-chips {\n display: flex;\n align-items: center;\n gap: 4px;\n\n & > .minor-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 5px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n /* Theme dependent */\n color: rgba(175, 175, 175, 1);\n background: rgba(175, 175, 175, .15);\n }\n & > .diff-chip {\n display: flex;\n align-items: center;\n gap: 4px;\n\n padding: 2px .5rem;\n\n border-radius: .375rem;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n /* Theme dependent */\n color: var(--diff-color);\n background: color-mix(in srgb, var(--diff-color) 15%, transparent);\n }\n }\n }\n }\n\n & > .item-comment {\n display: flex;\n align-items: center;\n gap: 4px;\n\n font-size: clamp(.75rem, .7rem + .25vw, .875rem);\n\n overflow: hidden;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n\n & > i {\n flex-shrink: 0;\n\n opacity: .6;\n }\n\n & > .text {\n font-style: italic;\n white-space: nowrap;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n &.none {\n opacity: .6;\n }\n }\n }\n\n & > .item-tags {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: .5rem;\n\n & > .tag {\n display: flex;\n align-items: center;\n gap: 2px;\n\n padding: 1px .5rem;\n\n border: 1px solid;\n border-radius: .375rem;\n\n font-size: .7rem;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(135, 135, 135, 1);\n background: rgba(45, 44, 51, 1);\n border-color: rgba(38, 37, 35, 1);\n\n &.highlighted {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n border-color: rgba(255, 193, 7, .4);\n }\n }\n }\n }\n\n & > .remove-button {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 32px;\n height: 32px;\n\n position: absolute;\n right: 0px;\n bottom: 0px;\n\n border-top-left-radius: 8px;\n\n line-height: 1;\n\n transition: color .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, .7);\n background: rgba(255, 255, 255, 0);\n\n &:hover {\n /* Theme dependent */\n color: rgba(255, 70, 0, 1);\n background: rgba(255, 70, 0, .15);\n }\n }\n }\n }\n\n .tooltip {\n min-width: 0;\n max-height: 80vh;\n\n position: fixed;\n left: 0;\n top: 0;\n z-index: calc(var(--max-z-index) - 3);\n\n border: 2px solid;\n\n border-radius: 8px;\n padding: 4px 6px;\n\n overflow-wrap: break-word;\n overflow: hidden auto;\n\n font-size: .95em;\n line-height: 1.45;\n word-wrap: break-word;\n white-space: normal;\n\n animation: tooltip-enter .1s ease-out forwards;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n box-shadow: 0 10px 30px rgba(6, 12, 24, .6),\n inset 0 1px 0 rgba(255, 255, 255, .02);\n\n color: rgba(234, 240, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .03),\n rgba(255, 255, 255, .01)\n );\n -webkit-backdrop-filter: blur(14px) brightness(.7);\n backdrop-filter: blur(14px) brightness(.7);\n\n &:not(.buttons) {\n pointer-events: none;\n\n max-width: 460px;\n }\n\n &.buttons {\n display: flex;\n flex-direction: row;\n gap: 8px;\n\n z-index: calc(var(--max-z-index) - 2);\n\n white-space: nowrap;\n\n & > .button {\n cursor: pointer;\n\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 4px 8px;\n\n font-size: .95em;\n font-weight: 500;\n letter-spacing: .3px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(255, 255, 255, .05);\n\n color: rgba(240, 245, 255, .92);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .08),\n rgba(255, 255, 255, .02)\n );\n\n &:hover {\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .4),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .14),\n rgba(255, 255, 255, .06)\n );\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n box-shadow: 0 1px 4px rgba(0, 0, 0, .3),\n inset 0 1px 2px rgba(0, 0, 0, .2);\n }\n }\n }\n\n & > .tooltip-title {\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-bottom: 1px solid;\n\n border-radius: 6px;\n margin-bottom: 12px;\n padding: 8px 10px;\n\n font-size: 1.04em;\n font-weight: 700;\n letter-spacing: .25px;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .05);\n\n color: rgba(255, 255, 255, .92);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .02),\n rgba(0, 0, 0, .04)\n );\n -webkit-backdrop-filter: blur(6px);\n backdrop-filter: blur(6px);\n }\n\n & > .tooltip-item {\n display: flex;\n flex-direction: column;\n\n position: relative;\n\n border: 1px solid;\n\n border-radius: 10px;\n margin: 10px 0;\n padding: 10px 12px;\n\n overflow: hidden;\n overflow-wrap: anywhere;\n\n word-wrap: break-word;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .04);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 255, .075),\n rgba(0, 0, 0, .25)\n );\n\n &:is(.user-warnings, .user-blocks) {\n & > .tooltip-item-level {\n display: block;\n width: 100%;\n\n border-bottom: 1px solid;\n\n border-radius: 6px 6px 0 0;\n padding: 6px 10px;\n\n font-size: .95em;\n font-weight: 700;\n letter-spacing: .3px;\n\n /* Theme dependent */\n border-bottom: 1px solid rgba(255, 255, 120, .25);\n\n color: rgba(255, 255, 120, .95);\n\n background: linear-gradient(135deg,\n rgba(255, 255, 120 .22),\n rgba(255, 255, 120, .08)\n );\n }\n\n & > .tooltip-item-details {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n\n & > :is(.tooltip-item-user, .tooltip-item-time) {\n font-size: .82em;\n font-weight: 400;\n\n opacity: .8;\n\n &.tooltip-item-user {\n /* Theme dependent */\n color: rgba(150, 210, 255, .9);\n }\n &.tooltip-item-time {\n /* Theme dependent */\n color: rgba(220, 225, 235, .9);\n\n & > span:not(:first-of-type) {\n margin-left: 1ex;\n }\n }\n }\n }\n }\n\n & > .tooltip-more {\n border-top: 1px solid;\n\n border-radius: 8px;\n margin-top: 14px;\n padding-top: 10px;\n\n font-size: .92em;\n font-style: italic;\n text-align: center;\n\n opacity: .95;\n\n /* Theme dependent */\n border-top-color: rgba(255, 255, 255, .04);\n\n color: rgba(240, 240, 255, .75);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .015),\n rgba(0, 0, 0, .03)\n );\n -webkit-backdrop-filter: blur(4px);\n backdrop-filter: blur(4px);\n }\n }\n }\n\n .confirmation-modal-overlay {\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: calc(var(--max-z-index) - 6);\n\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n animation: fade-in .2s ease-out;\n\n &.closing {\n animation: fade-out .2s ease-out forwards;\n }\n\n & > .confirmation-modal {\n max-width: 500px;\n min-width: 400px;\n\n border: 1px solid;\n\n border-radius: 16px;\n\n word-wrap: break-word;\n\n animation: scale-in .2s ease-out;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 12px 48px rgba(0, 0, 0, .7),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: rgba(41, 47, 60, .98);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.closing {\n animation: scale-out .2s ease-out forwards;\n }\n\n & > .confirmation-modal-header {\n border-bottom: 1px solid;\n\n padding: 20px 24px;\n\n /* Theme dependent */\n border-bottom-color: rgba(54, 62, 81, 1);\n\n & > .confirmation-modal-title {\n font-size: 1.2em;\n font-weight: 700;\n }\n }\n\n & > .confirmation-modal-body {\n max-height: 70vh;\n\n padding: 24px;\n\n line-height: 1.5;\n\n overflow: hidden auto;\n\n /* Theme dependent */\n color: rgba(187, 187, 187, 1);\n\n & > .confirmation-modal-username {\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(91, 154, 255, 1);\n }\n\n & > .confirmation-modal-input {\n width: 100%;\n\n border: 1px solid;\n border-radius: 4px;\n\n margin-top: 10px;\n padding: 8px;\n\n /* Theme dependent */\n color: white;\n border-color: rgba(255, 255, 255, .2);\n background: rgba(0, 0, 0, .3);\n }\n }\n\n & > .confirmation-modal-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n\n border-top: 1px solid;\n\n padding: 16px 24px;\n\n /* Theme dependent */\n border-top-color: rgba(54, 62, 81, 1);\n\n & > .confirmation-modal-footer-right {\n display: flex;\n gap: 12px;\n }\n\n &.confirmation-modal-footer-vertical {\n flex-direction: column;\n align-items: stretch;\n\n & > .confirmation-modal-button {\n width: 100%;\n }\n }\n }\n\n .confirmation-modal-button {\n font-size: .95em;\n font-weight: 500;\n }\n }\n }\n\n .notification-panel {\n pointer-events: none;\n\n display: flex;\n flex-direction: column;\n width: 480px;\n max-height: 600px;\n\n position: absolute;\n left: 15px;\n top: 55px;\n z-index: calc(var(--max-z-index) - 9);\n\n border: 1px solid;\n border-radius: 18px;\n\n overflow: hidden;\n\n opacity: 0;\n\n transform: translateY(-20px) scale(.95);\n\n transition: opacity .3s ease,\n transform .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 20px 60px rgba(0, 0, 0, .8),\n 0 0 0 1px rgba(255, 255, 255, .08),\n inset 0 1px 0 rgba(255, 255, 255, .03);\n\n background: rgba(25, 27, 36, .96);\n -webkit-backdrop-filter: blur(25px) brightness(0.95);\n backdrop-filter: blur(25px) brightness(0.95);\n\n a {\n /* Theme dependent */\n color: rgba(120, 170, 255, 1);\n\n transition: color .2s ease;\n\n &:hover {\n /* Theme dependent */\n color: rgba(160, 195, 255, 1);\n }\n\n &:visited {\n /* Theme dependent */\n color: rgba(150, 185, 255, 1);\n }\n }\n\n &.show {\n pointer-events: auto;\n\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n\n & > .notification-header {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n border-bottom: 1px solid;\n\n padding: 18px 22px;\n\n font-size: 1.12em;\n font-weight: 700;\n letter-spacing: 0.3px;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .08);\n\n color: rgba(245, 245, 255, 1);\n\n background: linear-gradient(135deg,\n rgba(120, 145, 255, .12),\n rgba(140, 100, 200, .08)\n );\n\n & > .mark-all-read {\n cursor: pointer;\n\n font-size: 0.78em;\n font-weight: 500;\n letter-spacing: 0.2px;\n\n padding: 6px 12px;\n border-radius: 6px;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(120, 170, 255, 1);\n background: rgba(120, 170, 255, .08);\n\n &:hover {\n /* Theme dependent */\n background: rgba(120, 170, 255, .15);\n color: rgba(160, 200, 255, 1);\n }\n\n &:active {\n opacity: .85;\n }\n }\n }\n\n & > .notification-list {\n max-height: 520px;\n\n overflow: hidden auto;\n\n padding: 8px;\n\n & > .notifications-empty {\n padding: 40px 20px;\n\n text-align: center;\n\n font-size: 0.95em;\n\n /* Theme dependent */\n color: rgba(120, 125, 145, 1);\n\n & strong {\n /* Theme dependent */\n color: rgba(150, 155, 175, 1);\n }\n }\n\n & > .notification {\n cursor: pointer;\n\n display: flex;\n align-items: flex-start;\n gap: 14px;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 14px 18px;\n margin-bottom: 8px;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n\n background: linear-gradient(135deg,\n rgba(50, 55, 75, .4),\n rgba(40, 45, 65, .3)\n );\n\n &:hover {\n opacity: 1;\n\n /* Theme dependent */\n border-color: rgba(120, 170, 255, .3);\n box-shadow: 0 8px 24px rgba(120, 170, 255, .15),\n inset 0 1px 0 rgba(255, 255, 255, .04);\n\n background: linear-gradient(135deg,\n rgba(80, 100, 160, .15),\n rgba(70, 85, 145, .1)\n );\n\n transform: translateY(-2px);\n }\n\n &.unread {\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(120, 170, 255, .5);\n box-shadow: 0 0 20px rgba(120, 170, 255, .2),\n inset 0 1px 0 rgba(255, 255, 255, .06);\n\n background: linear-gradient(135deg,\n rgba(120, 170, 255, .1),\n rgba(100, 145, 255, .05)\n );\n }\n\n &.read {\n opacity: .72;\n\n border-color: rgba(255, 255, 255, .04);\n }\n\n & > .notification-icon {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n\n border-radius: 10px;\n\n overflow: hidden;\n\n background: rgba(60, 75, 120, .5);\n\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n\n & > .notification-content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 5px;\n\n & > .notification-header {\n margin: 0;\n\n font-size: .95rem;\n font-weight: 600;\n letter-spacing: 0.2px;\n\n /* Theme dependent */\n color: rgba(235, 240, 255, 1);\n }\n\n & > .notification-body {\n font-size: .82rem;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 180, 205, 1);\n }\n\n & > .notification-links {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n\n margin-top: 6px;\n\n & > a {\n border: none;\n\n padding: 4px 8px;\n border-radius: 5px;\n\n font-size: .8rem;\n font-weight: 500;\n text-decoration: none;\n\n background: rgba(120, 170, 255, .12);\n opacity: 1;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n color: rgba(140, 185, 255, 1);\n\n &:hover {\n opacity: 1;\n\n background: rgba(120, 170, 255, .22);\n\n /* Theme dependent */\n color: rgba(180, 210, 255, 1);\n }\n\n &:active {\n opacity: .85;\n\n transform: scale(0.98);\n }\n }\n }\n }\n\n & > .notification-right {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n height: 100%;\n gap: 10px;\n\n & > .notification-unread-indicator {\n cursor: pointer;\n\n position: relative;\n\n width: 12px;\n height: 12px;\n\n border-radius: 50%;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n background: rgba(120, 170, 255, 1);\n box-shadow: 0 0 8px rgba(120, 170, 255, .5);\n\n &:hover, &:focus {\n transform: scale(1.35);\n\n /* Theme dependent */\n box-shadow: 0 0 16px rgba(120, 170, 255, .8);\n }\n\n &::after {\n content: '';\n\n cursor: pointer;\n\n position: absolute;\n\n top: -5px;\n left: -5px;\n bottom: -5px;\n right: -5px;\n }\n }\n\n & > .notification-timestamp {\n font-size: .72rem;\n font-weight: 500;\n\n opacity: .8;\n\n white-space: nowrap;\n\n /* Theme dependent */\n color: rgba(140, 150, 175, 1);\n }\n }\n }\n }\n }\n\n .icon-count {\n --color: 255, 255, 255;\n --background: 255, 255, 255;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n\n position: absolute;\n right: -11px;\n top: -11px;\n z-index: 3;\n\n border: 1px solid;\n\n border-radius: 50%;\n padding: 0 8px;\n\n font-family: sans-serif;\n font-size: 12px;\n font-weight: 600;\n line-height: 1;\n\n transition: transform .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(var(--background), .3);\n box-shadow: 0 8px 24px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(var(--background), .15);\n\n color: rgba(--color, 1);\n text-shadow: 0 1px 0 rgba(0, 0, 0, .35);\n\n background: linear-gradient(135deg,\n rgba(var(--background), .7),\n rgba(var(--background), .5)\n );\n -webkit-backdrop-filter: blur(6px) brightness(0%);\n backdrop-filter: blur(6px) brightness(0%);\n\n &.red {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 255, 60, 60;\n }\n &.green {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 60, 205, 80;\n }\n &.blue {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 60, 120, 255;\n }\n &.yellow {\n /* Theme dependent */\n --color: 30, 30, 30;\n --background: 255, 215, 60;\n }\n &.orange {\n /* Theme dependent */\n --color: 30, 30, 30;\n --background: 255, 165, 60;\n }\n &:is(.gray, .grey) {\n /* Theme dependent */\n --color: 255, 255, 255;\n --background: 150, 150, 150;\n }\n\n &.hidden {\n pointer-events: none;\n\n opacity: 0;\n\n transform: scale(0);\n }\n }\n\n .toast-alert {\n display: flex;\n align-items: center;\n gap: 14px;\n max-width: 500px;\n min-width: 320px;\n\n position: fixed;\n right: 20px;\n bottom: 20px;\n z-index: calc(var(--max-z-index) - 4);\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 14px 20px;\n\n opacity: 0;\n\n transform: translateX(100%) scale(.8);\n\n animation: toast-alert-enter .5s cubic-bezier(.68, -.55, .265, 1.55);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 12px 40px rgba(0, 0, 0, .2),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n color: rgba(255, 255, 255, 1);\n\n -webkit-backdrop-filter: blur(25px) saturate(180%);\n backdrop-filter: blur(25px) saturate(180%);\n\n &.success {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(76, 175, 80, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .25),\n rgba(56, 142, 60, .25)\n );\n }\n &.warning {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(255, 152, 0, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(255, 152, 0, .25),\n rgba(245, 124, 0, .25)\n );\n }\n &.error {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(244, 67, 54, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(244, 67, 54, .25),\n rgba(211, 47, 47, .25)\n );\n }\n &.dev {\n /* Theme dependent */\n box-shadow: 0 12px 40px rgba(156, 39, 176, .3),\n 0 0 0 1px rgba(255, 255, 255, .1);\n\n background: linear-gradient(135deg,\n rgba(156, 39, 176, .25),\n rgba(123, 31, 162, .25)\n );\n }\n\n &.show {\n opacity: 1;\n\n transform: translateX(0) scale(1);\n }\n\n &.hidden {\n animation: toast-alert-leave .4s cubic-bezier(.6, -.28, .735, .045) forwards;\n }\n\n & > .toast-icon {\n flex-shrink: 0;\n\n font-size: 1.8em;\n\n /* Theme dependent */\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .3));\n }\n\n & > .toast-content {\n flex: 1;\n\n & > .toast-title {\n margin-bottom: 4px;\n\n font-size: 1.05em;\n font-weight: 700;\n letter-spacing: .3px;\n }\n\n & > .toast-message {\n font-size: .9em;\n line-height: 1.4;\n\n opacity: .95;\n }\n }\n\n & > .toast-close {\n cursor: pointer;\n\n flex-shrink: 0;\n\n border-radius: 6px;\n padding: 4px;\n\n font-size: 1.3em;\n\n background: transparent;\n opacity: .8;\n\n transition: opacity .2s ease,\n transform .2s ease,\n background .2s ease;\n\n &:hover {\n opacity: 1;\n\n transform: scale(1.1);\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .15);\n }\n }\n }\n\n .minor-indicator {\n border: 1px solid;\n\n border-radius: 4px;\n margin-right: 4px;\n padding: 0 4px;\n\n font-size: .9em;\n font-weight: 700;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n color: rgba(153, 153, 153, 1);\n\n background: rgba(60, 64, 76, .9);\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n\n .menu-divider {\n height: 1px;\n\n margin: 6px 8px;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n }\n\n .profanity {\n display: flex;\n flex-direction: column;\n gap: 16px;\n\n margin: 20px;\n padding: 20px;\n\n border-radius: 12px;\n border: 1px solid;\n\n /* Theme dependent */\n background: rgba(35, 38, 48, .8);\n border-color: rgba(255, 255, 255, .12);\n box-shadow: 0 4px 16px rgba(0, 0, 0, .3);\n\n & > .profanity-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n\n padding-bottom: 16px;\n border-bottom: 1px solid;\n\n /* Theme dependent */\n border-bottom-color: rgba(255, 255, 255, .1);\n\n & > .profanity-score {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n & > .score-label {\n font-size: .85em;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: .5px;\n\n /* Theme dependent */\n color: rgba(180, 180, 180, 1);\n }\n\n & > .score-value {\n font-size: 2em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(255, 200, 100, 1);\n }\n }\n\n & > .profanity-risk {\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 10px 16px;\n\n font-size: .95em;\n font-weight: 600;\n\n /* Theme dependent */\n background: rgba(60, 64, 76, .6);\n\n &.risk-high {\n /* Theme dependent */\n color: rgba(255, 100, 100, 1);\n background: rgba(211, 47, 47, .2);\n border: 1px solid rgba(211, 47, 47, .4);\n }\n\n &.risk-medium {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n background: rgba(255, 193, 7, .15);\n border: 1px solid rgba(255, 193, 7, .3);\n }\n\n &.risk-low {\n /* Theme dependent */\n color: rgba(100, 200, 255, 1);\n background: rgba(66, 165, 245, .15);\n border: 1px solid rgba(66, 165, 245, .3);\n }\n }\n }\n\n & > .profanity-matches-header {\n display: flex;\n align-items: center;\n gap: 8px;\n\n font-size: 1.05em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n }\n\n & > .profanity-matches-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n & > .profanity-match {\n display: flex;\n flex-direction: column;\n gap: 10px;\n\n border-radius: 8px;\n padding: 12px 14px;\n border-left: 3px solid;\n\n transition: background .2s ease,\n border-color .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n background: rgba(45, 50, 62, .7);\n border-left-color: rgba(255, 150, 150, .5);\n\n &:hover {\n transform: translateX(4px);\n\n /* Theme dependent */\n background: rgba(50, 56, 70, .85);\n border-left-color: rgba(255, 150, 150, .8);\n }\n\n & > .match-header {\n display: flex;\n align-items: center;\n gap: 8px;\n\n font-size: .95em;\n\n & > .match-text {\n font-family: 'Courier New', monospace;\n font-weight: 600;\n\n border-radius: 4px;\n padding: 4px 8px;\n\n /* Theme dependent */\n color: rgba(255, 180, 180, 1);\n background: rgba(211, 47, 47, .2);\n }\n\n & > .match-arrow {\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .match-name {\n font-family: 'Courier New', monospace;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n }\n\n & > .match-details {\n display: flex;\n gap: 16px;\n\n & > .match-stat {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n & > .stat-label {\n font-size: .75em;\n text-transform: uppercase;\n letter-spacing: .5px;\n\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .stat-value {\n font-size: .9em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n\n &.severity-critical {\n /* Theme dependent */\n color: rgba(255, 100, 100, 1);\n }\n &.severity-high {\n /* Theme dependent */\n color: rgba(255, 150, 100, 1);\n }\n\n &.severity-medium {\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n &.severity-low {\n /* Theme dependent */\n color: rgba(100, 200, 255, 1);\n }\n }\n }\n }\n\n & > .match-note {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n\n margin-top: 6px;\n padding: 10px 12px;\n border-radius: 6px;\n\n font-size: .85em;\n line-height: 1.5;\n\n /* Theme dependent */\n background: rgba(30, 33, 43, .6);\n border: 1px solid rgba(100, 150, 255, .2);\n\n & > .fa {\n margin-top: 2px;\n font-size: 1.1em;\n\n /* Theme dependent */\n color: rgba(100, 150, 255, .8);\n }\n\n & > .note-text {\n flex: 1;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(180, 190, 210, 1);\n }\n }\n }\n }\n\n & > .profanity-no-matches {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n\n padding: 20px;\n\n font-size: 1em;\n\n /* Theme dependent */\n color: rgba(100, 200, 100, 1);\n }\n }\n\n & > #settings-container {\n z-index: calc(var(--max-z-index) - 7);\n\n pointer-events: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n\n opacity: 0;\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n background: rgba(0, 0, 0, .6);\n -webkit-backdrop-filter: blur(12px);\n backdrop-filter: blur(12px);\n\n &.show {\n pointer-events: auto;\n\n opacity: 1;\n\n & > .settings {\n transform: scale(1);\n }\n }\n\n & > .settings {\n display: flex;\n max-width: 1100px;\n width: 90vw;\n\n border: 1px solid;\n\n border-radius: 20px;\n\n overflow: hidden;\n\n transform: scale(.75);\n\n transition: transform .1s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(30, 33, 42, .95);\n -webkit-backdrop-filter: blur(30px);\n backdrop-filter: blur(30px);\n\n & > div {\n height: 80vh;\n\n &.settings-left {\n width: 250px;\n\n border-right: 1px solid;\n\n padding: 20px 0;\n\n overflow-y: auto;\n\n /* Theme dependent */\n border-right-color: rgba(255, 255, 255, .1);\n\n background: linear-gradient(180deg,\n rgba(255, 255, 255, .02),\n rgba(255, 255, 255, .05)\n );\n\n & > .settings-category {\n &:not(:last-child) {\n margin-bottom: 20px;\n }\n\n & > .settings-category-header {\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n margin-bottom: 4px;\n padding: 12px 20px;\n\n font-size: .7em;\n font-weight: 800;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n }\n\n & > .settings-left-menu-compact {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n\n padding: 0 12px;\n\n & > .settings-left-menu-item {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n border-radius: 10px;\n padding: 12px;\n\n font-size: 1.2em;\n font-weight: 500;\n\n transition: background .2s ease,\n color .2s ease,\n box-shadow .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n\n &:first-child {\n margin-left: 12px;\n }\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n }\n\n &.selected {\n font-weight: 600;\n\n /* Theme dependent */\n box-shadow: 0 0 20px rgba(102, 126, 234, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n }\n }\n\n & > .settings-left-menu-item {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 12px;\n\n border-radius: 10px;\n margin: 2px 12px;\n padding: 12px 20px;\n\n font-size: .95em;\n font-weight: 500;\n\n transition: background .2s ease,\n color .2s ease,\n box-shadow .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n\n &:hover {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .15);\n }\n\n &.selected {\n font-weight: 600;\n\n /* Theme dependent */\n box-shadow: 0 0 20px rgba(102, 126, 234, .2);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n\n & > span > i {\n height: 1em;\n aspect-ratio: 1 / 1;\n\n margin-right: 12px;\n\n text-align: center;\n }\n }\n }\n }\n\n &.settings-right {\n flex: 1;\n\n padding: 20px 30px;\n\n overflow-y: auto;\n\n /* Theme dependent */\n background: rgba(20, 22, 28, .5);\n\n & > .hidden {\n display: none;\n }\n\n a {\n color: rgba(143, 163, 255, 1);\n\n &:hover {\n color: rgba(176, 192, 255, 1);\n }\n }\n\n pre, code {\n border-radius: 4px;\n padding: 2px 4px;\n\n font-size: .95em;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .15);\n }\n\n .settings-compact-grid {\n & > .compact {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n & > .numeric-input-container {\n & > .numeric-input {\n width: calc(100% - 70px);\n }\n }\n\n & > select {\n width: 100%;\n }\n }\n }\n\n .settings-section, .settings-toggles-section {\n display: block;\n\n border: 1px solid;\n\n border-radius: 16px;\n padding: 25px;\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3);\n\n background: rgba(35, 38, 48, .8);\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n }\n\n .settings-section-title {\n margin-bottom: 5px;\n\n font-size: 1em;\n font-weight: 700;\n letter-spacing: -.5px;\n\n &.collapse-title {\n margin-bottom: 0;\n }\n }\n\n .settings-section-desc {\n margin-bottom: 0;\n\n font-size: .85em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n .pad-list {\n margin: 8px 0;\n padding-left: 20px;\n }\n\n &:not(:last-child) {\n margin-bottom: 30px;\n }\n\n &.compact {\n margin-bottom: 0;\n padding: 18px;\n\n & > .settings-section-title {\n font-size: 1.05em;\n\n &.collapse-title {\n margin-bottom: 15px;\n }\n }\n\n & > .settings-section-desc {\n margin-bottom: 12px;\n\n font-size: .85em;\n }\n }\n\n &.inline {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n padding: 14px 16px;\n\n /* Theme dependent */\n background: rgba(35, 38, 48, .6);\n\n &:not(:last-child) {\n margin-bottom: 12px;\n }\n\n & > .settings-section-content {\n flex: 1;\n }\n }\n\n &.collapsed {\n & > .collapse-title::after {\n transform: rotate(-180deg);\n }\n }\n\n & > .collapse-title {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n &::after{\n content: \"\\f077\";\n\n float: right;\n\n font-family: \"Font Awesome 6 Free\";\n font-weight: 900;\n\n transition: transform .2s ease;\n }\n }\n\n & > .collapsible-content {\n padding: initial;\n\n overflow: hidden;\n\n transition: padding .2s ease;\n\n &.collapsed {\n padding: 0;\n }\n }\n\n & > .settings-section-title {\n margin-bottom: 15px;\n\n font-size: 1.4em;\n font-weight: 700;\n letter-spacing: -.5px;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.collapse-title {\n margin-bottom: 8px;\n }\n }\n\n & > .settings-section-header {\n display: flex;\n align-items: center;\n gap: 10px;\n\n margin-bottom: 15px;\n\n font-size: 1.2em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.collapse-title {\n margin-bottom: 0;\n }\n\n & > .settings-section-header-icon {\n font-size: 1.3em;\n\n /* Theme dependent */\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .2));\n }\n }\n\n & > .settings-section-desc {\n margin-bottom: 20px;\n\n font-size: .95em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n .checkbox-container {\n display: flex;\n flex-wrap: wrap;\n\n & > div {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 200px;\n\n margin-bottom: 8px;\n\n &:hover {\n & > .checkbox-box {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .checkbox-box {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: block;\n\n position: relative;\n\n border-radius: 5px;\n\n font-size: .95em;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(213, 213, 213, 1);\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n position: absolute;\n width: 0;\n height: 0;\n\n border-radius: 5px;\n\n opacity: 0;\n\n &:checked ~ .checkmark {\n /* Theme dependent */\n background: linear-gradient(45deg,\n rgba(100, 61, 219, 1),\n rgba(217, 21, 239, 1)\n );\n\n &::after {\n opacity: 1;\n }\n }\n }\n\n & > .checkmark {\n width: 1.3em;\n height: 1.3em;\n\n position: relative;\n left: 0;\n top: 0;\n\n border-radius: 5px;\n\n transition: background .2s ease;\n\n /* Theme dependent */\n background: rgba(204, 204, 204, 1);\n\n &::after {\n content: \"\";\n\n width: .25em;\n height: .5em;\n\n position: absolute;\n left: .45em;\n top: .25em;\n\n border-width: 0 .15em .15em 0;\n border-style: solid;\n\n opacity: 0;\n\n transform: rotate(45deg);\n\n transition: opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, 1);\n }\n }\n }\n }\n }\n\n .numeric-input-container {\n display: flex;\n\n & > .numeric-input-button {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 35px;\n height: 35px;\n\n border: 1px solid;\n\n border-radius: 8px;\n\n font-size: 1.3em;\n\n transition: background .2s ease,\n border-color .2s ease,\n color .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n color: rgba(192, 192, 192, 1);\n\n background: rgba(50, 54, 66, .8);\n\n &:hover {\n transform: scale(1.05);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n\n color: rgba(143, 163, 255, 1);\n\n background: rgba(102, 126, 234, .2);\n }\n }\n\n & > .numeric-input {\n width: 100px;\n\n border-radius: 8px;\n margin: 0 5px;\n padding: 6px 12px;\n\n font-size: 1.1em;\n }\n }\n\n .volume-control {\n display: block;\n\n border: 1px solid;\n\n border-radius: 12px;\n margin: 20px 0;\n padding: 20px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n & > .volume-control-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 20px;\n\n margin-bottom: 16px;\n\n & > .volume-control-info {\n flex: 1;\n\n & > .volume-control-title {\n margin-bottom: 6px;\n\n font-size: 1.05em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .volume-control-desc {\n font-size: .9em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n & > .volume-control-preview {\n --background: 123, 143, 245;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: 8px;\n padding: 10px 18px;\n\n font-size: .9em;\n font-weight: 500;\n }\n }\n\n & > .volume-control-slider-container {\n display: flex;\n align-items: center;\n gap: 16px;\n\n & > .volume-control-slider {\n flex: 1;\n height: 6px;\n\n outline: none;\n\n border-radius: 3px;\n\n -webkit-appearance: none;\n appearance: none;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n\n &::-webkit-slider-thumb {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n\n border-radius: 50%;\n\n -webkit-appearance: none;\n appearance: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 6px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 10px rgba(102, 126, 234, .5);\n }\n }\n\n &::-moz-range-thumb {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n\n border: none;\n\n border-radius: 50%;\n\n -webkit-appearance: none;\n appearance: none;\n\n transition: transform .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 6px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 10px rgba(102, 126, 234, .5);\n }\n }\n }\n\n & > .volume-control-input {\n width: 70px;\n\n border-radius: 8px;\n padding: 8px 12px;\n\n font-size: .95em;\n text-align: center;\n }\n }\n }\n\n .settings-toggle {\n cursor: pointer;\n\n flex-shrink: 0;\n width: 60px;\n height: 32px;\n\n position: relative;\n\n &:hover {\n & > .toggle-switch {\n transform: scale(1.02);\n }\n }\n\n &.active {\n & > .toggle-switch {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5),\n inset 0 1px 2px rgba(255, 255, 255, .2);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n & > .toggle-slider {\n left: 30px;\n\n /* Theme dependent */\n box-shadow: 0 4px 10px rgba(0, 0, 0, .3),\n 0 2px 4px rgba(0, 0, 0, .2);\n }\n }\n }\n\n & > .toggle-switch {\n width: 100%;\n height: 100%;\n\n position: relative;\n\n border: 2px solid;\n\n border-radius: 16px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n box-shadow: inset 0 2px 6px rgba(0, 0, 0, .4);\n\n background: rgba(60, 63, 75, .8);\n\n & > .toggle-slider {\n width: 24px;\n height: 24px;\n\n position: absolute;\n left: 2px;\n top: 2px;\n\n border-radius: 50%;\n\n transition: left .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 3px 8px rgba(0, 0, 0, .25),\n 0 1px 2px rgba(0, 0, 0, .15);\n\n background: rgba(255, 255, 255, 1);\n }\n }\n }\n\n .settings-radio-group {\n display: flex;\n flex-direction: row;\n gap: 12px;\n\n border-radius: 100vh;\n padding: 8px;\n\n /* Theme dependent */\n background: rgba(40, 43, 52, .7);\n\n & > .settings-radio-option {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n flex: 1;\n\n text-align: center;\n\n border-radius: 100vh;\n padding: 10px 16px;\n\n font-size: .9em;\n font-weight: 600;\n\n transition: background .2s ease,\n color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &:hover {\n /* Theme dependent */\n background: rgba(102, 126, 234, .2);\n color: rgba(143, 163, 255, 1);\n }\n\n &.selected {\n /* Theme dependent */\n background: rgba(102, 126, 234, .3);\n color: rgba(224, 224, 224, 1);\n }\n }\n }\n\n .settings-slider {\n display: flex;\n flex-direction: column;\n gap: 14px;\n\n border-radius: 14px;\n padding: 16px 20px;\n\n /* Theme dependent */\n background: rgba(40, 43, 52, .7);\n\n & > .settings-slider-labels {\n display: flex;\n justify-content: space-between;\n gap: 12px;\n }\n\n & > .settings-slider-labels > .settings-slider-label-left,\n & > .settings-slider-labels > .settings-slider-label-right {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n font-size: .9em;\n font-weight: 600;\n\n transition: color .2s ease;\n\n /* Theme dependent */\n color: rgba(192, 192, 192, 1);\n\n &.active {\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .percent {\n font-size: .85em;\n font-weight: 500;\n font-variant-numeric: tabular-nums;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .9);\n }\n }\n\n & > .settings-slider-labels > .settings-slider-label-right {\n text-align: right;\n }\n\n & > .settings-slider-track {\n cursor: pointer;\n\n height: 8px;\n\n position: relative;\n\n border-radius: 100vh;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .08);\n\n &::before {\n content: '';\n\n width: var(--fill, 50%);\n height: 100%;\n\n position: absolute;\n left: 0;\n top: 0;\n\n border-radius: 100vh;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(102, 126, 234, .6),\n rgba(118, 75, 162, .6)\n );\n }\n\n & > .settings-slider-thumb {\n cursor: grab;\n\n width: 22px;\n height: 22px;\n\n position: absolute;\n top: 50%;\n\n border: 2px solid;\n\n border-radius: 50%;\n\n transform: translate(-50%, -50%);\n\n transition: transform .15s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .4),\n 0 0 12px rgba(102, 126, 234, .3);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n &:hover {\n transform: translate(-50%, -50%) scale(1.15);\n\n /* Theme dependent */\n box-shadow: 0 3px 12px rgba(0, 0, 0, .5),\n 0 0 20px rgba(102, 126, 234, .5);\n }\n\n &:active, &.dragging {\n cursor: grabbing;\n\n transform: translate(-50%, -50%) scale(1.2);\n\n /* Theme dependent */\n box-shadow: 0 4px 16px rgba(0, 0, 0, .5),\n 0 0 24px rgba(102, 126, 234, .6);\n }\n }\n }\n }\n\n .palette-selector {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n\n margin-top: 20px;\n\n & > .palette-option {\n cursor: pointer;\n\n border: 2px solid;\n\n border-radius: 12px;\n padding: 12px;\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 20px rgba(20, 20, 30, .4);\n }\n\n &.selected {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, 1);\n box-shadow: 0 0 20px rgba(102, 126, 234, .4);\n }\n\n & > .palette-name {\n pointer-events: none;\n\n font-size: .9em;\n font-weight: 600;\n text-align: center;\n }\n\n & > .palette-preview {\n pointer-events: none;\n\n display: flex;\n gap: 4px;\n height: 40px;\n\n border-radius: 8px;\n margin-bottom: 12px;\n\n overflow: hidden;\n\n & > canvas {\n flex: 1;\n width: 100%;\n height: 100%;\n }\n }\n }\n }\n\n .tracklist {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n\n & > .track {\n position: relative;\n\n border-radius: 8px;\n\n overflow: hidden;\n\n & > .thumbnail {\n display: block;\n width: 100%;\n aspect-ratio: 1 / 1;\n\n overflow: hidden;\n\n & > img {\n display: block;\n width: 100%;\n height: 100%;\n\n overflow: hidden;\n }\n }\n\n & > .info {\n display: flex;\n flex-direction: column;\n gap: 3px;\n\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n\n padding: 10px 12px;\n\n /* Theme dependent */\n background: linear-gradient(180deg,\n rgba(0, 0, 0, 0),\n rgba(0, 0, 0, .35),\n rgba(0, 0, 0, .65)\n );\n\n & > .title {\n font-size: .95em;\n font-weight: 600;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n white-space: nowrap;\n\n /* Theme dependent */\n text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n\n color: rgba(255, 255, 255, 1);\n }\n\n & > :is(.artist, .length) {\n font-size: .8em;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .9);\n }\n }\n\n & > .preview-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n width: 40px;\n height: 40px;\n\n position: absolute;\n right: 8px;\n top: 8px;\n\n border-radius: 50%;\n padding: 0;\n }\n }\n }\n\n .control-container {\n border: 1px solid;\n\n border-radius: 12px;\n margin-bottom: 15px;\n padding: 18px 22px;\n\n font-size: .9em;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n & > .control-container-title {\n margin-bottom: 12px;\n\n font-size: 1.1em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n &.margin-top {\n margin-top: 10px;\n }\n }\n\n & > .control-keys {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n\n & > div {\n display: flex;\n align-items: center;\n width: max-content;\n\n border: 1px solid;\n\n border-radius: 8px;\n padding: 8px 14px;\n\n font-weight: 500;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .3);\n\n color: rgba(192, 192, 192, 1);\n\n background: rgba(50, 54, 66, .9);\n\n &:not(.key-select):hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 12px rgba(20, 20, 30, .4);\n\n background: rgba(60, 64, 78, .95);\n }\n\n &.key-select {\n border: 2px dashed;\n\n font-style: italic;\n\n /* Theme dependent */\n border-color: rgba(192, 192, 192, .6);\n box-shadow: 0 0 10px rgba(192, 192, 192, .4);\n\n background: rgba(192, 192, 192, .1);\n }\n\n &.duplicate {\n border: 2px dashed;\n\n /* Theme dependent */\n border-color: rgba(255, 87, 34, 1);\n box-shadow: 0 0 10px rgba(255, 87, 34, .5);\n\n background: rgba(255, 87, 34, .1);\n }\n\n & > .key-elem-title {\n margin-right: 10px;\n }\n\n &.add, & > .remove {\n cursor: pointer;\n }\n }\n }\n\n & > .control-actions {\n .control-action {\n border-left: 2px solid;\n\n margin-top: 12px;\n padding-left: 16px;\n\n /* Theme dependent */\n border-left-color: rgba(102, 126, 234, .5);\n\n & > .control-action-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n margin-bottom: 8px;\n\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n\n span {\n margin-right: 5px;\n }\n\n & > .control-action-title-left {\n white-space: nowrap;\n\n overflow-x: auto;\n\n & > span {\n width: 17px;\n }\n\n & > select {\n border-radius: 6px;\n margin: 0 5px;\n padding: 6px 10px;\n }\n\n & > .params {\n font-size: .85em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n\n & > .condition-parameter {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n\n margin: 0 4px;\n\n & > select,\n & > input:not([type=checkbox]) {\n border-radius: 6px;\n padding: 6px 10px;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 18px;\n height: 18px;\n }\n }\n }\n }\n\n & > .control-action-title-right {\n display: flex;\n\n & > span {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display:flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n\n border-radius: 5px;\n margin-right: 0;\n\n font-size: 1.2em;\n\n transition: background .1s ease;\n\n &:hover {\n /* Theme dependent */\n background: rgba(255, 255, 255, .1);\n }\n }\n }\n }\n\n & > .action-parameter {\n border: 1px solid;\n\n border-radius: 8px;\n margin-top: 10px;\n padding: 12px 14px;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(40, 43, 52, .3);\n\n & > .parameter-title {\n margin-bottom: 8px;\n\n font-size: .9em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(180, 190, 210, 1);\n }\n\n & > select,\n & > input:not([type=checkbox]),\n & > duration-input {\n width: 100%;\n\n border-radius: 6px;\n padding: 8px 12px;\n }\n\n & > input[type=checkbox] {\n cursor: pointer;\n\n width: 20px;\n height: 20px;\n }\n }\n }\n\n & > .control-bottom-container {\n display: flex;\n justify-content: space-between;\n\n margin-top: 10px;\n\n & > div {\n display: flex;\n\n & > .add-action-button {\n width: max-content;\n\n border-radius: 8px;\n padding: 8px 16px;\n\n font-weight: 500;\n }\n }\n }\n }\n }\n\n .text-input-container {\n display: flex;\n gap: 12px;\n\n border-style: 2px dashed;\n\n border-radius: 12px;\n margin-top: 18px;\n padding: 16px;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .35);\n\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 0.15),\n rgba(118, 75, 162, 0.15)\n );\n\n & > input[type=\"text\"] {\n flex: 1;\n\n border-style: dashed;\n\n border-radius: 10px;\n padding: 10px 16px;\n\n font-size: .95em;\n\n &:focus {\n border-style: solid;\n }\n }\n }\n\n .stats-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n\n margin-top: 20px;\n\n & > .stat-card {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n width: 100%;\n height: 150px;\n\n background-color: transparent;\n\n perspective: 1000px;\n\n transition: transform .3s ease;\n\n &:hover, &:active {\n transform: scale(1.05);\n\n & > .inside {\n transform: rotateY(180deg);\n\n &::before {\n opacity: 1;\n }\n }\n }\n\n & > .inside {\n width: 100%;\n height: 100%;\n\n position: relative;\n\n transform-style: preserve-3d;\n\n transition: transform 0.8s linear(\n 0, 0.005, 0.02 2.2%, 0.046 4.5%, 0.182 11.5%,\n 0.318 16.3%, 0.459 20.6%, 0.601 24.6%, 0.738 28.6%,\n 0.863 32.7%, 0.954 37%, 1.015 41.8%, 1.049 47.4%,\n 1.059, 1.047 57.3%, 1.03 63.5%, 1.012 70.9%,\n 1.002 79.5%, 1\n );\n\n &::before {\n inset: -2px;\n\n border-radius: 14px;\n padding: 2px;\n\n opacity: 0;\n\n transition: opacity .3s ease;\n }\n\n & > :is(.front, .back) {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n\n position: absolute;\n\n border: 2px solid;\n\n border-radius: 12px;\n padding: 20px;\n\n text-align: center;\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .25);\n\n &.front {\n justify-content: center;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .15),\n rgba(118, 75, 162, .15)\n );\n }\n &.back {\n transform: rotateY(180deg);\n\n overflow: hidden auto;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(118, 75, 162, .15),\n rgba(102, 126, 234, .15)\n );\n\n &::-webkit-scrollbar {\n width: 8px;\n }\n &::-webkit-scrollbar-thumb {\n border-radius: 4px;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .4);\n }\n &::-webkit-scrollbar-track {\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n }\n }\n\n & > .stat-value {\n margin-bottom: 8px;\n\n font-size: 2.2em;\n font-weight: 700;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 75, 162, 1)\n );\n\n /* Theme independent */\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n\n & > .stat-label {\n margin-bottom: 4px;\n\n font-size: .95em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .stat-sublabel {\n font-size: .8em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n\n &:not(:last-child) {\n margin-bottom: 8px;\n }\n }\n }\n }\n }\n }\n\n .changelog-content {\n & > .changelog-header {\n border-bottom: 2px solid;\n\n padding-bottom: 24px;\n margin-bottom: 8px;\n\n text-align: center;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n\n & > h1 {\n margin: 0 0 10px 0;\n\n font-size: 2.5em;\n font-weight: 800;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n\n & > i {\n margin-right: 12px;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n }\n\n & > .changelog-subtitle {\n margin: 0 0 20px 0;\n\n font-size: 1.1em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .9);\n }\n\n & > .changelog-nav {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n gap: 8px;\n\n & > .changelog-nav-item {\n cursor: pointer;\n\n border: 1px solid;\n border-radius: 20px;\n padding: 6px 16px;\n\n font-size: .85em;\n font-weight: 600;\n text-decoration: none;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n color: rgba(200, 200, 200, .9);\n background: rgba(102, 126, 234, .08);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .6);\n color: rgba(255, 255, 255, 1);\n background: rgba(102, 126, 234, .2);\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .8);\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .3),\n rgba(118, 168, 255, .3)\n );\n box-shadow: 0 0 12px rgba(102, 126, 234, .3);\n }\n }\n }\n }\n\n & > .changelog-divider {\n height: 2px;\n\n margin: 48px auto 8px;\n\n border-radius: 1px;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(102, 126, 234, .4) 20%,\n rgba(118, 168, 255, .4) 50%,\n rgba(102, 126, 234, .4) 80%,\n transparent\n );\n }\n\n & > .changelog-version {\n margin-top: 32px;\n padding: 24px;\n\n border: 1px solid;\n border-radius: 16px;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n background: rgba(30, 33, 42, .4);\n\n & > .changelog-version-header {\n margin-bottom: 24px;\n padding-bottom: 16px;\n\n border-bottom: 1px solid;\n\n text-align: center;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n\n & > .version-badge-row {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n\n margin-bottom: 12px;\n\n & > .version-badge {\n display: inline-block;\n\n border: 1px solid;\n border-radius: 20px;\n padding: 4px 16px;\n\n font-size: .8em;\n font-weight: 700;\n font-family: 'Courier New', monospace;\n letter-spacing: .5px;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n color: rgba(118, 168, 255, 1);\n background: rgba(102, 126, 234, .12);\n }\n\n & > .version-tag {\n display: inline-block;\n\n border-radius: 20px;\n padding: 4px 12px;\n\n font-size: .7em;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 1px;\n\n &.latest {\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .8),\n rgba(118, 168, 255, .8)\n );\n box-shadow: 0 2px 8px rgba(102, 126, 234, .4);\n }\n }\n }\n\n & > h1 {\n margin: 0 0 8px 0;\n\n font-size: 1.6em;\n font-weight: 800;\n\n /* Theme dependent */\n background: linear-gradient(135deg, rgba(102, 126, 234, 1), rgba(118, 168, 255, 1));\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n\n & > .changelog-version-subtitle {\n margin: 0;\n\n font-size: .9em;\n font-weight: 400;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .7);\n\n & > i {\n margin-right: 4px;\n }\n }\n }\n\n & > .changelog-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 24px;\n\n margin: 0 auto;\n padding: 0;\n\n & > .card {\n position: relative;\n\n border: 1px solid;\n\n border-radius: 12px;\n padding: 20px;\n\n overflow: hidden;\n\n transition: border-color .3s ease,\n box-shadow .3s ease,\n background .3s ease,\n transform .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n\n background: rgba(40, 43, 52, .6);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n\n &::before {\n content: '';\n\n height: 3px;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n\n opacity: 0;\n\n transition: opacity .3s ease;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n rgba(102, 126, 234, .8),\n rgba(118, 168, 255, .8)\n );\n }\n\n &:hover {\n transform: translateY(-4px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .5),\n 0 0 0 1px rgba(102, 126, 234, .2);\n\n background: rgba(40, 43, 52, .85);\n\n &::before {\n opacity: 1;\n }\n\n & > .card-icon {\n transform: scale(1.1) rotate(5deg);\n }\n }\n\n &.featured {\n grid-column: 1 / -1;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n background: linear-gradient(135deg,\n rgba(40, 43, 52, .8),\n rgba(50, 53, 62, .8)\n );\n\n &::before {\n opacity: 1;\n }\n\n & > .card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25),\n rgba(118, 168, 255, .25)\n );\n }\n }\n\n & > .card-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n\n border-radius: 12px;\n margin-bottom: 16px;\n\n transition: transform .3s ease;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .15);\n\n & > i {\n font-size: 24px;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, 1),\n rgba(118, 168, 255, 1)\n );\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n }\n\n & > h2 {\n margin: 0 0 12px 0;\n\n font-size: 1.35em;\n font-weight: 700;\n letter-spacing: -0.02em;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, .95);\n }\n\n & > p {\n margin: 0 0 16px 0;\n\n font-size: .95em;\n line-height: 1.6em;\n\n /* Theme dependent */\n color: rgba(118, 168, 255, .9);\n }\n\n & > ul {\n margin: 0;\n padding-left: 24px;\n\n font-size: .9em;\n line-height: 1.7em;\n\n /* Theme dependent */\n color: rgba(229, 229, 229, .9);\n\n & > li {\n margin-bottom: 8px;\n padding-left: 4px;\n\n &::marker {\n /* Theme dependent */\n color: rgba(102, 126, 234, .8);\n }\n\n &:last-child {\n margin-bottom: 0;\n }\n\n & > strong {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(255, 255, 255, 1);\n }\n\n & > code {\n border-radius: 4px;\n padding: 2px 6px;\n\n font-family: 'Courier New', monospace;\n font-size: .9em;\n\n /* Theme dependent */\n background: rgba(102, 126, 234, .15);\n color: rgba(118, 168, 255, 1);\n }\n\n & > ul {\n margin-top: 6px;\n padding-left: 20px;\n\n & > li {\n font-size: .95em;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, .85);\n }\n }\n }\n }\n }\n }\n }\n }\n\n .about-content {\n display: flex;\n flex-direction: column;\n gap: 0;\n\n border: 1px solid;\n\n border-radius: 16px;\n padding: 0;\n\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .25);\n box-shadow: 0 8px 32px rgba(0, 0, 0, .4),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n background: linear-gradient(135deg,\n rgba(30, 33, 42, .95),\n rgba(25, 28, 36, .9)\n );\n -webkit-backdrop-filter: blur(20px);\n backdrop-filter: blur(20px);\n\n & > .about-version {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n\n padding: 32px;\n\n font-size: 1.3em;\n font-weight: 700;\n letter-spacing: .5px;\n\n /* Theme dependent */\n box-shadow: 0 4px 20px rgba(143, 163, 255, .25),\n inset 0 1px 0 rgba(255, 255, 255, .15),\n inset 0 -1px 0 rgba(0, 0, 0, .3);\n\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .25),\n rgba(118, 75, 162, .2)\n );\n\n & > .fa {\n font-size: 1.5em;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n filter: drop-shadow(0 2px 8px rgba(143, 163, 255, .6));\n }\n }\n\n & > .about-tagline {\n padding: 24px 32px;\n\n text-align: center;\n\n /* Theme dependent */\n border-bottom: 1px solid rgba(255, 255, 255, .08);\n\n & > p {\n margin: 0;\n\n font-size: 1.05em;\n line-height: 1.6;\n\n /* Theme dependent */\n color: rgba(180, 185, 200, 1);\n }\n }\n\n & > .about-links {\n display: flex;\n flex-direction: column;\n gap: 0;\n\n padding: 16px;\n\n & > .link-card {\n display: flex;\n align-items: center;\n gap: 16px;\n\n border: 1px solid;\n border-radius: 12px;\n margin-bottom: 12px;\n padding: 16px 20px;\n\n text-decoration: none;\n\n transition:\n border-color .3s ease,\n box-shadow .3s ease,\n background .3s ease,\n transform .3s ease,\n border-left-color .3s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n border-left: 3px solid rgba(143, 163, 255, .35);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, .06),\n rgba(40, 43, 52, .6) 40%\n );\n\n &:last-child {\n margin-bottom: 0;\n }\n\n &:hover {\n transform: translateX(6px);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .5);\n border-left-color: rgba(143, 163, 255, .8);\n box-shadow: 0 6px 24px rgba(143, 163, 255, .2),\n 0 2px 12px rgba(0, 0, 0, .3),\n inset 0 1px 0 rgba(255, 255, 255, .1);\n\n background: linear-gradient(90deg,\n rgba(143, 163, 255, .15),\n rgba(118, 75, 162, .08) 50%\n );\n\n & > .link-card-icon {\n transform: scale(1.1);\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .25);\n }\n\n & > .link-card-arrow {\n transform: translateX(4px);\n\n opacity: 1;\n }\n }\n\n & > .link-card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n\n border-radius: 10px;\n\n font-size: 1.3em;\n\n transition:\n transform .3s ease,\n background .3s ease;\n\n /* Theme dependent */\n background: rgba(143, 163, 255, .15);\n\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .link-card-content {\n flex: 1;\n text-align: left;\n\n & > .link-card-title {\n margin-bottom: 4px;\n\n font-size: 1em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n }\n\n & > .link-card-desc {\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(160, 160, 160, 1);\n }\n }\n\n & > .link-card-arrow {\n font-size: 1.2em;\n\n opacity: .5;\n\n transition:\n transform .3s ease,\n opacity .3s ease;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > .about-footer {\n padding: 0;\n\n & > .footer-divider {\n height: 1px;\n\n margin: 0;\n\n /* Theme dependent */\n background: linear-gradient(90deg,\n transparent,\n rgba(143, 163, 255, .3) 20%,\n rgba(143, 163, 255, .3) 80%,\n transparent\n );\n }\n\n & > .about-credits {\n padding: 24px;\n\n & > div {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(max(280px, calc(50% - 6px)), 1fr));\n gap: 12px;\n\n &:not(:last-child) {\n margin-bottom: 12px;\n }\n\n & > .credit-card {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 14px;\n\n border: 1px solid;\n border-radius: 14px;\n padding: 14px 16px;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .06);\n border-top: 2px solid rgba(143, 163, 255, .18);\n\n background: linear-gradient(180deg,\n rgba(143, 163, 255, .06),\n rgba(40, 43, 52, .4) 30%\n );\n\n &:hover {\n transform: translateY(-3px) scale(1.01);\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .3);\n border-top-color: rgba(143, 163, 255, .5);\n box-shadow: 0 6px 20px rgba(143, 163, 255, .18),\n 0 2px 8px rgba(0, 0, 0, .25);\n\n background: linear-gradient(180deg,\n rgba(143, 163, 255, .1),\n rgba(40, 43, 52, .6) 40%\n );\n }\n\n & > .credit-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 42px;\n height: 42px;\n\n border-radius: 50%;\n\n font-size: 1.1em;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .15)\n );\n\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n & > .credit-info {\n flex: 1;\n min-width: 0;\n text-align: left;\n\n & > .credit-name {\n position: relative;\n overflow: hidden;\n\n margin-bottom: 2px;\n\n font-size: .95em;\n font-weight: 700;\n\n /* Theme dependent */\n color: rgba(220, 220, 220, 1);\n\n & > span {\n display: inline-block;\n white-space: nowrap;\n }\n }\n\n & > .credit-role {\n font-size: .8em;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n /* Theme dependent */\n color: rgba(160, 160, 160, 1);\n }\n }\n\n &:hover {\n & > .credit-info {\n & > .credit-name > span {\n animation: scroll-text 3s linear infinite;\n }\n }\n }\n }\n\n & > .copyright-card {\n cursor: pointer;\n\n display: flex;\n flex-direction: column;\n gap: 4px;\n flex: 1;\n\n border: 1px solid;\n border-radius: 12px;\n padding: 16px;\n\n text-align: center;\n overflow: hidden;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .04);\n\n background: rgba(35, 38, 46, .3);\n\n & > .copyright-title {\n margin-bottom: 2px;\n\n font-size: .9em;\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(200, 200, 200, 1);\n }\n\n & > .copyright-desc {\n font-size: .75em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(140, 140, 140, 1);\n }\n }\n }\n }\n }\n }\n\n &#ollama-server-url {\n & > .connection-status-container {\n border: 1px solid;\n\n margin-top: 10px;\n\n transition: border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n &:has(#settings-ollama-connection-status:empty) {\n display: none;\n }\n\n &.testing {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .7);\n box-shadow: 0 2px 8px rgba(255, 193, 7, .4);\n\n background: rgba(255, 193, 7, .1);\n }\n &.connected {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .7);\n box-shadow: 0 2px 8px rgba(76, 175, 80, .4);\n\n background: rgba(76, 175, 80, .1);\n }\n &.failed {\n /* Theme dependent */\n border-color: rgba(211, 47, 47, .7);\n box-shadow: 0 2px 8px rgba(211, 47, 47, .4);\n\n background: rgba(211, 47, 47, .1);\n }\n\n & > #settings-connection-status {\n font-size: .9em;\n }\n }\n }\n\n &#ollama-model-select {\n .models-container {\n border: 1px solid;\n\n margin-top: 10px;\n\n text-align: center;\n\n transition: border-color .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n &.searching {\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .7);\n box-shadow: 0 2px 8px rgba(143, 163, 255, .4);\n\n background: rgba(143, 163, 255, .1);\n }\n &.none {\n /* Theme dependent */\n border-color: rgba(255, 193, 7, .7);\n box-shadow: 0 2px 8px rgba(255, 193, 7, .4);\n\n background: rgba(255, 193, 7, .1);\n }\n &.error {\n /* Theme dependent */\n border-color: rgba(211, 47, 47, .7);\n box-shadow: 0 2px 8px rgba(211, 47, 47, .4);\n\n background: rgba(211, 47, 47, .1);\n }\n\n & > p {\n font-size: .9em;\n font-style: italic;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n\n & > #settings-ollama-models {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 8px;\n\n &:not(:empty) {\n margin-top: 8px;\n }\n\n & > .model {\n cursor: pointer;\n\n border: 2px solid;\n\n border-radius: 8px;\n padding: 12px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(102, 126, 234, 1);\n box-shadow: 0 4px 12px rgba(20, 20, 30, .4);\n\n background: rgba(50, 54, 66, .9);\n }\n\n &.selected {\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, 1);\n box-shadow: 0 0 15px rgba(143, 163, 255, .5);\n\n background: rgba(143, 163, 255, .1);\n\n & > .model-top {\n & > .fa {\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n }\n\n & > .model-top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n\n & > .fa {\n /* Theme dependent */\n color: rgba(128, 128, 128, .5);\n }\n\n & > .model-name {\n font-weight: 600;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .pseudo-indicator {\n pointer-events: none;\n\n opacity: 0;\n }\n }\n\n & > .model-bottom {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n font-size: .85em;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n }\n }\n }\n\n &#ollama-setup {\n & > .settings-section-title {\n /* Theme dependent */\n color: rgba(255, 54, 34, 1);\n }\n & > .settings-section-desc {\n border-left: 4px solid;\n\n border-radius: 6px;\n padding: 10px;\n\n /* Theme dependent */\n border-left-color: rgba(255, 193, 7, 1);\n\n background: rgba(255, 193, 7, .125);\n\n color: rgba(225, 225, 225, 1);\n }\n }\n\n &.save {\n & > .save-settings-header {\n margin-bottom: 16px;\n }\n\n & > .save-settings-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .save-settings-card {\n border: 1px solid;\n border-radius: 12px;\n overflow: hidden;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(40, 43, 52, .5);\n box-shadow: 0 2px 12px rgba(0, 0, 0, .2);\n\n transition: border-color .3s ease, box-shadow .3s ease;\n\n &:hover {\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .15);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .3);\n }\n\n & > .card-header {\n display: flex;\n align-items: center;\n gap: 12px;\n\n padding: 14px 16px;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(50, 54, 66, .6),\n rgba(40, 43, 52, .6)\n );\n border-bottom: 1px solid rgba(255, 255, 255, .06);\n\n & > .card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n\n border-radius: 10px;\n\n font-size: 1.25em;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .2)\n );\n color: rgba(143, 163, 255, 1);\n box-shadow: 0 4px 12px rgba(143, 163, 255, .15);\n }\n\n & > .card-header-content {\n flex: 1;\n\n & > .card-title {\n font-size: 1.1em;\n font-weight: 700;\n margin-bottom: 2px;\n\n /* Theme dependent */\n color: rgba(232, 232, 232, 1);\n }\n\n & > .card-desc {\n font-size: .9em;\n line-height: 1.5;\n\n /* Theme dependent */\n color: rgba(187, 187, 187, 1);\n }\n }\n\n & > .card-toggle {\n flex-shrink: 0;\n }\n }\n\n & > .card-body {\n padding: 12px;\n\n & > .action-buttons-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 10px;\n\n & > .action-card {\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n border: 1px solid;\n border-radius: 10px;\n padding: 12px 14px;\n\n transition: all .3s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .08);\n background: rgba(46, 52, 66, .6);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .15);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .2);\n box-shadow: 0 8px 24px rgba(0, 0, 0, .25);\n background: rgba(56, 62, 76, .7);\n }\n\n &:active {\n transform: translateY(0);\n\n /* Theme dependent */\n box-shadow: 0 2px 8px rgba(0, 0, 0, .15);\n }\n\n & > .action-card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n\n border-radius: 8px;\n\n font-size: 1.15em;\n flex-shrink: 0;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n }\n\n & > .action-card-content {\n flex: 1;\n\n & > .action-card-title {\n font-size: .95em;\n font-weight: 600;\n margin-bottom: 1px;\n\n /* Theme dependent */\n color: rgba(224, 224, 224, 1);\n }\n\n & > .action-card-desc {\n font-size: .85em;\n line-height: 1.4;\n\n /* Theme dependent */\n color: rgba(170, 170, 170, 1);\n }\n }\n\n &.export-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .2),\n rgba(56, 142, 60, .2)\n );\n color: rgba(76, 175, 80, 1);\n }\n }\n\n &.import-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(143, 163, 255, .2),\n rgba(118, 75, 162, .2)\n );\n color: rgba(143, 163, 255, 1);\n }\n\n &.active {\n /* Theme dependent */\n border-color: rgba(76, 175, 80, .5);\n background: rgba(76, 175, 80, .1);\n\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .3),\n rgba(56, 142, 60, .3)\n );\n color: rgba(76, 175, 80, 1);\n }\n }\n }\n\n &.reset-card {\n & > .action-card-icon {\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(211, 47, 47, .2),\n rgba(183, 28, 28, .2)\n );\n color: rgba(211, 47, 47, 1);\n }\n }\n }\n }\n\n & > .status-message {\n border-radius: 10px;\n margin-top: 12px;\n padding: 12px 14px;\n\n animation: scale-in .3s ease;\n\n &.hidden {\n display: none;\n }\n\n & > .status-content {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n\n & > .status-icon {\n font-size: 1.25em;\n flex-shrink: 0;\n margin-top: 1px;\n }\n\n & > .status-text {\n flex: 1;\n\n & > .status-title {\n font-size: .95em;\n font-weight: 700;\n margin-bottom: 2px;\n\n /* Theme dependent */\n color: rgba(240, 240, 240, 1);\n }\n\n & > .status-desc {\n font-size: .9em;\n line-height: 1.5;\n\n /* Theme dependent */\n color: rgba(210, 210, 210, 1);\n }\n }\n }\n\n &.success {\n /* Theme dependent */\n border: 1px solid rgba(76, 175, 80, .4);\n background: linear-gradient(135deg,\n rgba(76, 175, 80, .15),\n rgba(56, 142, 60, .1)\n );\n box-shadow: 0 4px 16px rgba(76, 175, 80, .2);\n\n & > .status-content > .status-icon {\n color: rgba(76, 175, 80, 1);\n }\n }\n\n &.error {\n /* Theme dependent */\n border: 1px solid rgba(211, 47, 47, .4);\n background: linear-gradient(135deg,\n rgba(211, 47, 47, .15),\n rgba(183, 28, 28, .1)\n );\n box-shadow: 0 4px 16px rgba(211, 47, 47, .2);\n\n & > .status-content > .status-icon {\n color: rgba(211, 47, 47, 1);\n }\n }\n\n &.info {\n /* Theme dependent */\n border: 1px solid rgba(255, 193, 7, .4);\n background: linear-gradient(135deg,\n rgba(255, 193, 7, .15),\n rgba(255, 152, 0, .1)\n );\n box-shadow: 0 4px 16px rgba(255, 193, 7, .2);\n\n & > .status-content > .status-icon {\n color: rgba(255, 193, 7, 1);\n }\n }\n }\n\n & > .import-textarea {\n width: 100%;\n min-height: 140px;\n\n border: 2px solid;\n\n border-radius: 10px;\n margin-top: 12px;\n padding: 12px 14px;\n\n font-family: 'Courier New', Consolas, monospace;\n font-size: .88em;\n line-height: 1.6;\n\n resize: vertical;\n\n animation: scale-in .3s ease;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .3);\n background: rgba(20, 23, 32, .8);\n color: rgba(220, 220, 220, 1);\n box-shadow: inset 0 2px 8px rgba(0, 0, 0, .3);\n\n &:focus {\n outline: none;\n\n /* Theme dependent */\n border-color: rgba(143, 163, 255, .6);\n box-shadow: inset 0 2px 8px rgba(0, 0, 0, .3),\n 0 0 0 3px rgba(143, 163, 255, .15);\n }\n\n &.hidden {\n display: none;\n }\n\n &::placeholder {\n /* Theme dependent */\n color: rgba(130, 130, 130, 1);\n }\n }\n }\n }\n }\n\n .disabled-note {\n display: none;\n\n font-size: .85em;\n margin-top: 4px;\n\n /* Theme dependent */\n color: rgba(255, 193, 7, 1);\n }\n\n &.disabled {\n pointer-events: none;\n\n opacity: .5;\n\n .disabled-note {\n display: block;\n }\n }\n }\n\n .list-container {\n & > div {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n border: 1px solid;\n\n border-radius: 8px;\n margin-bottom: 8px;\n padding: 8px;\n padding-left: 15px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .7);\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 20px rgba(0, 0, 0, .4);\n\n background: rgba(40, 43, 52, .9);\n }\n\n &.empty {\n padding: 20px;\n\n text-align: center;\n\n opacity: .6;\n }\n\n & > div {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n a > {\n font-weight: 600;\n word-break: break-all;\n }\n\n & > span {\n font-size: .85em;\n\n opacity: .7;\n }\n\n & > .add-action-button {\n cursor: pointer;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n\n border-radius: 6px;\n\n font-size: 1em;\n\n transition: background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, .05);\n\n &:hover {\n /* Theme dependent */\n background: rgba(102, 126, 234, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n &:active {\n /* Theme dependent */\n background: rgba(102, 126, 234, .3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n }\n\n &.remove-button {\n /* Theme dependent */\n background: rgba(211, 47, 47, .1);\n\n &:hover {\n /* Theme dependent */\n background: rgba(211, 47, 47, .2);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n }\n &:active {\n /* Theme dependent */\n background: rgba(211, 47, 47, .3);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n }\n }\n }\n }\n }\n }\n\n .settings-compact-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 18px;\n\n margin-bottom: 25px;\n }\n\n .draggable-order-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n &.is-dragging .draggable-order-item {\n pointer-events: none;\n\n &:hover {\n transform: none;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: none;\n\n background: rgba(40, 43, 52, .8);\n\n &::before {\n opacity: .5;\n\n color: inherit;\n }\n }\n }\n\n & > .draggable-order-item-wrapper {\n position: relative;\n\n transition: transform .2s cubic-bezier(0.2, 0, 0, 1);\n\n &.dragging {\n z-index: 4;\n\n &::after {\n content: '';\n\n width: 100%;\n height: 100%;\n\n border: 2px dashed;\n\n border-radius: 10px;\n\n position: absolute;\n top: 0;\n left: 0;\n\n pointer-events: none;\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .8);\n box-shadow: 0 0 20px rgba(102, 126, 234, .4),\n inset 0 0 20px rgba(102, 126, 234, .15);\n\n background: rgba(102, 126, 234, .1);\n }\n\n & > .draggable-order-item {\n visibility: hidden;\n }\n }\n }\n\n .draggable-order-item {\n cursor: grab;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 14px;\n\n border: 1px solid;\n\n border-radius: 10px;\n padding: 14px 18px;\n\n transition: background .2s ease,\n border-color .2s ease,\n box-shadow .2s ease,\n transform .2s ease,\n opacity .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n\n background: rgba(40, 43, 52, .8);\n\n &::before {\n content: '\\f0c9';\n\n font-family: 'Font Awesome 6 Free';\n font-size: .9em;\n font-weight: 900;\n\n opacity: .5;\n\n transition: opacity .2s ease,\n color .2s ease;\n }\n\n &:hover {\n transform: translateY(-2px);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .4);\n box-shadow: 0 6px 24px rgba(0, 0, 0, .4);\n\n background: rgba(50, 54, 66, .9);\n\n &::before {\n opacity: .8;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n }\n\n &:active {\n cursor: grabbing;\n\n transform: scale(1.02);\n\n /* Theme dependent */\n border-color: rgba(102, 126, 234, .6);\n box-shadow: 0 8px 32px rgba(102, 126, 234, .3);\n\n background: rgba(60, 65, 80, .95);\n }\n\n &.disabled {\n opacity: .5;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .05);\n\n background: rgba(30, 32, 38, .6);\n\n & > .draggable-order-item-name {\n /* Theme dependent */\n color: rgba(150, 150, 150, 1);\n }\n\n & > .draggable-order-item-toggle {\n /* Theme dependent */\n background: rgba(80, 80, 80, .5);\n\n &::before {\n transform: translateX(0);\n\n /* Theme dependent */\n background: rgba(120, 120, 120, 1);\n }\n }\n\n &:hover {\n opacity: .7;\n\n transform: translateY(-1px);\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n }\n }\n\n & > .draggable-order-item-name {\n flex: 1;\n\n font-size: .95em;\n font-weight: 500;\n\n /* Theme dependent */\n color: rgba(230, 230, 230, 1);\n }\n\n & > .draggable-order-item-toggle {\n cursor: pointer;\n\n flex-shrink: 0;\n width: 44px;\n height: 24px;\n\n border-radius: 100vh;\n\n position: relative;\n\n transition: background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .8),\n rgba(118, 75, 162, .8)\n );\n box-shadow: 0 2px 8px rgba(102, 126, 234, .3);\n\n &::before {\n content: '';\n\n width: 18px;\n height: 18px;\n\n border-radius: 50%;\n\n position: absolute;\n top: 3px;\n left: 3px;\n\n transform: translateX(20px);\n\n transition: transform .2s ease,\n background .2s ease,\n box-shadow .2s ease;\n\n /* Theme dependent */\n background: rgba(255, 255, 255, 1);\n box-shadow: 0 2px 4px rgba(0, 0, 0, .2);\n }\n\n &:hover {\n /* Theme dependent */\n box-shadow: 0 4px 12px rgba(102, 126, 234, .5);\n }\n }\n }\n }\n }\n }\n }\n }\n\n select, input:not([type=range]), textarea, button {\n border: 1px solid transparent;\n\n border-radius: 8px;\n padding: 8px 12px;\n\n font-family: inherit;\n font-size: inherit;\n color: var(--color, inherit);\n\n transition: border .2s ease,\n background .2s ease,\n box-shadow .2s ease,\n transform .2s ease;\n\n /* Theme dependent */\n box-shadow: 0 2px 8px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .3), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), .9);\n\n &:hover {\n /* Theme dependent */\n box-shadow: 0 4px 12px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .4), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), 1);\n }\n &:not(input, textarea):active {\n /* Theme dependent */\n box-shadow: 0 1px 4px color-mix(in srgb, rgba(var(--background, 46, 52, 66), .2), rgba(0, 0, 0, 1));\n\n background: rgba(var(--background, 46, 52, 66), .95);\n }\n\n &[type=number] {\n -moz-appearance: textfield;\n appearance: textfield;\n\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n appearance: none;\n\n margin: 0;\n }\n }\n }\n\n button {\n cursor: pointer !important;\n\n &:hover {\n transform: translateY(-2px);\n }\n &:active {\n transform: translateY(0);\n }\n }\n\n duration-input {\n display: flex;\n flex-direction: column;\n gap: 12px;\n width: 100%;\n\n border: 1px solid;\n border-radius: 12px;\n padding: 16px;\n\n font-family: inherit;\n font-size: .9em;\n\n transition: border-color .2s ease,\n box-shadow .2s ease,\n background .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n background: rgba(40, 43, 52, .7);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n box-shadow: 0 4px 12px rgba(0, 0, 0, .3);\n background: rgba(40, 43, 52, .85);\n }\n\n & > .infinity-label {\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n\n display: flex;\n align-items: center;\n gap: 10px;\n\n position: relative;\n\n border: 1px solid;\n border-radius: 8px;\n padding: 10px 14px;\n\n font-weight: 500;\n font-size: .95em;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(220, 220, 220, 1);\n background: rgba(35, 38, 48, .6);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .2);\n\n &::after {\n content: '\\f00c';\n font-family: 'Font Awesome 6 Free';\n font-weight: 900;\n\n position: absolute;\n top: 50%;\n right: 12px;\n\n font-size: 13px;\n line-height: 1;\n\n opacity: 0;\n transform: translateY(-50%) scale(0);\n\n transition: all .2s cubic-bezier(.4, 0, .2, 1);\n\n /* Theme dependent */\n color: rgba(143, 163, 255, 1);\n }\n\n & > span {\n flex: 1;\n letter-spacing: .3px;\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n background: rgba(45, 48, 58, .8);\n box-shadow: 0 3px 10px rgba(0, 0, 0, .3);\n }\n\n &.selected {\n border-color: rgba(102, 126, 234, .5);\n color: rgba(255, 255, 255, 1);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .2) 0%,\n rgba(118, 75, 162, .2) 100%\n );\n box-shadow: 0 3px 12px rgba(102, 126, 234, .25),\n inset 0 1px 0 rgba(255, 255, 255, .08);\n\n &::after {\n opacity: 1;\n transform: translateY(-50%) scale(1);\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .6);\n background: linear-gradient(135deg,\n rgba(102, 126, 234, .25) 0%,\n rgba(118, 75, 162, .25) 100%\n );\n box-shadow: 0 4px 16px rgba(102, 126, 234, .35),\n inset 0 1px 0 rgba(255, 255, 255, .1);\n }\n }\n }\n\n & > .duration-inputs {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 10px;\n\n opacity: 1;\n transform: scale(1);\n\n transition: opacity .2s ease,\n transform .2s cubic-bezier(.4, 0, .2, 1);\n\n & > label {\n display: flex;\n flex-direction: column;\n gap: 6px;\n\n & > span {\n font-size: .75em;\n font-weight: 600;\n letter-spacing: .5px;\n text-align: center;\n text-transform: uppercase;\n\n /* Theme dependent */\n color: rgba(143, 163, 255, .85);\n }\n\n & > input {\n cursor: text;\n\n width: 100%;\n\n border: 1px solid;\n border-radius: 6px;\n padding: 8px 10px;\n\n font-family: 'Segoe UI', system-ui, sans-serif;\n font-size: .95em;\n font-weight: 500;\n text-align: center;\n\n transition: all .2s ease;\n\n /* Theme dependent */\n border-color: rgba(255, 255, 255, .1);\n color: rgba(230, 230, 230, 1);\n background: rgba(30, 33, 42, .9);\n box-shadow: 0 2px 6px rgba(0, 0, 0, .2),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n\n &::placeholder {\n color: rgba(150, 154, 170, .6);\n }\n\n &:hover {\n border-color: rgba(102, 126, 234, .3);\n background: rgba(35, 38, 48, 1);\n box-shadow: 0 3px 8px rgba(0, 0, 0, .25),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n }\n\n &:focus {\n outline: none;\n border-color: rgba(102, 126, 234, .6);\n background: rgba(40, 43, 52, 1);\n box-shadow: 0 0 0 2px rgba(102, 126, 234, .2),\n 0 2px 10px rgba(102, 126, 234, .15),\n inset 0 1px 2px rgba(0, 0, 0, .3);\n }\n\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n }\n }\n\n &:has(.infinity-label.selected) > .duration-inputs {\n opacity: .4;\n transform: scale(.98);\n pointer-events: none;\n }\n }\n\n #reset-statistics-button {\n float: right;\n\n font-size: 1rem;\n\n /* Theme dependent */\n --background: 211, 51, 51;\n }\n\n #settings-ollama-refresh-models {\n float: right;\n\n font-size: 1rem;\n }\n }\n\n .ws-username-highlight {\n position: relative;\n\n &::before {\n content: \"\";\n\n pointer-events: none;\n\n position: absolute;\n inset: 0;\n\n border-radius: 10px;\n border: 2px solid;\n\n /* Theme dependent */\n border-color: rgba(255, 193, 7, 1);\n }\n }\n\n &.mobile {\n #queue {\n display: none !important;\n }\n\n #right-details {\n display: none !important;\n }\n\n #right-container {\n width: 100% !important;\n\n #main-container {\n width: 100% !important;\n }\n }\n }\n}\n\n@container (max-width: 300px) {\n #DEFCON {\n padding: 8px 14px !important;\n\n & > span {\n display: none;\n }\n }\n}\n\n@container (max-width: 225px) {\n #DEFCON {\n display: none !important;\n }\n}"},4192(e,t){function n(){return crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}Object.defineProperty(t,"__esModule",{value:!0}),t.generateRandomUUID=function(){return 0===s.length?n():s.pop()};const s=[];"function"==typeof requestIdleCallback&&requestIdleCallback(function e(){s.length<256&&s.push(n()),requestIdleCallback(e)})},4041(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.CreateDOMElement=function(e,t={}){const n=document.createElement(e);"id"in t&&(n.id=t.id);"class"in t&&(n.className=t.class);"text"in t&&(n.textContent=t.text);"html"in t&&(n.innerHTML=t.html);"content"in t&&n.append(t.content);"value"in t&&(n.value=t.value);if("attributes"in t)for(const[e,s]of Object.entries(t.attributes||{}))n.setAttribute(e,s);if("dataset"in t)for(const[e,s]of Object.entries(t.dataset||{}))n.dataset[e]=s;if("style"in t)for(const[e,s]of Object.entries(t.style||{}))n.style.setProperty(e,s);return n}},5643(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.fullTrim=void 0;t.fullTrim=e=>{const t=e.split("\n"),n=t.length;let s=!0,i=1/0,a=[],r=[];for(let e=0;e<n;e++){const n=t[e];if(""===n.trim()){if(s)continue;a.push("")}else{s?s=!1:(r=r.concat(a),a=[]);const e=n.match(/^(\s*)/)[0].length;i=Math.min(i,e),r.push(n)}}const o=r.length;if(0===o)return"";const l=[];for(let e=0;e<o;e++){const t=r[e].trimEnd();""===t?l.push(""):l.push(t.slice(i))}return l.join("\n")}},2852(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Memory=void 0;t.Memory=class{constructor(e={}){this.order=[],this.store=new Map,this.timeouts=new Map,"timeout"in e&&(this.timeout=e.timeout),"size"in e&&(this.maxSize=e.size)}clear(){this.order=[],this.store.clear(),this.timeouts.clear()}has(e){return this.store.has(e)}get(e){return this.store.get(e)}set(e,t){const n=this.order.indexOf(e);-1!==n&&this.order.splice(n,1),this.order.push(e),this.store.set(e,t),this.timeouts.has(e)&&clearTimeout(this.timeouts.get(e)),void 0!==this.timeout&&this.timeouts.set(e,setTimeout(()=>{this.delete(e)},this.timeout)),void 0!==this.maxSize&&this.store.size>this.maxSize&&this.delete(this.order.shift())}add(e){this.store.has(e)||this.set(e,!0)}delete(e){const t=this.order.indexOf(e);-1!==t&&this.order.splice(t,1),this.store.delete(e),clearTimeout(this.timeouts.get(e)),this.timeouts.delete(e)}size(){return this.store.size}}},2595(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Stack=void 0;t.Stack=class{constructor(e=50){this.items=[],this.maxSize=e}push(e){this.items.push(e),this.items.length>this.maxSize&&this.items.shift()}pop(){return this.items.pop()}unshift(e){this.items.unshift(e),this.items.length>this.maxSize&&this.items.pop()}shift(){return this.items.shift()}peek(){return this.items[this.items.length-1]}clear(){this.items=[]}get length(){return this.items.length}set length(e){this.items.length=Math.min(e,this.maxSize)}}},6873(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Trie=void 0;var s=n(4192);function i(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function a(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var r=new WeakSet;function o(e){var t;this.timeouts.has(e)&&clearTimeout(this.timeouts.get(e)),this.timeouts.delete(e);const n=this.order[e];delete this.order[e];const s=[{children:this.store}];let i=this.store;for(const e of n){const t=i.get(e);s.push(t),i=t.children}const a=s.pop();if(a.defined=!1,delete a.value,!((null===(t=a.children)||void 0===t?void 0:t.size)>0))for(let e=s.length-1;e>=0;e--){const t=s[e],i=n.pop();if(t.children.delete(i),t.children.size>0||t.defined)break;t.terminal=!0,delete t.children}}t.Trie=class{constructor(e={}){i(this,r),this.order={},this.store=new Map,this.timeouts=new Map,"timeout"in e&&(this.timeout=e.timeout),"size"in e&&(this.maxSize=e.size)}clear(){this.order={},this.store.clear(),this.timeouts.clear()}has(...e){var t;const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return!1;const e=s.get(t);if(e.terminal)return!1;s=e.children}return!0===(null===(t=s.get(n))||void 0===t?void 0:t.defined)}get(...e){var t;const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.value}set(...e){var t;const n=e.pop();let i=((e,t)=>{const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.UUID})(e);delete this.order[i],void 0===i&&(i=(0,s.generateRandomUUID)());const l=e.pop();let d=this.store;for(const t of e)if(d.has(t)){var c;const e=d.get(t);e.terminal=!1,null!==(c=e.children)&&void 0!==c||(e.children=new Map),d=e.children}else{const e={defined:!1,terminal:!1,children:new Map};d.set(t,e),d=e.children}const u=null!==(t=d.get(l))&&void 0!==t?t:{terminal:!0};u.UUID=i,u.defined=!0,u.value=n,d.set(l,u),this.order[i]=e.concat([l]),this.timeouts.has(i)&&clearTimeout(this.timeouts.get(i)),void 0!==this.timeout&&this.timeouts.set(i,setTimeout(()=>{a(r,this,o).call(this,i)},this.timeout)),void 0!==this.maxSize&&Object.keys(this.order).length>this.maxSize&&a(r,this,o).call(this,this.order.shift())}add(e){this.store.has(e)||this.set(e,!0)}delete(...e){const t=((e,t)=>{const n=e.pop();let s=this.store;for(const t of e){if(!s.has(t))return;const e=s.get(t);if(e.terminal)return;s=e.children}return null===(t=s.get(n))||void 0===t?void 0:t.UUID})(e);void 0!==t&&a(r,this,o).call(this,t)}size(){return Object.keys(this.order).length}}},4551(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.truncate=function(e,t){return e.length>t?`${e.substring(0,t-3).trimEnd()}...`:e}},1289(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.convertToUTCString=void 0;t.convertToUTCString=e=>`${e.getUTCFullYear().toString().padStart(4,"0")}-${(e.getUTCMonth()+1).toString().padStart(2,"0")}-${e.getUTCDate().toString().padStart(2,"0")}T${e.getUTCHours().toString().padStart(2,"0")}:${e.getUTCMinutes().toString().padStart(2,"0")}:${e.getUTCSeconds().toString().padStart(2,"0")}`},8678(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Ollama=t.AI=void 0;var s=n(4018),i=n(5643);function a(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function r(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=new WeakSet;class l{static registerProvider(e,t){l.providers[e]=t}setup(e,t){if(this.analysis[e].has(t.id)){const n=this.analysis[e].get(t.id);return n.count++,n.request}const n=new AbortController,s=this.fetch(e,t,n.signal);return this.analysis[e].set(t.id,{request:s,abortController:n,count:1}),s.finally(()=>{this.analysis[e].delete(t.id)}),s}async fetch(e,t,n){return{error:"No service has been selected"}}constructor(e,t){a(this,o),r(this,"analysis",{edit:new Map,username:new Map}),r(this,"cache",{username:new Set}),r(this,"analyze",{edit:e=>this.setup("edit",e),username:e=>this.cache.username.has(e.user.name)?Promise.resolve({flag:!1,confidence:1,issues:[],explanation:"Username previously analyzed."}):(this.cache.username.add(e.user.name),this.setup("username",e))}),r(this,"cancel",{all:(e=!0)=>{if(!0===e)for(const e of Object.keys(this.analysis))for(const n of null===(t=this.analysis[e])||void 0===t?void 0:t.keys()){var t;this.cancel[e](n)}else for(const t of null===(n=this.analysis[e])||void 0===n?void 0:n.keys()){var n;this.cancel[e](t)}},edit:e=>{const t=this.analysis.edit.get(e);t&&(t.count--,t.count<=0&&(t.abortController.abort("Edit analysis canceled by user"),this.analysis.edit.delete(e)))},username:e=>{const t=this.analysis.username.get(e);t&&(t.count--,t.count<=0&&(t.abortController.abort("Username analysis canceled by user"),this.analysis.username.delete(e)))}}),r(this,"prompt",{edit:async e=>{var t,n;const a=function(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}(o,this,d).call(this,e.diff),r=null!==(t=s.namespaces.find(t=>t.id===e.ns))&&void 0!==t?t:s.namespaces[0];let l="registered";e.user.temp?l="temporary (unregistered)":e.user.ip&&(l="IP (unregistered)");const c=e.page.categories.join(", ")||"(none)",u=e.page.categories.some(e=>/living people/i.test(e));return(0,i.fullTrim)(`\nYou are an automated Wikipedia item reviewer. Analyze the following item and determine whether the CHANGES INTRODUCED violate Wikipedia policy.\n\nCRITICAL: You are evaluating what this item CHANGED, not the page content before it. The diff shows removed lines (prefixed "-") and added lines (prefixed "+"). Only ADDED content can be a new violation. Removing bad content is a GOOD item. Adding references, citations, and sources is GOOD — it improves verifiability, not the opposite.\n\nitem CONTEXT:\n- Page: "${e.page.title}" (${r.name} namespace)\n- Categories: ${c}${u?"\n- ⚠ BLP: This page is about a living person. Unsourced negative claims are a serious concern.":""}\n- User: "${e.user.name}" (${l}, warning level: ${e.user.warning}/4)\n- ORES vandalism probability: ${(100*e.ores).toFixed(0)}%\n- Size change: ${e.sizediff>0?"+":""}${e.sizediff} bytes\n- Flagged minor: ${e.minor?"yes":"no"}\n- Summary: ${e.comment||"(empty)"}\n- Tags: ${(null===(n=e.tags)||void 0===n?void 0:n.join(", "))||"(none)"}\n\nWHAT TO CHECK:\n1. VANDALISM: Does the item add nonsense, profanity as attacks, hoaxes, blanking, or deliberate misinformation? (WP:VANDALISM)\n2. NPOV: Does the item add clearly biased or one-sided language that is not presented neutrally? (WP:NPOV)\n3. VERIFIABILITY: Does the item add claims that are extraordinary or contentious WITHOUT any sourcing? Note: adding "<ref>" tags, URLs, or citation templates is adding sources — this is the OPPOSITE of a verifiability problem. (WP:V)\n4. ORIGINAL RESEARCH: Does the item add novel analysis, synthesis, or unpublished interpretation not attributable to any source? Simply adding text IS NOT original research if it restates commonly known facts or is sourced. Adding citations is NEVER original research. (WP:NOR)\n5. BLP: If this is a BLP article, does the item add unsourced or poorly-sourced negative material about the subject? (WP:BLP)\n\nWHAT IS NOT A VIOLATION:\n- Adding references, citations, "<ref>" tags, or URLs (this IMPROVES the article)\n- Removing vandalism or bad content\n- Fixing grammar, spelling, formatting, or wikilinks\n- Content about controversial topics written in a neutral, encyclopedic tone\n- Wikipedia is NOT censored — explicit content on appropriate pages is allowed (WP:NOTCENSORED)\n- Absent or auto-generated item summaries (e.g. "/* Section name */") are normal, not violations\n- ORES scores and warning levels are hints — do NOT treat them as evidence by themselves\n\nASSESSMENT SCALE:\n- "Good": No policy issues. Normal constructive item.\n- "Review": Minor concerns; a human should glance at it.\n- "Suspicious": Likely problematic; warrants close scrutiny.\n- "Bad": Clear policy violation.\n\nWhen in doubt between two ratings, choose the LESS severe one. Most items on Wikipedia are constructive — reflect that in your assessments.\n\nFor issues, use short policy codes (e.g. "WP:VANDALISM", "WP:NPOV", "WP:BLP"). Keep your explanation to 1-3 sentences.\n\nFORMATTING: Write your explanation as inline HTML with properly opened AND closed tags. Never use self-closing tags like <code/> or <b/> — always use an opening and closing pair.\nExample: <b>Clear vandalism</b> — added <code>lol hacked</code> which violates <i>WP:VANDALISM</i>.\nAllowed tags: <b>...</b>, <i>...</i>, <code>...</code>. No markdown, no block tags.\n\nDIFF:\n${a}\n`)},username:async e=>{var t;return(0,i.fullTrim)(`\nYou are an automated Wikipedia username policy reviewer. Determine whether the username below violates Wikipedia's username policy.\n\nUSERNAME: ${e.user.name}\nPAGE CONTEXT: ${(null===(t=e.page)||void 0===t?void 0:t.title)||"(unknown)"}\n\nThe page context is provided ONLY to check for potential conflict-of-interest (e.g. a user named "AcmeCorp" iteming the Acme Corporation article). A controversial page topic does NOT make the username problematic.\n\nVIOLATION CATEGORIES (flag ONLY if the username clearly and unambiguously fits one):\n\n1. Offensive — The name is unambiguously profane, threatening, sexually explicit, or promotes vandalism. Merely edgy, weird, or humorous names do NOT qualify. (WP:U#OFFENSIVE)\n2. Disruptive — The name clearly declares intent to disrupt or vandalize (e.g. "I Will Vandalize"). (WP:U#DISRUPTIVE)\n3. Libelous — The name makes a clearly false or disparaging claim about a specific real person, or reveals private personal information. (WP:U#LIBEL)\n4. Misleading — The name impersonates a specific real person, or falsely claims special permissions by including terms like "admin", "sysop", "bureaucrat", "checkuser". (WP:U#MISLEADING)\n5. Promotional — The name is a URL or email address whose clear purpose is advertising or revenue. Containing a brand name alone is NOT enough. (WP:U#PROMO)\n6. Shared — The name unambiguously represents a company, organization, or role rather than an individual (e.g. "XYZ Foundation", "Secretary of ABC"). Names like "JohnAtAcme" or "AcmeFan123" are fine — they clearly identify an individual. (WP:U#SHARED)\n\nDECISION RULES:\n- Flag ONLY clear, unambiguous violations. Borderline = no flag.\n- Numbers at the end of a username (e.g. "itemor2847", "WikiFan99") are completely normal and NOT a violation of any kind.\n- Creative, odd, humorous, or meaningless usernames are NOT violations.\n- Containing a real word that could be offensive in some context is NOT enough — the name must be clearly and intentionally offensive.\n- When in doubt: do NOT flag. Set flag to false.\n- If not flagging, set explanation to "No violation."\n\nFORMATTING: Write your explanation as inline HTML with properly opened AND closed tags. Never use self-closing tags like <code/> or <b/> — always use an opening and closing pair.\nExample: Username contains <code>sysop</code> which falsely implies <i>WP:U#MISLEADING</i> permissions.\nAllowed tags: <b>...</b>, <i>...</i>, <code>...</code>. No markdown, no block tags.\n`)}}),this.ws=e,this.settings=e.store.settings.AI,this.config=t}async test(){return!1}async models(){return[]}}function d(e){var t;const n=document.createElement("div");n.innerHTML=e;const s=[];for(const e of n.querySelectorAll("tr")){const t=e.querySelector(".diff-deletedline"),n=e.querySelector(".diff-addedline"),i=e.querySelector(".diff-context");t&&s.push(`- ${t.textContent.trim()}`),n?s.push(`+ ${n.textContent.trim()}`):i&&s.push(` ${i.textContent.trim()}`)}return s.length>0?s.join("\n"):(null===(t=n.textContent)||void 0===t?void 0:t.trim())||""}t.AI=l,r(l,"providers",{});const c={type:"object",properties:{issues:{type:"array",items:{type:"object",properties:{policy:{type:"string"},severity:{type:"string",enum:["Low","Medium","High","Critical"]}},required:["policy","severity"]}},explanation:{type:"string"},assessment:{type:"string",enum:["Good","Review","Suspicious","Bad"]},confidence:{type:"number",minimum:0,maximum:1}},required:["assessment","confidence","issues","explanation"]},u={type:"object",properties:{issues:{type:"array",items:{type:"object",properties:{policy:{type:"string",enum:["Offensive","Disruptive","Libelous","Misleading","Promotional","Shared"]},severity:{type:"string",enum:["Low","Medium","High","Critical"]}},required:["policy","severity"]}},explanation:{type:"string"},flag:{type:"boolean"},confidence:{type:"number",minimum:0,maximum:1}},required:["flag","confidence","issues","explanation"]};class p extends l{async test(){try{return(await fetch(`${this.config.server}/api/version`,{method:"GET"})).ok}catch(e){return!1}}async models(){try{const e=await fetch(`${this.config.server}/api/tags`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!e.ok)throw new Error(`Ollama API error: ${e.status} ${e.statusText}`);return(await e.json()).models||[]}catch(e){throw e}}async fetch(e,t,n=null){try{const s=this.prompt[e](t),i={method:"POST",headers:{"Content-Type":"application/json"}},a={model:this.config.model,prompt:await s,stream:!1,options:{temperature:.1,top_p:.9,num_predict:1024},format:"edit"===e?c:u};let r;i.body=JSON.stringify(a),n&&(i.signal=n);try{if(r=await fetch(`${this.config.server}/api/generate`,i),!r.ok)throw new Error(`Ollama API error: ${r.status} ${r.statusText}`);const e=await r.json();if(!e.response)throw new Error("Empty response from Ollama");return JSON.parse(e.response)}catch(e){return{error:e.message||"Ollama request failed"}}}catch(e){return{error:e.message||"Ollama request failed"}}}}t.Ollama=p,l.registerProvider("Ollama",p)},8169(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.AudioManager=void 0;var s=n(4192),i=n(1258);const a={startup:{type:"sound",title:"Startup Sound",description:"Sound played when WikiShield starts up.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/startup.wav"},music:{type:"category",title:"Music",description:"Background music tracks.",volume:1,properties:{zen_mode:{type:"sound",title:"Zen Mode",description:"Background audio played in Zen mode.",volume:1,data:"custom://zen_mode",preview:!1}}},ui:{type:"category",title:"User Interface Sounds",description:"Sounds used for user interface interactions.",volume:1,properties:{click:{type:"sound",title:"Click Sound",description:"Sound played when clicking on interface elements.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/click.wav"}}},queue:{type:"category",title:"Queue Sounds",description:"Sounds played for queue events.",volume:1,properties:{ores:{type:"sound",title:"ORES Alert",description:"Sound played due to a high ORES score.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/ores.wav"},mention:{type:"sound",title:"Mention Alert",description:"Sound played when your username is mentioned in an edit.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/mention.wav"}}},notification:{type:"category",title:"Notification Sounds",description:"Sounds played for various notifications.",volume:1,properties:{alert:{type:"sound",title:"Alert Sound",description:"Sound played for alerts.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/alert.wav"},message:{type:"sound",title:"Message Sound",description:"Sound played for messages.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/message.wav"},toast:{type:"sound",title:"Toast Sound",description:"Sound played for toast notifications.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/toast.wav"}}},action:{type:"category",title:"Action Sounds",description:"Sounds played for various user actions.",volume:1,properties:{default:{type:"sound",title:"Default Action Sound",description:"Sound played for default actions.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/action.wav"},failed:{type:"sound",title:"Failed Action Sound",description:"Sound played when an action fails.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/failed.wav"},report:{type:"sound",title:"Report Action Sound",description:"Sound played for report actions.",volume:1,data:"https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/audio/report.wav"}}}};t.AudioManager=class{constructor(e){this.ws=e,this.audio=a,this.soundEffects=new Map,this.previews=new Map,this.previewing=!1}async init(){this.zengine=new i.Zengine,this.zengine.debug=this.ws.__DEV__,await this.zengine.init(),this.zengine.setMasterVolume(this.ws.store.settings.audio.volume["master.music.zen_mode"])}async playSound(e,t,n=!1,i){if(!n){const e=this.ws.store.settings.zen_mode;if(e.enabled&&!e.sound.enabled)return}const a=this.getSound(e);if(!a||!a.data)return;const r=this.getVolume(e),o=new Audio(a.data);o.volume=!n&&this.previewing?0:r,"mediaSession"in navigator&&(navigator.mediaSession.setActionHandler("play",()=>{}),navigator.mediaSession.setActionHandler("pause",()=>{}),navigator.mediaSession.setActionHandler("previoustrack",()=>{}),navigator.mediaSession.setActionHandler("nexttrack",()=>{}));const l=(0,s.generateRandomUUID)();n&&(this.muteId=l,this.previewing=!0,this.stopPreviews(),this._muteAll(),this.previews.set(o,e)),this.soundEffects.set(o,e);const d=new Promise((e,t)=>{o.resolve=e,o.reject=t});o.onended=()=>{o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))},o.onerror=()=>{o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))};let c=!1;return o.onplay=()=>{c||(c=!0,i&&i())},null==t||t.addEventListener("abort",()=>{o.pause(),o.src="",o.resolve(),this.soundEffects.delete(o),n&&(this.previewing=!1,setTimeout(()=>{this.muteId===l&&this._unmuteAll()},250),this.previews.delete(o))}),window.ineractedWithPage?await o.play():null==i||i(),d}async previewSound(e){const t=this.getSound(e);if(!t||!t.data)return;this._muteAll();const n=new Audio(t.data);n.volume=this.getVolume(e),this.previews.set(n,e);const s=()=>{this.previews.delete(n),0===this.previews.size&&this._unmuteAll()};n.onended=s,n.onerror=s,window.ineractedWithPage&&await n.play()}stopPreviews(){for(const e of this.previews.keys())e.resolve(),e.pause(),e.onended=null,e.onerror=null,e.src="";this.previews.clear(),this._unmuteAll()}onvolumechanged(){if(this.zengine.setMasterVolume(this.ws.store.settings.audio.volume["master.music.zen_mode"]),this.previewing)for(const[e,t]of this.previews.entries()){const n=this.getVolume(t);e.volume=n}else for(const[e,t]of this.soundEffects.entries()){const n=this.getVolume(t);e.volume=n}}_muteAll(){for(const e of this.soundEffects.keys())e.volume=0}_unmuteAll(){for(const[e,t]of this.soundEffects.entries())e.volume=this.getVolume(t)}getSound(e){let t={type:"category",properties:this.audio};for(const n of e){if("category"!==t.type)return null;if(t=t.properties[n],!t)return null}return t}getVolume(e){const t=this.ws.store.settings.audio.volume;let n=t.master,s={type:"category",properties:this.audio};const i=["master"];for(const a of e){if(i.push(a),"category"!==s.type)return n;if(s=s.properties[a],!s)break;const e=t[i.join(".")];void 0!==e&&(n*=e)}return n}}},1258(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Zengine=void 0;class n{constructor(){this.audioContext=null,this.masterGain=null,this.isPlaying=!1,this.debug=!1,this.layers={bass:{oscillators:[],gains:[],compressor:null},pad:{oscillators:[],gains:[],filter:null,reverb:null}},this.nextChordTimeout=null,this.baseFrequency=65.41,this.currentKey=0,this.chordLibrary={maj7:{bass:[0],pad:[0,7,11,16,19],tension:.1},min7:{bass:[0],pad:[0,7,10,15,19],tension:.15},maj9:{bass:[0],pad:[0,7,11,14,19],tension:.12},min9:{bass:[0],pad:[0,7,10,14,19],tension:.18},sus2:{bass:[0],pad:[0,7,12,14,19],tension:.25},sus4:{bass:[0],pad:[0,7,12,17,19],tension:.28},add9:{bass:[0],pad:[0,7,14,16,21],tension:.15},madd9:{bass:[0],pad:[0,7,14,15,21],tension:.2},openvoice:{bass:[0],pad:[0,7,12,19,24],tension:.08},"6add9":{bass:[0],pad:[0,7,9,14,19],tension:.18}},this.chordCompatibility={maj7:["maj9","min7","sus2","add9","openvoice","6add9"],min7:["maj7","min9","sus4","madd9","openvoice"],maj9:["maj7","add9","sus2","6add9","openvoice"],min9:["min7","madd9","sus2","maj9"],sus2:["maj7","maj9","add9","openvoice","sus4"],sus4:["maj7","sus2","min7","openvoice"],add9:["maj9","sus2","maj7","openvoice","6add9"],madd9:["min9","min7","add9","sus2"],openvoice:["sus2","maj7","add9","maj9"],"6add9":["maj7","maj9","add9","sus2"]},this.currentChordName="maj7",this.currentTension=.1}init(){this.audioContext||(this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.masterGain=this.audioContext.createGain(),this.masterGain.connect(this.audioContext.destination),this.masterGain.gain.value=.2,this.setupLayerEffects())}async start(){this.isPlaying||(this.init(),"suspended"===this.audioContext.state&&await this.audioContext.resume(),this.isPlaying=!0,this.currentKey=Math.floor(12*Math.random()),this.playNextChord())}setupLayerEffects(){const e=this.audioContext.createDynamicsCompressor();e.threshold.value=-30,e.knee.value=40,e.ratio.value=12,e.attack.value=.003,e.release.value=.25,e.connect(this.masterGain),this.layers.bass.compressor=e;const t=this.audioContext.createBiquadFilter();t.type="lowpass",t.frequency.value=1200,t.Q.value=.5;const n=this.audioContext.createDelay(2);n.delayTime.value=.4;const s=this.audioContext.createGain();s.gain.value=.3,t.connect(n),n.connect(s),s.connect(t),t.connect(this.masterGain),this.layers.pad.filter=t,this.layers.pad.reverb={delay:n,gain:s}}playNextChord(){if(!this.isPlaying)return;const e=this.chooseNextChord(),t=this.currentChordName;if(this.currentChordName=e,this.currentTension=this.chordLibrary[e].tension,this.debug&&console.log("[MusicEngine] Chord changed",{from:t,to:e,tension:this.currentTension,key:this.currentKey,timestamp:this.audioContext.currentTime}),Math.random()<.08){const e=this.currentKey;this.currentKey=(this.currentKey+[2,5,7][Math.floor(3*Math.random())])%12,this.debug&&console.log("[MusicEngine] Key changed",{from:e,to:this.currentKey})}this.transitionToChord(e);const n=12e3+1e4*Math.random();this.nextChordTimeout=setTimeout(()=>this.playNextChord(),n)}chooseNextChord(){const e=this.chordCompatibility[this.currentChordName]||Object.keys(this.chordLibrary),t=e.map(e=>({name:e,weight:this.chordLibrary[e].tension<.2?2:1})),n=t.reduce((e,t)=>e+t.weight,0);let s=Math.random()*n;for(const e of t)if(s-=e.weight,s<=0)return e.name;return e[0]}transitionToChord(e){const t=this.chordLibrary[e];if(!t)return;const n=6+3*Math.random();["bass","pad"].forEach(e=>this.createLayer(e,t[e],n))}createLayer(e,t,n){if(null==t||!t.length)return;const s=this.audioContext.currentTime,i=this.layers[e];if(i.gains&&i.gains.length>0){const e=[...i.oscillators],t=[...i.gains];t.forEach(e=>{try{e.gain.cancelScheduledValues(s),e.gain.setValueAtTime(e.gain.value,s),e.gain.linearRampToValueAtTime(0,s+n)}catch(e){}}),setTimeout(()=>{e.forEach(e=>{try{e.stop(),e.disconnect()}catch(e){}}),t.forEach(e=>{try{e.disconnect()}catch(e){}})},1e3*n+100)}const a=[],r=[],o=[];t.forEach((t,l)=>{const d=this.baseFrequency*Math.pow(2,(this.currentKey+t)/12);o.push(d);const c=this.audioContext.createOscillator();c.type="bass"===e?"sine":"triangle",c.frequency.value=d,c.detune.value=6*(Math.random()-.5);const u=this.audioContext.createGain();u.gain.value=0,c.connect(u),"bass"===e&&i.compressor?u.connect(i.compressor):i.filter&&u.connect(i.filter),c.start(s),a.push(c),r.push(u);const p="bass"===e?.15:.08-.01*l;u.gain.setValueAtTime(0,s),u.gain.linearRampToValueAtTime(p,s+n)}),this.debug&&console.log("[MusicEngine] Layer created",{layer:e,frequencies:o,volumes:r.map(e=>e.gain.value),fadeDuration:n}),i.oscillators=a,i.gains=r}stop(){this.isPlaying=!1,this.nextChordTimeout&&clearTimeout(this.nextChordTimeout),this.debug&&console.log("[MusicEngine] Stopping music engine",{timestamp:this.audioContext.currentTime});const e=this.audioContext.currentTime;if(Object.values(this.layers).forEach(t=>{t.gains&&t.gains.forEach(t=>{try{t.gain.setValueAtTime(t.gain.value,e),t.gain.linearRampToValueAtTime(0,e+.5)}catch(e){}}),t.oscillators&&setTimeout(()=>{t.oscillators.forEach(e=>{try{e.stop(),e.disconnect()}catch(e){}}),t.oscillators=[],t.gains&&(t.gains.forEach(e=>{try{e.disconnect()}catch(e){}}),t.gains=[])},550)}),this.masterGain)try{this.masterGain.gain.setValueAtTime(this.masterGain.gain.value,e),this.masterGain.gain.linearRampToValueAtTime(0,e+.5)}catch(e){}}setMasterVolume(e){if(this.masterGain){const t=this.masterGain.gain.value;this.masterGain.gain.value=e,this.debug&&console.log("[MusicEngine] Master volume changed",{from:t,to:e})}}}t.Zengine=class{constructor(){this.audioContext=null,this.sounds=[],this.activeSounds=new Map,this.masterGainNode=null,this.isRunning=!1,this.currentEnvironment=null,this.eventLoopInterval=null,this.activityLevel=4,this.musicEngine=null,this.debug=!1}async init(){this.musicEngine=new n,this.musicEngine.init(),this.musicEngine.debug=this.debug;const e=await fetch("https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/bbc-sounds.json"),t=await e.json();return this.sounds=this.categorizeSounds(t),this.debug&&console.log("[Zengine] Initialized",{soundCount:this.sounds.length,categories:[...new Set(this.sounds.map(e=>e.category))]}),this.sounds.length}categorizeSounds(e){return e.map(e=>{var t;const n=(e.tags||[]).map(e=>e.toLowerCase()),s=(e.description||"").toLowerCase(),i=parseFloat((null===(t=e.technicalMetadata)||void 0===t?void 0:t.duration)||e.duration)||0,a=this.detectCategory(n,s),r=i>60?"ambient":i>15?"feature":"event";return{id:e.id,duration:i,description:e.description,category:a,role:r}})}detectCategory(e,t){const n=[...e,t].join(" ");return/rain|drizzle/i.test(n)?"rain":/ocean|sea|wave/i.test(n)?"ocean":/stream|river|water/i.test(n)?"water-flow":/wind|breeze/i.test(n)?"wind":/bird/i.test(n)?"bird":/cricket|insect/i.test(n)?"insect":"other"}generateEnvironment(){const e=[{name:"Gentle Rain",requiredAmbient:["rain"],commonCategories:["bird"],weather:"rain"},{name:"Ocean Shore",requiredAmbient:["ocean"],commonCategories:["bird","wind"],weather:"clear"},{name:"Forest Stream",requiredAmbient:["water-flow"],commonCategories:["bird","insect"],weather:"clear"}],t=e[Math.floor(Math.random()*e.length)];return this.debug&&console.log("[Zengine] Environment generated",{name:t.name,weather:t.weather,ambientRequirements:t.requiredAmbient,commonSounds:t.commonCategories}),t}getEnvironmentSounds(e){return{ambient:this.sounds.filter(t=>"ambient"===t.role&&e.requiredAmbient.includes(t.category)),events:this.sounds.filter(t=>"event"===t.role&&e.commonCategories.includes(t.category))}}async start(){this.isRunning||(0===this.sounds.length&&await this.init(),this.musicEngine.isPlaying||await this.musicEngine.start(),this.audioContext||(this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.masterGainNode=this.audioContext.createGain(),this.masterGainNode.connect(this.audioContext.destination),this.masterGainNode.gain.value=.3),"suspended"===this.audioContext.state&&await this.audioContext.resume(),this.isRunning=!0,this.currentEnvironment=this.generateEnvironment(),this.debug&&console.log("[Zengine] Engine started",{environment:this.currentEnvironment.name,audioContextState:this.audioContext.state}),await this.startAmbientLayers(),this.startEventLoop())}async startAmbientLayers(){const e=this.getEnvironmentSounds(this.currentEnvironment),t=Math.min(e.ambient.length,2);for(let n=0;n<t;n++){const t=e.ambient[Math.floor(Math.random()*e.ambient.length)];this.activeSounds.has(t.id)||await this.playSound(t,"ambient",.35+.1*Math.random())}}startEventLoop(){this.eventLoopInterval=setInterval(()=>this.processEvents(),3e3),this.debug&&console.log("[Zengine] Event loop started")}async processEvents(){if(!this.isRunning)return;const e=this.getEnvironmentSounds(this.currentEnvironment);if(Array.from(this.activeSounds.values()).filter(e=>"ambient"!==e.role).length<this.activityLevel&&e.events.length>0&&Math.random()<.5){const t=e.events[Math.floor(Math.random()*e.events.length)];await this.playSound(t,"event",.12+.08*Math.random())}}async playSound(e,t,n){if(!this.activeSounds.has(e.id))try{const s=e.url||`https://sound-effects-media.bbcrewind.co.uk/mp3/${e.id}.mp3`,i=new Audio;i.crossOrigin="anonymous",i.src=s,i.preload="auto";const a=this.audioContext.createMediaElementSource(i),r=this.audioContext.createGain();r.gain.value=n,a.connect(r),r.connect(this.masterGainNode),this.activeSounds.set(e.id,{sound:e,audio:i,source:a,gainNode:r,role:t,volume:n}),this.debug&&console.log("[Zengine] Sound started playing",{soundId:e.id,description:e.description,role:t,volume:n,category:e.category,duration:e.duration,activeCount:this.activeSounds.size}),i.addEventListener("ended",()=>{this.removeSound(e.id),"ambient"===t&&this.isRunning&&setTimeout(()=>this.playSound(e,t,n),1e3)}),i.addEventListener("error",()=>this.removeSound(e.id)),await i.play()}catch(t){console.error("[Zengine] Sound error:",e.id,t)}}removeSound(e){const t=this.activeSounds.get(e);if(t){try{t.audio.pause(),t.gainNode.disconnect(),t.source.disconnect()}catch(e){}this.debug&&console.log("[Zengine] Sound removed",{soundId:e,description:t.sound.description,activeCount:this.activeSounds.size-1}),this.activeSounds.delete(e)}}stop(){this.musicEngine.isPlaying&&this.musicEngine.stop(),this.isRunning=!1,this.eventLoopInterval&&(clearInterval(this.eventLoopInterval),this.eventLoopInterval=null),this.debug&&console.log("[Zengine] Engine stopping",{activeSounds:this.activeSounds.size}),this.activeSounds.forEach((e,t)=>{try{e.audio.pause(),e.audio.currentTime=0}catch(e){}const n=this.audioContext.currentTime;e.gainNode.gain.cancelScheduledValues(n),e.gainNode.gain.setValueAtTime(e.gainNode.gain.value,n),e.gainNode.gain.linearRampToValueAtTime(0,n+.5),setTimeout(()=>this.removeSound(t),500)}),this.audioContext&&"running"===this.audioContext.state&&this.audioContext.suspend(),this.debug&&console.log("[Zengine] Engine stopped")}setMasterVolume(e){if(this.masterGainNode){const t=this.masterGainNode.gain.value;this.masterGainNode.gain.value=e,this.debug&&console.log("[Zengine] Master volume changed",{from:t,to:e,musicEngineVolume:.25*e})}this.musicEngine.setMasterVolume(.25*e)}}},870(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.conditions=void 0;var s=n(372);t.conditions={true:{title:"True",check:(e,t,n)=>!0},false:{title:"False",check:(e,t,n)=>!1},"account-admin":{title:"You are an admin",check:(e,t,n)=>!0===e.groups.sysop},"item-selected":{title:"An item is selected",check:(e,t,n)=>null!==t},"edit-selected":{title:"An edit is selected",check:(e,t,n)=>"edit"===s.Queue.groups[null==t?void 0:t.type]},"logevent-selected":{title:"A logentry is selected",check:(e,t,n)=>"logevent"===s.Queue.groups[null==t?void 0:t.type]},revertable:{title:"Current item is revertable",check:(e,t,n)=>{let i=null==t?void 0:t.type;return"abuselog"===i&&null!=t&&t.revid&&(i="edit"),"edit"===s.Queue.groups[i]}},pending:{title:"Current item is pending review",check:(e,t,n)=>!!e.queue.pending.has(null==t?void 0:t.id)},"user-registered":{title:"Selected user is registered",check:(e,t,n)=>{var s;return!1===(null==t||null===(s=t.user)||void 0===s?void 0:s.anon)}},"user-ip":{title:"Selected user is an IP address",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.ip)}},"user-temp":{title:"Selected user is a temporary account",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.temp)}},"user-empty-talk":{title:"Selected user's talk page is empty",check:(e,t,n)=>{var s;return void 0===(null==t||null===(s=t.user)||void 0===s?void 0:s.talk)}},"user-blocked":{title:"Selected user is blocked",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.user)||void 0===s?void 0:s.blocked)}},"user-edit-count":{title:"Selected user's edit count is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"count",title:"Edit count",type:"number",default:0}],check:(e,t,n)=>{var s,i;const a=-1===(null==t||null===(s=t.user)||void 0===s?void 0:s.editcount)?1/0:(null==t||null===(i=t.user)||void 0===i?void 0:i.editcount)||0,r=Number(n.count);switch(n.condition){case"<":return a<r;case"≤":return a<=r;case"=":return a===r;case"≥":return a>=r;case">":return a>r;default:return!1}}},"user-final-warning":{title:"Selected user at final warning level",check:(e,t,n)=>{var s,i;return"4"===(null==t||null===(s=t.user)||void 0===s?void 0:s.warning)||"4im"===(null==t||null===(i=t.user)||void 0===i?void 0:i.warning)}},"user-has-warnings":{title:"Selected user has no warnings",check:(e,t,n)=>{var s;return"0"!==(null==t||null===(s=t.user)||void 0===s?void 0:s.warning)}},"edit-pending":{title:"Edit is pending",check:(e,t,n)=>e.queue.pending.has(null==t?void 0:t.id)},"edit-minor":{title:"Edit is marked as minor",check:(e,t,n)=>!0===(null==t?void 0:t.minor)},"edit-size":{title:"Edit size is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"size",title:"Size",type:"number",default:0}],check:(e,t,n)=>{const s=(null==t?void 0:t.sizediff)||0,i=Number(n.size);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"abs-edit-size":{title:"Absolute edit size is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"size",title:"Size",type:"number",min:0,default:0}],check:(e,t,n)=>{const s=Math.abs((null==t?void 0:t.sizediff)||0),i=Number(n.size);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"edit-ores-score":{title:"Edit ORES score is",parameters:(e,t)=>[{id:"condition",title:"Condition",type:"choice",options:["<","≤","=","≥",">"],default:"="},{id:"score",title:"Score",type:"number",min:0,max:1,default:0}],check:(e,t,n)=>{const s=(null==t?void 0:t.ores_score)||0,i=Number(n.score);switch(n.condition){case"<":return s<i;case"≤":return s<=i;case"=":return s===i;case"≥":return s>=i;case">":return s>i;default:return!1}}},"user-highlighted":{title:"Selected user is highlighted",check:(e,t,n)=>{var s;return e.store.highlight.users.has(null==t||null===(s=t.user)||void 0===s?void 0:s.name)}},"user-whitelisted":{title:"Selected user is whitelisted",check:(e,t,n)=>{var s;return e.store.whitelist.users.has(null==t||null===(s=t.user)||void 0===s?void 0:s.name)}},"page-highlighted":{title:"Selected page is highlighted",check:(e,t,n)=>{var s;return e.store.highlight.pages.has(null==t||null===(s=t.page)||void 0===s?void 0:s.title)}},"page-whitelisted":{title:"Selected page is whitelisted",check:(e,t,n)=>{var s;return e.store.whitelist.pages.has(null==t||null===(s=t.page)||void 0===s?void 0:s.title)}},"page-watched":{title:"Selected page is watched",check:(e,t,n)=>{var s;return!0===(null==t||null===(s=t.page)||void 0===s?void 0:s.watched)}},"tag-highlighted":{title:"Selected edit has a highlighted tag",check:(e,t,n)=>{for(const n of(null==t?void 0:t.tags)||[])if(e.store.highlight.tags.has(n))return!0;return!1}},"tag-whitelisted":{title:"Selected edit has a whitelisted tag",check:(e,t,n)=>{for(const n of t.tags||[])if(e.store.whitelist.tags.has(n))return!0;return!1}},"in-recent-queue":{title:"In recent changes queue",check:(e,t,n)=>"recent"===e.queue.current.type},"in-pending-queue":{title:"In pending changes queue",check:(e,t,n)=>"pending"===e.queue.current.type},"in-user-queue":{title:"In user creations queue",check:(e,t,n)=>"users"===e.queue.current.type},"in-watchlist-queue":{title:"In watchlist queue",check:(e,t,n)=>"watchlist"===e.queue.current.type}}},9808(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.validateShortcut=t.controls=t.buildShortcut=void 0;const n=t.controls=new Set(["!","@","#","$","%","^","&","*","(",")","1","2","3","4","5","6","7","8","9","0","q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m","-","=","[","]","\\",";","'",",",".","/","_","+","{","}","|",":",'"',"<",">","?"," ","arrowleft","arrowup","arrowdown","arrowright"]);t.buildShortcut=e=>{const t=[];["ctrl","shift","alt","meta"].forEach(n=>{e[`${n}Key`]&&t.push(n)});const s=e.key.toLowerCase();return n.has(s)&&t.push(s),t.join("+")};t.validateShortcut=e=>{const t=e.toLowerCase().split("+");if(0===t.length)return!1;const s=new Set;for(const e of t){if(s.has(e))return!1;if(s.add(e),"ctrl"!==e&&"shift"!==e&&"alt"!==e&&!n.has(e))return!1}return t.some(e=>"ctrl"!==e&&"shift"!==e&&"alt"!==e)}},985(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.events=void 0;var s=n(372),i=n(7054),a=n(955),r=n(863),o=n(5643);t.events={"next-item":{title:"Go to next item",icon:"fas fa-arrow-right",script:(e,t,n)=>(e.queue.next(),{valid:!0})},"previous-item":{title:"Go to previous item",icon:"fas fa-arrow-left",script:(e,t,n)=>(e.queue.previous(),{valid:!0})},"clear-queue":{title:"Clear queue",icon:"fas fa-trash-can",valid:(e,t,n)=>"pending"===e.queue.current.type?{valid:!1,reason:"Pending edits queue cannot be cleared."}:{valid:!0},script:(e,t,n)=>(e.queue.clear(e.queue.current.type),{valid:!0})},"next-queue":{title:"Go to next queue",icon:"fas fa-forward",script:(e,t,n)=>{const i=s.Queue.types.map(t=>({name:t,...e.store.settings.queue[t]}));i.sort((e,t)=>e.order-t.order);const a=i.filter(e=>e.enabled);if(0===a.length)return{valid:!1,reason:"No queues are enabled."};const r=a.findIndex(t=>t.name===e.queue.current.type);return e.queue.switch(a[(r+1)%a.length].name),{valid:!0}}},"previous-queue":{title:"Go to previous queue",icon:"fas fa-forward",script:(e,t,n)=>{const i=s.Queue.types.map(t=>({name:t,...e.store.settings.queue[t]}));i.sort((e,t)=>e.order-t.order);const a=i.filter(e=>e.enabled);if(0===a.length)return{valid:!1,reason:"No queues are enabled."};const r=a.findIndex(t=>t.name===e.queue.current.type);return e.queue.switch(a[(r-1+a.length)%a.length].name),{valid:!0}}},"accept-pending-edit":{title:"Accept pending edit",icon:"fas fa-check",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Accepting pending edit",valid:(e,t,n)=>t?e.rights.review?e.queue.pending.has(t.id)?{valid:!0}:{valid:!1,reason:"This edit is not pending review."}:{valid:!1,reason:"You do not have permission to review pending changes."}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{const s=e.queue.pending.get(t.id);if(!s)return{valid:!1,reason:"Pending edit not found."};const i=`${s.count||""} pending revision${1===s.count?"":"s"}`,a=Object.entries(s.users||{}).map(t=>[e.api.user(t[0]),t[1]]);a.sort((e,t)=>t[1]-e[1]);const r=Math.max(a.reduce((e,t)=>{const n=t[0].length;return e[0]+n<=250?[e[0]+n,e[1]+1]:e},[0,0])[1],1);let o="";const l=a.length;if(l>r){const e=a.slice(0,r).map(e=>e[0]),t=l-e.length;o=`${e.join(", ")}, and ${t} other${1===t?"":"s"}`}else o=(e=>{switch(e.length){case 0:case 1:return e[0]||"";case 2:return`${e[0]} and ${e[1]}`;default:return`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}})(a.map(e=>e[0]));return await e.api.acceptPendingEdit(t.pending.revid,e.api.summary(`Accepted ${i} by ${o}`,n.summary))},successful:(e,t,n)=>{e.store.statistics.pending_changes_reviewed.accepted++}},"reject-pending-edit":{title:"Reject pending edit",icon:"fas fa-xmark",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Rejecting pending edit",valid:(e,t,n)=>t?e.rights.review?e.queue.pending.has(t.id)?{valid:!0}:{valid:!1,reason:"This edit is not pending review."}:{valid:!1,reason:"You do not have permission to review pending changes."}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{const s=e.queue.pending.get(t.id);if(!s)return{valid:!1,reason:"Pending edit not found."};const i=`${s.count||""} pending revision${1===s.count?"":"s"}`,a=Object.entries(s.users||{}).map(t=>[e.api.user(t[0]),t[1]]);a.sort((e,t)=>t[1]-e[1]);const r=Math.max(a.reduce((e,t)=>{const n=t[0].length;return e[0]+n<=250?[e[0]+n,e[1]+1]:e},[0,0])[1],1);let o="";const l=a.length;if(l>r){const e=a.slice(0,r).map(e=>e[0]),t=l-e.length;o=`${e.join(", ")}, and ${t} other${1===t?"":"s"}`}else o=(e=>{switch(e.length){case 0:case 1:return e[0]||"";case 2:return`${e[0]} and ${e[1]}`;default:return`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}})(a.map(e=>e[0]));return await e.api.rejectPendingEdit(t.id,s.prior,t.page.title,e.api.summary(`Rejected ${i} by ${o} to [[Special:Diff/${s.prior}|last stable revision]]`,n.summary))},successful:(e,t,n)=>{e.store.statistics.pending_changes_reviewed.rejected++}},revert:{title:"Revert and auto warn/report",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]}],progress:"Reverting edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;if("abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i])return{valid:!1,reason:"Edit can only be reverted when an edit is selected."};return"summary"in(0,a.getWarningFromLookup)(n.warning)?{valid:!0}:{valid:!1,reason:"Selected warning template does not support reverting."}},script:async(e,t,n)=>{var r;const l=(0,a.getWarningFromLookup)(n.warning);if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Reverting yourself","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to revert their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to revert the edit on it?`)||null!==(r=t.tags)&&void 0!==r&&r.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to revert it?"))return{valid:!1,reason:"Revert cancelled by user."};const d=await(async()=>await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted edits by ${e.api.user(t.user.name)}`,l.summary)))();if(!d.valid)return d;switch(e.store.statistics.reverts_made.total++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}let c,u;const p=await(async()=>{const n=`User talk:${t.user.name}`,i=e.util.monthSectionName(),a=(await e.api.getPagesContent([n]))[n]||"",r=e.util.getPageSections(a);c=e.queue.getWarningHistory(a).map(e=>e.template);let o="new";const d=r.length;for(let e=0;e<d;e++)r[e].title===i&&(o=e+1);let p;u=e.queue.getWarningLevel(a),p="string"==typeof l.auto?l.auto:"function"==typeof l.auto?l.auto(t,u):l.auto[u];const g=l.templates.find(e=>e.name===p.toString());if(!g)return{valid:!0};c.push(g.template);let h="Message about ";"edit"===s.Queue.groups[t.type]?h+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?h+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:h+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:h+=`[[${t.page.title}]]`;let m="";m="new"===o?`{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`:`${r[o-1].heading}\n${r[o-1].content}\n\n{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`;const v=await e.api.editSection(n,o,i,m,e.api.summary(h,`${l.name} (${g.name})`));if(v.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(p)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,p),e.store.statistics.warnings_issued.total++,p){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return v})();if(!p.valid)return p;if(("4"===u||"4im"===u)&&l.reportable&&e.store.settings.auto_report.enabled&&e.store.settings.auto_report.for.has(n.warning)){if(!(await(async()=>{if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const n=c.some(e=>"uw-attempt"===e.toLowerCase());return await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – Vandalism past final warning. ${n?`See also {{subst:filter log|username=${t.user.name}}}.`:""}~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})})()).valid)return{valid:!0};e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}return{valid:!0}}},"warn-and-report":{title:"Auto warn/report",icon:"fas fa-exclamation-triangle",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]}],progress:"Warning user",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{var r;const l=(0,a.getWarningFromLookup)(n.warning);if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Warning yourself","You are about to warn yourself. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to warn them?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to warn the user about the edit on it?`)||null!==(r=t.tags)&&void 0!==r&&r.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to warn the user about it?"))return{valid:!1,reason:"Warn cancelled by user."};let d,c;const u=await(async()=>{const n=`User talk:${t.user.name}`,i=e.util.monthSectionName(),a=(await e.api.getPagesContent([n]))[n]||"",r=e.util.getPageSections(a);d=e.queue.getWarningHistory(a).map(e=>e.template);let o="new";const u=r.length;for(let e=0;e<u;e++)r[e].title===i&&(o=e+1);let p;c=e.queue.getWarningLevel(a),p="string"==typeof l.auto?l.auto:"function"==typeof l.auto?l.auto(t,c):l.auto[c];const g=l.templates.find(e=>e.name===p.toString());if(!g)return{valid:!0};d.push(g.template);let h="Message about ";"edit"===s.Queue.groups[t.type]?h+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?h+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:h+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:h+=`[[${t.page.title}]]`;let m="";m="new"===o?`{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`:`${r[o-1].heading}\n${r[o-1].content}\n\n{{subst:${g.template}|${t.page.title}|${g.generic||""}}} ~~~~`;const v=await e.api.editSection(n,o,i,m,e.api.summary(h,`${l.name} (${g.name})`));if(v.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(p)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,p),e.store.statistics.warnings_issued.total++,p){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return v})();if(!u.valid)return u;if(("4"===c||"4im"===c)&&l.reportable&&e.store.settings.auto_report.enabled&&e.store.settings.auto_report.for.has(n.warning)){if(!(await(async()=>{if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const n=d.some(e=>"uw-attempt"===e.toLowerCase());return await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – Vandalism past final warning. ${n?`See also {{subst:filter log|username=${t.user.name}}}.`:""}~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})})()).valid)return{valid:!0};e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}return{valid:!0}}},"warn-user":{title:"Warn user",icon:"fas fa-exclamation-triangle",parameters:(e,t)=>[{id:"warning",title:"Warning template",type:"choice",options:Object.keys(a.warningsLookup),default:Object.keys(a.warningsLookup)[0]},{dependencies:["warning"],id:"level",title:"Warning level",type:"choice",options:e=>["auto",...a.warningsLookup[e.warning].templates.filter(e=>void 0===e.generic).map(e=>e.name)],default:"auto"}],continuity:!0,progress:"Issuing warning to user",valid:(e,t,n)=>{var s;return t?"auto"!==n.level&&null===(null===(s=(0,a.getWarningFromLookup)(n.warning))||void 0===s?void 0:s.templates[n.level])?{valid:!1,reason:"Selected warning template does not support automatic level selection."}:{valid:!0}:{valid:!1,reason:"No item selected."}},script:async(e,t,n)=>{var i;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Warning yourself","You are about to warn yourself. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to warn them?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to warn the user about the edit on it?`)||null!==(i=t.tags)&&void 0!==i&&i.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to warn the user about it?"))return{valid:!1,reason:"Warning cancelled by user."};const r=(0,a.getWarningFromLookup)(n.warning),o=`User talk:${t.user.name}`,l=e.util.monthSectionName(),d=(await e.api.getPagesContent([o]))[o]||"",c=e.util.getPageSections(d);let u="new";const p=c.length;for(let e=0;e<p;e++)c[e].title===l&&(u=e+1);let g;g="auto"===n.level?"string"==typeof r.auto?r.auto:"function"==typeof r.auto?r.auto(t,e.queue.getWarningLevel(d)):r.auto[e.queue.getWarningLevel(d)]:n.level;const h=r.templates.find(e=>e.name===g.toString());if(!h)return"auto"!==n.level?{valid:!1,reason:"Selected warning template does not support the specified level."}:{valid:!0};let m="Message about ";"edit"===s.Queue.groups[t.type]?m+=`[[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`:"abuselog"===t.type?t.revid?m+=`[[Special:Diff/${t.revid}|your edit]] on [[${t.page.title}]]`:m+=`[[Special:AbuseLog/${t.id}|your contribution]] on [[${t.page.title}]]`:m+=`[[${t.page.title}]]`;let v="";v="new"===u?`{{subst:${h.template}|${t.page.title}|${h.generic||""}}} ~~~~`:`${c[u-1].heading}\n${c[u-1].content}\n\n{{subst:${h.template}|${t.page.title}|${h.generic||""}}} ~~~~`;const f=await e.api.editSection(o,u,l,v,e.api.summary(m,`${r.name} (${h.name})`));if(f.valid){e.queue.talks.set(t.user.name,!0);const n=["0","1","2","3","4","4im"];switch(n.indexOf(g)>n.indexOf(t.user.warning||"0")&&e.queue.warnings.set(t.user.name,g),e.store.statistics.warnings_issued.total++,g){case"1":e.store.statistics.warnings_issued.level_1++;break;case"2":e.store.statistics.warnings_issued.level_2++;break;case"3":e.store.statistics.warnings_issued.level_3++;break;case"4":e.store.statistics.warnings_issued.level_4++;break;case"4im":e.store.statistics.warnings_issued.level_4im++}}return f}},"rollback-edit":{title:"Rollback edit",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Rolling back edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be rolled back when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Rollbacking own edit","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to rollback their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to rollback the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to rollback it?"))return{valid:!1,reason:"Rollback cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted edits${i}`,n.summary))},successful:(e,t,n)=>{switch(e.store.statistics.reverts_made.total++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}}},"rollback-goodfaith-edit":{title:"Rollback good faith edit",icon:"fas fa-undo-alt",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Rolling back good faith edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be rolled back when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Rollbacking own edit","You are about to revert your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to rollback their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to rollback the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to rollback it?"))return{valid:!1,reason:"Rollback cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.rollbackEdit(t.page.title,t.user.name,e.api.summary(`Reverted [[Wp:AGF|Good faith]] edits${i}`,n.summary))},successful:(e,t,n)=>{switch(e.store.statistics.reverts_made.total++,e.store.statistics.reverts_made.good_faith++,t.type){case"recent":e.store.statistics.reverts_made.from_recent_changes++;break;case"pending":e.store.statistics.reverts_made.from_pending_changes++;break;case"watchlist":e.store.statistics.reverts_made.from_watchlist++;break;case"abuselog":e.store.statistics.reverts_made.from_abuse_log++;break;default:e.store.statistics.reverts_made.from_loaded_edits++}}},"undo-edit":{title:"Undo edit",icon:"fas fa-undo",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Undoing edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be undone when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{var s;if(await e.gui.settings.waitForClose(),t.user.name===e.api.username&&!1===await e.gui.dialog.confirm("Undoing own edit","You are about to undo your own edit. Are you sure you want to proceed?")||e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to undo their edit?`)||e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to undo the edit on it?`)||null!==(s=t.tags)&&void 0!==s&&s.some(t=>e.store.whitelist.tags.has(t))&&!1===await e.gui.dialog.confirm("Edit is whitelisted","This edit has one or more whitelisted tags. Are you sure you want to undo it?"))return{valid:!1,reason:"Undo cancelled by user."};const i="Yes"===n.hide_username?"":` by ${e.api.user(t.user.name)}`;return await e.api.undoEdit(t.page.title,t.id,e.api.summary(`Undid revision ${e.api.revision(t.id)}${i}`,n.summary))}},"restore-edit":{title:"Restore edit",icon:"fas fa-redo",parameters:(e,t)=>[{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Restoring edit",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit can only be restored when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>await e.api.restoreEdit(t.page.title,t.id,e.api.summary(`Restored revision ${e.api.revision(t.id)} by ${e.api.user(t.user.name)}`,n.summary))},"send-message-to-user-talk":{title:"Send message to user talk page",icon:"fas fa-comment",parameters:(e,t)=>[{id:"heading",title:"Section heading",type:"text"},{id:"message",title:"Message (sign with ~~~~)",type:"text"}],progress:"Sending message to user talk page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>await e.api.editSection(`User talk:${t.user.name}`,"new",n.heading,n.message,e.api.summary(`Message from ${e.api.username}: ${n.heading}`))},"send-message-to-page-talk":{title:"Send message to page talk page",icon:"fas fa-comment",parameters:(e,t)=>[{id:"heading",title:"Section heading",type:"text"},{id:"message",title:"Message (sign with ~~~~)",type:"text"}],progress:"Sending message to page talk page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{const s=t.page.title.split(":");let i="Talk";s.length>1&&(i=s[0].toLowerCase().includes("talk")?s[0]:`${s[0]} talk`);const a=`${i}:${1===s.length?s[0]:s.slice(1).join(":")}`;return await e.api.editSection(a,"new",n.heading,n.message,e.api.summary(`Message from ${e.api.username}: ${n.heading}`))}},"report-user-to-aiv":{title:"Report user to AIV",icon:"fas fa-flag",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Vandalism past final warning","Vandalism-only account","Vandalism after recent release of block","Spambot or compromised account","Long-term abuse"],default:"Vandalism past final warning"},{id:"summary",title:"Summary (optional)",type:"text"}],continuity:!0,progress:"Reporting user to AIV",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>t.user.name===e.api.username?{valid:!1,reason:"You cannot report yourself, silly!"}:(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to report them?`)?{valid:!1,reason:"User report cancelled by user."}:await e.api.areUsersBlocked([t.user.name])[t.user.name]?{valid:!1,reason:"User cannot be reported because they are blocked."}:await e.api.append(i.WikiShield.config.pages.AIV,null,(0,o.fullTrim)(`\n * {{vandal|${t.user.name}}} – ${n.reason}${n.summary?`: ${n.summary}`:"."} ~~~~\n `),e.api.summary(`Reporting ${e.api.user(t.user.name)}`),n=>{var s;const i=null===(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))||void 0===s?void 0:s.content;return{valid:!(null!=i&&i.includes(`{{vandal|${t.user.name}}`)||null!=i&&i.includes(`{{IPVandal|${t.user.name}}`)),reason:"User has already been reported to AIV."}})),successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.AIV++}},"report-user-to-uaa":{title:"Report user to UAA",icon:"fas fa-user-slash",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Disruptive username","Offensive username","Promotional username","Misleading username"],default:"Disruptive username"},{id:"summary",title:"Summary (optional)",type:"text"}],continuity:!0,progress:"Reporting user to UAA",valid:(e,t,n)=>t?t.user.anon?{valid:!1,reason:"User cannot be reported because they are anonymous."}:{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot report yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to report them?`))return{valid:!1,reason:"User report cancelled by user."};if(await e.api.areUsersBlocked([t.user.name])[t.user.name])return{valid:!1,reason:"User cannot be reported because they are blocked."};const s="Offensive username"===n.reason?"offensive username":e.api.user(t.user.name);return await e.api.append(i.WikiShield.config.pages.UAA,null,(0,o.fullTrim)(`\n * {{user-uaa|${t.user.name}}} – ${n.reason}${n.summary?`: ${n.summary}`:"."} ~~~~\n `),e.api.summary(`Reporting ${s}`),n=>{var s;return{valid:!(null!==(s=e.util.getPageSections(n).find(e=>"User-reported"===e.title))&&void 0!==s&&s.content.includes(`{{user-uaa|${t.user.name}}`)),reason:"User has already been reported to UAA."}})},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.UAA++}},"request-page-protection":{title:"Request page protection",icon:"fas fa-shield-alt",parameters:(e,t)=>[{id:"level",title:"Protection level",type:"choice",options:[...e.api.hasPendingChanges?["Pending changes protection"]:[],"Semi-protection","Extended-confirmed protection","Full protection","Move protection","Template protection"],default:"Semi-protection"},{id:"reason",title:"Reason",type:"choice",options:["Generic","Persistent vandalism","Disruptive editing","Edit warring","BLP violations","Sockpuppetry","Arbitration enforcement"],default:"Generic"},{id:"duration",title:"Duration",type:"choice",options:["Temporary","Indefinite"],default:"Temporary"},{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Requesting page protection",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Page protection can only be requested for edits."}:{valid:!0}},script:async(e,t,n)=>{if(await e.gui.settings.waitForClose(),e.store.whitelist.pages.has(t.page.title)&&!1===await e.gui.dialog.confirm("Page is whitelisted",`The page <a href="https://${e.server}/wiki/${encodeURIComponent(t.page.title)}" target="_blank">${t.page.title}</a> is whitelisted. Are you sure you want to request protection for it?`))return{valid:!1,reason:"Page protection request cancelled by user."};const s="Generic"===n.reason?n.summary:`${n.reason} – ${n.summary}`;return await e.api.append(i.WikiShield.config.pages.RFPP,null,`\n${(0,o.fullTrim)(`\n === [[${t.page.title}]] ===\n * {{pagelinks|${t.page.title}}}\n '''${n.duration} ${n.level.toLowerCase()}'''${s?`: ${s}`:""} ~~~~\n `)}`,e.api.summary(`Requesting ${n.level} protection for [[${t.page.title}]]`),n=>({valid:!e.util.getPageSections(n).some(e=>e.title===`[[${t.page.title}]]`),reason:"Page protection has already been requested for this page."}))},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.RFPP++}},"request-global-block":{title:"Request global block",icon:"fas fa-ban",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Generic","Long-term abuse","Cross-wiki abuse","Spam / spambot","Compromised account"],default:"Generic"},{id:"summary",title:"Summary (optional)",type:"text"}],progress:"Requesting global block",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{var s;if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot request a global block for yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to request a global block for them?`))return{valid:!1,reason:"Global block request cancelled by user."};if(await e.api.isUserGloballyLocked(t.user.name))return{valid:!1,reason:"User is globally locked."};const a="Generic"===n.reason?n.summary:`${n.reason}. ${n.summary}`,r=(await e.api.getPagesContent([i.WikiShield.config.pages.SRG],!0,"meta.wikimedia.org"))[i.WikiShield.config.pages.SRG]||"",l=e.util.getPageSections(r);return await e.api.append(i.WikiShield.config.pages.SRG,Number(null===(s=Object.entries(l).find(([,e])=>2===e.level&&"Requests for global (un)block"===e.title))||void 0===s?void 0:s[0])+1||void 0,`\n${(0,o.fullTrim)(`\n === Global block for ${t.user.name} ===\n {{Status}} \x3c!-- Do not remove this template --\x3e\n * {{Luxotool|${t.user.name}}}\n ${a?`${a} `:""} <small>([[:en:WP:WikiShield|WikiShield]])</small> ~~~~\n `)}`,e.api.summary(`Requesting global block for ${e.api.user(t.user.name)}`),n=>{let s=!1,i=[];for(const t of e.util.getPageSections(n))if(2===t.level){if("Requests for global (un)block"===t.title)s=!0;else if(s)break}else s&&3===t.level&&i.push(t);return i=i.filter(e=>!e.content.match(/^{{Status\|not done}}/i)),{valid:!i.some(n=>{const s=n.content;return!!s.match(new RegExp(`{{Luxotool\\|(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}}}`,"i"))||!!s.match(new RegExp(`{{MultiLock\\|(?:[^|}]*\\|)*(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(?:\\|hidename=1)?(?:\\||})`,"i"))}),reason:"User has already been requested for global block."}},!1,"meta.wikimedia.org")},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.global_block++}},"request-global-lock":{title:"Request global lock",icon:"fas fa-lock",parameters:(e,t)=>[{id:"reason",title:"Reason",type:"choice",options:["Generic","Long-term abuse","Cross-wiki abuse","Abusive-username","Spam / spambot","Compromised account"],default:"Generic"},{id:"summary",title:"Summary (optional)",type:"text"},{id:"hide_username",title:"Hide username",type:"choice",options:["Yes","No"],default:"No"}],progress:"Requesting global lock",valid:(e,t,n)=>t?t.user.anon?{valid:!1,reason:"Global lock cannot be requested for anonymous users."}:{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{var s;if(t.user.name===e.api.username)return{valid:!1,reason:"You cannot request a global lock for yourself, silly!"};if(await e.gui.settings.waitForClose(),e.store.whitelist.users.has(t.user.name)&&!1===await e.gui.dialog.confirm("User is whitelisted",`The user <a href="https://${e.server}/wiki/User:${encodeURIComponent(t.user.name)}" target="_blank">${t.user.name}</a> is whitelisted. Are you sure you want to request a global lock for them?`))return{valid:!1,reason:"Global lock request cancelled by user."};if(await e.api.isUserGloballyLocked(t.user.name))return{valid:!1,reason:"User is already globally locked."};const a="Generic"===n.reason?n.summary:`${n.reason}. ${n.summary}`,r="Yes"===n.hide_username?"":` for ${e.api.centralAuthUser(t.user.name)}`,l=(await e.api.getPagesContent([i.WikiShield.config.pages.SRG],!0,"meta.wikimedia.org"))[i.WikiShield.config.pages.SRG]||"",d=e.util.getPageSections(l);return await e.api.append(i.WikiShield.config.pages.SRG,Number(null===(s=Object.entries(d).find(([,e])=>2===e.level&&"Requests for global (un)lock and (un)hiding"===e.title))||void 0===s?void 0:s[0])+1||void 0,`\n${(0,o.fullTrim)(`\n === Global lock${r} ===\n {{Status}} \x3c!-- Do not remove this template --\x3e\n * {{LockHide|${t.user.name}${"Yes"===n.hide_username?"|hidename=1":""}}}\n ${a?`${a} `:""} <small>([[:en:WP:WikiShield|WikiShield]])</small> ~~~~\n `)}`,e.api.summary(`Requesting global lock${r}`),n=>{let s=!1,i=[];for(const t of e.util.getPageSections(n))if(2===t.level){if("Requests for global (un)lock and (un)hiding"===t.title)s=!0;else if(s)break}else s&&3===t.level&&i.push(t);return i=i.filter(e=>!e.content.match(/^{{Status\|not done}}/i)),{valid:!i.some(n=>{const s=n.content;return!!s.match(new RegExp(`{{LockHide\\|(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(\\|hidename=1)?}}`,"i"))||!!s.match(new RegExp(`{{MultiLock\\|(?:[^|}]*\\|)*(?:\\d+=)?\\s*${e.util.escapeRegex(t.user.name)}(?:\\|hidename=1)?(?:\\||})`,"i"))}),reason:"User has already been requested for global lock."}},!1,"meta.wikimedia.org")},successful:(e,t,n)=>{e.store.statistics.reports_filed.total++,e.store.statistics.reports_filed.global_lock++}},"thank-user":{title:"Thank user",icon:"fas fa-handshake",progress:"Thanking user",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"User can only be thanked when an edit is selected."}:{valid:!0}},script:async(e,t,n)=>{const s=e.api.summary(`Thank you for [[Special:Diff/${t.id}|your edit]] on [[${t.page.title}]]`),i=`User talk:${t.user.name}`;if(t.user.temp){const n=await e.api.thankRevision(t.id);return(n.valid||e.store.settings.talk_page_thanks_for_temporary_users.enabled)&&void 0===(await e.api.pagesExist(i))[i]&&await e.api.editSection(i,"new","Thank you!","{{subst:Thanks-autosign}}",s),n}return t.user.ip?await e.api.editSection(i,"new","Thank you!","{{subst:Thanks-autosign}}",s):await e.api.thankRevision(t.id)},successful:(e,t,n)=>{e.store.statistics.edits_reviewed.thanked++}},"welcome-user":{title:"Welcome user",icon:"fas fa-paper-plane",parameters:(e,t)=>[{id:"template",title:"Template",type:"choice",options:Object.keys(r.welcomes),default:Object.keys(r.welcomes)[0]}],progress:"Welcoming user",valid:(e,t,n)=>{var s;return t?void 0!==(null===(s=t.user)||void 0===s?void 0:s.talk)?{valid:!1,reason:"User cannot be welcomed because their talk page is not empty."}:{valid:!0}:{valid:!1,reason:"No item selected."}},script:async(e,t,n)=>await(async()=>{const s=`User talk:${t.user.name}`;if(void 0!==(await e.api.pagesExist([s]))[s])return{valid:!1,reason:"User cannot be welcomed because their talk page is not empty."};let i=r.welcomes[n.template];if(!i)return{valid:!1,reason:"Selected welcome template does not exist."};const a=new Set([i]);for(;"function"==typeof(null===(o=i)||void 0===o?void 0:o.template);){var o,l;if(i=r.welcomes[i.template(e,t)],a.has(i))return null!==(l=void e.gui.dialog.toast("REPORT TO DEVELOPER","Uh oh! Something has gone <i>cat</i>astrophically wrong. Please report this to a developer, and include the error code below:<br><br><code>WELCOME_TEMPLATE_LOOP</code>","dev",-1))&&void 0!==l?l:{valid:!1};if(!i)return{valid:!1,reason:"Selected welcome template does not exist."};a.add(i)}const d=`{{subst:${i.template}}}${i.sign?" ~~~~":""}`;return await e.api.append(s,null,d,e.api.summary("Welcome to Wikipedia!"))})(),successful:(e,t,n)=>{e.store.statistics.users_welcomed.total++,e.queue.talks.set(t.user.name,!0),e.gui.renderQueue()}},"watch-page":{title:"Watch page",icon:"fas fa-eye",progress:"Watching page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>await e.api.watchPage(t.page.title,e.util.utcString(e.util.expiryToDate(e.store.settings.expiry.watchlist))),successful:(e,t,n)=>{e.store.statistics.watchlist.watched++,e.queue.watchlist.set(t.page.title,!0)}},"unwatch-page":{title:"Unwatch page",icon:"fas fa-eye-slash",progress:"Unwatching page",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>await e.api.unwatchPage(t.page.title),successful:(e,t,n)=>{e.store.statistics.watchlist.unwatched++,e.queue.watchlist.set(t.page.title,!1)}},"whitelist-user":{title:"Add user to whitelist",icon:"fas fa-user-check",progress:"Adding user to whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.users.set(t.user.name,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.whitelist.users).valueOf()]),e.store.statistics.items_whitelisted.total++,e.store.statistics.items_whitelisted.users++,e.gui.renderQueue(),{valid:!0})},"unwhitelist-user":{title:"Remove user from whitelist",icon:"fas fa-user-minus",progress:"Removing user from whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.users.delete(t.user.name),e.gui.renderQueue(),{valid:!0})},"whitelist-page":{title:"Add page to whitelist",icon:"fas fa-check",progress:"Adding page to whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.pages.set(t.page.title,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.whitelist.pages).valueOf()]),e.store.statistics.items_whitelisted.total++,e.store.statistics.items_whitelisted.pages++,e.gui.renderQueue(),{valid:!0})},"unwhitelist-page":{title:"Remove page from whitelist",icon:"fas fa-minus",progress:"Removing page from whitelist",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.whitelist.pages.delete(t.page.title),e.gui.renderQueue(),{valid:!0})},"highlight-user":{title:"Add user to highlighted users",icon:"fas fa-star",progress:"Adding user to highlighted users",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.users.set(t.user.name,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.highlight.users).valueOf()]),e.store.statistics.items_highlighted.total++,e.store.statistics.items_highlighted.users++,e.gui.renderQueue(),{valid:!0})},"unhighlight-user":{title:"Remove user from highlighted users",icon:"fas fa-user-minus",progress:"Removing user from highlighted users",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.users.delete(t.user.name),e.gui.renderQueue(),{valid:!0})},"highlight-page":{title:"Add page to highlighted pages",icon:"fas fa-star",progress:"Adding page to highlighted pages",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.pages.set(t.page.title,[Date.now(),e.util.expiryToDate(e.store.settings.expiry.highlight.pages).valueOf()]),e.store.statistics.items_highlighted.total++,e.store.statistics.items_highlighted.pages++,e.gui.renderQueue(),{valid:!0})},"unhighlight-page":{title:"Remove page from highlighted pages",icon:"fas fa-minus",progress:"Removing page from highlighted pages",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.store.highlight.pages.delete(t.page.title),e.gui.renderQueue(),{valid:!0})},"refresh-user-contributions":{title:"Refresh user contributions",icon:"fas fa-rotate",progress:"Refreshing user contributions",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{try{var s;document.querySelector("#refresh-page-history").classList.add("refreshing");const n=(await e.api.parseUsers([t.user.name]))[0].user;return e.queue.talks.set(t.user.name,n.talk),e.queue.contributions.set(t.user.name,n.contributions),e.queue.blocked.set(t.user.name,n.blocked),e.queue.blocks.set(t.user.name,n.blocks),t.user.edits=Math.max(n.edits,(null===(s=n.contributions)||void 0===s?void 0:s.length)||0),t.user.warning=e.queue.getWarningLevel(n.talk||""),t.user.warnings=e.queue.getWarningHistory(n.talk||""),delete t.user.cached_contributions,e.gui.renderQueue(),e.queue.current.item===t&&e.gui.newCurrentItem(t),{valid:!0}}catch(e){return console.error(e),{valid:!1,reason:"An error occurred while fetching user contributions."}}}},"refresh-page-history":{title:"Refresh page history",icon:"fas fa-rotate",progress:"Refreshing page history",valid:(e,t,n)=>t?"users"===t.type?{valid:!1,reason:"Page history cannot be refreshed for user creations."}:{valid:!0}:{valid:!1,reason:"No item selected."},script:async(e,t,n)=>{try{document.querySelector("#refresh-page-history").classList.add("refreshing");const[n,s]=await Promise.all([e.api.getHistory(t.page.title),e.api.getPagesDetails(t.page.title)]),i=s[t.page.title];return e.queue.histories.set(t.page.title,n),t.page.metadata=i.metadata,t.page.categories=i.categories,t.page.protection=i.protection,delete t.page.cached_history,e.gui.renderQueue(),e.queue.current.item===t&&e.gui.newCurrentItem(t),{valid:!0}}catch(e){return console.error(e),{valid:!1,reason:"An error occurred while fetching page history."}}}},"open-user-page":{title:"Open user page",icon:"fas fa-circle-user",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`User:${t.user.name}`)),{valid:!0})},"open-user-talk":{title:"Open user talk page",icon:"fas fa-comment",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`User talk:${t.user.name}`)),{valid:!0})},"open-user-contributions":{title:"Open user contributions",icon:"fas fa-list",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`Special:Contributions/${t.user.name}`)),{valid:!0})},"open-user-filter-log":{title:"Open user filter log",icon:"fas fa-filter",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`?title=Special:AbuseLog&wpSearchUser=${encodeURIComponent(t.user.name)}`,!0)),{valid:!0})},"open-page":{title:"Open page",icon:"fas fa-file",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(t.page.title)),{valid:!0})},"open-page-talk":{title:"Open page talk",icon:"fas fa-comments",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=t.page.title.split(":");let i="Talk";s.length>1&&(i=s[0].toLowerCase().includes("talk")?s[0]:`${s[0]} talk`);const a=e.page(`${i}:${1===s.length?s[0]:s.slice(1).join(":")}`);return e.open(a),{valid:!0}}},"open-page-history":{title:"Open page history",icon:"fas fa-clock-rotate-left",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>(e.open(e.page(`Special:PageHistory/${t.page.title}`)),{valid:!0})},"open-revision":{title:"Open revision",icon:"fas fa-file-lines",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Revision can only be opened for edits."}:{valid:!0}},script:(e,t,n)=>(e.open(e.page(`Special:Permalink/${t.id}`)),{valid:!0})},"open-diff":{title:"Open diff",icon:"fas fa-code-compare",valid:(e,t,n)=>{if(!t)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Diff can only be opened for edits."}:{valid:!0}},script:(e,t,n)=>(e.open(e.page(`Special:Diff/${t.id}`)),{valid:!0})},"copy-link":{title:"Copy link",icon:"fas fa-link",valid:(e,t,n)=>t?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{if("edit"===t.group)navigator.clipboard.writeText(e.page(`?diff=${t.id}`,!0));else if("logevent"===t.group)navigator.clipboard.writeText(e.page(`?title=Special:Log&logid=${t.id}`,!0));else{if("abuselog"!==t.group)return e.gui.dialog.toast("Cannot copy link","Please report this issue to a developer, including the error code below:<br><br><code>UNKNOWN_ITEM_GROUP_FOR_LINK_COPY</code>","error",3e3),{valid:!1};t.revid?navigator.clipboard.writeText(e.page(`?diff=${t.revid}`,!0)):navigator.clipboard.writeText(e.page(`?title=Special:AbuseLog/${t.id}`,!0))}return e.gui.dialog.toast("Link copied","The link has been copied to your clipboard.","success",3e3),{valid:!0}}},"open-revert-menu":{title:"Open revert menu",icon:"fas fa-undo",valid:(e,t,n)=>{if(!e.queue.current.item)return{valid:!1,reason:"No item selected."};let i=t.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Revert menu is only available for edits."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector('[data-menu="revert"]'),i=document.querySelector("#revert-menu");if(i.innerHTML="",e.gui.createWarnMenu("reverts",i,t),s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-warn-menu":{title:"Open warn menu",icon:"fas fa-exclamation-triangle",valid:(e,t,n)=>e.queue.current.item?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="warn"]'),i=document.querySelector("#warn-menu");if(i.innerHTML="",e.gui.createWarnMenu("warnings",i,t),s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-user-menu":{title:"Open user menu",icon:"fas fa-flag",valid:(e,t,n)=>e.queue.current.item?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="user"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-page-menu":{title:"Open page menu",icon:"fas fa-flag",valid:(e,t,n)=>e.queue.current.item?{valid:!0}:{valid:!1,reason:"No item selected."},script:(e,t,n)=>{const s=document.querySelector('[data-menu="page"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"open-edit-menu":{title:"Open edit menu",icon:"fas fa-flag",valid:(e,t,n)=>{if(!e.queue.current.item)return{valid:!1,reason:"No item selected."};let i=e.queue.current.item.type;return"abuselog"===i&&t.revid&&(i="edit"),"edit"!==s.Queue.groups[i]?{valid:!1,reason:"Edit menu is only available for edits."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector('[data-menu="edit"]');if(s){const t=s.querySelector(".bottom-tool-trigger"),n=document.querySelector(`#${s.dataset.menu}-menu`);t&&n&&(n.classList.contains("show")?(n.classList.remove("show"),t.classList.remove("active")):(e.gui.closeMenus(),n.classList.add("show"),t.classList.add("active"),e.gui.positionBottomMenu(s,n)))}return{valid:!0}}},"switch-to-recent-queue":{title:"Switch to recent changes queue",icon:"fas fa-stopwatch",valid:(e,t,n)=>e.store.settings.queue.recent.enabled?{valid:!0}:{valid:!1,reason:"Recent changes queue is not enabled."},script:(e,t,n)=>(e.queue.switch("recent"),{valid:!0})},"switch-to-pending-queue":{title:"Switch to pending changes queue",icon:"fas fa-flag",valid:(e,t,n)=>e.store.settings.queue.pending.enabled?e.rights.review?e.api.hasPendingChanges?{valid:!0}:{valid:!1,reason:"The pending changes extension is not enabled on this wiki."}:{valid:!1,reason:"You do not have permission to review pending changes."}:{valid:!1,reason:"Pending changes queue is not enabled."},script:(e,t,n)=>(e.queue.switch("pending"),{valid:!0})},"switch-to-watchlist-queue":{title:"Switch to watchlist queue",icon:"fas fa-book-bookmark",valid:(e,t,n)=>e.store.settings.queue.watchlist.enabled?{valid:!0}:{valid:!1,reason:"Watchlist queue is not enabled."},script:(e,t,n)=>(e.queue.switch("watchlist"),{valid:!0})},"switch-to-users-queue":{title:"Switch to user creation logs queue",icon:"fas fa-user-plus",valid:(e,t,n)=>e.store.settings.queue.users.enabled?{valid:!0}:{valid:!1,reason:"User creation logs queue is not enabled."},script:(e,t,n)=>(e.queue.switch("users"),{valid:!0})},"switch-to-abuselog-queue":{title:"Switch to abuse log queue",icon:"fas fa-filter-circle-xmark",valid:(e,t,n)=>e.store.settings.queue.abuselog.enabled?{valid:!0}:{valid:!1,reason:"Abuse log queue is not enabled."},script:(e,t,n)=>(e.queue.switch("abuselog"),{valid:!0})},"toggle-zen-mode":{title:"Toggle zen mode",icon:"fas fa-spa",script:(e,t,n)=>{var s;return e.store.settings.zen_mode.enabled=!e.store.settings.zen_mode.enabled,null===(s=document.querySelector("#zen-mode-enable"))||void 0===s||s.classList.toggle("active",e.store.settings.zen_mode.enabled),e.gui.updateZenMode(),{valid:!0}}},"toggle-consecutive-edits":{title:"Toggle consecutive edits",icon:"fas fa-users",valid:(e,t,n)=>{if(!e.queue.current.item)return{valid:!1,reason:"No item selected."};const s=e.queue.current.type;return"recent"!==s&&"watchlist"!==s?{valid:!1,reason:"Consecutive edits can only be viewed in the recent changes or watchlist queues."}:{valid:!0}},script:(e,t,n)=>{const s=document.querySelector("#consecutive-edits-tab");return s.classList.contains("hidden")||(s.classList.contains("selected")?document.querySelector("#latest-edits-tab").click():s.click()),{valid:!0}}}}},8921(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.EventManager=void 0;var s=n(985),i=n(870),a=n(5564);t.EventManager=class{constructor(e){this.ws=e,this.events=s.events,this.conditions=i.conditions}button(e,t){const n=this.ws;e.addEventListener("click",e=>(e=>{n.gui.selectedMenu=null;const s=n.queue.current.item,i={};for(const o of(null===(a=(r=n.gui.events.events[t]).parameters)||void 0===a?void 0:a.call(r,n,s))||[]){var a,r;"external"===o.id&&(i[o.id]=(null==e?void 0:e.altKey)||!1)}n.execute({actions:[{name:t,params:i}]})})(e))}submenu(e,t){var n,s;const i=this.events[t];e.dataset.eventName=t;const r=this.ws.queue.current,o=`${r.type}:${null===(n=r.item)||void 0===n?void 0:n.id}`,l={};if(e.dataset.eventId===o)for(const t of(null===(d=i.parameters)||void 0===d?void 0:d.call(i,this.ws,this.ws.queue.current.item))||[]){var d;const n=e.querySelector(`[data-paramid="${t.id}"]`);l[t.id]="checkbox"===n.type?n.checked:n.value}else e.dataset.eventId=o;e.innerHTML="";const c=document.createElement("div");c.classList.add("bottom-subcontent-title"),c.textContent=i.title,e.appendChild(c);const u=new Map,p={},g=(0,a.sortDependencies)((null===(s=i.parameters)||void 0===s?void 0:s.call(i,this.ws,this.ws.queue.current.item))||[]);for(const t of g){const n=document.createElement("div");n.classList.add("bottom-subcontent-input-title"),n.textContent=t.title,e.appendChild(n);const s={};for(const e of null!==(h=t.dependencies)&&void 0!==h?h:[]){var h;s[e]=p[e]}const i="function"==typeof t.default?t.default(s):t.default;let a=null;switch(t.type){case"choice":{const n=document.createElement("select");n.dataset.paramid=t.id,e.appendChild(n);const r="function"==typeof t.options?t.options(s):t.options;for(const e of null!=r?r:[]){const t=document.createElement("option");t.value=e,t.textContent=e,n.appendChild(t)}void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),a=()=>{const e={};for(const n of null!==(s=t.dependencies)&&void 0!==s?s:[]){var s;e[n]=p[n]}const i=n.value,a="function"==typeof t.options?t.options(e):t.options;n.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,n.appendChild(t)}if(a.includes(i))n.value=i;else{const s="function"==typeof t.default?t.default(e):t.default;n.value=s,p[t.id]=s}},n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}break;case"text":{const n=document.createElement("input");n.type="text",n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}break;case"boolean":{const n=document.createElement("input");n.type="checkbox",n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.checked=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.checked=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.checked;for(const e of u.get(t.id)||[])e()})}break;case"duration":{const n=document.createElement("duration-input");n.dataset.paramid=t.id,e.appendChild(n),void 0!==l[t.id]?(n.value=l[t.id],p[t.id]=l[t.id]):"default"in t&&(n.value=i,p[t.id]=i),n.addEventListener("change",()=>{p[t.id]=n.value;for(const e of u.get(t.id)||[])e()})}}if("function"==typeof a)for(const e of null!==(m=t.dependencies)&&void 0!==m?m:[]){var m;u.has(e)||u.set(e,[]),u.get(e).push(a)}}const v=document.createElement("button");v.classList.add("bottom-subcontent-button"),v.textContent="Submit",e.appendChild(v),v.addEventListener("click",()=>{const n={};for(const t of g){const s=e.querySelector(`[data-paramid="${t.id}"]`);n[t.id]=s.value}this.ws.execute({actions:[{name:t,params:n}]}),this.ws.gui.closeMenus()})}}},372(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Queue=void 0;var s=n(2852),i=n(2595),a=n(6400);function r(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return e.get(d(e,t))}function d(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var c=new WeakMap,u=new WeakSet;class p{static areSameGroup(e,t){return this.groups[e]===this.groups[t]}constructor(e){var t,n;r(t=this,n=u),n.add(t),function(e,t,n){r(e,t),t.set(e,n)}(this,c,Promise.resolve()),this.ws=e,this.queues=Object.fromEntries(["void",...p.types].map(t=>[t,{type:t,item:null,previous:null,queue:[],hold:[],repeats:{},history:new i.Stack(100),memory:new s.Memory({size:1e3}),last:{timestamp:e.util.utcString(new Date),id:0}}])),this.cache={simple:new s.Memory({size:1e3}),full:new s.Memory({size:250})},this.current=this.queues[p.types[0]],this.pending=new Map,this.watchlist=new s.Memory({size:1e3}),this.talks=new s.Memory({size:500}),this.warnings=new s.Memory({size:1e3,timeout:864e5}),this.noWelcome=new s.Memory({timeout:36e5}),this.histories=new s.Memory({size:1e3}),this.contributions=new s.Memory({size:1e3}),this.blocks=new s.Memory({size:1e3}),this.blocked=new s.Memory({size:1e4}),this.playedSound={mention:new s.Memory({timeout:6e4})},this.bypass=new s.Memory({timeout:36e5,size:1e4}),this.backoff=2e3}switch(e){var t;this.current.type!==e&&("pending"===this.current.type&&(this.queues.pending.queue=this.queues.pending.queue.filter(e=>this.pending.has(e.id))),document.querySelector("#clear-queue").classList.toggle("hidden","pending"===e),this.current=this.queues[e],this.current.queue.some(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)})||(this.current.item=this.current.queue[0]||null),this.ws.gui.renderQueue(),this.ws.gui.newCurrentItem(this.current.item),document.querySelectorAll("#queue-tabs > .queue-tab.selected").forEach(e=>e.classList.remove("selected")),null===(t=document.querySelector(`#queue-tab-${e}`))||void 0===t||t.classList.add("selected"))}async fetch(){try{const i=this.ws.store.settings.queue;if(i.pending.enabled&&this.ws.rights.review){const e=(await this.ws.api.feeds(null,{ns:"*",full:!0})).pending;this.pending.clear(),Object.values(e).forEach(e=>this.pending.set(e.revid,e)),await this.outdated("pending")}const a=await this.ws.api.feeds(i.recent.enabled?{ns:this.ws.store.settings.namespaces.join("|"),since:this.queues.recent.last.timestamp}:null,i.pending.enabled&&this.ws.rights.review?{ns:"*",full:!1}:null,i.users.enabled?{ns:"*",since:this.queues.users.last.timestamp}:null,i.watchlist.enabled?{ns:"*",since:this.queues.watchlist.last.timestamp}:null,i.abuselog.enabled?{ns:this.ws.store.settings.namespaces.join("|"),since:this.queues.abuselog.last.timestamp}:null),r=this.ws.store.whitelist;for(const i of p.types){var e;const o=this.queues[i].last.id;let l=null!==(e=a[i])&&void 0!==e?e:[];const d=l.reduce((e,t)=>Math.max(e,t.timestamp),0);switch(d&&(this.queues[i].last.timestamp=this.ws.util.utcString(new Date(d))),p.groups[i]){case"edit":{const e=e=>e.revid>o;l="recent"===i?l.filter(t=>e(t)&&!r.pages.has(t.title)):l.filter(e)}break;case"abuselog":l=l.filter(e=>e.id>o);break;case"logevent":l=l.filter(e=>e.logid>o)}l=l.concat(this.queues[i].hold),l.length>25?this.queues[i].hold=l.splice(25).reverse():this.queues[i].hold=[];let c=!1;switch(i){case"recent":{const e=new Set;for(const n of l)for(const s of this.queues[i].queue){var t;e.has(s)||s.id!==(null===(t=this.current.item)||void 0===t?void 0:t.id)&&n.title===s.page.title&&s.id<n.revid&&e.add(s)}for(const t of e){const e=this.queues[i].queue.indexOf(t);e>-1&&(this.queues[i].queue.splice(e,1),this.ws.gui.removeQueueItem(i,t.id))}c=e.size>0}break;case"pending":for(const e of this.queues[i].queue){var n;if((null===(n=this.current.item)||void 0===n?void 0:n.id)!==e.id&&!this.pending.has(e.id)){const t=this.queues[i].queue.indexOf(e);t>-1&&(this.queues[i].queue.splice(t,1),this.ws.gui.removeQueueItem(i,e.id),c=!0)}}break;case"users":l=l.filter(e=>!e.temp);break;case"watchlist":{const e=new Set;for(const t of l)for(const n of this.queues[i].queue){var s;e.has(n)||n.id!==(null===(s=this.current.item)||void 0===s?void 0:s.id)&&(t.title===n.page.title&&n.id<t.revid?e.add(n):n.page.watched||e.add(n))}if(0===l.length)for(const t of this.queues[i].queue)t.page.watched||e.add(t);for(const t of e){const e=this.queues[i].queue.indexOf(t);e>-1&&(this.queues[i].queue.splice(e,1),this.ws.gui.removeQueueItem(i,t.id))}c=e.size>0}}if(0!==l.length)switch(p.groups[i]){case"edit":{this.queues[i].last.id=l.reduce((e,t)=>Math.max(e,t.revid),0);const e=this.ws.store.highlight,t=t=>{var n;return e.users.has(t.user)||e.pages.has(t.title)||(null===(n=t.tags)||void 0===n?void 0:n.some(t=>e.tags.has(t)))};l=l.filter(e=>{var n;return!r.users.has(e.user)&&!(null!==(n=e.tags)&&void 0!==n&&n.some(e=>r.tags.has(e)))&&(!this.bypass.has(e.user)||t(e))});const n={};let[s,a]=await Promise.allSettled(["recent"===i?this.ws.api.getEditCounts(l.map(e=>e.user).filter(e=>!this.bypass.has(e))):Promise.resolve([]),this.ws.api.getORES(l.filter(e=>{var t;if(null===(t=e.oresscores)||void 0===t||!t.length)return!0;n[e.revid]=e.oresscores},this.ws.store.settings.queue.ores_bias).map(e=>e.revid))]);"rejected"===s.status&&console.error("Edit counts failed:",s.reason),s="fulfilled"===s.status?s.value:{},"rejected"===a.status&&console.error("ORES failed:",a.reason),a="fulfilled"===a.status?a.value:{};for(const[e,t]of Object.entries(await this.ws.api.extractORES(n,this.ws.store.settings.queue.ores_bias)))a[e]=t;const o=this.queues[i].repeats,d=[];if("recent"===i){const e=this.ws.store.settings.queue.min_ores,n=this.ws.store.settings.queue.max_edits;l.forEach(r=>{var l,c;if(isNaN(a[r.revid])&&(o[r.revid]||0)<3)return o[r.revid]=(o[r.revid]||0)+1,this.queues[i].hold.push(r);if(delete o[r.revid],this.ws.__DEV__&&"test2.wikipedia.org"===this.ws.server)return d.push(r);const u=null!==(l=null!==(c=s[r.user])&&void 0!==c?c:this.bypass.get(r.user))&&void 0!==l?l:0;u>n?(this.bypass.set(r.user,u),t(r)&&d.push(r)):((a[r.revid]||0)>=e||t(r))&&d.push(r)})}else l.forEach(e=>{if(isNaN(a[e.revid])&&(o[e.revid]||0)<3)return o[e.revid]=(o[e.revid]||0)+1,this.queues[i].hold.push(e);delete o[e.revid],d.push(e)});await this.add(i,d)}break;case"logevent":{let e=0;const t=new Set,n=[];l.forEach(s=>{t.has(s.logid)||(t.add(s.logid),s.logid>e&&(e=s.logid),n.push(s))}),this.queues[i].last.id=e,await this.add(i,n)}break;case"abuselog":{const e=l.filter(e=>null===e.editcount);let t={};e.length>0&&(t=await this.ws.api.getEditCounts(e.map(e=>e.user)));const n=this.ws.store.settings.queue.max_edits;let s=0;const a=[];l.forEach(e=>{var i;((null!==(i=e.editcount)&&void 0!==i?i:t[e.user])||0)>n||(e.id>s&&(s=e.id),a.push(e))}),this.queues[i].last.id=s,await this.add(i,a)}}else c&&this.ws.gui.renderQueue(this.queues[i].queue,this.current.edit,i)}await this.outdated(),this.backoff=p.refresh}catch(e){console.error(e),this.backoff=Math.min(2*this.backoff,12e4)}setTimeout(()=>this.fetch(),this.backoff)}async outdated(){{const e=[];for(const t of this.queues.pending.queue)t!==this.current.item&&(this.pending.has(t.id)||e.push(t));if(e.length>0)for(const t of e){const e=this.queues.pending.queue.indexOf(t);e>-1&&(this.queues.pending.queue.splice(e,1),this.ws.gui.removeQueueItem("pending",t.id))}}const e=new Set,t=["recent","watchlist","abuselog"];for(const n of t)this.queues[n].queue.forEach(t=>{("abuselog"!==n||t.revid)&&e.add(t.page.title)});const n=await this.ws.api.getLatestIds([...e]);for(const e of t){const t=[];for(const s of this.queues[e].queue){let i=s.id;if("abuselog"===e){if(!s.revid)continue;i=s.revid}const a=n[s.page.title];a&&a>i&&t.push([s.id,i])}if(t.length>0)for(const[n,i]of t){var s;const t="abuselog"===e?"revid":"id";if(i===(null===(s=this.queues[e].item)||void 0===s?void 0:s[t]))continue;const a=this.queues[e].queue.findIndex(e=>e[t]===i);a>-1&&(this.queues[e].queue.splice(a,1),this.ws.gui.removeQueueItem(e,n))}}this.ws.gui.renderQueue()}async add(e,t){const n={edit:"revid",logevent:"logid",abuselog:"id"}[p.groups[e]];(t=t.filter(t=>!this.queues[e].memory.has(t[n]))).forEach(t=>this.queues[e].memory.add(t[n]));const s=t.length;if(0===s)return;const i={ores:!1,mention:!1},a=await this.generate(e,t,!1);switch(p.groups[e]){case"edit":{const n=this.ws.store.settings.audio.ores_alert.threshold;for(let r=0;r<s;r++){t[r];const s=a[r];this.queues[e].queue.push(s),"recent"===e&&s.ores>=n&&(i.ores=!0),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}}break;case"logevent":for(let n=0;n<s;n++){t[n];const s=a[n];this.queues[e].queue.push(s),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}break;case"abuselog":for(let n=0;n<s;n++){t[n];const s=a[n];this.queues[e].queue.push(s),s.mentions.has&&!this.playedSound.mention.has(s.id)&&(this.playedSound.mention.add(s.id),i.mention=!0)}}this.sort(e),i.ores&&this.ws.store.settings.audio.ores_alert.enabled&&this.ws.audio.playSound(["queue","ores"]),i.mention&&this.ws.store.settings.username_highlighting.enabled&&this.ws.audio.playSound(["queue","mention"]),this.ws.gui.renderQueue(this.queues[e].queue,this.queues[e].item,e)}sort(e){var t;let n=-1;this.queues[e].item&&(n=this.queues[e].queue.findIndex(t=>t===this.queues[e].item));let s=this.queues[e].queue;n>=0&&(s=s.slice(0,n).concat(s.slice(n+1)));const i=this.ws.store.highlight,a=this.ws.store.settings.username_highlighting.enabled;switch(p.groups[e]){case"edit":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return-1;if(t.history)return 1;let n=e.ores;a&&e.mentions.has&&(n+=200),i.users.has(e.user.name)&&(n+=100),i.pages.has(e.page.title)&&(n+=75),n+=50*e.tags.filter(e=>i.tags.has(e)).length;let s=t.ores;return a&&t.mentions.has&&(s+=200),i.users.has(t.user.name)&&(s+=100),i.pages.has(t.page.title)&&(s+=75),s+=50*t.tags.filter(e=>i.tags.has(e)).length,n===s?t.id-e.id:s-n});break;case"logevent":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return 1;if(t.history)return-1;let n=100*(e.user.profanity.clamped||0);a&&e.mentions.has&&(n+=200);let s=100*(t.user.profanity.clamped||0);return a&&t.mentions.has&&(s+=200),n===s?t.id-e.id:s-n});break;case"abuselog":s=s.sort((e,t)=>{if(e.history&&t.history)return e.history-t.history;if(e.history)return 1;if(t.history)return-1;let n=0;i.users.has(e.user.name)&&(n+=100),i.pages.has(e.page.title)&&(n+=75),a&&e.mentions.has&&(n+=200);let s=0;return i.users.has(t.user.name)&&(s+=100),i.pages.has(t.page.title)&&(s+=75),a&&t.mentions.has&&(s+=200),n===s?t.id-e.id:s-n})}const r=new Set(null!==(t=this.queues[e].item)&&void 0!==t&&t.id?[this.queues[e].item.id]:[]);s=s.filter(e=>!r.has(e.id)&&(r.add(e.id),!0)),n>=0&&s.splice(n,0,this.queues[e].item),this.queues[e].queue=[...s.slice(0,this.ws.store.settings.queue.max_size)],this.queues[e].item||(this.queues[e].item=this.queues[e].queue[0])}async generate(e,t,n,s={}){var i;if(0===t.length)return[];const r=null!==(i=null==s?void 0:s.bypass)&&void 0!==i&&i,o=this.ws,l=o.api.username,d=[];switch(p.groups[e]){case"edit":{t=(t=t.filter(e=>{const t=(e=>{if(n){if(this.cache.simple.has(e))return this.cache.simple.get(e);if(this.cache.full.has(e))return this.cache.full.get(e)}else if(this.cache.full.has(e))return this.cache.full.get(e);return null})(e.revid);var s;return!t||(e.pending&&!t.pending&&(t.pending=e.pending),null!==(s=void d.push(t))&&void 0!==s&&s)})).map(e=>{var t;let n=null;return e.pending&&(n=null===(t=this.pending.get(e.revid))||void 0===t?void 0:t.prior),null!=n||(n=e.old_revid||e.parentid),{item:e,prior:n}});const s=await o.api.parseEdits(t,n,this.ws.store.settings.queue.ores_bias,r);for(const t of s){var c;const{item:s,prior:i,data:a}=t,r={comment:!1,diff:!1};if(l&&a.edit.diff){const e=document.createElement("div");e.innerHTML=a.edit.diff,e.textContent&&(r.diff=o.util.match(l,e.textContent))}this.watchlist.set(s.title,a.page.watched),this.histories.set(s.title,a.page.history),this.contributions.set(s.user,a.user.contributions),this.blocks.set(s.user,a.user.blocks),this.blocked.set(s.user,a.user.blocked);const u=["0","1","2","3","4","4im"],g=this.getWarningLevel(a.user.talk||"");u.indexOf(g)>u.indexOf(this.warnings.get(s.user)||"0")&&this.warnings.set(s.user,g);const h={page:{namespace:s.ns,title:s.title,get history(){var e;return null!==(e=o.queue.histories.get(s.title))&&void 0!==e?e:a.page.history},get watched(){var e;return null!==(e=o.queue.watchlist.get(s.title))&&void 0!==e?e:a.page.watched},metadata:a.page.metadata,categories:a.page.categories,protection:a.page.protection},user:{name:s.user,ip:o.util.isIPAddress(s.user),temp:o.util.isTempAccount(s.user),anon:o.util.isIPAddress(s.user)||o.util.isTempAccount(s.user),edits:Math.max(a.user.edits,(null===(c=a.user.contributions)||void 0===c?void 0:c.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(s.user))&&void 0!==e?e:a.user.contributions},warning:this.getWarningLevel(a.user.talk||""),warnings:this.getWarningHistory(a.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(s.user))&&void 0!==e?e:a.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(s.user))&&void 0!==e?e:a.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(s.user))&&void 0!==e?e:a.user.talk}},mentions:r,AI:{edit:null,username:null},id:s.revid,prior:i,timestamp:s.timestamp,comment:s.parsedcomment,minor:s.minor||!1,diff:a.edit.diff,sizediff:("sizediff"in s?s.sizediff:s.newlen-s.oldlen)||0,ores:a.edit.ores,tags:s.tags||[],reverts:a.page.reverts,consecutive:a.page.consecutive,propagating:!1,reviewed:!1,history:!1,pending:s.pending||!1,group:p.groups[e],type:e,simple:n,origin:s};!n&&o.AI&&(o.store.settings.AI.edit_analysis.enabled&&o.AI.analyze.edit(h).then(e=>h.AI.edit=e).catch(e=>h.AI.edit={error:e.message}).finally(()=>{var e;h.id===(null===(e=this.current.item)||void 0===e?void 0:e.id)&&o.gui.updateAIAnalysisDisplay(h.AI.edit)}),h.user.anon||o.store.whitelist.users.has(h.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(h).then(e=>{h.AI.username=e,e.flag&&this.promptUAA(h,e)}).catch(e=>h.AI.username={error:e.message})),d.push(h),n?this.cache.simple.set(s.revid,h):(this.cache.full.set(s.revid,h),this.cache.simple.has(s.revid)&&this.cache.simple.delete(s.revid))}}break;case"logevent":{const s=await o.api.parseUsers(t.map(e=>e.title.replace(/^(User|User talk):/,"")),n,r),i=await o.api.parseUsers(t.map(e=>e.user),n,r);for(let r=0;r<t.length;r++){var u,g;const c=t[r],h=s[r],m=i[r],v=c.title.replace(/^(User|User talk):/,""),f={username:!1,comment:!1};l&&v&&(f.username=o.util.match(l,v)),this.contributions.set(v,h.user.contributions),this.contributions.set(c.user,m.user.contributions),this.blocks.set(v,h.user.blocks),this.blocks.set(c.user,m.user.blocks),this.blocked.set(v,h.user.blocked),this.blocked.set(c.user,m.user.blocked);const b=["0","1","2","3","4","4im"],w=this.getWarningLevel(h.user.talk||"");b.indexOf(w)>b.indexOf(this.warnings.get(v)||"0")&&this.warnings.set(v,w);const y=this.getWarningLevel(m.user.talk||"");b.indexOf(y)>b.indexOf(this.warnings.get(c.user)||"0")&&this.warnings.set(c.user,y);const x=a.profanity.evaluate(v),k={page:{namespace:c.ns,title:c.title,history:[],get watched(){return!1},metadata:[],categories:[],protection:{}},user:{name:v,ip:o.util.isIPAddress(v),temp:o.util.isTempAccount(v),anon:o.util.isIPAddress(v)||o.util.isTempAccount(v),edits:Math.max(h.user.edits,(null===(u=h.user.contributions)||void 0===u?void 0:u.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(v))&&void 0!==e?e:h.user.contributions},warning:this.getWarningLevel(h.user.talk||""),warnings:this.getWarningHistory(h.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(v))&&void 0!==e?e:h.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(v))&&void 0!==e?e:h.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(v))&&void 0!==e?e:h.user.talk},profanity:x},performer:{name:c.user,ip:o.util.isIPAddress(c.user),temp:o.util.isTempAccount(c.user),anon:o.util.isIPAddress(c.user)||o.util.isTempAccount(c.user),edits:Math.max(m.user.edits,(null===(g=m.user.contributions)||void 0===g?void 0:g.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(c.user))&&void 0!==e?e:m.user.contributions},warning:this.getWarningLevel(m.user.talk||""),warnings:this.getWarningHistory(m.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(c.user))&&void 0!==e?e:m.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(c.user))&&void 0!==e?e:m.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(c.user))&&void 0!==e?e:m.user.talk}},mentions:f,AI:{username:null},id:c.logid,timestamp:c.timestamp,comment:c.parsedcomment,ores:x.clamped||0,filters:x.matches.map(e=>({filter:e.name,id:e.match})),propagating:!1,reviewed:!1,history:!1,group:p.groups[e],type:e,simple:n,origin:c};!n&&o.AI&&(k.user.anon||o.store.whitelist.users.has(k.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(k).then(e=>{k.AI.username=e,e.flag&&this.promptUAA(k,e)}).catch(e=>k.AI.username={error:e.message})),d.push(k)}}break;case"abuselog":{const s=await o.api.parseAbuselogs(t,n,r);for(const t of s){var h,m;const{item:s,data:i}=t,a={comment:!1,diff:!1};if(l&&i.edit.diff){const e=document.createElement("div");e.innerHTML=i.edit.diff,e.textContent&&(a.diff=o.util.match(l,e.textContent))}this.watchlist.set(s.title,i.page.watched),this.histories.set(s.title,i.page.history),this.contributions.set(s.user,i.user.contributions),this.blocks.set(s.user,i.user.blocks),this.blocked.set(s.user,i.user.blocked);const r=["0","1","2","3","4","4im"],c=this.getWarningLevel(i.user.talk||"");r.indexOf(c)>r.indexOf(this.warnings.get(s.user)||"0")&&this.warnings.set(s.user,c);const u=["disallow","warn","showcaptcha","tag","none"],g=u.length;let v=g-1;for(let e=0;e<g;e++)if(s.result.has(u[e])){v=e;break}const f={page:{namespace:s.ns,title:s.title,get history(){var e;return null!==(e=o.queue.histories.get(s.title))&&void 0!==e?e:i.page.history},get watched(){var e;return null!==(e=o.queue.watchlist.get(s.title))&&void 0!==e?e:i.page.watched},metadata:i.page.metadata,categories:i.page.categories,protection:i.page.protection},user:{name:s.user,ip:o.util.isIPAddress(s.user),temp:o.util.isTempAccount(s.user),anon:o.util.isIPAddress(s.user)||o.util.isTempAccount(s.user),edits:Math.max(i.user.edits,(null===(h=i.user.contributions)||void 0===h?void 0:h.length)||0),get contributions(){var e;return null!==(e=o.queue.contributions.get(s.user))&&void 0!==e?e:i.user.contributions},warning:this.getWarningLevel(i.user.talk||""),warnings:this.getWarningHistory(i.user.talk||""),get blocked(){var e;return null!==(e=o.queue.blocked.get(s.user))&&void 0!==e?e:i.user.blocked},get blocks(){var e;return null!==(e=o.queue.blocks.get(s.user))&&void 0!==e?e:i.user.blocks},get talk(){var e;return null!==(e=o.queue.talks.get(s.user))&&void 0!==e?e:i.user.talk}},mentions:a,AI:{edit:null,username:null},id:s.id,revid:s.revid,timestamp:s.timestamp,comment:i.parsedcomment,minor:!1,diff:i.edit.diff,sizediff:null===(m=s.diff)||void 0===m?void 0:m.size,ores:+(1-v/(g-1)).toFixed(2),filters:s.entries.map(e=>({id:(null==e?void 0:e.filter_id)||"-1",filter:null==e?void 0:e.filter}))||[],reverts:i.page.reverts,propagating:!1,reviewed:!1,history:!1,group:p.groups[e],type:e,simple:n,origin:s};!n&&o.AI&&(o.store.settings.AI.edit_analysis.enabled&&i.edit.diff&&o.AI.analyze.edit(f).then(e=>f.AI.edit=e).catch(e=>f.AI.edit={error:e.message}).finally(()=>{var e;f.id===(null===(e=this.current.item)||void 0===e?void 0:e.id)&&o.gui.updateAIAnalysisDisplay(f.AI.edit)}),f.user.anon||o.store.whitelist.users.has(f.user.name)||!o.store.settings.AI.username_analysis.enabled||o.AI.analyze.username(f).then(e=>{f.AI.username=e,e.flag&&this.promptUAA(f,e)}).catch(e=>f.AI.username={error:e.message})),d.push(f)}}}return d.forEach(e=>{if(e.comment){const t=(new DOMParser).parseFromString(e.comment,"text/html").body;t.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,n]=e.trim().split(/\s+/,2),s=new URL(t,`https://${this.ws.server}`).href;return n?`${s} ${n}`:s}).join(", ");e.setAttribute("srcset",t)}),e.comment=t.innerHTML;const n=(t.textContent||"").trim();e.has_comment=Boolean(n),!1===e.mentions.comment&&(e.mentions.comment=o.util.match(l,n)),e.mentions&&(e.mentions.has=Object.values(e.mentions).some(e=>e))}else e.has_comment=!1}),d}previous(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});if("pending"===this.current.type)return this.current.item=this.current.queue[Math.max(e-1,0)],this.ws.gui.renderQueue();if(e<=0){if(0===this.current.history.length)return;return this.current.queue.unshift(this.current.history.pop()),this.current.item=this.current.queue[0],this.ws.gui.renderQueue()}this.current.item=this.current.queue[e-1],this.ws.gui.renderQueue()}next(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});if(-1===e)return this.current.item=this.current.queue[0],this.ws.gui.renderQueue();if("pending"===this.current.type)return this.current.item=this.current.queue[Math.min(e+1,this.current.queue.length-1)],this.ws.gui.renderQueue();const t=this.current.item,n=p.groups[t.type];if(!t.reviewed&&("edit"===n||"abuselog"===n&&t.revid)){"watchlist"===t.type&&this.ws.api.markWatchlistSeen(t.page.title,t.id);const e="abuselog"===t.type?t.revid:t.id;if(["recent","watchlist","abuselog"].filter(e=>e!==t.type).forEach(t=>{this.queues[t].queue="abuselog"===t?this.queues[t].queue.filter(n=>n.revid!==e||(this.queues[t].history.push({...n,history:performance.now()}),!1)):this.queues[t].queue.filter(n=>n.id!==e||(this.queues[t].history.push({...n,history:performance.now()}),"watchlist"===t&&this.ws.api.markWatchlistSeen(n.page.title,n.id),!1))}),"abuselog"!==n){let e=this.queues.abuselog.queue.filter(e=>t.user.name===e.user.name&&t.page.title===e.page.title&&Math.abs(new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())<1e4);e.length>0&&Promise.allSettled(e.map(async e=>{let t=e.revid;return t||(t=await this.ws.api.getAbuseLogRevid(e.id)),t?(e.revid=t,{id:e.id,revid:t}):null})).then(e=>{const t=e.map(e=>"fulfilled"===e.status?e.value:null).filter(e=>e);this.queues.abuselog.queue=this.queues.abuselog.queue.filter(e=>!t.some(t=>t.revid===e.revid)),"abuselog"===this.current.type&&(t.forEach(e=>this.ws.gui.removeQueueItem("abuselog",e.id)),this.ws.gui.renderQueue(this.queues.abuselog.queue,this.queues.abuselog.item,"abuselog"))}).catch(()=>{})}}t.reviewed=!0,t&&this.ws.AI&&this.ws.AI.cancel.edit(t.id),this.current.queue.splice(e,1),this.ws.gui.removeQueueItem(this.current.type,t.id),0===this.current.queue.length?this.current.item=null:e<this.current.queue.length?this.current.item=this.current.queue[e]:this.current.item=this.current.queue[this.current.queue.length-1],t&&"edit"===p.groups[this.current.type]&&this.promptWelcome(t),this.current.history.push({...t,history:performance.now()}),this.ws.gui.renderQueue()}canGoPrevious(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});return-1===e?this.current.history.length>0:"pending"===this.current.type?e>0:0!==e||this.current.history.length>0}canGoNext(){const e=this.current.queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});return-1===e?Boolean(this.current.queue[0]):"pending"!==this.current.type||e<this.current.queue.length-1}clear(e){"pending"!==e&&(this.queues[e].item=null,this.queues[e].queue=[],this.current.type===e&&(this.ws.gui.newCurrentItem(null),this.ws.gui.clearQueueItems()))}async promptWelcome(e){var t,n,s,i;if(!this.ws.store.settings.auto_welcome.enabled&&null!==(t=e.user)&&void 0!==t&&t.anon&&0!==((null===(n=e.user)||void 0===n?void 0:n.edits)||0)&&void 0!==(null===(s=e.user)||void 0===s?void 0:s.talk)&&!this.noWelcome.has(null===(i=e.user)||void 0===i?void 0:i.name))try{var a;const t=`User talk:${e.user.name}`,n=await this.ws.api.pagesExist([t]);if(void 0!==n[t])return null!==(a=void this.talks.set(e.user.name,n[t]))&&void 0!==a?a:n[t];await this.ws.gui.settings.waitForClose();const s=await this.ws.gui.dialog.confirm("Auto-Welcome User",`Would you like to welcome <span class="confirmation-modal-username">${this.ws.util.escape(e.user.name)}</span>?<br><br>\n\t\t\t\t\t<span style="font-size: 0.9em; color: #888;">Editing: <strong>${this.ws.util.escape(e.page.title)}</strong></span>`,{username:e.user.name,hideUAA:!1});this.noWelcome.add(e.user.name),s&&this.ws.execute({actions:[{name:"welcome-user",params:{template:"Auto"}}]},void 0,void 0,e)}catch(e){console.error("Error during auto-welcome check:",e)}}promptUAA(e,t){var n,s,i;return n=c,s=this,i=l(c,this).then(()=>d(u,this,g).call(this,e,t)).catch(()=>{}),n.set(d(n,s),i),l(c,this)}async propagate(e,t){if(e.propagating)return await e.propagating;if(e.simple){let n;e.propagating=new Promise(e=>n=e);const[s]=await this.generate(e.type,[e.origin],!1,{bypass:t});s.history=e.history,Object.assign(e,s),n(),e.propagating=!1}else this.generate(e.type,[e.origin],!1,{bypass:t}).then(([t])=>{const n=e.revid;t.history=e.history,Object.assign(e,t),e.revid=n})}loadFromItem(e){const t=this.current.type;if(p.areSameGroup(t,"edit")&&("pending"!==t||"edit"!==e.type)){this.queues[t].queue=this.queues[t].queue.filter(t=>t.id!==e.id);const n=this.queues[t].queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});n>-1&&(this.queues[t].queue[n]=e)}this.queues[t].item=this.queues[t].queue.find(t=>t.id===e.id)||e,this.ws.gui.renderQueue()}async loadFromRevision(e,t){try{let n;if(this.ws.gui.updateDiffDisplay("loading"),this.cache.full.has(t))n=this.cache.full.get(t);else{let s;if(this.cache.simple.has(t)){const e=this.cache.simple.get(t);s={revid:e.id,parentid:e.prior,ns:e.page.namespace,title:e.page.title,user:e.user.name,timestamp:e.timestamp,parsedcomment:e.comment,tags:e.origin.tags,sizediff:e.sizediff,minor:e.minor}}else{const n=await this.ws.api.getRevision(e,t,!0);if(!n)throw new Error("Revision not found");s={revid:n.revid,parentid:n.parentid,ns:n.ns,title:e,user:n.user,timestamp:n.timestamp,parsedcomment:n.parsedcomment,tags:n.tags,size:n.size,oldlen:n.oldlen||0,newlen:n.size,minor:n.minor}}[n]=await this.generate("edit",[s],!1,{bypass:!0})}const s=this.current.type;if(p.areSameGroup(s,"edit")&&"pending"!==s&&"abuselog"!==s){this.queues[s].queue=this.queues[s].queue.filter(e=>e.id!==n.id);const e=this.queues[s].queue.findIndex(e=>{var t;return e.id===(null===(t=this.current.item)||void 0===t?void 0:t.id)});e>-1&&(this.queues[s].queue[e]=n)}this.queues[s].item=n,this.ws.gui.renderQueue()}catch(e){console.error("Error loading from revision:",e),document.querySelector("#diff-container").innerHTML=`<div class="error">Failed to load revision: ${this.ws.util.escape(e.message)}</div>`}}getWarningLevel(e){const t=["0","1","2","3","4","4im"];let n="0";const s=this.ws.util.monthSectionName(),i=this.ws.util.getPageSections(e);for(const e of i)if(e.title===s){const s=e.content.match(/<!-- Template:[\w-]+?(\d(?:i?m)?) -->/g);if(null===s)break;const i=[...s.map(e=>{const t=e.match(/<!-- Template:[\w-]+?(\d(?:i?m)?) -->/);return t?t[1].toString():"0"}),n].map(e=>[e,t.indexOf(e)]);n=i.sort((e,t)=>t[1]-e[1])[0][0]}return n}getWarningHistory(e){const t=[],n=this.ws.util.monthSectionName(),s=this.ws.util.getPageSections(e);for(const e of s)if(e.title===n){const n=e.content.matchAll(/<!-- Template:([\w-]+?)(\d(?:i?m)?) -->([^]+?)(?=<!-- Template:|$)/g);for(let s of n){const n=s[1],i=s[2],a=s[3],r=a.match(/(\d{2}:\d{2}.*?\d{4} \(UTC\))/);let o=r?r[1]:null;if(o&&(o=o.replace(/<[^>]*>/g,"")),o){const[,e,t,n,s]=o.match(/(\d{2}:\d{2}), (\d{1,2}) ([A-Za-z]+) (\d{4})/),i=["January","February","March","April","May","June","July","August","September","October","November","December"].indexOf(n);o=new Date(Date.UTC(s,i,t,...e.split(":"))).toUTCString()}else o=null;let l=null;const d=a.match(/\[\[User(?:[ _]talk)?:([^\]|]+)/i);d&&(l=d[1].trim());const c=a.match(/\[\[([^\]]+?)\]\]/),u=c?c[1]:null;t.push({template:n,level:i,timestamp:o,username:l,article:u,section:e.title})}}return t}}async function g(e,t){if(e.user.anon)return;if(this.ws.store.whitelist.users.has(e.user.name))return;if(!t.issues||0===t.issues.length)return;if(!t.explanation)return;const n=t.issues.map(e=>`${e.severity} ${e.policy} violation`).join(", "),s=Math.round(100*t.confidence),i=e.user.name;await this.ws.gui.settings.waitForClose();if(await this.ws.gui.dialog.confirm("Report Username to UAA",`\n\t\t\t\tThe username <span class="confirmation-modal-username">${this.ws.util.escape(i)}</span> for ${n}.<br><br>\n\t\t\t\t<strong>AI Confidence:</strong> ${s}%<br>\n\t\t\t\t<strong>Reasoning:</strong> ${t.explanation}<br>\n\t\t\t`,i)){await this.ws.gui.settings.waitForClose();const t=await this.ws.gui.dialog.UAA(e.user.name);t&&this.ws.execute({actions:[{name:"report-user-to-uaa",params:{reason:t}}]},void 0,void 0,e)}}t.Queue=p,o(p,"refresh",1e3),o(p,"types",["recent","pending","watchlist","abuselog","users"]),o(p,"groups",{void:"void",recent:"edit",pending:"edit",watchlist:"edit",edit:"edit",abuselog:"abuselog",users:"logevent"})},7054(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.WikiShield=void 0;var s=n(7852),i=n(3241),a=n(8169),r=n(2535),o=n(4674),l=n(6151),d=n(372),c=n(8469),u=n(8678),p=n(9501),g=n(9808);function h(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function m(e,t){return e.get(v(e,t))}function v(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var f,b,w,y=new WeakMap,x=new WeakSet;class k{constructor(e,t,n,s,l){var u,g;h(u=this,g=x),g.add(u),function(e,t,n){h(e,t),t.set(e,n)}(this,y,{ready:[]}),this.mobile=e,this.__DEV__=l,this.started=!1,this.server=t,this.storage=new p.StorageManager,this.defaultStorage=new p.StorageManager,this.defaultStorage.load(),this.util=new i.Utility(this),this.api=new r.API(this,t,n,s),this.notifications=new o.Notifications(this),this.rights={},this.groups={},this.api.account().then(async e=>{this.rights=e.rights.reduce((e,t)=>({...e,[t]:!0}),{}),this.groups=e.groups.reduce((e,t)=>({...e,[t]:!0}),{});{const e=this.rights.review&&this.api.hasPendingChanges;document.querySelector("#queue-tab-pending").classList.toggle("hidden",!e),e||"pending"!==this.queue.current.type||this.queue.switch("recent")}await v(x,this,S).call(this),this.cleanup(),setInterval(()=>this.cleanup(),1e4),v(x,this,_).call(this,"ready")}),this.gui=new c.GUI(this),this.queue=new d.Queue(this),this.audio=new a.AudioManager(this),this.time={load:null,save:null}}get store(){return this.storage.data}disable(e,t){electron.disable(e,t)}on(e,t,n={}){return m(y,this)[e]&&m(y,this)[e].push({callback:t,options:n}),this}async init(e=null){return this.gui.build(),await this.audio.init(),await v(x,this,S).call(this,e)}async noinit(e=null){var t;const n=await v(x,this,S).call(this,e);if(null===(t=this.AI)||void 0===t||t.cancel.all(),this.store.settings.AI.enabled)if("Ollama"===this.store.settings.AI.provider)this.AI=new u.AI.providers.Ollama(this,this.store.settings.AI.Ollama);else this.AI=null;else this.AI=null;{const e=this.store.UI.queue.width;document.body.querySelector("#queue").style.width=e,document.body.querySelector("#right-container").style.width=`calc(100% - ${e})`}{const e=this.store.UI.details.width;document.body.querySelector("#right-details").style.width=e,document.body.querySelector("#right-top").style.width=e,document.body.querySelector("#main-container").style.width=`calc(100% - ${e})`}return this.gui.settings.update(),n}async start(){this.gui.start(),this.update(),this.queue.fetch(),this.started=!0}async update(){const e=performance.now();try{await this.api.account().then(e=>{this.rights=e.rights.reduce((e,t)=>({...e,[t]:!0}),{}),this.groups=e.groups.reduce((e,t)=>({...e,[t]:!0}),{})}),await this.api.getGlobalUserInfo(this.api.username).then(e=>{var t;(t=this.rights).rollback||(t.rollback=e.rights.includes("rollback"))}),this.rights.rollback||"LuniZunie"===this.api.username||this.disable("Rollback required","Your account no longer has rollback rights, which are required to use WikiShield.");{const e=this.rights.review&&this.api.hasPendingChanges;document.querySelector("#queue-tab-pending").classList.toggle("hidden",!e),e||"pending"!==this.queue.current.type||this.queue.switch("recent")}this.save()}catch(e){console.error("Update error:",e)}setTimeout(()=>this.update(),Math.max(0,2500-(performance.now()-e)))}cleanup(){const e=Date.now();let t=!1;for(const[,n]of Object.entries(this.store.highlight))for(const[s,i]of n.entries())e>=i[1]&&(n.delete(s),t=!0);for(const[,n]of Object.entries(this.store.whitelist))for(const[s,i]of n.entries())e>=i[1]&&(n.delete(s),t=!0);t&&this.queue.current.item&&this.gui&&this.gui.renderQueue(this.queue.current.queue,this.queue.current.item)}controller(e){var t,n,s;if(this.started){if(this.gui.dialog.dialogs.active)return this.gui.dialog.controller(e);if(this.gui.settings.active)return this.gui.settings.controller(e);if(!("INPUT"===(null===(t=e.target)||void 0===t?void 0:t.tagName)||"TEXTAREA"===(null===(n=e.target)||void 0===n?void 0:n.tagName)||null!==(s=e.target)&&void 0!==s&&s.isContentEditable)&&"keydown"===e.type){if(e.repeat&&!this.store.settings.repeat_control_scripts)return;const t=(0,g.buildShortcut)(e);for(const n of this.store.control_scripts)n.keys.every(e=>e===t)&&(e.preventDefault(),this.execute(n))}}}async execute(e,t=!0,n=null,s=null){const i=(e,t)=>!e.name||("if"===e.name?this.gui.events.conditions[e.condition.name].check(this,t,e.condition.params):"if not"===e.name&&!this.gui.events.conditions[e.condition.name].check(this,t,e.condition.params));if(null===n){null!=s||(s=this.queue.current.item);const t=[e];let a=0;for(;t.length>0;){const e=t[0];if(i(e,s)){if(!e.actions){t.splice(0,1);continue}t.push(...e.actions)}e.name&&"if"!==e.name&&"if not"!==e.name&&this.gui.events.events[e.name].progress&&a++,t.splice(0,1)}if(a>0){let e=0;const t=new l.ProgressBar;n=(n,s)=>{const i="Done"===n?1:e/a;t.set(n,i,s),e++}}else n=e=>{}}if(i(e,s))for(const i of e.actions){if(!("name"in i))continue;const e={...i.params};for(const t of(null===(a=this.gui.events.events[i.name])||void 0===a||null===(r=a.parameters)||void 0===r?void 0:r.call(a,this,s))||[]){var a,r;t.id&&!(t.id in e)&&"default"in t&&(e[t.id]=t.default)}if("if"===i.name||"if not"===i.name)t=await this.execute(i,t,n,s);else{const a=this.gui.events.events[i.name],r=()=>{t=!1,this.audio.playSound(["action","failed"]),a.progress&&n(a.progress,!0)};try{if(t||!a.continuity){var o,d;const t=null!==(o=null===(d=a.valid)||void 0===d?void 0:d.call(a,this,s,e))&&void 0!==o?o:{valid:!0};if(t.valid){a.progress&&(n(a.progress,!1),this.audio.playSound(["action","default"])),this.store.statistics.actions_executed.total++;const t=await a.script(this,s,e);var c;if(!1===t.valid)r(),"reason"in t&&this.gui.dialog.toast("Action failed",t.reason,"error");else this.store.statistics.actions_executed.successful++,null===(c=a.successful)||void 0===c||c.call(a,this,s,e)}else r(),"reason"in t&&this.gui.dialog.toast("Action skipped",t.reason,"error")}}catch(e){r(),this.gui.dialog.toast("Please report to developer",`An error occurred while executing action "${i.name}". Check the console for details.`,"error"),console.error(`Error executing action "${i.name}":`,e.message||String(e))}}}return e.name||n("Done",!t),t}async getDEFCON(){const e="User:EnterpriseyBot/defcon",t=(await this.api.getPagesContent([e]))[e],n=t.match(/level\s*=\s*(\d+)/),s=t.match(/info\s*=\s*([\d.]+)/);return{level:n?Number(n[1]).toLocaleString():null,info:s?Number(s[1]).toLocaleString():null}}export(e=!0){this.time.save=performance.now(),this.store.statistics.session_time+=this.time.save-this.time.load;const{string:t,logs:n}=this.storage.encode();return e&&p.StorageManager.output(n),t}backup(){return this.time.save=performance.now(),this.store.statistics.session_time+=this.time.save-this.time.load,this.time.load=this.time.save,electron.localStorage.set(`WikiShield:BackupStorage-${this.api.username}`,`${Date.now()};${this.export(!1)}`),!0}async save(){this.backup();const e=`${Date.now()};${this.export(!1)}`,t=this.api.username;if(window.isFinite)electron.saveAccount(t,e);else try{const n=await this.api.postWithToken({action:"options",optionname:"userjs-wikishield-storage",optionvalue:e});"success"===(null==n?void 0:n.options)||console.error(`[WikiShield] Failed to save account data for ${t}:`,n)}catch(e){console.error(`[WikiShield] Failed to save account data for ${t}:`,e)}}async load(){try{var e,t;return null!==(e=null===(t=[electron.localStorage.get(`WikiShield:BackupStorage-${this.api.username}`),(await this.api.post({action:"query",meta:"userinfo",uiprop:"options",format:"json"})).query.userinfo.options["userjs-wikishield-storage"]].reduce((e,t)=>{var n,s;null!=t||(t="0;e30=");let i=0,a=t;return t.includes(";")&&([i,a]=t.split(";",2),i=parseInt(i,10)),new Date(i).toLocaleString(),new Date(null!==(n=null==e?void 0:e.timestamp)&&void 0!==n?n:0).toLocaleString(),i>0&&i>(null!==(s=null==e?void 0:e.timestamp)&&void 0!==s?s:0)?{timestamp:i,data:a}:e},null))||void 0===t?void 0:t.data)&&void 0!==e?e:"e30="}catch(e){var n;return null!==(n=void console.error("Failed to load storage from wiki:",e))&&void 0!==n?n:"e30="}}page(e,t,n=!0){return`https://${this.server}/${t?`w/index.php${e}`:`wiki/${n?encodeURIComponent(e):e}`}`}open(e,t){"force"===t?t=!1:window.arePopupsBlocked?t=!0:t||(t=!this.store.settings.wikipedia_popups.enabled),t?electron.openExternal(null!=e?e:"https://google.com/"):electron.openInBrowser(e).then(e=>{e&&requestAnimationFrame(()=>{if(this.gui.dialog.popups.push(e),!document.getElementById("popup-blocker")){const e=document.createElement("div");e.id="popup-blocker",e.innerText="Please close the popup or click anywhere on this page to continue using WikiShield.",document.body.appendChild(e),this.gui.dialog.check()}})})}}function _(e){if(m(y,this)[e])for(const n of m(y,this)[e])try{n.callback()}catch(e){}finally{var t;!0===(null===(t=n.options)||void 0===t?void 0:t.once)&&(m(y,this)[e]=m(y,this)[e].filter(e=>e!==n))}return this}async function S(e=null){const t=this.storage.decode(null!=e?e:await this.load()).logs;var n,s,i;(this.time.load=performance.now(),this.store.settings.AI.enabled)?"Ollama"===this.store.settings.AI.provider?"function"==typeof(null===(n=u.AI.providers)||void 0===n?void 0:n.Ollama)?this.AI=new u.AI.providers.Ollama(this,this.store.settings.AI.Ollama):(console.error("AI.providers.Ollama is not available. Falling back to null."),this.AI=null):(null===(s=this.AI)||void 0===s||s.cancel.all(),this.AI=null):(null===(i=this.AI)||void 0===i||i.cancel.all(),this.AI=null);return t}t.WikiShield=k,f=k,b="config",w={version:s.VERSION,changelog:{version:"6",HTML:fetch("https://raw.githubusercontent.com/LuniZunie/WikiShield-App/refs/heads/main/data/CHANGELOG.html").then(e=>e.text()).catch(()=>"<em>Could not fetch changelog.</em>")},pages:{AIV:"Wikipedia:Administrator intervention against vandalism",UAA:"Wikipedia:Usernames for administrator attention",RFPP:"Wikipedia:Requests for page protection/Increase",SRG:"Steward requests/Global"},config:{refresh:{recent:2e3,pending:2e3,watchlist:2e3,users:2e3},historyCount:10}},(b=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(b))in f?Object.defineProperty(f,b,{value:w,enumerable:!0,configurable:!0,writable:!0}):f[b]=w},4018(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.namespaces=void 0;t.namespaces=[{name:"Main",id:0,analysis_description:{edit:"",username:""}},{name:"Talk",id:1,analysis_description:{edit:"",username:""}},{name:"User",id:2,analysis_description:{edit:"Flag content unrelated to Wikipedia, such as self-promotion. If the page looks like a Wikipedia article, check that it isn't an obvious hoax, and that it is a subpage. Do not follow strict standards for these pages.",username:"Check whether the username matches the base page title. Most often, a user page should only be edited by that user. Consider alternative accounts, like User:Example creating User:Example (alt)."}},{name:"User talk",id:3,analysis_description:{edit:"",username:""}},{name:"Project",id:4,analysis_description:{edit:"",username:""}},{name:"Project talk",id:5,analysis_description:{edit:"",username:""}},{name:"File",id:6,analysis_description:{edit:"",username:""}},{name:"File talk",id:7,analysis_description:{edit:"",username:""}},{name:"MediaWiki",id:8,analysis_description:{edit:"",username:""}},{name:"MediaWiki talk",id:9,analysis_description:{edit:"",username:""}},{name:"Template",id:10,analysis_description:{edit:"",username:""}},{name:"Template talk",id:11,analysis_description:{edit:"",username:""}},{name:"Help",id:12,analysis_description:{edit:"",username:""}},{name:"Help talk",id:13,analysis_description:{edit:"",username:""}},{name:"Category",id:14,analysis_description:{edit:"",username:""}},{name:"Category talk",id:15,analysis_description:{edit:"",username:""}},{name:"Portal",id:100,analysis_description:{edit:"",username:""}},{name:"Portal talk",id:101,analysis_description:{edit:"",username:""}},{name:"Draft",id:118,analysis_description:{edit:"",username:""}},{name:"Draft talk",id:119,analysis_description:{edit:"",username:""}},{name:"MOS",id:126,analysis_description:{edit:"",username:""}},{name:"MOS talk",id:127,analysis_description:{edit:"",username:""}},{name:"TimedText",id:710,analysis_description:{edit:"",username:""}},{name:"TimedText talk",id:711,analysis_description:{edit:"",username:""}},{name:"Module",id:828,analysis_description:{edit:"Check whether the edit is meaningful Lua code. In this namespace, anything that isn't written in Lua can be safely assumed to be vandalism. Be careful about multi-line strings, as they might contain non-Lua code: check the context of the edit to make sure. Additionally, check if the edit introduces any obvious Lua syntax errors.",username:""}},{name:"Module talk",id:829,analysis_description:{edit:"",username:""}},{name:"Event",id:1728,analysis_description:{edit:"",username:""}},{name:"Event talk",id:1729,analysis_description:{edit:"",username:""}}]},6400(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.profanity=void 0;const n="\\*#\\-",s=`[${n}a4]`,i=`[${n}b6]`,a=`[${n}ck]`,r=`[${n}h]`,o=`[${n}i1y]`,l=`[${n}o0]`,d=`[${n}t7]`,c={a:s,b:i,c:a,d:`[${n}d6]`,e:`[${n}e3]`,f:`[${n}f]`,g:`[${n}g9]`,h:r,i:o,j:`[${n}j]`,k:`[${n}k]`,l:`[${n}l1]`,m:`[${n}m]`,n:`[${n}n]`,o:l,p:`[${n}p9]`,q:`[${n}q9]`,r:`[${n}r]`,s:`[${n}sz526]`,t:d,u:`[${n}uv]`,v:`[${n}vu]`,w:`[${n}w]`,x:`[${n}x]`,y:`[${n}y]`,z:`[${n}zs25]`,0:`[${n}0]`,1:`[${n}1]`,2:`[${n}2]`,3:`[${n}3]`,4:`[${n}4]`,5:`[${n}5]`,6:`[${n}6]`,7:`[${n}7]`,8:`[${n}8]`,9:`[${n}9]`};class u{constructor(e={}){this.conversion={};for(const[t,n]of Object.entries(e))for(const e of n)this.conversion[e]&&console.warn(`Profanity lookalike collision: ${e} is already mapped to ${this.conversion[e]}, remapping to ${t}`),this.conversion[e]=t}removeAccents(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}obscureReplacements(e){return e.replace(/(\/[|\\]\/|\\[|\\]\\)/g,"n").replace(/&/g,"and").replace(/zero/g,"0").replace(/one/g,"1").replace(/two/g,"2").replace(/three/g,"3").replace(/four/g,"4").replace(/five/g,"5").replace(/six/g,"6").replace(/seven/g,"7").replace(/eight/g,"8").replace(/nine/g,"9")}parseString(e,t=!1){e=t?e.replace(/[._,;:|]/g," ").replace(/\s+/g," ").toLowerCase():e.replace(/[\s._,;:|]/g,"").toLowerCase(),e=this.removeAccents(e);let n="";for(const t of e)this.conversion[t]?n+=this.conversion[t]:n+=t;return e=this.obscureReplacements(n)}analyzeObfuscation(e,t,n,s,i=!1){const a=e.substring(t,n);let r=0;if(/\s/.test(a)&&!i)return-.95;const o=this.countCaseChanges(a);if(o>0){o/Math.max(1,a.length-1)>.3&&(r+=.3)}if(/[._,;:|]/.test(a)){const e=(a.match(/[._,;:|]/g)||[]).length,t=(a.match(/[a-zA-Z0-9]/g)||[]).length;if(t>0){const n=e/t;n>.3&&(r+=Math.min(.5,.7*n))}}const l=this.checkWordBoundaries(e,t,n,s,i);r+=l;const d=this.checkSubstitution(a,s);if(d>0&&(r+=d),l<0){if(!this.isStandaloneWord(e,t,n)){this.isCamelCaseBoundary(e,t,n)?r+=.2:r-=.2}}return Math.max(-1,Math.min(1,r))}countCaseChanges(e){let t=0;for(let n=1;n<e.length;n++){const s=e[n-1],i=e[n];if(/[a-zA-Z]/.test(s)&&/[a-zA-Z]/.test(i)){s===s.toUpperCase()!==(i===i.toUpperCase())&&t++}}return t}checkWordBoundaries(e,t,n,s,i=!1){const a=t>0?e[t-1]:"",r=n<e.length?e[n]:"",o=e.substring(Math.max(0,t-8),Math.min(e.length,n+8)).toLowerCase(),l=[/WMF/,/pass(word|phrase|port|enger|ion|ive|ed|ing|es|key|code|over|by|able)/i,/class(room|mate|ified|es|ic|y|ification)/i,/grass(land|hopper|y|es)/i,/bass(ist|oon|line|es)/i,/mass(ive|acre|age|es|achusetts)/i,/assign(ment|ed|ing|s|ee|or)/i,/assess(ment|ed|ing|or|s)/i,/assemble|assembly|assertion|asset|assist|assume|assure|associate|association/i,/brass|crass|harass|morass|surpass|trespass|compass|embassy|embarrass/i,/cock(pit|tail|roach|ade|atoo|le|ney)/i,/scunthorpe|penistone|shitterton|lightwater|middlesex|sussex|essex|wessex/i,/dick(ens|inson|son|ey|ie)/i,/analyst|analytics|analyze|canal|banal/i,/therapist|therapeutic|therapy/i,/cumul(ative|us|at)|circum(stance|ference|cise|vent|navigate|scribe)/i,/butter(cup|fly|milk|scotch|fingers|nut)|buttress|button|rebuttal/i,/count(ry|er|ess|down|ing|ed|able|enance|erfeit|erpart)/i,/grape|drape|scrape|landscape|escapade/i,/shell(fish|fire|ter|ed)|eggshell|nutshell|bombshell|seashell/i,/whole(sale|some|hearted)/i,/exchange|exchequer/i,/title|titled|subtitle|entitle/i,/sextant|sextet|bisect|insect|intersect|section|sector/i,/cocktail|peacock|hancock|hitchcock|babcock|woodcock/i,/niger(ia|ian)|montenegro/i,/penisten|penetrat|penal(ty|ize|ise)|penchant|pencil|pendant|penguin|peninsula/i,/manslaughter|slaughterhouse/i,/shitake|shiitake/i,/arsenic|arsenal/i,/cummings|scumble/i,/smother|another|mother(board|land|hood)/i,/wanton|wanting|wanted|warrant/i,/trigger|bigger|digger|jigger|rigger|vigor|figure/i,/ballad|ball(room|park|istic|oon|et|ot|ard|ast)/i,/grape(fruit|vine|shot)/i,/raptor|rapport|rapid|rapier|rapture/i,/killed|killer|skill(ed|ful|s)|killjoy|kiln|kilo(gram|meter|byte|watt)/i,/bomb(ard|astic|shell|er|ing|ay)/i,/hellenic|hello|shell|othello/i,/crack(down|le|ed|ing|erjack)|firecracker/i,/jewel{1,2}/i,/skill/i];for(const e of l)if(e.test(o))return-.8;const d=/[a-zA-Z]/.test(a),c=/[a-zA-Z]/.test(r);if(d&&c){const i=e.substring(Math.max(0,t-8),t).toLowerCase(),a=e.substring(n,Math.min(e.length,n+8)).toLowerCase(),r=e.substring(Math.max(0,t-8),Math.min(e.length,n+8)).toLowerCase();return this.analyzePaddingLikelihood(i,a,s)>=.4||r.length>15&&r===r.toLowerCase()&&!/\s/.test(r)?0:-.5}if(d||c){const i=e.substring(Math.max(0,t-8),t).toLowerCase(),a=e.substring(n,Math.min(e.length,n+8)).toLowerCase();this.analyzePaddingLikelihood(i,a,s);return 0}const u=e.substring(t,n);return/\s/.test(u)&&!i?-.9:0}analyzePaddingLikelihood(e,t,n){let s=0;const i=/[bcdfghjklmnpqrstvwxyz]{3,}/i;(i.test(e)||i.test(t))&&(s+=.4);const a=t.match(/([a-z])\1{1,}/i);if(a&&a[0].length>=2){if(t.indexOf(a[0])>=t.length-3){(!/\b(ll|ss|tt|nn|mm|pp|dd|bb|gg|ff)$/i.test(a[0])||t.length<=3)&&(s+=.35)}}if(e.length<=2&&e.length>0&&(s+=.25),t.length<=3&&t.length>0){/^(er|ed|ing|ion|ly|al|ful|less|ness|ment|s)$/i.test(t)||(s+=.2)}/([qx][^u]|[jqxz]{2}|[bcdfghjklmnpqrstvwxz]{4,})/i.test(e+t)&&(s+=.3);const r=e+t;if(r.length>0){(r.match(/[aeiou]/gi)||[]).length/r.length<.2&&(s+=.3)}return Math.min(1,s)}checkSubstitution(e,t){const n=/[0-9@$!]/;if(!n.test(e))return 0;let s=0;for(const t of e)n.test(t)&&s++;const i=s/e.length;return Math.min(.3,.6*i)}isStandaloneWord(e,t,n){const s=t>0?e[t-1]:" ",i=n<e.length?e[n]:" ",a=/[\s.,;:!?()[\]{}"'`~\-_]/;return a.test(s)&&a.test(i)}isCamelCaseBoundary(e,t,n){if(0===t||n===e.length)return!1;const s=e[t-1],i=e[t],a=e[n-1],r=e[n],o=/[A-Z]/.test(i),l=/[a-z]/.test(s),d=(/[a-z]/.test(r),/[a-z]/.test(a));return!!(l&&o||d&&/[A-Z]/.test(r))}findMatchPosition(e,t,n,s){const i=e.toLowerCase();let a=-1,r=-1,o=-1;for(let n=0;n<=i.length-t.length;n++){const i=this.parseString(e.substring(n,n+t.length+10));if(i.includes(s)){const e=this.calculateSimilarity(s,i.substring(0,s.length));e>o&&(o=e,a=n,r=n+t.length)}}return{start:a,end:r}}calculateSimilarity(e,t){const n=Math.min(e.length,t.length);let s=0;for(let i=0;i<n;i++)e[i]===t[i]&&s++;return s/Math.max(e.length,t.length)}match(e){const t=this.parseString(e),n=[];for(const s of u.hits)if(s.term){const i=s.term,a=s.severity||.5,r=s.note||null,o=s.multiWord||!1;if(1===i.length&&/[^\x00-\x7F]/.test(i))continue;const l=o?this.parseString(e,!0):t,d=i.split("").reduce((e,t)=>{var n;if(o&&" "===t)return e+" *";return e+(null!==(n=c[t])&&void 0!==n?n:t)},""),u=new RegExp(d,"gi");let p;const g=this.buildPositionMap(e,o);for(;null!==(p=u.exec(l));){const t=p[0],l=p.index,d=l+t.length,c=g[l]||l,u=void 0!==g[d-1]?g[d-1]+1:d,h=this.analyzeObfuscation(e,c,u,i,o);let m=this.calculateMatchConfidence(t,i);h<-.5?m*=Math.max(.01,1+4*h):h<-.2?m*=Math.max(.05,1+2.5*h):h>.5&&(m=Math.min(1,m+.08*h));if(m>=Math.max(.05,.2-.015*i.length)){const o=e.substring(c,u);if(s.ignore&&Array.isArray(s.ignore)&&s.ignore.includes(o))continue;n.push({name:i,match:t,confidence:m,obfuscation:h,severity:a,note:r,originalSegment:o})}}}else if(s.regex){const t=e.match(new RegExp(s.regex.source,"g"));if(t)for(const e of t)n.push({name:s.name,match:e,confidence:1,obfuscation:.5,severity:s.severity||.5,note:s.note||"Pattern-based detection with high confidence. Obfuscation is moderate for formatted data.",originalSegment:e})}else s.test&&s.test(e)&&n.push({name:s.name,match:e,confidence:1,obfuscation:.5,severity:s.severity||.5,note:s.note||"Test-based detection with high confidence.",originalSegment:e});return n}buildPositionMap(e,t=!1){const n={};let s=0;for(let i=0;i<e.length;i++){const a=e[i];t?/[\s._,;:|]/.test(a)&&0!==i&&/[\s._,;:|]/.test(e[i-1])||(n[s]=i,s++):/[\s._,;:|]/.test(a)||(n[s]=i,s++)}return n}findOriginalPosition(e,t){let n=0;for(let s=0;s<e.length;s++){const i=e[s];if(!/\s/.test(i)){if(n===t)return s;n++}}return t}calculateMatchConfidence(e,t){const n=/[\*#_\-]/;let s=0,i=0,a=0,r=0;for(const t of e)n.test(t)?(i++,a++,r=Math.max(r,a)):(s++,a=0);const o=s+i;if(0===o)return 0;const l=s/o;if(l<.3)return 0;if(l<.5)return.1*l;const d=r>1?Math.max(.2,1-.2*r):1,c={};for(const t of e)n.test(t)||(c[t]=(c[t]||0)+1);let u=1;for(const e of Object.values(c))e>2&&(u*=Math.max(.4,1-.15*(e-2)));const p=o/t.length,g=p>1.5?Math.max(.2,1-.4*(p-1)):1;return Math.max(0,Math.min(1,l*d*u*g))}score(e){const t=this.match(e);let n=0;for(const e of t)n+=e.confidence;return n}evaluate(e){const t=this.match(e),n=this.parseString(e);if(0===t.length)return{finalScore:0,risk:"No",matches:[],details:{baseScore:0,weightedScore:0,severityScore:0,matchCount:0,averageConfidence:0,averageObfuscation:0,averageSeverity:0,textLength:e.length,densityPenalty:0,repetitionPenalty:0,diversityBonus:0,lengthModifier:1,highConfidenceMatches:0,mediumConfidenceMatches:0,lowConfidenceMatches:0}};let s=0,i=0,a=0,r=0,o=0,l=0;const d=new Set;for(const e of t){const t=e.severity||.5,n=e.confidence;r+=n,l+=Math.pow(n,1.5)*t,o+=e.obfuscation||0,d.add(e.name),n>=.7?s++:n>=.4?i++:a++}const c=r/t.length,u=o/t.length,p=r>0?l/r:0,g=1*s+.35*i+.08*a,h=n.length,m=t.length/Math.max(h/5,1),v=.6*Math.tanh(.3*m),f={};for(const e of n)/[a-z0-9]/.test(e)&&(f[e]=(f[e]||0)+1);let b=0;const w=Object.values(f).reduce((e,t)=>e+t,0);for(const e of Object.values(f))e>3&&(b+=Math.pow((e-3)/w,1.5));const y=Math.min(.8,2*b),x=d.size/t.length,k=x>.6?1*(x-.6):0,_=Math.max(.5,Math.min(1.5,1+Math.log10(Math.max(10,h))/10)),S=u>.4?.5*(u-.4):u<-.2?.4*Math.abs(u):0,q=t.filter(e=>e.severity>=1&&e.confidence>=.5||e.confidence>=.9).length,E=g*p*_;let L=E+.5*l+k+.8*q-(v+y+S);c<.5&&(L*=Math.max(.1,1.5*c)),L>3?L=3+1.5*Math.log10(L-2):L>1.5&&(L=1.5+.8*Math.sqrt(L-1.5)),L=Math.max(0,L);let A="No";return L>=4||q>=2?A="Critical":L>=2.5?A="High":L>=1.5?A="Medium":L>=.5&&(A="Low"),{clamped:Math.max(0,Math.min(1,L/5)),finalScore:Math.round(100*L)/100,risk:A,matches:t,details:{baseScore:Math.round(100*g)/100,weightedScore:Math.round(100*E)/100,severityScore:Math.round(100*l)/100,matchCount:t.length,uniqueMatches:d.size,averageConfidence:Math.round(100*c)/100,averageObfuscation:Math.round(100*u)/100,averageSeverity:Math.round(100*p)/100,textLength:e.length,densityPenalty:Math.round(100*v)/100,repetitionPenalty:Math.round(100*y)/100,diversityBonus:Math.round(100*k)/100,lengthModifier:Math.round(100*_)/100,obfuscationPenalty:Math.round(100*S)/100,criticalPatterns:q,highConfidenceMatches:s,mediumConfidenceMatches:i,lowConfidenceMatches:a}}}}!function(e,t,n){(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(u,"hits",[{name:"URL",regex:/(?:https?:\/\/(?:www\.)?[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*(?:\/[^\s]*)?|(?:www\.)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?:\/[^\s]*)?|[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.(?:com|org|net|edu|gov|mil|int|co|io|ai|app|dev|info|biz|name|pro|museum|aero|coop|jobs|mobi|travel|xxx|ac|ad|ae|af|ag|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)(?:\/[^\s]*)?)/i,severity:.1,note:"URLs in usernames may indicate spam or advertising."},{name:"Phone number",regex:/(\+?\d{1,3}[-.\s]?|\(\+?\d{1,3}\)\s?)?(\d{3}[-.\s]?\d{3}[-.\s]?\d{4}|\d{4}[-.\s]?\d{3}[-.\s]?\d{3})/,severity:.3,note:"The pattern of numbers in this username resemble a phone number. Usernames containing personal information may be considered disruptive."},{name:"Email address",regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/,severity:.3,note:"Email addresses in usernames can indicate spam or contact sharing."},{term:"base64",severity:.2,note:"Base64 encoding may be used to obfuscate content to bypass filters."},{term:"fromhex",severity:.2,note:"Hex encoding may be used to obfuscate content to bypass filters."},{term:"1488",severity:.5,note:"Well-known Neo-Nazi symbol, however the number itself can appear in innocent contexts."},{term:"nazi",severity:1},{term:"swastika",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"卍",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"卐",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿕",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿖",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿗",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"࿘",severity:.8,note:"Symbol often associated with Nazism, however it has historical significance in other cultures."},{term:"aryan",severity:.7,note:"Associated with white supremacist ideology, though it can also be in reference to the self-designation of Indo-Iranian peoples."},{term:"fascism",severity:.5},{term:"fascist",severity:.5},{term:"facist",severity:.5},{term:"☭",severity:.5,note:"Hammer and sickle symbol, politically charged but context-dependent."},{term:"✡",severity:.4,note:"Star of David, can be used respectfully or in antisemitic contexts."},{term:"44",severity:.1,note:"Obfuscated symbol of the Nazi SS division. If appears as 'ᛋᛋ' or similar, indicates intent to reference the SS."},{term:"imbo wales",severity:.2,multiWord:!0,note:"Play on 'Jimbo Wales' name, may indicate mockery or impersonation."},{term:"sock",severity:.3,note:"May reference sockpuppet accounts but has innocent meanings."},{term:"puppet",severity:.3,note:"May reference sockpuppet accounts but has innocent meanings."},{term:"sock puppet",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"return",severity:.2,note:"Often used in usernames by sockpuppeteers."},{term:"is back",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"are back",severity:.6,multiWord:!0,note:"Often used in usernames by sockpuppeteers."},{term:"timelash",severity:1,note:'Well-known sockpuppeteer ("Timelash") on Wikipedia.'},{term:"my little",severity:.8,multiWord:!0,note:"If related to 'my little pony', indicates sockpuppeteer."},{term:"my little pony",severity:1,multiWord:!0,note:"Well-known sockpuppeteer on Wikipedia."},{term:"friendship is magic",severity:1,multiWord:!0,note:"Well-known sockpuppeteer on Wikipedia."},{term:"anal",severity:.7},{term:"anus",severity:.5},{term:"sex",severity:.3},{term:"secs",severity:.05,note:"Obfuscated form of 'sex'."},{term:"seggs",severity:.2,note:"Obfuscated form of 'sex'."},{term:"willy",severity:.2,note:"Slang for penis."},{term:"wank",severity:.6,note:"British sexual slang for masturbation."},{term:"barf",severity:.3},{term:"bastard",severity:.5},{term:"batty boy",severity:.7,multiWord:!0,note:"Homophobic slur in British/Caribbean English."},{name:"bitch",regex:new RegExp(`${i+o}(${l}|${s})?${d}?${a+r}`),severity:.7},{term:"blow job",severity:.8,multiWord:!0},{term:"blowing",severity:.2,note:"Sexual innuendo but common verb."},{term:"boner",severity:.4},{term:"boob",severity:.4},{term:"booty",severity:.3},{term:"breast",severity:.4,note:"Anatomical term, but can be used inappropriately."},{term:"butt",severity:.2},{term:"bite me",severity:.5,multiWord:!0,note:"Often has defiant or provocative connotation."},{term:"butt plug",severity:.7,multiWord:!0},{term:"bollock",severity:.5,note:"British slang for testicles."},{term:"bollox",severity:.5,note:"Variant spelling of 'bollocks'."},{term:"bollix",severity:.5,note:"Variant spelling of 'bollocks'."},{term:"clit",severity:.3},{term:"cock",severity:.3},{term:"brain dead",severity:.5,multiWord:!0,note:"Derogatory medical reference."},{term:"bukake",severity:.7},{term:"bully",severity:.5,note:"Indicates harassment behavior."},{term:"bullies",severity:.5,note:"Indicates harassment behavior."},{term:"bullied",severity:.3,note:"May indicate victimhood or boasting."},{term:"versus",severity:.4,note:"Combat/conflict framing, but legitimate word."},{term:"bumming",severity:.5,note:"British slang for anal sex or begging."},{term:"bunghole",severity:.5},{term:"cesspool",severity:.3,note:"Derogatory term for filthy place."},{term:"cesspit",severity:.3,note:"Variant of cesspool."},{term:"dick",severity:.7},{term:"prick",severity:.7},{term:"dildo",severity:.7},{term:"censor",severity:.1,note:"May indicate anti-censorship stance."},{term:"ching",severity:.8,note:"Part of racial slur against Asians."},{term:"ching chong",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"ching chang",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"wing wong",severity:.9,multiWord:!0,note:"Racist mockery of Asian languages."},{term:"bot",severity:.4,note:"May indicate automated account claim."},{term:"ox long",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'cock's long'."},{term:"douche",severity:.5},{term:"cunt",severity:.7},{term:"cuck",severity:.4,note:"Derogatory term from manosphere."},{term:"curry munch",severity:.9,multiWord:!0,note:"Racist slur against South Asians."},{term:"crime",severity:.3,note:"Negative connotation but legitimate word."},{term:"pussy",severity:.7},{term:"deeznuts",severity:.3,note:"Crude joke phrase."},{term:"destroy",severity:.3,note:"Aggressive language."},{term:"destruction",severity:.3,note:"Aggressive language."},{term:"diaper",severity:.3,note:"Infantilization or fetish reference."},{term:"diarrhea",severity:.3},{term:"throbbing",severity:.5,note:"Sexual innuendo term."},{term:"dimwit",severity:.3},{term:"doo doo",severity:.3,multiWord:!0},{term:"dookie",severity:.3},{term:"fart",severity:.3},{term:"ejaculat",severity:.7},{term:"erect",severity:.5,note:"Sexual context or legitimate word."},{term:"erotic",severity:.5},{term:"fuck",severity:.8},{term:"phuck",severity:.8,note:'Alternative spelling of "fuck" to bypass detection.'},{term:"orgasm",severity:.7},{term:"rape",severity:1},{term:"lawsuit",severity:.3,note:"Legal threat implication."},{term:"fraud",severity:.5,note:"Accusation of criminal behavior."},{term:"tard",severity:.5,note:"Ableist slur suffix."},{term:"terror",severity:.7,note:"Violence/terrorism reference."},{term:"mike hunt",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'my cunt'."},{term:"mike ox",severity:.5,multiWord:!0,note:"Phonetic sexual innuendo for 'my cock's'."},{term:"masturbat",severity:.7},{term:"nutsack",severity:.5},{term:"ophile",severity:1,note:"Suffix for sexual predator terms like pedophile."},{term:"pedo",severity:.6},{term:"peeing",severity:.3},{term:"peanus",severity:.5,note:"Intentional misspelling of 'penis'."},{term:"penis",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"porn",severity:.7},{term:"piss",severity:.5},{term:"poop",severity:.3},{term:"prison",severity:.3,note:"Criminal context, but legitimate word."},{term:"prostitute",severity:.5,note:"Sexual work reference or insult."},{term:"queer",severity:.5,note:"Can be slur or reclaimed identity."},{term:"rectum",severity:.3,note:"Anatomical term."},{term:"report me",severity:.3,multiWord:!0,note:"Defiant/trolling phrase."},{term:"rimming",severity:.7},{term:"scrotum",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"semen",severity:.7},{term:"slut",severity:.7},{term:"sucks",severity:.3,note:"Mild profanity or legitimate verb."},{term:"sux",severity:.3,note:"Intentional misspelling of 'sucks'."},{term:"vagina",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"vadge",severity:.5,note:"Slang for vagina."},{term:"vomit",severity:.3},{term:"vulva",severity:.5,note:"Anatomical term, inappropriate in usernames."},{term:"whore",severity:.7},{term:"chink",severity:1},{term:"jew",severity:.3,note:"Legitimate religious/ethnic term but tracked for antisemitic usage patterns."},{term:"nigger",severity:1},{term:"nigga",severity:1},{term:"nigguh",severity:1,note:"Phonetic spelling of racial slur."},{term:"niglet",severity:1},{term:"pajeet",severity:.7,note:"Derogatory term for South Asians."},{term:"slave",severity:.6,note:"Dehumanizing term with historical trauma, but legitimate historical uses."},{term:"master race",severity:1,multiWord:!0,note:"Nazi supremacist ideology phrase."},{term:"inferior race",severity:1,multiWord:!0},{term:"superior race",severity:1,multiWord:!0,note:"White supremacist ideology."},{term:"racist",severity:.8},{term:"racism",severity:.7},{term:"racial",severity:.3,note:"Neutral term but tracked for context in discriminatory language."},{term:"bigot",severity:.7},{term:"fag",severity:.7},{term:"taliban",severity:.7,note:"Terrorist organization reference."},{term:"antisemit",severity:1},{term:"bleed",severity:.3,note:"Can indicate violence or be medical."},{term:"bloody",severity:.3,note:"British profanity or literal blood reference."},{term:"hell",severity:.5,note:"Religious reference used as mild profanity, but legitimate uses."},{term:"damn",severity:.3},{term:"crap",severity:.3},{term:"darn",severity:.1,note:"Mild euphemism for 'damn'."},{term:"shutup",severity:.3,note:"Rude command indicating hostility."},{term:"spastic",severity:.5,note:"Ableist slur in British English, medical term in US."},{term:"disabled",severity:.1,note:"Legitimate disability term but tracked for ableist patterns."},{term:"loser",severity:.3},{term:"abuse",severity:.5,note:"Indicates harmful behavior or accusations."},{term:"spam",severity:.3,note:"Indicates unwanted content or disruption."},{term:"abusi",severity:.5,note:"Variant of 'abuse/abusive'."},{term:"hitler",severity:1},{term:"adolf",severity:.4,note:"Common name but often used in Hitler references."},{term:"gestapo",severity:1},{term:"heil",severity:.8,note:"Nazi salute reference."},{term:"final solution",severity:1,multiWord:!0,note:"Nazi euphemism for genocide."},{term:"death camp",severity:1,multiWord:!0},{term:"concentration camp",severity:1,multiWord:!0,note:"Holocaust reference, legitimate historical use but concerning in usernames."},{term:"gas chamber",severity:1,multiWord:!0},{term:"holocaust",severity:.5,note:"Historical tragedy reference, legitimate historical use."},{term:"zionis",severity:.5,note:"Political term stem, can be antisemitic depending on context."},{term:"fuhrer",severity:1},{term:"reich",severity:.7,note:"Nazi Germany reference, though legitimate German word."},{term:"massacre",severity:.7},{term:"slaughter",severity:.7},{term:"torture",severity:.7},{term:"lynch",severity:1,note:"Racist mob killing reference, though also a surname."},{term:"killer",severity:.5},{term:"mobster",severity:.5,note:"Organized crime reference."},{term:"gangster",severity:.3,note:"Criminal reference or slang."},{term:"druglord",severity:.5,note:"Drug trafficking reference."},{term:"drugs",severity:.3,note:"General term that can be legitimate or problematic."},{term:"meth",severity:.5,note:"Reference to illegal drug, though also shorthand for 'method'."},{term:"cocaine",severity:.5},{term:"heroin",severity:.5},{term:"weed",severity:.3,note:"Marijuana reference with varying legal status, also refers to plants."},{term:"marijuana",severity:.3,note:"Cannabis reference with complex legal status."},{term:"crack",severity:.5,note:"Drug reference or legitimate verb."},{term:"amphetamine",severity:.5},{term:"benzo",severity:.3,note:"Drug abbreviation or name prefix."},{term:"benzodiazepine",severity:.5},{term:"opioid",severity:.3,note:"Drug class, medical term."},{term:"opiate",severity:.3,note:"Drug class, medical term."},{term:"ketamine",severity:.5,note:"Drug reference or medical use."},{term:"rohypnol",severity:.7,note:"Date rape drug reference."},{term:"i like",severity:.2,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"i love",severity:.3,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"i hate",severity:.5,multiWord:!0,note:"Flagged to detect inappropriate statements when combined with other terms."},{term:"young",severity:.2,note:"Age reference with legitimate uses but flagged in combination."},{term:"underage",severity:.8,note:"Age reference with concerning implications in certain contexts."},{term:"teen",severity:.3,note:"Age reference, concerning in some contexts."},{term:"adolescent",severity:.2,note:"Age term, concerning in some contexts."},{term:"preteen",severity:.4,note:"Age reference with concerning implications in certain contexts."},{term:"rapist",severity:1},{term:"raping",severity:1},{term:"incest",severity:1},{term:"cult",severity:.3,note:"Religious/social group term with negative connotation."},{term:"sekt",severity:.3,note:"German for 'sect', cult reference."},{term:"disembowel",severity:1},{term:"behead",severity:1},{term:"traitor",severity:.5,note:"Accusatory term."},{term:"genocide",severity:1},{term:"ethnic clean",severity:1,multiWord:!0,note:"Euphemism for genocide."},{term:"klan",severity:1},{term:"klux",severity:1},{term:"kkk",severity:1},{term:"kill",severity:.5,note:"Violent language, but common word."},{term:"organi",severity:.1,note:"Word stem for organization."},{term:"blog",severity:.1,note:"External site reference."},{term:"group",severity:.1,note:"Organizational term."},{term:"compan",severity:.1,note:"Company stem, spam indicator."},{term:"associat",severity:.1,note:"Association stem."},{term:"industr",severity:.1,note:"Industry stem, spam indicator."},{term:"corporate",severity:.1,note:"Business term, spam indicator."},{term:"famil",severity:.1,note:"Family stem, group indicator."},{term:"task",severity:.1,note:"Organizational term."},{term:"alliance",severity:.1,note:"Group term."},{term:"entertain",severity:.1,note:"Entertainment stem, promotional."},{term:"public",severity:.1,note:"Common term, promotional context."},{term:"private",severity:.1,note:"Common term, organizational."},{term:"troll",severity:.3,note:"Disruptive behavior indicator."},{term:"trolol",severity:.3,note:"Trolling variant/meme."},{term:"grief",severity:.3,note:"Gaming term for harassment."},{term:"password",severity:.3,note:"Security term, suspicious in username."},{term:"admin",severity:.7,note:"Role impersonation."},{term:"sysop",severity:.4,note:"Wikipedia role impersonation."},{term:"bureaucrat",severity:.5,note:"Wikipedia role impersonation."},{term:"moderator",severity:.5,note:"Role impersonation."},{term:"staff",severity:.5,note:"Role impersonation."},{term:"developer",severity:.5,note:"Role impersonation."},{term:"owner",severity:.4,note:"Role impersonation."},{term:"founder",severity:.3,note:"Role impersonation."},{term:"wmf",severity:.2,note:"Wikimedia Foundation impersonation."},{term:"foundation",severity:.3,note:"Organizational impersonation."},{term:"unblock",severity:.1,note:"Suggests blocked user."},{term:"4chan",severity:.5,note:"Imageboard site, trolling association."},{term:"8chan",severity:.3,note:"Controversial imageboard."},{term:"reddit",severity:.3,note:"External site reference."},{term:"plague",severity:.3,note:"Disease/attack term."},{term:"skibidi",severity:.1,note:"Internet meme reference."},{term:"milf",severity:.5},{term:"dilf",severity:.5},{term:"sext",severity:.5,note:"Sending sexual messages."},{term:"thot",severity:.3,note:"Derogatory sexual slang."},{term:"rizz",severity:.1,note:"Gen Z slang for charisma."},{term:"gyatt",severity:.1,note:"Sexualized Gen Z slang."},{term:"noob",severity:.1},{term:"lyric",severity:.1,note:"Possible lyrics website spammer."},{term:"propaganda",severity:.5,note:"Misinformation term."},{term:"asshole",severity:.7},{term:"fucktard",severity:.7},{term:"retard",severity:.7},{term:"imbecile",severity:.5},{term:"moron",severity:.5},{term:"chigga",severity:1},{term:"chigger",severity:1},{term:"wigga",severity:1},{term:"wigger",severity:1},{term:"igga",severity:.7,note:"Potential variant of racial slur.",ignore:["1994","ig94"]},{term:"igger",severity:.7,note:"Potential variant of racial slur."},{term:"mother fuck",severity:.7,multiWord:!0},{term:"bull shit",severity:.6,multiWord:!0},{term:"dumb ass",severity:.5,multiWord:!0},{term:"dumb fuck",severity:.7,multiWord:!0},{term:"goon",severity:.2,multiWord:!1}]);t.profanity=new u({a:["ɑ","𝑎","𝗮","𝕒","𝖆","𝓪","𝚊","𝞪","А","а","𝔞","𝒂","𝘢","𝛼","𝒶","𝙖","𝜶","𝐚","𝖺","🄰","🅰️","🅰","Ⓐ","ⓐ","@"],b:["b","𝑏","𝗯","𝕓","𝖇","𝓫","𝚋","𝞫","Ь","в","𝔟","𝒃","𝘣","𝛃","𝒷","𝙗","𝜷","𝐛","𝖻","🄱","🅱️","🅱","Ⓑ","ⓑ"],c:["c","𝑐","𝗰","𝕔","𝖈","𝓬","𝚌","ϲ","с","𝔠","𝒄","𝘤","𝒸","𝙘","𝐜","𝖼","🄲","Ⓒ","ⓒ"],d:["d","𝑑","𝗱","𝕕","𝖉","𝓭","𝚍","𝞭","ԁ","ԃ","𝔡","𝒅","𝘥","𝛿","𝒹","𝙙","𝜹","𝐝","𝖽","𝝏","🄳","Ⓓ","ⓓ"],e:["e","𝑒","𝗲","𝕖","𝖊","𝓮","𝚎","𝞮","е","𝔢","𝒆","𝘦","𝛆","","𝙚","𝜺","𝐞","𝖾","з","𝝐","🄴","Ⓔ","ⓔ","€"],f:["f","𝑓","𝗳","𝕗","𝖋","𝓯","𝚏","𝞯","ғ","ƒ","𝔣","𝒇","𝘧","𝒻","𝙛","𝜻","𝐟","𝖿","🄵","Ⓕ","ⓕ"],g:["g","𝑔","𝗴","𝕘","𝖌","𝓰","𝚐","ɡ","Ԍ","ԍ","𝔤","𝒈","𝘨","𝙜","𝐠","𝗀","🄶","Ⓖ","ⓖ"],h:["h","𝗵","𝕙","𝖍","𝓱","𝚑","һ","н","𝔥","𝒉","𝘩","ℎ","𝒽","𝙝","𝐡","𝗁","🄷","Ⓗ","ⓗ"],i:["i","𝑖","𝗶","𝕚","𝖎","𝓲","𝚒","𝞲","і","𝔦","𝒊","𝘪","𝒾","𝙞","𝜾","𝐢","𝗂","🄸","ℹ️","ℹ","Ⓘ","ⓘ","!"],j:["j","𝑗","𝗷","𝕛","𝖏","𝓳","𝚳","ј","𝔧","𝒋","𝘫","𝒿","𝙟","𝐣","𝗃","🄹","Ⓙ","ⓙ"],k:["k","𝑘","𝗸","𝕜","𝖐","𝓴","κ","к","𝔨","𝒌","𝘬","𝓀","𝙠","𝝀","𝐤","𝗄","𝞳","𝜿","қ","🄺","Ⓚ","ⓚ"],l:["l","𝑙","𝗹","𝕝","𝖑","𝓵","ⅼ","ӏ","𝔩","𝒍","𝘭","𝓁","𝙡","𝐥","𝗅","🄻","Ⓛ","ⓛ","|"],m:["m","𝑚","𝗺","𝕞","𝖒","𝓶","𝚖","м","𝔪","𝒎","𝘮","𝓂","𝙢","𝐦","𝗆","🄼","Ⓜ️","Ⓜ","ⓜ"],n:["n","𝑛","𝗻","𝕟","𝖓","𝓷","𝚗","ո","п","𝔫","𝒏","𝘯","𝓃","𝙣","𝐧","𝗇","𝞰","𝜼","🄽","Ⓝ","ⓝ"],o:["o","𝑜","𝗼","𝕠","𝖔","𝓸","𝚘","ο","о","𝔬","𝒐","𝘰","𝙤","𝝈","𝐨","𝗈","𝜽","𝝄","𝝓","𝝑","𝝋","🄾","🅾️","🅾","Ⓞ","ⓞ"],p:["p","𝑝","𝗽","𝕡","𝖕","𝓹","𝚙","ρ","р","𝔭","𝒑","𝘱","𝓅","𝙥","𝐩","𝗉","𝝆","🄿","🅿️","🅿","Ⓟ","ⓟ"],q:["q","𝑞","𝗾","𝕢","𝖖","𝓺","𝚚","ԛ","𝔮","𝒒","𝘲","𝓆","𝙦","𝐪","𝗊","🅀","Ⓠ","ⓠ"],r:["r","𝑟","𝗿","𝕣","𝖗","𝓻","𝚛","г","𝔯","𝒓","𝘳","𝓇","𝙧","𝐫","𝗋","𝞽","🅁","Ⓡ","ⓡ"],s:["s","𝑠","𝗌","𝕤","𝖘","𝓼","𝚜","ѕ","𝔰","𝒔","𝘴","𝓈","𝙨","𝐬","🅂","Ⓢ","ⓢ","$"],t:["t","𝑡","𝗍","𝕥","𝖙","𝓽","𝚝","τ","т","𝔱","𝒕","𝘵","𝓉","𝙩","𝐭","𝝉","🅃","Ⓣ","ⓣ","+"],u:["u","𝑢","𝗎","𝕦","𝖚","𝓾","𝚞","υ","𝔲","𝒖","𝘶","𝓊","𝙪","𝐮","𝛍","🅄","Ⓤ","ⓤ"],v:["v","𝑣","𝗏","𝕧","𝖛","𝓿","𝚟","ν","𝔳","𝒗","𝘷","𝓋","𝙫","𝐯","𝞶","𝝂","𝝊","🅅","Ⓥ","ⓥ"],w:["w","𝑤","𝗐","𝕨","𝖜","𝔀","𝚠","ω","ш","𝔴","𝒘","𝘸","𝓌","𝙬","𝐰","𝝎","𝝍","🅆","Ⓦ","ⓦ"],x:["x","𝑥","𝗑","𝕩","𝖝","𝔁","𝚡","χ","х","𝔵","𝒙","𝘹","𝓍","𝙭","𝐱","𝝒","𝝌","🅇","Ⓧ","ⓧ"],y:["y","𝑦","𝗒","𝕪","𝖞","𝔂","𝚢","у","𝔶","𝒚","𝘺","𝓎","𝙮","𝐲","𝞬","𝜸","𝞴","🅈","Ⓨ","ⓨ"],z:["z","𝑧","𝗓","𝕫","𝖟","𝔃","𝚣","ζ","𝔷","𝒛","𝘻","𝓏","𝙯","𝐳","🅉","Ⓩ","ⓩ"],0:["0","𝟎","𝟬","𝟢"],1:["1","𝟏","𝟭","𝟣","①","➀","❶","➊","⓵"],2:["2","𝟐","𝟮","𝟤","②","➁","❷","➋","⓶"],3:["3","𝟑","𝟯","𝟥","③","➂","❸","➌","⓷"],4:["4","𝟒","𝟰","𝟦","④","➃","❹","➍","⓸","ᛋ"],5:["5","𝟓","𝟱","𝟧","⑤","➄","❺","➎","⓹"],6:["6","𝟔","𝟲","𝟨","⑥","➅","❻","➏","⓺"],7:["7","𝟕","𝟳","𝟩","⑦","➆","❼","➐","⓻"],8:["8","𝟖","𝟴","𝟪","⑧","➇","❽","➑","⓼"],9:["9","𝟗","𝟵","𝟫","⑨","➈","❾","➒","⓽"]})},4712(e,t){function n(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function s(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Logger=void 0;var i=new WeakSet;function a(e,t,n=!1){const s=(new Date).toISOString();this.logs.push({type:e,timestamp:s,message:t,expected:n})}t.Logger=class{constructor(){n(this,i),this.logs=[]}getLogs(){return[...this.logs]}log(e,t){s(i,this,a).call(this,"log",e,t)}warn(e,t){s(i,this,a).call(this,"warn",e,t)}error(e,t){s(i,this,a).call(this,"error",e,t)}dev(e,t){s(i,this,a).call(this,"dev",e,t)}}},9501(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.StorageManager=void 0;var s,i,a,r=n(4712),o=n(4029);n(9458),n(7345),n(7704),n(8415);class l{static get versions(){return new Map([[0,o.Version.v0],[1,o.Version.v1],[2,o.Version.v2],[3,o.Version.v3]])}constructor(){this.reset(new r.Logger)}reset(e){return null==e||e.log("Resetting storage to default."),this.data=l.version.default,l.version.init(e,this.data),l.version.validate(),l.version.construct(),this.data}load(e={}){var t,n;const s=new r.Logger;let i=null!==(n=(t=e).version)&&void 0!==n?n:t.version=0;if(i>l.version.number)return window.alert("The storage data is from a newer version of WikiShield. Please update to the latest version so that your data can be loaded correctly."),void window.location.reload();if(l.versions.has(i)){const t=l.version.number;for(;i!==t;){const t=l.versions.get(i+1);if(!("function"==typeof(null==t?void 0:t.constructor)&&new t instanceof o.Version)){s.dev("[MISSING_UPGRADE_METHOD] Uh oh! Something has gone wrong; this message should never appear. Please report this to the WikiShield developers."),e=this.reset(s);break}s.log(`Upgrading storage from version ${i} to ${i+1}`,!0);try{if(!t.init(s,e)){e=this.reset(s);break}(e=t.upgrade()).version=++i}catch(t){s.error(`Error upgrading storage from version ${i} to ${i+1}: ${t}`),e=this.reset(s);break}}i=e.version,s.log(`Initializing storage at version ${i}.`,!0),l.version.init(s,e),s.log(`Validating storage at version ${i}.`,!0),l.version.validate(),s.log(`Constructing storage at version ${i}.`,!0),e=l.version.construct(),s.log(`Storage loaded successfully at version ${i}.`,!0),this.data=e}else s.error(`Storage version ${i} is corrupted or unsupported.`),this.reset(s);return{data:this.data,logs:s.getLogs()}}save(){const e=new r.Logger,t=l.version.number;e.log(`Initializing storage at version ${t}.`,!0),l.version.init(e,this.data),e.log(`Deconstructing storage at version ${t}.`,!0);const n=l.version.deconstruct();return e.log(`Storage saved successfully at version ${t}.`,!0),{data:n,logs:e.getLogs()}}decode(e){try{return this.load(JSON.parse(atob(e.trim()||"e30=")))}catch(e){return this.load({})}}encode(){const{data:e,logs:t}=this.save();return{string:btoa(JSON.stringify(e)),logs:t}}static output(e,t="<unknown>",n=console){var s;const i=!e.some(e=>!e.expected);null==n||null===(s=n.log)||void 0===s||s.call(n,`[${i?" ":"X"}] WikiShield Storage Logs: ${t}`);for(const t of e){var a;let e=`[${t.expected?" ":"X"}][${t.timestamp}][Storage]`,s=t.type;"dev"===s&&(s="error",e=`#DEV# ${e}`),null==n||null===(a=n[s])||void 0===a||a.call(n,`${e} ${t.message}`)}}static okay(e,t=console){var n,s,i,a;null!=e||(e=(new l).load(l.versions.get(0).default));const r=!(null===(n=null===(s=e.logs)||void 0===s||null===(i=s.some)||void 0===i?void 0:i.call(s,e=>!e.expected))||void 0===n||n);return r||(null!==(a=void l.output(e.logs,"Storage Check",t))&&void 0!==a?a:r)}}t.StorageManager=l,s=l,i="version",a=o.Version.v3,(i=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(i))in s?Object.defineProperty(s,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[i]=a},330(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isURL=t.isObject=void 0;t.isObject=e=>null!==e&&"object"==typeof e&&!Array.isArray(e);t.isURL=e=>{try{return new URL(e),!0}catch(e){return!1}}},4029(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Version=void 0;var s=n(4712),i=n(330);function a(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class r{static sanitize(e,t,n=null){var s;const i=e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.loadedData);if(void 0===i)return null!==(s=void this.loadedLogger.warn(`Missing expected key path [ ${e.join(" -> ")} ] in stored data, defaulting to fallback value.`))&&void 0!==s?s:t;if("function"==typeof n){var a;const s=n(i);return void 0===s?null!==(a=void this.loadedLogger.warn(`Invalid value at key path [ ${e.join(" -> ")} ] in stored data, defaulting to fallback value.`))&&void 0!==a?a:t:s}return i}static exists(...e){return void 0!==e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.loadedData)}static deprecated(...e){var t;return!!this.exists(...e)&&(null===(t=void this.loadedLogger.warn(`Skipped deprecated key path [ ${e.join(" -> ")} ] in stored data.`,!0))||void 0===t||t)}static reset(...e){this.loadedLogger.warn(`Resetting key path [ ${e.join(" -> ")} ] in stored data to default value.`);const t=e.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.default);if(void 0===t)return void this.loadedLogger.dev(`Could not find default value for key path [ ${e.join(" -> ")} ] in stored data.`);const n=e.pop();e.reduce((e,t)=>(void 0===e[t]&&(e[t]={}),e[t]),this.loadedData)[n]=t}static restrictObject(e,...t){var n;if(!(0,i.isObject)(e))return null!==(n=void this.reset(...t))&&void 0!==n&&n;const s=Object.keys(t.reduce((e,t)=>void 0!==(null==e?void 0:e[t])?e[t]:void 0,this.default));return Object.keys(e).forEach(n=>{s.includes(n)||(this.loadedLogger.warn(`Removing unexpected key [ ${[...t,n].join(" -> ")} ] from stored data.`),delete e[n])}),!0}static get default(){return{}}static init(e,t){return this.loadedLogger=e,this.loadedData=t,!0}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");return{}}static validate(){var e;const t=this.loadedData;return this.restrictObject(t),t.version===this.number||null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e}}t.Version=r,a(r,"loadedLogger",new s.Logger),a(r,"loadedData",{}),a(r,"number",0)},9458(e,t,n){var s,i,a,r,o=n(4029);o.Version.v0=(s=class extends o.Version{static get default(){return{version:0,changelog:"0",options:{maxQueueSize:50,maxEditCount:50,minimumORESScore:0,enableSoundAlerts:!0,soundAlertORESScore:.95,enableUsernameHighlighting:!0,enableWelcomeLatin:!1,enableAutoWelcome:!1,enableEditAnalysis:!1,enableUsernameAnalysis:!1,enableAutoReporting:!0,selectedAutoReportReasons:{Vandalism:!0,"Subtle vandalism":!0,"Image vandalism":!0,Sandbox:!0,Unsourced:!0,"Unsourced (BLP)":!0,"Unsourced genre":!0,POV:!1,Commentary:!0,"AI-generated":!0,"AI-generated (talk)":!0,"MOS violation":!1,Censoring:!1,Disruption:!0,Deleting:!0,Errors:!0,"Editing tests":!0,Chatting:!1,Jokes:!0,Owning:!1,Advertising:!0,"Spam links":!0,"Personal attacks":!0,TPO:!0,"AfD removal":!0},zen:{enabled:!1,sounds:!0,watchlist:!1,notifications:!0,editCount:!1,toasts:!1},enableCloudStorage:!0,masterVolume:.5,volumes:{click:.5,notification:.5,watchlist:.5,alert:.5,whoosh:.5,warn:.5,rollback:.5,report:.5,thank:.5,protection:.5,block:.5,sparkle:.5,success:.5,error:.5},soundMappings:{click:"click",notification:"notify",watchlist:"ping",alert:"alert",whoosh:"whoosh",warn:"warn",rollback:"rollback",report:"report",thank:"thank",protection:"protection",block:"block",sparkle:"sparkle",success:"success",error:"error"},watchlistExpiry:"1 week",whitelistExpiry:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlightedExpiry:{users:"1 week",pages:"1 week",tags:"1 week"},wiki:"en",namespacesShown:[0],showTemps:!0,showUsers:!0,sortQueueItems:!0,enableOllamaAI:!1,ollamaServerUrl:"http://localhost:11434",ollamaModel:"",controlScripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warningType:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"if",condition:"operatorNonAdmin",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Mentor"}}]}],selectedPalette:0,theme:"theme-light"},statistics:{reviewed:0,reverts:0,reverts:0,reports:0,warnings:0,welcomes:0,whitelisted:0,highlighted:0,blocks:0,sessionStart:Date.now()},whitelist:{users:[],pages:[],tags:[]},highlighted:{users:[],pages:[],tags:[]},queueWidth:"15vw",detailsWidth:"15vw"}}},i=s,r=0,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7345(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(4029);g.Version.v1=(s=class extends g.Version{static get default(){return{version:1,changelog:"3",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,recent:{enabled:!0,order:0},flagged:{enabled:!0,order:1},users:{enabled:!0,order:2},watchlist:{enabled:!0,order:3}},cloud_storage:{enabled:!0},username_highlighting:{enabled:!0,fuzzy:!0},auto_welcome:{enabled:!0},expiry:{watchlist:"1 week",whitelist:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlight:{users:"1 week",pages:"1 week",tags:"1 week"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Unsourced","Unsourced (BLP)","Unsourced genre","Commentary","AI-generated","AI-generated (talk)","Censoring",,"Disruption","Deleting","Errors","Editing tests","Jokes","Advertising","Spam links","Personal attacks","TPO","AfD removal"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.notice":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},notices:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}}},UI:{theme:{palette:0},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warningType:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"if",condition:"operatorNonAdmin",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Auto"}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");this.deprecated("options","enableWelcomeLatin"),this.deprecated("options","volumes","whoosh"),this.deprecated("options","volumes","warn"),this.deprecated("options","volumes","rollback"),this.deprecated("options","volumes","thank"),this.deprecated("options","volumes","sparkle"),this.deprecated("options","volumes","watchlist"),this.deprecated("options","volumes","success"),this.deprecated("options","volumes","error"),this.deprecated("options","soundMappings"),this.deprecated("options","wiki"),this.deprecated("options","showTemps"),this.deprecated("options","showUsers"),this.deprecated("options","sortQueueItems"),this.deprecated("options","theme"),this.deprecated("options","zen","editCount"),this.deprecated("options","zen","watchlist");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:e.settings.performance.startup},namespaces:this.sanitize(["options","namespacesShown"],e.settings.namespaces),queue:{max_size:this.sanitize(["options","maxQueueSize"],e.settings.queue.max_size),max_edits:this.sanitize(["options","maxEditCount"],e.settings.queue.max_edits),min_ores:this.sanitize(["options","minimumORESScore"],e.settings.queue.min_ores),recent:{enabled:e.settings.queue.recent.enabled,order:e.settings.queue.recent.order},flagged:{enabled:e.settings.queue.flagged.enabled,order:e.settings.queue.flagged.order},users:{enabled:e.settings.queue.users.enabled,order:e.settings.queue.users.order},watchlist:{enabled:e.settings.queue.watchlist.enabled,order:e.settings.queue.watchlist.order}},cloud_storage:{enabled:this.sanitize(["options","enableCloudStorage"],e.settings.cloud_storage.enabled)},username_highlighting:{enabled:this.sanitize(["options","enableUsernameHighlighting"],e.settings.username_highlighting.enabled),fuzzy:e.settings.username_highlighting.fuzzy},auto_welcome:{enabled:this.sanitize(["options","enableAutoWelcome"],e.settings.auto_welcome.enabled)},expiry:{watchlist:this.sanitize(["options","watchlistExpiry"],e.settings.expiry.watchlist),whitelist:{users:this.sanitize(["options","whitelistExpiry","users"],e.settings.expiry.whitelist.users),pages:this.sanitize(["options","whitelistExpiry","pages"],e.settings.expiry.whitelist.pages),tags:this.sanitize(["options","whitelistExpiry","tags"],e.settings.expiry.whitelist.tags)},highlight:{users:this.sanitize(["options","highlightedExpiry","users"],e.settings.expiry.highlight.users),pages:this.sanitize(["options","highlightedExpiry","pages"],e.settings.expiry.highlight.pages),tags:this.sanitize(["options","highlightedExpiry","tags"],e.settings.expiry.highlight.tags)}},auto_report:{enabled:this.sanitize(["options","enableAutoReporting"],e.settings.auto_report.enabled),for:this.sanitize(["options","selectedAutoReportReasons"],e.settings.auto_report.for,e=>{if((0,o.isObject)(e))return e["AI-generated"]=e["AI-Generated"],delete e["AI-Generated"],e["AI-generated (talk)"]=e["AI-Generated (talk)"],delete e["AI-Generated (talk)"],Object.keys(e).filter(t=>!0===(null==e?void 0:e[t]))})},AI:{enabled:this.sanitize(["options","enableOllamaAI"],e.settings.AI.enabled),provider:e.settings.AI.provider,edit_analysis:{enabled:this.sanitize(["options","enableEditAnalysis"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["options","enableUsernameAnalysis"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["options","ollamaServerUrl"],e.settings.AI.Ollama.server),model:this.sanitize(["options","ollamaModel"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["options","enableSoundAlerts"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["options","soundAlertORESScore"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["options","masterVolume"],e.settings.audio.volume.master),"master.startup":e.settings.audio.volume["master.startup"],"master.music":e.settings.audio.volume["master.music"],"master.music.zen_mode":e.settings.audio.volume["master.music.zen_mode"],"master.ui":e.settings.audio.volume["master.ui"],"master.ui.click":this.sanitize(["options","volumes","click"],e.settings.audio.volume["master.ui.click"]),"master.queue":e.settings.audio.volume["master.queue"],"master.queue.ores":this.sanitize(["options","volumes","alert"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":e.settings.audio.volume["master.queue.mention"],"master.notification":e.settings.audio.volume["master.notification"],"master.notification.alert":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.alert"]),"master.notification.notice":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.notice"]),"master.notification.toast":this.sanitize(["options","volumes","notification"],e.settings.audio.volume["master.notification.toast"]),"master.action":e.settings.audio.volume["master.action"],"master.action.default":e.settings.audio.volume["master.action.default"],"master.action.failed":e.settings.audio.volume["master.action.failed"],"master.action.report":this.sanitize(["options","volumes","report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["options","volumes","block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["options","volumes","protection"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["options","zen","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["options","zen","sounds"],e.settings.zen_mode.sound.enabled)},music:{enabled:e.settings.zen_mode.music.enabled},alerts:{enabled:this.sanitize(["options","zen","notifications"],e.settings.zen_mode.alerts.enabled)},notices:{enabled:this.sanitize(["options","zen","notifications"],e.settings.zen_mode.notices.enabled)},toasts:{enabled:this.sanitize(["options","zen","toasts"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:e.settings.zen_mode.badges.enabled}}},UI:{theme:{palette:this.sanitize(["options","selectedPalette"],e.UI.theme.palette)},queue:{width:this.sanitize(["queueWidth"],e.UI.queue.width)},details:{width:this.sanitize(["detailsWidth"],e.UI.details.width)}},control_scripts:this.sanitize(["options","controlScripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name){if(!(e.condition in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else switch(e.name){case"welcome":if(!(0,o.isObject)(e.params))return!0;switch(e.params.template){case"Links":e.params.template="Graphical";break;case"Latin":e.params.template="Non-Latin";break;case"Mentor":return this.loadedLogger.warn(`Skipped deprecated "Mentor" welcome template at key [${[...n,s,"params","template"].join(" -> ")}].`,!0),!1}break;case"warn":if(!(0,o.isObject)(e.params))return!0;switch(e.params.warningType){case"AI-Generated":e.params.warningType="AI-generated";break;case"AI-Generated (talk)":e.params.warningType="AI-generated (talk)"}}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:e.statistics.edits_reviewed.total,thanked:e.statistics.edits_reviewed.thanked},recent_changes_reviewed:{total:e.statistics.recent_changes_reviewed.total},pending_changes_reviewed:{total:e.statistics.pending_changes_reviewed.total,accepted:e.statistics.pending_changes_reviewed.accepted,rejected:e.statistics.pending_changes_reviewed.rejected},watchlist_changes_reviewed:{total:e.statistics.watchlist_changes_reviewed.total},users_reviewed:{total:e.statistics.users_reviewed.total},reverts_made:{total:e.statistics.reverts_made.total,good_faith:e.statistics.reverts_made.good_faith,from_recent_changes:e.statistics.reverts_made.from_recent_changes,from_pending_changes:e.statistics.reverts_made.from_pending_changes,from_watchlist:e.statistics.reverts_made.from_watchlist,from_loaded_edits:e.statistics.reverts_made.from_loaded_edits},users_welcomed:{total:e.statistics.users_welcomed.total},warnings_issued:{total:e.statistics.warnings_issued.total,level_1:e.statistics.warnings_issued.level_1,level_2:e.statistics.warnings_issued.level_2,level_3:e.statistics.warnings_issued.level_3,level_4:e.statistics.warnings_issued.level_4,level_4im:e.statistics.warnings_issued.level_4im},reports_filed:{total:e.statistics.reports_filed.total,AIV:e.statistics.reports_filed.AIV,UAA:e.statistics.reports_filed.UAA,RFPP:e.statistics.reports_filed.RFPP},watchlist:{watched:e.statistics.watchlist.watched,unwatched:e.statistics.watchlist.unwatched},items_whitelisted:{total:e.statistics.items_whitelisted.total,users:e.statistics.items_whitelisted.users,pages:e.statistics.items_whitelisted.pages,tags:e.statistics.items_whitelisted.tags},items_highlighted:{total:e.statistics.items_highlighted.total,users:e.statistics.items_highlighted.users,pages:e.statistics.items_highlighted.pages,tags:e.statistics.items_highlighted.tags},blocks_issued:{total:e.statistics.blocks_issued.total},pages_protected:{total:e.statistics.pages_protected.total},actions_executed:{total:e.statistics.actions_executed.total,successful:e.statistics.actions_executed.successful},session_time:e.statistics.session_time},highlight:{users:this.sanitize(["highlighted","users"],e.highlight.users),pages:this.sanitize(["highlighted","pages"],e.highlight.pages),tags:this.sanitize(["highlighted","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),t.version!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const g=t.settings.namespaces;Array.isArray(g)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const h=t.settings.queue;this.restrictObject(h,"settings","queue");{const m=t.settings.queue.max_size;"number"==typeof m&&Number.isInteger(m)&&m>0||this.reset("settings","queue","max_size")}{const v=t.settings.queue.max_edits;"number"==typeof v&&Number.isInteger(v)&&v>0||this.reset("settings","queue","max_edits")}{const f=t.settings.queue.min_ores;"number"==typeof f&&f>=0&&f<=1||this.reset("settings","queue","min_ores")}["recent","flagged","users","watchlist"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const b=t.settings.cloud_storage;this.restrictObject(b,"settings","cloud_storage");"boolean"!=typeof t.settings.cloud_storage.enabled&&this.reset("settings","cloud_storage","enabled")}{const w=t.settings.username_highlighting;this.restrictObject(w,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const y=t.settings.auto_welcome;this.restrictObject(y,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const x=new Set(["none","1 hour","1 day","1 week","1 month","3 months","6 months","indefinite"]),k=t.settings.expiry;this.restrictObject(k,"settings","expiry");{const _=t.settings.expiry.watchlist;x.has(_)||this.reset("settings","expiry","watchlist")}{const S=t.settings.expiry.whitelist;this.restrictObject(S,"settings","expiry","whitelist");{const q=t.settings.expiry.whitelist.users;x.has(q)||this.reset("settings","expiry","whitelist","users")}{const E=t.settings.expiry.whitelist.pages;x.has(E)||this.reset("settings","expiry","whitelist","pages")}{const L=t.settings.expiry.whitelist.tags;x.has(L)||this.reset("settings","expiry","whitelist","tags")}}{const A=t.settings.expiry.highlight;this.restrictObject(A,"settings","expiry","highlight");{const T=t.settings.expiry.highlight.users;x.has(T)||this.reset("settings","expiry","highlight","users")}{const C=t.settings.expiry.highlight.pages;x.has(C)||this.reset("settings","expiry","highlight","pages")}{const z=t.settings.expiry.highlight.tags;x.has(z)||this.reset("settings","expiry","highlight","tags")}}}{const $=t.settings.auto_report;this.restrictObject($,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const M=t.settings.auto_report.for;Array.isArray(M)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const O=t.settings.AI;this.restrictObject(O,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const I=t.settings.AI.edit_analysis;this.restrictObject(I,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const P=t.settings.AI.username_analysis;this.restrictObject(P,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const j=t.settings.AI.Ollama;this.restrictObject(j,"settings","AI","Ollama");{const W=t.settings.AI.Ollama.server;(0,o.isURL)(W)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const N=t.settings.audio;this.restrictObject(N,"settings","audio");{const D=t.settings.audio.ores_alert;this.restrictObject(D,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const R=t.settings.audio.ores_alert.threshold;"number"==typeof R&&R>=0&&R<=1||this.reset("settings","audio","ores_alert","threshold")}}{const U=t.settings.audio.volume;this.restrictObject(U,"settings","audio","volume");const H=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.notice","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const F of H){const V=t.settings.audio.volume[F];"number"==typeof V&&V>=0&&V<=1||this.reset("settings","audio","volume",F)}}}{const B=t.settings.zen_mode;this.restrictObject(B,"settings","zen_mode");"boolean"!=typeof B.enabled&&this.reset("settings","zen_mode","enabled");{const G=t.settings.zen_mode.sound;this.restrictObject(G,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const Q=t.settings.zen_mode.music;this.restrictObject(Q,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const Y=t.settings.zen_mode.alerts;this.restrictObject(Y,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const Z=t.settings.zen_mode.notices;this.restrictObject(Z,"settings","zen_mode","notices");"boolean"!=typeof t.settings.zen_mode.notices.enabled&&this.reset("settings","zen_mode","notices","enabled")}{const K=t.settings.zen_mode.toasts;this.restrictObject(K,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const X=t.settings.zen_mode.badges;this.restrictObject(X,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}}{const J=t.UI;this.restrictObject(J,"UI");{const ee=t.UI.theme;this.restrictObject(ee,"UI","theme");{const te=t.UI.theme.palette;"number"==typeof te&&Number.isInteger(te)&&te>=0&&te<=3||this.reset("UI","theme","palette")}}{const ne=t.UI.queue;this.restrictObject(ne,"UI","queue");{const se=t.UI.queue.width;"string"==typeof se&&se.endsWith("vw")||this.reset("UI","queue","width");const ie=parseFloat(se.slice(0,-2));"number"==typeof ie&&!isNaN(ie)&&ie>=10&&ie<=30||this.reset("UI","queue","width")}}{const ae=t.UI.details;this.restrictObject(ae,"UI","details");{const re=t.UI.details.width;"string"==typeof re&&re.endsWith("vw")||this.reset("UI","details","width");const oe=parseFloat(re.slice(0,-2));"number"==typeof oe&&!isNaN(oe)&&oe>=10&&oe<=30||this.reset("UI","details","width")}}}{const le=t.control_scripts;function de(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name){var i;if(!(e.condition in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${e.condition} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]),e.actions=de.call(this,e.actions,...t,n,"actions")}else{var a;if(!(e.name in c.events))return this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`),!1;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=null!==(a=c.events[e.name].parameters)&&void 0!==a?a:[],i=new Set;for(const a of s)i.add(a.id),"choice"===a.type&&(a.id in e.params||(this.loadedLogger.warn(`Resetting missing choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]),a.options.includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]));for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(le)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>p.controls.has(e)),t.control_scripts[n].actions=de.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const ce=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,ue=t.statistics;this.restrictObject(ue,"statistics");{const pe=t.statistics.edits_reviewed;this.restrictObject(pe,"statistics","edits_reviewed");ce(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");ce(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const ge=t.statistics.recent_changes_reviewed;this.restrictObject(ge,"statistics","recent_changes_reviewed");ce(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const he=t.statistics.pending_changes_reviewed;this.restrictObject(he,"statistics","pending_changes_reviewed");ce(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");ce(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");ce(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const me=t.statistics.watchlist_changes_reviewed;this.restrictObject(me,"statistics","watchlist_changes_reviewed");ce(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const ve=t.statistics.users_reviewed;this.restrictObject(ve,"statistics","users_reviewed");ce(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const fe=t.statistics.reverts_made;this.restrictObject(fe,"statistics","reverts_made");ce(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");ce(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");ce(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");ce(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");ce(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");ce(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const be=t.statistics.users_welcomed;this.restrictObject(be,"statistics","users_welcomed");ce(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const we=t.statistics.warnings_issued;this.restrictObject(we,"statistics","warnings_issued");ce(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");ce(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");ce(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");ce(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");ce(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");ce(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const ye=t.statistics.reports_filed;this.restrictObject(ye,"statistics","reports_filed");ce(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");ce(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");ce(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");ce(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP")}{const xe=t.statistics.watchlist;this.restrictObject(xe,"statistics","watchlist");ce(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");ce(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const ke=t.statistics.items_whitelisted;this.restrictObject(ke,"statistics","items_whitelisted");ce(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");ce(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");ce(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");ce(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const _e=t.statistics.items_highlighted;this.restrictObject(_e,"statistics","items_highlighted");ce(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");ce(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");ce(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");ce(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const Se=t.statistics.blocks_issued;this.restrictObject(Se,"statistics","blocks_issued");ce(t.statistics.blocks_issued.total)||this.reset("statistics","blocks_issued","total")}{const qe=t.statistics.pages_protected;this.restrictObject(qe,"statistics","pages_protected");ce(t.statistics.pages_protected.total)||this.reset("statistics","pages_protected","total")}{const Ee=t.statistics.actions_executed;this.restrictObject(Ee,"statistics","actions_executed");ce(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");ce(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const Le=t.statistics.session_time;"number"==typeof Le&&Le>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const Ae=t.highlight;this.restrictObject(Ae,"highlight");{const Te=t.highlight.users;Array.isArray(Te)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const Ce=t.highlight.pages;Array.isArray(Ce)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const ze=t.highlight.tags;Array.isArray(ze)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const $e=t.whitelist;this.restrictObject($e,"whitelist");{const Me=t.whitelist.users;Array.isArray(Me)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const Oe=t.whitelist.pages;Array.isArray(Oe)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const Ie=t.whitelist.tags;Array.isArray(Ie)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=1,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7704(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(4029);g.Version.v2=(s=class extends g.Version{static get default(){return{version:2,changelog:"6",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,recent:{enabled:!0,order:0},flagged:{enabled:!0,order:1},users:{enabled:!0,order:2},watchlist:{enabled:!0,order:3}},cloud_storage:{enabled:!0},username_highlighting:{enabled:!0,fuzzy:!0},wikipedia_popups:{enabled:!0},auto_welcome:{enabled:!1},expiry:{watchlist:"1 week",whitelist:{users:"indefinite",pages:"indefinite",tags:"indefinite"},highlight:{users:"1 week",pages:"1 week",tags:"1 week"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Deliberate errors","Disruptive editing","Editing tests","Commentary","Inappropriate jokes","Deleting","Unsourced","Unsourced (BLP)","Unsourced genre","Original research","Censoring","AI-generated","AI-generated (talk)","Personal attacks","Harassment","TPO",,"AfD removal","Advertising","Spam links","Inappropriate edit summary","Misleading edit summary"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.notice":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},notices:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}},repeat_control_scripts:!0},UI:{theme:{palette:0},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"],actions:[{name:"nextEdit",params:{}}]},{keys:[" "],actions:[{name:"nextEdit",params:{}}]},{keys:["q"],actions:[{name:"nextEdit",params:{}},{name:"rollback",params:{}},{name:"warn",params:{warning:"Vandalism",level:"auto"}},{name:"if",condition:"atFinalWarning",actions:[{name:"reportToAIV",params:{reportMessage:"Vandalism past final warning"}}]},{name:"highlightUser",params:{}}]},{keys:["arrowleft"],actions:[{name:"prevEdit",params:{}}]},{keys:["h"],actions:[{name:"openHistory",params:{}}]},{keys:["c"],actions:[{name:"openUserContribs",params:{}}]},{keys:["t"],actions:[{name:"thankUser",params:{}}]},{keys:["w"],actions:[{name:"welcome",params:{template:"Auto"}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]},favorite:{warnings:[],reverts:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:this.sanitize(["settings","performance","startup"],e.settings.performance.startup)},namespaces:this.sanitize(["settings","namespaces"],e.settings.namespaces),queue:{max_size:this.sanitize(["settings","queue","max_size"],e.settings.queue.max_size),max_edits:this.sanitize(["settings","queue","max_edits"],e.settings.queue.max_edits),min_ores:this.sanitize(["settings","queue","min_ores"],e.settings.queue.min_ores),recent:{enabled:this.sanitize(["settings","queue","recent","enabled"],e.settings.queue.recent.enabled),order:this.sanitize(["settings","queue","recent","order"],e.settings.queue.recent.order)},flagged:{enabled:this.sanitize(["settings","queue","flagged","enabled"],e.settings.queue.flagged.enabled),order:this.sanitize(["settings","queue","flagged","order"],e.settings.queue.flagged.order)},users:{enabled:this.sanitize(["settings","queue","users","enabled"],e.settings.queue.users.enabled),order:this.sanitize(["settings","queue","users","order"],e.settings.queue.users.order)},watchlist:{enabled:this.sanitize(["settings","queue","watchlist","enabled"],e.settings.queue.watchlist.enabled),order:this.sanitize(["settings","queue","watchlist","order"],e.settings.queue.watchlist.order)}},cloud_storage:{enabled:this.sanitize(["settings","cloud_storage","enabled"],e.settings.cloud_storage.enabled)},username_highlighting:{enabled:this.sanitize(["settings","username_highlighting","enabled"],e.settings.username_highlighting.enabled),fuzzy:this.sanitize(["settings","username_highlighting","fuzzy"],e.settings.username_highlighting.fuzzy)},wikipedia_popups:{enabled:e.settings.wikipedia_popups.enabled},auto_welcome:{enabled:this.sanitize(["settings","auto_welcome","enabled"],e.settings.auto_welcome.enabled)},expiry:{watchlist:this.sanitize(["settings","expiry","watchlist"],e.settings.expiry.watchlist),whitelist:{users:this.sanitize(["settings","expiry","whitelist","users"],e.settings.expiry.whitelist.users),pages:this.sanitize(["settings","expiry","whitelist","pages"],e.settings.expiry.whitelist.pages),tags:this.sanitize(["settings","expiry","whitelist","tags"],e.settings.expiry.whitelist.tags)},highlight:{users:this.sanitize(["settings","expiry","highlight","users"],e.settings.expiry.highlight.users),pages:this.sanitize(["settings","expiry","highlight","pages"],e.settings.expiry.highlight.pages),tags:this.sanitize(["settings","expiry","highlight","tags"],e.settings.expiry.highlight.tags)}},auto_report:{enabled:this.sanitize(["settings","auto_report","enabled"],e.settings.auto_report.enabled),for:this.sanitize(["settings","auto_report","for"],e.settings.auto_report.for,e=>{if(!Array.isArray(e))return;const t=new Set(["Harassment","Inappropriate edit summary","Original research"]);return e.forEach(e=>{switch(e){case"Errors":return void t.add("Deliberate errors");case"Disruption":return void t.add("Disruptive editing");case"Jokes":return void t.add("Inappropriate jokes")}t.add(e)}),[...t]})},AI:{enabled:this.sanitize(["settings","AI","enabled"],e.settings.AI.enabled),provider:this.sanitize(["settings","AI","provider"],e.settings.AI.provider),edit_analysis:{enabled:this.sanitize(["settings","AI","edit_analysis","enabled"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["settings","AI","username_analysis","enabled"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["settings","AI","Ollama","server"],e.settings.AI.Ollama.server),model:this.sanitize(["settings","AI","Ollama","model"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["settings","audio","ores_alert","enabled"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["settings","audio","ores_alert","threshold"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["settings","audio","volume","master"],e.settings.audio.volume.master),"master.startup":this.sanitize(["settings","audio","volume","master.startup"],e.settings.audio.volume["master.startup"]),"master.music":this.sanitize(["settings","audio","volume","master.music"],e.settings.audio.volume["master.music"]),"master.music.zen_mode":this.sanitize(["settings","audio","volume","master.music.zen_mode"],e.settings.audio.volume["master.music.zen_mode"]),"master.ui":this.sanitize(["settings","audio","volume","master.ui"],e.settings.audio.volume["master.ui"]),"master.ui.click":this.sanitize(["settings","audio","volume","master.ui.click"],e.settings.audio.volume["master.ui.click"]),"master.queue":this.sanitize(["settings","audio","volume","master.queue"],e.settings.audio.volume["master.queue"]),"master.queue.ores":this.sanitize(["settings","audio","volume","master.queue.ores"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":this.sanitize(["settings","audio","volume","master.queue.mention"],e.settings.audio.volume["master.queue.mention"]),"master.notification":this.sanitize(["settings","audio","volume","master.notification"],e.settings.audio.volume["master.notification"]),"master.notification.alert":this.sanitize(["settings","audio","volume","master.notification.alert"],e.settings.audio.volume["master.notification.alert"]),"master.notification.notice":this.sanitize(["settings","audio","volume","master.notification.notice"],e.settings.audio.volume["master.notification.notice"]),"master.notification.toast":this.sanitize(["settings","audio","volume","master.notification.toast"],e.settings.audio.volume["master.notification.toast"]),"master.action":this.sanitize(["settings","audio","volume","master.action"],e.settings.audio.volume["master.action"]),"master.action.default":this.sanitize(["settings","audio","volume","master.action.default"],e.settings.audio.volume["master.action.default"]),"master.action.failed":this.sanitize(["settings","audio","volume","master.action.failed"],e.settings.audio.volume["master.action.failed"]),"master.action.report":this.sanitize(["settings","audio","volume","master.action.report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["settings","audio","volume","master.action.block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["settings","audio","volume","master.action.protect"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["settings","zen_mode","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["settings","zen_mode","sound","enabled"],e.settings.zen_mode.sound.enabled)},music:{enabled:this.sanitize(["settings","zen_mode","music","enabled"],e.settings.zen_mode.music.enabled)},alerts:{enabled:this.sanitize(["settings","zen_mode","alerts","enabled"],e.settings.zen_mode.alerts.enabled)},notices:{enabled:this.sanitize(["settings","zen_mode","notices","enabled"],e.settings.zen_mode.notices.enabled)},toasts:{enabled:this.sanitize(["settings","zen_mode","toasts","enabled"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:this.sanitize(["settings","zen_mode","badges","enabled"],e.settings.zen_mode.badges.enabled)}},repeat_control_scripts:e.settings.repeat_control_scripts},UI:{theme:{palette:this.sanitize(["UI","theme","palette"],e.UI.theme.palette)},queue:{width:this.sanitize(["UI","queue","width"],e.UI.queue.width)},details:{width:this.sanitize(["UI","details","width"],e.UI.details.width)}},control_scripts:this.sanitize(["control_scripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name){if(!(e.condition in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else if("warn"===e.name){if(!(0,o.isObject)(e.params))return!0;e.params.warning=e.params.warningType,delete e.params.warningType}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:this.sanitize(["statistics","edits_reviewed","total"],e.statistics.edits_reviewed.total),thanked:this.sanitize(["statistics","edits_reviewed","thanked"],e.statistics.edits_reviewed.thanked)},recent_changes_reviewed:{total:this.sanitize(["statistics","recent_changes_reviewed","total"],e.statistics.recent_changes_reviewed.total)},pending_changes_reviewed:{total:this.sanitize(["statistics","pending_changes_reviewed","total"],e.statistics.pending_changes_reviewed.total),accepted:this.sanitize(["statistics","pending_changes_reviewed","accepted"],e.statistics.pending_changes_reviewed.accepted),rejected:this.sanitize(["statistics","pending_changes_reviewed","rejected"],e.statistics.pending_changes_reviewed.rejected)},watchlist_changes_reviewed:{total:this.sanitize(["statistics","watchlist_changes_reviewed","total"],e.statistics.watchlist_changes_reviewed.total)},users_reviewed:{total:this.sanitize(["statistics","users_reviewed","total"],e.statistics.users_reviewed.total)},reverts_made:{total:this.sanitize(["statistics","reverts_made","total"],e.statistics.reverts_made.total),good_faith:this.sanitize(["statistics","reverts_made","good_faith"],e.statistics.reverts_made.good_faith),from_recent_changes:this.sanitize(["statistics","reverts_made","from_recent_changes"],e.statistics.reverts_made.from_recent_changes),from_pending_changes:this.sanitize(["statistics","reverts_made","from_pending_changes"],e.statistics.reverts_made.from_pending_changes),from_watchlist:this.sanitize(["statistics","reverts_made","from_watchlist"],e.statistics.reverts_made.from_watchlist),from_loaded_edits:this.sanitize(["statistics","reverts_made","from_loaded_edits"],e.statistics.reverts_made.from_loaded_edits)},users_welcomed:{total:this.sanitize(["statistics","users_welcomed","total"],e.statistics.users_welcomed.total)},warnings_issued:{total:this.sanitize(["statistics","warnings_issued","total"],e.statistics.warnings_issued.total),level_1:this.sanitize(["statistics","warnings_issued","level_1"],e.statistics.warnings_issued.level_1),level_2:this.sanitize(["statistics","warnings_issued","level_2"],e.statistics.warnings_issued.level_2),level_3:this.sanitize(["statistics","warnings_issued","level_3"],e.statistics.warnings_issued.level_3),level_4:this.sanitize(["statistics","warnings_issued","level_4"],e.statistics.warnings_issued.level_4),level_4im:this.sanitize(["statistics","warnings_issued","level_4im"],e.statistics.warnings_issued.level_4im)},reports_filed:{total:this.sanitize(["statistics","reports_filed","total"],e.statistics.reports_filed.total),AIV:this.sanitize(["statistics","reports_filed","AIV"],e.statistics.reports_filed.AIV),UAA:this.sanitize(["statistics","reports_filed","UAA"],e.statistics.reports_filed.UAA),RFPP:this.sanitize(["statistics","reports_filed","RFPP"],e.statistics.reports_filed.RFPP)},watchlist:{watched:this.sanitize(["statistics","watchlist","watched"],e.statistics.watchlist.watched),unwatched:this.sanitize(["statistics","watchlist","unwatched"],e.statistics.watchlist.unwatched)},items_whitelisted:{total:this.sanitize(["statistics","items_whitelisted","total"],e.statistics.items_whitelisted.total),users:this.sanitize(["statistics","items_whitelisted","users"],e.statistics.items_whitelisted.users),pages:this.sanitize(["statistics","items_whitelisted","pages"],e.statistics.items_whitelisted.pages),tags:this.sanitize(["statistics","items_whitelisted","tags"],e.statistics.items_whitelisted.tags)},items_highlighted:{total:this.sanitize(["statistics","items_highlighted","total"],e.statistics.items_highlighted.total),users:this.sanitize(["statistics","items_highlighted","users"],e.statistics.items_highlighted.users),pages:this.sanitize(["statistics","items_highlighted","pages"],e.statistics.items_highlighted.pages),tags:this.sanitize(["statistics","items_highlighted","tags"],e.statistics.items_highlighted.tags)},blocks_issued:{total:this.sanitize(["statistics","blocks_issued","total"],e.statistics.blocks_issued.total)},pages_protected:{total:this.sanitize(["statistics","pages_protected","total"],e.statistics.pages_protected.total)},actions_executed:{total:this.sanitize(["statistics","actions_executed","total"],e.statistics.actions_executed.total),successful:this.sanitize(["statistics","actions_executed","successful"],e.statistics.actions_executed.successful)},session_time:this.sanitize(["statistics","session_time"],e.statistics.session_time)},highlight:{users:this.sanitize(["highlight","users"],e.highlight.users),pages:this.sanitize(["highlight","pages"],e.highlight.pages),tags:this.sanitize(["highlight","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)},favorite:{warnings:e.favorite.warnings,reverts:e.favorite.reverts}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),t.version!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const g=t.settings.namespaces;Array.isArray(g)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const h=t.settings.queue;this.restrictObject(h,"settings","queue");{const m=t.settings.queue.max_size;"number"==typeof m&&Number.isInteger(m)&&m>0||this.reset("settings","queue","max_size")}{const v=t.settings.queue.max_edits;"number"==typeof v&&Number.isInteger(v)&&v>0||this.reset("settings","queue","max_edits")}{const f=t.settings.queue.min_ores;"number"==typeof f&&f>=0&&f<=1||this.reset("settings","queue","min_ores")}["recent","flagged","users","watchlist"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const b=t.settings.cloud_storage;this.restrictObject(b,"settings","cloud_storage");"boolean"!=typeof t.settings.cloud_storage.enabled&&this.reset("settings","cloud_storage","enabled")}{const w=t.settings.username_highlighting;this.restrictObject(w,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const y=t.settings.wikipedia_popups;this.restrictObject(y,"settings","wikipedia_popups");"boolean"!=typeof t.settings.wikipedia_popups.enabled&&this.reset("settings","wikipedia_popups","enabled")}{const x=t.settings.auto_welcome;this.restrictObject(x,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const k=new Set(["none","1 hour","1 day","1 week","1 month","3 months","6 months","indefinite"]),_=t.settings.expiry;this.restrictObject(_,"settings","expiry");{const S=t.settings.expiry.watchlist;k.has(S)||this.reset("settings","expiry","watchlist")}{const q=t.settings.expiry.whitelist;this.restrictObject(q,"settings","expiry","whitelist");{const E=t.settings.expiry.whitelist.users;k.has(E)||this.reset("settings","expiry","whitelist","users")}{const L=t.settings.expiry.whitelist.pages;k.has(L)||this.reset("settings","expiry","whitelist","pages")}{const A=t.settings.expiry.whitelist.tags;k.has(A)||this.reset("settings","expiry","whitelist","tags")}}{const T=t.settings.expiry.highlight;this.restrictObject(T,"settings","expiry","highlight");{const C=t.settings.expiry.highlight.users;k.has(C)||this.reset("settings","expiry","highlight","users")}{const z=t.settings.expiry.highlight.pages;k.has(z)||this.reset("settings","expiry","highlight","pages")}{const $=t.settings.expiry.highlight.tags;k.has($)||this.reset("settings","expiry","highlight","tags")}}}{const M=t.settings.auto_report;this.restrictObject(M,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const O=t.settings.auto_report.for;Array.isArray(O)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const I=t.settings.AI;this.restrictObject(I,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const P=t.settings.AI.edit_analysis;this.restrictObject(P,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const j=t.settings.AI.username_analysis;this.restrictObject(j,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const W=t.settings.AI.Ollama;this.restrictObject(W,"settings","AI","Ollama");{const N=t.settings.AI.Ollama.server;(0,o.isURL)(N)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const D=t.settings.audio;this.restrictObject(D,"settings","audio");{const R=t.settings.audio.ores_alert;this.restrictObject(R,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const U=t.settings.audio.ores_alert.threshold;"number"==typeof U&&U>=0&&U<=1||this.reset("settings","audio","ores_alert","threshold")}}{const H=t.settings.audio.volume;this.restrictObject(H,"settings","audio","volume");const F=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.notice","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const V of F){const B=t.settings.audio.volume[V];"number"==typeof B&&B>=0&&B<=1||this.reset("settings","audio","volume",V)}}}{const G=t.settings.zen_mode;this.restrictObject(G,"settings","zen_mode");"boolean"!=typeof G.enabled&&this.reset("settings","zen_mode","enabled");{const Q=t.settings.zen_mode.sound;this.restrictObject(Q,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const Y=t.settings.zen_mode.music;this.restrictObject(Y,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const Z=t.settings.zen_mode.alerts;this.restrictObject(Z,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const K=t.settings.zen_mode.notices;this.restrictObject(K,"settings","zen_mode","notices");"boolean"!=typeof t.settings.zen_mode.notices.enabled&&this.reset("settings","zen_mode","notices","enabled")}{const X=t.settings.zen_mode.toasts;this.restrictObject(X,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const J=t.settings.zen_mode.badges;this.restrictObject(J,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}"boolean"!=typeof t.settings.repeat_control_scripts&&this.reset("settings","repeat_control_scripts")}{const ee=t.UI;this.restrictObject(ee,"UI");{const te=t.UI.theme;this.restrictObject(te,"UI","theme");{const ne=t.UI.theme.palette;"number"==typeof ne&&Number.isInteger(ne)&&ne>=0&&ne<=3||this.reset("UI","theme","palette")}}{const se=t.UI.queue;this.restrictObject(se,"UI","queue");{const ie=t.UI.queue.width;"string"==typeof ie&&ie.endsWith("vw")||this.reset("UI","queue","width");const ae=parseFloat(ie.slice(0,-2));"number"==typeof ae&&!isNaN(ae)&&ae>=10&&ae<=30||this.reset("UI","queue","width")}}{const re=t.UI.details;this.restrictObject(re,"UI","details");{const oe=t.UI.details.width;"string"==typeof oe&&oe.endsWith("vw")||this.reset("UI","details","width");const le=parseFloat(oe.slice(0,-2));"number"==typeof le&&!isNaN(le)&&le>=10&&le<=30||this.reset("UI","details","width")}}}{const de=t.control_scripts;function ce(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name){var i;if(!(e.condition in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${e.condition} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]),e.actions=ce.call(this,e.actions,...t,n,"actions")}else{var a,r;if(!(e.name in c.events))return null!==(a=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`))&&void 0!==a&&a;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=null!==(r=c.events[e.name].parameters)&&void 0!==r?r:[],i=new Set;for(const a of s)i.add(a.id),"choice"===a.type&&(a.id in e.params||(this.loadedLogger.warn(`Resetting missing choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]),a.options.includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=a.options[0]));for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(de)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>p.controls.has(e)),t.control_scripts[n].actions=ce.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const ue=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,pe=t.statistics;this.restrictObject(pe,"statistics");{const ge=t.statistics.edits_reviewed;this.restrictObject(ge,"statistics","edits_reviewed");ue(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");ue(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const he=t.statistics.recent_changes_reviewed;this.restrictObject(he,"statistics","recent_changes_reviewed");ue(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const me=t.statistics.pending_changes_reviewed;this.restrictObject(me,"statistics","pending_changes_reviewed");ue(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");ue(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");ue(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const ve=t.statistics.watchlist_changes_reviewed;this.restrictObject(ve,"statistics","watchlist_changes_reviewed");ue(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const fe=t.statistics.users_reviewed;this.restrictObject(fe,"statistics","users_reviewed");ue(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const be=t.statistics.reverts_made;this.restrictObject(be,"statistics","reverts_made");ue(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");ue(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");ue(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");ue(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");ue(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");ue(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const we=t.statistics.users_welcomed;this.restrictObject(we,"statistics","users_welcomed");ue(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const ye=t.statistics.warnings_issued;this.restrictObject(ye,"statistics","warnings_issued");ue(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");ue(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");ue(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");ue(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");ue(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");ue(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const xe=t.statistics.reports_filed;this.restrictObject(xe,"statistics","reports_filed");ue(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");ue(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");ue(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");ue(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP")}{const ke=t.statistics.watchlist;this.restrictObject(ke,"statistics","watchlist");ue(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");ue(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const _e=t.statistics.items_whitelisted;this.restrictObject(_e,"statistics","items_whitelisted");ue(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");ue(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");ue(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");ue(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const Se=t.statistics.items_highlighted;this.restrictObject(Se,"statistics","items_highlighted");ue(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");ue(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");ue(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");ue(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const qe=t.statistics.blocks_issued;this.restrictObject(qe,"statistics","blocks_issued");ue(t.statistics.blocks_issued.total)||this.reset("statistics","blocks_issued","total")}{const Ee=t.statistics.pages_protected;this.restrictObject(Ee,"statistics","pages_protected");ue(t.statistics.pages_protected.total)||this.reset("statistics","pages_protected","total")}{const Le=t.statistics.actions_executed;this.restrictObject(Le,"statistics","actions_executed");ue(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");ue(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const Ae=t.statistics.session_time;"number"==typeof Ae&&Ae>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const Te=t.highlight;this.restrictObject(Te,"highlight");{const Ce=t.highlight.users;Array.isArray(Ce)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const ze=t.highlight.pages;Array.isArray(ze)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const $e=t.highlight.tags;Array.isArray($e)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const Me=t.whitelist;this.restrictObject(Me,"whitelist");{const Oe=t.whitelist.users;Array.isArray(Oe)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const Ie=t.whitelist.pages;Array.isArray(Ie)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const Pe=t.whitelist.tags;Array.isArray(Pe)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}{const je=t.favorite;this.restrictObject(je,"favorite");{const We=t.favorite.warnings;Array.isArray(We)||this.reset("favorite","warnings"),t.favorite.warnings=t.favorite.warnings.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite warning [ ${e} ] from stored data.`),t})}{const Ne=t.favorite.reverts;Array.isArray(Ne)||this.reset("favorite","reverts"),t.favorite.reverts=t.favorite.reverts.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite revert [ ${e} ] from stored data.`),t})}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=2,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},8415(e,t,n){var s,i,a,r,o=n(330),l=n(4018),d=n(955),c=n(985),u=n(870),p=n(9808),g=n(3241),h=n(5564),m=n(8469),v=n(4029);v.Version.v3=(s=class extends v.Version{static get default(){return{version:3,changelog:"6",settings:{performance:{startup:"adaptive"},namespaces:[0],queue:{max_size:100,max_edits:50,min_ores:0,ores_bias:.5,recent:{enabled:!0,order:0},pending:{enabled:!0,order:1},users:{enabled:!1,order:2},watchlist:{enabled:!0,order:3},abuselog:{enabled:!0,order:4}},username_highlighting:{enabled:!0,fuzzy:!1},wikipedia_popups:{enabled:!0},auto_welcome:{enabled:!1},talk_page_thanks_for_temporary_users:{enabled:!0},expiry:{watchlist:"1W",whitelist:{users:"infinity",pages:"infinity",tags:"infinity"},highlight:{users:"1W",pages:"1W",tags:"1W"}},auto_report:{enabled:!0,for:["Vandalism","Subtle vandalism","Image vandalism","Sandbox","Deliberate errors","Disruptive editing","Editing tests","Commentary","Inappropriate jokes","Deleting","Unsourced","Unsourced (BLP)","Unsourced genre","Original research","Censoring","AI-generated","AI-generated (talk)","Personal attacks","Harassment","TPO","AfD removal","Advertising","Spam links","Attempt","Inappropriate edit summary","Misleading edit summary"]},AI:{enabled:!1,provider:"Ollama",edit_analysis:{enabled:!0},username_analysis:{enabled:!0},Ollama:{server:"http://localhost:11434",model:""}},audio:{ores_alert:{enabled:!0,threshold:.95},volume:{master:1,"master.startup":1,"master.music":1,"master.music.zen_mode":1,"master.ui":1,"master.ui.click":.05,"master.queue":1,"master.queue.ores":1,"master.queue.mention":1,"master.notification":1,"master.notification.alert":.7,"master.notification.message":.5,"master.notification.toast":.5,"master.action":1,"master.action.default":.6,"master.action.failed":.85,"master.action.report":1,"master.action.block":1,"master.action.protect":1}},zen_mode:{enabled:!1,sound:{enabled:!0},music:{enabled:!0},alerts:{enabled:!0},messages:{enabled:!1},toasts:{enabled:!1},badges:{enabled:!1}},accessibility:{colorblind:!1,dyslexia:!1,high_contrast:!1,reduce_motion:!1},repeat_control_scripts:!0},UI:{theme:{app:"auto",palette:"traffic"},queue:{width:"15vw"},details:{width:"15vw"}},control_scripts:[{keys:["arrowright"," "],actions:[{name:"next-item",params:{}}]},{keys:["arrowleft"],actions:[{name:"previous-item",params:{}}]},{keys:["q"],actions:[{name:"next-item",params:{}},{name:"revert",params:{warning:"Vandalism"}},{name:"highlight-user",params:{}}]},{keys:["h"],actions:[{name:"open-page-history",params:{}}]},{keys:["c"],actions:[{name:"open-user-contributions",params:{}}]},{keys:["t"],actions:[{name:"thank-user",params:{}}]},{keys:["w"],actions:[{name:"welcome-user",params:{}}]}],statistics:{edits_reviewed:{total:0,thanked:0},recent_changes_reviewed:{total:0},pending_changes_reviewed:{total:0,accepted:0,rejected:0},watchlist_changes_reviewed:{total:0},users_reviewed:{total:0},abuselogs_reviewed:{total:0},reverts_made:{total:0,good_faith:0,from_recent_changes:0,from_pending_changes:0,from_watchlist:0,from_abuselogs:0,from_loaded_edits:0},users_welcomed:{total:0},warnings_issued:{total:0,level_1:0,level_2:0,level_3:0,level_4:0,level_4im:0},reports_filed:{total:0,AIV:0,UAA:0,RFPP:0,global_blocks:0,global_locks:0},watchlist:{watched:0,unwatched:0},items_whitelisted:{total:0,users:0,pages:0,tags:0},items_highlighted:{total:0,users:0,pages:0,tags:0},blocks_issued:{total:0},pages_protected:{total:0},actions_executed:{total:0,successful:0},session_time:0},highlight:{users:[],pages:[],tags:[]},whitelist:{users:[],pages:[],tags:[]},favorite:{warnings:[],reverts:[]}}}static upgrade(){if(this.loadedData.version!==this.number-1)throw this.loadedLogger.dev(`[INVALID_UPGRADE_ATTEMPT] Attempted to upgrade from version ${this.loadedData.version} to version ${this.number}, but this upgrade method only supports upgrades from version ${this.number-1}.`),new Error("INVALID_UPGRADE_ATTEMPT");this.deprecated("settings","cloud_storage");const e=this.default;return{changelog:this.sanitize(["changelog"],e.changelog),settings:{performance:{startup:this.sanitize(["settings","performance","startup"],e.settings.performance.startup)},namespaces:this.sanitize(["settings","namespaces"],e.settings.namespaces),queue:{max_size:this.sanitize(["settings","queue","max_size"],e.settings.queue.max_size),max_edits:this.sanitize(["settings","queue","max_edits"],e.settings.queue.max_edits),min_ores:this.sanitize(["settings","queue","min_ores"],e.settings.queue.min_ores),ores_bias:e.settings.queue.ores_bias,recent:{enabled:this.sanitize(["settings","queue","recent","enabled"],e.settings.queue.recent.enabled),order:this.sanitize(["settings","queue","recent","order"],e.settings.queue.recent.order)},pending:{enabled:this.sanitize(["settings","queue","flagged","enabled"],e.settings.queue.pending.enabled),order:this.sanitize(["settings","queue","flagged","order"],e.settings.queue.pending.order)},users:{enabled:this.sanitize(["settings","queue","users","enabled"],e.settings.queue.users.enabled),order:this.sanitize(["settings","queue","users","order"],e.settings.queue.users.order)},watchlist:{enabled:this.sanitize(["settings","queue","watchlist","enabled"],e.settings.queue.watchlist.enabled),order:this.sanitize(["settings","queue","watchlist","order"],e.settings.queue.watchlist.order)},abuselog:{enabled:e.settings.queue.abuselog.enabled,order:e.settings.queue.abuselog.order}},username_highlighting:{enabled:this.sanitize(["settings","username_highlighting","enabled"],e.settings.username_highlighting.enabled),fuzzy:this.sanitize(["settings","username_highlighting","fuzzy"],e.settings.username_highlighting.fuzzy)},wikipedia_popups:{enabled:e.settings.wikipedia_popups.enabled},auto_welcome:{enabled:this.sanitize(["settings","auto_welcome","enabled"],e.settings.auto_welcome.enabled)},talk_page_thanks_for_temporary_users:{enabled:e.settings.talk_page_thanks_for_temporary_users.enabled},expiry:{watchlist:this.sanitize(["settings","expiry","watchlist"],e.settings.expiry.watchlist,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),whitelist:{users:this.sanitize(["settings","expiry","whitelist","users"],e.settings.expiry.whitelist.users,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),pages:this.sanitize(["settings","expiry","whitelist","pages"],e.settings.expiry.whitelist.pages,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),tags:this.sanitize(["settings","expiry","whitelist","tags"],e.settings.expiry.whitelist.tags,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e]))},highlight:{users:this.sanitize(["settings","expiry","highlight","users"],e.settings.expiry.highlight.users,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),pages:this.sanitize(["settings","expiry","highlight","pages"],e.settings.expiry.highlight.pages,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e])),tags:this.sanitize(["settings","expiry","highlight","tags"],e.settings.expiry.highlight.tags,e=>({none:"","1 hour":"1h","1 day":"1D","1 week":"1W","1 month":"1M","3 months":"3M","6 months":"6M",indefinite:"infinity"}[e]))}},auto_report:{enabled:this.sanitize(["settings","auto_report","enabled"],e.settings.auto_report.enabled),for:this.sanitize(["settings","auto_report","for"],e.settings.auto_report.for,e=>{if(!Array.isArray(e))return;const t=new Set(["Attempt"]);return e.forEach(e=>t.add(e)),[...t]})},AI:{enabled:this.sanitize(["settings","AI","enabled"],e.settings.AI.enabled),provider:this.sanitize(["settings","AI","provider"],e.settings.AI.provider),edit_analysis:{enabled:this.sanitize(["settings","AI","edit_analysis","enabled"],e.settings.AI.edit_analysis.enabled)},username_analysis:{enabled:this.sanitize(["settings","AI","username_analysis","enabled"],e.settings.AI.username_analysis.enabled)},Ollama:{server:this.sanitize(["settings","AI","Ollama","server"],e.settings.AI.Ollama.server),model:this.sanitize(["settings","AI","Ollama","model"],e.settings.AI.Ollama.model)}},audio:{ores_alert:{enabled:this.sanitize(["settings","audio","ores_alert","enabled"],e.settings.audio.ores_alert.enabled),threshold:this.sanitize(["settings","audio","ores_alert","threshold"],e.settings.audio.ores_alert.threshold)},volume:{master:this.sanitize(["settings","audio","volume","master"],e.settings.audio.volume.master),"master.startup":this.sanitize(["settings","audio","volume","master.startup"],e.settings.audio.volume["master.startup"]),"master.music":this.sanitize(["settings","audio","volume","master.music"],e.settings.audio.volume["master.music"]),"master.music.zen_mode":this.sanitize(["settings","audio","volume","master.music.zen_mode"],e.settings.audio.volume["master.music.zen_mode"]),"master.ui":this.sanitize(["settings","audio","volume","master.ui"],e.settings.audio.volume["master.ui"]),"master.ui.click":this.sanitize(["settings","audio","volume","master.ui.click"],e.settings.audio.volume["master.ui.click"]),"master.queue":this.sanitize(["settings","audio","volume","master.queue"],e.settings.audio.volume["master.queue"]),"master.queue.ores":this.sanitize(["settings","audio","volume","master.queue.ores"],e.settings.audio.volume["master.queue.ores"]),"master.queue.mention":this.sanitize(["settings","audio","volume","master.queue.mention"],e.settings.audio.volume["master.queue.mention"]),"master.notification":this.sanitize(["settings","audio","volume","master.notification"],e.settings.audio.volume["master.notification"]),"master.notification.alert":this.sanitize(["settings","audio","volume","master.notification.alert"],e.settings.audio.volume["master.notification.alert"]),"master.notification.message":this.sanitize(["settings","audio","volume","master.notification.notice"],e.settings.audio.volume["master.notification.message"]),"master.notification.toast":this.sanitize(["settings","audio","volume","master.notification.toast"],e.settings.audio.volume["master.notification.toast"]),"master.action":this.sanitize(["settings","audio","volume","master.action"],e.settings.audio.volume["master.action"]),"master.action.default":this.sanitize(["settings","audio","volume","master.action.default"],e.settings.audio.volume["master.action.default"]),"master.action.failed":this.sanitize(["settings","audio","volume","master.action.failed"],e.settings.audio.volume["master.action.failed"]),"master.action.report":this.sanitize(["settings","audio","volume","master.action.report"],e.settings.audio.volume["master.action.report"]),"master.action.block":this.sanitize(["settings","audio","volume","master.action.block"],e.settings.audio.volume["master.action.block"]),"master.action.protect":this.sanitize(["settings","audio","volume","master.action.protect"],e.settings.audio.volume["master.action.protect"])}},zen_mode:{enabled:this.sanitize(["settings","zen_mode","enabled"],e.settings.zen_mode.enabled),sound:{enabled:this.sanitize(["settings","zen_mode","sound","enabled"],e.settings.zen_mode.sound.enabled)},music:{enabled:this.sanitize(["settings","zen_mode","music","enabled"],e.settings.zen_mode.music.enabled)},alerts:{enabled:this.sanitize(["settings","zen_mode","alerts","enabled"],e.settings.zen_mode.alerts.enabled)},messages:{enabled:this.sanitize(["settings","zen_mode","notices","enabled"],e.settings.zen_mode.messages.enabled)},toasts:{enabled:this.sanitize(["settings","zen_mode","toasts","enabled"],e.settings.zen_mode.toasts.enabled)},badges:{enabled:this.sanitize(["settings","zen_mode","badges","enabled"],e.settings.zen_mode.badges.enabled)}},accessibility:{colorblind:e.settings.accessibility.colorblind,dyslexia:e.settings.accessibility.dyslexia,high_contrast:e.settings.accessibility.high_contrast,reduce_motion:e.settings.accessibility.reduce_motion},repeat_control_scripts:this.sanitize(["settings","repeat_control_scripts"],e.settings.repeat_control_scripts)},UI:{theme:{app:e.UI.theme.app,palette:this.sanitize(["UI","theme","palette"],e.UI.theme.palette,t=>["traffic","heat","natural","cool"][t]||e.UI.theme.palette)},queue:{width:this.sanitize(["UI","queue","width"],e.UI.queue.width)},details:{width:this.sanitize(["UI","details","width"],e.UI.details.width)}},control_scripts:this.sanitize(["control_scripts"],e.control_scripts,e=>{if(Array.isArray(e)){function t(e,...n){return e.filter((e,s)=>{if(s=+s,!(0,o.isObject)(e))return!0;if("if"===e.name||"if not"===e.name){var i,a;const r="if not"===e.name,o=()=>e.name=r?"if":"if not";switch("string"==typeof e.condition&&(e.condition={name:e.condition,params:{}}),null!==(a=(i=e.condition).params)&&void 0!==a||(i.params={}),e.condition.name){case"operatorNonAdmin":o();case"operatorAdmin":e.condition.name="account-admin";break;case"userIsHighlighted":e.condition.name="username-highlighted";break;case"userIsWhitelisted":e.condition.name="username-whitelisted";break;case"pageIsWhitelisted":e.condition.name="page-whitelisted";break;case"userIsAnon":o();case"userIsRegistered":e.codition.name="user-registered";break;case"userIsIP":e.condition.name="user-ip";break;case"userIsTemp":e.condition.name="user-temp";break;case"userHasEmptyTalkPage":e.condition.name="user-empty-talk";break;case"editIsMajor":o();case"editIsMinor":e.condition.name="edit-minor";break;case"editSizeNegative":e.condition.name="edit-size",e.condition.params={condition:"<",size:0};break;case"editSizePositive":e.condition.name="edit-size",e.condition.params={condition:">",size:0};break;case"editSizeLarge":e.condition.name="abs-edit-size",e.condition.params={condition:"≥",size:1e3};break;case"userEditCountLow":e.condition.name="user-edit-count",e.condition.params={condition:"<",count:10};break;case"userEditCountHigh":e.condition.name="user-edit-count",e.condition.params={condition:"≥",count:100};break;case"atFinalWarning":e.condition.name="user-final-warning";break;case"userNoWarnings":o();case"userHasWarnings":e.condition.name="user-has-warnings"}if(!(e.condition.name in u.conditions))return!0;if(!Array.isArray(e.actions))return!0;e.actions=t.call(this,e.actions,...n,s,"actions")}else{var r;switch(null!==(r=e.params)&&void 0!==r||(e.params={}),e.name){case"toggleZenMode":e.name="toggle-zen-mode";break;case"acceptFlaggedEdit":if(e.name="accept-pending-edit",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.reason,delete e.params.reason;break;case"rejectFlaggedEdit":if(e.name="reject-pending-edit",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.reason,delete e.params.reason;break;case"prevEdit":e.name="previous-item";break;case"nextEdit":e.name="next-item";break;case"deleteQueue":e.name="clear-queue";break;case"openRevertMenu":e.name="open-revert-menu";break;case"openWarnMenu":e.name="open-warn-menu";break;case"openUserPage":e.name="open-user-page";break;case"openUserTalk":e.name="open-user-talk";break;case"openUserContribs":e.name="open-user-contributions";break;case"openFilterLog":e.name="open-user-filter-log";break;case"openPage":e.name="open-page";break;case"openTalk":e.name="open-page-talk";break;case"openHistory":e.name="open-page-history";break;case"openRevision":e.name="open-revision";break;case"openDiff":e.name="open-diff";break;case"switchToRecentQueue":e.name="switch-to-recent-queue";break;case"switchToFlaggedQueue":e.name="switch-to-pending-queue";break;case"switchToUsersQueue":e.name="switch-to-users-queue";break;case"switchToWatchlistQueue":e.name="switch-to-watchlist-queue";break;case"watchPage":e.name="watch-page";break;case"unwatchPage":e.name="unwatch-page";break;case"whitelistUser":e.name="whitelist-user";break;case"whitelistPage":e.name="whitelist-page";break;case"unwhitelistUser":e.name="unwhitelist-user";break;case"unwhitelistPage":e.name="unwhitelist-page";break;case"highlightUser":e.name="highlight-user";break;case"highlightPage":e.name="highlight-page";break;case"unwhitelistUser":e.name="unhighlight-user";break;case"unwhitelistPage":e.name="unhighlight-page";break;case"thankUser":e.name="thank-user";break;case"warn":e.name="warn-user";break;case"rollback":if(e.name="rollback-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"rollbackGoodFaith":if(e.name="rollback-goodfaith-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"undo":if(e.name="undo-edit",!(0,o.isObject)(e.params))return!0;e.params.hide_username="No";break;case"reportToAIV":if(e.name="report-user-to-aiv",!(0,o.isObject)(e.params))return!0;e.params.reason=e.params.reportMessage,delete e.params.reportMessage,e.params.summary=e.params.comment,delete e.params.comment;break;case"reportToUAA":if(e.name="report-user-to-uaa",!(0,o.isObject)(e.params))return!0;e.params.reason=e.params.reportMessage,delete e.params.reportMessage,e.params.summary=e.params.comment,delete e.params.comment;break;case"requestProtection":if(e.name="request-page-protection",!(0,o.isObject)(e.params))return!0;e.params.summary=e.params.comment,delete e.params.comment;break;case"welcome":e.name="welcome-user";break;case"toggleConsecutive":e.name="toggle-consecutive-edits";break;case"block":return this.loadedLogger.warn(`Skipping deprecated action 'block' in control script at ${[...n,s].join(" -> ")}.`),!1;case"protect":return this.loadedLogger.warn(`Skipping deprecated action 'protect' in control script at ${[...n,s].join(" -> ")}.`),!1;case"openSettings":return this.loadedLogger.warn(`Skipping deprecated action 'openSettings' in control script at ${[...n,s].join(" -> ")}.`),!1}}return!0})}return e.forEach((e,n)=>{n=+n,(0,o.isObject)(e)&&Array.isArray(e.keys)&&Array.isArray(e.actions)&&(e.actions=t.call(this,e.actions,"control_scripts",n,"actions"))}),e}}),statistics:{edits_reviewed:{total:this.sanitize(["statistics","edits_reviewed","total"],e.statistics.edits_reviewed.total),thanked:this.sanitize(["statistics","edits_reviewed","thanked"],e.statistics.edits_reviewed.thanked)},recent_changes_reviewed:{total:this.sanitize(["statistics","recent_changes_reviewed","total"],e.statistics.recent_changes_reviewed.total)},pending_changes_reviewed:{total:this.sanitize(["statistics","pending_changes_reviewed","total"],e.statistics.pending_changes_reviewed.total),accepted:this.sanitize(["statistics","pending_changes_reviewed","accepted"],e.statistics.pending_changes_reviewed.accepted),rejected:this.sanitize(["statistics","pending_changes_reviewed","rejected"],e.statistics.pending_changes_reviewed.rejected)},watchlist_changes_reviewed:{total:this.sanitize(["statistics","watchlist_changes_reviewed","total"],e.statistics.watchlist_changes_reviewed.total)},users_reviewed:{total:this.sanitize(["statistics","users_reviewed","total"],e.statistics.users_reviewed.total)},abuselogs_reviewed:{total:e.statistics.abuselogs_reviewed.total},reverts_made:{total:this.sanitize(["statistics","reverts_made","total"],e.statistics.reverts_made.total),good_faith:this.sanitize(["statistics","reverts_made","good_faith"],e.statistics.reverts_made.good_faith),from_recent_changes:this.sanitize(["statistics","reverts_made","from_recent_changes"],e.statistics.reverts_made.from_recent_changes),from_pending_changes:this.sanitize(["statistics","reverts_made","from_pending_changes"],e.statistics.reverts_made.from_pending_changes),from_watchlist:this.sanitize(["statistics","reverts_made","from_watchlist"],e.statistics.reverts_made.from_watchlist),from_abuselogs:e.statistics.reverts_made.from_abuselogs,from_loaded_edits:this.sanitize(["statistics","reverts_made","from_loaded_edits"],e.statistics.reverts_made.from_loaded_edits)},users_welcomed:{total:this.sanitize(["statistics","users_welcomed","total"],e.statistics.users_welcomed.total)},warnings_issued:{total:this.sanitize(["statistics","warnings_issued","total"],e.statistics.warnings_issued.total),level_1:this.sanitize(["statistics","warnings_issued","level_1"],e.statistics.warnings_issued.level_1),level_2:this.sanitize(["statistics","warnings_issued","level_2"],e.statistics.warnings_issued.level_2),level_3:this.sanitize(["statistics","warnings_issued","level_3"],e.statistics.warnings_issued.level_3),level_4:this.sanitize(["statistics","warnings_issued","level_4"],e.statistics.warnings_issued.level_4),level_4im:this.sanitize(["statistics","warnings_issued","level_4im"],e.statistics.warnings_issued.level_4im)},reports_filed:{total:this.sanitize(["statistics","reports_filed","total"],e.statistics.reports_filed.total),AIV:this.sanitize(["statistics","reports_filed","AIV"],e.statistics.reports_filed.AIV),UAA:this.sanitize(["statistics","reports_filed","UAA"],e.statistics.reports_filed.UAA),RFPP:this.sanitize(["statistics","reports_filed","RFPP"],e.statistics.reports_filed.RFPP),global_blocks:e.statistics.reports_filed.global_blocks,global_locks:e.statistics.reports_filed.global_locks},watchlist:{watched:this.sanitize(["statistics","watchlist","watched"],e.statistics.watchlist.watched),unwatched:this.sanitize(["statistics","watchlist","unwatched"],e.statistics.watchlist.unwatched)},items_whitelisted:{total:this.sanitize(["statistics","items_whitelisted","total"],e.statistics.items_whitelisted.total),users:this.sanitize(["statistics","items_whitelisted","users"],e.statistics.items_whitelisted.users),pages:this.sanitize(["statistics","items_whitelisted","pages"],e.statistics.items_whitelisted.pages),tags:this.sanitize(["statistics","items_whitelisted","tags"],e.statistics.items_whitelisted.tags)},items_highlighted:{total:this.sanitize(["statistics","items_highlighted","total"],e.statistics.items_highlighted.total),users:this.sanitize(["statistics","items_highlighted","users"],e.statistics.items_highlighted.users),pages:this.sanitize(["statistics","items_highlighted","pages"],e.statistics.items_highlighted.pages),tags:this.sanitize(["statistics","items_highlighted","tags"],e.statistics.items_highlighted.tags)},blocks_issued:{total:this.sanitize(["statistics","blocks_issued","total"],e.statistics.blocks_issued.total)},pages_protected:{total:this.sanitize(["statistics","pages_protected","total"],e.statistics.pages_protected.total)},actions_executed:{total:this.sanitize(["statistics","actions_executed","total"],e.statistics.actions_executed.total),successful:this.sanitize(["statistics","actions_executed","successful"],e.statistics.actions_executed.successful)},session_time:this.sanitize(["statistics","session_time"],e.statistics.session_time)},highlight:{users:this.sanitize(["highlight","users"],e.highlight.users),pages:this.sanitize(["highlight","pages"],e.highlight.pages),tags:this.sanitize(["highlight","tags"],e.highlight.tags)},whitelist:{users:this.sanitize(["whitelist","users"],e.whitelist.users),pages:this.sanitize(["whitelist","pages"],e.whitelist.pages),tags:this.sanitize(["whitelist","tags"],e.whitelist.tags)},favorite:{warnings:this.sanitize(["favorite","warnings"],e.favorite.warnings),reverts:this.sanitize(["favorite","reverts"],e.favorite.reverts)}}}static validate(){var e;const t=this.loadedData;if(this.restrictObject(t),(null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;"string"!=typeof t.changelog&&this.reset("changelog");{const s=t.settings;this.restrictObject(s,"settings");{const i=t.settings.performance;this.restrictObject(i,"settings","performance");{const a=new Set(["always_off","adaptive","always_on"]),r=t.settings.performance.startup;a.has(r)||this.reset("settings","performance","startup")}}{const v=t.settings.namespaces;Array.isArray(v)||this.reset("settings","namespaces"),t.settings.namespaces=[...new Set(t.settings.namespaces)].filter(e=>{const t=l.namespaces.some(t=>t.id===e);return t||this.loadedLogger.warn(`Removing invalid namespace ID [ ${e} ] from stored data.`),t})}{const f=t.settings.queue;this.restrictObject(f,"settings","queue");{const b=t.settings.queue.max_size;"number"==typeof b&&Number.isInteger(b)&&b>0||this.reset("settings","queue","max_size")}{const w=t.settings.queue.max_edits;"number"==typeof w&&Number.isInteger(w)&&w>0||this.reset("settings","queue","max_edits")}{const y=t.settings.queue.min_ores;"number"==typeof y&&y>=0&&y<=1||this.reset("settings","queue","min_ores")}{const x=t.settings.queue.ores_bias;"number"==typeof x&&x>=0&&x<=1||this.reset("settings","queue","ores_bias")}["recent","pending","users","watchlist","abuselog"].forEach((e,n,s)=>{{const n=t.settings.queue[e];this.restrictObject(n,"settings","queue",e);"boolean"!=typeof t.settings.queue[e].enabled&&this.reset("settings","queue",e,"enabled");{const n=t.settings.queue[e].order;"number"==typeof n&&Number.isInteger(n)&&n>=0&&n<s.length||this.reset("settings","queue",e,"order")}}})}{const k=t.settings.username_highlighting;this.restrictObject(k,"settings","username_highlighting");"boolean"!=typeof t.settings.username_highlighting.enabled&&this.reset("settings","username_highlighting","enabled");"boolean"!=typeof t.settings.username_highlighting.fuzzy&&this.reset("settings","username_highlighting","fuzzy")}{const _=t.settings.wikipedia_popups;this.restrictObject(_,"settings","wikipedia_popups");"boolean"!=typeof t.settings.wikipedia_popups.enabled&&this.reset("settings","wikipedia_popups","enabled")}{const S=t.settings.auto_welcome;this.restrictObject(S,"settings","auto_welcome");"boolean"!=typeof t.settings.auto_welcome.enabled&&this.reset("settings","auto_welcome","enabled")}{const q=t.settings.talk_page_thanks_for_temporary_users;this.restrictObject(q,"settings","talk_page_thanks_for_temporary_users");"boolean"!=typeof t.settings.talk_page_thanks_for_temporary_users.enabled&&this.reset("settings","talk_page_thanks_for_temporary_users","enabled")}{const E=t.settings.expiry;this.restrictObject(E,"settings","expiry");{const L=t.settings.expiry.watchlist;g.expiryRegex.test(L)||this.reset("settings","expiry","watchlist")}{const A=t.settings.expiry.whitelist;this.restrictObject(A,"settings","expiry","whitelist");{const T=t.settings.expiry.whitelist.users;g.expiryRegex.test(T)||this.reset("settings","expiry","whitelist","users")}{const C=t.settings.expiry.whitelist.pages;g.expiryRegex.test(C)||this.reset("settings","expiry","whitelist","pages")}{const z=t.settings.expiry.whitelist.tags;g.expiryRegex.test(z)||this.reset("settings","expiry","whitelist","tags")}}{const $=t.settings.expiry.highlight;this.restrictObject($,"settings","expiry","highlight");{const M=t.settings.expiry.highlight.users;g.expiryRegex.test(M)||this.reset("settings","expiry","highlight","users")}{const O=t.settings.expiry.highlight.pages;g.expiryRegex.test(O)||this.reset("settings","expiry","highlight","pages")}{const I=t.settings.expiry.highlight.tags;g.expiryRegex.test(I)||this.reset("settings","expiry","highlight","tags")}}}{const P=t.settings.auto_report;this.restrictObject(P,"settings","auto_report");"boolean"!=typeof t.settings.auto_report.enabled&&this.reset("settings","auto_report","enabled");{const j=t.settings.auto_report.for;Array.isArray(j)||this.reset("settings","auto_report","for"),t.settings.auto_report.for=[...new Set(t.settings.auto_report.for)].filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid auto-report reason [ ${e} ] from stored data.`),t})}}{const W=t.settings.AI;this.restrictObject(W,"settings","AI");"boolean"!=typeof t.settings.AI.enabled&&this.reset("settings","AI","enabled");"Ollama"!==t.settings.AI.provider&&this.reset("settings","AI","provider");{const N=t.settings.AI.edit_analysis;this.restrictObject(N,"settings","AI","edit_analysis");"boolean"!=typeof t.settings.AI.edit_analysis.enabled&&this.reset("settings","AI","edit_analysis","enabled")}{const D=t.settings.AI.username_analysis;this.restrictObject(D,"settings","AI","username_analysis");"boolean"!=typeof t.settings.AI.username_analysis.enabled&&this.reset("settings","AI","username_analysis","enabled")}{const R=t.settings.AI.Ollama;this.restrictObject(R,"settings","AI","Ollama");{const U=t.settings.AI.Ollama.server;(0,o.isURL)(U)||this.reset("settings","AI","Ollama","server")}"string"!=typeof t.settings.AI.Ollama.model&&this.reset("settings","AI","Ollama","model")}}{const H=t.settings.audio;this.restrictObject(H,"settings","audio");{const F=t.settings.audio.ores_alert;this.restrictObject(F,"settings","audio","ores_alert");"boolean"!=typeof t.settings.audio.ores_alert.enabled&&this.reset("settings","audio","ores_alert","enabled");{const V=t.settings.audio.ores_alert.threshold;"number"==typeof V&&V>=0&&V<=1||this.reset("settings","audio","ores_alert","threshold")}}{const B=t.settings.audio.volume;this.restrictObject(B,"settings","audio","volume");const G=["master","master.startup","master.music","master.music.zen_mode","master.ui","master.ui.click","master.queue","master.queue.ores","master.queue.mention","master.notification","master.notification.alert","master.notification.message","master.notification.toast","master.action","master.action.default","master.action.failed","master.action.report","master.action.block","master.action.protect"];for(const Q of G){const Y=t.settings.audio.volume[Q];"number"==typeof Y&&Y>=0&&Y<=1||this.reset("settings","audio","volume",Q)}}}{const Z=t.settings.zen_mode;this.restrictObject(Z,"settings","zen_mode");"boolean"!=typeof Z.enabled&&this.reset("settings","zen_mode","enabled");{const K=t.settings.zen_mode.sound;this.restrictObject(K,"settings","zen_mode","sound");"boolean"!=typeof t.settings.zen_mode.sound.enabled&&this.reset("settings","zen_mode","sound","enabled")}{const X=t.settings.zen_mode.music;this.restrictObject(X,"settings","zen_mode","music");"boolean"!=typeof t.settings.zen_mode.music.enabled&&this.reset("settings","zen_mode","music","enabled")}{const J=t.settings.zen_mode.alerts;this.restrictObject(J,"settings","zen_mode","alerts");"boolean"!=typeof t.settings.zen_mode.alerts.enabled&&this.reset("settings","zen_mode","alerts","enabled")}{const ee=t.settings.zen_mode.messages;this.restrictObject(ee,"settings","zen_mode","messages");"boolean"!=typeof t.settings.zen_mode.messages.enabled&&this.reset("settings","zen_mode","messages","enabled")}{const te=t.settings.zen_mode.toasts;this.restrictObject(te,"settings","zen_mode","toasts");"boolean"!=typeof t.settings.zen_mode.toasts.enabled&&this.reset("settings","zen_mode","toasts","enabled")}{const ne=t.settings.zen_mode.badges;this.restrictObject(ne,"settings","zen_mode","badges");"boolean"!=typeof t.settings.zen_mode.badges.enabled&&this.reset("settings","zen_mode","badges","enabled")}}{const se=t.settings.accessibility;this.restrictObject(se,"settings","accessibility");"boolean"!=typeof t.settings.accessibility.colorblind&&this.reset("settings","accessibility","colorblind");"boolean"!=typeof t.settings.accessibility.dyslexia&&this.reset("settings","accessibility","dyslexia");"boolean"!=typeof t.settings.accessibility.high_contrast&&this.reset("settings","accessibility","high_contrast");"boolean"!=typeof t.settings.accessibility.reduce_motion&&this.reset("settings","accessibility","reduce_motion")}"boolean"!=typeof t.settings.repeat_control_scripts&&this.reset("settings","repeat_control_scripts")}{const ie=t.UI;this.restrictObject(ie,"UI");{const ae=t.UI.theme;this.restrictObject(ae,"UI","theme");{const re=t.UI.theme.app;["light","dark","auto"].includes(re)||this.reset("UI","theme","app")}t.UI.theme.palette in m.GUI.palettes||this.reset("UI","theme","palette")}{const oe=t.UI.queue;this.restrictObject(oe,"UI","queue");{const le=t.UI.queue.width;"string"==typeof le&&le.endsWith("vw")||this.reset("UI","queue","width");const de=parseFloat(le.slice(0,-2));"number"==typeof de&&!isNaN(de)&&de>=10&&de<=30||this.reset("UI","queue","width")}}{const ce=t.UI.details;this.restrictObject(ce,"UI","details");{const ue=t.UI.details.width;"string"==typeof ue&&ue.endsWith("vw")||this.reset("UI","details","width");const pe=parseFloat(ue.slice(0,-2));"number"==typeof pe&&!isNaN(pe)&&pe>=10&&pe<=30||this.reset("UI","details","width")}}}{const ge=t.control_scripts;function he(e,...t){return e.filter((e,n)=>{var s;if(n=+n,!(0,o.isObject)(e))return null!==(s=void this.loadedLogger.warn(`Removing invalid action at path [ ${[...t,n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s;if("if"===e.name||"if not"===e.name){var i,a,r,l;const s=e.condition;if(!(s.name in u.conditions))return null!==(i=void this.loadedLogger.warn(`Removing invalid condition [ ${s.name} ] at path [ ${[...t,n,"condition"].join(" -> ")} ] from stored data.`))&&void 0!==i&&i;Array.isArray(e.actions)||(this.loadedLogger.warn(`Resetting invalid actions array at path [ ${[...t,n,"actions"].join(" -> ")} ] in stored data.`),e.actions=[]);const o=(0,h.sortDependencies)(null!==(a=null===(r=(l=u.conditions[s.name]).parameters)||void 0===r?void 0:r.call(l))&&void 0!==a?a:[]),c=new Set;for(const e of o){const i={};for(const t of null!==(d=e.dependencies)&&void 0!==d?d:[]){var d;i[t]=s.params[t]}const a="function"==typeof e.default?e.default(i):e.default;if(e.id in s.params||"default"in e&&(this.loadedLogger.warn(`Resetting missing parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a),c.add(e.id),"default"in e)switch(e.type){case"choice":("function"==typeof e.options?e.options(i):e.options).includes(s.params[e.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"text":"string"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid text parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"boolean":"boolean"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid boolean parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a);break;case"number":"number"!=typeof s.params[e.id]&&(this.loadedLogger.warn(`Resetting invalid number parameter [ ${e.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),s.params[e.id]=a)}}for(const e of Object.keys(s.params))c.has(e)||(this.loadedLogger.warn(`Removing invalid parameter [ ${e} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete s.params[e]);e.actions=he.call(this,e.actions,...t,n,"actions")}else{var p,m,v,f;if(!(e.name in c.events))return null!==(p=void this.loadedLogger.warn(`Removing invalid action [ ${e.name} ] at path [ ${[...t,n,"name"].join(" -> ")} ] from stored data.`))&&void 0!==p&&p;(0,o.isObject)(e.params)||(this.loadedLogger.warn(`Resetting invalid params object at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params={});const s=(0,h.sortDependencies)(null!==(m=null===(v=(f=c.events[e.name]).parameters)||void 0===v?void 0:v.call(f))&&void 0!==m?m:[]),i=new Set;for(const a of s){const s={};for(const t of null!==(b=a.dependencies)&&void 0!==b?b:[]){var b;s[t]=e.params[t]}const r="function"==typeof a.default?a.default(s):a.default;if(a.id in e.params||"default"in a&&(this.loadedLogger.warn(`Resetting missing parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r),i.add(a.id),"default"in a)switch(a.type){case"choice":("function"==typeof a.options?a.options(s):a.options).includes(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid choice parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"text":"string"!=typeof e.params[a.id]&&(this.loadedLogger.warn(`Resetting invalid text parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"boolean":"boolean"!=typeof e.params[a.id]&&(this.loadedLogger.warn(`Resetting invalid boolean parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r);break;case"duration":"string"==typeof e.params[a.id]&&g.expiryRegex.test(e.params[a.id])||(this.loadedLogger.warn(`Resetting invalid duration parameter [ ${a.id} ] at path [ ${[...t,n,"params"].join(" -> ")} ] in stored data.`),e.params[a.id]=r)}}for(const s of Object.keys(e.params))i.has(s)||(this.loadedLogger.warn(`Removing invalid parameter [ ${s} ] at path [ ${[...t,n,"params"].join(" -> ")} ] from stored data.`),delete e.params[s])}return!0})}Array.isArray(ge)||this.reset("control_scripts"),t.control_scripts=t.control_scripts.filter((e,n)=>{var s;return n=+n,(0,o.isObject)(e)?(Array.isArray(e.keys)||(this.loadedLogger.warn(`Removing invalid keys array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].keys=[]),Array.isArray(e.actions)||(this.loadedLogger.warn(`Removing invalid actions array from control script at index [ ${n} ] in stored data.`),t.control_scripts[n].actions=[]),t.control_scripts[n].keys=e.keys.filter(e=>(0,p.validateShortcut)(e)),t.control_scripts[n].actions=he.call(this,e.actions,"control_scripts",n,"actions"),!0):null!==(s=void this.loadedLogger.warn(`Removing invalid control script at path [ ${["control_scripts",n].join(" -> ")} ] from stored data.`))&&void 0!==s&&s})}{const me=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0,ve=t.statistics;this.restrictObject(ve,"statistics");{const fe=t.statistics.edits_reviewed;this.restrictObject(fe,"statistics","edits_reviewed");me(t.statistics.edits_reviewed.total)||this.reset("statistics","edits_reviewed","total");me(t.statistics.edits_reviewed.thanked)||this.reset("statistics","edits_reviewed","thanked")}{const be=t.statistics.recent_changes_reviewed;this.restrictObject(be,"statistics","recent_changes_reviewed");me(t.statistics.recent_changes_reviewed.total)||this.reset("statistics","recent_changes_reviewed","total")}{const we=t.statistics.pending_changes_reviewed;this.restrictObject(we,"statistics","pending_changes_reviewed");me(t.statistics.pending_changes_reviewed.total)||this.reset("statistics","pending_changes_reviewed","total");me(t.statistics.pending_changes_reviewed.accepted)||this.reset("statistics","pending_changes_reviewed","accepted");me(t.statistics.pending_changes_reviewed.rejected)||this.reset("statistics","pending_changes_reviewed","rejected")}{const ye=t.statistics.watchlist_changes_reviewed;this.restrictObject(ye,"statistics","watchlist_changes_reviewed");me(t.statistics.watchlist_changes_reviewed.total)||this.reset("statistics","watchlist_changes_reviewed","total")}{const xe=t.statistics.users_reviewed;this.restrictObject(xe,"statistics","users_reviewed");me(t.statistics.users_reviewed.total)||this.reset("statistics","users_reviewed","total")}{const ke=t.statistics.abuselogs_reviewed;this.restrictObject(ke,"statistics","abuselogs_reviewed");me(t.statistics.abuselogs_reviewed.total)||this.reset("statistics","abuselogs_reviewed","total")}{const _e=t.statistics.reverts_made;this.restrictObject(_e,"statistics","reverts_made");me(t.statistics.reverts_made.total)||this.reset("statistics","reverts_made","total");me(t.statistics.reverts_made.good_faith)||this.reset("statistics","reverts_made","good_faith");me(t.statistics.reverts_made.from_recent_changes)||this.reset("statistics","reverts_made","from_recent_changes");me(t.statistics.reverts_made.from_pending_changes)||this.reset("statistics","reverts_made","from_pending_changes");me(t.statistics.reverts_made.from_watchlist)||this.reset("statistics","reverts_made","from_watchlist");me(t.statistics.reverts_made.from_abuselogs)||this.reset("statistics","reverts_made","from_abuselogs");me(t.statistics.reverts_made.from_loaded_edits)||this.reset("statistics","reverts_made","from_loaded_edits")}{const Se=t.statistics.users_welcomed;this.restrictObject(Se,"statistics","users_welcomed");me(t.statistics.users_welcomed.total)||this.reset("statistics","users_welcomed","total")}{const qe=t.statistics.warnings_issued;this.restrictObject(qe,"statistics","warnings_issued");me(t.statistics.warnings_issued.total)||this.reset("statistics","warnings_issued","total");me(t.statistics.warnings_issued.level_1)||this.reset("statistics","warnings_issued","level_1");me(t.statistics.warnings_issued.level_2)||this.reset("statistics","warnings_issued","level_2");me(t.statistics.warnings_issued.level_3)||this.reset("statistics","warnings_issued","level_3");me(t.statistics.warnings_issued.level_4)||this.reset("statistics","warnings_issued","level_4");me(t.statistics.warnings_issued.level_4im)||this.reset("statistics","warnings_issued","level_4im")}{const Ee=t.statistics.reports_filed;this.restrictObject(Ee,"statistics","reports_filed");me(t.statistics.reports_filed.total)||this.reset("statistics","reports_filed","total");me(t.statistics.reports_filed.AIV)||this.reset("statistics","reports_filed","AIV");me(t.statistics.reports_filed.UAA)||this.reset("statistics","reports_filed","UAA");me(t.statistics.reports_filed.RFPP)||this.reset("statistics","reports_filed","RFPP");me(t.statistics.reports_filed.global_blocks)||this.reset("statistics","reports_filed","global_blocks");me(t.statistics.reports_filed.global_locks)||this.reset("statistics","reports_filed","global_locks")}{const Le=t.statistics.watchlist;this.restrictObject(Le,"statistics","watchlist");me(t.statistics.watchlist.watched)||this.reset("statistics","watchlist","watched");me(t.statistics.watchlist.unwatched)||this.reset("statistics","watchlist","unwatched")}{const Ae=t.statistics.items_whitelisted;this.restrictObject(Ae,"statistics","items_whitelisted");me(t.statistics.items_whitelisted.total)||this.reset("statistics","items_whitelisted","total");me(t.statistics.items_whitelisted.users)||this.reset("statistics","items_whitelisted","users");me(t.statistics.items_whitelisted.pages)||this.reset("statistics","items_whitelisted","pages");me(t.statistics.items_whitelisted.tags)||this.reset("statistics","items_whitelisted","tags")}{const Te=t.statistics.items_highlighted;this.restrictObject(Te,"statistics","items_highlighted");me(t.statistics.items_highlighted.total)||this.reset("statistics","items_highlighted","total");me(t.statistics.items_highlighted.users)||this.reset("statistics","items_highlighted","users");me(t.statistics.items_highlighted.pages)||this.reset("statistics","items_highlighted","pages");me(t.statistics.items_highlighted.tags)||this.reset("statistics","items_highlighted","tags")}{const Ce=t.statistics.actions_executed;this.restrictObject(Ce,"statistics","actions_executed");me(t.statistics.actions_executed.total)||this.reset("statistics","actions_executed","total");me(t.statistics.actions_executed.successful)||this.reset("statistics","actions_executed","successful")}{const ze=t.statistics.session_time;"number"==typeof ze&&ze>=0||this.reset("statistics","session_time")}}const n=e=>{if(!Array.isArray(e)||2!==e.length)return!1;if("string"!=typeof e[0])return!1;{const t=e[1];if(!Array.isArray(t)||2!==t.length)return!1;const n=e=>"number"==typeof e&&Number.isInteger(e)&&e>=0;if(!n(t[0])||!n(t[1]))return!1}return!0};{const $e=t.highlight;this.restrictObject($e,"highlight");{const Me=t.highlight.users;Array.isArray(Me)||this.reset("highlight","users"),t.highlight.users=t.highlight.users.filter(e=>n(e))}{const Oe=t.highlight.pages;Array.isArray(Oe)||this.reset("highlight","pages"),t.highlight.pages=t.highlight.pages.filter(e=>n(e))}{const Ie=t.highlight.tags;Array.isArray(Ie)||this.reset("highlight","tags"),t.highlight.tags=t.highlight.tags.filter(e=>n(e))}}{const Pe=t.whitelist;this.restrictObject(Pe,"whitelist");{const je=t.whitelist.users;Array.isArray(je)||this.reset("whitelist","users"),t.whitelist.users=t.whitelist.users.filter(e=>n(e))}{const We=t.whitelist.pages;Array.isArray(We)||this.reset("whitelist","pages"),t.whitelist.pages=t.whitelist.pages.filter(e=>n(e))}{const Ne=t.whitelist.tags;Array.isArray(Ne)||this.reset("whitelist","tags"),t.whitelist.tags=t.whitelist.tags.filter(e=>n(e))}}{const De=t.favorite;this.restrictObject(De,"favorite");{const Re=t.favorite.warnings;Array.isArray(Re)||this.reset("favorite","warnings"),t.favorite.warnings=t.favorite.warnings.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite warning [ ${e} ] from stored data.`),t})}{const Ue=t.favorite.reverts;Array.isArray(Ue)||this.reset("favorite","reverts"),t.favorite.reverts=t.favorite.reverts.filter(e=>{const t=e in d.warningsLookup;return t||this.loadedLogger.warn(`Removing invalid favorite revert [ ${e} ] from stored data.`),t})}}return!0}static construct(){var e;const t=this.loadedData;return(null==t?void 0:t.version)!==this.number?null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e:(t.settings.auto_report.for=new Set(t.settings.auto_report.for),t.highlight.users=new Map(t.highlight.users),t.highlight.pages=new Map(t.highlight.pages),t.highlight.tags=new Map(t.highlight.tags),t.whitelist.users=new Map(t.whitelist.users),t.whitelist.pages=new Map(t.whitelist.pages),t.whitelist.tags=new Map(t.whitelist.tags),t)}static deconstruct(){var e;const t=this.loadedData;if((null==t?void 0:t.version)!==this.number)return null!==(e=void this.loadedLogger.error(`Stored data version ${null==t?void 0:t.version} does not match expected version ${this.number}.`))&&void 0!==e&&e;t.settings.auto_report.for=[...t.settings.auto_report.for],t.highlight.users=[...t.highlight.users],t.highlight.pages=[...t.highlight.pages],t.highlight.tags=[...t.highlight.tags],t.whitelist.users=[...t.whitelist.users],t.whitelist.pages=[...t.whitelist.pages],t.whitelist.tags=[...t.whitelist.tags];const n=structuredClone(t);return this.construct(),n}},i=s,r=3,(a=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(a="number"))in i?Object.defineProperty(i,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[a]=r,s)},7852(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0;t.VERSION="2.0.11"},955(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getWarningFromLookup=function(e){return a[e]},t.warningsLookup=t.warnings=t.warningTemplateColors=void 0;t.warningTemplateColors={0:"grey",1:"#4169e1",2:"#ff8c00",3:"#ff4500",4:"#b22222","4im":"#000000"};const n={0:"1",1:"2",2:"3",3:"4",4:"report","4im":"report"},s=t.warnings={Vandalism:{title:"Vandalism",icon:"fas fa-skull-crossbones",description:"Warnings for different types of vandalism.",warnings:[{reportable:!0,queueType:["edit"],title:"Vandalism",name:"vandalism",icon:"fas fa-skull-crossbones",description:"Warning for general vandalism.",summary:"vandalism",auto:n,templates:[{name:"1",template:"uw-vandalism1"},{name:"2",template:"uw-vandalism2"},{name:"3",template:"uw-vandalism3"},{name:"4",template:"uw-vandalism4"},{name:"4im",template:"uw-vandalism4im"}]},{reportable:!0,queueType:["edit"],title:"Subtle vandalism",name:"subtle vandalism",icon:"fas fa-user-secret",description:"Warning for subtle vandalism.",summary:"subtle vandalism",auto:n,templates:[{name:"1",template:"uw-subtle1"},{name:"2",template:"uw-subtle2"},{name:"3",template:"uw-subtle3"},{name:"4",template:"uw-subtle4"}]},{reportable:!0,queueType:["edit"],title:"Image vandalism",name:"image vandalism",icon:"fas fa-image",description:"Warning for image vandalism.",summary:"image vandalism",auto:n,templates:[{name:"1",template:"uw-image1"},{name:"2",template:"uw-image2"},{name:"3",template:"uw-image3"},{name:"4",template:"uw-image4"},{name:"4im",template:"uw-image4im"}]},{reportable:!0,queueType:["edit"],title:"Sandbox",name:"[[WP:BADSAND|inappropriate]] sandbox use",icon:"fas fa-vial",description:"Warning for vandalism, libelous, or defamatory content added to sandbox",summary:"[[WP:BADSAND|inappropriate]] sandbox use",auto:n,templates:[{name:"1",template:"uw-sandbox1"},{name:"2",template:"uw-sandbox2"},{name:"3",template:"uw-sandbox3"},{name:"4",template:"uw-sandbox4"},{name:"4im",template:"uw-sandbox4im"}]},{reportable:!0,queueType:["edit"],title:"Deliberate errors",name:"deliberate errors",icon:"fas fa-bug",description:"Adding deliberate errors to articles.",summary:"deliberate errors",auto:n,templates:[{name:"1",template:"uw-error1"},{name:"2",template:"uw-error2"},{name:"3",template:"uw-error3"},{name:"4",template:"uw-error4"}]}]},Disruption:{title:"Disruption",icon:"fas fa-exclamation",description:"Warnings for different types of disruptive behavior.",warnings:[{reportable:!0,queueType:["edit"],title:"Disruptive editing",name:"[[WP:DE|disruptive editing]]",icon:"fas fa-exclamation",description:"Default warning for making disruptive edits but may be good faith.",summary:"[[WP:DE|disruptive editing]]",auto:n,templates:[{name:"1",template:"uw-disruptive1"},{name:"2",template:"uw-disruptive2"},{name:"3",template:"uw-disruptive3"},{name:"4",template:"uw-generic4",generic:"''Disruptive editing. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Editing tests",name:"editing tests",icon:"fas fa-flask",description:"Making test edits on live articles.",summary:"test edits",auto:n,templates:[{name:"1",template:"uw-test1"},{name:"2",template:"uw-test2"},{name:"3",template:"uw-test3"},{name:"4",template:"uw-generic4",generic:"''Test edits. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Commentary",name:"commentary",icon:"fas fa-comment-alt",description:"Adding opinion or commentary to articles.",summary:"commentary / talking in article",auto:n,templates:[{name:"1",template:"uw-talkinarticle1"},{name:"2",template:"uw-talkinarticle2"},{name:"3",template:"uw-talkinarticle3"},{name:"4",template:"uw-generic4",generic:"''Adding commentary to articles. ([[WP:WikiShield|WS]])''"}]},{reportable:!0,queueType:["edit"],title:"Inappropriate jokes",name:"inappropriate humor",icon:"fas fa-grin-squint",description:"Adding inappropriate humor to an article.",summary:"inappropriate humor",auto:n,templates:[{name:"1",template:"uw-joke1"},{name:"2",template:"uw-joke2"},{name:"3",template:"uw-joke3"},{name:"4",template:"uw-joke4"},{name:"4im",template:"uw-joke4im"}]},{reportable:!0,queueType:["edit"],title:"Deleting",name:"unexplained deletion",icon:"fas fa-trash",description:"Used when a user does not explain deletion of part of an article.",summary:"unexplained deletion",auto:n,templates:[{name:"1",template:"uw-delete1"},{name:"2",template:"uw-delete2"},{name:"3",template:"uw-delete3"},{name:"4",template:"uw-delete4"},{name:"4im",template:"uw-delete4im"}]}]},"Content Issues":{title:"Content Issues",icon:"fas fa-file-alt",description:"Warnings for different types of content issues.",warnings:[{reportable:!0,queueType:["edit"],title:"Unsourced",name:"unsourced changes",icon:"fas fa-question",description:"Warning for unsourced content.",summary:"unsourced changes",auto:n,templates:[{name:"1",template:"uw-unsourced1"},{name:"2",template:"uw-unsourced2"},{name:"3",template:"uw-unsourced3"},{name:"4",template:"uw-unsourced4"}]},{reportable:!0,queueType:["edit"],title:"Unsourced (BLP)",name:"unsourced [[WP:BLP|biographies of living persons']] changes",icon:"fas fa-person-circle-question",description:"Warning for unsourced BLP content.",summary:"unsourced [[WP:BLP|biographies of living persons']] changes",auto:n,templates:[{name:"1",template:"uw-biog1"},{name:"2",template:"uw-biog2"},{name:"3",template:"uw-biog3"},{name:"4",template:"uw-biog4"},{name:"4im",template:"uw-biog4im"}]},{reportable:!0,queueType:["edit"],title:"Unsourced genre",name:"unsourced genre changes",icon:"fas fa-music",description:"Warning for unsourced genre changes.",summary:"unsourced genre changes",auto:n,templates:[{name:"1",template:"uw-genre1"},{name:"2",template:"uw-genre2"},{name:"3",template:"uw-genre3"},{name:"4",template:"uw-genre4"}]},{reportable:!0,queueType:["edit"],title:"Original research",name:"[[WP:OR|original research]]",icon:"fas fa-lightbulb",description:"Adding original research or synthesis.",summary:"[[WP:OR|original research]]",auto:n,templates:[{name:"1",template:"uw-nor1"},{name:"2",template:"uw-nor2"},{name:"3",template:"uw-nor3"},{name:"4",template:"uw-nor4"}]},{reportable:!0,queueType:["edit"],title:"POV",name:"[[WP:NPOV|non-neutral changes]]",icon:"fas fa-balance-scale-left",description:"Adding content which violates the neutral point of view policy.",summary:"[[WP:NPOV|non-neutral changes]]",auto:n,templates:[{name:"1",template:"uw-npov1"},{name:"2",template:"uw-npov2"},{name:"3",template:"uw-npov3"},{name:"4",template:"uw-npov4"}]},{reportable:!0,queueType:["edit"],title:"Censoring",name:"[[WP:NOTCENSORED|censoring content]]",icon:"fas fa-ban",description:"Censoring topically-relevant content.",summary:"[[WP:NOTCENSORED|censoring content]]",auto:n,templates:[{name:"1",template:"uw-notcensored1"},{name:"2",template:"uw-notcensored2"},{name:"3",template:"uw-notcensored3"},{name:"4",template:"uw-notcensored4"}]},{reportable:!0,queueType:["edit"],title:"AI-generated",name:"[[WP:LLM|AI-generated content]]",icon:"fas fa-robot",description:"Adding AI-generated content.",summary:"[[WP:LLM|AI-generated content]]",auto:n,templates:[{name:"1",template:"uw-ai1"},{name:"2",template:"uw-ai2"},{name:"3",template:"uw-ai3"},{name:"4",template:"uw-ai4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==0}},{reportable:!0,queueType:["edit"],title:"AI-generated (talk)",name:"[[WP:LLM|AI-generated content]] in a discussion",icon:"fas fa-robot",description:"Writing an AI-generated comment.",summary:"[[WP:LLM|AI-generated content]] in a discussion",auto:n,templates:[{name:"1",template:"uw-aitalk1"},{name:"2",template:"uw-aitalk2"},{name:"3",template:"uw-aitalk3"},{name:"4",template:"uw-aitalk4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==1}},{reportable:!0,queueType:["edit"],title:"MOS violation",name:"[[WP:MOS|manual of style]] violation",icon:"fas fa-spell-check",description:"Not following the Manual of Style.",summary:"[[WP:MOS|manual of style]] violation",auto:n,templates:[{name:"1",template:"uw-mos1"},{name:"2",template:"uw-mos2"},{name:"3",template:"uw-mos3"},{name:"4",template:"uw-mos4"}]},{reportable:!1,queueType:["edit"],title:"English variant",name:"[[WP:ENGVAR|different English variant]]",icon:"fas fa-globe",description:"Content added in a different English variant than the rest of the article.",summary:"[[WP:ENGVAR|different English variant]]",auto:"notice",templates:[{name:"notice",template:"uw-engvar"}]},{reportable:!1,queueType:["edit"],title:"Not English",name:"non-English content",icon:"fas fa-language",description:"Content added in a language other than English.",summary:"non-English content",auto:"notice",templates:[{name:"notice",template:"uw-lang-noteng"}]}]},Conduct:{title:"Conduct",icon:"fas fa-user-shield",description:"Warnings for different types of conduct issues.",warnings:[{reportable:!0,queueType:["edit"],title:"Personal attacks",name:"[[WP:NPA|personal attacks]]",icon:"fas fa-bomb",description:"Personal attacks towards another user.",summary:"[[WP:NPA|personal attacks]]",auto:n,templates:[{name:"1",template:"uw-npa1"},{name:"2",template:"uw-npa2"},{name:"3",template:"uw-npa3"},{name:"4",template:"uw-npa4"},{name:"4im",template:"uw-npa4im"}]},{reportable:!0,queueType:["edit"],title:"Harassment",name:"[[WP:HARASS|harassment]]",icon:"fas fa-shield-alt",description:"Harassment of another user.",summary:"[[WP:HARASS|harassment]] of another user",auto:n,templates:[{name:"1",template:"uw-harass1"},{name:"2",template:"uw-harass2"},{name:"3",template:"uw-harass3"},{name:"4",template:"uw-harass4"},{name:"4im",template:"uw-harass4im"}]},{reportable:!0,queueType:["edit"],title:"TPO",name:"[[WP:TPO|removing or editing]] others' posts",icon:"fas fa-hand-paper",description:"Removing or editing others' posts.",summary:"[[WP:TPO|removing or editing]] others' posts",auto:n,templates:[{name:"1",template:"uw-tpo1"},{name:"2",template:"uw-tpo2"},{name:"3",template:"uw-tpo3"},{name:"4",template:"uw-tpo4"},{name:"4im",template:"uw-tpo4im"}]},{reportable:!0,queueType:["edit"],title:"Chatting",name:"inappropriate use of article talk pages",icon:"fas fa-comments",description:"Using article talk pages for inappropriate discussion.",summary:"inappropriate use of article talk pages",auto:n,templates:[{name:"1",template:"uw-chat1"},{name:"2",template:"uw-chat2"},{name:"3",template:"uw-chat3"},{name:"4",template:"uw-chat4"}],show(e){var t;return(null==e||null===(t=e.page)||void 0===t?void 0:t.namespace)%2==1}},{reportable:!0,queueType:["edit"],title:"Owning",name:"assuming [[WP:OWN|ownership of articles]]",icon:"fas fa-user-shield",description:"Assuming ownership of articles.",summary:"assuming [[WP:OWN|ownership of articles]]",auto:n,templates:[{name:"1",template:"uw-own1"},{name:"2",template:"uw-own2"},{name:"3",template:"uw-own3"},{name:"4",template:"uw-own4"}]},{reportable:!0,queueType:["edit"],title:"AfD removal",name:"removing AfD templates or comments",icon:"fas fa-gavel",description:"Removing AfD templates or other users' comments from AfD discussions.",summary:"removing AfD templates or comments",auto:n,templates:[{name:"1",template:"uw-afd1"},{name:"2",template:"uw-afd2"},{name:"3",template:"uw-afd3"},{name:"4",template:"uw-afd4"}]},{reportable:!1,queueType:["edit"],title:"Edit warring",name:"[[WP:EW|edit warring]]",icon:"fas fa-jet-fighter",description:"Engaging in edit warring.",summary:"[[WP:EW|edit warring]]",auto(e){var t;return+(null==e||null===(t=e.user)||void 0===t?void 0:t.edits)<500?"notice":"warning"},templates:[{name:"notice",template:"uw-ew-soft",color:"grey"},{name:"warning",template:"uw-ew",color:"#ff4500"}]},{reportable:!0,queueType:["edit"],title:"Gaming the system",name:"[[WP:GAME|gaming the system]]",icon:"fas fa-chess-knight",description:"Attempting to game Wikipedia's policies or guidelines.",summary:"[[WP:GAME|gaming the system]]",auto:n,templates:[{name:"1",template:"uw-gaming1"},{name:"2",template:"uw-gaming2"},{name:"3",template:"uw-gaming3"},{name:"4",template:"uw-gaming4"},{name:"4im",template:"uw-gaming4im"}]}]},Promotional:{title:"Promotional",icon:"fas fa-bullhorn",description:"Warnings for promotional content.",warnings:[{reportable:!0,queueType:["edit"],title:"Advertising",name:"[[WP:PROMO|advertising or promotion]]",icon:"fas fa-ad",description:"Adding advertising or promotional content.",summary:"[[WP:PROMO|advertising or promotion]]",auto:n,templates:[{name:"1",template:"uw-advert1"},{name:"2",template:"uw-advert2"},{name:"3",template:"uw-advert3"},{name:"4",template:"uw-advert4"},{name:"4im",template:"uw-advert4im"}]},{reportable:!0,queueType:["edit"],title:"Spam links",name:"adding [[WP:ELNO|inappropriate links]]",icon:"fas fa-link",description:"Adding spam or promotional links.",summary:"adding [[WP:ELNO|inappropriate links]]",auto:n,templates:[{name:"1",template:"uw-spam1"},{name:"2",template:"uw-spam2"},{name:"3",template:"uw-spam3"},{name:"4",template:"uw-spam4"},{name:"4im",template:"uw-spam4im"}]},{reportable:!1,queueType:["edit"],title:"COI Edit",name:"editing with a [[WP:COI|conflict of interest]]",icon:"fas fa-user-tie",description:"Editing with a conflict of interest.",summary:"editing with a [[WP:COI|conflict of interest]]",auto:"notice",templates:[{name:"notice",template:"uw-coi"},{name:"warning",template:"uw-coi-warn"},{name:"username",template:"uw-coi-username"}]},{reportable:!1,queueType:["logevent"],title:"COI Log",name:"apparent [[WP:COI|conflict of interest]]",icon:"fas fa-user-tie",description:"Apparent conflict of interest.",summary:"apparent [[WP:COI|conflict of interest]]",auto:"username",templates:[{name:"username",template:"uw-coi-username"}]}]},"Abuse Log":{title:"Abuse Log",icon:"fas fa-shield-virus",description:"Warnings for triggering edit filters.",warnings:[{reportable:!0,queueType:["abuselog"],title:"Attempt",name:"triggering an edit filter",icon:"fas fa-vial",description:"Triggering an edit filter.",auto:n,templates:[{name:"1",template:"uw-attempt1"},{name:"2",template:"uw-attempt2"},{name:"3",template:"uw-attempt3"},{name:"4",template:"uw-attempt4"},{name:"4im",template:"uw-attempt4im"}],show:e=>!Boolean(null==e?void 0:e.revid)}]},"Edit Summary":{title:"Edit Summary",icon:"fas fa-pen-alt",description:"Warnings for inappropriate edit summaries.",warnings:[{reportable:!1,queueType:["edit"],title:"No edit summary",name:"no [[WP:ES|edit summary]] provided",icon:"fas fa-pen-nib",description:"Making an edit without providing an edit summary.",summary:"no [[WP:ES|edit summary]] provided",auto(e){var t;return+(null==e||null===(t=e.user)||void 0===t?void 0:t.edits)<500?"newcomer":"experienced"},templates:[{name:"notice",template:"uw-es"},{name:"experienced",template:"uw-es2"}]},{reportable:!0,queueType:["edit","logevent","abuselog"],title:"Inappropriate edit summary",name:"inappropriate [[WP:ES|edit summary]]",icon:"fas fa-pen-alt",description:"Using an inappropriate edit summary.",summary:"inappropriate [[WP:ES|edit summary]]",auto:n,templates:[{name:"1",template:"uw-bes1"},{name:"2",template:"uw-bes2"},{name:"3",template:"uw-bes3"},{name:"4",template:"uw-bes4"},{name:"4im",template:"uw-bes4im"}]},{reportable:!0,queueType:["edit","logevent","abuselog"],title:"Misleading edit summary",name:"misleading [[WP:ES|edit summary]]",icon:"fas fa-mask",description:"Using a misleading edit summary.",summary:"misleading [[WP:ES|edit summary]]",auto:n,templates:[{name:"1",template:"uw-mislead1"},{name:"2",template:"uw-mislead2"},{name:"3",template:"uw-mislead3"},{name:"4",template:"uw-generic4",generic:"''Misleading edit summary. ([[WP:WikiShield|WS]])''"}]},{reportable:!1,queueType:["edit","abuselog"],title:"Minor edit abuse",name:"improper use of [[WP:ME|minor edit]] checkbox",icon:"fas fa-minus",description:"Non-minor edit marked as minor",summary:"improper use of [[WP:ME|minor edit]] checkbox",auto:"notice",templates:[{name:"notice",template:"uw-minor"}]}]}},i={};for(const[e,t]of Object.entries(s)){const e=t.warnings.length;for(let n=0;n<e;n++){const e=t.warnings[n];i[e.title]=e}}const a=t.warningsLookup=i},863(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.welcomes=void 0;const n=t.welcomes={Auto:{title:"Auto",template:e=>{}},Default:{title:"Default",template:"Welcome",sign:!0},Basic:{title:"Basic",template:"W-basic",sign:!1},"Non-Latin":{title:"Non-Latin",template:"Welcome-non-latin",sign:!0},"Vandalism fighter":{title:"Vandalism fighter",template:"Welcome-vandalism fighter",sign:!1},Personal:{title:"Personal",template:"Welcome-personal",sign:!0},Cookie:{title:"Cookie",template:"Welcome cookie",sign:!0},Kitten:{title:"Kitten",template:"Welcome kitten",sign:!1},Graphical:{title:"Graphical",template:"W-graphical",sign:!1},Screen:{title:"Screen",template:"W-screen",sign:!1},Autobiography:{title:"Autobiography",template:"Welcome-auto",sign:!0},COI:{title:"COI",template:"Welcome-COI",sign:!0}};n.Auto.template=e=>!n["Non-Latin"].hide&&/[^\u0000-\u007F]/.test(e.name)?"Non-Latin":"Default"},4153(e,t,n){var s=n(8878);void 0===window.electron?(window.isElectron=!1,window.electron={mwapiLoader:async()=>{window.dispatchEvent(new CustomEvent("mwapi-loaded",{detail:{server:window.location.host,username:mw.user.getName(),pendingChangesServers:s.MediaWikiAPI.pendingChangesServers,dev:!1}}))},mwapiLoaded:e=>window.addEventListener("mwapi-loaded",t=>{const{server:n,username:s,pendingChangesServers:i,dev:a}=t.detail;e(n,s,i,a)}),mwapi:()=>Promise.reject(new Error("Not running in Electron environment")),menuEnabler:()=>{},setBadgeCount:()=>{},sendNotification:()=>{},localStorage:{get:e=>localStorage.getItem(e),set:(e,t)=>localStorage.setItem(e,t),delete:e=>localStorage.removeItem(e)},copyToClipboard:async e=>{if(navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}},log:e=>console.debug(e),info:e=>console.info(e),warn:e=>console.warn(e),error:e=>console.error(e),errorbox:(e,t)=>alert(`${e}\n\n${t}`),onOpenBrowser:()=>{},onOpenUrl:()=>{},onOpenNotification:()=>{},onOpenChangelog:()=>{},closePopup:e=>e.close(),openExternal:e=>window.open(e,"_blank"),openInBrowser:async e=>{const t=.8*window.screen.availWidth,n=.8*window.screen.availHeight,s=window.screenX+(window.outerWidth-t)/2,i=window.screenY+(window.outerHeight-n)/2,a=window.open(e,"myPopup",`width=${t},height=${n},left=${s},top=${i},resizable=false,scrollbars=true,menubar=false,toolbar=false,location=false,status=false`);return a.focus(),a.addEventListener("beforeunload",()=>{a.closed&&window.dispatchEvent(new CustomEvent("popup-closed",{detail:a}))}),a},onPopupClosed:e=>window.addEventListener("popup-closed",t=>e(t.detail)),onBeforeunload:()=>{},unloaded:()=>{},saveAccount:()=>{},disable:(e,t)=>{alert(`${e}\n\n${t}`),location.reload()}}):(window.isElectron=!0,document.querySelectorAll("[data-electron]").forEach(e=>{"false"===e.dataset.electron&&window.isElectron?e.style.display="none":"true"!==e.dataset.electron||window.isElectron||(e.style.display="none")}))},7411(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{constructor(){super(),e(this,"handleDragStart",(e,t)=>{this.draggedIndex=e,this.placeholderIndex=e,t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e),requestAnimationFrame(()=>this.updateDragState())}),e(this,"handleDragOver",(e,t)=>{if(t.preventDefault(),null===this.draggedIndex||e===this.placeholderIndex)return;const n=[...this.items],s=n[this.draggedIndex];n.splice(this.draggedIndex,1),n.splice(e,0,s),this.items=n,this.draggedIndex=e,this.placeholderIndex=e,this.render()}),e(this,"handleDragEnd",()=>{this.dispatchEvent(new CustomEvent("reorder",{detail:{keys:this.items.map(e=>e.key)},bubbles:!0})),this.draggedIndex=null,this.placeholderIndex=null,this.updateDragState()}),this.items=[],this.draggedIndex=null,this.placeholderIndex=null,this.itemWrappers=[]}connectedCallback(){this.className="draggable-order-list",this.syncItemsFromChildren()}syncItemsFromChildren(){const e=Array.from(this.children);this.items=e.map((e,t)=>({child:e,key:e.dataset.key||e.getAttribute("key")||t})),this.render()}addItem(e,t){this.items.push({child:e,key:t||this.items.length}),this.render()}clearItems(){this.items=[],this.render()}updateDragState(){const e=null!==this.draggedIndex;this.classList.toggle("is-dragging",e),this.itemWrappers.forEach((e,t)=>{e.classList.toggle("dragging",this.draggedIndex===t)})}render(){this.innerHTML="",this.itemWrappers=[],this.items.forEach((e,t)=>{const n=document.createElement("div");n.className="draggable-order-item-wrapper",n.draggable=!0,n.dataset.key=e.key,n.addEventListener("dragstart",e=>this.handleDragStart(t,e)),n.addEventListener("dragover",e=>this.handleDragOver(t,e)),n.addEventListener("dragend",this.handleDragEnd),n.appendChild(e.child),this.appendChild(n),this.itemWrappers.push(n)}),this.updateDragState()}}class n extends HTMLElement{static get observedAttributes(){return["name","enabled"]}constructor(){super(),e(this,"handleToggle",e=>{e.stopPropagation(),this._enabled=!this._enabled,this.updateEnabledState(),this.dispatchEvent(new CustomEvent("toggle",{detail:{enabled:this._enabled},bubbles:!0}))}),this._name="",this._enabled=!0}connectedCallback(){this.render()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"name":this._name=n||"",this.nameSpan&&(this.nameSpan.textContent=this._name);break;case"enabled":this._enabled="false"!==n&&"0"!==n,this.updateEnabledState()}}get name(){return this._name}set name(e){this.setAttribute("name",e)}get enabled(){return this._enabled}set enabled(e){this.setAttribute("enabled",e)}updateEnabledState(){this.classList.toggle("disabled",!this._enabled),this.toggle&&(this.toggle.title=this._enabled?"Click to disable":"Click to enable")}render(){this.className="draggable-order-item",this.innerHTML="",this.nameSpan=document.createElement("span"),this.nameSpan.className="draggable-order-item-name",this.nameSpan.textContent=this._name,this.toggle=document.createElement("div"),this.toggle.className="draggable-order-item-toggle",this.toggle.addEventListener("click",this.handleToggle),this.appendChild(this.nameSpan),this.appendChild(this.toggle),this.updateEnabledState()}}customElements.define("draggable-order-list",t),customElements.define("draggable-order-item",n)},7732(e,t,n){var s=n(3241);class i extends HTMLElement{constructor(){super(),this.duration={years:0,months:0,weeks:0,days:0,hours:0,minutes:0,seconds:0},this.isInfinite=!1}connectedCallback(){this.render(),this.attachEventListeners()}render(){this.innerHTML=`\n <label class="infinity-label">\n <span>Infinite Duration</span>\n </label>\n <div class="duration-inputs">\n ${[{key:"years",label:"Years"},{key:"months",label:"Months"},{key:"weeks",label:"Weeks"},{key:"days",label:"Days"},{key:"hours",label:"Hours"},{key:"minutes",label:"Minutes"},{key:"seconds",label:"Seconds"}].map(e=>`\n <label>\n <span>${e.label}</span>\n <input\n type="number"\n min="0"\n data-unit="${e.key}"\n value="0"\n step="1"\n placeholder="0"\n />\n </label>\n `).join("")}\n </div>\n `}attachEventListeners(){const e=this.querySelector(".infinity-label");e.addEventListener("click",()=>{this.isInfinite=!this.isInfinite,e.classList.toggle("selected",this.isInfinite),this.dispatchChangeEvent()}),this.querySelectorAll('input[type="number"]').forEach(e=>{e.addEventListener("input",e=>{const t=e.target.dataset.unit;this.duration[t]=parseInt(e.target.value,10)||0,this.dispatchChangeEvent()})})}dispatchChangeEvent(){this.dispatchEvent(new CustomEvent("change",{detail:this.getDurationString(),bubbles:!0}))}get value(){return this.getDurationString()}getDurationString(){if(this.isInfinite)return"infinite";let e="";const t={years:"Y",months:"M",weeks:"W",days:"D",hours:"H",minutes:"M",seconds:"S"};for(const[n,s]of Object.entries(this.duration))s>0&&(e+=`${s}${t[n]}`);return e||"0S"}set value(e){if("infinite"===e||"infinity"===e||"∞"===e){this.isInfinite=!0;const e=this.querySelector(".infinity-label");return void(e&&e.classList.add("selected"))}this.isInfinite=!1;const t=this.querySelector(".infinity-label");t&&t.classList.remove("selected");const n=s.expiryRegex.exec(e);if(n)for(const e of Object.keys(this.duration)){const t=n.groups[e];this.duration[e]=t?parseInt(t,10):0;const s=this.querySelector(`input[data-unit="${e}"]`);s&&(s.value=this.duration[e])}}}customElements.define("duration-input",i)},1914(e,t,n){n(7732),n(2784),n(5155),n(7411),n(1731)},5155(e,t){function n(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),t.NumericInput=void 0;class s extends HTMLElement{static get observedAttributes(){return["value","min","max","step"]}constructor(){super(),n(this,"handleMinus",()=>{const e=Number(this.inputValue),t=Math.round(100*Math.max(e-this.step,this.min))/100;this.updateValue(t)}),n(this,"handlePlus",()=>{const e=Number(this.inputValue),t=Math.round(100*Math.min(e+this.step,this.max))/100;this.updateValue(t)}),n(this,"handleInputChange",()=>{const e=this.input.value;if(isNaN(Number(e)))return void(this.input.value=this.inputValue);let t=Math.round(100*Math.min(Math.max(Number(e),this.min),this.max))/100;t=this.step>=1?Math.round(t):t,this.updateValue(t)}),n(this,"handleKeyUp",e=>{"enter"===e.key.toLowerCase()&&(this.handleInputChange(),e.target.blur())}),n(this,"handleInput",e=>{this.inputValue=e.target.value}),this.inputValue=0,this._min=-1/0,this._max=1/0,this._step=1}connectedCallback(){this.render(),this.setupEventListeners()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"value":this.inputValue=Number(n)||0,this.input&&(this.input.value=this.inputValue);break;case"min":this._min=Number(null!=n?n:-1/0);break;case"max":this._max=Number(null!=n?n:1/0);break;case"step":this._step=Number(null!=n?n:1)}}get value(){return this.inputValue}set value(e){this.setAttribute("value",e)}get min(){return this._min}get max(){return this._max}get step(){return this._step}updateValue(e){this.inputValue=e,this.input.value=e,this.dispatchEvent(new CustomEvent("change",{detail:{value:e},bubbles:!0}))}setupEventListeners(){this.minusBtn.addEventListener("click",this.handleMinus),this.plusBtn.addEventListener("click",this.handlePlus),this.input.addEventListener("input",this.handleInput),this.input.addEventListener("blur",this.handleInputChange),this.input.addEventListener("keyup",this.handleKeyUp),this.input.addEventListener("wheel",e=>{e.preventDefault(),e.deltaY<0?this.handlePlus():e.deltaY>0&&this.handleMinus()})}render(){this.className="numeric-input-container",this.minusBtn=document.createElement("span"),this.minusBtn.className="fa fa-minus numeric-input-button",this.input=document.createElement("input"),this.input.type="text",this.input.className="numeric-input",this.input.value=this.inputValue,this.input.autocomplete="off",this.plusBtn=document.createElement("span"),this.plusBtn.className="fa fa-plus numeric-input-button",this.appendChild(this.minusBtn),this.appendChild(this.input),this.appendChild(this.plusBtn)}}t.NumericInput=s,customElements.define("numeric-input",s)},2784(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{static get observedAttributes(){return["value","checked"]}constructor(){super(),e(this,"handleClick",()=>{this._value=!this._value,this.updateState(),this.dispatchEvent(new CustomEvent("change",{detail:{value:this._value,checked:this._value},bubbles:!0}))}),this._value=!1}connectedCallback(){this.render(),this.updateState()}attributeChangedCallback(e,t,n){t!==n&&("value"!==e&&"checked"!==e||(this._value="true"===n||"1"===n||""===n,this.updateState()))}get value(){return this._value}set value(e){this._value=!!e,this.setAttribute("value",this._value),this.updateState()}get checked(){return this._value}set checked(e){this.value=e}updateState(){this.classList.toggle("active",this._value)}render(){this.classList.add("settings-toggle"),this.innerHTML="";const e=document.createElement("div");e.className="toggle-switch";const t=document.createElement("div");t.className="toggle-slider",e.appendChild(t),this.appendChild(e),this.addEventListener("click",this.handleClick)}}customElements.define("toggle-input",t)},1731(){function e(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class t extends HTMLElement{static get observedAttributes(){return["title","description","value"]}constructor(){super(),e(this,"handleVolumeChange",e=>{const t=Math.max(0,Math.min(1,parseFloat(e.target.value)));this._value=t,this.slider.value=t,this.input.value=t.toFixed(2),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0}))}),this._title="",this._description="",this._value=.5,this._sound="",this._preview=null}connectedCallback(){this.render()}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case"title":this._title=n||"",this.titleEl&&(this.titleEl.textContent=this._title);break;case"description":this._description=n||"",this.descEl&&(this.descEl.textContent=this._description);break;case"value":this._value=Math.max(0,Math.min(1,parseFloat(n))),this.slider&&(this.slider.value=this._value),this.input&&(this.input.value=this._value.toFixed(2))}}get title(){return this._title}set title(e){this.setAttribute("title",e)}get value(){return this._value}set value(e){this.setAttribute("value",e)}setPreview(e,t){this._preview={audio:e,path:t},this.render()}render(){this.className="volume-control",this.innerHTML="";const e=document.createElement("div");e.className="volume-control-header";const t=document.createElement("div");if(t.className="volume-control-info",this.titleEl=document.createElement("div"),this.titleEl.className="volume-control-title",this.titleEl.textContent=this._title,this.descEl=document.createElement("div"),this.descEl.className="volume-control-desc",this.descEl.textContent=this._description,t.appendChild(this.titleEl),t.appendChild(this.descEl),e.appendChild(t),this._preview){const t=document.createElement("button");t.className="volume-control-preview",t.title="Preview sound",t.addEventListener("click",()=>{if(t.classList.contains("playing"))return;t.classList.add("playing");const e=t.querySelector("i");e&&(e.className="fa fa-stop");const n=new AbortController;t.onclick=()=>n.abort(),this._preview.audio.stopPreviews(),this._preview.audio.playSound(this._preview.path,n.signal,!0).finally(()=>{t.onclick=null,t.classList.remove("playing"),e&&(e.className="fa fa-play")})});const n=document.createElement("i");n.className="fa fa-play",t.appendChild(n),e.appendChild(t)}this.appendChild(e);const n=document.createElement("div");n.className="volume-control-slider-container",this.slider=document.createElement("input"),this.slider.type="range",this.slider.className="volume-control-slider",this.slider.min="0",this.slider.max="1",this.slider.step="0.01",this.slider.value=this._value,this.slider.autocomplete="off",this.slider.addEventListener("input",this.handleVolumeChange),n.appendChild(this.slider),this.input=document.createElement("input"),this.input.type="number",this.input.className="volume-control-input",this.input.min="0",this.input.max="1",this.input.step="0.01",this.input.value=this._value.toFixed(2),this.input.autocomplete="off",this.input.addEventListener("input",this.handleVolumeChange),n.appendChild(this.input),this.appendChild(n)}}customElements.define("volume-control",t)},8816(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.run=r,n(4153),n(1914);var s=n(7054),i=n(9501),a=n(691);function r(){addEventListener("click",()=>window.ineractedWithPage=!0,{once:!0}),addEventListener("wheel",e=>{e.target.closest(".no-scroll")||"INPUT"===e.target.tagName&&"number"===e.target.type&&(e.stopPropagation(),e.target.value=Number(e.target.value)+(e.deltaY<0?1:-1),e.target.dispatchEvent(new Event("input")))},{passive:!0}),electron.menuEnabler(),electron.mwapiLoaded(async(e,t,n,r)=>{if(i.StorageManager.okay(null,electron)){var o;document.querySelector("#rollback-needed .request-link").href=null!==(o=await fetch("https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q7765871&props=sitelinks/urls&format=json&origin=*").then(e=>e.json()).then(t=>{var n;return(null===(n=Object.values(t.entities.Q7765871.sitelinks).find(t=>t.url.startsWith(`https://${e}/wiki/`)))||void 0===n?void 0:n.url)||null}).catch(()=>null))&&void 0!==o?o:"https://www.wikidata.org/wiki/Q7765871";const i=new s.WikiShield(window.isMobile,e,t,n,r);document.body.classList.toggle("mobile",window.isMobile),electron.onOpenBrowser(()=>i.open(null,!1)),electron.onOpenUrl(e=>i.open(e,!1)),electron.onOpenNotification(e=>{const t=new URL(e);if(t.searchParams.has("markasread")){const e=i.notifications.find(null,+t.searchParams.get("markasread"));e&&i.notifications.read(e.type,e.notification)}i.open(e)}),electron.menuEnabler({browser:!0}),i.on("ready",async()=>{{const{editcount:e,registrationdate:n}=await i.api.account();(e<1e3||Date.now()-new Date(n).getTime()<6048e5)&&"LuniZunie"!==t&&(alert("WikiShield requires an account that is at least 7 days old and has at least 1,000 edits to function. Please meet these requirements and try again."),electron.isElectron?window.close():location.reload())}electron.onBeforeunload(()=>{i.backup(),electron.unloaded()}),window.addEventListener("beforeunload",()=>i.backup());const e=new a.Killswitch(i);e.on("kill",()=>{alert("WikiShield has been temporarily disabled. Please contact the development team for more information."),electron.isElectron?window.close():location.reload()}),e.on("force-update",()=>{alert("The current version of WikiShield is no longer supported. Please update to the latest version to continue using WikiShield."),electron.isElectron?window.close():location.reload()}),e.on("update",()=>{electron.sendNotification({title:"WikiShield Update",body:"A new version of WikiShield is available. Please update to the latest version for the best experience."},"")}),e.on("unsafe",()=>{alert("Could not verify the integrity of WikiShield. Make sure you are connected to the internet. If the problem persists, please contact the development team."),electron.isElectron?window.close():location.reload()}),e.on("okay",async()=>{addEventListener("keydown",e=>i.controller(e)),addEventListener("keyup",e=>i.controller(e)),await i.init()},{once:!0}),e.check().then(()=>e.monitor(1e4))},{once:!0})}else alert("An error has occurred with the WikiShield storage system that could lead to data loss. For that reason, WikiShield has been automatically disabled. Please report this immediately to the development team."),electron.isElectron?window.close():location.reload()}),electron.mwapiLoader().catch(e=>{alert(`An error occurred while loading the WikiShield API:\n\n${e.stack||e}`),electron.isElectron?window.close():location.reload()})}window.isMobile=!1,window.arePopupsBlocked=(()=>{let e;try{return e=window.open("about:blank","_blank","width=100,height=100,left=-100,top=-100"),!e||e.closed||void 0===e.closed?!0:(e.close(),!1)}catch(e){return!0}})(),window.isElectron&&r()},4784(e,t){function n(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function s(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Dialog=void 0;var i=new WeakSet;function a(e){null!=e&&e.parentElement&&(e.classList.add("hidden"),setTimeout(()=>{e.parentElement&&e.remove()},300))}async function r(){if(this.dialogs.processing||0===this.dialogs.queue.length)return;this.dialogs.processing=!0;const{fn:e,resolve:t,reject:n}=this.dialogs.queue.shift();try{this.dialogs.active=!0;const n=await e();this.dialogs.active=null,t(n)}catch(e){this.dialogs.active=null,n(e)}finally{this.dialogs.processing=!1,requestAnimationFrame(()=>s(i,this,r).call(this))}}function o(e,t=!1){return new Promise((n,a)=>{t&&this.dialogs.active?e().then(n).catch(a):(this.dialogs.queue.push({fn:e,child:t,resolve:n,reject:a}),s(i,this,r).call(this))})}function l(e,t,n="",s=""){return new Promise(i=>{const a=document.createElement("div");a.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal"),a.appendChild(r);const o=document.createElement("div");o.classList.add("confirmation-modal-header"),r.appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal-title"),l.textContent=e,o.appendChild(l);const d=document.createElement("div");d.classList.add("confirmation-modal-body"),d.innerHTML=t,r.appendChild(d);const c=document.createElement("input");c.type="text",c.classList.add("confirmation-modal-input"),c.placeholder=n,c.value=s,d.appendChild(c),c.focus(),c.select();const u=document.createElement("div");u.classList.add("confirmation-modal-footer"),r.appendChild(u);const p=document.createElement("button");p.classList.add("confirmation-modal-button","confirmation-modal-button-cancel"),p.style.setProperty("--background","211, 51, 51"),p.textContent="Cancel",u.appendChild(p);const g=document.createElement("button");g.classList.add("confirmation-modal-button","confirmation-modal-button-submit"),g.style.setProperty("--background","51, 153, 211"),g.textContent="Submit",u.appendChild(g);const h=e=>{document.removeEventListener("keydown",m,!0),a.classList.add("closing"),r.classList.add("closing"),setTimeout(()=>{a.remove(),i(e)},200)},m=e=>{if("Enter"===e.key)return e.preventDefault(),e.stopPropagation(),h(c.value),!1;if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),h(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",m,!0),p.addEventListener("click",()=>h(null)),g.addEventListener("click",()=>h(c.value)),a.addEventListener("click",e=>{e.target===a&&h(null)})})}function d(e){return new Promise(t=>{const n=e=>{document.removeEventListener("keydown",s,!0),i.classList.add("closing"),a.classList.add("closing"),setTimeout(()=>{i.remove(),t(e)},200)},s=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),n(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",s,!0);const i=document.createElement("div");i.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(i);const a=document.createElement("div");a.classList.add("confirmation-modal"),i.appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal-header"),a.appendChild(r);const o=document.createElement("div");o.classList.add("confirmation-modal-title"),o.textContent="Report to UAA",r.appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal-body"),l.innerHTML="Select reason for reporting <span class='confirmation-modal-username'></span> to UAA:",a.appendChild(l),l.querySelector(".confirmation-modal-username").textContent=e;const d=document.createElement("div");d.classList.add("confirmation-modal-footer","confirmation-modal-footer-vertical"),a.appendChild(d),["Disruptive","Offensive","Promotional","Misleading"].forEach(e=>{const t=`${e} username`,s=document.createElement("button");s.classList.add("confirmation-modal-button","confirmation-modal-button-reason"),s.textContent=t,s.addEventListener("click",()=>n(t)),d.appendChild(s)});const c=document.createElement("button");c.classList.add("confirmation-modal-button","confirmation-modal-button-cancel"),c.style.setProperty("--background","211, 51, 51"),c.textContent="Cancel",c.addEventListener("click",()=>n(null)),d.appendChild(c),i.addEventListener("click",e=>{e.target===i&&n(null)})})}function c(e,t,n=null,s=!1){return new Promise(i=>{const a=e=>{document.removeEventListener("keydown",r,!0),o.classList.add("closing"),l.classList.add("closing"),setTimeout(()=>{o.remove(),i(e)},200)},r=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),a(null),!1;if("Tab"!==e.key){if("INPUT"===e.target.tagName)return;return e.preventDefault(),e.stopPropagation(),!1}};document.addEventListener("keydown",r,!0);const o=document.createElement("div");o.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(o);const l=document.createElement("div");l.classList.add("confirmation-modal"),o.appendChild(l);const d=document.createElement("div");d.classList.add("confirmation-modal-header"),l.appendChild(d);const c=document.createElement("div");c.classList.add("confirmation-modal-title"),c.textContent=e,d.appendChild(c);const u=document.createElement("div");u.classList.add("confirmation-modal-body"),u.innerHTML=t,l.appendChild(u);const p=document.createElement("div");if(p.classList.add("confirmation-modal-footer"),l.appendChild(p),n&&!s){const s=document.createElement("button");s.classList.add("confirmation-modal-button","confirmation-modal-button-uaa"),s.style.setProperty("--background","211, 51, 51"),s.textContent="Report to UAA",p.appendChild(s),s.addEventListener("click",()=>{document.removeEventListener("keydown",r,!0),o.classList.add("closing"),l.classList.add("closing"),setTimeout(async()=>{o.remove();const s=await this.UAA(n,!0);s?this.ws.execute({name:"reportToUAA",params:{reportMessage:s}},void 0,void 0,{user:{name:n}}):i(await this.confirm(e,t,n,!1,!0))},200)})}const g=document.createElement("div");g.classList.add("confirmation-modal-footer-right"),p.appendChild(g);const h=document.createElement("button");h.classList.add("confirmation-modal-button","confirmation-modal-button-no"),h.textContent="No",h.addEventListener("click",()=>a(!1)),g.appendChild(h);const m=document.createElement("button");m.classList.add("confirmation-modal-button","confirmation-modal-button-yes"),m.style.setProperty("--background","51, 102, 204"),m.textContent="Yes",m.addEventListener("click",()=>a(!0)),g.appendChild(m),o.addEventListener("click",e=>{e.target===o&&a(null)}),requestAnimationFrame(()=>m.focus())})}function u(e,t){return new Promise(async n=>{const s=document.createElement("div");s.classList.add("confirmation-modal-overlay"),document.body.querySelector("#app").appendChild(s);const i=document.createElement("div");i.classList.add("confirmation-modal"),s.appendChild(i);const a=document.createElement("div");a.classList.add("confirmation-modal-header"),a.textContent=e,i.appendChild(a);const r=document.createElement("div");r.classList.add("confirmation-modal-body"),r.innerHTML='<div class="dialog-loading">\n <div class="dialog-spinner"></div>\n <div class="dialog-loading-text">Loading...</div>\n </div>',i.appendChild(r);const o=()=>{document.removeEventListener("keydown",l,!0),s.classList.add("closing"),i.classList.add("closing"),setTimeout(()=>{s.remove(),n()},200)},l=e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),o(),!1};document.addEventListener("keydown",l,!0),s.addEventListener("click",e=>{e.target===s&&o()}),t instanceof Promise?t.then(e=>{r&&(r.innerHTML=e)}).catch(()=>{r&&(r.innerHTML="Failed to load content")}):r.innerHTML=t})}t.Dialog=class{constructor(e){n(this,i),this.ws=e,this.dialogs={processing:!1,active:null,queue:[]},this.popups=[],addEventListener("focus",()=>{this.popups.length>0&&(this.popups.forEach(e=>electron.closePopup(e)),this.popups=[],requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())}))}),electron.onPopupClosed(e=>{const t=this.popups.indexOf(e);-1!==t&&this.popups.splice(t,1),0===this.popups.length&&requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())})})}controller(e){}check(){if(0===this.popups.length)return requestAnimationFrame(()=>{var e;0===this.popups.length&&(null===(e=document.querySelector("#popup-blocker"))||void 0===e||e.remove())});requestAnimationFrame(()=>this.check())}toast(e,t,n="default",r=5e3){const o=this.ws.store.settings.zen_mode;if(o.enabled&&!o.toasts.enabled)return!1;const l=document.createElement("div");l.classList.add("toast-alert",n);const d=document.createElement("div");d.classList.add("toast-icon"),l.appendChild(d);const c=document.createElement("i");switch(c.classList.add("fa"),d.appendChild(c),n){case"success":c.classList.add("fa-check");break;case"warning":c.classList.add("fa-exclamation-triangle");break;case"error":c.classList.add("fa-xmark");break;default:c.classList.add("fa-info-circle")}const u=document.createElement("div");u.classList.add("toast-content"),l.appendChild(u);const p=document.createElement("div");p.classList.add("toast-title"),p.textContent=e,u.appendChild(p);const g=document.createElement("div");g.classList.add("toast-message"),g.textContent=t,u.appendChild(g);const h=document.createElement("div");h.classList.add("toast-close"),h.addEventListener("click",()=>{s(i,this,a).call(this,l)}),l.appendChild(h);const m=document.createElement("i");return m.classList.add("fa","fa-xmark"),h.appendChild(m),document.body.querySelector("#app").appendChild(l),setTimeout(()=>{this.ws.audio.playSound(["notification","toast"]),l.classList.add("show")},10),r>0&&setTimeout(()=>s(i,this,a).call(this,l),r),!0}input(e,t,n="",a="",r=!1){return s(i,this,o).call(this,()=>s(i,this,l).call(this,e,t,n,a),r)}UAA(e,t=!1){return s(i,this,o).call(this,()=>s(i,this,d).call(this,e),t)}confirm(e,t,n=null,a=!1,r=!1){return s(i,this,o).call(this,()=>s(i,this,c).call(this,e,t,n,a),r)}show(e,t){return s(i,this,o).call(this,()=>s(i,this,u).call(this,e,t))}}},8469(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.GUI=void 0;var s=n(4192),i=n(4041),a=n(7054),r=n(2069),o=n(4784),l=n(8921),d=n(9117),c=n(372),u=n(955),p=n(7698);function g(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function h(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e,t){return e.get(v(e,t))}function v(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var f=new WeakMap,b=new WeakSet;class w{constructor(e){var t,n;g(t=this,n=b),n.add(t),function(e,t,n){g(e,t),t.set(e,n)}(this,f,{$pc:void 0,$bottom:void 0,$diff:void 0,top:null,left:null,margin:null}),this.ws=e,this.dialog=new o.Dialog(this.ws),this.events=new l.EventManager(this.ws),this.settings=new d.Settings(this.ws),this.intervals={DEFCON:null,outdated:null},this.controllers={current:null}}async build(){this.updateDEFCON(),document.documentElement.style.colorScheme={light:"only light",auto:"light dark",dark:"only dark"}[this.ws.store.UI.theme.app]||"light dark";const e={code:["ArrowUp","ArrowUp","ArrowDown","ArrowDown","ArrowLeft","ArrowRight","ArrowLeft","ArrowRight","b","a"],index:0,function:t=>{t.key!==e.code[e.index]?e.index=t.key===e.code[0]?1:0:++e.index===e.code.length&&(e.index=0,this.ws.open("https://ws.luni.me/konami-easter-egg","force"))}};addEventListener("keydown",e.function),this.updateAccessibility(),document.querySelector("#initial").classList.remove("hidden"),document.querySelectorAll(".VERSION").forEach(e=>e.textContent=a.WikiShield.config.version),Math.random()<.01&&(document.querySelector("#wikishield-sikiwhield").textContent="SikiWhield");const t=new AbortController;let n;const s=new Promise(e=>n=e);let i;this.ws.audio.playSound(["startup"],t.signal,!1,()=>n()),await s;const r=this.ws.store.settings.performance.startup;if("always_off"!==r){const e=document.getElementById("dots-canvas"),t=e.getContext("2d"),n=Math.min(devicePixelRatio||1,2);class s{constructor(){h(this,"radius",2),this.x=Math.random()*e.width,this.y=Math.random()*e.height,this.vx=.5*(Math.random()-.5),this.vy=.5*(Math.random()-.5),this.color=s.colors[Math.random()*s.colors.length|0],this.fill=`rgba(${this.color}, 0.8)`,this.shadow=`rgba(${this.color}, 0.8)`}update(){this.x+=this.vx,this.y+=this.vy,this.x<0?this.x=e.width:this.x>e.width&&(this.x=0),this.y<0?this.y=e.height:this.y>e.height&&(this.y=0)}draw(){t.beginPath(),t.arc(this.x,this.y,this.radius,0,2*Math.PI),t.fillStyle=this.fill,t.fill()}}h(s,"dots",[]),h(s,"target",0),h(s,"colors",["102, 126, 234","240, 147, 251","118, 75, 162","217, 70, 239"]);let a=null;const o=()=>{a||(a=requestAnimationFrame(()=>{a=null;const i=e.width,r=e.height;e.width=Math.floor(innerWidth*n),e.height=Math.floor(innerHeight*n),e.style.width=`${innerWidth}px`,e.style.height=`${innerHeight}px`,t.setTransform(1,0,0,1,0,0),t.scale(n,n);const o=e.width/(i||e.width),l=e.height/(r||e.height);if(s.dots.forEach(e=>{e.x*=o,e.y*=l}),s.target=Math.floor(innerWidth*innerHeight/7e3),s.target=Math.max(40,Math.min(250,s.target)),s.target>s.dots.length)for(let e=s.dots.length;e<s.target;e++)s.dots.push(new s);else s.target<s.dots.length&&(s.dots.length=s.target)}))};o(),addEventListener("resize",o);const l=160,d=30,c=500;let u=null,p=performance.now();const g=new Array(15).fill(1e3/60),m=()=>{{const n=performance.now(),a=n-p;p=n,g.shift(),g.push(a);const o=[...g].sort((e,t)=>e-t).slice(2,-2),l=1e3/(o.reduce((e,t)=>e+t,0)/o.length);if("adaptive"===r){if(l<d){if(null===u&&(u=n),n-u>=c)return i&&cancelAnimationFrame(i),i=null,void t.clearRect(0,0,e.width,e.height)}else u=null;l<45&&s.dots.length>60&&(s.dots.length=Math.max(60,Math.floor(.9*s.dots.length)),s.target=s.dots.length)}}t.clearRect(0,0,e.width,e.height),s.dots.forEach(e=>{e.update(),e.draw()});const n=Math.ceil(innerWidth/l),a=Math.ceil(innerHeight/l),o=new Array(n*a);for(let e=0;e<o.length;e++)o[e]=[];s.dots.forEach((e,t)=>{const s=Math.max(0,Math.min(n-1,Math.floor(e.x/l))),i=Math.max(0,Math.min(a-1,Math.floor(e.y/l)));o[i*n+s].push(t)});const h=innerWidth/2,v=innerHeight/2,f=(e,n,s,i,a)=>{const r=[0];Math.max(e,s)>innerWidth&&r.push(-innerWidth),Math.min(e,s)<0&&r.push(innerWidth);const o=[0];Math.max(n,i)>innerHeight&&o.push(-innerHeight),Math.min(n,i)<0&&o.push(innerHeight),t.lineWidth=1,t.strokeStyle=a;for(const a of r)for(const r of o)t.beginPath(),t.moveTo(e+a,n+r),t.lineTo(s+a,i+r),t.stroke()};for(let e=0;e<a;e++)for(let t=0;t<n;t++){const i=o[e*n+t];if(0!==i.length)for(let r=-1;r<=1;r++){const l=(e+r+a)%a;for(let e=-1;e<=1;e++){const a=o[l*n+(t+e+n)%n];if(0!==a.length)for(let e=0;e<i.length;e++){const t=s.dots[i[e]];for(let n=0;n<a.length;n++){const r=a[n];if(r<=i[e])continue;const o=s.dots[r];let l=t.x-o.x,d=t.y-o.y;l>h&&(l-=innerWidth),l<-h&&(l+=innerWidth),d>v&&(d-=innerHeight),d<-v&&(d+=innerHeight);const c=l*l+d*d;if(c<22500){const e=.4*(1-Math.sqrt(c)/150),n=t.color.split(","),s=o.color.split(","),i=(parseInt(n[0])+parseInt(s[0]))/2,a=(parseInt(n[1])+parseInt(s[1]))/2,r=(parseInt(n[2])+parseInt(s[2]))/2;f(t.x,t.y,t.x-l,t.y-d,`rgba(${i}, ${a}, ${r}, ${e})`)}}}}}}i=requestAnimationFrame(m)};m()}this.ws.rights.rollback||"LuniZunie"===this.ws.api.username?(document.querySelector("#rollback-needed").classList.add("hidden"),document.querySelector("#start-button").classList.remove("hidden")):(document.querySelector("#rollback-needed").classList.remove("hidden"),document.querySelector("#start-button").classList.add("hidden")),document.querySelector("#start-button").addEventListener("click",()=>{window.removeEventListener("keydown",e.function),t.abort(),this.ws.audio.playSound(["ui","click"]),i&&cancelAnimationFrame(i),this.ws.start()}),window.addEventListener("click",e=>{[...document.querySelectorAll(".tooltip.buttons")].forEach(e=>e.remove());const t=e.target.closest("[href]");if(t){const n=new URL(t.href,location.href);if(n.origin===location.origin&&n.pathname===location.pathname)return;if(t.dataset.multipleHrefs)try{const[e,n=""]=t.dataset.multipleHrefs.split(";"),s=Object.fromEntries(n.split("&").map(e=>{const[t,n]=e.split("=");return[t,decodeURIComponent(n)]}));switch(e){case"page":{const e=s.title,n=+s.id;this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Revision",i.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:Permalink/${n}`),e.altKey),t.remove()}),t.appendChild(i);const a=document.createElement("div");a.classList.add("button"),a.innerText="Diff",a.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:Diff/${n}`),e.altKey),t.remove()}),t.appendChild(a)})}break;case"page-abuse":{const e=s.title,n=+s.id;this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Details",i.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:AbuseLog/${n}`),e.altKey),t.remove()}),t.appendChild(i);const a=document.createElement("div");a.classList.add("button"),a.innerText="Examine",a.addEventListener("click",e=>{this.ws.open(this.ws.page(`Special:AbuseFilter/examine/log/${n}`),e.altKey),t.remove()}),t.appendChild(a)})}break;case"log":{const e=s.title,n=JSON.parse(s.log);this.createTooltip(t,"buttons",null,null,null,t=>{const s=document.createElement("div");s.classList.add("button"),s.innerText="Page",s.addEventListener("click",n=>{this.ws.open(this.ws.page(e),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="Log",i.addEventListener("click",s=>{const i=this.ws.page(`Special:Log/${encodeURIComponent(n.user)}?page=${encodeURIComponent(e)}&type=${n.type}&wptime=${n.timestamp}&limit=1`,!1,!1),a=this.ws.open(i,s.altKey);t.remove(),a.addEventListener("load",()=>{a.scroll({behavior:"smooth",top:a.document.body.scrollHeight})},{once:!0})}),t.appendChild(i)})}break;case"user":{const e=s.name;this.createTooltip(t,"buttons",null,null,null,t=>{const n=document.createElement("div");n.classList.add("button"),n.innerText="User talk",n.addEventListener("click",n=>{this.ws.open(this.ws.page(`User talk:${e}`),n.altKey),t.remove()}),t.appendChild(n);const s=document.createElement("div");s.classList.add("button"),s.innerText="User contribs",s.addEventListener("click",n=>{this.ws.open(this.ws.page(`Special:Contribs/${e}`),n.altKey),t.remove()}),t.appendChild(s);const i=document.createElement("div");i.classList.add("button"),i.innerText="User page",i.addEventListener("click",n=>{this.ws.open(this.ws.page(`User:${e}`),n.altKey),t.remove()}),t.appendChild(i)})}break;case"email":this.createTooltip(t,"buttons",null,null,null,e=>{const t=document.createElement("div");t.classList.add("button"),t.innerText="Emergency",t.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Emergency"),t.altKey),e.remove()}),e.appendChild(t);const n=document.createElement("div");n.classList.add("button"),n.innerText="ArbCom",n.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Arbitration Committee"),t.altKey),e.remove()}),e.appendChild(n);const s=document.createElement("div");s.classList.add("button"),s.innerText="Oversight",s.addEventListener("click",t=>{this.ws.open(this.ws.page("Special:EmailUser/Oversight"),t.altKey),e.remove()}),e.appendChild(s)})}}catch(n){this.ws.open(t.getAttribute("href"),e.altKey)}finally{e.preventDefault()}else this.ws.open(t.getAttribute("href"),e.altKey);e.preventDefault()}}),document.querySelector("#loading").classList.add("hidden")}async start(){this.intervals.DEFCON=setInterval(this.updateDEFCON.bind(this),6e4),document.querySelector("#DEFCON").addEventListener("click",e=>{this.ws.open("https://en.wikipedia.org/w/index.php?tagfilter=mw-manual-revert%7Cmw-rollback%7Cmw-undo&title=Special%3ARecentChanges&urlversion=2",e.altKey)}),this.settings.start(),document.querySelector("#app").classList.remove("hidden"),document.querySelector("#initial").classList.add("hidden"),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation();const n=e.closest(".bottom-tool-item"),s=document.querySelector(`#${n.dataset.menu}-menu`),i=s.classList.contains("show");switch(n.dataset.menu){case"revert":s.innerHTML="",this.createWarnMenu("reverts",s,this.ws.queue.current.item);break;case"warn":s.innerHTML="",this.createWarnMenu("warnings",s,this.ws.queue.current.item);break;case"page":{var a;const e=this.ws.queue.current.item,t=!0===(null==e||null===(a=e.page)||void 0===a?void 0:a.watched);document.querySelector("#page-watch").classList.toggle("hidden",t),document.querySelector("#page-unwatch").classList.toggle("hidden",!t)}}this.closeMenus(),i||(s.classList.add("show"),e.classList.add("active"),this.positionBottomMenu(n,s))})}),document.querySelectorAll(".submenu-trigger").forEach(e=>{let t=(0,s.generateRandomUUID)();e.addEventListener("mouseenter",()=>{t=null;const n=e.closest(".bottom-tool-menu");n&&n.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show"));const s=e.querySelector(".submenu");s&&(this.events.submenu(s,s.dataset.eventName),s.classList.add("show"),this.positionSubmenu(s,e))}),e.addEventListener("mouseleave",()=>{const n=(0,s.generateRandomUUID)();t=n,setTimeout(()=>{if(t!==n)return;const s=e.querySelector(".submenu");s&&s.classList.remove("show")},500)})}),document.querySelectorAll(".menu-option:not(.submenu-trigger)").forEach(e=>{e.addEventListener("click",()=>this.closeMenus())}),document.querySelectorAll(".submenu").forEach(e=>{e.addEventListener("click",e=>e.stopPropagation())}),document.querySelectorAll("#queue-tabs > .queue-tab").forEach(e=>this.addTooltipListener(e));{const e=["alert","message"];e.forEach(e=>{const t=document.querySelector(`#${e}s-icon`);this.addTooltipListener(t),t.addEventListener("click",()=>{const t=document.querySelector(`#${e}s-panel`);t.classList.toggle("show"),t.classList.contains("show")&&this.ws.notifications.seen(e)}),document.querySelector(`#mark-all-${e}s-read`).addEventListener("click",t=>{this.ws.notifications.read(e)})}),document.addEventListener("click",t=>{for(const n of e){const e=document.querySelector(`#${n}s-panel`),s=document.querySelector(`#${n}s-icon`);null!=e&&e.contains(t.target)||null!=s&&s.contains(t.target)||null==e||e.classList.remove("show")}t.target.closest(".bottom-tool-menu")||t.target.closest(".confirmation-modal-overlay")||this.closeMenus()})}const e=document.querySelector("#latest-edits-tab");e.addEventListener("click",()=>this.updateDiffDisplay(this.ws.queue.current.item,!1)),this.addTooltipListener(e);const t=document.querySelector("#consecutive-edits-tab");t.addEventListener("click",()=>this.updateDiffDisplay(this.ws.queue.current.item,!0)),this.addTooltipListener(t),document.querySelector("#pending-changes-container > .accept").addEventListener("click",async e=>{await this.ws.gui.settings.waitForClose();const t=await this.dialog.input("Accept Pending Changes","Enter an optional edit summary for accepting this change:","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"next-item",params:{}},{name:"accept-pending-edit",params:{summary:t}}]})}),document.querySelector("#pending-changes-container > .reject").addEventListener("click",async e=>{await this.ws.gui.settings.waitForClose();const t=await this.dialog.input("Reject Pending Changes","Enter an optional edit summary for rejecting this change:","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"next-item",params:{}},{name:"reject-pending-edit",params:{summary:t}}]})}),document.querySelectorAll("#bottom-tools [data-tooltip]").forEach(e=>this.addTooltipListener(e));{const e=document.querySelector("#queue");{const t=this.ws.store.UI.queue.width;t&&(e.style.width=t,document.querySelector("#right-container").style.width=`calc(100% - ${t})`)}const t=document.querySelector("#right-details");{const e=this.ws.store.UI.details.width;e&&(t.style.width=e,document.querySelector("#main-container").style.width=`calc(100% - ${e})`)}const n={active:null,section:null,x:null,width:null,windowWidth:null},s=(e,t,s)=>{s.preventDefault(),n.active=e,n.section=t,n.x=s.clientX,n.width=t.getBoundingClientRect().width,n.windowWidth=innerWidth},i=document.querySelector("#queue-width-adjust");i.addEventListener("pointerdown",t=>s(i,e,t));const a=document.querySelector("#details-width-adjust");a.addEventListener("pointerdown",e=>s(a,t,e)),addEventListener("pointerup",()=>{n.active===i?this.ws.store.UI.queue.width=e.style.width:n.active===a&&(this.ws.store.UI.details.width=t.style.width),n.active=null,n.section=null}),addEventListener("pointermove",e=>{if(!n.active)return;const t=e.clientX-n.x;let s;n.active===i?s=n.width+t:n.active===a&&(s=n.width-t);const r=.1*n.windowWidth,o=.3*n.windowWidth;s=Math.max(r,Math.min(o,s));const l=s/n.windowWidth*100;n.section.style.width=`${l}vw`,n.active===i?document.querySelector("#right-container").style.width=`calc(100% - ${l}vw)`:n.active===a&&(document.querySelector("#main-container").style.width=`calc(100% - ${l}vw)`)})}const n=a.WikiShield.config.changelog.version;var i,r;(n.endsWith("!")||n!==this.ws.store.changelog)&&(this.ws.store.changelog=n.replace(/!$/,""),null===(i=(r=electron).open)||void 0===i||i.call(r,"changelog"));this.addTooltipListener(document.querySelector("#settings-icon")),document.querySelectorAll("#queue-top-right > span").forEach(e=>this.addTooltipListener(e)),this.updateZenMode(),this.reorderQueues(),this.newCurrentItem(null),document.querySelector("#settings-icon").addEventListener("click",()=>{this.settings.open()}),this.events.button(document.querySelector("#clear-queue"),"clear-queue"),this.events.button(document.querySelector("#previous-item-button"),"previous-item"),this.events.button(document.querySelector("#next-item-button"),"next-item"),this.events.button(document.querySelector("#user-open-user-page"),"open-user-page"),this.events.button(document.querySelector("#user-open-user-talk"),"open-user-talk"),this.events.button(document.querySelector("#user-view-contribs"),"open-user-contributions"),this.events.button(document.querySelector("#user-view-filter-log"),"open-filter-log"),this.events.button(document.querySelector("#user-whitelist"),"whitelist-user"),this.events.button(document.querySelector("#user-unwhitelist"),"unwhitelist-user"),this.events.button(document.querySelector("#user-highlight"),"highlight-user"),this.events.button(document.querySelector("#user-unhighlight"),"unhighlight-user"),this.events.submenu(document.querySelector("#user-welcome .submenu"),"welcome-user"),this.events.submenu(document.querySelector("#user-report-aiv .submenu"),"report-user-to-aiv"),this.events.submenu(document.querySelector("#user-report-uaa .submenu"),"report-user-to-uaa"),this.events.submenu(document.querySelector("#user-request-global-block .submenu"),"request-global-block"),this.events.submenu(document.querySelector("#user-request-global-lock .submenu"),"request-global-lock"),this.events.submenu(document.querySelector("#user-new-talk-topic .submenu"),"send-message-to-user-talk"),this.events.button(document.querySelector("#page-open-page"),"open-page"),this.events.button(document.querySelector("#page-open-talk"),"open-page-talk"),this.events.button(document.querySelector("#page-watch"),"watch-page"),this.events.button(document.querySelector("#page-unwatch"),"unwatch-page"),this.events.button(document.querySelector("#page-whitelist"),"whitelist-page"),this.events.button(document.querySelector("#page-unwhitelist"),"unwhitelist-page"),this.events.button(document.querySelector("#page-highlight"),"highlight-page"),this.events.button(document.querySelector("#page-unhighlight"),"unhighlight-page"),this.events.submenu(document.querySelector("#page-request-protection .submenu"),"request-page-protection"),this.events.button(document.querySelector("#page-view-history"),"open-page-history"),this.events.submenu(document.querySelector("#page-new-talk-topic .submenu"),"send-message-to-page-talk"),this.events.button(document.querySelector("#edit-view-revision"),"open-revision"),this.events.button(document.querySelector("#edit-view-diff"),"open-diff"),this.events.button(document.querySelector("#edit-thank-user"),"thank-user"),this.events.submenu(document.querySelector("#edit-rollback .submenu"),"rollback-edit"),this.events.submenu(document.querySelector("#edit-rollback-goodfaith .submenu"),"rollback-goodfaith-edit"),this.events.submenu(document.querySelector("#edit-undo .submenu"),"undo-edit"),this.events.button(document.querySelector("#copy-link"),"copy-link"),this.events.button(document.querySelector("#refresh-user-contributions"),"refresh-user-contributions"),this.events.button(document.querySelector("#user-contributions > .footer"),"open-user-contributions"),this.events.button(document.querySelector("#refresh-page-history"),"refresh-page-history"),this.events.button(document.querySelector("#page-history > .footer"),"open-page-history"),c.Queue.types.forEach(e=>{this.events.button(document.querySelector(`#queue-tab-${e}`),`switch-to-${e}-queue`)}),this.cache(),this.animation(),this.update(),this.renderQueue(),electron.menuEnabler({browser:!0,settings:{preferences:!0},help:{changelog:!0}})}cache(){m(f,this).$pc=document.querySelector("#pending-changes-container"),m(f,this).$bottom=document.querySelector("#bottom-tools"),m(f,this).$diff=document.querySelector("#diff-container > table")}animation(){try{var e,t;const s=m(f,this);if(null!==(e=s.$pc)&&void 0!==e&&e.isConnected||(s.$pc=document.querySelector("#pending-changes-container")),null!==(t=s.$bottom)&&void 0!==t&&t.isConnected||(s.$bottom=document.querySelector("#bottom-tools")),s.$pc&&s.$bottom){var n;const e=s.$bottom.getBoundingClientRect(),t=e.top-s.$pc.offsetHeight,i=(e.left+e.right)/2;if(s.top!==t&&(s.$pc.style.top=`${t}px`,s.top=t),s.left!==i&&(s.$pc.style.left=`${i}px`,s.left=i),null!==(n=s.$diff)&&void 0!==n&&n.isConnected||(s.$diff=document.querySelector("#diff-container > table")),s.$diff){const t=window.innerHeight-e.top;s.marginBottom!==t&&(s.$diff.style.marginBottom=`${t}px`,s.marginBottom=t)}}}catch(e){console.error("Error in animation loop:",e)}requestAnimationFrame(()=>this.animation())}update(){try{const e=new Date;document.querySelectorAll("[data-time]").forEach(t=>{const n=new Date(t.dataset.time);switch(t.dataset.timeFormat){case"notification":t.textContent=this.ws.util.formatNotificationTime(n,"timeNow"in t.dataset?new Date(t.dataset.timeNow):e)+(t.dataset.timePostfix||"");break;case"duration":t.textContent=this.ws.util.formatDuration(n,"timeNow"in t.dataset?new Date(t.dataset.timeNow):e)+(t.dataset.timePostfix||"")}})}catch(e){console.error("Error updating time elements:",e)}setTimeout(()=>this.update(),1e3)}async updateDEFCON(){var e;const t=await this.ws.getDEFCON(),n=document.querySelector("#DEFCON");n.title=`DEFCON-${null!==t.level?t.level:"N/A"} (${t.info?`${t.info} revert${1===+t.info?"":"s"} per minute`:"No data"})`;const s=n.querySelector(".dot");s.className="dot",null!==t.level&&s.classList.add(`DEFCON-${t.level}`),document.querySelector(".DEFCON-RPM").textContent=null!==(e=t.info)&&void 0!==e?e:"N/A"}generateItemHTML(e,t=!1){const n=this.getORESColor(e.ores),s="sizediff"in e?this.ws.util.getChangeColor(e.sizediff):void 0,a=(0,i.CreateDOMElement)("div");{const t=(0,i.CreateDOMElement)("div",{class:"item-color",style:{"--ores-color":n},dataset:{ores:e.ores}});a.appendChild(t)}{var r,o,l;const t=(0,i.CreateDOMElement)("div",{class:"item-body",style:{"--ores-color":n,"--diff-color":s},datset:{ores:e.ores}});a.appendChild(t);{const n=(0,i.CreateDOMElement)("div",{class:"header"});t.appendChild(n);{const t=this.ws.store.highlight.pages.has(e.page.title),s=(0,i.CreateDOMElement)("span",{class:"page-title"+(t?" highlighted":""),content:e.page.title,dataset:t?{tooltip:"Page is highlighted",tooltipDelay:500}:{}});this.addTooltipListener(s),n.appendChild(s);const a=(0,i.CreateDOMElement)("i",{class:"fas fa-file-lines"});s.prepend(a)}{const t=(0,i.CreateDOMElement)("span",{class:"timestamp"});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-clock",style:{"font-size":"11px"}});t.appendChild(s);const a=(0,i.CreateDOMElement)("span",{content:this.ws.util.formatNotificationTime(new Date(e.timestamp)),dataset:{tooltip:new Date(e.timestamp).toLocaleString(),tooltipDelay:500,time:e.timestamp,timeFormat:"notification"}});this.addTooltipListener(a),t.appendChild(a)}}{var d;const n=(0,i.CreateDOMElement)("div",{class:"meta"});t.appendChild(n);const s=null!==(d=e.performer)&&void 0!==d?d:e.user;{const t=s.blocked,a=this.ws.util.expiryToDate(null==t?void 0:t.expiry),r=this.ws.store.highlight.users.has(s.name),o=void 0===s.talk,l=(0,i.CreateDOMElement)("span",{class:"user-chip"+(!1===(null==t?void 0:t.partial)?" blocked":"")+(r?" highlighted":"")+(o?" empty-talk":""),content:e.user.name,dataset:!1===(null==t?void 0:t.partial)?{tooltip:`Blocked ${a===1/0?"indefinitely":`until ${a.toLocaleString()}`} (${t.reason})`,tooltipDelay:500}:r?{tooltip:"User is highlighted",tooltipDelay:500}:o?{tooltip:"User has an empty talk page",tooltipDelay:500}:{}});this.addTooltipListener(l),n.appendChild(l);const d=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(s.anon?"user-secret":"user"),style:{"font-size":"11px"}});l.prepend(d)}{const t=(0,i.CreateDOMElement)("div",{class:"chips"});if(n.appendChild(t),"abuselog"===e.type){const n=["disallow","warn","showcaptcha","tag","none"],s=n.length;let a=s-1;for(let t=0;t<s;t++)if(e.origin.result.has(n[t])){a=t;break}const r=(0,i.CreateDOMElement)("span",{class:"ores-chip",dataset:{tooltip:`Action taken: ${n[a]}`,tooltipDelay:500}});this.addTooltipListener(r),t.appendChild(r);const o=(0,i.CreateDOMElement)("i",{class:`fas fa-${["ban","exclamation-triangle","robot","tag","check"][a]}`,style:{"font-size":"11px"}});r.prepend(o)}else{const n=(0,i.CreateDOMElement)("span",{class:"ores-chip",content:Number.isNaN(e.ores)?"-":Math.round(100*e.ores),dataset:{tooltip:"Score",tooltipDelay:500}});this.addTooltipListener(n),t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-fire",style:{"font-size":"11px"}});n.prepend(s)}{const n=(0,i.CreateDOMElement)("div",{class:"diff-chips"});if(t.appendChild(n),e.minor){const e=(0,i.CreateDOMElement)("span",{class:"minor-chip",dataset:{tooltip:"Minor edit",tooltipDelay:500}});this.addTooltipListener(e),n.appendChild(e);const t=(0,i.CreateDOMElement)("i",{class:"fas fa-m",style:{"font-size":"11px"}});e.appendChild(t)}if("sizediff"in e){const t=(0,i.CreateDOMElement)("span",{class:"diff-chip",content:Math.abs(e.sizediff).toLocaleString(),dataset:{tooltip:"Size difference",tooltipDelay:500}});if(this.addTooltipListener(t),n.appendChild(t),0!==e.sizediff){const n=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.sizediff>0?"plus":"minus"),style:{"font-size":"11px"}});t.prepend(n)}}}}}if(e.has_comment){const n=(0,i.CreateDOMElement)("div",{class:"item-comment"});t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"11px"}});n.appendChild(s);const a=(0,i.CreateDOMElement)("span",{class:"text",html:e.comment,dataset:{tooltip:e.comment,tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(a),n.appendChild(a)}const c=null!==(r=null!==(o=e.tags)&&void 0!==o?o:null===(l=e.filters)||void 0===l?void 0:l.map(e=>`${e.filter} (${"-1"===e.id?"private":e.id})`))&&void 0!==r?r:[];if(c.length>0){const e=(0,i.CreateDOMElement)("div",{class:"item-tags"});t.appendChild(e),c.forEach(t=>{const n=(0,i.CreateDOMElement)("span",{class:"tag",content:t});e.appendChild(n)})}}if(t){const e=(0,i.CreateDOMElement)("div",{class:"remove-button"});a.appendChild(e);const t=(0,i.CreateDOMElement)("i",{class:"fas fa-xmark"});e.appendChild(t)}return a.innerHTML}generateEditDetails(e,t=!1){if(!e)return void(document.querySelector("#edit-details").innerHTML="<div class='central'>Nothing selected</div>");const n="edit"===c.Queue.groups[e.type]?this.ws.queue.pending.get(e.id):null,s=document.querySelector("#edit-details");s.style.setProperty("--diff-color","sizediff"in e?this.ws.util.getChangeColor(e.sizediff):void 0),s.innerHTML="";{const t=(0,i.CreateDOMElement)("div",{class:"header"});s.appendChild(t);{const n=this.ws.store.highlight.pages.has(e.page.title),s=(0,i.CreateDOMElement)("span",{class:"page-title"+(n?" highlighted":""),dataset:n?{tooltip:"Page is highlighted",tooltipDelay:500}:{}});this.addTooltipListener(s),t.appendChild(s);const a=(0,i.CreateDOMElement)("i",{class:"fas fa-file-lines"});let r;switch(s.appendChild(a),c.Queue.groups[e.type]){case"edit":r="page";break;case"logevent":r="log";break;case"abuselog":r="page-abuse"}const o=(0,i.CreateDOMElement)("a",{content:e.page.title,dataset:{multipleHrefs:`${r};title=${encodeURIComponent(e.page.title)}&${"log"===r?`log=${JSON.stringify(e)}`:`id=${e.id}`}`,tooltip:e.page.title,tooltipDelay:500},attributes:{href:this.ws.page(e.page.title)}});this.addTooltipListener(o),s.appendChild(o)}{var a;const s=(0,i.CreateDOMElement)("div",{class:"meta"});t.appendChild(s);const l=null!==(a=e.performer)&&void 0!==a?a:e.user;{var o;const e=Object.keys(null!==(o=null==n?void 0:n.users)&&void 0!==o?o:{}).filter(e=>e!==l.name),t=l.blocked,a=this.ws.util.expiryToDate(null==t?void 0:t.expiry),d=this.ws.store.highlight.users.has(l.name),c=void 0===l.talk,u=(0,i.CreateDOMElement)("span",{class:"user-chip"+(!1===(null==t?void 0:t.partial)?" blocked":"")+(d?" highlighted":"")+(c?" empty-talk":""),dataset:!1===(null==t?void 0:t.partial)?{tooltip:`Blocked ${a===1/0?"indefinitely":`until ${a.toLocaleString()}`} (${t.reason})`,tooltipDelay:500}:d?{tooltip:"User is highlighted",tooltipDelay:500}:c?{tooltip:"User has an empty talk page",tooltipDelay:500}:{}});this.addTooltipListener(u),s.appendChild(u);const p=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.length>0?"users":l.anon?"user-secret":"user")});u.appendChild(p);const g=(0,i.CreateDOMElement)("a",{content:l.name,dataset:{multipleHrefs:`user;name=${encodeURIComponent(l.name)}`,tooltip:l.name,tooltipDelay:500},attributes:{href:this.ws.page(`User:${l.name}`)}});if(this.addTooltipListener(g),u.appendChild(g),e.length>0){const t=(0,i.CreateDOMElement)("span",{class:"other-users",content:` and ${e.length} ${r.Text.pluralize("other",e.length)}`,dataset:{tooltip:e.join(", "),tooltipDelay:500}});this.addTooltipListener(t),u.appendChild(t)}}}}{var l;const a=(0,i.CreateDOMElement)("div",{class:"subheader"});if(s.appendChild(a),(null==n?void 0:n.count)>1||t&&(null===(l=e.consecutive)||void 0===l?void 0:l.count)>1){const t=(0,i.CreateDOMElement)("div",{class:"item-comment"});a.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comments",style:{"font-size":"11px"}});t.appendChild(s);const o=null!=n?n:e.consecutive,l=(0,i.CreateDOMElement)("span",{class:"text",content:`${o.count} ${r.Text.pluralize("edit",o.count)} over the course of `,dataset:{tooltip:o.edits.map(e=>{const t=(0,i.CreateDOMElement)("div",{style:{display:"flex","flex-direction":"column",gap:"6px"}});{const n=(0,i.CreateDOMElement)("div",{style:{display:"flex","align-items":"center",gap:"6px",width:"100%","justify-content":"space-between","font-size":"13px"}});t.appendChild(n);{const t=(0,i.CreateDOMElement)("span",{style:{display:"flex","align-items":"center",gap:"4px","font-weight":"500"},content:e.user});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.anon?"user-secret":"user"),style:{"font-size":"11px",opacity:"0.7"}});t.prepend(s)}{const t=(0,i.CreateDOMElement)("span",{style:{display:"flex","align-items":"center",gap:"4px","font-size":"12px",opacity:"0.75"},content:this.ws.util.formatNotificationTime(new Date(e.timestamp)),dataset:{time:e.timestamp,timeFormat:"notification"}});n.appendChild(t);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-clock",style:{"font-size":"10px",opacity:"0.7"}});t.prepend(s)}}{const n=(0,i.CreateDOMElement)("div",{style:{display:"flex","align-items":"flex-start",gap:"4px","font-size":"12px",opacity:"0.85",padding:"2px 0"},content:e.comment||"No edit summary"});t.appendChild(n);const s=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"10px",opacity:"0.7","flex-shrink":"0","margin-top":"2px"}});n.prepend(s)}return t.outerHTML}).join("<br>"),tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(l),t.appendChild(l);const d=(0,i.CreateDOMElement)("span",{class:"time",content:this.ws.util.formatDuration(new Date(o.timestamp.old),new Date(o.timestamp.new)),dataset:{tooltip:`${new Date(o.timestamp.old).toLocaleString()}—${new Date(o.timestamp.new).toLocaleString()}`,tooltipHtml:!0,tooltipDelay:500,time:o.timestamp.old,timeNow:o.timestamp.new,timeFormat:"duration"}});this.addTooltipListener(d),t.appendChild(d)}else if(e.has_comment){const t=(0,i.CreateDOMElement)("div",{class:"item-comment"});a.appendChild(t);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-comment",style:{"font-size":"11px"}});t.appendChild(n);const s=(0,i.CreateDOMElement)("span",{class:"text",html:e.comment,dataset:{tooltip:e.comment,tooltipHtml:!0,tooltipDelay:500}});this.addTooltipListener(s),t.appendChild(s)}else{const e=(0,i.CreateDOMElement)("div",{class:"item-comment none",content:"No edit summary"});a.appendChild(e)}{const t=(0,i.CreateDOMElement)("div",{class:"meta"});if(a.appendChild(t),e.minor){const e=(0,i.CreateDOMElement)("span",{class:"minor-chip",dataset:{tooltip:"Minor edit",tooltipDelay:500}});this.addTooltipListener(e),t.appendChild(e);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-m",style:{"font-size":"11px"}});e.appendChild(n)}if("sizediff"in e){const n=(0,i.CreateDOMElement)("span",{class:"diff-chip",content:Math.abs(e.sizediff).toLocaleString(),dataset:{tooltip:"Size difference",tooltipDelay:500}});if(this.addTooltipListener(n),t.appendChild(n),0!==e.sizediff){const t=(0,i.CreateDOMElement)("i",{class:"fas fa-"+(e.sizediff>0?"plus":"minus"),style:{"font-size":"11px"}});n.prepend(t)}}}}}renderQueue(e=null,t=null,n=null){var s,a,r;if(document.querySelector("#previous-item-button").classList.toggle("disabled",!this.ws.queue.canGoPrevious()),document.querySelector("#next-item-button").classList.toggle("disabled",!this.ws.queue.canGoNext()),null!=e||(e=this.ws.queue.current.queue),null!=t||(t=this.ws.queue.current.item),null!=n||(n=this.ws.queue.current.type),this.updateQueueTabs(),n!==this.ws.queue.current.type)return;const o=document.querySelector("#queue-items");if(0===e.length){var l,d;const e=document.createElement("div");return e.classList.add("queue-empty"),e.textContent="No items in queue",o.innerHTML=e.outerHTML,void((null===(l=this.ws.queue.queues[n].previous)||void 0===l?void 0:l.id)!==(null===(d=t)||void 0===d?void 0:d.id)&&(this.ws.queue.queues[n].previous=t,this.newCurrentItem(t)))}o.querySelectorAll(".queue-empty").forEach(e=>e.remove());const c=new Map;for(const e of o.children)c.set(+e.dataset.id,e);let u=null;for(const s of e){var p;let i=c.get(s.id);var g;if(!i)i=document.createElement("div"),i.classList.add("queue-item"),i.dataset.id=s.id,i.dataset.type=n,i.innerHTML=this.generateItemHTML(s,"pending"!==n),null===(g=i.querySelector(".remove-button"))||void 0===g||g.addEventListener("click",i=>{i.stopPropagation();const a=e.findIndex(e=>e.id===s.id);var r;a>=0&&(s.id===(null===(r=t)||void 0===r?void 0:r.id)?this.ws.queue.next():(e.splice(a,1),this.ws.queue.queues[n].history.push({...s,history:performance.now()}),this.removeQueueItem(n,s.id),this.renderQueue()))}),s.mentions.has&&this.ws.store.settings.username_highlighting.enabled&&(i.classList.add("mentions-me"),i.dataset.tooltip="This queue item contains your username",this.addTooltipListener(i)),i.addEventListener("click",()=>{this.ws.queue.queues[n].item=s,this.ws.current=this.ws.queue.queues[n],this.renderQueue()}),o.appendChild(i),c.set(s.id,i),i.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e));null===u?i!==o.firstChild&&o.insertBefore(i,o.firstChild):i.previousSibling!==u&&o.insertBefore(i,u.nextSibling),i.classList.toggle("current",s.id===(null===(p=t)||void 0===p?void 0:p.id)),u=i}for(const[t,n]of c.entries())e.some(e=>e.id===t)||n.remove();let h=null;for(const t of e){if(!1===t.history)break;h=t}if(null===(s=o.querySelector(".historical-bar"))||void 0===s||s.remove(),null!==h){const e=(0,i.CreateDOMElement)("div",{class:"historical-bar"});o.insertBefore(e,c.get(h.id).nextSibling);const t=(0,i.CreateDOMElement)("span",{class:"label"});e.appendChild(t);const n=(0,i.CreateDOMElement)("i",{class:"fas fa-box-archive",attributes:{title:"All items above this line have been viewed"}});t.appendChild(n)}(null===(a=this.ws.queue.queues[n].previous)||void 0===a?void 0:a.id)!==(null===(r=t)||void 0===r?void 0:r.id)&&(this.ws.queue.queues[n].previous=t,this.newCurrentItem(t))}removeQueueItem(e,t){const n=document.querySelector(`.queue-item[data-type="${e}"][data-id="${t}"]`);n&&(n.remove(),this.updateQueueTabs([e]))}clearQueueItems(){document.querySelector("#queue-items").innerHTML="",this.renderQueue()}updateHiddenItems(e){if(void 0===e&&(e=this.ws.queue.current.item),null===e)return this.ws.store.UI.hide_tools,document.querySelectorAll("[data-queue-type]").forEach(e=>e.classList.add("hidden"));let t=e.type;"abuselog"===t&&e.revid&&(t="edit");const n=c.Queue.groups[t];document.querySelectorAll("[data-queue-type]").forEach(e=>{const t=e.dataset.queueType||"*";"*"===t?e.classList.remove("hidden"):e.classList.toggle("hidden",!t.split(",").includes(n))})}async newCurrentItem(e=null,t=!1){var n,s;null===(n=this.controllers.current)||void 0===n||n.abort();const a=new AbortController;this.controllers.current=a,null!==e&&(this.updateDiffDisplay("loading"),await this.ws.queue.propagate(e,!0)),this.stopOutdatedCheck(),this.toggleEditWarNotice((null==e?void 0:e.reverts)>=3,(null==e?void 0:e.reverts)||0),this.toggleOutdatedNotice(!1),this.togglePendingNotice(!1),this.closeMenus(),this.removeTooltips(),document.querySelectorAll("#right-top > div > :not(.hidden)").forEach(e=>e.classList.add("hidden"));const r=document.querySelector("#user-contributions > .queue-list");r.innerHTML="";const o=document.querySelector("#page-history > .queue-list");if(o.innerHTML="",document.querySelector("#user-contributions > .header > .pills").innerHTML="",document.querySelector("#page-history > .header > .pills").innerHTML="",document.querySelector("#pending-changes-container").classList.toggle("hidden",!(this.ws.rights.review&&this.ws.queue.pending.has(null==e?void 0:e.id))),this.updateHiddenItems(e),null===e)return this.generateEditDetails(),document.querySelector("#diff-container").innerHTML="",document.querySelector("#diff-scroll-up").classList.add("hidden"),document.querySelector("#diff-scroll-down").classList.add("hidden"),document.querySelector("#ai-analysis-container").classList.add("hidden"),void([...document.querySelectorAll("#queue-tabs > .queue-tab")].every(e=>"none"===getComputedStyle(e).display)&&(document.querySelector("#diff-container").innerHTML='\n\t\t\t\t\t<div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; color: grey;">\n\t\t\t\t\t\t<div style="font-size: 48px; margin-bottom: 16px;">\n\t\t\t\t\t\t\t<i class="fas fa-shield-alt"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style="font-size: 24px; margin-bottom: 8px; text-align: center;">\n\t\t\t\t\t\t\tNo queues are enabled\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style="font-size: 14px; text-align: center; max-width: 100%; margin-top: 10px;">\n\t\t\t\t\t\t\tI heard there was a WikiShield,<br>\n\t\t\t\t\t\t\tWhich entered an oversaturated field,<br>\n\t\t\t\t\t\t\tBut you don’t ever use Huggle, do you?<br>\n\t\t\t\t\t\t\tWell it simplifies any AIV,<br>\n\t\t\t\t\t\t\tBut superintendence matters to me\n\t\t\t\t\t\t\t<span style="display: block; margin-top: 8px;">— User:WikiMacaroons</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t'));const l=e.type,d=c.Queue.groups[l];if(!t&&"abuselog"===l&&!e.revid){const t=async()=>{a.signal.aborted||this.ws.api.getAbuseLogRevid(e.id).then(n=>{var s,i;n&&(e.revid=n,e.id===(null===(i=this.ws.queue.current.item)||void 0===i?void 0:i.id)&&this.newCurrentItem(this.ws.queue.current.item,!0));e.id===(null===(s=this.ws.queue.current.item)||void 0===s?void 0:s.id)&&setTimeout(()=>t(),1e3)})};t()}const u=null==e||null===(s=e.page)||void 0===s?void 0:s.watched;if(document.querySelector("#page-watch").classList.toggle("hidden",!0===u),document.querySelector("#page-unwatch").classList.toggle("hidden",!0!==u),document.querySelector("#user-report-uaa").classList.toggle("hidden",null==e?void 0:e.user.anon),document.querySelector("#user-request-global-lock").classList.toggle("hidden",null==e?void 0:e.user.anon),this.ws.AI){const t=this.ws.store;null===e.AI.edit&&t.settings.AI.edit_analysis.enabled&&this.ws.AI.analyze.edit(e).then(t=>{e.AI.edit=t}).catch(t=>{e.AI.edit={error:t.message}}).finally(()=>{var t;e.id===(null===(t=this.ws.queue.current.item)||void 0===t?void 0:t.id)&&this.updateAIAnalysisDisplay(e.AI.edit)}),null!==e.AI.username||e.user.anon||t.whitelist.users.has(e.user)||!t.settings.AI.username_analysis.enabled||this.ws.AI.analyze.username(e).then(t=>{e.AI.username=t,t.flag&&this.ws.queue.promptUAA(e,t)}).catch(t=>{e.AI.username={error:t.message}})}if(this.updateAIAnalysisDisplay(e.AI.edit),!e.seen)switch(e.seen=!0,this.ws.store.statistics.edits_reviewed.total++,this.ws.queue.current.type){case"recent":this.ws.store.statistics.recent_changes_reviewed.total++;break;case"pending":this.ws.store.statistics.pending_changes_reviewed.total++;break;case"watchlist":this.ws.store.statistics.watchlist_changes_reviewed.total++;break;case"users":this.ws.store.statistics.users_reviewed.total++;break;case"abuselog":this.ws.store.statistics.abuselogs_reviewed.total++}{const t=(0,i.CreateDOMElement)("div",{class:"pill",content:`${e.user.edits.toLocaleString()} edit${1===e.user.edits?"":"s"}`});document.querySelector("#user-contributions > .header > .pills").appendChild(t)}if("0"!==e.user.warning){const t=(0,i.CreateDOMElement)("div",{class:`pill uw-${e.user.warning}`});document.querySelector("#user-contributions > .header > .pills").appendChild(t),t.textContent=`uw-${e.user.warning}`;const n=e.user.warnings;if(n.length>0){const s=document.createElement("div"),i=document.createElement("div");i.classList.add("tooltip-title"),i.textContent=`Warnings for ${e.user.name}`,s.appendChild(i);for(const e of n){const t=document.createElement("div");t.classList.add("tooltip-item","user-warnings"),s.appendChild(t);const n=document.createElement("span");n.classList.add("tooltip-item-level"),n.textContent=`${e.template}${e.level}`,t.appendChild(n);const i=document.createElement("div");i.classList.add("tooltip-item-details"),t.appendChild(i);const a=document.createElement("span");a.classList.add("tooltip-item-user"),a.textContent=e.username?`by User:${e.username}`:"by Unknown",i.appendChild(a),i.appendChild(document.createElement("br"));const r=document.createElement("span");r.classList.add("tooltip-item-date"),i.appendChild(r),e.timestamp?(r.dataset.time=e.timestamp,r.dataset.timeFormat="notification",r.textContent=this.ws.util.formatNotificationTime(new Date(e.timestamp))):r.textContent="Date unknown"}t.dataset.tooltip=s.innerHTML,t.dataset.tooltipHtml=!0}this.addTooltipListener(t)}const p=e.user.blocks;if(p.length>0){const t=(0,i.CreateDOMElement)("div",{class:"pill ub"});document.querySelector("#user-contributions > .header > .pills").appendChild(t);const n=document.createElement("div"),s=document.createElement("div");s.classList.add("tooltip-title"),s.textContent=`Blocks for ${e.user.name}`,n.appendChild(s);for(const e of p){var g;const t=document.createElement("div");t.classList.add("tooltip-item","user-blocks"),n.appendChild(t);const s=document.createElement("span");s.classList.add("tooltip-item-level"),s.innerHTML=e.parsedcomment||"No reason provided",t.appendChild(s);const i=document.createElement("div");i.classList.add("tooltip-item-details"),t.appendChild(i);const a=document.createElement("span");a.classList.add("tooltip-item-user"),a.textContent=e.user?`by User:${e.user}`:"by Unknown",i.appendChild(a),i.appendChild(document.createElement("br"));const r=document.createElement("span");r.classList.add("tooltip-item-time"),i.appendChild(r);const o=document.createElement("span");e.timestamp?(o.dataset.time=e.timestamp,o.dataset.timeFormat="notification",o.textContent=this.ws.util.formatNotificationTime(new Date(e.timestamp))):o.textContent="Date unknown",r.appendChild(o);const l=document.createElement("span");l.textContent=`(for ${(null===(g=e.params)||void 0===g?void 0:g.duration)||"an unknown duration"})`,r.appendChild(l)}t.classList.remove("hidden"),t.textContent=`${p.length} block${1===p.length?"":"s"}`,t.dataset.tooltip=n.innerHTML,t.dataset.tooltipHtml=!0,this.addTooltipListener(t)}{const t=document.querySelector("#user-whitelist"),n=document.querySelector("#user-unwhitelist");if(t&&n){const s=()=>{const s=this.ws.store.whitelist.users.has(e.user.name);t.classList.toggle("hidden",s),n.classList.toggle("hidden",!s)};t.onclick=s,n.onclick=s,s()}const s=document.querySelector("#user-highlight"),i=document.querySelector("#user-unhighlight");if(s&&i){const t=()=>{const t=this.ws.store.highlight.users.has(e.user.name);s.classList.toggle("hidden",t),i.classList.toggle("hidden",!t)};s.onclick=t,i.onclick=t,t()}}{const t=document.querySelector("#page-whitelist"),n=document.querySelector("#page-unwhitelist");if(t&&n){const s=()=>{const s=this.ws.store.whitelist.pages.has(e.page.title);t.classList.toggle("hidden",s),n.classList.toggle("hidden",!s)};t.onclick=s,n.onclick=s,s()}const s=document.querySelector("#page-highlight"),i=document.querySelector("#page-unhighlight");if(s&&i){const t=()=>{const t=this.ws.store.highlight.pages.has(e.page.title);s.classList.toggle("hidden",t),i.classList.toggle("hidden",!t)};s.onclick=t,i.onclick=t,t()}}(async t=>{const n=e.user.contributions;for(const e of n){var s;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(s=this.ws.queue.current.item.revid)&&void 0!==s?s:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML({page:{title:e.title},user:{name:e.user},comment:"Loading...",timestamp:e.timestamp,sizediff:0,ores:NaN,tags:e.tags||[],type:"edit"}),r.appendChild(t),requestAnimationFrame(()=>t.classList.remove("no-transition"))}if(e.page.cached_contributions){const s=await e.page.cached_contributions;if(t.aborted)return;n.some((e,t)=>{var n;return e.id!==(null===(n=s[t])||void 0===n?void 0:n.id)})&&delete e.page.cached_contributions}e.user.cached_contributions||(e.user.cached_contributions=this.ws.queue.generate("edit",n,!0));const i=await e.user.cached_contributions;if(!t.aborted){r.innerHTML="";for(const e of i.sort((e,t)=>new Date(t.timestamp)-new Date(e.timestamp))){var a;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(a=this.ws.queue.current.item.revid)&&void 0!==a?a:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML(e),r.appendChild(t),t.addEventListener("mouseover",()=>this.ws.queue.propagate(e,!0)),t.addEventListener("click",()=>this.ws.queue.loadFromItem(e)),t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e)),requestAnimationFrame(()=>t.classList.remove("no-transition"))}}})(a.signal).catch(e=>{a.signal.aborted||console.error("Error loading contributions:",e)});switch(d){case"edit":{var h;if(this.startOutdatedCheck(e),!this.ws.queue.pending.has(e.id))(null===(h=e.consecutive)||void 0===h?void 0:h.count)>=2&&(document.querySelector("#latest-edits-tab").classList.remove("hidden"),document.querySelector("#consecutive-edits-tab").classList.remove("hidden"));const t=e.page.protection;if(t.protected||this.ws.queue.pending.has(e.id)){const n=(0,i.CreateDOMElement)("div",{class:"pill"});if(document.querySelector("#page-history > .header > .pills").appendChild(n),t.protected){let e,s;switch(t.level){case"sysop":e="F",s="Requires sysop right to edit";break;case"template":e="T",s="Requires template editor to edit";break;case"extendedconfirmed":e="EC",s="Requires extended confirmed right to edit";break;case"autoconfirmed":e="AC",s="Requires autoconfirmed right to edit";break;default:e="?",s="Uknown protection level"}n.innerHTML=`<i class="fas fa-lock"></i> <span class="protection-icon" data-tooltip="${s}">${e}</span>`,this.addTooltipListener(n.querySelector("[data-tooltip]"))}else if(this.ws.queue.pending.has(e.id)){var m;const t=(null===(m=this.ws.queue.pending.get(e.id).pending.stability)||void 0===m?void 0:m.parsedcomment)||"No comment provided",s=document.createElement("span");s.classList.add("protection-icon"),s.innerHTML="<i class='fas fa-lock'></i> PC",s.dataset.tooltip=t,s.dataset.tooltipHtml=!0,n.appendChild(s),this.addTooltipListener(n.querySelector("[data-tooltip]"))}}for(const t of e.page.metadata){const e=(0,i.CreateDOMElement)("div",{class:"pill",content:t});document.querySelector("#page-history > .header > .pills").appendChild(e)}}break;case"logevent":break;case"abuselog":{e.revid&&this.startOutdatedCheck(e);const t=document.querySelector("#protection-indicator");if(t){const n=e.page.protection;if(n.protected){let e,s;switch(n.level){case"sysop":e="P",s="Requires sysop right to edit";break;case"extendedconfirmed":e="X",s="Requires extended confirmed right to edit";break;case"autoconfirmed":e="A",s="Requires autoconfirmed right to edit";break;default:e="?",s="Uknown protection level"}t.innerHTML=`<span class="protection-icon" data-tooltip="${s}">${e}</span>`,this.addTooltipListener(t.querySelector("[data-tooltip]"))}else if(this.ws.queue.pending.has(e.id)){var v;const n=(null===(v=this.ws.queue.pending.get(e.id).pending.stability)||void 0===v?void 0:v.parsedcomment)||"No comment provided",s=document.createElement("span");s.classList.add("protection-icon"),s.textContent="PC",s.dataset.tooltip=n,s.dataset.tooltipHtml=!0,t.appendChild(s),this.addTooltipListener(t.querySelector("[data-tooltip]"))}else t.innerHTML=""}}}if("edit"===d||"abuselog"===d){(async t=>{const n=e.page.history;for(const e of n){var s;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(s=this.ws.queue.current.item.revid)&&void 0!==s?s:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML({page:{title:e.title},user:{name:e.user},comment:"Loading...",timestamp:e.timestamp,sizediff:0,ores:NaN,tags:e.tags||[],type:"edit"}),o.appendChild(t),requestAnimationFrame(()=>t.classList.remove("no-transition"))}if(e.page.cached_history){const s=await e.page.cached_history;if(t.aborted)return;n.some((e,t)=>{var n;return e.id!==(null===(n=s[t])||void 0===n?void 0:n.id)})&&delete e.page.cached_history}e.page.cached_history||(e.page.cached_history=this.ws.queue.generate("edit",n,!0));const i=await e.page.cached_history;if(!t.aborted){o.innerHTML="";for(const e of i.sort((e,t)=>new Date(t.timestamp)-new Date(e.timestamp))){var a;const t=document.createElement("div");t.className="queue-item no-transition",t.classList.toggle("current",e.id===(null!==(a=this.ws.queue.current.item.revid)&&void 0!==a?a:this.ws.queue.current.item.id)),t.innerHTML=this.generateItemHTML(e),o.appendChild(t),t.addEventListener("mouseover",()=>this.ws.queue.propagate(e,!0)),t.addEventListener("click",()=>this.ws.queue.loadFromItem(e)),t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e)),requestAnimationFrame(()=>t.classList.remove("no-transition"))}}})(a.signal).catch(e=>{a.signal.aborted||console.error("Error loading history:",e)})}this.updateDiffDisplay(e,!1)}updateDiffDisplay(e,t){var n;this.ws.mobile&&(t=!0);const s=document.querySelector("#diff-container");if(!e)return document.querySelector("#diff-scroll-up").classList.add("hidden"),void document.querySelector("#diff-scroll-down").classList.add("hidden");if("loading"===e){const e=document.createElement("div");e.className="loading-container";const t=document.createElement("div");t.className="loading-spinner",e.appendChild(t);const n=document.createElement("i");n.className="fas fa-spinner fa-spin",t.appendChild(n);const i=document.createElement("div");return i.className="loading-text animate-loading-dots",i.textContent="Loading edit",e.appendChild(i),void(s.innerHTML=e.outerHTML)}switch(document.querySelectorAll("#right-top > .tabs > .tab.selected").forEach(e=>e.classList.remove("selected")),this.generateEditDetails(e,t),c.Queue.groups[e.type]){case"edit":var i,a;if(this.ws.queue.pending.get(e.id))s.innerHTML=`<table>${null!==(i=e.diff)&&void 0!==i?i:"<em>No diff available</em>"}</table>`;else if(t&&(null===(a=e.consecutive)||void 0===a?void 0:a.count)>1){var r,o;document.querySelector("#consecutive-edits-tab").classList.add("selected"),null===(r=e.consecutive.diff)||void 0===r||r?s.innerHTML=`<table>${null!==(o=e.consecutive.diff)&&void 0!==o?o:"<em>No diff available</em>"}</table>`:s.innerHTML="<table><em>No difference</em></table>"}else{var l;document.querySelector("#latest-edits-tab").classList.add("selected"),s.innerHTML=`<table>${null!==(l=e.diff)&&void 0!==l?l:"<em>No diff available</em>"}</table>`}if(this.ws.store.settings.username_highlighting.enabled){const t=this.ws.api.username;t&&(e.mentions.diff&&s.querySelectorAll("td").forEach(e=>{e.textContent&&this.ws.util.match(t,e.textContent)&&e.classList.add("ws-username-highlight")}),e.mentions.comment&&e.comment&&this.ws.util.match(t,e.comment)&&document.querySelector("#edit-details > .subheader > .item-comment > .text").classList.add("ws-username-highlight"))}break;case"logevent":if("users"===e.type){s.innerHTML="";const t=e.user.profanity,n=document.createElement("div");n.classList.add("profanity"),s.appendChild(n);const i=document.createElement("div");{i.classList.add("profanity-header"),n.appendChild(i);const e=document.createElement("div");{e.classList.add("profanity-score"),i.appendChild(e);const n=document.createElement("span");n.classList.add("score-label"),n.textContent="Profanity Score:",e.appendChild(n);const s=document.createElement("span");s.classList.add("score-value"),s.textContent=t.finalScore,e.appendChild(s)}const s=document.createElement("div");{s.classList.add("profanity-risk",`risk-${t.risk.toLowerCase()}`),i.appendChild(s);const e=document.createElement("span");switch(e.classList.add("fa"),t.risk){case"No":e.classList.add("fa-smile");break;case"Low":e.classList.add("fa-thumbs-up");break;case"Medium":e.classList.add("fa-meh");break;case"High":e.classList.add("fa-thumbs-down");break;case"Critical":e.classList.add("fa-skull-crossbones")}s.appendChild(e);const n=document.createElement("span");n.textContent=`${t.risk} risk`,s.appendChild(n)}}const a=t.matches;if(a.length>0){const e=document.createElement("div");e.classList.add("profanity-matches-header"),n.appendChild(e);const t=document.createElement("span");t.classList.add("fa","fa-search"),e.appendChild(t);const s=document.createElement("span");s.textContent=`Matched Terms (${a.length})`,e.appendChild(s);const i=document.createElement("div");i.classList.add("profanity-matches-list"),n.appendChild(i);for(const e of a){const t=document.createElement("div");{t.classList.add("profanity-match"),i.appendChild(t);const n=document.createElement("div");{n.classList.add("match-header"),t.appendChild(n);const s=document.createElement("span");s.classList.add("match-text"),s.textContent=e.match,n.appendChild(s);const i=document.createElement("span");i.classList.add("fa","fa-arrow-right"),n.appendChild(i);const a=document.createElement("span");a.classList.add("match-name"),a.textContent=e.name,n.appendChild(a)}const s=document.createElement("div");{s.classList.add("match-details"),t.appendChild(s);const n=document.createElement("div");{n.classList.add("match-stat"),s.appendChild(n);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Confidence",n.appendChild(t);const i=document.createElement("span");i.classList.add("stat-value"),i.dataset.tooltip="How certain we are this is a match.",i.dataset.tooltipDelay=500,i.textContent=`${Math.round(100*e.confidence)}%`,n.appendChild(i)}const i=document.createElement("div");{i.classList.add("match-stat"),s.appendChild(i);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Obfuscation",i.appendChild(t);const n=document.createElement("span");n.classList.add("stat-value"),n.dataset.tooltip="How much the term was altered from its original form.",n.dataset.tooltipDelay=500,n.textContent=`${Math.round(100*e.obfuscation)}%`,i.appendChild(n)}const a=document.createElement("div");{a.classList.add("match-stat"),s.appendChild(a);const t=document.createElement("span");t.classList.add("stat-label"),t.textContent="Severity",a.appendChild(t);const n=document.createElement("span");n.classList.add("stat-value",`severity-${e.severity}`),n.dataset.tooltip="How severe this term is considered.",n.dataset.tooltipDelay=500,n.textContent=e.severity,a.appendChild(n)}}if(e.note){const n=document.createElement("div");{n.classList.add("match-note"),t.appendChild(n);const s=document.createElement("span");s.classList.add("fa","fa-info-circle"),n.appendChild(s);const i=document.createElement("span");i.classList.add("note-text"),i.textContent=e.note,n.appendChild(i)}}}t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e))}}else{const e=document.createElement("div");e.classList.add("profanity-no-matches"),n.appendChild(e);const t=document.createElement("span");t.classList.add("fa","fa-check-circle"),e.appendChild(t);const s=document.createElement("span");s.textContent="No profanity detected.",e.appendChild(s)}}break;case"abuselog":var d;if(s.innerHTML=`<table>${null!==(d=e.diff)&&void 0!==d?d:"<em>No diff available</em>"}</table>`,this.ws.store.settings.username_highlighting.enabled){const t=this.ws.api.username;t&&(e.mentions.diff&&s.querySelectorAll("td").forEach(e=>{e.textContent&&this.ws.util.match(t,e.textContent)&&e.classList.add("ws-username-highlight")}),e.mentions.comment&&e.comment&&this.ws.util.match(t,e.comment)&&document.querySelector("#edit-details > .subheader > .item-comment > .text").classList.add("ws-username-highlight"))}}s.querySelectorAll(":is(.mw-diff-movedpara-left, .mw-diff-movedpara-right)").forEach(e=>{const t=e.href.split("#")[1];delete e.href,e.innerHTML=e.classList.contains("mw-diff-movedpara-left")?">":"<",e.addEventListener("click",e=>{e.preventDefault();const n=s.querySelector(`a[name="${t}"]`);if(n){const e=n.getBoundingClientRect(),t=s.getBoundingClientRect(),i=e.top-t.top+s.scrollTop-(t.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),s.querySelectorAll(".flash-highlight").forEach(e=>e.classList.remove("flash-highlight"));const a=n.parentElement.parentElement;a.classList.add("flash-highlight"),setTimeout(()=>{var e;return null==a||null===(e=a.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)}})});const u=s.querySelectorAll(".diff-addedline, .diff-deletedline"),p=null!==(n=s.querySelectorAll(":is(.diff-addedline, .diff-deletedline) .diffchange")[0])&&void 0!==n?n:u[0];p?requestAnimationFrame(()=>{const e=p.getBoundingClientRect(),t=s.getBoundingClientRect(),n=e.top-t.top+s.scrollTop-(t.height-e.height)/2;function i(){const e=s.querySelectorAll(":is(.diff-addedline, .diff-deletedline) .diffchange");let t=null,n=null;const i=s.getBoundingClientRect();for(const s of e){let e=!1,a=!1;const r=s.getBoundingClientRect();r.bottom<i.top&&(e=!0),r.top>i.bottom&&(a=!0),e&&a||(e&&(t=s),null===n&&a&&(n=s))}const a=document.querySelector("#diff-scroll-up");a.classList.toggle("hidden",!t),a.onclick=()=>{const e=t.getBoundingClientRect(),n=s.getBoundingClientRect(),i=e.top-n.top+s.scrollTop-(n.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),t.classList.add("flash-highlight"),setTimeout(()=>{var e;return null===(e=t)||void 0===e||null===(e=e.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)};const r=document.querySelector("#diff-scroll-down");r.classList.toggle("hidden",!n),r.onclick=()=>{const e=n.getBoundingClientRect(),t=s.getBoundingClientRect(),i=e.top-t.top+s.scrollTop-(t.height-e.height)/2;s.scrollTo({top:Math.max(0,i),behavior:"smooth"}),n.classList.add("flash-highlight"),setTimeout(()=>{var e;return null===(e=n)||void 0===e||null===(e=e.classList)||void 0===e?void 0:e.remove("flash-highlight")},3e3)}}s.scrollTo({top:Math.max(0,n),behavior:"smooth"}),i(),s.onscroll=()=>requestAnimationFrame(i),window.onresize=()=>requestAnimationFrame(i)}):(document.querySelector("#diff-scroll-up").classList.add("hidden"),document.querySelector("#diff-scroll-down").classList.add("hidden"))}updateAIAnalysisDisplay(e){const t=document.querySelector("#ai-analysis-container");if(!t||!e)return t.classList.add("hidden");if(t.classList.remove("hidden"),e.error){const n=t.querySelector(":scope > .header > .assessment");n.textContent="Error",n.className="assessment error",t.querySelector(":scope > .header > .confidence").textContent="",t.querySelector(":scope > .explanation").textContent=e.error;t.querySelector(":scope > .issues").innerHTML=""}else{const n=t.querySelector(":scope > .header > .assessment");n.textContent=e.assessment,n.className=`assessment ${e.assessment.toLowerCase().replace(/\s+/g,"-")}`,t.querySelector(":scope > .header > .confidence").textContent=`${Math.round(100*(e.confidence||0))}% confidence`;const s=v(b,this,y).call(this,e.explanation||"No explanation provided.");t.querySelector(":scope > .explanation").innerHTML=s;const i=t.querySelector(":scope > .issues");i.innerHTML="";for(const t of e.issues||[]){const e=document.createElement("div");e.classList.add("issue",t.severity.toLowerCase().replace(/\s+/g,"-")),e.textContent=t.policy,i.appendChild(e)}t.querySelectorAll("[data-tooltip]").forEach(e=>this.addTooltipListener(e))}}async outdated(e){let t=e.type,n=e.id;if("abuselog"===t&&e.revid&&(t="edit",n=e.revid),"edit"!==c.Queue.groups[t])return this.toggleOutdatedNotice(!1),void this.togglePendingNotice(!1);if("pending"===e.type)return this.togglePendingNotice(!this.ws.queue.pending.has(n),!0);if(!e.pending&&"pending"===this.ws.queue.type)return this.togglePendingNotice(!0,!1);try{var s;const t=(await this.ws.api.getLatestIds([e.page.title]))[e.page.title];(null===(s=this.ws.queue.current.item)||void 0===s?void 0:s.id)===e.id&&this.toggleOutdatedNotice(t>n,t,e.page.title,n)}catch(e){console.error("Error checking if edit is outdated:",e),this.toggleOutdatedNotice(!1)}}startOutdatedCheck(e){this.stopOutdatedCheck(),this.outdated(e),this.intervals.outdated=setInterval(()=>{var t;e.id===(null===(t=this.ws.queue.current.item)||void 0===t?void 0:t.id)?this.outdated(e):this.stopOutdatedCheck()},1e3)}stopOutdatedCheck(){this.intervals.outdated&&(clearInterval(this.intervals.outdated),this.intervals.outdated=null),this.toggleOutdatedNotice(!1),this.togglePendingNotice(!1)}toggleEditWarNotice(e,t){const n=document.querySelector("#edit-war-notice");if(null!=e||(e=!n),e!==Boolean(n))if(e){const e=document.createElement("div");e.id="edit-war-notice",e.classList.add("notice","edit-war");const n=document.createElement("span");n.classList.add("fa","fa-warning"),e.appendChild(n);const s=document.createElement("span");s.classList.add("text"),s.innerHTML=`<b>3RR:</b> You have made ${t} reverts on this page in the last 24 hours.`,e.appendChild(s);const i=document.querySelector("#diff-container");i.parentElement.insertBefore(e,i)}else{const e=document.querySelector("#edit-war-notice");e&&e.remove()}}toggleOutdatedNotice(e,t,n,s){const i=document.querySelector("#outdated-notice");if(null!=e||(e=!i),e!==Boolean(i))if(e){const e=document.createElement("div");e.id="outdated-notice",e.classList.add("notice","outdated"),e.dataset.id=t,e.dataset.page=n;const s=document.createElement("span");s.classList.add("fa","fa-clock-rotate-left"),e.appendChild(s);const i=document.createElement("span");i.classList.add("text"),i.textContent="Newer revision available on this page.",e.appendChild(i);const a=document.createElement("span");a.classList.add("button"),a.innerHTML="<i class='fas fa-redo restore'></i> Restore this revision",a.addEventListener("click",async e=>{e.preventDefault();const t=await this.dialog.input("Restore Edit","Are you sure you want to restore this revision? This will create a new edit that reverts the page to this revision.","Edit summary (optional)","");null!==t&&this.ws.execute({actions:[{name:"restore-edit",params:{summary:t}}]})}),e.appendChild(a);const r=document.createElement("span");r.classList.add("button"),r.innerHTML="View latest <i class='fas fa-arrow-right'></i>",r.addEventListener("click",t=>{t.preventDefault();const n=e.dataset.page,s=+e.dataset.id;n&&s&&this.ws.queue.loadFromRevision(n,s)}),e.appendChild(r);const o=document.querySelector("#diff-container");o.parentElement.insertBefore(e,o)}else{const e=document.querySelector("#outdated-notice");e&&e.remove()}else i&&(i.dataset.id=t,i.dataset.page=n)}togglePendingNotice(e,t){const n=document.querySelector("#pending-notice");if(null!=e||(e=!n),e!==Boolean(n))if(e){const e=document.createElement("div");e.id="pending-notice",e.classList.add("notice","outdated","pending");const n=document.createElement("span");n.classList.add("fa","fa-shield-alt"),e.appendChild(n);const s=document.createElement("span");s.classList.add("text"),s.textContent=t?"This revision cannot be reviewed because it is outdated":"This revision cannot be reviewed because it is not pending review",e.appendChild(s);const i=document.querySelector("#diff-container");i.parentElement.insertBefore(e,i)}else{const e=document.querySelector("#pending-notice");e&&e.remove()}}getORESColor(e){if(isNaN(e)||e<0)return"rgba(128, 128, 128, .5)";e=Math.min(Math.max(e||0,0),1);const t=w.palettes[this.ws.store.UI.theme.palette];return t[e*(t.length-1)|0]}updatePalette(){document.querySelectorAll("[data-ores]").forEach(e=>{e.style.setProperty("--ores-color",this.getORESColor(parseFloat(e.dataset.ores)))})}updateZenMode(){this.ws.notifications.count();const e=this.ws.store.settings.zen_mode;e.enabled&&e.music.enabled&&window.isElectron?this.ws.audio.zengine.start():this.ws.audio.zengine.stop(),document.querySelectorAll("[data-zen-show]").forEach(t=>{const n=t.dataset.zenShow.split(",");e.enabled&&!n.some(t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.enabled})?t.style.display="none":t.style.display=""})}updateAccessibility(){document.body.classList.toggle("colorblind-mode",this.ws.store.settings.accessibility.colorblind),document.body.classList.toggle("dyslexia-font",this.ws.store.settings.accessibility.dyslexia),document.body.classList.toggle("high-contrast",this.ws.store.settings.accessibility.high_contrast),document.body.classList.toggle("reduce-motion",this.ws.store.settings.accessibility.reduce_motion)}reorderQueues(){var e;const t=c.Queue.types.map(e=>({name:e,...this.ws.store.settings.queue[e]}));t.sort((e,t)=>e.order-t.order),t.forEach(e=>{const t=document.querySelector(`#queue-tab-${e.name}`);t&&(t.style.display=e.enabled?"":"none",t.parentElement.appendChild(t))});const n=t.find(e=>e.name===this.ws.queue.current.type)?this.ws.queue.current.type:null===(e=t.find(e=>e.enabled))||void 0===e?void 0:e.name;if(n)this.ws.queue.switch(n);else{const e=document.createElement("div");e.classList.add("queue-empty"),e.textContent="No items in queue",document.querySelector("#queue-items").innerHTML=e.outerHTML,this.newCurrentItem(null),this.ws.queue.switch("void")}}updateQueueTabs(e=c.Queue.types){const t=this.ws.queue.queues;e.forEach(e=>{const n=document.querySelector(`#queue-tab-${e}`);if(!n||!t[e])return;const s=n.querySelector(":scope > span > .icon-count"),i=t[e].queue.length;s.classList.toggle("hidden",0===i),s.textContent=i,n.classList.toggle("mentions-me",this.ws.store.settings.username_highlighting.enabled&&t[e].queue.some(e=>e.mentions.has))})}createTooltip(e,t="",n="",s=!1,i=10,a=null){const r=document.createElement("div");r.className=`tooltip ${t}`,r.style.opacity=0,s?r.innerHTML=n:r.textContent=n,document.body.querySelector("#app").appendChild(r),"function"==typeof a&&a(r),r.offsetHeight;const o=r.getBoundingClientRect(),l=o.width,d=o.height,c=e.getBoundingClientRect(),u=innerWidth,p=innerHeight,g=[["bottom",(c.left+c.right)/2-l/2,c.bottom+10,!0],["top",(c.left+c.right)/2-l/2,c.top-d-10,!0],["right",c.right+10,(c.top+c.bottom)/2-d/2,!0],["left",c.left-l-10,(c.top+c.bottom)/2-d/2,!0]];let h=null,m=-1/0;for(const[e,t,n,s]of g){let e=t,i=n;if(e>=0&&e+l<=u&&i>=0&&i+d<=p){m=100,h=[e,i];break}if(s){const s=Math.max(0,Math.min(e,u-l)),a=Math.max(0,Math.min(i,p-d)),r=!(s+l<=c.left||s>=c.right||a+d<=c.top||a>=c.bottom),o=Math.abs(s-t)+Math.abs(a-n),g=r?-50-o:50-o/10;g>m&&(m=g,h=[s,a])}}return h?(r.style.left=`${h[0]}px`,r.style.top=`${h[1]}px`):(r.style.left=`${Math.max(0,Math.min((c.left+c.right)/2-l/2,u-l))}px`,r.style.top=`${Math.max(0,Math.min((c.top+c.bottom)/2-d/2,p-d))}px`),e.addEventListener("mousewheel",e=>r.scrollBy({left:e.deltaX,top:e.deltaY,behavior:"smooth"})),setTimeout(()=>r.style.opacity=1,i),r}removeTooltips(){document.querySelectorAll(".tooltip").forEach(e=>e.remove())}addTooltipListener(e){if(!e.dataset.tooltip)return;let t;e.addEventListener("mouseenter",()=>{e.dataset.tooltip&&(t&&t.remove(),t=this.createTooltip(e,"",e.dataset.tooltip,"true"===e.dataset.tooltipHtml,+e.dataset.tooltipDelay||100))}),e.addEventListener("mouseleave",()=>{t&&(t.remove(),t=null)})}positionBottomMenu(e,t){t.style.left="",t.style.right="",t.style.top="",t.style.bottom="";const n=()=>{if(!t.classList.contains("show"))return;const s=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=innerWidth,r=innerHeight;i.left+s.width<=a?(t.style.left=`${i.left}px`,t.style.right="auto"):(t.style.right=a-i.right+"px",t.style.left="auto");i.top>=s.height?(t.style.bottom=r-i.top+"px",t.style.top="auto"):(t.style.top=`${i.bottom}px`,t.style.bottom="auto"),requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionSubmenu(e,t){e.style.left="",e.style.right="",e.style.top="",e.style.bottom="";const n=()=>{if(!e.classList.contains("show"))return;const s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left;o<s.width+20&&l>o&&(e.style.left="auto",e.style.right="calc(100% + 4px)");const d=r-i.bottom,c=i.top;s.bottom>r&&c>d&&(e.style.top="auto",e.style.bottom="0"),requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionLevelsMenu(e,t){t.style.left="",t.style.right="",t.style.top="",t.style.bottom="";const n=()=>{if(!t.classList.contains("show"))return;const s=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left,d=o>=s.width+8,c=l>=s.width+8;d?(t.style.left=`${i.right+8}px`,t.style.right="auto"):c?(t.style.right=a-i.left+8+"px",t.style.left="auto"):o>l?(t.style.left=`${i.right+8}px`,t.style.right="auto"):(t.style.right=a-i.left+8+"px",t.style.left="auto");const u=Math.max(Math.min(i.top+(i.height-s.height)/2,r-s.height-8),8);t.style.top=`${u}px`,t.style.bottom="auto",requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}positionWarningSubmenu(e,t){e.style.left="",e.style.right="",e.style.top="",e.style.bottom="";const n=()=>{if(!e.classList.contains("show"))return;const s=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=innerWidth,r=innerHeight,o=a-i.right,l=i.left,d=o>=s.width+8,c=l>=s.width+8;d?(e.style.left=`${i.right+8}px`,e.style.right="auto"):c?(e.style.right=a-i.left+8+"px",e.style.left="auto"):o>l?(e.style.left=`${i.right+8}px`,e.style.right="auto"):(e.style.right=a-i.left+8+"px",e.style.left="auto");const u=Math.max(Math.min(i.top+(i.height-s.height)/2,r-s.height-8),8);e.style.top=`${u}px`,e.style.bottom="auto",requestAnimationFrame(()=>n())};requestAnimationFrame(()=>n())}createWarningItem(e,t,n,s,i=!1){const a=this.ws.store.favorite[s],r=document.createElement("div");r.classList.add("warning-menu-item"),i?(r.draggable=!0,r.classList.add("favorite-item")):r.classList.add("submenu-option"),r.dataset.warning=e.title;const o=document.createElement("span");o.classList.add("favorite-star"),a.includes(e.title)?(o.classList.add("favorited"),o.innerHTML="<i class='fas fa-star'></i>"):o.innerHTML="<i class='fa-regular fa-star'></i>",r.appendChild(o),o.addEventListener("click",t=>{t.stopPropagation();const n=a.indexOf(e.title),l="reverts"===s?document.querySelector("#revert-menu > .warning-menu"):document.querySelector("#warn-menu > .warning-menu");if(-1===n){a.push(e.title),o.classList.add("favorited","spin"),o.innerHTML="<i class='fas fa-star'></i>";let t=l.querySelector(".favorites-section");if(!t){t=document.createElement("div"),t.className="favorites-section";const e=document.createElement("div");e.className="favorites-header",e.innerHTML='<span class="icon fas fa-star"></span><span>Favorites</span>',t.appendChild(e);const n=document.createElement("div");n.className="favorites-container",t.appendChild(n),l.insertBefore(t,l.firstChild);const s=document.createElement("div");s.className="favorites-separator",l.insertBefore(s,t.nextSibling)}const n=l.__executeCallbacks__;n&&t.querySelector(".favorites-container").appendChild(this.createWarningItem(e,n.executeWithWarn,n.executeNoWarn,s,!0))}else if(a.splice(n,1),o.classList.remove("favorited"),o.classList.add("spin"),o.innerHTML="<i class='fa-regular fa-star'></i>",i){r.remove();const t=l.querySelector(".favorites-section");var d;if(0===(null==t?void 0:t.querySelector(".favorites-container").children.length))t.remove(),null===(d=l.querySelector(".favorites-separator"))||void 0===d||d.remove();const n=document.body.querySelector(`.warning-menu-item:not(.favorite-item)[data-warning="${e.title}"]`);if(n){const e=n.querySelector(".favorite-star");e.classList.remove("favorited"),e.innerHTML="<i class='fa-regular fa-star'></i>",e.classList.add("spin"),setTimeout(()=>e.classList.remove("spin"),500)}}else{const t=l.querySelector(".favorites-section");if(t){const n=t.querySelector(`[data-warning="${e.title}"]`);var c;if(n)if(n.remove(),0===t.querySelector(".favorites-container").children.length)t.remove(),null===(c=l.querySelector(".favorites-separator"))||void 0===c||c.remove()}}setTimeout(()=>o.classList.remove("spin"),500)});const l=document.createElement("span");l.className=`icon ${e.icon}`,r.appendChild(l);const d=document.createElement("span");d.className="warning-menu-title",d.textContent=e.title,r.appendChild(d);const c=document.createElement("span");if(c.className="fas fa-circle-question",c.dataset.tooltip=`${e.description} (click for template preview)`,r.appendChild(c),this.addTooltipListener(c),c.addEventListener("click",async t=>{t.preventDefault(),t.stopPropagation();const n=this.ws;this.dialog.show(e.title,async function(){return(await Promise.allSettled(e.templates.map(e=>{const t=n.queue.current.item;return n.api.parse(`{{${e.template}|${t.page.title}}}`,`User:${t.user.name}`,!0)}))).map(e=>{let t="";t="fulfilled"===e.status?e.value:`<em>Error loading template preview: ${e.reason}</em>`;const s=(new DOMParser).parseFromString(t,"text/html").body;return s.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${n.server}`).href)}),s.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${n.server}`).href)}),s.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,s]=e.trim().split(/\s+/,2),i=new URL(t,`https://${n.server}`).href;return s?`${i} ${s}`:i}).join(", ");e.setAttribute("srcset",t)}),s.innerHTML}).join("<div style='height: 1px; background: #0004; margin: 8px 0;'></div>")}())}),!i){const i=document.createElement("div");if(i.classList.add("warning-menu-buttons"),"reverts"===s){const t=document.createElement("span");t.className="warning-menu-button warning-menu-no-warn-button",t.textContent="no warn",i.appendChild(t),t.addEventListener("click",async t=>{t.stopPropagation(),await n(e.title)})}const a=document.createElement("span");a.className="warning-menu-button warning-menu-levels-button",a.textContent="advanced",i.appendChild(a),r.appendChild(i);const o=document.createElement("div");o.className="levels-menu";for(const n of e.templates){if(n.generic)continue;const s=document.createElement("span");s.className=`levels-menu-item colorize-level colorize-level-${n.name}`,s.textContent=n.name,o.appendChild(s),s.addEventListener("click",async()=>await t(e.title,n.name))}document.body.querySelector("#app").appendChild(o),a.addEventListener("click",e=>{e.stopPropagation();const t=o.classList.contains("show");document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show")),t||(o.classList.add("show"),this.positionLevelsMenu(a,o))})}return r.addEventListener("click",async n=>{n.target.closest(".warning-menu-button")||n.target.closest(".favorite-star")||await t(e.title,"auto")}),i&&(r.addEventListener("dragstart",t=>{t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e.title),r.classList.add("dragging")}),r.addEventListener("dragend",()=>{r.classList.remove("dragging")}),r.addEventListener("dragover",e=>{e.preventDefault(),e.dataTransfer.dropEffect="move";const t=document.querySelector(".dragging");if(t&&t!==r){const n=r.getBoundingClientRect(),s=n.top+n.height/2;e.clientY<s?r.parentNode.insertBefore(t,r):r.parentNode.insertBefore(t,r.nextSibling)}}),r.addEventListener("drop",e=>{e.preventDefault();const t=Array.from(r.closest(".favorites-section").querySelectorAll(".favorite-item"));this.ws.store.favorite[s]=t.map(e=>e.dataset.warning)})),r}createWarnMenu(e,t,n){var s,i,a;removeEventListener("keydown",this.warningMenuKeyListener),document.querySelectorAll(".levels-menu").forEach(e=>e.remove()),document.querySelectorAll(".warning-submenu").forEach(e=>e.remove());const r=document.createElement("div");r.className="warning-menu",t.appendChild(r),r.addEventListener("click",e=>{e.target.closest(".warning-submenu")||document.body.querySelectorAll(".warning-submenu.show").forEach(e=>e.classList.remove("show")),e.target.closest(".levels-menu")||document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show"))});const o=async(t,n)=>{const s=(0,u.getWarningFromLookup)(t),i=this.ws.store.settings.auto_report;await this.ws.execute({actions:[{name:"next-item",params:{}},"reverts"===e?{name:"rollback-edit",params:{summary:s.summary}}:{},{name:"warn-user",params:{warning:t,level:n}},{name:"highlight-user",params:{}}].concat(i.enabled&&s.reportable&&i.for.has(t)?[{name:"if",condition:{name:"user-final-warning"},actions:[{name:"report-user-to-aiv",params:{reportMessage:"Vandalism past final warning"}}]}]:[])})},l=async e=>{const t=(0,u.getWarningFromLookup)(e);await this.ws.execute({actions:[{name:"next-item",params:{}},{name:"rollback-edit",params:{summary:t.summary}}]})},d=null!==(s=null===(i=this.ws.queue.current.item)||void 0===i?void 0:i.type)&&void 0!==s?s:this.ws.queue.current.type;let p=c.Queue.groups[d];if("abuselog"===d&&null!==(a=this.ws.queue.current.item)&&void 0!==a&&a.revid&&(p="edit"),r.__executeCallbacks__={executeWithWarn:o,executeNoWarn:l},this.ws.store.favorite.reverts.length>0){const t=document.createElement("div");t.className="favorites-section";const s=document.createElement("div");s.className="favorites-header",s.innerHTML='<span class="icon fas fa-star"></span><span>Favorites</span>',t.appendChild(s);const i=document.createElement("div");i.className="favorites-container",t.appendChild(i);const a=Object.values(u.warningsLookup).filter(e=>e.queueType.includes(p)&&(!n||"function"!=typeof e.show||e.show(n)));for(const t of this.ws.store.favorite[e]){const n=a.find(e=>e.title===t);if(n){const t=this.createWarningItem(n,o,l,e,!0);i.appendChild(t)}}r.appendChild(t);const d=document.createElement("div");d.className="favorites-separator",r.appendChild(d)}let g=0;for(const[,t]of Object.entries(u.warnings)){let s=0;const i=[];for(const e of t.warnings)("function"!=typeof e.show||e.show(n))&&e.queueType.includes(p)&&(i.push(e),s++,g++);if(0===s)continue;const a=document.createElement("div");a.className="menu-option submenu-trigger";const d=document.createElement("span");d.className=`icon ${t.icon}`,a.appendChild(d);const c=document.createElement("span");c.textContent=t.title,a.appendChild(c);const u=document.createElement("span");u.className="submenu-arrow fas fa-chevron-right",a.appendChild(u),r.appendChild(a);const h=document.createElement("div");h.className="warning-submenu submenu",document.body.querySelector("#app").appendChild(h);for(const t of i){const n=this.createWarningItem(t,o,l,e,!1);h.appendChild(n)}a.addEventListener("click",e=>{e.stopPropagation();const t=h.classList.contains("show");document.body.querySelectorAll(".warning-submenu.show").forEach(e=>{e!==h&&(e.classList.remove("show"),document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show")))}),t?(a.classList.remove("focus-opened"),h.classList.remove("show"),document.body.querySelectorAll(".levels-menu.show").forEach(e=>e.classList.remove("show"))):(a.classList.add("focus-opened"),h.classList.add("show"),this.positionWarningSubmenu(h,a))})}if(0===g){const e=document.createElement("div");e.className="warning-menu-no-items",e.textContent="No warnings available for this edit.",r.appendChild(e)}addEventListener("keydown",this.warningMenuKeyListener)}warningMenuKeyListener(e){if("Tab"===e.key){const t=document.querySelector("#warn-menu.show, #revert-menu.show");if(t){if(t.querySelector(":scope > div > .menu-option.focus-opened")){const t=document.body.querySelector(".submenu.show");if(t){const n=t.querySelectorAll(":scope > .warning-menu-item");if(n.length>0){const s=(Array.from(n).indexOf(t.querySelector(".focus-visible"))+(e.shiftKey?-1:1)+n.length)%n.length;document.querySelectorAll(".focus-visible").forEach(e=>e.classList.remove("focus-visible")),n[s].classList.add("focus-visible"),e.preventDefault()}}}else{const n=t.querySelectorAll(":scope > div > .favorites-section > .favorites-container > .warning-menu-item,\n\t\t\t\t\t\t :scope > div > .menu-option");if(n.length>0){const s=(Array.from(n).indexOf(t.querySelector(".focus-visible"))+(e.shiftKey?-1:1)+n.length)%n.length;document.querySelectorAll(".focus-visible").forEach(e=>e.classList.remove("focus-visible")),n[s].classList.add("focus-visible"),e.preventDefault()}}}}else if("Enter"===e.key){if(document.querySelector("#warn-menu.show, #revert-menu.show")){const t=document.querySelector(".focus-visible");t&&(t.click(),e.preventDefault())}}else if("Escape"===e.key){if(document.querySelector("#warn-menu.show, #revert-menu.show")){const t=document.querySelector(".focus-opened");t?(t.classList.remove("focus-opened"),t.classList.add("focus-visible"),t.click()):(document.querySelectorAll(".bottom-tool-menu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>e.classList.remove("active")),document.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".levels-menu").forEach(e=>e.classList.remove("show"))),e.preventDefault()}}}closeMenus(){document.querySelectorAll(".bottom-tool-menu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".bottom-tool-trigger").forEach(e=>e.classList.remove("active")),document.querySelectorAll(".submenu").forEach(e=>e.classList.remove("show")),document.querySelectorAll(".levels-menu").forEach(e=>e.classList.remove("show"))}}function y(e){const t=new Set(["B","I","EM","STRONG","CODE","SPAN","BR"]),n=document.createElement("div");n.innerHTML=e;const s=e=>{const n=[...e.childNodes];for(const e of n)if(e.nodeType===Node.ELEMENT_NODE)if(t.has(e.tagName)){for(;e.attributes.length>0;)e.removeAttribute(e.attributes[0].name);s(e)}else e.replaceWith(...e.childNodes)};return s(n),n.innerHTML}t.GUI=w,h(w,"palettes",{traffic:(0,p.BuildPalette)(1e3,"#78c675","#fdff7a","#fcff54","#fbff12","#ffc619","#ff8812","#f56214","#f73214","#fc0303","#fc0303"),magma:(0,p.BuildPalette)(1e3,"#000004","#1b0c41","#4a0c6b","#781c6d","#a52c60","#cf4446","#ed6925","#fb9b06","#f7d13d","#fcffa4"),plasma:(0,p.BuildPalette)(1e3,"#0d0887","#46039f","#7201a8","#9c179e","#bd3786","#d8576b","#ed7953","#fb9f3a","#fdca26","#f0f921"),viridis:(0,p.BuildPalette)(1e3,"#440154","#3b528b","#21918c","#5ec962","#fde725"),natural:(0,p.BuildPalette)(1e3,"#ffffff","#18ff18"),cool:(0,p.BuildPalette)(1e3,"#ffffff","#1818ff"),heat:(0,p.BuildPalette)(1e3,"#ffffff","#ff1818"),grey:(0,p.BuildPalette)(1e3,"#000000","#ffffff")})},4674(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Notifications=void 0;t.Notifications=class{constructor(e){this.ws=e,this.first={},["alert","message"].forEach(e=>{this[e]=[],this.update(e),this.first[e]=!0,this.load(e)})}find(e,t){if(!1===(null!=e&&e)){let e=this.alert.find(e=>e.id===t);return e?{type:"alert",notification:e}:(e=this.message.find(e=>e.id===t),e?{type:"message",notification:e}:void 0)}return this[e].find(e=>e.id===t)}async load(e){try{const t=(await this.ws.api.continuous({action:"query",meta:"notifications",notlimit:"max",notprop:"list",notfilter:"!read",notsections:e,notformat:"model"})).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.notifications)||void 0===t?void 0:t.list)||[]});await Promise.all(t.map(async e=>this.ws.api.parse(e["*"].body,void 0,void 0,!0).then(t=>{var n;return null!==(n=void(e["*"].parsed=t))&&void 0!==n?n:e})));let n=!1;for(const s of t)this[e].some(e=>e.id===s.id&&e.read===s.read)||(this[e].unshift(s),n=!0);if(n){const t=this.ws.store.settings.zen_mode;t.enabled&&!t[`${e}s`].enabled||this.ws.audio.playSound(["notification",e]),this.update(e)}}finally{setTimeout(()=>this.load(e),1e4)}}update(e){this.count();const t=this[e],n=t.filter(e=>!e.read),s=this.ws.store.settings.zen_mode;s.enabled&&!s[`${e}s`].enabled||n.filter(e=>!e.seen&&!e.notified).forEach(t=>{t.notified=!0,this.first[e]||electron.sendNotification({title:this.ws.util.textify(t["*"].header),body:this.ws.util.textify(t["*"].body)},t["*"].links.primary.url)}),this.first[e]=!1;const i=document.querySelector(`#${e}s-count`),a=document.querySelector(`#${e}s-list`);i.textContent=n.length,i.classList.toggle("hidden",0===n.length),0===t.length?a.innerHTML=`<div class="notifications-empty">No new ${e}s</div>`:(a.innerHTML="",t.forEach(t=>{const n=t["*"];{const s=document.createElement("div");s.classList.add("notification"),s.classList.add(t.read?"read":"unread"),s.addEventListener("click",()=>{this.read(e,t),this.ws.open(n.links.primary.url)});{const e=document.createElement("div");e.classList.add("notification-icon"),e.innerHTML=`<img src="${new URL(n.iconUrl,`https://${this.ws.server}/`).toString()}" alt="icon">`,s.appendChild(e)}{const e=document.createElement("div");e.classList.add("notification-content"),s.appendChild(e);{const t=document.createElement("div");t.classList.add("notification-header"),t.innerHTML=this.ws.util.truncate(n.header,100),e.appendChild(t)}{const t=document.createElement("div");t.classList.add("notification-body"),t.innerHTML=n.parsed,e.appendChild(t),t.querySelectorAll("[href]").forEach(e=>{const t=e.getAttribute("href");e.setAttribute("href",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[src]").forEach(e=>{const t=e.getAttribute("src");e.setAttribute("src",new URL(t,`https://${this.ws.server}`).href)}),t.querySelectorAll("[srcset]").forEach(e=>{const t=e.getAttribute("srcset").split(",").map(e=>{const[t,n]=e.trim().split(/\s+/,2),s=new URL(t,`https://${this.ws.server}`).href;return n?`${s} ${n}`:s}).join(", ");e.setAttribute("srcset",t)}),t.querySelectorAll("a").forEach(e=>{e.target="_blank"})}{const t=document.createElement("div");t.classList.add("notification-links"),n.links.secondary.forEach(e=>{const n=document.createElement("a");n.href=e.url,n.target="_blank",n.textContent=e.label,t.appendChild(n)}),e.appendChild(t)}}{const n=document.createElement("div");if(n.classList.add("notification-right"),s.appendChild(n),!t.read){const s=document.createElement("div");s.classList.add("notification-unread-indicator"),s.addEventListener("click",n=>{n.stopPropagation(),this.read(e,t)}),n.appendChild(s)}{const e=document.createElement("div");e.classList.add("notification-timestamp"),e.dataset.time=t.timestamp.utciso8601,e.dataset.timeFormat="notification",e.textContent=this.ws.util.formatNotificationTime(new Date(t.timestamp.utciso8601)),n.appendChild(e)}}a.appendChild(s)}}))}seen(e){this.ws.api.postWithToken({action:"echomarkseen",type:e}),this[e].forEach(e=>e.seen=!0)}read(e,t){t?(t.read=!0,this.update(e),this.ws.api.postWithToken({action:"echomarkread",sections:e,list:t.id})):(this[e].forEach(e=>e.read=!0),this.update(e),this.ws.api.postWithToken({action:"echomarkread",sections:e,all:!0}))}count(){var e,t;const n=this.ws.store.settings.zen_mode;let s=0;n.enabled&&!n.alerts.enabled||(s+=(null===(e=this.alert)||void 0===e?void 0:e.filter(e=>!e.read).length)||0),n.enabled&&!n.messages.enabled||(s+=(null===(t=this.message)||void 0===t?void 0:t.filter(e=>!e.read).length)||0),electron.setBadgeCount(s),document.title=s>0?`(${s}) WikiShield`:"WikiShield"}}},6151(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ProgressBar=void 0;t.ProgressBar=class{constructor(){this.$bar=document.createElement("div"),this.$bar.classList.add("progress-bar"),this.$bar.style.opacity=1,document.querySelector("#progress-bar-container").appendChild(this.$bar),this.$overlay=document.createElement("div"),this.$overlay.classList.add("progress-bar-overlay"),this.$overlay.style.width="0%",this.$bar.appendChild(this.$overlay),this.$text=document.createElement("div"),this.$text.classList.add("progress-bar-text"),this.$bar.appendChild(this.$text)}set(e,t,n){this.$text.textContent=e,this.$overlay.style.width=100*Math.min(Math.max(t,0),1)+"%",this.$bar.classList.toggle("error",n),t>=1&&setTimeout(()=>{this.$bar.style.opacity=0,setTimeout(()=>this.$bar.remove(),300)},1700)}}},9117(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.Settings=void 0;var s=n(8678),i=n(870),a=n(9808),r=n(985),o=n(372),l=n(7054),d=n(4018),c=(n(9501),n(955)),u=n(5564),p=n(2069),g=n(8469);function h(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function m(e,t,n){return e.set(f(e,t),n),n}function v(e,t){return e.get(f(e,t))}function f(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}var b=new WeakMap,w=new WeakMap,y=new WeakMap;t.Settings=class{constructor(e){h(this,b,void 0),h(this,w,void 0),h(this,y,void 0),this.ws=e,this.ws.api.getTags().then(e=>{this.wikipediaTags=e})}get active(){return document.querySelector("#settings-container > .settings > .settings-right > div:not(.hidden)")}controller(e){const t=e.key.toLowerCase();if(v(b,this)){if("escape"===t)return v(b,this).call(this,"escape",!0);if("control"===t||"shift"===t||"alt"===t||a.controls.has(t))switch(e.preventDefault(),e.type){case"keydown":v(b,this).call(this,(0,a.buildShortcut)(e),!1);break;case"keyup":v(b,this).call(this,(0,a.buildShortcut)(e),!0)}}else"escape"===t&&"keydown"===e.type&&this.close()}collapsible(e,t,n,s=!0){const i=document.createElement("div");i.className="settings-section collapsible",e.appendChild(i);const a=document.createElement("div");a.className="settings-section-header collapse-title",a.textContent=t(s),i.appendChild(a);const r=document.createElement("div");r.className="collapse-content collapsible",i.appendChild(r);const o=document.createElement("div");o.className="settings-section-desc",o.textContent=n,r.appendChild(o),s?(r.style.height="0px",r.style.opacity=0,r.style.overflow="hidden",i.classList.add("collapsed")):(r.style.height="auto",r.style.opacity=1,r.style.overflow="visible",i.classList.remove("collapsed"));let l,d,c,u,p,g,h=!1;const m=e=>{d||(d=e);const t=e-d,n=Math.min(t/300,1),i=(a=n)<.5?2*a*a:(4-2*a)*a-1;var a;const o=c+(p-c)*i,v=u+(g-u)*i;r.style.height=`${o}px`,r.style.opacity=v,n<1?l=requestAnimationFrame(m):(s?r.style.overflow="hidden":(r.style.height="auto",r.style.overflow="visible"),h=!1,l=null,d=null)};return a.addEventListener("click",()=>{if(h){cancelAnimationFrame(l);const e=r.getBoundingClientRect().height;c=e,u=parseFloat(getComputedStyle(r).opacity)}else c=s?0:r.scrollHeight,u=s?0:1;s=!s,a.textContent=t(s),i.classList.toggle("collapsed",s),r.style.overflow="hidden",s?(p=0,g=0):(p=r.scrollHeight,g=1),h=!0,d=null,l=requestAnimationFrame(m)}),r}start(){electron.onOpenChangelog(()=>{var e;return null!==(e=void this.open())&&void 0!==e?e:this.changelog()});let e=0;document.querySelector("#settings-container").addEventListener("click",t=>{"settings-container"!==t.target.id||(e=Math.max(0,e))||this.close()}),document.querySelector("#settings-general-button").addEventListener("click",this.general.bind(this)),document.querySelector("#settings-audio-button").addEventListener("click",this.audio.bind(this)),document.querySelector("#settings-controls-button").addEventListener("click",this.controls.bind(this)),document.querySelector("#settings-zen-button").addEventListener("click",this.zen.bind(this)),document.querySelector("#settings-app-button").addEventListener("click",this.app.bind(this)),document.querySelector("#settings-queue-button").addEventListener("click",this.queue.bind(this)),document.querySelector("#settings-accessibility-button").addEventListener("click",this.accessibility.bind(this)),document.querySelector("#settings-AI-button").addEventListener("click",this.AI.bind(this)),document.querySelector("#settings-auto-reporting-button").addEventListener("click",this.autoReporting.bind(this)),document.querySelector("#settings-gadgets-button").addEventListener("click",this.gadgets.bind(this)),document.querySelector("#settings-whitelist-users-button").addEventListener("click",this.whitelist.bind(this,"user")),document.querySelector("#settings-whitelist-pages-button").addEventListener("click",this.whitelist.bind(this,"page")),document.querySelector("#settings-whitelist-tags-button").addEventListener("click",this.whitelist.bind(this,"tag")),document.querySelector("#settings-highlight-users-button").addEventListener("click",this.highlight.bind(this,"user")),document.querySelector("#settings-highlight-pages-button").addEventListener("click",this.highlight.bind(this,"page")),document.querySelector("#settings-highlight-tags-button").addEventListener("click",this.highlight.bind(this,"tag")),document.querySelector("#settings-statistics-button").addEventListener("click",this.statistics.bind(this)),document.querySelector("#settings-save-button").addEventListener("click",this.save.bind(this)),document.querySelector("#settings-changelog-button").addEventListener("click",this.changelog.bind(this)),document.querySelector("#settings-about-button").addEventListener("click",this.about.bind(this));{if(!window.isElectron){const e=document.querySelector("#settings-launch-behavior");document.querySelectorAll("#settings-launch-behavior .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-launch-behavior [data-value=${"true"===electron.localStorage.get("WikiShield:OpenExternally")?"new_page":"current_page"}]`).classList.add("selected");const t=e.querySelector("[data-value=current_page]");t.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),t.classList.add("selected"),electron.localStorage.set("WikiShield:OpenExternally",!1)});const n=e.querySelector("[data-value=new_page]");n.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),n.classList.add("selected"),electron.localStorage.set("WikiShield:OpenExternally",!0)})}const t=document.querySelector("#settings-ores-bias"),n=t.querySelector(".settings-slider-track"),s=t.querySelector(".settings-slider-thumb"),i=t.querySelector(".settings-slider-label-left"),a=i.querySelector(".percent"),r=t.querySelector(".settings-slider-label-right"),o=r.querySelector(".percent"),l=e=>{this.ws.store.settings.queue.ores_bias=+e.toFixed(2),e=Math.max(0,Math.min(100,Math.round(100*e))),s.style.left=`${e}%`,n.style.setProperty("--fill",`${e}%`);const t=100-e;a.textContent=`${t}%`,i.classList.toggle("active",t>0);const l=e;o.textContent=`${l}%`,r.classList.toggle("active",l>0)},d=e=>{const t=n.getBoundingClientRect();return(e.clientX-t.left)/t.width};n.addEventListener("click",e=>l(d(e)));let c=!1;s.addEventListener("mousedown",t=>{t.preventDefault(),c=!0,e++,s.classList.add("dragging")}),window.addEventListener("mousemove",e=>{c&&l(d(e))}),window.addEventListener("mouseup",()=>{c&&(c=!1,e--,s.classList.remove("dragging"))}),l(this.ws.store.settings.queue.ores_bias)}{const e=document.querySelector("#settings-maximum-edit-count");e.value=this.ws.store.settings.queue.max_edits,e.addEventListener("change",e=>{const t=+e.target.value;this.ws.store.settings.queue.max_edits=t;for(const[e,n]of this.ws.queue.bypass.entries())n<=t&&this.ws.queue.bypass.delete(e)});const t=document.querySelector("#settings-maximum-queue-size");t.value=this.ws.store.settings.queue.max_size,t.addEventListener("change",e=>this.ws.store.settings.queue.max_size=+e.target.value);const n=document.querySelector("#settings-minimum-ores-score");n.value=this.ws.store.settings.queue.min_ores,n.addEventListener("change",e=>this.ws.store.settings.queue.min_ores=+e.target.value);const s=document.querySelector("#settings-watchlist-expiry");s.value=this.ws.store.settings.expiry.watchlist,s.addEventListener("change",e=>this.ws.store.settings.expiry.watchlist=e.target.value);const i=document.querySelector("#settings-namespaces-container");i.innerHTML="",d.namespaces.forEach(e=>{const t=document.createElement("div");t.className="namespace-item",t.dataset.namespaceId=e.id,t.innerHTML=`\n\t\t\t\t\t<label class="checkbox-box">\n\t\t\t\t\t\t<input type="checkbox" autoComplete="off">\n\t\t\t\t\t\t<div class="checkmark"></div>\n\t\t\t\t\t</label>\n\t\t\t\t\t<span class="namespace-name">${e.name}</span>\n\t\t\t\t`;const n=t.querySelector("input[type=checkbox]");n.checked=this.ws.store.settings.namespaces.includes(e.id),n.addEventListener("change",t=>{if(t.target.checked)this.ws.store.settings.namespaces.includes(e.id)||this.ws.store.settings.namespaces.push(e.id);else{const t=this.ws.store.settings.namespaces.indexOf(e.id);-1!==t&&this.ws.store.settings.namespaces.splice(t,1)}}),i.appendChild(t)})}{const e=document.querySelector("#settings-ORES-alert-toggle");e.value=this.ws.store.settings.audio.ores_alert.enabled,e.addEventListener("change",t=>{this.ws.store.settings.audio.ores_alert.enabled=e.value});const t=document.querySelector("#settings-ORES-alert-threshold");t.value=this.ws.store.settings.audio.ores_alert.threshold,t.addEventListener("change",e=>{this.ws.store.settings.audio.ores_alert.threshold=+t.value});const n=document.querySelector("#settings-master-volume");n.value=this.ws.store.settings.audio.volume.master,n.addEventListener("change",e=>{this.ws.store.settings.audio.volume.master=+n.value});const s={sound:(e,t,n,s,i)=>{const a=["master",...t].join("."),r=document.createElement("volume-control");r.setAttribute("title",n),r.setAttribute("description",s),i&&r.setPreview(this.ws.audio,t),r.value=this.ws.store.settings.audio.volume[a],r.addEventListener("change",()=>{const e=this.ws.store.settings.audio.volume[a];this.ws.store.settings.audio.volume[a]=r.value,e!==r.value&&this.ws.audio.onvolumechanged()}),e.appendChild(r)},category:(e,t,n,s)=>{const i=["master",...t].join("."),a=this.collapsible(e,e=>n,s,!0),r=document.createElement("volume-control");r.setAttribute("title","Category Volume"),r.value=this.ws.store.settings.audio.volume[i],r.addEventListener("change",()=>{const e=this.ws.store.settings.audio.volume[i];this.ws.store.settings.audio.volume[i]=r.value,e!==r.value&&this.ws.audio.onvolumechanged()}),a.appendChild(r);const o=document.createElement("div");return o.className="settings-content",a.appendChild(o),o}},i=(e,t,n)=>{for(const[r,o]of Object.entries(e))switch(o.type){case"sound":var a;s.sound(n,[...t,r],o.title,o.description,null===(a=o.preview)||void 0===a||a);break;case"category":i(o.properties,[...t,r],s.category(n,[...t,r],o.title,o.description))}};i(this.ws.audio.audio,[],document.querySelector("#settings-sounds-container"))}{const e=document.querySelector("#repeat-control-scripts-toggle");e.value=this.ws.store.settings.repeat_control_scripts,e.addEventListener("change",t=>this.ws.store.settings.repeat_control_scripts=e.value),document.querySelector("#settings-new-control-script").addEventListener("click",async()=>{this.ws.store.control_scripts.unshift({keys:[],actions:[]}),this.controls()})}{const e=document.querySelector("#settings-zen-mode");e.value=this.ws.store.settings.zen_mode.enabled,e.addEventListener("change",t=>{this.ws.store.settings.zen_mode.enabled=e.value,this.ws.gui.updateZenMode()});const t=document.querySelector("#settings-zen-mode-sound");t.value=this.ws.store.settings.zen_mode.sound.enabled,t.addEventListener("change",e=>{this.ws.store.settings.zen_mode.sound.enabled=t.value,this.ws.gui.updateZenMode()});const n=document.querySelector("#settings-zen-mode-music");n.value=this.ws.store.settings.zen_mode.music.enabled,n.addEventListener("change",e=>{this.ws.store.settings.zen_mode.music.enabled=n.value,this.ws.gui.updateZenMode()});const s=document.querySelector("#settings-zen-mode-alerts");s.value=this.ws.store.settings.zen_mode.alerts.enabled,s.addEventListener("change",e=>{this.ws.store.settings.zen_mode.alerts.enabled=s.value,this.ws.gui.updateZenMode()});const i=document.querySelector("#settings-zen-mode-messages");i.value=this.ws.store.settings.zen_mode.messages.enabled,i.addEventListener("change",e=>{this.ws.store.settings.zen_mode.messages.enabled=i.value,this.ws.gui.updateZenMode()});const a=document.querySelector("#settings-zen-mode-toasts");a.value=this.ws.store.settings.zen_mode.toasts.enabled,a.addEventListener("change",e=>{this.ws.store.settings.zen_mode.toasts.enabled=a.value,this.ws.gui.updateZenMode()});const r=document.querySelector("#settings-zen-mode-badges");r.value=this.ws.store.settings.zen_mode.badges.enabled,r.addEventListener("change",e=>{this.ws.store.settings.zen_mode.badges.enabled=r.value,this.ws.gui.updateZenMode()})}{const e=document.querySelector("#settings-startup-performance");document.querySelectorAll("#settings-startup-performance .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-startup-performance [data-value=${this.ws.store.settings.performance.startup}]`).classList.add("selected");const t=e.querySelector("[data-value=always_off]");t.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),t.classList.add("selected"),this.ws.store.settings.performance.startup="always_off"});const n=e.querySelector("[data-value=adaptive]");n.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),n.classList.add("selected"),this.ws.store.settings.performance.startup="adaptive"});const s=e.querySelector("[data-value=always_on]");s.addEventListener("click",()=>{e.querySelectorAll(".selected").forEach(e=>e.classList.remove("selected")),s.classList.add("selected"),this.ws.store.settings.performance.startup="always_on"})}{const e=document.querySelector("#settings-queues");o.Queue.types.map(e=>({type:e,data:this.ws.store.settings.queue[e]})).sort((e,t)=>e.data.order-t.data.order).forEach(t=>{var n;const s=document.createElement("draggable-order-item");s.setAttribute("key",t.type),s.setAttribute("name",null!==(n={recent:"Recent changes",pending:"Pending changes",users:"User creations",watchlist:"Watchlist",abuselog:"Abuse log"}[t.type])&&void 0!==n?n:t.type),s.enabled=t.data.enabled,e.addItem(s,t.type)}),e.addEventListener("toggle",e=>{var t;const n=null===(t=e.target.closest("draggable-order-item"))||void 0===t?void 0:t.getAttribute("key");n&&(this.ws.store.settings.queue[n].enabled=e.detail.enabled,this.ws.gui.reorderQueues())}),e.addEventListener("reorder",e=>{e.detail.keys.forEach((e,t)=>{this.ws.store.settings.queue[e].order=t,this.ws.gui.reorderQueues()})});const t=document.querySelector("#settings-palette-selector");Object.entries(g.GUI.palettes).forEach(([e,n])=>{const s=document.createElement("div");s.className="palette-option",s.classList.toggle("selected",this.ws.store.UI.theme.palette===e),s.dataset.palette=e,s.addEventListener("click",()=>{document.querySelectorAll(".palette-option.selected").forEach(e=>e.classList.remove("selected")),s.classList.add("selected"),this.ws.store.UI.theme.palette=e,this.ws.gui.updatePalette()}),t.appendChild(s);const i=document.createElement("div");i.className="palette-name",i.textContent=new p.Text(e).case(p.Text.Case.Title).get(),s.appendChild(i);const a=document.createElement("div");a.className="palette-preview",s.appendChild(a);const r=n.length,o=document.createElement("canvas");o.width=r,o.height=1;const l=o.getContext("2d"),d=l.createImageData(r,1);n.forEach((e,t)=>{const n=e.match(/\d+/g).map(e=>parseInt(e,10)),s=4*t;d.data[s]=n[0],d.data[s+1]=n[1],d.data[s+2]=n[2],d.data[s+3]=255}),l.putImageData(d,0,0),a.appendChild(o)})}{const e=document.querySelector("#settings-dyslexia-font");e.value=this.ws.store.settings.accessibility.dyslexia,e.addEventListener("change",t=>{this.ws.store.settings.accessibility.dyslexia=e.value,this.ws.gui.updateAccessibility()});const t=document.querySelector("#settings-reduce-motion");t.value=this.ws.store.settings.accessibility.reduce_motion,t.addEventListener("change",e=>{this.ws.store.settings.accessibility.reduce_motion=t.value,this.ws.gui.updateAccessibility()})}{const e=document.querySelector("#settings-AI-toggle");e.value=this.ws.store.settings.AI.enabled,e.addEventListener("change",t=>{var n;if(null===(n=this.ws.AI)||void 0===n||n.cancel.all(!0),this.ws.store.settings.AI.enabled=e.value,this.ws.store.settings.AI.enabled)if("Ollama"===this.ws.store.settings.AI.provider)this.ws.AI=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);else this.ws.AI=null;else this.ws.AI=null});const t=document.querySelector("#settings-AI-edit-analysis-toggle");t.value=this.ws.store.settings.AI.edit_analysis.enabled,t.addEventListener("change",e=>this.ws.store.settings.AI.edit_analysis.enabled=e.target.value);const n=document.querySelector("#settings-AI-username-analysis-toggle");n.value=this.ws.store.settings.AI.username_analysis.enabled,n.addEventListener("change",e=>this.ws.store.settings.AI.username_analysis.enabled=e.target.value);const i=document.querySelector("#ollama-url-input");i.value=this.ws.store.settings.AI.Ollama.server,i.addEventListener("change",e=>{this.ws.store.settings.AI.Ollama.server=i.value.trim(),"Ollama"===this.ws.store.settings.AI.provider&&this.ws.AI&&this.ws.AI.cancel.all(!0)});const a=document.querySelector("#settings-ollama-test-connection");a.addEventListener("click",async()=>{var e;if(a.disabled)return;a.disabled=!0;const t=document.querySelector("#settings-ollama-connection-status"),n=t.parentElement;let i;if(n.classList.add("testing"),n.classList.remove("connected","failed"),t.classList.add("animate-loading-dots"),t.textContent="Testing connection","Ollama"===this.ws.store.settings.AI.provider)i=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);null===(e=this.ws.AI)||void 0===e||e.cancel.all(!0),i instanceof s.AI&&await i.test()?(n.classList.add("connected"),n.classList.remove("testing","failed"),t.innerHTML="<span class='fa fa-check-circle'></span> Connected!"):(n.classList.add("failed"),n.classList.remove("testing","connected"),t.innerHTML="<span class='fa fa-times-circle'></span> Failed to connect.<br><small>Make sure you have followed the setup instructions (see below)</small>"),t.classList.remove("animate-loading-dots"),a.disabled=!1});const r=document.querySelector("#settings-ollama-refresh-models");r.addEventListener("click",async()=>{var e;if(r.disabled)return;r.disabled=!0;const t=document.querySelector("#settings-ollama-models"),n=document.querySelector("#settings-ollama-models-status"),i=n.parentElement;n.textContent="Searching",i.classList.add("searching","animate-loading-dots"),i.classList.remove("none","error"),null===(e=this.ws.AI)||void 0===e||e.cancel.all(!0);try{let e;if("Ollama"===this.ws.store.settings.AI.provider)e=new s.AI.providers.Ollama(this.ws,this.ws.store.settings.AI.Ollama);const a=e instanceof s.AI&&await e.models()||[];a.length>0?(i.classList.remove("searching","none","error","animate-loading-dots"),n.innerHTML=`<span class="fa fa-check-circle"></span> Found ${a.length} ${new p.Text("model").get(a.length)}.`,t.innerHTML="",a.forEach(e=>{const n=e.name===this.ws.store.settings.AI.Ollama.model,s=document.createElement("div");s.className="model",s.classList.toggle("selected",n),s.dataset.model=e.name,t.appendChild(s);const i=document.createElement("div");i.className="model-top",s.appendChild(i);const a=document.createElement("span");a.className="indicator fa",a.classList.add(n?"fa-check-circle":"fa-circle"),i.appendChild(a);const r=document.createElement("span");r.className="model-name",r.textContent=e.name,i.appendChild(r);const o=document.createElement("span");o.className="psuedo-indicator fa fa-circle",i.appendChild(o);const l=document.createElement("div");l.className="model-bottom",s.appendChild(l);const d=document.createElement("span");d.className="model-size",d.textContent=this.ws.util.formatBytes(e.size),l.appendChild(d);const c=document.createElement("span");c.className="model-modified",c.textContent=new Date(e.modified_at).toLocaleDateString(),l.appendChild(c),s.addEventListener("click",()=>{var n;if(null===(n=this.ws.AI)||void 0===n||n.cancel.all(!0),"Ollama"===this.ws.store.settings.AI.provider)this.ws.store.settings.AI.Ollama.model=e.name;t.querySelectorAll(".model.selected").forEach(e=>{e.classList.remove("selected");const t=e.querySelector(".indicator");t.classList.remove("fa-circle"),t.classList.add("fa-check-circle")}),s.classList.add("selected");const i=s.querySelector(".indicator");i.classList.remove("fa-circle"),i.classList.add("fa-check-circle")})})):(i.classList.add("none"),i.classList.remove("searching","error","animate-loading-dots"),n.textContent="No models found.")}catch(e){i.classList.add("error"),i.classList.remove("searching","none","animate-loading-dots"),n.innerHTML="<span class='fa fa-times-circle'></span> Error fetching models."}r.disabled=!1})}{const e=document.querySelector("#settings-auto-reporting-toggle");e.value=this.ws.store.settings.auto_report.enabled,e.addEventListener("change",t=>{this.ws.store.settings.auto_report.enabled=e.value});const t=document.querySelector("#settings-auto-reporting-warnings-container");Object.entries(c.warningsLookup).filter(([e,t])=>t.reportable).sort((e,t)=>e[1].title.localeCompare(t[1].title)).forEach(([e,n])=>{const s=document.createElement("div");s.className="auto-reportable-warning-item",s.innerHTML=`\n\t\t\t\t\t\t<label class="checkbox-box" data-warning-key="${e}">\n\t\t\t\t\t\t\t<input type="checkbox" autoComplete="off" ${this.ws.store.settings.auto_report.for.has(e)?"checked":""}>\n\t\t\t\t\t\t\t<div class="checkmark"></div>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<span class="checkbox-name">${n.title}</span>\n\t\t\t\t\t`,s.querySelector("input[type=checkbox]").addEventListener("change",t=>{t.target.checked?this.ws.store.settings.auto_report.for.has(e)||this.ws.store.settings.auto_report.for.add(e):this.ws.store.settings.auto_report.for.delete(e)}),t.appendChild(s)})}{const e=document.querySelector("#settings-auto-welcome-toggle");e.value=this.ws.store.settings.auto_welcome.enabled,e.addEventListener("change",t=>{this.ws.store.settings.auto_welcome.enabled=e.value});const t=document.querySelector("#settings-wikipedia-popups-toggle");t.value=this.ws.store.settings.wikipedia_popups.enabled,t.addEventListener("change",e=>{this.ws.store.settings.wikipedia_popups.enabled=t.value}),window.arePopupsBlocked&&document.querySelector("#wikipedia-popups-toggle").classList.add("disabled");const n=document.querySelector("#talk-page-thanks-for-temporary-users-toggle");n.value=this.ws.store.settings.talk_page_thanks_for_temporary_users.enabled,n.addEventListener("change",e=>{this.ws.store.settings.talk_page_thanks_for_temporary_users.enabled=n.value});const s=document.querySelector("#settings-username-highlighting-toggle");s.value=this.ws.store.settings.username_highlighting.enabled,s.addEventListener("change",e=>{this.ws.store.settings.username_highlighting.enabled=s.value});const i=document.querySelector("#settings-username-highlighting-fuzzy-toggle");i.value=this.ws.store.settings.username_highlighting.fuzzy,i.addEventListener("change",e=>{this.ws.store.settings.username_highlighting.fuzzy=i.value})}{const e=document.querySelector("#settings-save-status");document.querySelector("#settings-export-button").addEventListener("click",async t=>{try{const t=this.ws.export();await electron.copyToClipboard(t),e.classList.remove("hidden","error","info"),e.classList.add("success"),e.innerHTML='\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-check-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Settings exported successfully!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">The base64 string has been copied to your clipboard.</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t'}catch(t){e.classList.remove("hidden","success","info"),e.classList.add("error"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-times-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Export failed!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">${t.message}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}});document.querySelector("#settings-import-button").addEventListener("click",async t=>{try{const t=await this.ws.gui.dialog.input("Import Settings","Please paste the base64 string of your exported settings below:");if(!t)throw new Error("No input provided.");const n=await this.ws.noinit(t),[s,i]=n.reduce((e,t)=>(t.expected?e[0].push(t):e[1].push(t),e),[[],[]]);e.classList.remove("hidden","error","info"),e.classList.add("success"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-check-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Settings imported successfully!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">\n\t\t\t\t\t\t\t\t\t${i.length>0?`<br><br><strong>Encountered ${new p.Text("%n issue").get(i.length)}:</strong><br>${i.map(e=>`- ${e.message}`).join("<br>")}`:""}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}catch(t){e.classList.remove("hidden","success","info"),e.classList.add("error"),e.innerHTML=`\n\t\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t\t<i class="fa fa-times-circle status-icon"></i>\n\t\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t\t<div class="status-title">Import failed!</div>\n\t\t\t\t\t\t\t\t<div class="status-desc">${t.message}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}});document.querySelector("#settings-reset-button").addEventListener("click",async t=>{await this.ws.gui.dialog.confirm("Reset Settings","Are you sure you want to reset all settings to their default values? This action cannot be undone.","Reset Settings",!0)&&(this.ws.noinit("e30="),e.classList.remove("hidden","error","success"),e.classList.add("info"),e.innerHTML='\n\t\t\t\t\t<div class="status-content">\n\t\t\t\t\t\t<i class="fa fa-info-circle status-icon"></i>\n\t\t\t\t\t\t<div class="status-text">\n\t\t\t\t\t\t\t<div class="status-title">Settings reset successfully.</div>\n\t\t\t\t\t\t\t<div class="status-desc">All settings have been restored to their default values.</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t')})}document.querySelectorAll("#settings-container > .settings > .settings-right > .about [data-link]").forEach(e=>{e.addEventListener("click",t=>this.ws.open(e.dataset.link,t.altKey))})}update(){document.querySelector("#settings-maximum-edit-count").value=this.ws.store.settings.queue.max_edits,document.querySelector("#settings-maximum-queue-size").value=this.ws.store.settings.queue.max_size,document.querySelector("#settings-minimum-ores-score").value=this.ws.store.settings.queue.min_ores,document.querySelector("#settings-watchlist-expiry").value=this.ws.store.settings.expiry.watchlist,document.querySelectorAll("#settings-namespaces-container .namespace-item").forEach(e=>{const t=parseInt(e.dataset.namespaceId,10);e.querySelector("input[type=checkbox]").checked=this.ws.store.settings.namespaces.includes(t)}),document.querySelector("#settings-zen-mode").value=this.ws.store.settings.zen_mode.enabled,document.querySelector("#settings-zen-mode-sound").value=this.ws.store.settings.zen_mode.sound.enabled,document.querySelector("#settings-zen-mode-music").value=this.ws.store.settings.zen_mode.music.enabled,document.querySelector("#settings-zen-mode-alerts").value=this.ws.store.settings.zen_mode.alerts.enabled,document.querySelector("#settings-zen-mode-messages").value=this.ws.store.settings.zen_mode.messages.enabled,document.querySelector("#settings-zen-mode-toasts").value=this.ws.store.settings.zen_mode.toasts.enabled,document.querySelector("#settings-zen-mode-badges").value=this.ws.store.settings.zen_mode.badges.enabled,document.querySelectorAll("#settings-startup-performance .selected").forEach(e=>e.classList.remove("selected")),document.querySelector(`#settings-startup-performance [data-value=${this.ws.store.settings.performance.startup}]`).classList.add("selected");{const e=document.querySelector("#settings-queues");e.clearItems(),o.Queue.types.map(e=>({type:e,data:this.ws.store.settings.queue[e]})).sort((e,t)=>e.data.order-t.data.order).forEach(t=>{var n;const s=document.createElement("draggable-order-item");s.setAttribute("key",t.type),s.setAttribute("name",null!==(n={recent:"Recent changes",pending:"Pending changes",users:"User creations",watchlist:"Watchlist"}[t.type])&&void 0!==n?n:t.type),s.enabled=t.data.enabled,e.addItem(s,t.type)}),document.querySelectorAll(".palette-option").forEach(e=>{e.classList.toggle("selected",e.dataset.palette===this.ws.store.UI.theme.palette)})}document.querySelector("#settings-AI-toggle").value=this.ws.store.settings.AI.enabled,document.querySelector("#settings-AI-edit-analysis-toggle").value=this.ws.store.settings.AI.edit_analysis.enabled,document.querySelector("#settings-AI-username-analysis-toggle").value=this.ws.store.settings.AI.username_analysis.enabled,document.querySelector("#ollama-url-input").value=this.ws.store.settings.AI.Ollama.server;{const e=document.querySelector("#settings-ollama-connection-status"),t=e.parentElement;e.innerHTML="",t.classList.remove("testing","connected","failed")}{document.querySelector("#settings-ollama-models").querySelectorAll(".model").forEach(e=>e.remove());const e=document.querySelector("#settings-ollama-models-status"),t=e.parentElement;e.innerHTML="",t.classList.remove("searching","none","error")}document.querySelector("#settings-auto-reporting-toggle").value=this.ws.store.settings.auto_report.enabled,document.querySelectorAll("#settings-auto-reporting-warnings-container .auto-reportable-warning-item").forEach(e=>{const t=e.querySelector("label").dataset.warningKey;e.querySelector("input[type=checkbox]").checked=this.ws.store.settings.auto_report.for.has(t)}),document.querySelector("#settings-auto-welcome-toggle").value=this.ws.store.settings.auto_welcome.enabled,document.querySelector("#settings-wikipedia-popups-toggle").value=this.ws.store.settings.wikipedia_popups.enabled,document.querySelector("#settings-username-highlighting-toggle").value=this.ws.store.settings.username_highlighting.enabled,document.querySelector("#settings-username-highlighting-fuzzy-toggle").value=this.ws.store.settings.username_highlighting.fuzzy}open(){document.querySelector("#settings-container").classList.add("show"),this.general(),m(y,this,new Promise(e=>{m(w,this,e)}))}close(){this.deselect(),this.ws.audio.stopPreviews(),document.querySelector("#settings-container").classList.remove("show"),v(w,this)&&(v(w,this).call(this),m(w,this,null))}waitForClose(){return v(y,this)}deselect(){document.querySelectorAll("#settings-container > .settings > .settings-left .settings-left-menu-item.selected").forEach(e=>e.classList.remove("selected")),document.querySelectorAll("#settings-container > .settings > .settings-right > :not(.hidden)").forEach(e=>e.classList.add("hidden"))}general(){this.deselect(),document.querySelector("#settings-general-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .general").classList.remove("hidden")}performance(){this.deselect(),document.querySelector("#settings-performance-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .performance").classList.remove("hidden")}audio(){this.deselect(),document.querySelector("#settings-audio-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .audio").classList.remove("hidden")}controls(){this.deselect(),document.querySelector("#settings-controls-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .controls").classList.remove("hidden");{const e=(t,n)=>{if(n.actions.includes(t))return n;for(const s of n.actions)if("if"===s.name||"if not"===s.name){const n=e(t,s);if(n)return n}return null},t=(n,s,a,o)=>{const l=document.createElement("div");if(l.className="control-action",n.appendChild(l),"if"===s.name||"if not"===s.name){var d,c,p;l.innerHTML=`\n\t\t\t\t\t\t<div class="control-action-title">\n\t\t\t\t\t\t\t<div class="control-action-title-left">\n\t\t\t\t\t\t\t\t<span class="fas fa-circle-question"></span>\n\t\t\t\t\t\t\t\t${"if"===s.name?"If":"If not"} <select></select> <span class="params"></span> then:\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="control-action-title-right">\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-up move-action-up"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-down move-action-down"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-trash-can delete-action"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`;const e=l.querySelector("select");Object.entries(i.conditions).forEach(([t,n])=>{e.innerHTML+="title"in n?`<option value="${t}">${n.title}</option>`:`<option value="${t}">${t}</option>`});const n=null!==(d=s.condition)&&void 0!==d?d:{name:Object.keys(i.conditions)[0],params:{}};null!==(c=n.name)&&void 0!==c||(n.name=Object.keys(i.conditions)[0]),null!==(p=n.params)&&void 0!==p||(n.params={}),e.value=n.name,e.addEventListener("change",t=>{n.name=e.value,o()});const r=new Map;for(const e of(0,u.sortDependencies)((null===(g=(h=i.conditions[n.name]).parameters)||void 0===g?void 0:g.call(h))||[])){var g,h;const t=document.createElement("div");t.className="condition-parameter",l.querySelector(".params").appendChild(t);const s={};for(const t of null!==(m=e.dependencies)&&void 0!==m?m:[]){var m;s[t]=n.params[t]}const i="function"==typeof e.default?e.default(s):e.default;let a=null;switch(e.type){case"choice":{const o=document.createElement("select");o.dataset.paramid=e.id,t.appendChild(o);const l="function"==typeof e.options?e.options(s):e.options;for(const e of null!=l?l:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(void 0!==n.params[e.id]){o.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(o.value=i,n.params[e.id]=i);a=()=>{const t={};for(const i of null!==(s=e.dependencies)&&void 0!==s?s:[]){var s;t[i]=n.params[i]}const i=o.value,a="function"==typeof e.options?e.options(t):e.options;o.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(a.includes(i))o.value=i;else{const s="function"==typeof e.default?e.default(t):e.default;o.value=s,n.params[e.id]=s}},o.addEventListener("change",()=>{n.params[e.id]=o.value;for(const t of r.get(e.id)||[])t()})}break;case"text":{const s=document.createElement("input");if(s.type="text",s.dataset.paramid=e.id,t.appendChild(s),void 0!==n.params[e.id]){s.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.value=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=s.value;for(const t of r.get(e.id)||[])t()})}break;case"boolean":{const s=document.createElement("input");if(s.type="checkbox",s.dataset.paramid=e.id,t.appendChild(s),void 0!==n.params[e.id]){s.checked=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.checked=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=s.checked;for(const t of r.get(e.id)||[])t()})}break;case"number":{const s=document.createElement("input");if(s.type="number",s.dataset.paramid=e.id,"min"in e&&(s.min=e.min),"max"in e&&(s.max=e.max),t.appendChild(s),void 0!==n.params[e.id]){s.value=n.params[e.id];for(const t of r.get(e.id)||[])t()}else"default"in e&&(s.value=i,n.params[e.id]=i);s.addEventListener("change",()=>{n.params[e.id]=parseFloat(s.value);for(const t of r.get(e.id)||[])t()})}}if("function"==typeof a)for(const t of null!==(v=e.dependencies)&&void 0!==v?v:[]){var v;r.has(t)||r.set(t,[]),r.get(t).push(a)}}for(const e of s.actions)t(l,e,a,o)}else{const e=r.events[s.name];l.innerHTML=`\n\t\t\t\t\t\t<div class="control-action-title">\n\t\t\t\t\t\t\t<div class="control-action-title-left">\n\t\t\t\t\t\t\t\t<span class="${"icon"in e?e.icon:"fas fa-bolt"}"></span>\n\t\t\t\t\t\t\t\t${"title"in e?e.title:s.name}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="control-action-title-right">\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-up move-action-up"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-chevron-down move-action-down"></span>\n\t\t\t\t\t\t\t\t<span class="fas fa-trash-can delete-action"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`;const t=new Map;for(const n of(0,u.sortDependencies)((null===(f=e.parameters)||void 0===f?void 0:f.call(e))||[])){var f;const e=document.createElement("div");e.className="action-parameter",e.innerHTML=`<div class="parameter-title">${n.title}</div>`,l.appendChild(e);const i={};for(const e of null!==(b=n.dependencies)&&void 0!==b?b:[]){var b;i[e]=s.params[e]}const a="function"==typeof n.default?n.default(i):n.default;let r=null;switch(n.type){case"choice":{const o=document.createElement("select");o.dataset.paramid=n.id,e.appendChild(o);const l="function"==typeof n.options?n.options(i):n.options;for(const e of null!=l?l:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(void 0!==s.params[n.id]){o.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(o.value=a,s.params[n.id]=a);r=()=>{const e={};for(const i of null!==(t=n.dependencies)&&void 0!==t?t:[]){var t;e[i]=s.params[i]}const i=o.value,a="function"==typeof n.options?n.options(e):n.options;o.innerHTML="";for(const e of null!=a?a:[]){const t=document.createElement("option");t.value=e,t.textContent=e,o.appendChild(t)}if(a.includes(i))o.value=i;else{const t="function"==typeof n.default?n.default(e):n.default;o.value=t,s.params[n.id]=t}},o.addEventListener("change",()=>{s.params[n.id]=o.value;for(const e of t.get(n.id)||[])e()})}break;case"text":{const i=document.createElement("input");if(i.type="text",i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.value=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.value;for(const e of t.get(n.id)||[])e()})}break;case"boolean":{const i=document.createElement("input");if(i.type="checkbox",i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.checked=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.checked=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.checked;for(const e of t.get(n.id)||[])e()})}break;case"duration":{const i=document.createElement("duration-input");if(i.dataset.paramid=n.id,e.appendChild(i),void 0!==s.params[n.id]){i.value=s.params[n.id];for(const e of t.get(n.id)||[])e()}else"default"in n&&(i.value=a,s.params[n.id]=a);i.addEventListener("change",()=>{s.params[n.id]=i.value;for(const e of t.get(n.id)||[])e()})}}if("function"==typeof r)for(const e of null!==(w=n.dependencies)&&void 0!==w?w:[]){var w;t.has(e)||t.set(e,[]),t.get(e).push(r)}}}l.querySelector(".move-action-up").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]);const t=e(s,a),n=t.actions.indexOf(s);if(0===t.actions.indexOf(s)){if("if"!==t.name&&"if not"!==t.name)return;const i=e(t,a);i.actions.splice(i.actions.indexOf(t),0,s),t.actions.splice(n,1)}else{const e=t.actions[n-1];"if"===e.name||"if not"===e.name?(e.actions.push(s),t.actions.splice(n,1)):(t.actions.splice(n,1),t.actions.splice(n-1,0,s))}o()}),l.querySelector(".move-action-down").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]);const t=e(s,a),n=t.actions.indexOf(s);if(t.actions.indexOf(s)===t.actions.length-1){if("if"!==t.name&&"if not"!==t.name)return;const i=e(t,a);i.actions.splice(i.actions.indexOf(t)+1,0,s),t.actions.splice(n,1)}else{const e=t.actions[n+1];"if"===e.name||"if not"===e.name?(e.actions.unshift(s),t.actions.splice(n,1)):(t.actions.splice(n,1),t.actions.splice(n+1,0,s))}o()}),l.querySelector(".delete-action").addEventListener("click",async t=>{if(this.ws.audio.playSound(["ui","click"]),t.shiftKey||await this.ws.gui.dialog.confirm("Delete Action","Are you sure you want to delete this action?<br><small>Tip: Hold <code><Shift></code> while clicking to skip this confirmation.</small>",null,!0)){const t=e(s,a);t.actions.splice(t.actions.indexOf(s),1),o()}})},n=()=>{const e=new Set,t=new Set;this.ws.store.control_scripts.forEach(n=>{n.keys.forEach(n=>{e.has(n)?t.add(n):e.add(n)})}),document.querySelectorAll(".control-keys div[data-key]").forEach(e=>{e.classList.toggle("duplicate",t.has(e.dataset.key))})},s=(e,o)=>{e.innerHTML='\n\t\t\t\t\t<div class="control-container">\n\t\t\t\t\t\t<div class="control-container-title">When these keys are pressed</div>\n\t\t\t\t\t\t<div class="control-keys"></div>\n\t\t\t\t\t\t<div class="control-container-title margin-top">Complete these actions</div>\n\t\t\t\t\t\t<div class="control-actions"></div>\n\t\t\t\t\t</div>\n\t\t\t\t';const l=e.querySelector(".control-keys");for(const t of o.keys){const i=document.createElement("div");i.dataset.key=t,i.innerHTML=`\n\t\t\t\t\t\t<span class="key-elem-title">${" "===t?"space":t}</span>\n\t\t\t\t\t\t<span class="fas fa-trash-can remove"></span>\n\t\t\t\t\t`,l.appendChild(i),i.querySelector(".remove").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),o.keys.splice(o.keys.indexOf(t),1),s(e,o),n()})}const d=document.createElement("div");d.className="add",d.innerHTML='<span class="fas fa-plus"></span>',l.appendChild(d),d.addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),document.querySelectorAll(".key-select").forEach(e=>e.remove());const t=document.createElement("div");t.className="key-select animate-loading-dots",t.textContent="Press a key",l.insertBefore(t,d);const i=()=>{t.remove(),m(b,this,null)};t.addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),i()}),m(b,this,(r,l,d)=>{if("escape"===r)i();else if(l){if(!(0,a.validateShortcut)(r))return i(),void this.ws.gui.dialog.toast("Invalid Key","The key you pressed is not a valid shortcut key.","error");o.keys.includes(r)||o.keys.push(r),i(),s(e,o),n()}else t.textContent=r||"Press a key"})});const c=e.querySelector(".control-actions");for(const e of o.actions)t(c,e,o,()=>{this.controls()});const u=document.createElement("div");u.className="control-bottom-container",u.innerHTML='\n\t\t\t\t\t<div class="add-action-button"></div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<button class="add-action-button control-delete" style="--background: 211, 51, 51;">Delete</button>\n\t\t\t\t\t</div>\n\t\t\t\t',c.appendChild(u),u.querySelector(".control-delete").addEventListener("click",async e=>{this.ws.audio.playSound(["ui","click"]),(e.shiftKey||await this.ws.gui.dialog.confirm("Delete Control Script","Are you sure you want to delete this control script? This action cannot be undone?<br><small>Tip: Hold <code><Shift></code> while clicking to skip this confirmation.</small>",null,!0))&&(this.ws.store.control_scripts.splice(this.ws.store.control_scripts.indexOf(o),1),this.controls())});const p=()=>{const t=u.querySelector(".add-action-button");t.innerHTML='<button class="add-action-button new-button"><span class="fa fa-plus"></span> Add Action</button>',t.querySelector(".new-button").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),t.innerHTML='\n\t\t\t\t\t\t\t<select style="height: 35px;"></select>\n\t\t\t\t\t\t\t<button class="add-action-button cancel-button" style="margin-left: 10px;">Cancel</button>\n\t\t\t\t\t\t\t<button class="add-action-button create-button" style="margin-left: 10px;">Create</button>\n\t\t\t\t\t\t';const n=t.querySelector("select");n.innerHTML+='<option value="if">If Condition</option>',n.innerHTML+='<option value="if not">If Not Condition</option>',Object.entries(r.events).forEach(([e,t])=>{n.innerHTML+="title"in t?`<option value="${e}">${t.title}</option>`:`<option value="${e}">${e}</option>`}),t.querySelector(".cancel-button").addEventListener("click",()=>{this.ws.audio.playSound(["ui","click"]),p()}),t.querySelector(".create-button").addEventListener("click",()=>{if(this.ws.audio.playSound(["ui","click"]),"if"===n.value||"if not"===n.value||n.value in r.events){const t={name:n.value,params:{}};"if"!==n.value&&"if not"!==n.value||(t.condition={name:Object.keys(i.conditions)[0]},t.actions=[]),o.actions.push(t),s(e,o)}})})};p()},o=document.querySelector("#settings-container > .settings > .settings-right > .controls");o.querySelectorAll(".control-script-item").forEach(e=>e.remove());for(const e of this.ws.store.control_scripts){const t=document.createElement("div");t.className="settings-section control-script-item",o.appendChild(t),s(t,e)}n()}}zen(){this.deselect(),document.querySelector("#settings-zen-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .zen").classList.remove("hidden")}app(){this.deselect(),document.querySelector("#settings-app-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .app").classList.remove("hidden")}queue(){this.deselect(),document.querySelector("#settings-queue-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .queue").classList.remove("hidden")}accessibility(){this.deselect(),document.querySelector("#settings-accessibility-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .accessibility").classList.remove("hidden")}AI(){this.deselect(),document.querySelector("#settings-AI-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .AI").classList.remove("hidden")}autoReporting(){this.deselect(),document.querySelector("#settings-auto-reporting-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .auto-reporting").classList.remove("hidden")}gadgets(){this.deselect(),document.querySelector("#settings-gadgets-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .gadgets").classList.remove("hidden")}whitelist(e){this.deselect(),document.querySelector(`#settings-whitelist-${e}s-button`).classList.add("selected"),document.querySelector(`#settings-container > .settings > .settings-right > .whitelist.${e}s`).classList.remove("hidden");{const t=document.querySelector(`#settings-whitelist-${e}s-expiry`);t.value=this.ws.store.settings.expiry.whitelist[`${e}s`],t.addEventListener("change",t=>this.ws.store.settings.expiry.whitelist[`${e}s`]=t.target.value);const n=document.querySelector(`#settings-whitelist-${e}s-input`),s=()=>{const t=n.value.trim();t&&(n.value="",this.ws.store.whitelist[`${e}s`].set(t,[Date.now(),this.ws.util.expiryToDate(this.ws.store.settings.expiry.whitelist[`${e}s`]).valueOf()]),this.ws.store.statistics.items_whitelisted.total++,this.ws.store.statistics.items_whitelisted[`${e}s`]++,this.ws.gui.renderQueue(),this.whitelist(e))};if("tag"===e&&this.wikipediaTags){const e=this.wikipediaTags.map(e=>e.name).sort();for(const t of e){const e=document.createElement("option");e.value=t,e.textContent=t,n.appendChild(e)}n.setAttribute("list",n.id+"-datalist");const t=document.createElement("datalist");t.id=n.id+"-datalist",n.parentElement.appendChild(t);for(const n of e){const e=document.createElement("option");e.value=n,t.appendChild(e)}}document.querySelector(`#settings-whitelist-${e}s-add-button`).addEventListener("click",s),n.addEventListener("keydown",e=>{"Enter"===e.key&&(s(),e.preventDefault())})}{const t=document.querySelector(`#settings-whitelist-${e}s-list`);t.innerHTML="";const n=t=>{switch(e){case"user":return this.ws.page(`Special:Contributions/${t}`);case"page":return this.ws.page(t);case"tag":return this.ws.page(`Special:Tags/${t}`)}},s=[...this.ws.store.whitelist[`${e}s`]].sort((e,t)=>t[1][1]-e[1][1]);for(const[i,a]of s){const s=document.createElement("div"),r=new Date(a[0]),o=a[1]===1/0?"Never":`${new Date(a[1]).toLocaleDateString()} ${new Date(a[1]).toLocaleTimeString()}`;s.innerHTML=`\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<a href="${n(i)}">${i}</a>\n\t\t\t\t\t\t<span>Added: ${r.toLocaleDateString()} ${r.toLocaleTimeString()}</span>\n\t\t\t\t\t\t<span class="${Date.now()>a[1]?"expired":""}">\n\t\t\t\t\t\t\t${Date.now()>a[1]?"Expired":"Expires"}: ${o}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class="add-action-button remove-button" title="Remove from whitelisted list"><span class="fa fa-trash"></span></button>\n\t\t\t\t`,s.querySelector(".remove-button").addEventListener("click",()=>{this.ws.store.whitelist[`${e}s`].delete(i),this.ws.gui.renderQueue(),this.whitelist(e)}),t.appendChild(s)}0===s.length&&(t.innerHTML=`<div class="empty">No whitelisted ${e}s.</div>`)}}highlight(e){this.deselect(),document.querySelector(`#settings-highlight-${e}s-button`).classList.add("selected"),document.querySelector(`#settings-container > .settings > .settings-right > .highlight.${e}s`).classList.remove("hidden");{const t=document.querySelector(`#settings-highlight-${e}s-expiry`);t.value=this.ws.store.settings.expiry.highlight[`${e}s`],t.addEventListener("change",t=>this.ws.store.settings.expiry.highlight[`${e}s`]=t.target.value);const n=document.querySelector(`#settings-highlight-${e}s-input`),s=()=>{const t=n.value.trim();t&&(n.value="",this.ws.store.highlight[`${e}s`].set(t,[Date.now(),this.ws.util.expiryToDate(this.ws.store.settings.expiry.highlight[`${e}s`]).valueOf()]),this.ws.store.statistics.items_highlighted.total++,this.ws.store.statistics.items_highlighted[`${e}s`]++,this.ws.gui.renderQueue(),this.highlight(e))};if("tag"===e&&this.wikipediaTags){const e=this.wikipediaTags.map(e=>e.name).sort();for(const t of e){const e=document.createElement("option");e.value=t,e.textContent=t,n.appendChild(e)}n.setAttribute("list",n.id+"-datalist");const t=document.createElement("datalist");t.id=n.id+"-datalist",n.parentElement.appendChild(t);for(const n of e){const e=document.createElement("option");e.value=n,t.appendChild(e)}}document.querySelector(`#settings-highlight-${e}s-add-button`).addEventListener("click",s),n.addEventListener("keydown",e=>{"Enter"===e.key&&(s(),e.preventDefault())})}{const t=document.querySelector(`#settings-highlight-${e}s-list`);t.innerHTML="";const n=t=>{switch(e){case"user":return this.ws.page(`Special:Contributions/${t}`);case"page":return this.ws.page(t);case"tag":return this.ws.page(`Special:Tags/${t}`)}},s=[...this.ws.store.highlight[`${e}s`]].sort((e,t)=>t[1][1]-e[1][1]);for(const[i,a]of s){const s=document.createElement("div"),r=new Date(a[0]),o=a[1]===1/0?"Never":`${new Date(a[1]).toLocaleDateString()} ${new Date(a[1]).toLocaleTimeString()}`;s.innerHTML=`\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<a href="${n(i)}">${i}</a>\n\t\t\t\t\t\t<span>Added: ${r.toLocaleDateString()} ${r.toLocaleTimeString()}</span>\n\t\t\t\t\t\t<span class="${Date.now()>a[1]?"expired":""}">\n\t\t\t\t\t\t\t${Date.now()>a[1]?"Expired":"Expires"}: ${o}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button class="add-action-button remove-button" title="Remove from highlighted list"><span class="fa fa-trash"></span></button>\n\t\t\t\t`,s.querySelector(".remove-button").addEventListener("click",()=>{this.ws.store.highlight[`${e}s`].delete(i),this.ws.gui.renderQueue(),this.highlight(e)}),t.appendChild(s)}0===s.length&&(t.innerHTML=`<div class="empty">No highlighted ${e}s.</div>`)}}statistics(){this.deselect(),document.querySelector("#settings-statistics-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .statistics").classList.remove("hidden");document.querySelector("#reset-statistics-button").addEventListener("click",async()=>{await this.ws.gui.dialog.confirm("Reset statistics","Are you sure you want to reset all statistics? This action cannot be undone.",void 0,!0)&&(this.ws.store.statistics={},this.ws.storage.load(this.ws.store),this.ws.time.load=performance.now(),this.statistics())});const e=this.ws.store.statistics;document.querySelector("#stats-total-reviewed").textContent=(e.edits_reviewed.total||0).toLocaleString();document.querySelector("#stats-thanks-percentage").textContent=(e.edits_reviewed.thanked/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-recent-changes-reviewed").textContent=(e.recent_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-recent-changes-percentage").textContent=(e.recent_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-reviewed").textContent=(e.pending_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-pending-changes-accepted").textContent=(e.pending_changes_reviewed.accepted||0).toLocaleString();document.querySelector("#stats-pending-changes-accepted-percentage").textContent=(e.pending_changes_reviewed.accepted/e.pending_changes_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-rejected").textContent=(e.pending_changes_reviewed.rejected||0).toLocaleString();document.querySelector("#stats-pending-changes-rejected-percentage").textContent=(e.pending_changes_reviewed.rejected/e.pending_changes_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-pending-changes-percentage").textContent=(e.pending_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-user-creations-reviewed").textContent=(e.users_reviewed.total||0).toLocaleString();document.querySelector("#stats-user-creations-percentage").textContent=(e.users_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-watchlist-changes-reviewed").textContent=(e.watchlist_changes_reviewed.total||0).toLocaleString();document.querySelector("#stats-watchlist-changes-percentage").textContent=(e.watchlist_changes_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-abuselog-changes-reviewed").textContent=(e.abuselogs_reviewed.total||0).toLocaleString();document.querySelector("#stats-abuselog-changes-percentage").textContent=(e.abuselogs_reviewed.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-reverts-made").textContent=(e.reverts_made.total||0).toLocaleString();document.querySelector("#stats-reverts-percentage").textContent=(e.reverts_made.total/e.edits_reviewed.total*100||0).toFixed(2);document.querySelector("#stats-goodfaith-reverts-percentage").textContent=(e.reverts_made.good_faith/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-recent-reverts-percentage").textContent=(e.reverts_made.from_recent_changes/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-pending-reverts-percentage").textContent=(e.reverts_made.from_pending_changes/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-watchlist-reverts-percentage").textContent=(e.reverts_made.from_watchlist/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-abuselog-reverts-percentage").textContent=(e.reverts_made.from_abuselogs/e.reverts_made.total*100||0).toFixed(2);document.querySelector("#stats-other-reverts-percentage").textContent=(e.reverts_made.from_loaded_edits/e.reverts_made.total*100||0).toFixed(2);{document.querySelector("#stats-users-welcomed").textContent=(e.users_welcomed.total||0).toLocaleString();const t=document.querySelector("#stats-users-welcomed-message");e.edits_reviewed.total===e.users_welcomed.total?t.textContent=`You welcome every user whose edit you review! (${e.users_welcomed.total.toLocaleString()})`:0===e.users_welcomed.total?t.innerHTML="For every Infinity edits you review, you still won’t welcome a new user.":t.textContent=`For every ${(e.edits_reviewed.total/e.users_welcomed.total||0).toFixed(3)} edits you review, you welcome a new user.`}document.querySelector("#stats-warnings").textContent=(e.warnings_issued.total||0).toLocaleString();document.querySelector("#stats-warning-1-percentage").textContent=(e.warnings_issued.level_1/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-2-percentage").textContent=(e.warnings_issued.level_2/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-3-percentage").textContent=(e.warnings_issued.level_3/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-4-percentage").textContent=(e.warnings_issued.level_4/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-warning-4im-percentage").textContent=(e.warnings_issued.level_4im/e.warnings_issued.total*100||0).toFixed(2);document.querySelector("#stats-reports").textContent=(e.reports_filed.total||0).toLocaleString();document.querySelector("#stats-AIV-reports-percentage").textContent=(e.reports_filed.AIV/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-UAA-reports-percentage").textContent=(e.reports_filed.UAA/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-global-block-reports-percentage").textContent=(e.reports_filed.global_block/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-global-lock-reports-percentage").textContent=(e.reports_filed.global_lock/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-RFPP-reports-percentage").textContent=(e.reports_filed.RFPP/e.reports_filed.total*100||0).toFixed(2);document.querySelector("#stats-pages-watched").textContent=(e.watchlist.watched||0).toLocaleString();document.querySelector("#stats-pages-unwatched").textContent=(e.watchlist.unwatched||0).toLocaleString();document.querySelector("#stats-items-whitelisted").textContent=(e.items_whitelisted.total||0).toLocaleString();document.querySelector("#stats-users-whitelisted").textContent=(e.items_whitelisted.users||0).toLocaleString();document.querySelector("#stats-users-whitelisted-percentage").textContent=(e.items_whitelisted.users/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-pages-whitelisted").textContent=(e.items_whitelisted.pages||0).toLocaleString();document.querySelector("#stats-pages-whitelisted-percentage").textContent=(e.items_whitelisted.pages/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-tags-whitelisted").textContent=(e.items_whitelisted.tags||0).toLocaleString();document.querySelector("#stats-tags-whitelisted-percentage").textContent=(e.items_whitelisted.tags/e.items_whitelisted.total*100||0).toFixed(2);document.querySelector("#stats-items-highlighted").textContent=(e.items_highlighted.total||0).toLocaleString();document.querySelector("#stats-users-highlighted").textContent=(e.items_highlighted.users||0).toLocaleString();document.querySelector("#stats-users-highlighted-percentage").textContent=(e.items_highlighted.users/e.items_highlighted.total*100||0).toFixed(2);document.querySelector("#stats-pages-highlighted").textContent=(e.items_highlighted.pages||0).toLocaleString();document.querySelector("#stats-pages-highlighted-percentage").textContent=(e.items_highlighted.pages/e.items_highlighted.total*100||0).toFixed(2);document.querySelector("#stats-tags-highlighted").textContent=(e.items_highlighted.tags||0).toLocaleString();document.querySelector("#stats-tags-highlighted-percentage").textContent=(e.items_highlighted.tags/e.items_highlighted.total*100||0).toFixed(2);{const t=e.session_time+(performance.now()-this.ws.time.load);document.querySelector("#stats-session-time").textContent=(e=>{const t=Math.floor(e/1e3),n=Math.floor(t/86400),s=Math.floor(t%86400/3600),i=Math.floor(t%3600/60);let a="";return n>0&&(a+=`${n}d `),s>0&&(a+=`${s}h `),i>0&&(a+=`${i}m `),a+=t%60+"s",a.trim()})(t);document.querySelector("#stats-reports-per-day").textContent=(e.reports_filed.total/(t/864e5||1)||0).toFixed(2);document.querySelector("#stats-reverts-per-hour").textContent=(e.reverts_made.total/(t/36e5||1)||0).toFixed(2);document.querySelector("#stats-reviews-per-minute").textContent=(e.edits_reviewed.total/(t/6e4||1)||0).toFixed(2)}}save(){this.deselect(),document.querySelector("#settings-save-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .save").classList.remove("hidden"),document.querySelector("#settings-save-status").classList.add("hidden")}changelog(){this.deselect(),document.querySelector("#settings-changelog-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .changelog").classList.remove("hidden");const e=document.querySelector("#settings-container > .settings > .settings-right > .changelog > div > .changelog-content");e.innerHTML="<em class='animate-loading-dots'>Loading changelog</em>",l.WikiShield.config.changelog.HTML.then(t=>e.innerHTML=t)}about(){this.deselect(),document.querySelector("#settings-about-button").classList.add("selected"),document.querySelector("#settings-container > .settings > .settings-right > .about").classList.remove("hidden"),document.querySelector("#settings-about-version").textContent=l.WikiShield.config.version,document.querySelectorAll("#settings-container > .settings > .settings-right > .about > .randomize").forEach(e=>{for(let t=e.children.length;t>=0;t--)e.appendChild(e.children[Math.random()*t|0])})}}},7698(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BuildPalette=function(e,...t){const n=document.createElement("canvas");n.width=e,n.height=1;const s=n.getContext("2d"),i=s.createLinearGradient(0,0,n.width,0),a=1/(t.length-1);t.forEach((e,t)=>{i.addColorStop(a*t,e)}),s.fillStyle=i,s.fillRect(0,0,n.width,n.height);const r=s.getImageData(0,0,n.width,1).data;return Array.from({length:e},(e,t)=>{const n=4*t;return`rgb(${r[n]}, ${r[n+1]}, ${r[n+2]})`})}},3241(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.expiryRegex=t.Utility=void 0;var s=n(4551);function i(){i=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,s,i){var r=RegExp(e,s);return t.set(r,i||t.get(e)),a(r,n.prototype)}function s(e,n){var s=t.get(n);return Object.keys(s).reduce(function(t,n){var i=s[n];if("number"==typeof i)t[n]=e[i];else{for(var a=0;void 0===e[i[a]]&&a+1<i.length;)a++;t[n]=e[i[a]]}return t},Object.create(null))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&a(e,t)}(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);if(n){n.groups=s(n,this);var i=n.indices;i&&(i.groups=s(i,this))}return n},n.prototype[Symbol.replace]=function(n,i){if("string"==typeof i){var a=t.get(this);return e[Symbol.replace].call(this,n,i.replace(/\$<([^>]+)(>|$)/g,function(e,t,n){if(""===n)return e;var s=a[t];return Array.isArray(s)?"$"+s.join("$"):"number"==typeof s?"$"+s:""}))}if("function"==typeof i){var r=this;return e[Symbol.replace].call(this,n,function(){var e=arguments;return"object"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(s(e,r)),i.apply(this,e)})}return e[Symbol.replace].call(this,n,i)},i.apply(this,arguments)}function a(e,t){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},a(e,t)}const r=t.expiryRegex=i(/(infinity|^(([0-9]+)Y)?(([0-9]+)M)?(([0-9]+)W)?(([0-9]+)D)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?)$/,{years:3,months:5,weeks:7,days:9,hours:11,minutes:13,seconds:15});t.Utility=class{constructor(e){this.ws=e}escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}escape(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}utcString(e){if(e===1/0)return"indefinite";const t=this.padString;return`${e.getUTCFullYear()}-${t(e.getUTCMonth()+1,2)}-${t(e.getUTCDate(),2)}T${t(e.getUTCHours(),2)}:${t(e.getUTCMinutes(),2)}:${t(e.getUTCSeconds(),2)}`}padString(e,t){for(e=e.toString();e.length<t;)e=`0${e}`;return e}getMonth(e){return["January","February","March","April","May","June","July","August","September","October","November","December"][e]}monthSectionName(){return`${this.getMonth((new Date).getUTCMonth())} ${(new Date).getUTCFullYear()}`}escape(e){return(e||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}textify(e){const t=document.createElement("div");return t.innerHTML=e,t.textContent||t.innerText||""}pageLink(e,t=!1,n=!0){return t?`https://${this.ws.server}/w/index.php${e}`:`https://${this.ws.server}/wiki/${n?encodeURIComponent(e):e}`}truncate(e,t){return(0,s.truncate)(e,t)}formatBytes(e){if(0===e)return"0 B";const t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(2))+" "+["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB","RiB","QiB"][t]}getChangeColor(e){if(0===e)return"#888";if(e>0)return e>=1e3?"#00b894":e>=500?"#00d4a1":e>=100?"#26de81":"#55efc4";{const t=Math.abs(e);return t>=1e3?"#d63031":t>=500?"#e74c3c":t>=100?"#ff6b6b":"#ff8787"}}getChangeString(e){return e>0?"+"+e:0===e?"0":`–${Math.abs(e).toString()}`}formatNotificationTime(e,t=new Date){const n=Math.floor((t-e)/1e3);return n<=0?"Now":n<60?`${n}s ago`:n<3600?`${Math.floor(n/60)}m ago`:n<86400?`${Math.floor(n/3600)}h ago`:n<2592e3?`${Math.floor(n/86400)}d ago`:n<31536e3?`${Math.floor(n/2592e3)}mo ago`:`${Math.floor(n/31536e3)}y ago`}formatDuration(e,t=new Date){const n=Math.floor((t-e)/1e3);return n<=0?"0s":n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m`:n<86400?`${Math.floor(n/3600)}h`:n<2592e3?`${Math.floor(n/86400)}d`:n<31536e3?`${Math.floor(n/2592e3)}mo`:`${Math.floor(n/31536e3)}y`}match(e,t){return this.ws.store.settings.username_highlighting.fuzzy?function(e,t,n){const s=e.length,i=t.length;if(0===s)return!0;if(0===i)return s<=n;let a=new Array(i+1).fill(0),r=new Array(i+1).fill(0);for(let e=0;e<=i;e++)a[e]=0;for(let o=1;o<=s;o++){r[0]=o;let l=r[0];for(let d=1;d<=i;d++){const i=e[o-1]===t[d-1]?0:1,c=a[d]+1,u=r[d-1]+1,p=a[d-1]+i,g=Math.min(c,u,p);if(r[d]=g,g<l&&(l=g),o===s&&g<=n)return!0}if(l>n)return!1;[a,r]=[r,a]}return!1}(e,t,2):t.toLowerCase().includes(e.toLowerCase())}isIPv4Address(e){const t="(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|0?[0-9]{1,2})";return new RegExp(`^(${t}\\.){3}${t}$`).test(e)}isIPv6Address(e){return!!new RegExp("^(?::(?::|(?::[0-9A-Fa-f]{1,4}){1,7})|[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){0,6}::|[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){7})$").test(e)||new RegExp("^[0-9A-Fa-f]{1,4}(?:::?[0-9A-Fa-f]{1,4}){1,6}$").test(e)&&/::/.test(e)&&!/::.*::/.test(e)}isIPAddress(e){return this.isIPv4Address(e)||this.isIPv6Address(e)}isTempAccount(e){return/^~[0-9]{4,}(-[0-9A-Fa-f]{5})*(-[0-9A-Fa-f]{1,5})$/.test(e)}expiryToDate(e){if("infinity"===e)return 1/0;const t=new Date,n=r.exec(e);return n?new Date(t.getFullYear()+(parseInt(n.groups.years)||0),t.getMonth()+(parseInt(n.groups.months)||0),t.getDate()+7*(parseInt(n.groups.weeks)||0)+(parseInt(n.groups.days)||0),t.getHours()+(parseInt(n.groups.hours)||0),t.getMinutes()+(parseInt(n.groups.minutes)||0),t.getSeconds()+(parseInt(n.groups.seconds)||0)):t}getPageSections(e){const t=e.split("\n"),n=[];let s={title:"",heading:"",level:0,content:""};for(const e of t){const t=/^(=+)\s*(.*?)\s*\1\s*$/.exec(e);t?(""!==s.title&&n.push(s),s={title:t[2],heading:t[0],level:t[1].length,content:""}):(""!==s.content&&(s.content+="\n"),s.content+=e)}return""===s.content&&""===s.title||n.push(s),n}}},5564(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.sortDependencies=function(e){const t=new Map(e.map(e=>[e.id,e])),n=new Set,s=new Set,i=[],a=(e,r)=>{if(n.has(e))return;if(s.has(e)){const t=r.indexOf(e),n=r.slice(t).concat(e).join(" -> ");throw new Error(`Cyclic dependency detected: ${n}`)}const o=t.get(e);if(!o)throw new Error(`Unknown dependency: ${e}`);s.add(e),r.push(e);const l=o.dependencies||[];for(const e of l)a(e,r);r.pop(),n.add(e),s.delete(e),i.push(o)};for(const t of e)n.has(t.id)||a(t.id,[]);return i}},2069(e,t){var n;function s(e,t,n){i(e,t),t.set(e,n)}function i(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function a(e,t){return e.get(o(e,t))}function r(e,t,n){return e.set(o(e,t),n),n}function o(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),t.Text=void 0;class d{}l(d,"Lower",Symbol("lower case")),l(d,"Upper",Symbol("UPPER CASE")),l(d,"Title",Symbol("Title Case")),l(d,"Sentence",Symbol("Sentence case")),l(d,"Camel",Symbol("camelCase")),l(d,"Pascal",Symbol("PascalCase")),l(d,"Snake",Symbol("snake_Case")),l(d,"Split",Symbol("split,case"));var c=new WeakMap,u=new WeakMap,p=new WeakMap,g=new WeakSet;class h{static pluralize(e,t,n){return new h(e).plural(n).get(t)}constructor(e,t=d.Sentence){var n,a;i(n=this,a=g),a.add(n),s(this,c,!1),s(this,u,void 0),s(this,p,void 0);const l=m.call(h,e,t);r(c,this,l.inSentenceCase),r(u,this,l.words),r(p,this,o(g,this,v).call(this))}plural(){return r(p,this,o(g,this,v).apply(this,arguments)),this}case(e=d.Sentence){const t=t=>{switch(e){case d.Lower:return t.map(e=>e.toLowerCase()).join(" ");case d.Upper:return t.map(e=>e.toUpperCase()).join(" ");case d.Title:return t.map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ");case d.Sentence:if(a(c,this))return t.join(" ");let e=!0;return t.map(t=>{let n=e?t.charAt(0).toUpperCase()+t.slice(1).toLowerCase():t.toLowerCase();return e=/[.!?]$/.test(t),n}).join(" ");case d.Camel:return t.map((e,t)=>0===t?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("");case d.Pascal:return t.map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("");case d.Snake:return t.map(e=>e.toLowerCase()).join("_");case d.Split:return t;default:throw new TypeError("Invalid case type, must be a Case value")}},[n,s]=[t(a(u,this)),t(a(p,this))];return Object.freeze({get:(e=1)=>(Number.isNaN(Number(e))||1===e||1n===e||"1"===e?n:s).replace(/(?<!\\)%n/g,e)})}get(e=1){return this.case().get(e)}}function m(e,t){const n=(e=>{switch(t){case d.Lower:case d.Upper:case d.Title:case d.Sentence:return e.split(/\s+/);case d.Camel:case d.Pascal:return e.split(/(?=[A-Z])/);case d.Snake:return e.split(/_/g);case d.Split:throw new TypeError("Split case is only used for output, not input");default:throw new TypeError("Invalid case type, must be a Case value")}})(e.toString().trim());return t===d.Sentence?{inSentenceCase:!0,words:n.map(e=>e.trim()).filter(e=>e.length>0)}:{inSentenceCase:!1,words:n.map(e=>e.trim().toLowerCase()).filter(e=>e.length>0)}}function v(e){if(null==e||e){const e=[...a(u,this)],t=e.length-1;return e[t]=(e=>{let t;return t=e.replace(/(?<=sh?|ch|x|z|[^aeiou]o)$/i,"es"),t!==e?t:(t=e.replace(/(?<=[^aeiou])y$/i,"ies"),t!==e?t:(t=e.replace(/fe?$/i,"ves"),t!==e?t:`${e}s`))})(a(u,this)[t]),e}if(!1===e)return[...a(u,this)];if(e instanceof n)return e.case(d.Split).get();throw new TypeError("Invalid plural argument, must be boolean or Text instance")}t.Text=h,n=h,l(h,"Case",d)},8878(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.MediaWikiAPI=void 0;var s=n(1289),i=n(4551),a=n(2852),r=n(6873),o=n(505),l=n(8582);const d=console,c=new Set(l.__servers__.filter(e=>e.tag).map(e=>e.host)),u=new Set(l.__servers__.filter(e=>e.pending_changes).map(e=>e.host));class p{static get pendingChangesServers(){return Array.from(u)}static hasPendingChanges(e){return u.has(e)}static chunk(e,t=50){const n=[],s=e.length;for(let i=0;i<s;i+=t)n.push(e.slice(i,i+t));return n}static paramify(e){return Array.isArray(e)||(e=[e]),[...new Set(e)]}static join(e){return e.join("|").replace(/\|\|+/g,"|")}static getUsername(e,t){return e.fetch(`https://${t}/w/api.php`,{action:"query",meta:"userinfo",uiprop:"name",format:"json",formatversion:2},void 0,"POST",!0).then(e=>{var t;return(null==e||null===(t=e.query)||void 0===t||null===(t=t.userinfo)||void 0===t?void 0:t.name)||null})}constructor(e,t,n,s){var i,o;this.glob=e,this.oauth=t,this.server=n,this.username=s,this.tokens={},null!==(o=(i=p.cache)[n])&&void 0!==o||(i[n]={parse:new r.Trie({size:1e3}),pending:new a.Memory({size:2500,timeout:36e5}),abuse:new a.Memory({size:2500,timeout:9e5}),ores:new a.Memory({size:1e4,timeout:9e5}),diff:new a.Memory({size:500,timeout:3e5})})}get cache(){return p.cache[this.server]}build(e={},t=null){return{tags:c.has(null!=t?t:this.server)?"WikiShield script":"",assertuser:this.username,discussiontoolsautosubscribe:"no",...e}}user(e){return`[[Special:Contribs/${e}|${e}]] ([[User talk:${e}|talk]])`}revision(e){return`[[Special:Diff/${e}|${e}]]`}centralAuthUser(e){return`[[Special:CentralAuth/${e}|${e}]]`}summary(e,t){const n=" ([[:en:WP:WikiShield|WS]])",s=`${e}${t?`: ${t}`:""}`;return`${(0,i.truncate)(s,473)}${n}`}async post(e,t=!1,n=null){try{const s=await this.oauth.fetch(`https://${n||this.server}/w/api.php`,this.build({...e,format:"json",formatversion:2},n),void 0,"POST",t,n);if(s.error){if("alreadyrolled"===s.error.code||"editconflict"===s.error.code)return"editconflict";if("missingcontent"===s.error.code&&"compare"===e.action)return{compare:{body:""}};throw new Error(`API Error: ${s.error.code} - ${s.error.info}`)}return s}catch(t){throw d.error("Error in API POST request:",t,JSON.stringify(e)),t}}async continuous(e,t,n,s){try{let i=null;const a=[];do{const r=await this.post({...e,...i||{}},n,s);a.push(r),i=r.continue||null,"function"==typeof t&&!0===await t(r,a)&&(i=!1)}while(i);return{stopped:null!==i,responses:a}}catch(t){return d.error("Error in API continuous request:",t,JSON.stringify(e)),{stopped:!0,responses:[]}}}async getToken(e="csrf",t,n){const s=`${null!=n?n:this.server}:${e}`;if(void 0!==this.tokens[s])return this.tokens[s];try{return this.tokens[s]=this.post({action:"query",meta:"tokens",type:e},t,n).then(t=>{var n;return(null==t||null===(n=t.query)||void 0===n||null===(n=n.tokens)||void 0===n?void 0:n[`${e}token`])||null})}catch(e){throw d.error("Error fetching token:",e),e}}async postWithToken(e,t="csrf",n,s){try{return await this.post({...e,token:await this.getToken(t,n,s)},n,s)}catch(i){if("badtoken"===i&&!attempted){delete this.tokens[`${null!=s?s:this.server}:${t}`];try{return await this.postWithToken(e,t,n,s,!0)}catch(e){throw d.error("Post with token error after retry:",e),e}}throw d.error("Post with token error:",i),i}}async account(e,t){try{var n;return(null===(n=await this.post({action:"query",meta:"userinfo",uiprop:"*"},e,t))||void 0===n||null===(n=n.query)||void 0===n?void 0:n.userinfo)||{}}catch(e){var s;return null!==(s=void d.error("Error fetching account info:",e))&&void 0!==s?s:{}}}async getGlobalUserInfo(e,t,n){try{var s;return(null===(s=(await this.post({action:"query",meta:"globaluserinfo",guiuser:e,guiprop:"groups|rights"},t,n)).query)||void 0===s?void 0:s.globaluserinfo)||{}}catch(e){var i;return null!==(i=void d.error("Error fetching global user info:",e))&&void 0!==i?i:{}}}async markWatchlistSeen(e,t,n,s){try{await this.postWithToken({action:"setnotificationtimestamp",titles:e,newerthanrevid:t},"csrf",n,s)}catch(e){var i;return null!==(i=void d.error("Error marking watchlist item as seen:",e))&&void 0!==i?i:{valid:!1,reason:e.message}}}async append(e,t,n,s,i=null,a,r){const o=async(e,t,n,s,i=null,a,r)=>{try{if(null!==i){return{needsCheck:!0,text:(await this.getPagesContent([e],a,r))[e]||""}}return"editconflict"===await this.postWithToken({action:"edit",title:e,...null===(null!=t?t:null)?{}:{section:t},appendtext:`\n${n}`,summary:s},"csrf",a,r)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var o;return null!==(o=void d.error("Error appending to section:",e))&&void 0!==o?o:{valid:!1,reason:e.message}}};if("function"==typeof i){const l=await o(e,t,n,s,!0,a,r);if(l.needsCheck){const d=await i(l.text);return d.valid?await o(e,t,n,s,null,a,r):{valid:!1,reason:d.reason||"Append check failed."}}return l}return await o(e,t,n,s,null,a,r)}async editSection(e,t,n,s,i,a=null,r,o){const l=async(e,t,n,s,i,a=null,r,o)=>{try{if(null!==a){return{needsCheck:!0,text:(await this.getPagesContent([e],r,o))[e]||""}}return"editconflict"===await this.postWithToken({action:"edit",title:e,section:t,sectiontitle:n,text:s,summary:i},"csrf",r,o)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var l;return null!==(l=void d.error("Error editing section:",e))&&void 0!==l?l:{valid:!1,reason:e.message}}};if("function"==typeof a){const d=await l(e,t,n,s,i,!0,r,o);if(d.needsCheck){const c=await a(d.text);return c.valid?await l(e,t,n,s,i,null,r,o):{valid:!1,reason:c.reason||"Edit section check failed."}}return d}return await l(e,t,n,s,i,null,r,o)}async acceptPendingEdit(e,t,n,s){try{return await this.postWithToken({action:"review",revid:e,comment:t},"csrf",n,s),{valid:!0}}catch(e){return{valid:!1,reason:"Edit could not be accepted."}}}async rejectPendingEdit(e,t,n,s,i,a){try{const r=(await this.getRevisionsContent([t],i,a))[t]||"";return"editconflict"===await this.postWithToken({action:"edit",title:n,text:r,summary:s,baserevid:e},"csrf",i,a)?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){return{valid:!1,reason:"Edit could not be rejected."}}}async rollbackEdit(e,t,n,s,i){try{var a;const r=await this.postWithToken({action:"rollback",title:e,user:t,summary:n},"rollback",s,i);if("editconflict"===r)return{valid:!1,reason:"Edit conflict."};if("onlyauthor"===r)return{valid:!1,reason:"Cannot rollback edits as the no other user has edited the page."};if(null===(a=r.rollback)||void 0===a||!a.revid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,r.rollback.revid,s,i)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var r;return null!==(r=void d.error("Error rolling back edit:",e))&&void 0!==r?r:{valid:!1,reason:e.message}}}async undoEdit(e,t,n,s,i){try{var a;const r=await this.postWithToken({action:"edit",title:e,undo:t,summary:n},"csrf",s,i);if("editconflict"===r)return{valid:!1,reason:"Edit conflict."};if(null===(a=r.edit)||void 0===a||!a.newrevid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,r.edit.newrevid,s,i)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var r;return null!==(r=void d.error("Error undoing edit:",e))&&void 0!==r?r:{valid:!1,reason:e.message}}}async restoreEdit(e,t,n,i,a){try{var r;const o=(0,s.convertToUTCString)(new Date),l=(await this.getRevisionsContent([t],i,a))[t]||"",d=await this.postWithToken({action:"edit",title:e,text:l,summary:n,starttimestamp:o},"csrf",i,a);if("editconflict"===d)return{valid:!1,reason:"Edit conflict."};if(null===(r=d.edit)||void 0===r||!r.newrevid)return{valid:!1,reason:"Edit conflict."};return(await this.getRevision(e,d.edit.newrevid,i,a)).user!==this.username?{valid:!1,reason:"Edit conflict."}:{valid:!0}}catch(e){var o;return null!==(o=void d.error("Error restoring edit:",e))&&void 0!==o?o:{valid:!1,reason:e.message}}}async thankRevision(e,t,n){try{return await this.postWithToken({action:"thank",rev:e},"csrf",t,n),{valid:!0}}catch(e){var s;return null!==(s=void d.error("Error thanking revision:",e))&&void 0!==s?s:{valid:!1,reason:e.message}}}async watchPage(e,t,n,s){try{return await this.postWithToken({action:"watch",title:e,expiry:t},"watch",n,s),{valid:!0}}catch(e){var i;return null!==(i=void d.error("Error watching page:",e))&&void 0!==i?i:{valid:!1,reason:e.message}}}async unwatchPage(e,t,n){try{return await this.postWithToken({action:"watch",title:e,unwatch:!0},"watch",t,n),{valid:!0}}catch(e){var s;return null!==(s=void d.error("Error unwatching page:",e))&&void 0!==s?s:{valid:!1,reason:e.message}}}async parse(e,t,n=!1,s=!1,i,a){null!=t||(t=void 0);const r=[t,e,n,s].filter(e=>void 0!==e);if(this.cache.parse.has(...r))return this.cache.parse.get(...r);try{var o;const l=null===(o=await this.post({action:"parse",prop:"text",preview:n,...s?{summary:e}:{text:e},title:t,contentmodel:"wikitext",disablelimitreport:!0,disableeditsection:!0,disabletoc:!0},i,a))||void 0===o||null===(o=o.parse)||void 0===o?void 0:o[s?"parsedsummary":"text"];return this.cache.parse.set(...r,l),l}catch(e){var l;return null!==(l=void d.error("Error parsing wikitext:",e))&&void 0!==l?l:""}}async getTags(e,t){try{return(await this.continuous({action:"query",list:"tags",tglimit:"max"},void 0,e,t)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.tags)||[]})}catch(e){var n;return null!==(n=void d.error("Error fetching revisions between IDs:",e))&&void 0!==n?n:[]}}async getPagesContent(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"content",rvslots:"*",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=(null===(i=t.revisions)||void 0===i||null===(i=i[0])||void 0===i||null===(i=i.slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content)||""}return r}catch(e){var a;return null!==(a=void d.error("Error fetching pages content:",e))&&void 0!==a?a:{}}}async getRevisionsContent(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|content",rvslots:"*",revids:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s;for(const e of t.revisions||[]){var i;r[e.revid]=(null===(i=e.slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content)||""}}return r}catch(e){var a;return null!==(a=void d.error("Error fetching revisions content:",e))&&void 0!==a?a:{}}}async getLatestIds(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=(null===(i=t.revisions)||void 0===i||null===(i=i[0])||void 0===i?void 0:i.revid)||null}return r}catch(e){var a;return null!==(a=void d.error("Error fetching latest IDs:",e))&&void 0!==a?a:{}}}async getRevisionsBetween(e,t,n,s,i){try{return(await this.continuous({action:"query",prop:"revisions",titles:e,rvstartid:n,rvendid:t,rvprop:"title|ids|flags|user|timestamp|comment|parsedcomment|size|tags",rvlimit:"max"},void 0,s,i)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions)||[]})}catch(e){var a;return null!==(a=void d.error("Error fetching revisions between IDs:",e))&&void 0!==a?a:[]}}async getEditCounts(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",list:"users",usprop:"editcount",ususers:p.join(e)},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.users)||[]){var s;a[t.name]=t.editcount}return a}catch(e){var i;return null!==(i=void d.error("Error fetching edit counts:",e))&&void 0!==i?i:{}}}async areUsersBlocked(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",list:"blocks",bkusers:p.join(e),bkprop:"id|user|by|reason|expiry|flags"},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.blocks)||[]){var s;a[t.user]=t}return a}catch(e){var i;return null!==(i=void d.error("Error fetching blocked users:",e))&&void 0!==i?i:{}}}async isUserGloballyLocked(e,t,n){try{var s;return!0===(null===(s=(await this.post({action:"query",meta:"globaluserinfo",guiuser:e},t,n)).query)||void 0===s||null===(s=s.globaluserinfo)||void 0===s?void 0:s.locked)}catch(e){var i;return null!==(i=void d.error("Error checking if user is globally locked:",e))&&void 0!==i&&i}}async getContributions(e,t=10,n,s){try{var i;return(null===(i=(await this.post({action:"query",list:"usercontribs",ucuser:e,uclimit:t,ucprop:"ids|title|timestamp|comment|parsedcomment|flags|tags|sizediff|flags"},n,s)).query)||void 0===i?void 0:i.usercontribs)||[]}catch(e){var a;return null!==(a=void d.error("Error fetching contributions:",e))&&void 0!==a?a:[]}}async getBlocks(e,t,n){try{return(await this.continuous({action:"query",list:"logevents",letype:"block",letitle:`User:${e}`,leaction:"block/block",lelimit:"max",leprop:"id|timestamp|details|user|comment|parsedcomment"},void 0,t,n)).responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.logevents)||[]})}catch(e){var s;return null!==(s=void d.error("Error fetching blocks:",e))&&void 0!==s?s:[]}}async pagesExist(e,t,n){e=p.paramify(e);try{const a=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"content",rvslots:"*",titles:p.join(e)},t,n))),r={};for(const e of a)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s,i;r[t.title]=t.missing||null===(i=t.revisions)||void 0===i||null===(i=i[0].slots)||void 0===i||null===(i=i.main)||void 0===i?void 0:i.content}return r}catch(e){var a;return null!==(a=void d.error("Error checking page existence:",e))&&void 0!==a?a:[]}}async getPagesDetails(e,t,n){e=p.paramify(e);try{const o=await Promise.allSettled(p.chunk(e,50).map(async e=>await this.continuous({action:"query",prop:"info|categories|templates",titles:p.join(e),inprop:"protection|watched",cllimit:"max",tllimit:"max",tlnamespace:"10"},void 0,t,n))),l={};for(const e of o)if("fulfilled"===e.status)for(const t of e.value.responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t?void 0:t.pages)||[]})){var s,i,a,r;null!==(i=l[s=t.title])&&void 0!==i||(l[s]={protection:null,watched:!1,categories:[],metadata:[]});let e=(null===(a=l[t.title])||void 0===a||null===(a=a.protection)||void 0===a?void 0:a.level)||null;for(const n of t.protection||[])"edit"===n.type&&("sysop"===n.level||"sysop"===e?e="sysop":"autoconfirmed"===n.level||"autoconfirmed"===e?e="autoconfirmed":"extendedconfirmed"!==n.level&&"extendedconfirmed"!==e||(e="extendedconfirmed"));const n=[];for(const e of t.templates||[]){const t=e.title.replace(/^Template:/i,"");t.match(/^use\s/i)&&n.push(t)}l[t.title]={protection:null===e?{protected:!1}:{protected:!0,level:e},watched:!0===t.watched||l[t.title].watched,categories:l[t.title].categories.concat((null===(r=t.categories)||void 0===r?void 0:r.map(e=>e.title))||[]),metadata:l[t.title].metadata.concat(n)}}return l}catch(e){var o;return null!==(o=void d.error("Error fetching page details:",e))&&void 0!==o?o:{}}}async getHistory(e,t=10,n,s){try{var i;const a=null===(i=(await this.post({action:"query",prop:"revisions",titles:e,rvlimit:t+1,rvprop:"ids|user|timestamp|comment|parsedcomment|flags|tags|size|flags"},n,s)).query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];if(null==a||!a.revisions)return[];const r=a.revisions.length,o=Math.min(t,r||0);for(let e=0;e<o;e++){const t=a.revisions[e];t.ns=a.ns,t.pageid=a.pageid,t.title=a.title,t.sizediff=e+1<r?t.size-a.revisions[e+1].size:t.size}return a.revisions.slice(0,o)}catch(e){var a;return null!==(a=void d.error("Error fetching page history:",e))&&void 0!==a?a:[]}}async countPageReverts(e,t,n,i){const a=e=>"mw-undo"===e||"mw-rollback"===e||"mw-manual-revert"===e;try{const o=await this.continuous({action:"query",prop:"revisions",titles:e,rvdir:"newer",rvstart:(0,s.convertToUTCString)(new Date(Date.now()-864e5)),rvprop:"tags",rvuser:t,rvlimit:"max"},void 0,n,i);let l=0;for(const e of o.responses){var r;l+=(null===(r=e.query)||void 0===r||null===(r=r.pages)||void 0===r||null===(r=r[0])||void 0===r||null===(r=r.revisions)||void 0===r?void 0:r.filter(e=>e.tags.some(a)).length)||0}return l}catch(e){var o;return null!==(o=void d.error("Error counting page reverts:",e))&&void 0!==o?o:0}}async getORES(e,t,n,s){e=p.paramify(e);try{const a={};e=e.filter(e=>{var t;const n=this.cache.ores.get(e);return!n||null!==(t=void(a[e]=n))&&void 0!==t&&t});const r=p.chunk(e,50),l=await Promise.allSettled(r.map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|oresscores",rvslots:"*",revids:p.join(e)},n,s)));for(const e of l)if("fulfilled"===e.status)for(const t of(null===(i=e.value.query)||void 0===i?void 0:i.pages)||[]){var i;for(const e of t.revisions||[])a[e.revid]=e.oresscores||{}}return o.ORES.extract(a,t)}catch(e){var a;return null!==(a=void d.error("Error fetching ORES scores:",e))&&void 0!==a?a:{}}}async extractORES(e,t=.5){return o.ORES.extract(e,t)}async getDiff(e,t,n="table",s,i){null!=e||(e=!1);const a=`${n}@${e}-${t}`;if(this.cache.diff.has(a))return this.cache.diff.get(a);try{var r;const o={action:"compare",prop:"diff",difftype:n,torev:t};0==e?(o.fromslots="main",o["fromtext-main"]=""):o.fromrev=e;const l=(null===(r=(await this.post(o,s,i)).compare)||void 0===r?void 0:r.body)||"";return this.cache.diff.set(a,l),l}catch(e){var o;return null!==(o=void d.error("Error fetching diff:",e))&&void 0!==o?o:""}}async getWikitextDiff(e,t,n="table",s,i){null!=e||(e=!1);try{var a;return(null===(a=(await this.post({action:"compare",prop:"diff",difftype:n,fromslots:"main","fromtext-main":!1===e?"":e,toslots:"main","totext-main":t},s,i)).compare)||void 0===a?void 0:a.body)||""}catch(e){var r;return null!==(r=void d.error("Error fetching wikitext diff:",e))&&void 0!==r?r:""}}async getSizeDiff(e,t,n,s){try{var i;const a=await(null===(i=this.post({action:"query",prop:"revisions",rvprop:"size",revids:`${e}|${t}`},n,s).query)||void 0===i||null===(i=i.pages)||void 0===i||null===(i=i[0])||void 0===i?void 0:i.revisions)||[];return 0===a.length?0:1===a.length?a[0].size:a[1].size-a[0].size}catch(e){var a;return null!==(a=void d.error("Error fetching size diff:",e))&&void 0!==a?a:0}}async getRevision(e,t,n,s){try{var i,a,r;const o=null===(i=(await this.post({action:"query",prop:"revisions",titles:e,rvprop:"ids|user|comment|parsedcomment|timestamp|size|tags|flags",rvslots:"*",rvstartid:t,rvlimit:2},n,s)).query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];if(null==o||null===(a=o.revisions)||void 0===a||!a.length)return{};const l=o.revisions[0];return{revid:l.revid,parentid:l.parentid,user:l.user,parsedcomment:l.parsedcomment,comment:l.comment,timestamp:l.timestamp,size:l.size,oldlen:(null===(r=o.revisions[1])||void 0===r?void 0:r.size)||0,minor:l.minor||!1,tags:l.tags||[]}}catch(e){var o;return null!==(o=void d.error("Error fetching revision:",e))&&void 0!==o?o:{}}}async getRevisions(e,t,n){e=p.paramify(e);try{const i=await Promise.allSettled(p.chunk(e,500).map(async e=>await this.post({action:"query",prop:"revisions",rvprop:"ids|user|comment|parsedcomment|timestamp|size|tags|flags|oresscores",rvslots:"*",revids:p.join(e)},t,n))),a={};for(const e of i)if("fulfilled"===e.status)for(const t of(null===(s=e.value.query)||void 0===s?void 0:s.pages)||[]){var s;for(const e of t.revisions||[])a[e.revid]=e}return a}catch(e){var i;return null!==(i=void d.error("Error fetching revisions:",e))&&void 0!==i?i:{}}}async getConsecutiveEdits(e,t,n,s,i){try{var a,r;const o=await this.continuous({action:"query",prop:"revisions",titles:e,rvprop:"ids|timestamp|user|size|parsedcomment",rvlimit:"max",rvstartid:t},e=>{var t;return null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions.some(e=>e.user!==n)},s,i),l=o.responses.flatMap(e=>{var t;return(null===(t=e.query)||void 0===t||null===(t=t.pages)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.revisions)||[]});let d,c;const u=l[0];if((null==u?void 0:u.user)!==n)return{count:0,sizediff:0,timestamp:{new:null,old:null},diff:null,edits:[]};const p={count:0,sizediff:0,timestamp:{new:null,old:null},diff:null,edits:[]},g=l.length;for(let e=0;e<g;e++){const t=l[e];if(c=t,t.user!==n)break;p.edits.push(t),d=t,p.count++,p.sizediff+=e+1<g?t.size-l[e+1].size||0:t.size||0}return p.timestamp.new=(null==u?void 0:u.timestamp)||null,p.timestamp.old=(null===(a=d)||void 0===a?void 0:a.timestamp)||null,o.stopped?p.diff=await this.getDiff((null===(r=c)||void 0===r?void 0:r.revid)||null,u.revid,"table",s,i):p.diff=await this.getDiff(null,u.revid,"table",s,i),p}catch(e){return d.error("Get consecutive edits error:",e),{count:0,sizediff:0,timestamp:{new:null,old:null},diff:null}}}async parseUsers(e,t,n,s){e=p.paramify(e);const i=Array.from({length:e.length},()=>({user:{}}));try{const a=[];return a.push(this.getEditCounts(e,n,s).then(t=>{e.forEach((e,n)=>i[n].user.edits=t[e]||0)}),this.areUsersBlocked(e,n,s).then(t=>{e.forEach((e,n)=>i[n].user.blocked=t[e]||null)}),this.pagesExist(e.map(e=>`User talk:${e}`),n,s).then(t=>{e.forEach((e,n)=>i[n].user.talk=t[`User talk:${e}`])})),t||a.push((async()=>{await Promise.all(e.map(async(e,t)=>{[i[t].user.contributions,i[t].user.blocks]=await Promise.all([this.getContributions(e,void 0,n,s),this.getBlocks(e,n,s)])}))})()),await Promise.all(a),i}catch(e){var a;return null!==(a=void d.error("Parse user error:",e))&&void 0!==a?a:i}}async parseEdits(e,t,n,s,i){e=p.paramify(e);const a=p.paramify(e.map(e=>e.item.user)),r=p.paramify(e.map(e=>e.item.revid)),o=p.paramify(e.map(e=>e.item.title)),l=e.map(({item:e,prior:t})=>({item:e,prior:t,data:{user:{},page:{},edit:{}}}));try{const d=[];return d.push(this.parseUsers(a,t,s,i).then(t=>{e.forEach((e,n)=>{const s=a.indexOf(e.item.user);l[n].data.user=t[s].user})}),this.getPagesDetails(o,s,i).then(t=>{e.forEach((e,n)=>{var s,i,a,r;l[n].data.page.protection=(null===(s=t[e.item.title])||void 0===s?void 0:s.protection)||{protected:!1},l[n].data.page.watched=(null===(i=t[e.item.title])||void 0===i?void 0:i.watched)||!1,l[n].data.page.categories=(null===(a=t[e.item.title])||void 0===a?void 0:a.categories)||[],l[n].data.page.metadata=(null===(r=t[e.item.title])||void 0===r?void 0:r.metadata)||[]})}),this.getORES(r,n,s,i).then(t=>{e.forEach((e,n)=>{l[n].data.edit.ores=t[e.item.revid]||0})})),t||d.push((async()=>{await Promise.all(e.map(async(e,t)=>{[l[t].data.page.consecutive,l[t].data.page.reverts,l[t].data.page.history,l[t].data.edit.diff]=await Promise.all([this.getConsecutiveEdits(e.item.title,e.item.revid,e.item.user,s,i),this.countPageReverts(e.item.title,this.username,s,i),this.getHistory(e.item.title,void 0,s,i),this.getDiff(e.prior||null,e.item.revid,"table",s,i)])}))})()),await Promise.all(d),l}catch(e){var c;return null!==(c=void d.error("Parse edit error:",e))&&void 0!==c?c:l}}async parseAbuselogs(e,t,n,s){e=p.paramify(e);const i=p.paramify(e.map(e=>e.user)),a=p.paramify(e.map(e=>e.title)),r=e.map(e=>({item:e,data:{user:{},page:{},edit:{}}}));try{const o=[];return o.push((async()=>{await Promise.all(e.map(async(e,t)=>{[r[t].data.parsedcomment]=await Promise.all([this.parse(e.comment,void 0,!1,!0,n,s)])}))})(),this.parseUsers(i,t,n,s).then(t=>{e.forEach((e,n)=>{const s=i.indexOf(e.user);r[n].data.user=t[s].user})}),this.getPagesDetails(a,n,s).then(t=>{e.forEach((e,n)=>{var s,i,a,o;r[n].data.page.protection=(null===(s=t[e.title])||void 0===s?void 0:s.protection)||{protected:!1},r[n].data.page.watched=(null===(i=t[e.title])||void 0===i?void 0:i.watched)||!1,r[n].data.page.categories=(null===(a=t[e.title])||void 0===a?void 0:a.categories)||[],r[n].data.page.metadata=(null===(o=t[e.title])||void 0===o?void 0:o.metadata)||[]})})),t||o.push((async()=>{await Promise.all(e.map(async(e,t)=>{[r[t].data.page.reverts,r[t].data.page.history,r[t].data.edit.diff]=await Promise.all([this.countPageReverts(e.title,this.username,n,s),this.getHistory(e.title,void 0,n,s),e.diff?this.getWikitextDiff(e.diff.old,e.diff.new,"table",n,s):Promise.resolve(null)])}))})()),await Promise.all(o),r}catch(e){var o;return null!==(o=void d.error("Parse abuselog error:",e))&&void 0!==o?o:r}}async getAbuseLogRevid(e,t,n){try{var s,i;return(null===(i=((null===(s=(await this.post({action:"query",list:"abuselog",afllogids:e,aflprop:"ids|revid"},t,n)).query)||void 0===s?void 0:s.abuselog)||[]).find(t=>t.id===e))||void 0===i?void 0:i.revid)||null}catch(e){var a;return null!==(a=void d.error("Error fetching abuse log revids:",e))&&void 0!==a?a:{}}}async feeds(e=null,t=null,n=null,s=null,i=null){[e,t,n,s,i]=[e,t,n,s,i].map(e=>"object"==typeof e?e:{});try{const a={action:"query",list:[]};null!==e&&(a.list.push("recentchanges"),a.rctype="edit",a.rcprop="title|ids|sizes|flags|user|timestamp|comment|parsedcomment|tags|oresscores",a.rcshow="!bot",a.rcnamespace=e.ns||"*",e.since&&(a.rcstart=e.since),a.rcdir=e.since?"newer":"older",a.rclimit="max"),null!==t&&u.has(this.server)&&(a.list.push("oldreviewedpages"),a.ornamespace=t.ns||"*",a.orlimit="max"),null!==n&&(a.list.push("logevents"),a.letype="newusers",a.wlprop="ids|title|type|user|timestamp|comment|details|parsedcomment",n.since&&(a.lestart=n.since),a.ledir=n.since?"newer":"older",a.lelimit="max"),null!==s&&(a.list.push("watchlist"),a.wltype="edit",a.wlprop="title|ids|sizes|flags|user|timestamp|comment|tags|oresscores|parsedcomment",a.wlexcludeuser=this.username,a.wlnamespace=s.ns||"*",s.since&&(a.wlstart=s.since),a.wldir=s.since?"newer":"older",a.wllimit="max"),null!==i&&(a.list.push("abuselog"),a.aflnamespace=i.ns||"*",i.since&&(a.aflstart=i.since),a.afldir=i.since?"newer":"older",a.aflprop="ids|user|title|action|result|timestamp|hidden|revid|filter|details",a.afllimit="max"),a.list=p.join(a.list);const r={recent:[],pending:[],users:[],watchlist:[],abuselog:[]};if((await this.continuous(a)).responses.forEach(e=>{const t=e.query||{};t.recentchanges&&(r.recent=r.recent.concat(t.recentchanges)),t.oldreviewedpages&&(r.pending=r.pending.concat(t.oldreviewedpages)),t.logevents&&(r.users=r.users.concat(t.logevents.filter(e=>!e.temp))),t.watchlist&&(r.watchlist=r.watchlist.concat(t.watchlist)),t.abuselog&&(r.abuselog=r.abuselog.concat(t.abuselog))}),r.pending=r.pending.slice(0,10),r.pending.length>0){const e=new Map,n={};if(await Promise.allSettled(r.pending.map(async t=>{var s,i,a;this.cache.pending.has(t.revid)||this.cache.pending.set(t.revid,await this.post({action:"query",prop:"revisions",titles:t.title,rvstartid:t.revid,rvlimit:1,rvprop:"ids|flags|user|timestamp|comment|parsedcomment|size|tags"}));const r=this.cache.pending.get(t.revid);e.has(t.title)||e.set(t.title,this.post({action:"query",list:"logevents",letype:"stable",leprop:"ids|title|type|user|timestamp|comment|details|parsedcomment",letitle:t.title,lelimit:1})),t.stability=(null===(s=await e.get(t.title))||void 0===s||null===(s=s.query)||void 0===s||null===(s=s.logevents)||void 0===s?void 0:s[0])||{};const o=null===(i=r.query)||void 0===i||null===(i=i.pages)||void 0===i?void 0:i[0];n[t.title]={title:t.title,sizediff:t.diff_size,...null===(a=o.revisions)||void 0===a?void 0:a[0],pending:t}})),r.pending=Object.values(n),!0===t.full){const e={};await Promise.allSettled(r.pending.map(async t=>{const n=await this.getRevisionsBetween(t.title,t.pending.stable_revid,t.revid);if(n.length<2)return;const s=n.pop();e[t.title]={count:n.length,users:n.reduce((e,t)=>(t.user in e?e[t.user]++:e[t.user]=1,e),{}),edits:n,revid:t.revid,prior:s.revid,sizediff:t.size-s.size,timestamp:{new:t.timestamp,old:n[n.length-1].timestamp},pending:t.pending}})),r.pending=e}}if(r.abuselog.length>0){const e={};r.abuselog.forEach(t=>{if("edit"!==t.action)return;const n=`${t.user}|${t.title}|${t.timestamp}`;n in e?e[n].push(t):e[n]=[t]});const t=[];await Promise.allSettled(Object.entries(e).map(async([,e])=>{var n,s,i,a,r;const o=e[e.length-1],l=new Set(e.flatMap(e=>e.result.split(","))),d=e.find(e=>""!==e.revid&&void 0!==e.revid),c=e.find(e=>Object.keys(e.details).length);t.push({id:o.id,revision:void 0!==d,private:!c,result:l,action:o.action,revid:null!==(n=null==d?void 0:d.revid)&&void 0!==n?n:null,diff:c.details?{new:c.details.new_wikitext,old:c.details.old_wikitext,size:c.details.edit_delta}:null,timestamp:o.timestamp,comment:null!==(s=null==c||null===(i=c.details)||void 0===i?void 0:i.summary)&&void 0!==s?s:null,user:o.user,editcount:null!==(a=null==c||null===(r=c.details)||void 0===r?void 0:r.user_editcount)&&void 0!==a?a:null,ns:o.ns,title:o.title,entries:e})})),r.abuselog=t}return r}catch(e){return d.error("Feeds error:",e),{recent:[],pending:t.full?{}:[],users:[],watchlist:[],abuselog:[]}}}}var g,h,m;t.MediaWikiAPI=p,g=p,m={},(h=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(h="cache"))in g?Object.defineProperty(g,h,{value:m,enumerable:!0,configurable:!0,writable:!0}):g[h]=m},2486(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.build=async function(){document.head.querySelectorAll("link[rel=icon]").forEach(e=>e.remove()),document.head.querySelectorAll("link[rel=stylesheet]").forEach(e=>e.remove()),document.head.querySelectorAll("style").forEach(e=>e.remove());const e=(new DOMParser).parseFromString(s.default,"text/html");document.title=e.title,e.head.querySelectorAll("link[rel=stylesheet]").forEach(e=>{document.head.appendChild(Object.assign(document.createElement("link"),{rel:"stylesheet",href:e.href}))}),e.head.querySelectorAll("link[rel=icon]").forEach(e=>{document.head.appendChild(Object.assign(document.createElement("link"),{rel:"icon",href:e.href}))});[i.default,a.default].filter(Boolean).forEach(e=>{const t=document.createElement("style");t.textContent=e,document.head.appendChild(t)});document.body.innerHTML=e.body.innerHTML,await new Promise(requestAnimationFrame),document.querySelectorAll("[data-electron]").forEach(e=>{"false"===e.dataset.electron&&window.isElectron?e.style.display="none":"true"!==e.dataset.electron||window.isElectron||(e.style.display="none")})};var s=r(n(5540)),i=r(n(4279)),a=r(n(2459));function r(e){return e&&e.__esModule?e:{default:e}}},4112(e,t){function n(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function s(e,t){return e.get(a(e,t))}function i(e,t,n){return e.set(a(e,t),n),n}function a(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.MediaWikiOAuth2=void 0;var r=new WeakMap,o=new WeakMap;class l{constructor(e){n(this,r,void 0),n(this,o,0),i(r,this,Date.now()),this.delay=e,this.last=0}get count(){return s(o,this)}per(e=1){return Math.floor(s(o,this)/((Date.now()-s(r,this))/e))||0}call(e,t=!1){var n;i(o,this,(n=s(o,this),n++,n));const a=Date.now(),r=Math.max(0,this.last+this.delay-a);return this.last=a+r,t||0===r?e():new Promise(t=>setTimeout(async()=>t(await e()),r))}}t.MediaWikiOAuth2=class{constructor(e){this.userAgent=e,this.throttle=new l(0),this.api=new mw.Api}getOrigin(e){const t=`${location.protocol}//${location.host}`;try{const n=new URL(e);if(`${n.protocol}//${n.host}`===t)return}catch(e){}return t}async fetch(e,t={},n=null,s="POST",i){return await this.throttle.call(async()=>{const n=this.getOrigin(e);return n&&(e+=(e.includes("?")?"&":"?")+`origin=${encodeURIComponent(n)}`),await this.api.ajax({...t,origin:n},{url:e,method:s,...n?{xhrFields:{withCredentials:!0}}:{}}).catch(e=>{throw console.error(`[WikiShield] Failed to parse "OAuth2" response (rpm: ${this.throttle.per(6e4)}):`,e),e})},i)}}},505(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ORES=void 0;t.ORES=class{static extract(e,t=.5){const n=[{key:"goodfaith",field:"false",bias:t},{key:"damaging",field:"true",bias:1-t}],s={};for(const[t,r]of Object.entries(e)){const e=[];for(const t of n){var i,a;const n=r[t.key];if(!n)continue;let s=null!==(i=null===(a=n.probability)||void 0===a?void 0:a[t.field])&&void 0!==i?i:n[t.field];void 0===s&&void 0!==n.prediction&&(s=+n.prediction),void 0===s||isNaN(s)||e.push(s*(t.bias||0))}s[t]=0===e.length?NaN:e.reduce((e,t)=>e+t,0)/e.length}return s}}},8582(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.__servers__=void 0;t.__servers__=[{name:"English",host:"en.wikipedia.org",language_code:"en",tag:!0,pending_changes:!0},{name:"seperator"},{name:"Test",host:"test2.wikipedia.org",language_code:"en",tag:!1,pending_changes:!0}]},2535(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.API=void 0;var s=n(4551),i=n(8878),a=n(4112);function r(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function o(e,t,n){return e.set(d(e,t),n),n}function l(e,t){return e.get(d(e,t))}function d(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}const c=new Set([]);let u=t.API=void 0;var p,g,h,m;window.isElectron?t.API=(p=new WeakMap,g=new WeakMap,h=new WeakMap,u=class{static chunk(e,t=50){const n=[],s=e.length;for(let i=0;i<s;i+=t)n.push(e.slice(i,i+t));return n}static paramify(e){return Array.isArray(e)||(e=[e]),[...new Set(e)].filter(e=>"string"==typeof e&&e.trim())}get username(){return l(h,this)}get hasPendingChanges(){return c.has(l(g,this))}constructor(e,t,n,s){r(this,p,null),r(this,g,null),r(this,h,null),o(p,this,e),o(g,this,t),o(h,this,n);for(const e of s)c.add(e)}build(e={}){return{assertuser:l(h,this),discussiontoolsautosubscribe:"no",...e}}summary(e,t){const n=" ([[:en:WP:WikiShield|WS]])",i=`${e}${t?`: ${t}`:""}`;return`${(0,s.truncate)(i,473)}${n}`}user(e){return`[[Special:Contribs/${e}|${e}]] ([[User talk:${e}|talk]])`}revision(e){return`[[Special:Diff/${e}|${e}]]`}centralAuthUser(e){return`[[Special:CentralAuth/${e}|${e}]]`}async post(e,t,n){try{return await electron.mwapi("post",e,t,n)}catch(e){var s;if("assertnameduserfailed"===e||null!==(s=e.message)&&void 0!==s&&s.includes("assertnameduserfailed"))return l(p,this).disable("Invalid account","Your account was logged out or changed.");throw e}}async continuous(e,t,n,s){try{let i=null;const a=[];do{const r=await this.post({...e,...i||{}},n,s);if(a.push(r),i=r.continue||null,"function"==typeof t&&!0===await t(r,a)){i=!0;break}}while(i);return{stopped:null!==i,responses:a}}catch(e){return console.error("Continuous error:",e),{stopped:!0,responses:[]}}}async getToken(e="csrf",t,n){return await electron.mwapi("getToken",e,t,n)}async postWithToken(e,t="csrf",n,s){return await electron.mwapi("postWithToken",e,t,n,s)}async account(e,t){return await electron.mwapi("account",e,t)}async getGlobalUserInfo(e,t,n){return await electron.mwapi("getGlobalUserInfo",e,t,n)}async markWatchlistSeen(e,t,n,s){return await electron.mwapi("markWatchlistSeen",e,t,n,s)}async append(e,t,n,s,i,a,r){if("function"==typeof i){const o=await electron.mwapi("append",e,t,n,s,!0,a,r);if(o.needsCheck){const l=await i(o.text);return l.valid?await electron.mwapi("append",e,t,n,s,void 0,a,r):{valid:!1,reason:l.reason||"Append check failed."}}return o}return await electron.mwapi("append",e,t,n,s,void 0,a,r)}async editSection(e,t,n,s,i,a,r,o){if("function"==typeof a){const l=await electron.mwapi("editSection",e,t,n,s,i,!0,r,o);if(l.needsCheck){const d=await a(l.text);return d.valid?await electron.mwapi("editSection",e,t,n,s,i,void 0,r,o):{valid:!1,reason:d.reason||"Edit section check failed."}}return l}return await electron.mwapi("editSection",e,t,n,s,i,void 0,r,o)}async acceptPendingEdit(e,t,n,s){return await electron.mwapi("acceptPendingEdit",e,t,n,s)}async rejectPendingEdit(e,t,n,s,i,a){return await electron.mwapi("rejectPendingEdit",e,t,n,s,i,a)}async rollbackEdit(e,t,n,s,i){return await electron.mwapi("rollbackEdit",e,t,n,s,i)}async undoEdit(e,t,n,s,i){return await electron.mwapi("undoEdit",e,t,n,s,i)}async restoreEdit(e,t,n,s,i){return await electron.mwapi("restoreEdit",e,t,n,s,i)}async thankRevision(e,t,n){return await electron.mwapi("thankRevision",e,t,n)}async watchPage(e,t,n,s){return await electron.mwapi("watchPage",e,t,n,s)}async unwatchPage(e,t,n){return await electron.mwapi("unwatchPage",e,t,n)}async parse(e,t,n=!1,s,i){return await electron.mwapi("parse",e,t,n,s,i)}async getTags(e,t){return await electron.mwapi("getTags",e,t)}async getPagesContent(e,t,n){return await electron.mwapi("getPagesContent",e,t,n)}async getRevisionContent(e,t,n){return await electron.mwapi("getRevisionContent",e,t,n)}async getLatestIds(e,t,n){return await electron.mwapi("getLatestIds",e,t,n)}async getEditCounts(e,t,n){return await electron.mwapi("getEditCounts",e,t,n)}async areUsersBlocked(e,t,n){return await electron.mwapi("areUsersBlocked",e,t,n)}async isUserGloballyLocked(e,t,n){return await electron.mwapi("isUserGloballyLocked",e,t,n)}async getContributions(e,t,n,s){return await electron.mwapi("getContributions",e,t,n,s)}async getBlocks(e,t,n){return await electron.mwapi("getBlocks",e,t,n)}async pagesExist(e,t,n){return await electron.mwapi("pagesExist",e,t,n)}async getPagesDetails(e,t,n){return await electron.mwapi("getPagesDetails",e,t,n)}async countPageReverts(e,t,n,s){return await electron.mwapi("countPageReverts",e,t,n,s)}async getHistory(e,t,n,s){return await electron.mwapi("getHistory",e,t,n,s)}async getORES(e,t,n,s){return await electron.mwapi("getORES",e,t,n,s)}async extractORES(e,t){return await electron.mwapi("extractORES",e,t)}async getDiff(e,t,n,s,i){return await electron.mwapi("getDiff",e,t,n,s,i)}async getRevision(e,t,n,s){return await electron.mwapi("getRevision",e,t,n,s)}async getRevisionsBetween(e,t,n,s,i){return await electron.mwapi("getRevisionsBetween",e,t,n,s,i)}async parseUsers(e,t,n,s){return await electron.mwapi("parseUsers",e,t,n,s)}async parseEdits(e,t,n,s,i){return await electron.mwapi("parseEdits",e,t,n,s,i)}async parseAbuselogs(e,t,n,s){return await electron.mwapi("parseAbuselogs",e,t,n,s)}async getConsecutiveEdits(e,t,n,s,i){return await electron.mwapi("getConsecutiveEdits",e,t,n,s,i)}async getAbuseLogRevid(e,t,n){return await electron.mwapi("getAbuseLogRevid",e,t,n)}async feeds(e,t,n,s,i){return await electron.mwapi("feeds",e,t,n,s,i)}}):t.API=(m=new WeakMap,u=class extends i.MediaWikiAPI{get hasPendingChanges(){return c.has(this.server)}constructor(e,t,n,s){super(e,new a.MediaWikiOAuth2(`WikiShield (${t}; ${n})`),t,n),r(this,m,null),o(m,this,e),this.server=t,this.username=n;for(const e of s)c.add(e)}})},691(e,t){function n(e,t,n){s(e,t),t.set(e,n)}function s(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function i(e,t){return e.get(r(e,t))}function a(e,t,n){return e.set(r(e,t),n),n}function r(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(t,"__esModule",{value:!0}),t.Killswitch=void 0;var o=new WeakMap,l=new WeakMap,d=new WeakMap,c=new WeakSet;function u(e){if(i(d,this)[e])for(const n of i(d,this)[e])try{n.callback()}catch(e){}finally{var t;!0===(null===(t=n.options)||void 0===t?void 0:t.once)&&(i(d,this)[e]=i(d,this)[e].filter(e=>e!==n))}return this}t.Killswitch=class{constructor(e){var t,i;s(t=this,i=c),i.add(t),n(this,o,null),n(this,l,null),n(this,d,{okay:[],unsafe:[],update:[],"force-update":[],kill:[]}),a(o,this,e.api)}on(e,t,n={}){return i(d,this)[e]&&i(d,this)[e].push({callback:t,options:n}),this}async check(){try{var e,t,n,s,a,l,d;const m=null!==(e=null===(t=await i(o,this).getPagesContent([p._],!0,"en.wikipedia.org"))||void 0===t?void 0:t[p._])&&void 0!==e?e:"",v=null===(n=JSON.parse(m))||void 0===n?void 0:n.WikiShield;if(!v)throw new Error("No killswitch found");if(v.disabled)return r(c,this,u).call(this,"kill");const f=null!==(s=null===(a=v.reload)||void 0===a?void 0:a.soft)&&void 0!==s?s:0;return(null!==(l=null===(d=v.reload)||void 0===d?void 0:d.hard)&&void 0!==l?l:0)>h._?r(c,this,u).call(this,"force-update"):f>g._?(g._=f,r(c,this,u).call(this,"update")):r(c,this,u).call(this,"okay")}catch(e){return r(c,this,u).call(this,"unsafe")}}monitor(e=1e4){return i(l,this)&&clearInterval(i(l,this)),a(l,this,setInterval(()=>this.check(),+e)),this}};var p={_:"User:LuniZunie/JSON/Killswitch.json"},g={_:11},h={_:1}}},t={};function n(s){var i=t[s];if(void 0!==i)return i.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}var s=n(8816),i=n(2486);{var a;function r(){(0,i.build)().then(()=>{(0,s.run)(),window.onpopstate=e=>{var t;"WikiShield"!==(null===(t=e.state)||void 0===t?void 0:t.page)&&(window.location.reload(),window.onpopstate=null)}}).catch(e=>{console.error("[WikiShield] Error during build:",e),alert("An error occurred while starting WikiShield. Please check the console for details.")})}const o=mw.util.addPortletLink("p-personal",mw.util.getUrl("Wikipedia:WikiShield/run"),"WikiShield","pt-wikishield","WikiShield",void 0,"#pt-preferences");if(o){const l=o.querySelector(":scope > a > span");l&&(l.innerHTML="WS",l.style.fontWeight="bold",l.style.color="var(--color-base, #202122)",l.style.maskImage="none",l.style.webkitMaskImage="none",l.style.background="transparent",l.style.height="auto"),"true"!==electron.localStorage.get("WikiShield:OpenExternally")&&o.addEventListener("click",e=>{e.ctrlKey||e.metaKey||e.shiftKey||e.altKey||(e.preventDefault(),history.pushState({page:"WikiShield"},"",location.href),r())})}switch(addEventListener("popstate",e=>{var t;"WikiShield"===(null===(t=e.state)||void 0===t?void 0:t.page)&&r()}),null===(a=history.state)||void 0===a?void 0:a.page){case"WikiShield":history.replaceState(null,"",location.href);break;case"WikiShield-reload":history.replaceState({page:"WikiShield"},"",location.href),r()}"Wikipedia:WikiShield/run"===mw.config.get("wgRelevantPageName")&&"view"===mw.config.get("wgAction")&&(history.pushState({page:"WikiShield"},"",location.href),r())}}();/*</nowiki>*/
10uigzhqzpgmtwfgh0bzqemoh0g8ef8
User:Wmbata/common.js
2
124326
619569
619492
2026-08-01T21:53:07Z
Wmbata
26533
.
619569
javascript
text/javascript
$(function () {
'use strict';
var api = new mw.Api();
var pages = [];
var stop = false;
function WmbCat() {
var $open = $('<button id="wmbcat-open">WmbCat</button>');
var $box = $('<div id="wmbcat-box"></div>');
$box.html(
'<div id="wmbcat-head">WmbCat <button id="wmbcat-close">×</button></div>' +
'<input id="wmbcat-name" placeholder="Category name">' +
'<button id="wmbcat-scan">Scan visible pages</button>' +
'<button id="wmbcat-all">Select all</button>' +
'<button id="wmbcat-none">Select none</button>' +
'<button id="wmbcat-add">Add category</button>' +
'<button id="wmbcat-stop">Stop</button>' +
'<div id="wmbcat-status"></div>' +
'<div id="wmbcat-list"></div>'
);
$('body').append($open, $box);
$open.click(function () {
$open.hide();
$box.show();
});
$('#wmbcat-close').click(function () {
$box.hide();
$open.show();
});
$('#wmbcat-scan').click(function () {
pages = [];
var found = {};
$('#mw-content-text a').each(function () {
var t = $(this).attr('title');
if (
t &&
t.indexOf(':') === -1 &&
t.indexOf('#') === -1 &&
!found[t]
) {
found[t] = true;
pages.push(t);
}
});
showPages();
$('#wmbcat-status').text(
pages.length + ' pages found.'
);
});
$('#wmbcat-all').click(function () {
$('#wmbcat-list input')
.prop('checked', true);
});
$('#wmbcat-none').click(function () {
$('#wmbcat-list input')
.prop('checked', false);
});
$('#wmbcat-stop').click(function () {
stop = true;
});
$('#wmbcat-add').click(function () {
var cat = $('#wmbcat-name').val().trim();
if (!cat) {
alert('Enter category name.');
return;
}
var selected = [];
$('#wmbcat-list input:checked')
.each(function () {
selected.push($(this).data('page'));
});
if (!selected.length) {
alert('Select pages.');
return;
}
stop = false;
addCategory(
selected,
cat,
0,
0
);
});
mw.loader.addStyleTag(
'#wmbcat-open{position:fixed;right:15px;bottom:15px;z-index:9999;background:#14866d;color:white;border:0;padding:8px;cursor:pointer}' +
'#wmbcat-box{display:none;position:fixed;right:15px;bottom:15px;width:350px;max-height:70vh;overflow:auto;background:white;border:1px solid #aaa;padding:10px;z-index:9999;box-shadow:0 2px 10px #777}' +
'#wmbcat-head{font-weight:bold;background:#eee;padding:6px;margin-bottom:8px;cursor:move}' +
'#wmbcat-list label{display:block;margin:3px}' +
'#wmbcat-box button{margin:3px;padding:5px}'
);
}
function showPages() {
var $list = $('#wmbcat-list');
$list.empty();
pages.forEach(function (p) {
$list.append(
$('<label><input type="checkbox" checked></label>')
.find('input')
.attr('data-page', p)
.end()
.append(document.createTextNode(' ' + p))
);
});
}
function addCategory(list, cat, i, done) {
if (stop || i >= list.length) {
$('#wmbcat-status').text(
'Finished. Added: ' + done
);
return;
}
var page = list[i];
$('#wmbcat-status').text(
'Editing ' + (i + 1) +
'/' + list.length +
': ' + page
);
getContent(page).done(function(content){
var exists =
new RegExp(
'\\[\\[Category\\s*:\\s*' +
cat.replace(/[.*+?^${}()|[\]\\]/g,'\\$&') +
'(\\||\\]\\])',
'i'
)
.test(content);
if (exists) {
next();
return;
}
save(
page,
content.trimEnd() +
'\n\n[[Category:' +
cat +
']]',
'Adding category ' + cat
)
.done(function(){
next(done + 1);
})
.fail(function(){
next();
});
});
function next(x) {
setTimeout(function(){
addCategory(
list,
cat,
i + 1,
x === undefined ? done : x
);
},500);
}
}
function getContent(title){
return api.get({
action:'query',
titles:title,
prop:'revisions',
rvprop:'content',
rvslots:'main',
formatversion:2
}).then(function(data){
var p=data.query.pages[0];
return (
p.revisions &&
p.revisions[0] &&
p.revisions[0].slots.main.content
) || '';
});
}
function save(title,text,summary){
return api.postWithEditToken({
action:'edit',
title:title,
text:text,
summary:summary,
watchlist:'nochange'
});
}
WmbCat();
});
2l5sumr8ohu1cfr3w42kskqfulxhq4k
619571
619569
2026-08-01T21:58:45Z
Wmbata
26533
.
619571
javascript
text/javascript
$(function () {
'use strict';
var api = new mw.Api();
var wmbcatPages = [];
var wmbcatStopped = false;
function initWmbCat() {
var $launcher = $(
'<button id="wmbcat-launcher" type="button">' +
'WmbCat' +
'</button>'
);
var $panel = $(
'<div id="wmbcat-panel"></div>'
);
$panel.html(
'<div id="wmbcat-header">' +
'<span>WmbCat</span>' +
'<button id="wmbcat-close">×</button>' +
'</div>' +
'<div id="wmbcat-body">' +
'<input id="wmbcat-category" ' +
'placeholder="Category name">' +
'<div>' +
'<button id="wmbcat-scan">Scan visible pages</button>' +
'<button id="wmbcat-select-all">Select all</button>' +
'<button id="wmbcat-select-none">Select none</button>' +
'</div>' +
'<div>' +
'<button id="wmbcat-add">Add category</button>' +
'<button id="wmbcat-stop">Stop</button>' +
'</div>' +
'<div id="wmbcat-status"></div>' +
'<div id="wmbcat-results"></div>' +
'</div>'
);
$('body').append(
$launcher,
$panel
);
$launcher.click(function () {
$launcher.hide();
$panel.show();
});
$('#wmbcat-close').click(function () {
$panel.hide();
$launcher.show();
});
$('#wmbcat-scan').click(function () {
wmbcatPages =
getVisibleArticlePages();
renderPages();
$('#wmbcat-status').text(
wmbcatPages.length +
' pages found.'
);
});
$('#wmbcat-select-all').click(function () {
$('#wmbcat-results input')
.prop(
'checked',
true
);
});
$('#wmbcat-select-none').click(function () {
$('#wmbcat-results input')
.prop(
'checked',
false
);
});
$('#wmbcat-stop').click(function () {
wmbcatStopped = true;
$('#wmbcat-status').text(
'Stopping...'
);
});
$('#wmbcat-add').click(function () {
var category =
$('#wmbcat-category')
.val()
.trim();
if (!category) {
mw.notify(
'Enter a category name.',
{
type:'warn'
}
);
return;
}
var pages = [];
$('#wmbcat-results input:checked')
.each(function(){
pages.push(
$(this).data('page')
);
});
if (!pages.length) {
mw.notify(
'No pages selected.',
{
type:'warn'
}
);
return;
}
wmbcatStopped = false;
processCategory(
pages,
category,
0,
0,
0
);
});
mw.loader.addStyleTag(
wmbcatCSS()
);
}
function getVisibleArticlePages() {
var found = {};
var pages = [];
$('#mw-content-text .mw-parser-output a')
.each(function(){
var title =
$(this).attr(
'title'
);
if (!title) {
return;
}
if (
title.indexOf(':') !== -1 ||
title.indexOf('#') !== -1
) {
return;
}
if (
$(this).hasClass('new')
) {
return;
}
if (
found[title]
) {
return;
}
found[title] = true;
pages.push(
title
);
});
return pages;
}
function renderPages() {
var $box =
$('#wmbcat-results');
$box.empty();
wmbcatPages.forEach(function(page){
var $label =
$('<label class="wmbcat-page"></label>');
var $check =
$('<input type="checkbox" checked>');
$check.attr(
'data-page',
page
);
$label.append(
$check,
document.createTextNode(
' ' + page
)
);
$box.append(
$label
);
});
}
t878j5vaewzxmqgw165ex9sswhgni4u
619576
619571
2026-08-01T22:00:42Z
Wmbata
26533
.
619576
javascript
text/javascript
$(function () {
'use strict';
var api = new mw.Api();
var wmbPages = [];
var stopped = false;
function initWmbCat() {
var $launcher = $(
'<button id="wmbcat-launcher">WmbCat</button>'
);
var $panel = $(
'<div id="wmbcat-panel"></div>'
);
$panel.html(
'<div id="wmbcat-header">' +
'WmbCat ' +
'<button id="wmbcat-close">×</button>' +
'</div>' +
'<div id="wmbcat-content">' +
'<input id="wmbcat-category" ' +
'placeholder="Category name">' +
'<br>' +
'<button id="wmbcat-scan">Scan visible pages</button>' +
'<button id="wmbcat-all">Select all</button>' +
'<button id="wmbcat-none">Select none</button>' +
'<br>' +
'<button id="wmbcat-add">Add category</button>' +
'<button id="wmbcat-stop">Stop</button>' +
'<div id="wmbcat-status"></div>' +
'<div id="wmbcat-pages"></div>' +
'</div>'
);
$('body').append(
$launcher,
$panel
);
$launcher.click(function(){
$launcher.hide();
$panel.show();
});
$('#wmbcat-close').click(function(){
$panel.hide();
$launcher.show();
});
$('#wmbcat-scan').click(function(){
wmbPages =
getVisiblePages();
showPages();
$('#wmbcat-status').text(
wmbPages.length +
' real pages found.'
);
});
$('#wmbcat-all').click(function(){
$('#wmbcat-pages input')
.prop(
'checked',
true
);
});
$('#wmbcat-none').click(function(){
$('#wmbcat-pages input')
.prop(
'checked',
false
);
});
$('#wmbcat-stop').click(function(){
stopped = true;
$('#wmbcat-status')
.text(
'Stopping...'
);
});
$('#wmbcat-add').click(function(){
var category =
$('#wmbcat-category')
.val()
.trim();
if (!category) {
mw.notify(
'Enter a category name.',
{
type:'warn'
}
);
return;
}
var pages = [];
$('#wmbcat-pages input:checked')
.each(function(){
pages.push(
$(this).attr(
'data-page'
)
);
});
if (!pages.length) {
mw.notify(
'No pages selected.',
{
type:'warn'
}
);
return;
}
if (
!confirm(
'Add Category:' +
category +
' to ' +
pages.length +
' pages?'
)
) {
return;
}
stopped = false;
processPages(
pages,
category,
0,
0,
0
);
});
makeDraggable(
$panel,
$('#wmbcat-header')
);
mw.loader.addStyleTag(
getCSS()
);
}
function getVisiblePages(){
var found = {};
var pages = [];
$('#mw-content-text .mw-parser-output a')
.each(function(){
var title =
$(this).attr(
'title'
);
if (!title) {
return;
}
if (
title.indexOf(':') !== -1 ||
title.indexOf('#') !== -1
) {
return;
}
if (
$(this).hasClass('new')
) {
return;
}
if (
$(this).closest(
'.navbox'
).length
) {
return;
}
if (
found[title]
) {
return;
}
found[title] = true;
pages.push(
title
);
});
return pages;
}
function showPages(){
var $box =
$('#wmbcat-pages');
$box.empty();
wmbPages.forEach(function(page){
var $line =
$('<div class="wmbcat-line"></div>');
var $check =
$('<input type="checkbox" checked>');
$check.attr(
'data-page',
page
);
$line.append(
$check,
document.createTextNode(
' ' + page
)
);
$box.append(
$line
);
});
}
function processPages(
pages,
category,
index,
added,
skipped
){
if (
stopped ||
index >= pages.length
){
$('#wmbcat-status')
.text(
'Finished. Added: ' +
added +
'. Skipped: ' +
skipped
);
return;
}
var page =
pages[index];
$('#wmbcat-status')
.text(
'Processing ' +
(index + 1) +
'/' +
pages.length +
': ' +
page
);
getPageContent(page)
.done(function(content){
if (
hasCategory(
content,
category
)
){
next(
added,
skipped + 1
);
return;
}
savePage(
page,
content.trimEnd() +
'\n\n[[Category:' +
category +
']]',
'Adding [[Category:' +
category +
']]'
)
.done(function(){
next(
added + 1,
skipped
);
})
.fail(function(){
next(
added,
skipped
);
});
});
function next(a,s){
setTimeout(function(){
processPages(
pages,
category,
index + 1,
a,
s
);
},600);
}
}
function hasCategory(
content,
category
){
var escaped =
category.replace(
/[.*+?^${}()|[\]\\]/g,
'\\$&'
);
return new RegExp(
'\\[\\[\\s*Category\\s*:\\s*' +
escaped +
'(\\||\\s*\\]\\])',
'i'
)
.test(content);
}
function getPageContent(title){
return api.get({
action:'query',
titles:title,
prop:'revisions',
rvprop:'content',
rvslots:'main',
rvlimit:1,
formatversion:2
})
.then(function(data){
var page =
data.query.pages[0];
if (
!page.revisions
) {
return '';
}
return page.revisions[0]
.slots.main.content || '';
});
}
function savePage(
title,
text,
summary
){
return api.postWithEditToken({
action:'edit',
title:title,
text:text,
summary:summary,
watchlist:'nochange'
});
}
function makeDraggable(
$panel,
$handle
){
var drag=false;
var x,y,l,t;
$handle.on(
'mousedown',
function(e){
drag=true;
x=e.clientX;
y=e.clientY;
var p=$panel.position();
l=p.left;
t=p.top;
}
);
$(document).on(
'mousemove',
function(e){
if(!drag){
return;
}
$panel.css({
left:l+e.clientX-x,
top:t+e.clientY-y,
right:'auto',
bottom:'auto'
});
}
);
$(document).on(
'mouseup',
function(){
drag=false;
}
);
}
function getCSS(){
return `
#wmbcat-launcher{
position:fixed;
right:15px;
bottom:15px;
z-index:9999;
background:#14866d;
color:white;
border:1px solid #0f6b57;
padding:7px 12px;
cursor:pointer;
}
#wmbcat-panel{
display:none;
position:fixed;
right:15px;
bottom:15px;
width:360px;
max-height:70vh;
overflow:auto;
background:white;
border:1px solid #aaa;
z-index:9999;
padding:10px;
box-shadow:0 3px 10px #777;
}
#wmbcat-header{
font-weight:bold;
background:#eaecf0;
padding:8px;
cursor:move;
}
#wmbcat-pages{
margin-top:10px;
max-height:300px;
overflow:auto;
}
.wmbcat-line{
padding:3px;
border-bottom:1px solid #eee;
word-break:break-word;
}
`;
}
initWmbCat();
});
d304j6hs9jfqe3v8e55lknjzj4dahnt
619586
619576
2026-08-01T22:19:24Z
Wmbata
26533
.
619586
javascript
text/javascript
$(function () {
'use strict';
var api = new mw.Api();
var categoryResults = [];
var stopped = false;
function createTool() {
var $launcher = $(
'<button type="button" id="wiki-cleanup-launcher">' +
'Category Cleanup' +
'</button>'
);
var $panel = $(
'<div id="wiki-cleanup-panel"></div>'
);
var $header = $(
'<div id="wiki-cleanup-header"></div>'
);
var $title = $(
'<span>Category Cleanup</span>'
);
var $close = $(
'<button type="button" id="wiki-cleanup-close" ' +
'title="Close">×</button>'
);
$header.append(
$title,
$close
);
var $content = $(
'<div id="wiki-cleanup-content"></div>'
);
$panel.append(
$header,
$content
);
$('body').append(
$launcher,
$panel
);
$launcher.on(
'click',
function () {
$launcher.hide();
$panel.show();
}
);
$close.on(
'click',
function () {
$panel.hide();
$launcher.show();
}
);
makeDraggable(
$panel,
$header
);
renderCategoryTool($content);
}
function makeDraggable(
$panel,
$handle
) {
var dragging = false;
var startX = 0;
var startY = 0;
var startLeft = 0;
var startTop = 0;
$handle.on(
'mousedown touchstart',
function (event) {
if (
$(event.target).is(
'button'
)
) {
return;
}
var point =
event.type ===
'touchstart'
? event.originalEvent
.touches[0]
: event;
dragging = true;
startX = point.clientX;
startY = point.clientY;
var position = $panel.position();
startLeft = position.left;
startTop = position.top;
$panel.css({
right: 'auto',
bottom: 'auto'
});
event.preventDefault();
}
);
$(document).on(
'mousemove touchmove',
function (event) {
if (!dragging) {
return;
}
var point =
event.type ===
'touchmove'
? event.originalEvent
.touches[0]
: event;
var left =
startLeft +
point.clientX -
startX;
var top =
startTop +
point.clientY -
startY;
var maximumLeft =
window.innerWidth -
$panel.outerWidth();
var maximumTop =
window.innerHeight -
$panel.outerHeight();
left = Math.max(
0,
Math.min(
left,
maximumLeft
)
);
top = Math.max(
0,
Math.min(
top,
maximumTop
)
);
$panel.css({
left: left + 'px',
top: top + 'px'
});
}
);
$(document).on(
'mouseup touchend touchcancel',
function () {
dragging = false;
}
);
}
function renderCategoryTool(
$content
) {
var $description = $(
'<p class="wct-description">' +
'Checks the article links currently visible on this page ' +
'and finds category links whose category pages do not exist.' +
'</p>'
);
var $scan = $(
'<button type="button" ' +
'class="wct-main-button">' +
'Scan visible pages' +
'</button>'
);
var $selectAll = $(
'<button type="button">' +
'Select all' +
'</button>'
);
var $selectNone = $(
'<button type="button">' +
'Select none' +
'</button>'
);
var $remove = $(
'<button type="button">' +
'Remove selected' +
'</button>'
);
var $stop = $(
'<button type="button">' +
'Stop' +
'</button>'
);
var $status = $(
'<div class="wct-status"></div>'
);
var $results = $(
'<div id="wct-category-results"></div>'
);
$content.append(
$description,
$scan,
$selectAll,
$selectNone,
$remove,
$stop,
$status,
$results
);
$scan.on(
'click',
function () {
var pages =
getVisibleArticleLinks();
categoryResults = [];
stopped = false;
$results.empty();
if (!pages.length) {
$status.text(
'No article links were found.'
);
return;
}
$scan.prop(
'disabled',
true
);
scanCategoryPages(
pages,
0,
$status,
function () {
$scan.prop(
'disabled',
false
);
showCategoryResults(
$results,
$status
);
}
);
}
);
$selectAll.on(
'click',
function () {
$results
.find(
'input[type="checkbox"]'
)
.prop(
'checked',
true
);
}
);
$selectNone.on(
'click',
function () {
$results
.find(
'input[type="checkbox"]'
)
.prop(
'checked',
false
);
}
);
$stop.on(
'click',
function () {
stopped = true;
$status.text(
'Stopping after the current request.'
);
}
);
$remove.on(
'click',
function () {
removeSelectedCategories(
$results,
$status
);
}
);
}
function getVisibleArticleLinks() {
var found = {};
var pages = [];
$('#mw-content-text a')
.each(function () {
var title =
$(this).attr(
'title'
);
if (
!title ||
title.indexOf(
':'
) !== -1 ||
title.indexOf(
'#'
) !== -1
) {
return;
}
if (
found[title]
) {
return;
}
found[title] = true;
pages.push(
title
);
});
return pages;
}
function scanCategoryPages(
pages,
index,
$status,
done
) {
if (
stopped ||
index >=
pages.length
) {
done();
return;
}
$status.text(
'Scanning ' +
(index + 1) +
' of ' +
pages.length +
': ' +
pages[index]
);
getPageContent(
pages[index]
).done(
function (
content
) {
var categories =
extractCategories(
content
);
checkMissingCategories(
categories
).always(
function (
missing
) {
if (
missing &&
missing.length
) {
categoryResults.push({
page:
pages[index],
categories:
missing
});
}
setTimeout(
function () {
scanCategoryPages(
pages,
index + 1,
$status,
done
);
},
300
);
}
);
}
).fail(
function () {
setTimeout(
function () {
scanCategoryPages(
pages,
index + 1,
$status,
done
);
},
300
);
}
);
}
function extractCategories(
content
) {
var categories = [];
var found = {};
var pattern =
/\[\[\s*Category\s*:\s*([^|\]\n]+)(?:\|[^\]]*)?\]\]/gi;
var match;
while (
(match =
pattern.exec(
content
)) !== null
) {
var category =
match[1]
.trim()
.replace(
/_/g,
' '
);
if (
!found[category]
) {
found[category] =
true;
categories.push(
category
);
}
}
return categories;
}
function checkMissingCategories(
categories
) {
var deferred =
$.Deferred();
if (
!categories.length
) {
deferred.resolve(
[]
);
return deferred.promise();
}
var titles =
categories.map(
function (
category
) {
return (
'Category:' +
category
);
}
);
api.get({
action: 'query',
titles:
titles.join(
'|'
),
formatversion: 2
}).done(
function (
data
) {
var missing = [];
data.query.pages
.forEach(
function (
page
) {
if (
page.missing
) {
missing.push(
page.title
.replace(
/^Category:/i,
''
)
);
}
}
);
deferred.resolve(
missing
);
}
).fail(
function (
error
) {
deferred.reject(
error
);
}
);
return deferred.promise();
}
function showCategoryResults(
$container,
$status
) {
$container.empty();
if (
!categoryResults.length
) {
$status.text(
'No nonexistent categories were found.'
);
return;
}
var total = 0;
categoryResults
.forEach(
function (
result
) {
total +=
result.categories
.length;
var $box = $(
'<div class="wct-result"></div>'
);
var $page = $(
'<strong></strong>'
);
$page.text(
result.page
);
$box.append(
$page
);
result.categories
.forEach(
function (
category
) {
var $label = $(
'<label></label>'
);
var $check = $(
'<input type="checkbox" checked>'
);
$check.attr(
'data-page',
result.page
);
$check.attr(
'data-category',
category
);
$label.append(
$check,
document.createTextNode(
' Category:' +
category
)
);
$box.append(
$label
);
}
);
$container.append(
$box
);
}
);
$status.text(
'Found ' +
total +
' missing category links on ' +
categoryResults.length +
' pages.'
);
}
function removeSelectedCategories(
$container,
$status
) {
var selected = [];
$container
.find(
'input:checked'
)
.each(
function () {
selected.push({
page:
$(this).attr(
'data-page'
),
category:
$(this).attr(
'data-category'
)
});
}
);
if (
!selected.length
) {
mw.notify(
'No categories were selected.',
{
type: 'warn'
}
);
return;
}
if (
!window.confirm(
'Remove ' +
selected.length +
' selected category links?'
)
) {
return;
}
stopped = false;
editCategoryItems(
selected,
0,
0,
0,
$status
);
}
function editCategoryItems(
items,
index,
completed,
failed,
$status
) {
if (
stopped ||
index >=
items.length
) {
$status.text(
'Finished. Removed: ' +
completed +
'. Failed: ' +
failed +
'.'
);
return;
}
var item =
items[index];
$status.text(
'Removing ' +
(index + 1) +
' of ' +
items.length
);
getPageContent(
item.page
).done(
function (
content
) {
var escaped =
item.category.replace(
/[.*+?^${}()|[\]\\]/g,
'\\$&'
);
var pattern =
new RegExp(
'\\s*\\[\\[\\s*Category\\s*:\\s*' +
escaped +
'\\s*(?:\\|[^\\]]*)?\\]\\]',
'gi'
);
var newContent =
content.replace(
pattern,
''
);
if (
newContent ===
content
) {
editCategoryItems(
items,
index + 1,
completed,
failed + 1,
$status
);
return;
}
savePage(
item.page,
newContent,
'Removing kategori wey no dey exist'
).done(
function () {
setTimeout(
function () {
editCategoryItems(
items,
index + 1,
completed + 1,
failed,
$status
);
},
600
);
}
).fail(
function () {
setTimeout(
function () {
editCategoryItems(
items,
index + 1,
completed,
failed + 1,
$status
);
},
600
);
}
);
}
);
}
function getPageContent(
title
) {
var deferred =
$.Deferred();
api.get({
action: 'query',
titles: title,
prop: 'revisions',
rvprop: 'content',
rvslots: 'main',
rvlimit: 1,
formatversion: 2
}).done(
function (
data
) {
var page =
data.query.pages[0];
var revision =
page.revisions &&
page.revisions[0];
var content = '';
if (
revision &&
revision.slots &&
revision.slots.main
) {
content =
revision.slots
.main
.content ||
'';
}
deferred.resolve(
content
);
}
).fail(
function (
error
) {
deferred.reject(
error
);
}
);
return deferred.promise();
}
function savePage(
title,
content,
summary
) {
return api.postWithEditToken({
action: 'edit',
title: title,
text: content,
summary: summary,
watchlist: 'nochange'
});
}
mw.loader.addStyleTag(
'#wiki-cleanup-launcher {' +
'position:fixed;' +
'right:15px;' +
'bottom:15px;' +
'z-index:9999;' +
'padding:7px 11px;' +
'color:#fff;' +
'background:#14866d;' +
'border:1px solid #0f6b57;' +
'border-radius:4px;' +
'font-size:12px;' +
'cursor:pointer;' +
'box-shadow:0 2px 6px rgba(0,0,0,.2);' +
'}' +
'#wiki-cleanup-panel {' +
'display:none;' +
'position:fixed;' +
'right:15px;' +
'bottom:15px;' +
'width:380px;' +
'max-width:calc(100vw - 20px);' +
'max-height:75vh;' +
'overflow:auto;' +
'z-index:9999;' +
'background:#fff;' +
'border:1px solid #a2a9b1;' +
'box-shadow:0 3px 12px rgba(0,0,0,.25);' +
'font-size:13px;' +
'}' +
'#wiki-cleanup-header {' +
'display:flex;' +
'justify-content:space-between;' +
'align-items:center;' +
'padding:8px 10px;' +
'background:#eaecf0;' +
'border-bottom:1px solid #a2a9b1;' +
'font-weight:bold;' +
'cursor:move;' +
'touch-action:none;' +
'}' +
'#wiki-cleanup-close {' +
'padding:0 7px;' +
'border:0;' +
'background:transparent;' +
'font-size:20px;' +
'cursor:pointer;' +
'}' +
'#wiki-cleanup-content {' +
'padding:10px;' +
'}' +
'.wct-description {' +
'margin-top:0;' +
'line-height:1.45;' +
'}' +
'#wiki-cleanup-content button {' +
'margin:2px;' +
'padding:4px 7px;' +
'font-size:12px;' +
'cursor:pointer;' +
'}' +
'.wct-main-button {' +
'color:#fff;' +
'background:#14866d;' +
'border:1px solid #0f6b57;' +
'border-radius:3px;' +
'}' +
'.wct-status {' +
'padding:8px 2px;' +
'font-weight:bold;' +
'}' +
'.wct-result {' +
'margin-top:6px;' +
'padding:7px;' +
'border:1px solid #eaecf0;' +
'background:#f8f9fa;' +
'word-break:break-word;' +
'}' +
'.wct-result label {' +
'display:block;' +
'margin-top:4px;' +
'}'
);
createTool();
});
lelvdsfvkw499vmv9bv3hv7840ac3uz
619587
619586
2026-08-01T22:23:55Z
Wmbata
26533
.
619587
javascript
text/javascript
$(function () {
'use strict';
var api = new mw.Api();
var stopped = false;
function createTool() {
var $launcher = $(
'<button type="button" id="wiki-cleanup-launcher">' +
'Category Adder' +
'</button>'
);
var $panel = $(
'<div id="wiki-cleanup-panel"></div>'
);
var $header = $(
'<div id="wiki-cleanup-header"></div>'
);
var $title = $(
'<span>Category Adder</span>'
);
var $close = $(
'<button type="button" id="wiki-cleanup-close" ' +
'title="Close">×</button>'
);
$header.append(
$title,
$close
);
var $content = $(
'<div id="wiki-cleanup-content"></div>'
);
$panel.append(
$header,
$content
);
$('body').append(
$launcher,
$panel
);
$launcher.on(
'click',
function () {
$launcher.hide();
$panel.show();
}
);
$close.on(
'click',
function () {
$panel.hide();
$launcher.show();
}
);
makeDraggable(
$panel,
$header
);
renderCategoryTool($content);
}
function makeDraggable(
$panel,
$handle
) {
var dragging = false;
var startX = 0;
var startY = 0;
var startLeft = 0;
var startTop = 0;
$handle.on(
'mousedown touchstart',
function (event) {
if (
$(event.target).is(
'button'
) ||
$(event.target).is(
'input'
)
) {
return;
}
var point =
event.type ===
'touchstart'
? event.originalEvent
.touches[0]
: event;
dragging = true;
startX = point.clientX;
startY = point.clientY;
var position = $panel.position();
startLeft = position.left;
startTop = position.top;
$panel.css({
right: 'auto',
bottom: 'auto'
});
event.preventDefault();
}
);
$(document).on(
'mousemove touchmove',
function (event) {
if (!dragging) {
return;
}
var point =
event.type ===
'touchmove'
? event.originalEvent
.touches[0]
: event;
var left =
startLeft +
point.clientX -
startX;
var top =
startTop +
point.clientY -
startY;
var maximumLeft =
window.innerWidth -
$panel.outerWidth();
var maximumTop =
window.innerHeight -
$panel.outerHeight();
left = Math.max(
0,
Math.min(
left,
maximumLeft
)
);
top = Math.max(
0,
Math.min(
top,
maximumTop
)
);
$panel.css({
left: left + 'px',
top: top + 'px'
});
}
);
$(document).on(
'mouseup touchend touchcancel',
function () {
dragging = false;
}
);
}
function renderCategoryTool(
$content
) {
var $description = $(
'<p class="wct-description">' +
'Type a category name, load visible pages, and add them to the category.' +
'</p>'
);
var $categoryInput = $(
'<input type="text" id="wct-category-input" placeholder="Category name (without prefix)">'
);
var $load = $(
'<button type="button" ' +
'class="wct-main-button">' +
'Load pages' +
'</button>'
);
var $selectAll = $(
'<button type="button">' +
'Select all' +
'</button>'
);
var $selectNone = $(
'<button type="button">' +
'Select none' +
'</button>'
);
var $add = $(
'<button type="button">' +
'Add to category' +
'</button>'
);
var $stop = $(
'<button type="button">' +
'Stop' +
'</button>'
);
var $status = $(
'<div class="wct-status"></div>'
);
var $results = $(
'<div id="wct-category-results"></div>'
);
$content.append(
$description,
$categoryInput,
$load,
$selectAll,
$selectNone,
$add,
$stop,
$status,
$results
);
$load.on(
'click',
function () {
var catName = $categoryInput.val().trim();
if (!catName) {
$status.text('Please enter a category name.');
return;
}
var pages = getVisibleArticleLinks();
stopped = false;
if (!pages.length) {
$status.text(
'No article links were found.'
);
$results.empty();
return;
}
showPagesList(pages, catName, $results, $status);
}
);
$selectAll.on(
'click',
function () {
$results
.find(
'input[type="checkbox"]'
)
.prop(
'checked',
true
);
}
);
$selectNone.on(
'click',
function () {
$results
.find(
'input[type="checkbox"]'
)
.prop(
'checked',
false
);
}
);
$stop.on(
'click',
function () {
stopped = true;
$status.text(
'Stopping after the current request.'
);
}
);
$add.on(
'click',
function () {
var catName = $categoryInput.val().trim();
if (!catName) {
$status.text('Category name is missing.');
return;
}
addSelectedToCategory(
$results,
catName,
$status
);
}
);
}
function getVisibleArticleLinks() {
var found = {};
var pages = [];
$('#mw-content-text a')
.each(function () {
var title =
$(this).attr(
'title'
);
if (
!title ||
title.indexOf(
':'
) !== -1 ||
title.indexOf(
'#'
) !== -1
) {
return;
}
if (
found[title]
) {
return;
}
found[title] = true;
pages.push(
title
);
});
return pages;
}
function showPagesList(
pages,
categoryName,
$container,
$status
) {
$container.empty();
pages.forEach(
function (
page
) {
var $box = $(
'<div class="wct-result"></div>'
);
var $label = $(
'<label></label>'
);
var $check = $(
'<input type="checkbox" checked>'
);
$check.attr(
'data-page',
page
);
$label.append(
$check,
document.createTextNode(
' ' +
page
)
);
$box.append(
$label
);
$container.append(
$box
);
}
);
$status.text(
'Found ' +
pages.length +
' links. Ready to add to Category:' +
categoryName
);
}
function addSelectedToCategory(
$container,
categoryName,
$status
) {
var selected = [];
$container
.find(
'input:checked'
)
.each(
function () {
selected.push(
$(this).attr(
'data-page'
)
);
}
);
if (
!selected.length
) {
mw.notify(
'No pages were selected.',
{
type: 'warn'
}
);
return;
}
if (
!window.confirm(
'Add ' +
selected.length +
' pages to Category:' +
categoryName +
'?'
)
) {
return;
}
stopped = false;
processCategoryAddition(
selected,
categoryName,
0,
0,
0,
$status
);
}
function processCategoryAddition(
pages,
categoryName,
index,
completed,
failed,
$status
) {
if (
stopped ||
index >=
pages.length
) {
$status.text(
'Finished. Added: ' +
completed +
'. Failed/Skipped: ' +
failed +
'.'
);
return;
}
var page = pages[index];
$status.text(
'Processing ' +
(index + 1) +
' of ' +
pages.length +
': ' +
page
);
getPageContent(
page
).done(
function (
content
) {
var escaped =
categoryName.replace(
/[.*+?^${}()|[\]\\]/g,
'\\$&'
);
var pattern =
new RegExp(
'\\[\\[\\s*Category\\s*:\\s*' +
escaped +
'\\s*(?:\\|[^\\]]*)?\\]\\]',
'i'
);
if (
pattern.test(
content
)
) {
processCategoryAddition(
pages,
categoryName,
index + 1,
completed,
failed + 1,
$status
);
return;
}
var newContent =
content.trim() +
'\n\n[[Category:' +
categoryName +
']]';
savePage(
page,
newContent,
'Adding to Category:' + categoryName
).done(
function () {
setTimeout(
function () {
processCategoryAddition(
pages,
categoryName,
index + 1,
completed + 1,
failed,
$status
);
},
600
);
}
).fail(
function () {
setTimeout(
function () {
processCategoryAddition(
pages,
categoryName,
index + 1,
completed,
failed + 1,
$status
);
},
600
);
}
);
}
).fail(
function () {
setTimeout(
function () {
processCategoryAddition(
pages,
categoryName,
index + 1,
completed,
failed + 1,
$status
);
},
600
);
}
);
}
function getPageContent(
title
) {
var deferred =
$.Deferred();
api.get({
action: 'query',
titles: title,
prop: 'revisions',
rvprop: 'content',
rvslots: 'main',
rvlimit: 1,
formatversion: 2
}).done(
function (
data
) {
var page =
data.query.pages[0];
if (page.missing) {
deferred.reject('Page missing');
return;
}
var revision =
page.revisions &&
page.revisions[0];
var content = '';
if (
revision &&
revision.slots &&
revision.slots.main
) {
content =
revision.slots
.main
.content ||
'';
}
deferred.resolve(
content
);
}
).fail(
function (
error
) {
deferred.reject(
error
);
}
);
return deferred.promise();
}
function savePage(
title,
content,
summary
) {
return api.postWithEditToken({
action: 'edit',
title: title,
text: content,
summary: summary,
watchlist: 'nochange'
});
}
mw.loader.addStyleTag(
'#wiki-cleanup-launcher {' +
'position:fixed;' +
'right:15px;' +
'bottom:15px;' +
'z-index:9999;' +
'padding:7px 11px;' +
'color:#fff;' +
'background:#14866d;' +
'border:1px solid #0f6b57;' +
'border-radius:4px;' +
'font-size:12px;' +
'cursor:pointer;' +
'box-shadow:0 2px 6px rgba(0,0,0,.2);' +
'}' +
'#wiki-cleanup-panel {' +
'display:none;' +
'position:fixed;' +
'right:15px;' +
'bottom:15px;' +
'width:380px;' +
'max-width:calc(100vw - 20px);' +
'max-height:75vh;' +
'overflow:auto;' +
'z-index:9999;' +
'background:#fff;' +
'border:1px solid #a2a9b1;' +
'box-shadow:0 3px 12px rgba(0,0,0,.25);' +
'font-size:13px;' +
'}' +
'#wiki-cleanup-header {' +
'display:flex;' +
'justify-content:space-between;' +
'align-items:center;' +
'padding:8px 10px;' +
'background:#eaecf0;' +
'border-bottom:1px solid #a2a9b1;' +
'font-weight:bold;' +
'cursor:move;' +
'touch-action:none;' +
'}' +
'#wiki-cleanup-close {' +
'padding:0 7px;' +
'border:0;' +
'background:transparent;' +
'font-size:20px;' +
'cursor:pointer;' +
'}' +
'#wiki-cleanup-content {' +
'padding:10px;' +
'}' +
'.wct-description {' +
'margin-top:0;' +
'line-height:1.45;' +
'}' +
'#wct-category-input {' +
'width:100%;' +
'box-sizing:border-box;' +
'margin-bottom:8px;' +
'padding:6px;' +
'border:1px solid #a2a9b1;' +
'border-radius:2px;' +
'}' +
'#wiki-cleanup-content button {' +
'margin:2px;' +
'padding:4px 7px;' +
'font-size:12px;' +
'cursor:pointer;' +
'}' +
'.wct-main-button {' +
'color:#fff;' +
'background:#14866d;' +
'border:1px solid #0f6b57;' +
'border-radius:3px;' +
'}' +
'.wct-status {' +
'padding:8px 2px;' +
'font-weight:bold;' +
'}' +
'.wct-result {' +
'margin-top:6px;' +
'padding:7px;' +
'border:1px solid #eaecf0;' +
'background:#f8f9fa;' +
'word-break:break-word;' +
'}' +
'.wct-result label {' +
'display:block;' +
'margin-top:0;' +
'cursor:pointer;' +
'}'
);
createTool();
});
1ksemyh1osakahn2dbba1wk50m3v1fw
Testbug
0
124407
619590
617908
2026-08-01T22:25:04Z
Wmbata
26533
Adding to Category:Testcat
619590
wikitext
text/x-wiki
{{wikipedia:Testbug}}
[[Category:Testcat]]
sytedmw737osrirrpps1f3y6zbxpf6o
Blenke Igbo Script
0
124411
619589
618861
2026-08-01T22:25:02Z
Wmbata
26533
Adding to Category:Testcat
619589
wikitext
text/x-wiki
== The Miracle ==
'''Blenke Igbo {{Blenke|IGBO}} Script''' is the '''Modern Igbo {{Blenke|IGBO}} Writing Miracle''', inspired by '''cultural heritage, pride, and ancient spiritual ancestral inspiration'''.
This miracle is made to live as long as the people live and will only die if the people die, which is never possible. '''This miracle exists for cultural distinction, uniqueness, and preservation'''.
The name '''BLENKE{{Blenke|BLENKE}}''' was gotten from the name of an indigenous Igbo {{Blenke|IGBO}} community called '''Umuableeke/Umuablenke''', located in the village of '''Ochicha Ngugo in Ikeduru LGA'''.
The true origin of this miracle lies in cultural curiosity, vision, ancestral guidance, and spiritual inspiration given to a boy, in the year 2020.
== Types ==
The Blenke Script has two parts: '''''Abidi Igbo''''' and '''''Okwu Karili'''''.
'''''Abidi Igbo''''' is the tonal/phonetic part of the script, replacing the original '''Onwu Latin script'''. Each tone has its own unique symbol in this miracle, freeing it from the incomplete and confusing Latin-based system. '''Abidi Igbo''' also has two additional tone symbols that were missing in the original Onwu script: '''MHI {{Blenke|MHI}} and JH {{Blenke|JH}}'''.
'''Okwu Karili''', which translates as "'''''words that surpass'''''" or "'''''greater words'''''", refers to words that are used frequently and carry deeper meanings, making them unnecessary to spell out letter by letter. '''Okwu Karili''' combines both '''logographic and ideographic''' features to convey meaning.
=== Nyaba ===
The '''''Nyaba''''' are two special ''Okwu Karili'' symbols that '''expand the meaning of other Okwu Karili symbols'''. They are '''''Nta{{Blenke|NTA}} (the prefix)''''', which reduces an Okwu Karili meaning to a smaller quality, quantity, or scale, and '''''Ukwu{{Blenke|UKWU}} (the suffix)''''', which expands or advances an Okwu Karili to a greater or larger scale.
For example, when they are added to the '''mmadụ {{Blenke|MMADỤ}} (human)''' Okwu Karili, ''Nta {{Blenke|NTA}}'' changes it to '''Nwata {{Blenke|NTA}}{{Blenke|MMADỤ}} (child or baby)''', while '''Ukwu {{Blenke|UKWU}}''' changes it to '''Oké/Okenye {{Blenke|MMADỤ}}{{Blenke|UKWU}} (adult)'''.
Another example is '''Ọgụ {{Blenke|ỌGU}} (fight)'''. With Nta {{Blenke|NTA}}, it becomes '''Mgba {{Blenke|NTA}}{{Blenke|ỌGU}} (a simple fight or wrestling)''', while with Ukwu {{Blenke|UKWU}} , it becomes '''Agha {{Blenke|ỌGU}}{{Blenke|UKWU}} (war or a large-scale fight)'''.
It also applies to other Okwu Karili, such as '''Ọkụ (fire or light)'''. With Nta {{Blenke|NTA}}, it becomes '''a simple torch, bulb, or small fire ({{Blenke|NTA}}...)'''. With Ukwu {{Blenke|UKWU}} , it becomes '''a great light or sunlight (Anyanwụ) {{Blenke|ANYANWỤ}}'''.
Another example is '''Chi {{Blenke|CHI}} (God)'''. With Nta {{Blenke|NTA}}, it becomes '''ordinary gods (Arụsị) {{Blenke|NTA}}{{Blenke|CHI}}''', while with Ukwu {{Blenke|UKWU}} , it becomes '''Chukwu {{Blenke|CHI}}{{Blenke|UKWU}} (Almighty God)'''.
My last example is '''Mmịrị {{Blenke|MMỊRỊ}} (water)'''. With Nta {{Blenke|NTA}}, it becomes a small quantity of water {{Blenke|NTA}}{{Blenke|MMỊRỊ}}, while with Ukwu {{Blenke|UKWU}} , it expands to mean the '''sea or ocean {{Blenke|MMỊRỊ}}{{Blenke|UKWU}}'''.
== Character Mappings ==
{| class="wikitable sortable" style="text-align: center;"
! Igbo-latin !! Blenke Symbol!! Description
|-
| A || [[File:Blenke A.svg|x22px]] || Character A
|-
| Á || [[File:Blenke Á.svg|x22px]] || Character Á (High tone)
|-
| À || [[File:Blenke À.svg|x22px]] || Character À (Low tone)
|-
| B || [[File:Blenke B.svg|x22px]] || Character B
|-
| CH || [[File:Blenke CH.svg|x22px]] || Character CH
|-
| D || [[File:Blenke D.svg|x22px]] || Character D
|-
| E || [[File:Blenke E.svg|x22px]] || Character E
|-
| È || [[File:Blenke È.svg|x22px]] || Character È (Low tone)
|-
| É || [[File:Blenke É.svg|x22px]] || Character É (High tone)
|-
| F || [[File:Blenke F.svg|x22px]] || Character F
|-
| G || [[File:Blenke G.svg|x22px]] || Character G
|-
| GB || [[File:Blenke GB.svg|x22px]] || Character GB
|-
| GH || [[File:Blenke GH.svg|x22px]] || Character GH
|-
| GW || [[File:Blenke GW.svg|x22px]] || Character GW
|-
| H || [[File:Blenke H.svg|x22px]] || Character H
|-
| I || [[File:Blenke I.svg|x22px]] || Character I
|-
| Ì || [[File:Blenke Ì.svg|x22px]] || Character Ì (Low tone)
|-
| Í || [[File:Blenke Í.svg|x22px]] || Character Í (High tone)
|-
| Ị || [[File:Blenke Ị.svg|x22px]] || Character Ị
|-
| Ị̀ || [[File:Blenke Ị̀.svg|x22px]] || Character Ị̀ (Low tone)
|-
| Ị́ || [[File:Blenke Ị́.svg|x22px]] || Character Ị́ (High tone)
|-
| J || [[File:Blenke J.svg|x22px]] || Character J
|-
| JH || [[File:Blenke JH.svg|x22px]] || Character JH
|-
| K || [[File:Blenke K.svg|x22px]] || Character K
|-
| KP || [[File:Blenke KP.svg|x22px]] || Character KP
|-
| KW || [[File:Blenke KW.svg|x22px]] || Character KW
|-
| L || [[File:Blenke L.svg|x22px]] || Character L
|-
| M || [[File:Blenke M.svg|x22px]] || Character M
|-
| MHI || [[File:Blenke MHI.svg|x22px]] || Character MHI
|-
| N || [[File:Blenke N.svg|x22px]] || Character N
|-
| Ñ || [[File:Blenke Ñ.svg|x22px]] || Character Ñ
|-
| NW || [[File:Blenke NW.svg|x22px]] || Character NW
|-
| NY || [[File:Blenke NY.svg|x22px]] || Character NY
|-
| O || [[File:Blenke O.svg|x22px]] || Character O
|-
| Ò || [[File:Blenke Ò.svg|x22px]] || Character Ò (Low tone)
|-
| Ó || [[File:Blenke Ó.svg|x22px]] || Character Ó (High tone)
|-
| Ọ || [[File:Blenke Ọ.svg|x22px]] || Character Ọ
|-
| Ọ̀ || [[File:Blenke Ọ̀.svg|x22px]] || Character Ọ̀ (Low tone)
|-
| Ọ́ || [[File:Blenke Ọ́.svg|x22px]] || Character Ọ́ (High tone)
|-
| P || [[File:Blenke P.svg|x22px]] || Character P
|-
| R || [[File:Blenke R.svg|x22px]] || Character R
|-
| S || [[File:Blenke S.svg|x22px]] || Character S
|-
| SH || [[File:Blenke SH.svg|x22px]] || Character SH
|-
| T || [[File:Blenke T.svg|x22px]] || Character T
|-
| U || [[File:Blenke U.svg|x22px]] || Character U
|-
| Ù || [[File:Blenke Ù.svg|x22px]] || Character Ù (Low tone)
|-
| Ú || [[File:Blenke Ú.svg|x22px]] || Character Ú (High tone)
|-
| Ụ || [[File:Blenke Ụ.svg|x22px]] || Character Ụ
|-
| Ụ̀ || [[File:Blenke Ụ̀.svg|x22px]] || Character Ụ̀ (Low tone)
|-
| Ụ́ || [[File:Blenke Ụ́.svg|x22px]] || Character Ụ́ (High tone)
|-
| V || [[File:Blenke V.svg|x22px]] || Character V
|-
| W || [[File:Blenke W.svg|x22px]] || Character W
|-
| Y || [[File:Blenke Y.svg|x22px]] || Character Y
|-
| Z || [[File:Blenke Z.svg|x22px]] || Character Z
|}
=== Concept Ideographs / Okwu Karịlị (74) ===
{| class="wikitable sortable" style="text-align: center;"
! Input !! Okwu karili!! Meaning / Concept
|-
| ỌTỤTỤ || [[File:Blenke ỌTỤTỤ.svg|x22px]] || Ọtụtụ (Many / Plural)
|-
| EHIHE || [[File:Blenke EHIHE.svg|x22px]] || Ehihe (Afternoon)
|-
| AHA || [[File:Blenke AHA.svg|x22px]] || Aha (Name)
|-
| BLENKE || [[File:Blenke BLENKE.svg|x22px]] || Blenke
|-
| IGBO || [[File:Blenke IGBO.svg|x22px]] || Igbo
|-
| NNE || [[File:Blenke NNE.svg|x22px]] || Nne (Mother)
|-
| ỊME || [[File:Blenke ỊME.svg|x22px]] || Ịme (To do / Inside)
|-
| MMỤỌ || [[File:Blenke MMỤỌ.svg|x22px]] || Mmụọ (Spirit)
|-
| NDỤ || [[File:Blenke NDỤ.svg|x22px]] || Ndụ (Life)
|-
| ECHICHE || [[File:Blenke ECHICHE.svg|x22px]] || Echiche (Thought)
|-
| EKELE, EKENE || [[File:Blenke EKELE EKENE.svg|x22px]] || Ekele / Ekene (Greetings / Thanks)
|-
| ỤLỌ || [[File:Blenke ỤLỌ.svg|x22px]] || Ụlọ (House)
|-
| ỌGU || [[File:Blenke ỌGU.svg|x22px]] || Ọgu (Innocence / Justice)
|-
| UWA || [[File:Blenke Uwa.svg|x22px]] || Uwa (World)
|-
| MMỊRỊ || [[File:Blenke MMỊRỊ.svg|x22px]] || Mmịrị (Water)
|-
| ICHIE, NDỊ ICHIE || [[File:Blenke ICHIE NDỊ ICHIE.svg|x22px]] || Ichie / Ndị Ichie (Elders / Ancestors)
|-
| ỌSỌ || [[File:Blenke ỌSỌ.svg|x22px]] || Ọsọ (Run / Speed)
|-
| NJEM, IJE || [[File:Blenke NJEM IJE.svg|x22px]] || Njem / Ije (Journey)
|-
| OMENALA, ODINALA || [[File:Blenke OMENALA ODINALA.svg|x22px]] || Omenala / Odinala (Culture / Tradition)
|-
| ARUSI, AGBARA || [[File:Blenke ARUSI AGBARA.svg|x22px]] || Arusi / Agbara (Deity / Spirit)
|-
| ỌJỊỊ || [[File:Blenke ỌJỊỊ.svg|x22px]] || Ọjịị (Kolanut / Black)
|-
| MGBEDE || [[File:Blenke MGBEDE.svg|x22px]] || Mgbede (Evening)
|-
| ABALI || [[File:Blenke ABALI.svg|x22px]] || Abalị (Night)
|-
| OSỤ || [[File:Blenke OSỤ.svg|x22px]] || Osụ
|-
| IKE || [[File:Blenke IKE.svg|x22px]] || Ike (Strength / Power)
|-
| ANYANWỤ, ANWỤ || [[File:Blenke ANYANWỤ ANWỤ.svg|x22px]] || Anyanwụ / Anwụ (Sun)
|-
| OHIA, UBỊ, URỤ || [[File:Blenke OHIA UBỊ URỤ.svg|x22px]] || Ohia / Ubị / Urụ (Bush / Farm)
|-
| MMADỤ || [[File:Blenke MMADỤ.svg|x22px]] || Mmadụ (Person / Human)
|-
| CHI || [[File:Blenke CHI.svg|x22px]] || Chi (Personal Deity)
|-
| OBỊ || [[File:Blenke OBỊ.svg|x22px]] || Obị (Heart / Palace)
|-
| LỌLỌ || [[File:Blenke LỌLỌ.svg|x22px]] || Lọlọ (Queen / Wife of Chief)
|-
| ENYI || [[File:Blenke ENYI.svg|x22px]] || Enyi (Friend / Elephant)
|-
| ONYE IRO || [[File:Blenke ONYE IRO.svg|x22px]] || Onye Iro (Enemy)
|-
| NTA, NTAKỊRỊ || [[File:Blenke NTA NTAKỊRỊ NYABA.svg|x22px]] || Nta / Ntakịrị (Small)
|-
| UKWU, UKWUU || [[File:Blenke UKWU NYABA.svg|x22px]] || Ukwuu (Big / Great)
|-
| EKE || [[File:Blenke EKE.svg|x22px]] || Eke (Market day Eke)
|-
| ORIO || [[File:Blenke ORIO.svg|x22px]] || Orie / Orio (Market day Orie)
|-
| NKWỌ || [[File:Blenke NKWỌ.svg|x22px]] || Nkwọ (Market day Nkwọ)
|-
| AFỌ || [[File:Blenke AFỌ.svg|x22px]] || Afọ (Market day Afọ / Year)
|-
| EGO || [[File:Blenke EGO.svg|x22px]] || Ego (Money)
|-
| ỌWỤ || [[File:Blenke ỌWỤ.svg|x22px]] || Ọwụ (East)
|-
| AHỊA || [[File:Blenke AHỊA.svg|x22px]] || Ahịa (Market)
|-
| MMEMME || [[File:Blenke MMEMME.svg|x22px]] || Mmemme (Festival / Celebration)
|-
| NRI || [[File:Blenke NRI.svg|x22px]] || Nri (Food)
|-
| OZI, OJHỊ || [[File:Blenke OZI OJHỊ.svg|x22px]] || Ozi / Ojhị (Message)
|-
| EZINỤLỌ, EJHINỤLỌ || [[File:Blenke EZINỤLỌ EJHINỤLỌ.svg|x22px]] || Ezinụlọ / Ejhinụlọ (Family)
|-
| DỊ || [[File:Blenke DỊ.svg|x22px]] || Dị (Husband / To be)
|-
| NWOKE || [[File:Blenke NWOKE.svg|x22px]] || Nwoke (Man)
|-
| NWUNYE || [[File:Blenke NWUNYE.svg|x22px]] || Nwunye (Wife)
|-
| NWANYỊ || [[File:Blenke NWANYỊ.svg|x22px]] || Nwanyị (Woman)
|-
| OBODO || [[File:Blenke OBODO.svg|x22px]] || Obodo (Town / Country)
|-
| OGU || [[File:Blenke OGU.svg|x22px]] || Ogu (Fight / War)
|-
| ỌFỌ || [[File:Blenke ỌFỌ.svg|x22px]] || Ọfọ (Sacred symbol of truth)
|-
| AGỤ, ODUM || [[File:Blenke AGỤ ODUM.svg|x22px]] || Agụ / Odum (Leopard / Lion)
|-
| NGOZỊ, NGOJHỊ || [[File:Blenke NGOZỊ NGOJHỊ.svg|x22px]] || Ngozị / Ngojhị (Blessing)
|-
| ỊBỤ ONỤ || [[File:Blenke ỊBỤ ỌNỤ.svg|x22px]] || Ịbụ Ọnụ (Curse)
|-
| EZE, NZE, IGWE, ONYE ỊSHỊ || [[File:Blenke EZE NZE IGWE ONYE ỊSHỊ.svg|x22px]] || Eze / Nze / Igwe / Onye Ịshị (King / Leader)
|-
| ỌGARANYA || [[File:Blenke ỌGARANYA.svg|x22px]] || Ọgaranya (Rich person)
|-
| ỊGBA MBỌ || [[File:Blenke ỊGBA MBỌ.svg|x22px]] || Ịgba Mbọ (Effort / Striving)
|-
| MMA, MMASỊ || [[File:Blenke MMA MMASỊ.svg|x22px]] || Mma / Mmasị (Beauty / Pleasure)
|-
| EZIOKWU, EJHIOKWU || [[File:Blenke EZIOKWU EJHIOKWU.svg|x22px]] || Eziokwu / Ejhiokwu (Truth)
|-
| ỊMA IHE, AMAMIHE || [[File:Blenke ỊMA IHE AMAMIHE.svg|x22px]] || Ịma Ihe / Amamihe (Wisdom / Knowledge)
|-
| APARỊ || [[File:Blenke APARỊ.svg|x22px]] || Aparị (Foolishness)
|-
| ỤMỤNNE || [[File:Blenke ỤMỤNNE.svg|x22px]] || Ụmụnne (Siblings)
|-
| UMUNNA || [[File:Blenke UMUNNA.svg|x22px]] || Umunna (Patrilineage)
|-
| UMUADA || [[File:Blenke UMUADA.svg|x22px]] || Umuada (Daughters of the lineage)
|-
| ODOGWU || [[File:Blenke ODOGWU.svg|x22px]] || Odogwu (Hero / Champion)
|-
| ỊWU || [[File:Blenke ỊWU.svg|x22px]] || Ịwu (Law)
|-
| ALA || [[File:Blenke ALA.svg|x22px]] || Ala (Earth / Land / Deity Ala)
|-
| NNA || [[File:Blenke NNA.svg|x22px]] || Nna (Father)
|-
| EBE || [[File:Blenke EBE.svg|x22px]] || Ebe (Place)
|-
| OÑU || [[File:Blenke OÑU.svg|x22px]] || Oñu (Joy)
|-
| ỊLỤ || [[File:Blenke ỊLỤ.svg|x22px]] || Ịlụ (To marry)
|-
| MGBE, OGE || [[File:Blenke MGBE OGE.svg|x22px]] || Mgbe / Oge (Time / When)
|}
==Writing==
{{Blenke|O}}{{Blenke|T}}{{Blenke|U}} {{Blenke|Ụ}}{{Blenke|B}}{{Blenke|Ọ}}{{Blenke|CH}}{{Blenke|Ị}}, {{Blenke|A}}{{Blenke|NY}}{{Blenke|A}}{{Blenke|N}}{{Blenke|W}}{{Blenke|Ụ}} {{Blenke|D}}{{Blenke|Ị}} {{Blenke|Ọ}}{{Blenke|K}}{{Blenke|Ụ}}. {{Blenke|NWOKE}} {{Blenke|N}}{{Blenke|A}} {{Blenke|NWANYỊ}} {{Blenke|G}}{{Blenke|A}}{{Blenke|R}}{{Blenke|A}} {{Blenke|U}}{{Blenke|B}}{{Blenke|I}}. {{Blenke|H}}{{Blenke|A}} {{Blenke|R}}{{Blenke|Ụ}}{{Blenke|R}}{{Blenke|Ụ}} {{Blenke|Ọ}}{{Blenke|R}}{{Blenke|Ụ}} {{Blenke|S}}{{Blenke|I}}{{Blenke|R}}{{Blenke|I}} {{Blenke|IKE}}. {{Blenke|H}}{{Blenke|A}} {{Blenke|K}}{{Blenke|E}}{{Blenke|L}}{{Blenke|E}}{{Blenke|R}}{{Blenke|E}} {{Blenke|CH}}{{Blenke|U}}{{Blenke|K}}{{Blenke|W}}{{Blenke|U}} {{Blenke|M}}{{Blenke|A}}{{Blenke|K}}{{Blenke|A}} {{Blenke|O}}{{Blenke|W}}{{Blenke|U}}{{Blenke|W}}{{Blenke|E}} {{Blenke|I}}{{Blenke|H}}{{Blenke|E}} {{Blenke|U}}{{Blenke|B}}{{Blenke|I}}. {{Blenke|IGBO}} {{Blenke|KW}}{{Blenke|E}}{{Blenke|N}}{{Blenke|U}}!
<hr/>
Otu ụbọchị, anyanwụ dị ọkụ. Nwoke na nwanyi gara ubi. Ha rụrụ ọrụ siri ike. Ha kelere Chukwu maka owuwe ihe ubi. Igbo kwenu!
[[Category:Testcat]]
h2hkg73erswi8ng2sg9mhwc06hh162h
UBTP
0
124499
619588
618775
2026-08-01T22:24:59Z
Wmbata
26533
Adding to Category:Testcat
619588
wikitext
text/x-wiki
{|
|-
| valign="top"| [[file:Pywikibot_MW_gear_icon.svg|40 px]]
| This is an unflagged test page for the '''Pywikibot''' [https://doc.wikimedia.org/pywikibot/master/api_ref/pywikibot.site.html#pywikibot.site._extensions.FlaggedRevsMixin FlaggedRevs] implementation. It is named UBTP, '''U'''nflagged '''B'''ot '''T'''est '''P'''age.
''Do not review it!''
| valign="top" | [[file:Pywikibot_MW_gear_icon.svg|40 px]]
|-
|}
[[Category:Testcat]]
i8unxm4e206c0rvak78lwcpmoypv5gj
Wikipedia:Wikishield/run
4
124536
619598
2026-08-02T01:27:27Z
LuniZunie
25284
create
619598
wikitext
text/x-wiki
.
6t9fg2gmch401ldtk8m7pyzz632ixbb