<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://cryptipedia.duckdns.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nyx</id>
	<title>Cryptipedia - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://cryptipedia.duckdns.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nyx"/>
	<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/wiki/Special:Contributions/Nyx"/>
	<updated>2026-09-28T14:12:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Foobie&amp;diff=1615</id>
		<title>Foobie</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Foobie&amp;diff=1615"/>
		<updated>2025-02-21T05:19:00Z</updated>

		<summary type="html">&lt;p&gt;Nyx: Changed redirect target from Foobie (person) to Foobie (name)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Foobie (name)]]&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Foobie_(name)&amp;diff=1614</id>
		<title>Foobie (name)</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Foobie_(name)&amp;diff=1614"/>
		<updated>2025-02-21T05:17:54Z</updated>

		<summary type="html">&lt;p&gt;Nyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Short description|Common name}}&lt;br /&gt;
{{About|the name itself|Foobie the individual|Foobie (person)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Inside_Jokes]]&lt;br /&gt;
&#039;&#039;&#039;Foobie&#039;&#039;&#039; is an extremely common and excellent [https://en.m.wikipedia.org/wiki/Gender_neutrality gender neutral] [https://en.m.wikipedia.org/wiki/Name name] used worldwide.&lt;br /&gt;
&lt;br /&gt;
==The Foobie Pill==&lt;br /&gt;
There exists a pill that will instantly change your name to Foobie. The pill is notoriously hard to study, due to it being consumed it on sight by anyone who is presented it.&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Foobie&amp;diff=1613</id>
		<title>Foobie</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Foobie&amp;diff=1613"/>
		<updated>2025-02-21T05:16:02Z</updated>

		<summary type="html">&lt;p&gt;Nyx: Redirected page to Foobie (person)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Foobie (person)]]&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Foobie_(disambiguation)&amp;diff=1612</id>
		<title>Foobie (disambiguation)</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Foobie_(disambiguation)&amp;diff=1612"/>
		<updated>2025-02-21T05:15:56Z</updated>

		<summary type="html">&lt;p&gt;Nyx: Removed redirect to Foobie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Foobie&#039;&#039;&#039; may refer to:&lt;br /&gt;
* [[Foobie (name)]] a common name used by many people&lt;br /&gt;
* [[Foobie (person)]] another name for Crypt user Demure&lt;br /&gt;
{{disambiguation}}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val_Critter&amp;diff=1611</id>
		<title>Val Critter</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val_Critter&amp;diff=1611"/>
		<updated>2025-02-21T05:12:45Z</updated>

		<summary type="html">&lt;p&gt;Nyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Short description|Wooba Undertaker of the Crypt}}&lt;br /&gt;
{{About|the [[wooba]] and [[Undertakers|Undertaker]]|other Vals|Val (disambiguation)}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox person&lt;br /&gt;
| name               = Val Critter&lt;br /&gt;
| image              = Val Critter.png&lt;br /&gt;
| caption            = Image of Valcritter, as a [https://cryptipedia.duckdns.org/mediawiki/index.php/Wooba wooba], done by [https://bsky.app/profile/kast.haus Kast].&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Val Critter&#039;&#039;&#039;. gods perfect creature.&lt;br /&gt;
[[Category:Undertakers]]&lt;br /&gt;
[[Category:Characters]]&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val&amp;diff=1610</id>
		<title>Val</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val&amp;diff=1610"/>
		<updated>2025-02-21T05:10:50Z</updated>

		<summary type="html">&lt;p&gt;Nyx: Redirected page to Val Critter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Val Critter]]&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val_Critter&amp;diff=1609</id>
		<title>Val Critter</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val_Critter&amp;diff=1609"/>
		<updated>2025-02-21T05:10:25Z</updated>

		<summary type="html">&lt;p&gt;Nyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Short description|Wooba Undertaker of the Crypt}}&lt;br /&gt;
{{About|the wolf and [[Undertakers|Undertaker]]|other Vals|Val (disambiguation)}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox person&lt;br /&gt;
| name               = Val Critter&lt;br /&gt;
| image              = Val Critter.png&lt;br /&gt;
| caption            = Image of Valcritter, as a [https://cryptipedia.duckdns.org/mediawiki/index.php/Wooba wooba], done by [https://bsky.app/profile/kast.haus Kast].&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Val Critter&#039;&#039;&#039;. gods perfect creature.&lt;br /&gt;
[[Category:Undertakers]]&lt;br /&gt;
[[Category:Characters]]&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val_(disambiguation)&amp;diff=1608</id>
		<title>Val (disambiguation)</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val_(disambiguation)&amp;diff=1608"/>
		<updated>2025-02-21T05:09:24Z</updated>

		<summary type="html">&lt;p&gt;Nyx: Nyx moved page Val (Disambiguation) to Val (disambiguation) without leaving a redirect: Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You may be looking for: &lt;br /&gt;
* [[Val Critter]] - [[Undertakers|Undertaker]] of [[The Crypt]], and [[Wooba|wooba]]&lt;br /&gt;
* Val Penis - Former Amino moderator, also known as &amp;quot;Bamboo Dragon.&amp;quot;&lt;br /&gt;
{{disambiguation}}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val_(disambiguation)&amp;diff=1607</id>
		<title>Val (disambiguation)</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val_(disambiguation)&amp;diff=1607"/>
		<updated>2025-02-21T05:08:53Z</updated>

		<summary type="html">&lt;p&gt;Nyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You may be looking for: &lt;br /&gt;
* [[Val Critter]] - [[Undertakers|Undertaker]] of [[The Crypt]], and [[Wooba|wooba]]&lt;br /&gt;
* Val Penis - Former Amino moderator, also known as &amp;quot;Bamboo Dragon.&amp;quot;&lt;br /&gt;
{{disambiguation}}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Category:Undertakers&amp;diff=1606</id>
		<title>Category:Undertakers</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Category:Undertakers&amp;diff=1606"/>
		<updated>2025-02-21T05:07:15Z</updated>

		<summary type="html">&lt;p&gt;Nyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Undertakers are the Admins of [[The Crypt]]. They have all permissions and make rules and decisions related to server. They are also known as [[Team Crypted]], they are the main characters of The Crypt. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Members with this role do not change often, for a full list of members, see [[The Crypt#Members|Members]].&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Undertakers&amp;diff=1605</id>
		<title>Undertakers</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Undertakers&amp;diff=1605"/>
		<updated>2025-02-21T05:07:03Z</updated>

		<summary type="html">&lt;p&gt;Nyx: Redirected page to Category:Undertakers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category:Undertakers]]&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Pagetype/disambiguation/doc&amp;diff=1604</id>
		<title>Module:Pagetype/disambiguation/doc</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Pagetype/disambiguation/doc&amp;diff=1604"/>
		<updated>2025-02-21T04:54:04Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{High risk}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;#invoke:{{subst:BASEPAGENAME}}|&#039;&#039;function_name&#039;&#039;&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Transclusion_count/data/P&amp;diff=1602</id>
		<title>Module:Transclusion count/data/P</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Transclusion_count/data/P&amp;diff=1602"/>
		<updated>2025-02-21T04:54:04Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;P&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;P-phrases&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;P.&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;P1&amp;quot;] = 163000,&lt;br /&gt;
[&amp;quot;P2&amp;quot;] = 350000,&lt;br /&gt;
[&amp;quot;PAGENAMEBASE&amp;quot;] = 1670000,&lt;br /&gt;
[&amp;quot;PAGENAMEU&amp;quot;] = 57000,&lt;br /&gt;
[&amp;quot;PAK&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;PD-US&amp;quot;] = 9200,&lt;br /&gt;
[&amp;quot;PD-US-1923-abroad&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;PD-US-expired&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;PD-US-expired-abroad&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;PD-US-no_notice&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;PD-art&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;PD-ineligible-USonly&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;PD-notice&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;PD-old-100&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;PD-self&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;PD-textlogo&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;PDB_Gallery&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;PDanube&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;PER&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;PHI&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;PHL&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;PH_census&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;PLANTS&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;PM20&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;PMID&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;POL&amp;quot;] = 67000,&lt;br /&gt;
[&amp;quot;POR&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;POTD/Day&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;POTD_archive&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;POTD_archive/footer&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;POTD_default&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;POTD_image&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;POTD_image1&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;POTD_image2&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;POTD_navigation&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;POTD_texttitle&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;POTDlink&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;POV&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;PR/header&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;PR/heading&amp;quot;] = 7200,&lt;br /&gt;
[&amp;quot;PRI&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;PRT&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;PS&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Pad&amp;quot;] = 60000,&lt;br /&gt;
[&amp;quot;Page&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Page_name_sub&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;Page_needed&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Page_tabs&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Page_tabs/styles.css&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Page_views&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Pagelinks&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;Pagelist&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Pagetype&amp;quot;] = 10300000,&lt;br /&gt;
[&amp;quot;Paid&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Pakistani_English&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Para&amp;quot;] = 2590000,&lt;br /&gt;
[&amp;quot;Parabr&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Paragraph_break&amp;quot;] = 1240000,&lt;br /&gt;
[&amp;quot;Param_value&amp;quot;] = 143000,&lt;br /&gt;
[&amp;quot;Parameter_names_example&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;ParmPart&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Partial&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Partial_minor_planet_designation&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Partly_done&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Party_color&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;Party_color_cell&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Party_name_with_color&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Party_name_with_colour&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Party_shading/Democratic&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Party_shading/Independent&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Party_shading/Republican&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Party_stripe&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Pass&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Pb&amp;quot;] = 1220000,&lt;br /&gt;
[&amp;quot;Pbox&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Pbox/1&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Pedigree&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Peer_review/heading&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Peer_review_tools&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Penalty_shoot-out&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Pending&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Pending_DYK_American_hooks&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Pending_DYK_biographies&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Pengoal&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Penmiss&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Percentage&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Performance_key&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Period_color&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Period_end&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Period_id&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Period_start&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;PeruTasks&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Phab&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Phabricator&amp;quot;] = 7600,&lt;br /&gt;
[&amp;quot;Phanerozoic_220px&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;PharmNavFootnote&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Philippine_census_reference&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Philippine_name&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Photo&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Photo_montage&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Photo_requested&amp;quot;] = 107000,&lt;br /&gt;
[&amp;quot;Photograph_requested&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Photomontage&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Photoreq&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Picture_of_the_day&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;Pie_chart&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Pie_chart/slice&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Ping&amp;quot;] = 256000,&lt;br /&gt;
[&amp;quot;Pipe&amp;quot;] = 99000,&lt;br /&gt;
[&amp;quot;Place_name_disambiguation&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Plain_link&amp;quot;] = 117000,&lt;br /&gt;
[&amp;quot;Plain_list&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Plain_text&amp;quot;] = 98000,&lt;br /&gt;
[&amp;quot;Plainlink&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Plainlinks&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Plainlist&amp;quot;] = 416000,&lt;br /&gt;
[&amp;quot;Plainlist/styles.css&amp;quot;] = 2800000,&lt;br /&gt;
[&amp;quot;Player&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Player2&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Please_check_ISSN&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Plural&amp;quot;] = 112000,&lt;br /&gt;
[&amp;quot;Pluralize_from_text&amp;quot;] = 1580000,&lt;br /&gt;
[&amp;quot;Pn&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Poem_quote&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Poemquote&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Politician_icon&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Politician_icon2&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Politics_sidebar_below&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Politics_sidebar_title&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Polparty&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;Pop_density&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Population_Germany&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Portal&amp;quot;] = 10100000,&lt;br /&gt;
[&amp;quot;Portal-Class&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;Portal-inline&amp;quot;] = 232000,&lt;br /&gt;
[&amp;quot;Portal_bar&amp;quot;] = 148000,&lt;br /&gt;
[&amp;quot;Portal_box&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Portalbar&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Portuguese_name&amp;quot;] = 9600,&lt;br /&gt;
[&amp;quot;PosMapFS&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Possible&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Possibly_empty_category&amp;quot;] = 70000,&lt;br /&gt;
[&amp;quot;Post-nominals&amp;quot;] = 58000,&lt;br /&gt;
[&amp;quot;Post-nominals/AUS&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Post-nominals/CAN&amp;quot;] = 9800,&lt;br /&gt;
[&amp;quot;Post-nominals/GBR&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Post-nominals/NZL&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Postnominals&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Pp&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Pp-book-cover&amp;quot;] = 52000,&lt;br /&gt;
[&amp;quot;Pp-extended&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Pp-move&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Pp-move-indef&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Pp-pc&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Pp-protected&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Pp-semi&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Pp-semi-indef&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Pp-template&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Pp-vandalism&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Precision&amp;quot;] = 284000,&lt;br /&gt;
[&amp;quot;PresFoot&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;PresHead&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;PresRow&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Press&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Preview_warning&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;Primary_source_inline&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Primary_sources&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;Principal_rank&amp;quot;] = 555000,&lt;br /&gt;
[&amp;quot;ProCyclingStats&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;ProQuest&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Professional_wrestling_profiles&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Professional_wrestling_results_table&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Profit&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Progress_box&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Project-Class&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Project_other&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Promotional&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Proper_name&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Prose&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Protected_page_maintenance_message&amp;quot;] = 42000,&lt;br /&gt;
[&amp;quot;Protection_padlock&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Proxy_block&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Pso&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Purge&amp;quot;] = 451000,&lt;br /&gt;
[&amp;quot;Purge_button&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Purge_button/styles.css&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Px2&amp;quot;] = 292000,&lt;br /&gt;
[&amp;quot;Module:Page&amp;quot;] = 115000,&lt;br /&gt;
[&amp;quot;Module:PageLinks&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;Module:Page_tabs&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Module:Pagelist&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Module:Pagetype&amp;quot;] = 17600000,&lt;br /&gt;
[&amp;quot;Module:Pagetype/config&amp;quot;] = 17600000,&lt;br /&gt;
[&amp;quot;Module:Pagetype/disambiguation&amp;quot;] = 12500000,&lt;br /&gt;
[&amp;quot;Module:Pagetype/rfd&amp;quot;] = 15900000,&lt;br /&gt;
[&amp;quot;Module:Pagetype/setindex&amp;quot;] = 12700000,&lt;br /&gt;
[&amp;quot;Module:Pagetype/softredirect&amp;quot;] = 16500000,&lt;br /&gt;
[&amp;quot;Module:ParameterCount&amp;quot;] = 944000,&lt;br /&gt;
[&amp;quot;Module:Parameter_names_example&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Module:Parameter_validation&amp;quot;] = 148000,&lt;br /&gt;
[&amp;quot;Module:Parameter_validation/default_config&amp;quot;] = 148000,&lt;br /&gt;
[&amp;quot;Module:Party_name_with_color&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Module:Percentage&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Module:Person_height&amp;quot;] = 271000,&lt;br /&gt;
[&amp;quot;Module:Person_length&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;Module:Person_weight&amp;quot;] = 81000,&lt;br /&gt;
[&amp;quot;Module:Photo_montage&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Module:Plain_text&amp;quot;] = 1800000,&lt;br /&gt;
[&amp;quot;Module:Political_party&amp;quot;] = 131000,&lt;br /&gt;
[&amp;quot;Module:Political_party/A&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Module:Political_party/B&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Political_party/C&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;Module:Political_party/D&amp;quot;] = 54000,&lt;br /&gt;
[&amp;quot;Module:Political_party/E&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Module:Political_party/F&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Political_party/G&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Module:Political_party/H&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Module:Political_party/I&amp;quot;] = 56000,&lt;br /&gt;
[&amp;quot;Module:Political_party/J&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Module:Political_party/K&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Module:Political_party/L&amp;quot;] = 42000,&lt;br /&gt;
[&amp;quot;Module:Political_party/M&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Political_party/N&amp;quot;] = 33000,&lt;br /&gt;
[&amp;quot;Module:Political_party/O&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Module:Political_party/P&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Module:Political_party/R&amp;quot;] = 52000,&lt;br /&gt;
[&amp;quot;Module:Political_party/S&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;Module:Political_party/T&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:Political_party/U&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Module:Political_party/V&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;Module:Political_party/W&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Political_party/Y&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Module:Pop_density&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Module:PopulationFromWikidata&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Module:Portal&amp;quot;] = 10500000,&lt;br /&gt;
[&amp;quot;Module:Portal-inline&amp;quot;] = 236000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/a&amp;quot;] = 1810000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/aliases&amp;quot;] = 295000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/b&amp;quot;] = 3210000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/c&amp;quot;] = 1950000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/d&amp;quot;] = 114000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/e&amp;quot;] = 483000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/f&amp;quot;] = 895000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/g&amp;quot;] = 651000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/h&amp;quot;] = 488000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/i&amp;quot;] = 1150000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/j&amp;quot;] = 295000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/k&amp;quot;] = 80000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/l&amp;quot;] = 466000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/m&amp;quot;] = 669000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/n&amp;quot;] = 762000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/o&amp;quot;] = 427000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/other&amp;quot;] = 210000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/p&amp;quot;] = 953000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/q&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Module:Portal/images/r&amp;quot;] = 402000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/s&amp;quot;] = 1790000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/t&amp;quot;] = 749000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/u&amp;quot;] = 1110000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/v&amp;quot;] = 313000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/w&amp;quot;] = 188000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/y&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;Module:Portal/images/z&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Module:Portal/styles.css&amp;quot;] = 10100000,&lt;br /&gt;
[&amp;quot;Module:Portal_bar&amp;quot;] = 167000,&lt;br /&gt;
[&amp;quot;Module:Portal_bar/styles.css&amp;quot;] = 167000,&lt;br /&gt;
[&amp;quot;Module:Professional_wrestling_profiles&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Module:Professional_wrestling_results_table&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:Progress_box&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Progress_box/config&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Progress_box/styles.css&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Protect&amp;quot;] = 118000,&lt;br /&gt;
[&amp;quot;Module:Protected_edit_request&amp;quot;] = 53000,&lt;br /&gt;
[&amp;quot;Module:Protection_banner&amp;quot;] = 63000,&lt;br /&gt;
[&amp;quot;Module:Protection_banner/config&amp;quot;] = 63000,&lt;br /&gt;
[&amp;quot;Module:Purge&amp;quot;] = 472000,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Pagetype/disambiguation&amp;diff=1600</id>
		<title>Module:Pagetype/disambiguation</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Pagetype/disambiguation&amp;diff=1600"/>
		<updated>2025-02-21T04:54:04Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return require [[Module:Disambiguation/templates]]&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Pagetype/setindex&amp;diff=1598</id>
		<title>Module:Pagetype/setindex</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Pagetype/setindex&amp;diff=1598"/>
		<updated>2025-02-21T04:51:44Z</updated>

		<summary type="html">&lt;p&gt;Nyx: Created page with &amp;quot;-- This page contains a table of all set index templates and their -- redirects. Templates names are capitalized, and the Template: prefix is -- removed. Templates are grouped with the main template first, followed by -- its redirects.  return { 	[&amp;quot;Set index article&amp;quot;] = true, 		[&amp;quot;Sia&amp;quot;] = true, 		[&amp;quot;Set index&amp;quot;] = true, 		[&amp;quot;SIA&amp;quot;] = true, 		[&amp;quot;Set-index&amp;quot;] = true, 		[&amp;quot;Setindex&amp;quot;] = true, 		[&amp;quot;Set-index article&amp;quot;] = true, 	[&amp;quot;Animal common name&amp;quot;] = true, 	[&amp;quot;Chemistry index&amp;quot;] = true...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This page contains a table of all set index templates and their&lt;br /&gt;
-- redirects. Templates names are capitalized, and the Template: prefix is&lt;br /&gt;
-- removed. Templates are grouped with the main template first, followed by&lt;br /&gt;
-- its redirects.&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	[&amp;quot;Set index article&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Sia&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Set index&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;SIA&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Set-index&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Setindex&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Set-index article&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Animal common name&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Chemistry index&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Chemdisambig&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Chemistry disambiguation&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Chemistry set index&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Chemindex&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Enzyme index&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Fungus common name&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Given name&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;First name&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Forename&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Greek myth index&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Lake index&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Lakeindex&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Locomotive index&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Media set index&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Media index&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Molecular formula index&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;MolFormDisambig&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Molecular formula disambiguation&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;MolFormIndex&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Mountain index&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Mountainindex&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Nickname&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Painting index&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Plant common name&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;River index&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Road index&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Roadindex&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Ship index&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Shipindex&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Sport index&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Sportindex&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Storm index&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Surname&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Surnames&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;DisambigName&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;DisambigNm&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;DisambigN&amp;quot;] = true,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Pagetype&amp;diff=1597</id>
		<title>Template:Pagetype</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Pagetype&amp;diff=1597"/>
		<updated>2025-02-21T04:48:13Z</updated>

		<summary type="html">&lt;p&gt;Nyx: Created page with &amp;quot;{{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;#invoke:pagetype|main}}&amp;lt;noinclude&amp;gt; {{documentation}} &amp;lt;!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --&amp;gt; &amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;#invoke:pagetype|main}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val_Critter&amp;diff=1596</id>
		<title>Val Critter</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Val_Critter&amp;diff=1596"/>
		<updated>2025-02-21T04:46:01Z</updated>

		<summary type="html">&lt;p&gt;Nyx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Short description|Wooba Undertaker of the Crypt}}&lt;br /&gt;
{{About|the wolf|other Vals|Val (disambiguation)}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox person&lt;br /&gt;
| name               = Val Critter&lt;br /&gt;
| image              = Val Critter.png&lt;br /&gt;
| caption            = Image of Valcritter, as a [https://cryptipedia.duckdns.org/mediawiki/index.php/Wooba wooba], done by [https://bsky.app/profile/kast.haus Kast].&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Val Critter&#039;&#039;&#039;. gods perfect creature.&lt;br /&gt;
[[Category:Undertakers]]&lt;br /&gt;
[[Category:Characters]]&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:About/doc&amp;diff=1595</id>
		<title>Template:About/doc</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:About/doc&amp;diff=1595"/>
		<updated>2025-02-21T04:43:27Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&amp;lt;noinclude&amp;gt;{{pp|small=yes}}&amp;lt;/noinclude&amp;gt;&amp;lt;!--&lt;br /&gt;
Categories go where indicated at the bottom of this page, please; interwikis go to Wikidata (see also: [[Wikipedia:Wikidata]]). --&amp;gt;&lt;br /&gt;
{{High-use}}&lt;br /&gt;
{{ombox|type=content|text=This template should be used on articles only if other topics and articles exist with very similar names. For most articles, this is not true, so do not use this template on them.}}&lt;br /&gt;
{{Lua|Module:About}}&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
{{Tlc|About}} is a commonly used [[WP:Hatnote|hatnote template]] on Wikipedia, and should be [[WP:HATNOTEPLACE|placed]] at the top of an article (but following {{Tlx|Short description}}, if present), linking the reader to other articles with similar titles or concepts that they may have been seeking instead. The template has several formats, including:&lt;br /&gt;
*{{Tlx|About}} → {{About}}&lt;br /&gt;
*{{Tlx|About|Use1}} → {{About|Use1}}&lt;br /&gt;
*{{Tlx|About|&amp;lt;nowiki/&amp;gt;|Use2|Article2}} → {{About||Use2|Article2}}&lt;br /&gt;
*{{Tlx|About|&amp;lt;nowiki/&amp;gt;|&amp;lt;nowiki/&amp;gt;||Article (disambiguation)}} → {{About|||Article (disambiguation)}}&lt;br /&gt;
*{{Tlx|About|Use1|&amp;lt;nowiki/&amp;gt;|Article2}} → {{About|Use1||Article2}}&lt;br /&gt;
*{{Tlx|About|Use1|&amp;lt;nowiki/&amp;gt;|Article2|and|Article3}} → {{About|Use1||Article2|and|Article3}}&lt;br /&gt;
*{{Tlx|About|Use1|Use2|Article2}} → {{About|Use1|Use2|Article2}}&lt;br /&gt;
*{{Tlx|About|Use1|Use2|Article2|and|Article3}} → {{About|Use1|Use2|Article2|and|Article3}}&lt;br /&gt;
*{{Tlx|About|Use1|Use2|Article2|and|Article3|and|Article4|and|Article5}} → {{About|Use1|Use2|Article2|and|Article3|and|Article4|and|Article5}}&lt;br /&gt;
*{{Tlx|About|Use1|Use2|Article2|Use3|Article3}} → {{About|Use1|Use2|Article2|Use3|Article3}}&lt;br /&gt;
*{{Tlx|About|Use1|Use2|Article2|other uses}} → {{About|Use1|Use2|Article2|other uses}}&lt;br /&gt;
&lt;br /&gt;
The template {{tl|For-multi}} produces the same hatnote, but without the initial &#039;&#039;This template is about&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
Alternately, a {{para|section|yes}} parameter can be added to the {{Tlc|About}} template for use at the top of a section. When using this parameter, the wording in the template changes to specify that it is being used in a section:&lt;br /&gt;
*{{Tlx|About|Use1|&amp;lt;nowiki&amp;gt;section=yes&amp;lt;/nowiki&amp;gt;}} → {{About|Use1|section=yes}}&lt;br /&gt;
*{{Tlx|About|Use1|&amp;lt;nowiki/&amp;gt;|Article2|&amp;lt;nowiki&amp;gt;section=yes&amp;lt;/nowiki&amp;gt;}} → {{About|Use1||Article2|section=yes}}&lt;br /&gt;
*{{Tlx|About|Use1|Use2|Article2|&amp;lt;nowiki&amp;gt;section=yes&amp;lt;/nowiki&amp;gt;}} → {{About|Use1|Use2|Article2|section=yes}}&lt;br /&gt;
*{{Tlx|About|Use1|Use2|Article2|and|Article3|&amp;lt;nowiki&amp;gt;section=yes&amp;lt;/nowiki&amp;gt;}} → {{About|Use1|Use2|Article2|and|Article3|section=yes}}&lt;br /&gt;
*{{Tlx|About|Use1|Use2|Article2|other uses|&amp;lt;nowiki&amp;gt;section=yes&amp;lt;/nowiki&amp;gt;}} → {{About|Use1|Use2|Article2|other uses|section=yes}}&lt;br /&gt;
&lt;br /&gt;
A {{para|text}} option adds text to the end; this should only be used when truly necessary, when the other hatnote templates listed below don&#039;t suffice.&lt;br /&gt;
&lt;br /&gt;
The {{para|selfref|yes}} option marks the entire hatnote as a Wikipedia self-reference, causing it to be omitted when the page content is reused outside of Wikipedia (see {{tl|self reference}} and [[MOS:SELFREF]] for more details).&lt;br /&gt;
&lt;br /&gt;
For more options, see section &amp;quot;TemplateData&amp;quot; below.&lt;br /&gt;
&lt;br /&gt;
==TemplateData==&lt;br /&gt;
{{TemplateData header}}&lt;br /&gt;
&amp;lt;!-- Should this mention the existence of &amp;quot;and&amp;quot;? It&#039;s something of a can of worms, since it only looks as though it only works in certain combinations of the other page 2/3/4 description fields... --&amp;gt;&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;This template is a hatnote in the format \&amp;quot;This page is about … For other uses …\&amp;quot;.&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page description&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the page this template is placed on is about (\&amp;quot;This page is about …\&amp;quot;)&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 1 description&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the first other page is about. If unused or blank, defaults to \&amp;quot;other uses\&amp;quot;.&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 1 title&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The title of the first other page. If unused, defaults to \&amp;quot;[page title] (disambiguation)\&amp;quot;.&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 2 description&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the second other page is about.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 2 title&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The title of the second other page. If unused or blank and parameter 4 exists, defaults to \&amp;quot;[page title] (disambiguation)\&amp;quot;.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 3 description&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the third other page is about.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 3 title&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The title of the third other page. If unused or blank and parameter 6 exists, defaults to \&amp;quot;[page title] (disambiguation)\&amp;quot;.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 4 description&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the fourth other page is about.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;9&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 4 title&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The title of the fourth other page. If unused or blank and parameter 8 exists, defaults to \&amp;quot;[page title] (disambiguation)\&amp;quot;.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;section&amp;quot;: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Pass \&amp;quot;yes\&amp;quot; in this parameter to get wording appropriate for use at the top of a section.&amp;quot;,&lt;br /&gt;
			&amp;quot;autovalue&amp;quot;: &amp;quot;yes&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
        &amp;quot;text&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Custom text&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Text to be appended to the end.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Wikipedia:Hatnote]]&lt;br /&gt;
{{Hatnote templates}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- To add more other pages, continue with this alternating pattern using increasing numbers, starting with 6 for the next page description. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories go below this line, please; interwikis go to Wikidata, thank you! --&amp;gt;&lt;br /&gt;
[[Category:Disambiguation and redirection hatnote templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Transclusion_count/data/A&amp;diff=1593</id>
		<title>Module:Transclusion count/data/A</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Transclusion_count/data/A&amp;diff=1593"/>
		<updated>2025-02-21T04:43:23Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;A-Class&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;ACArt&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;AFB_game_box_end&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;AFB_game_box_start&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;AFC_comment&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;AFC_submission&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;AFC_submission_category_header&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;AFD_help&amp;quot;] = 137000,&lt;br /&gt;
[&amp;quot;AFD_help/styles.css&amp;quot;] = 138000,&lt;br /&gt;
[&amp;quot;AFI/Picture_box/show_picture&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;AFI_film&amp;quot;] = 9200,&lt;br /&gt;
[&amp;quot;AFL_Car&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;AFL_Col&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;AFL_Ess&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;AFL_Gee&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;AFL_Haw&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;AFL_Mel&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;AFL_NM&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;AFL_Ric&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;AFL_StK&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;AFL_Tables&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;AFL_Year&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;AFL_player&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;ALG&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;AMARB&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;AM_station_data&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;ARBPIA&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;ARE&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;ARG&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;ASIN&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;ASN&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;ATP&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;AUS&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;AUT&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;AZE&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;A_note&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;A_or_an&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Aan&amp;quot;] = 58000,&lt;br /&gt;
[&amp;quot;Abbr&amp;quot;] = 882000,&lt;br /&gt;
[&amp;quot;Abbreviation&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Abbrlink&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Abot&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;About&amp;quot;] = 161000,&lt;br /&gt;
[&amp;quot;Absolute_page_title&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Acad&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Access_icon&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;According_to_whom&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;AchievementTable&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;AdSenseSummary&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Added&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Adjacent_communities&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Adjacent_stations&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Adjacent_stations/styles.css&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Adjacent_stations_doc&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Adjstn&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Admin&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Admin_help/helped&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Administrator_note&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;Administrators&#039;_noticeboard_archives_all&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Administrators&#039;_noticeboard_navbox_all&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Adminnote&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Advert&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Aet&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;AfC_accept/C_percentage&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;AfC_age_category&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;AfC_comment&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;AfC_date_category&amp;quot;] = 230000,&lt;br /&gt;
[&amp;quot;AfC_status/age&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;AfC_status/backlog&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;AfC_submission&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;AfC_submission/comments&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;AfC_submission/declined&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;AfC_submission/draft&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;AfC_submission/helptools&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;AfC_submission/pending&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;AfC_submission/styles.css&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;AfC_submission/tools&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;AfC_submission_category_header&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;AfC_submission_category_header/day&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;AfC_submission_category_header/td&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;AfC_talk/C_percentage&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;AfC_topic&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;AfD_categories_horizontal_shortnames&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;AfD_count_link&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Afd-merged-from&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;Africa_topic&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;After_extra_time&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Age&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Age_in_days&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Age_in_years&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Age_in_years,_months,_weeks_and_days&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Age_in_years,_months_and_days&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Age_in_years_and_days&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Age_in_years_and_days_nts&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Agree&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Ahnentafel&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;Ahnentafel/styles.css&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;Air_Force_Historical_Research_Agency&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Air_force&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Air_force/core&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Aircontent&amp;quot;] = 9400,&lt;br /&gt;
[&amp;quot;Aircraft_specs&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Aircraft_specs/convert&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Aircraft_specs/eng&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Aircraft_specs/length&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Aircraft_specs/range&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Aircraft_specs/speed&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Airport-dest-list&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Airport_codes&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Airport_destination_list&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Al&amp;quot;] = 73000,&lt;br /&gt;
[&amp;quot;Album_chart&amp;quot;] = 33000,&lt;br /&gt;
[&amp;quot;Album_chart/chartnote&amp;quot;] = 33000,&lt;br /&gt;
[&amp;quot;Album_cover_fur&amp;quot;] = 53000,&lt;br /&gt;
[&amp;quot;Album_label_category&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Album_label_category/core&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Album_ratings&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;Album_reviews&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Albums_category&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Albums_category/core&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Albums_category/type/default&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Align&amp;quot;] = 190000,&lt;br /&gt;
[&amp;quot;Aligned_table&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;AllIrelandByCountyCatNav&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;AllMusic&amp;quot;] = 76000,&lt;br /&gt;
[&amp;quot;All_Ireland_by_county_category_navigation&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Allcaps&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Allcaps/styles.css&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Allmusic&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Allow_wrap&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Already_done&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Also&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Also_known_as&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Alternating_rows_table&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Alternating_rows_table/styles.css&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Alumni&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Always_substitute&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;Ambox&amp;quot;] = 1450000,&lt;br /&gt;
[&amp;quot;Ambox_globe&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Ambox_globe_current_red&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;American_English&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;American_football_roster/Footer&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;American_football_roster/Header&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;American_football_roster/Player&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Americanfootballbox&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Anarchism_announcements&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Anarchism_announcements/shell&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Anchor&amp;quot;] = 86000,&lt;br /&gt;
[&amp;quot;Angbr&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Angbr_IPA&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Angle_bracket&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Anglican_navbox_titlestyle&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Anglicise_rank&amp;quot;] = 596000,&lt;br /&gt;
[&amp;quot;Animal_tasks&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;Anime_News_Network&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Ann&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Annotated_link&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Annual_readership&amp;quot;] = 53000,&lt;br /&gt;
[&amp;quot;Anonblock&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Antonym_of_(dis)establish&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Apostrophe&amp;quot;] = 86000,&lt;br /&gt;
[&amp;quot;ArbCom_Arab-Israeli_editnotice&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Arbitration_Committee_candidate/data&amp;quot;] = 98000,&lt;br /&gt;
[&amp;quot;Archive&amp;quot;] = 317000,&lt;br /&gt;
[&amp;quot;Archive_bottom&amp;quot;] = 56000,&lt;br /&gt;
[&amp;quot;Archive_box&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Archive_list&amp;quot;] = 87000,&lt;br /&gt;
[&amp;quot;Archive_top&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Archive_top/styles.css&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Archive_top_green&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Archive_top_green/styles.css&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Archive_top_red&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Archive_top_red/styles.css&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Archivebottom&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Archivebox&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Archives&amp;quot;] = 52000,&lt;br /&gt;
[&amp;quot;Archivetop&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Army&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Army/core&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Art_UK_bio&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Art_UK_bio/plural&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Article&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;ArticleHistory&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Article_alerts_box&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Article_alerts_box/styles.css&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Article_for_improvement_banner/Picture_box&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Article_for_improvement_banner/Picture_box/show_picture&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Article_history&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;Article_links&amp;quot;] = 485000,&lt;br /&gt;
[&amp;quot;Article_or_page&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Article_stub_box&amp;quot;] = 2380000,&lt;br /&gt;
[&amp;quot;Articles_by_Quality&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;As_of&amp;quot;] = 126000,&lt;br /&gt;
[&amp;quot;As_written&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Asbox&amp;quot;] = 2380000,&lt;br /&gt;
[&amp;quot;Asia_topic&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Asof&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;Assessed-Class&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Assignment&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Assignment_milestones&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Association_of_Tennis_Professionals_link&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;AstDys&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Asterisk&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;AthAbbr&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Atnhead&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Atop&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Atopg&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Atopr&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Attached_KML&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Au&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;AuEduNewbie&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Audio&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;Audio_sample&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;AustralianFootball&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Australian_Dictionary_of_Biography&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Australian_English&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Australian_party_style&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Australian_politics/name&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Australian_politics/party_colours&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Austria_metadata_Wikidata&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Austria_population_Wikidata&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Aut&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Authority_control&amp;quot;] = 2150000,&lt;br /&gt;
[&amp;quot;Authority_control_(arts)&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Auto_link&amp;quot;] = 84000,&lt;br /&gt;
[&amp;quot;Autobiography&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Automated_tools&amp;quot;] = 84000,&lt;br /&gt;
[&amp;quot;Automated_tools/core&amp;quot;] = 84000,&lt;br /&gt;
[&amp;quot;Automatic_archive_navigator&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Automatic_category_TOC&amp;quot;] = 818000,&lt;br /&gt;
[&amp;quot;Automatic_category_TOC/core&amp;quot;] = 817000,&lt;br /&gt;
[&amp;quot;Automatic_taxobox&amp;quot;] = 85000,&lt;br /&gt;
[&amp;quot;Aviation_Safety_Network_accident_history&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Aviation_accidents_and_incidents&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Avoid_wrap&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Awaiting_admin&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Awaitingadmin&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Award2&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Awards&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Awards_table&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Awards_table/styles.css&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Ayd&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Aye&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:A_or_an&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Module:A_or_an/words&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Module:About&amp;quot;] = 162000,&lt;br /&gt;
[&amp;quot;Module:Adjacent_stations&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;Module:Adjacent_stations/Amtrak&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Module:Adjacent_stations/Indian_Railways&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Module:Adjacent_stations/JR_East&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Module:Adjacent_stations/i18n&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;Module:Administrators&#039;_noticeboard_archives&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Module:AfC_submission_catcheck&amp;quot;] = 391000,&lt;br /&gt;
[&amp;quot;Module:AfC_topic&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Module:Age&amp;quot;] = 1280000,&lt;br /&gt;
[&amp;quot;Module:Ahnentafel&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;Module:Airport_destination_list&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Module:Aligned_dates_list&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Module:Aligned_table&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Module:All_Ireland_by_county_category_navigation&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Module:Anchor&amp;quot;] = 86000,&lt;br /&gt;
[&amp;quot;Module:Ancient_Egypt_era&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:Ancient_Egypt_era/data&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:Ancient_Egypt_kings&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:Ancient_Egypt_kings/data&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:Ancient_Olympiads&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:Ancient_Olympiads/data&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:Annotated_link&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Module:Archive&amp;quot;] = 317000,&lt;br /&gt;
[&amp;quot;Module:Archive/config&amp;quot;] = 317000,&lt;br /&gt;
[&amp;quot;Module:Archive_list&amp;quot;] = 89000,&lt;br /&gt;
[&amp;quot;Module:Arguments&amp;quot;] = 34200000,&lt;br /&gt;
[&amp;quot;Module:Armenian&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:Article_history&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;Module:Article_history/Category&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;Module:Article_history/config&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;Module:Article_history/styles.css&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;Module:Article_stub_box&amp;quot;] = 2380000,&lt;br /&gt;
[&amp;quot;Module:Article_stub_box/styles.css&amp;quot;] = 2380000,&lt;br /&gt;
[&amp;quot;Module:Articles_by_importance&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Module:Articles_by_quality&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Module:Asbox_stubtree&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Module:Attached_KML&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Module:Attached_KML/styles.css&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Module:Australian_place_map&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Module:Authority_control&amp;quot;] = 2160000,&lt;br /&gt;
[&amp;quot;Module:Authority_control/auxiliary&amp;quot;] = 694000,&lt;br /&gt;
[&amp;quot;Module:Authority_control/config&amp;quot;] = 2160000,&lt;br /&gt;
[&amp;quot;Module:Automated_taxobox&amp;quot;] = 430000,&lt;br /&gt;
[&amp;quot;Module:Autotaxobox&amp;quot;] = 596000,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Lua_call&amp;diff=1591</id>
		<title>Module:Lua call</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Lua_call&amp;diff=1591"/>
		<updated>2025-02-21T04:43:23Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p={}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local parent = frame.getParent(frame) or {}&lt;br /&gt;
    local reserved_value = {}&lt;br /&gt;
    local reserved_function, reserved_contents&lt;br /&gt;
    for k, v in pairs(parent.args or {}) do&lt;br /&gt;
        _G[k] = tonumber(v) or v -- transfer every parameter directly to the global variable table&lt;br /&gt;
    end&lt;br /&gt;
    for k, v in pairs(frame.args or {}) do&lt;br /&gt;
        _G[k] = tonumber(v) or v -- transfer every parameter directly to the global variable table&lt;br /&gt;
    end&lt;br /&gt;
     --- Alas Scribunto does NOT implement coroutines, according to&lt;br /&gt;
     --- http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#string.format&lt;br /&gt;
     --- this will not stop us from trying to implement one single lousy function call&lt;br /&gt;
    if _G[1] then&lt;br /&gt;
        reserved_function, reserved_contents = mw.ustring.match(_G[1], &amp;quot;^%s*(%a[^%s%(]*)%(([^%)]*)%)%s*$&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    if reserved_contents then&lt;br /&gt;
        local reserved_counter = 0&lt;br /&gt;
        repeat&lt;br /&gt;
            reserved_counter = reserved_counter + 1&lt;br /&gt;
            reserved_value[reserved_counter] = _G[mw.ustring.match(reserved_contents, &amp;quot;([^%,]+)&amp;quot;)]&lt;br /&gt;
            reserved_contents = mw.ustring.match(reserved_contents, &amp;quot;[^%,]+,(.*)$&amp;quot;)&lt;br /&gt;
        until not reserved_contents&lt;br /&gt;
    end&lt;br /&gt;
    local reserved_arraypart = _G&lt;br /&gt;
    while mw.ustring.match(reserved_function, &amp;quot;%.&amp;quot;) do&lt;br /&gt;
        reserved_functionpart, reserved_function = mw.ustring.match(reserved_function, &amp;quot;^(%a[^%.]*)%.(.*)$&amp;quot;)&lt;br /&gt;
        reserved_arraypart = reserved_arraypart[reserved_functionpart]&lt;br /&gt;
    end&lt;br /&gt;
    local reserved_call = reserved_arraypart[reserved_function]&lt;br /&gt;
    if type(reserved_call) ~= &amp;quot;function&amp;quot; then&lt;br /&gt;
        return tostring(reserved_call)&lt;br /&gt;
    else &lt;br /&gt;
    	reserved_output = {reserved_call(unpack(reserved_value))}&lt;br /&gt;
        return reserved_output[reserved_return or 1]&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tonumberOrString(v)&lt;br /&gt;
	return tonumber(v) or v:gsub(&amp;quot;^\\&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function callWithTonumberOrStringOnPairs(f, ...)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for _, v in ... do&lt;br /&gt;
		table.insert(args, tonumberOrString(v))&lt;br /&gt;
	end&lt;br /&gt;
	return (f(unpack(args)))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- ipairsAtOffset&lt;br /&gt;
&lt;br /&gt;
-- This is an iterator for arrays. It can be used like ipairs, but with&lt;br /&gt;
-- specified i as first index to iterate. i is an offset from 1&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
local function ipairsAtOffset(t, i)&lt;br /&gt;
	local f, s, i0 = ipairs(t)&lt;br /&gt;
	return f, s, i0+i&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get(s)&lt;br /&gt;
	local G = _G; for _ in mw.text.gsplit(&lt;br /&gt;
		mw.text.trim(s, &#039;%s&#039;), &#039;%s*%.%s*&#039;&lt;br /&gt;
	) do&lt;br /&gt;
		G = G[_]&lt;br /&gt;
	end&lt;br /&gt;
	return G&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- call&lt;br /&gt;
--&lt;br /&gt;
-- This function is usually useful for debugging template parameters.&lt;br /&gt;
-- Prefix parameter with backslash (\) to force interpreting parameter as string.&lt;br /&gt;
-- The leading backslash will be removed before passed to Lua function.&lt;br /&gt;
--&lt;br /&gt;
-- Example:&lt;br /&gt;
--    {{#invoke:LuaCall|call|mw.log|a|1|2|3}} will return results of mw.log(&#039;a&#039;, 1, 2, 3)&lt;br /&gt;
--    {{#invoke:LuaCall|call|mw.logObject|\a|321|\321| \321 }} will return results of mw.logObject(&#039;a&#039;, 321, &#039;321&#039;, &#039; \\321 &#039;)&lt;br /&gt;
--&lt;br /&gt;
-- This example show the debugging to see which Unicode characters are allowed in template parameters,&lt;br /&gt;
--    {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0061}}}} return 97&lt;br /&gt;
--    {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0000}}}} return 65533&lt;br /&gt;
--    {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0001}}}} return 65533&lt;br /&gt;
--    {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0002}}}}}} return 0xfffd&lt;br /&gt;
--    {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007e}}}}}} return 0x007e&lt;br /&gt;
--    {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007f}}}}}} return 0x007f&lt;br /&gt;
--    {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0080}}}}}} return 0x0080&lt;br /&gt;
--    {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x00a0}}}}}} return 0x00a0&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.call(frame)&lt;br /&gt;
	return callWithTonumberOrStringOnPairs(get(frame.args[1]),&lt;br /&gt;
		ipairsAtOffset(frame.args, 1)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--local TableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- get&lt;br /&gt;
--&lt;br /&gt;
-- Example:&lt;br /&gt;
--    {{#invoke:LuaCall|get| math.pi }} will return value of math.pi&lt;br /&gt;
--    {{#invoke:LuaCall|get|math|pi}} will return value of math.pi&lt;br /&gt;
--    {{#invoke:LuaCall|get| math |pi}} will return value of _G[&#039; math &#039;].pi&lt;br /&gt;
--    {{#invoke:LuaCall|get|_G| math.pi }} will return value of _G[&#039; math.pi &#039;]&lt;br /&gt;
--    {{#invoke:LuaCall|get|obj.a.5.c}} will return value of obj.a[&#039;5&#039;].c&lt;br /&gt;
--    {{#invoke:LuaCall|get|obj|a|5|c}} will return value of obj.a[5].c&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.get(frame)&lt;br /&gt;
	-- #frame.args always return 0, regardless of number of unnamed&lt;br /&gt;
	-- template parameters, so check manually instead&lt;br /&gt;
	if frame.args[2] == nil then&lt;br /&gt;
		-- not do tonumber() for this args style,&lt;br /&gt;
		-- always treat it as string,&lt;br /&gt;
		-- so &#039;obj.1&#039; will mean obj[&#039;1&#039;] rather obj[1]&lt;br /&gt;
		return get(frame.args[1])&lt;br /&gt;
	else&lt;br /&gt;
		local G = _G&lt;br /&gt;
		for _, v in ipairs(frame.args) do&lt;br /&gt;
			G = G[tonumberOrString(v)]&lt;br /&gt;
		end&lt;br /&gt;
		return G&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- invoke&lt;br /&gt;
--&lt;br /&gt;
-- This function is used by Template:Invoke&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.invoke(frame)&lt;br /&gt;
	local pframe, usedpargs = frame:getParent(), {}&lt;br /&gt;
	-- get module and function names from parent args if not provided&lt;br /&gt;
	local pfargs = setmetatable({frame.args[1], frame.args[2]}, {__index = table})&lt;br /&gt;
	if not pfargs[1] then&lt;br /&gt;
		pfargs[1], usedpargs[1] = pframe.args[1], true&lt;br /&gt;
		if not pfargs[2] then&lt;br /&gt;
			pfargs[2], usedpargs[2] = pframe.args[2], true&lt;br /&gt;
		end&lt;br /&gt;
	elseif not pfargs[2] then&lt;br /&gt;
		pfargs[2], usedpargs[1] = pframe.args[1], true&lt;br /&gt;
	end&lt;br /&gt;
	-- repack sequential args&lt;br /&gt;
	for i, v in ipairs(pframe.args) do&lt;br /&gt;
		if not usedpargs[i] then&lt;br /&gt;
			pfargs:insert(v)&lt;br /&gt;
			usedpargs[i] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- copy other args&lt;br /&gt;
	for k, v in pairs(pframe.args) do&lt;br /&gt;
		if not pfargs[k] and not usedpargs[k] then&lt;br /&gt;
			pfargs[k], usedpargs[k] = v, true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- #invoke off parent frame so the new frame has the same parent&lt;br /&gt;
	return pframe:callParserFunction{name = &#039;#invoke&#039;, args = pfargs}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Category_link/core&amp;diff=1589</id>
		<title>Template:Category link/core</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Category_link/core&amp;diff=1589"/>
		<updated>2025-02-21T04:43:23Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[:Category:{{{1}}}|{{{2}}}]]{{#if:{{Yesno|1={{{count|no}}}}}|&amp;amp;nbsp;&amp;lt;small style=&amp;quot;{{#ifexpr:{{{page_count}}}&amp;gt;={{{backlog}}}|font-weight: bold; color: #DD0000;}}&amp;quot;&amp;gt;(&amp;amp;thinsp;{{formatnum:{{{page_count}}}}}&amp;amp;thinsp;)&amp;lt;/small&amp;gt;}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation|Template:Category link/doc}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Short_description/doc&amp;diff=1587</id>
		<title>Template:Short description/doc</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Short_description/doc&amp;diff=1587"/>
		<updated>2025-02-21T04:43:22Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{pp|small=yes}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --&amp;gt;&lt;br /&gt;
{{High risk}}&lt;br /&gt;
{{cascade-protected template}}&lt;br /&gt;
{{Warning|&#039;&#039;&#039;Please do not use redirects/shortcuts for this template&#039;&#039;&#039;, as they cause problems with the [[Wikipedia:Shortdesc helper|short description editing gadget]] and other maintenance tools.}}&lt;br /&gt;
{{Lua|Module:Check for unknown parameters|Module:String}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Template:Short description]]&#039;&#039;&#039; is used to add a [[Wikipedia:Short description|short description]] (which can be edited from within Wikipedia) to a Wikipedia page. These descriptions appear in Wikipedia searches and elsewhere, and help users identify the desired article.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
{{tld|Short description|&#039;&#039;Write your short description here&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
This should be limited to about 40 characters, as explained at [[WP:SDFORMAT]], along with the other guidance at [[WP:SDCONTENT]].&lt;br /&gt;
&lt;br /&gt;
If the page&#039;s title is sufficiently descriptive that a [[WP:SDNONE|short description is not needed]], use the following:&lt;br /&gt;
&lt;br /&gt;
{{tld|Short description|none}}&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
{{TemplateData header|noheader=1}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;: {&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;Creates a short description for a Wikipedia page, which is displayed in search results and other locations.&amp;quot;,&lt;br /&gt;
		&amp;quot;es&amp;quot;: &amp;quot;Crea una breve descripción, para un artículo de Wikipedia, que se utiliza en el Editor Visual para proporcionar contexto en los wikilinks (wikienlaces).&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;Description&amp;quot;,&lt;br /&gt;
				&amp;quot;es&amp;quot;: &amp;quot;Descripción&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;description&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;The short description of the article or &#039;none&#039;. It should be limited to about 40 characters.&amp;quot;,&lt;br /&gt;
				&amp;quot;es&amp;quot;: &amp;quot;La descripción corta del artículo&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;example&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;Endangered species of South American fish&amp;quot;,&lt;br /&gt;
				&amp;quot;es&amp;quot;: &amp;quot;La enciclopedia en línea que cualquiera puede editar&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;No replace?&amp;quot;,&lt;br /&gt;
				&amp;quot;es&amp;quot;: &amp;quot;2&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;description&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;Should be unused or &#039;noreplace&#039;. Templates with noreplace will not replace a short description defined by an earlier template. Mainly for use within transcluded templates.&amp;quot;,&lt;br /&gt;
				&amp;quot;es&amp;quot;: &amp;quot;Se anula una descripción corta si se transcluye.  Debe estar sin usar o  con &#039;noreplace&#039; (que significar no reemplazar).&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;example&amp;quot;: {&lt;br /&gt;
				&amp;quot;es&amp;quot;: &amp;quot;noreplace&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;required&amp;quot;: false,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;autovalue&amp;quot;: &amp;quot;noreplace&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;noreplace&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;pagetype&amp;quot;: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;The type of page. This puts it in the appropriate category - Things with short description. Normally unneeded, since handled through namespace detection.&amp;quot;,&lt;br /&gt;
				&amp;quot;es&amp;quot;: &amp;quot;El tipo de página. La coloca en la categoría apropiada - Cosas con descripción corta&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;Redirect, Disambiguation page&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: false&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;{{_|_ = _}}\n&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== About writing good short descriptions ==&lt;br /&gt;
This page is about the short description {{em|template}}; it does not provide guidelines for writing a good short description. If you plan to use this template, you should make sure you read and follow the detailed guidance at [[WP:HOWTOSD]]. General information can be found at [[Wikipedia:Short description]].&lt;br /&gt;
&lt;br /&gt;
== Template information ==&lt;br /&gt;
Eventually all articles should have a short description:&lt;br /&gt;
* by directly using this template, in which case the short description will be unique to the article&lt;br /&gt;
* transcluded in another template, such as a disambiguation template, where a generic short description is adequate for a large class of pages&lt;br /&gt;
* where the short description is assembled from data in an infobox&lt;br /&gt;
&lt;br /&gt;
Automatically generated descriptions within templates should set the second parameter as {{code|noreplace}} so they do not override any short descriptions specifically added to the transcluding article.&lt;br /&gt;
&lt;br /&gt;
Short descriptions are not normally needed for non-article pages, such as redirects, but can be added if useful.&lt;br /&gt;
&lt;br /&gt;
If the article title alone is sufficient to ensure reliable identification of the desired article, a null value of {{tnull|Short description|none}} may be used.&lt;br /&gt;
&lt;br /&gt;
Short descriptions do not necessarily serve the same function as the Wikidata description for an item and they do not have to be the same, but some overlap is expected in many cases. Some Wikidata descriptions may be unsuitable, and if imported must be checked for relevance, accuracy and fitness for purpose. Responsibility for such imports lies with the importer. {{crossref|(See also [[d:Help:Description|Wikidata:Help:Description]].)}}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
At [[Oxygen therapy]], add the following at the very top of the article, above everything else:&lt;br /&gt;
* {{tld|Short description|Use of oxygen as medical treatment}}&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
For testing purposes, the display of this template can be enabled by adding a line to your [[Special:MyPage/common.css]]:&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;CSS&amp;quot; inline&amp;gt;.shortdescription { display:block !important; }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This can be easily removed or disabled when testing is finished.&lt;br /&gt;
&lt;br /&gt;
If you want to {{em|always}} see short descriptions, you may prefer a more utilitarian layout, such as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;CSS&amp;quot;&amp;gt;&lt;br /&gt;
.shortdescription {&lt;br /&gt;
  display:block !important;&lt;br /&gt;
  white-space: pre-wrap;&lt;br /&gt;
}&lt;br /&gt;
.shortdescription::before { &lt;br /&gt;
  content: &amp;quot;\A[Short description:\0020&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
.shortdescription::after { &lt;br /&gt;
  content: &amp;quot;]\A&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
There is a test version of this template available as [[Template:Short description/test]] which displays its text by default.&lt;br /&gt;
* {{tld|Short description/test}} displays the short description if supplied&lt;br /&gt;
* {{tld|Short description/test}} displays nothing if &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; is supplied&lt;br /&gt;
* {{tld|Short description/test}} displays the description from Wikidata if &amp;lt;code&amp;gt;wikidata&amp;lt;/code&amp;gt; is supplied.&lt;br /&gt;
&lt;br /&gt;
Taking {{Q|Q1096878}} as an example:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{short description/test|Underwater diving where breathing is from equipment independent of the surface}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{short description/test|Underwater diving where breathing is from equipment independent of the surface }}&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{short description/test|none}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{short description/test|none}}&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{short description/test|wikidata}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{short description/test|wikidata|qid=Q1096878}}&lt;br /&gt;
&lt;br /&gt;
===Pagetype parameter===&lt;br /&gt;
If {{param|Pagetype}} is &#039;&#039;&#039;not&#039;&#039;&#039; set, then this template adds the article to a category based on the namespace:&lt;br /&gt;
* {{clc|Articles with short description}}&lt;br /&gt;
* {{clc|Redirects with short description}} {{--}} for redirects in any namespace&lt;br /&gt;
&lt;br /&gt;
If {{param|Pagetype}} &#039;&#039;&#039;is&#039;&#039;&#039; set, then this template adds the article to a category matching the parameter. For example:&lt;br /&gt;
* {{cl|Redirects with short description}} {{--}} {{code|pagetype {{=}} Redirect }}&lt;br /&gt;
&lt;br /&gt;
{{anchor|No-aliases}}&lt;br /&gt;
&lt;br /&gt;
== Aliases ==&lt;br /&gt;
{{Shortcut|WP:SDNOALIASES}}&lt;br /&gt;
While there are currently &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:Special:WhatLinksHere/Template:Short_description|hidetrans=1&amp;amp;hidelinks=1&amp;amp;limit=500}} redirects to this template]&amp;lt;/span&amp;gt;, {{Strong|they must not be used}}, for the reasons below:&lt;br /&gt;
&lt;br /&gt;
:* Other templates and gadgets attempt to extract short descriptions from pages by explicitly searching for the transclusions of the {{tl|Short description}} template.&lt;br /&gt;
:* For example, {{tl|Annotated link}} searches for the template in its uppercase &amp;quot;Short description&amp;quot; and lowercase form &amp;quot;short description&amp;quot;; either form is acceptable.&lt;br /&gt;
&lt;br /&gt;
See related [[Wikipedia:Redirects for discussion/Log/2021 July 20#Aliases for Short description template|RfD]].&lt;br /&gt;
&lt;br /&gt;
{{Strong|Do not}} start the template with a space: {{code|&amp;lt;nowiki&amp;gt; {{ Short description...&amp;lt;/nowiki&amp;gt;}}. While this does create a valid short description, the space will prevent searches for the {{code|&amp;lt;nowiki&amp;gt;{{Short description...&amp;lt;/nowiki&amp;gt;}} text.&lt;br /&gt;
&lt;br /&gt;
==Tracking categories==&lt;br /&gt;
* {{clc|Templates that generate short descriptions}}&lt;br /&gt;
* {{clc|Modules that create a short description}}&lt;br /&gt;
* {{clc|Short description matches Wikidata}}&lt;br /&gt;
* {{clc|Short description is different from Wikidata}}&lt;br /&gt;
* {{clc|Short description with empty Wikidata description}}&lt;br /&gt;
&lt;br /&gt;
== Maintenance categories ==&lt;br /&gt;
* {{clc|Pages using short description with unknown parameters}}&lt;br /&gt;
* {{clc|Articles with long short description}}&lt;br /&gt;
* {{clc|Pages with lower-case short description}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* {{tlx|Auto short description}}&lt;br /&gt;
* {{tlx|Annotated link}}&lt;br /&gt;
* {{tlx|laal}} – displays an article&#039;s pagelinks alongside its short description&lt;br /&gt;
* [[Module:Is infobox in lead]]&lt;br /&gt;
* [[Wikipedia:Short descriptions]] – background information&lt;br /&gt;
* [[Wikipedia:WikiProject Short descriptions]] – project to add Short descriptions to all articles&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line, please; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Templates that add a tracking category]]&lt;br /&gt;
[[Category:Templates that generate short descriptions]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Short_description/test&amp;diff=1585</id>
		<title>Template:Short description/test</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Short_description/test&amp;diff=1585"/>
		<updated>2025-02-21T04:43:19Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;shortdescription nomobile noexcerpt noprint&amp;quot;&amp;gt;{{nowiki2|1={{#invoke:WikidataIB|getDescription|{{{1|}}}|qid={{{qid|}}}}}}}&amp;lt;/span&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:LuaCall&amp;diff=1583</id>
		<title>Module:LuaCall</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:LuaCall&amp;diff=1583"/>
		<updated>2025-02-21T04:43:19Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return require [[Module:Lua call]]&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Nowiki2&amp;diff=1581</id>
		<title>Template:Nowiki2</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Nowiki2&amp;diff=1581"/>
		<updated>2025-02-21T04:43:19Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if: {{{tag|}}}&lt;br /&gt;
| {{#if: {{{style|}}}&lt;br /&gt;
  | &amp;lt;{{{tag}}} style=&amp;quot;{{{style}}}&amp;quot;&amp;gt;&lt;br /&gt;
  | &amp;lt;{{{tag}}}&amp;gt;&lt;br /&gt;
  }}&lt;br /&gt;
}}{{#invoke:LuaCall | call | mw.text.nowiki |\{{{1|}}}&amp;lt;!-- --&amp;gt;}}{{#if: {{{tag|}}}&lt;br /&gt;
| &amp;lt;/{{{tag}}}&amp;gt;&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Cascade-protected_template&amp;diff=1579</id>
		<title>Template:Cascade-protected template</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Cascade-protected_template&amp;diff=1579"/>
		<updated>2025-02-21T04:43:18Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mbox&lt;br /&gt;
    | type = protection&lt;br /&gt;
    | image = [[File:Cascade-protection-shackle.svg|40x40px|link=|alt=]]&lt;br /&gt;
    | text = This {{{page|template}}} can only be edited by [[Wikipedia:Administrators|administrators]] because it is [[Help:Transclusion|transcluded]] onto one or more [[Wikipedia:Protection policy#Cascading protection|cascade-protected]] pages.&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Transclusion_count/data/S&amp;diff=1577</id>
		<title>Module:Transclusion count/data/S</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Transclusion_count/data/S&amp;diff=1577"/>
		<updated>2025-02-21T04:43:17Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;S&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;S-aca&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;S-ach&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;S-aft&amp;quot;] = 224000,&lt;br /&gt;
[&amp;quot;S-aft/check&amp;quot;] = 225000,&lt;br /&gt;
[&amp;quot;S-aft/filter&amp;quot;] = 225000,&lt;br /&gt;
[&amp;quot;S-bef&amp;quot;] = 229000,&lt;br /&gt;
[&amp;quot;S-bef/check&amp;quot;] = 229000,&lt;br /&gt;
[&amp;quot;S-bef/filter&amp;quot;] = 229000,&lt;br /&gt;
[&amp;quot;S-break&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;S-bus&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;S-civ&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;S-dip&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;S-end&amp;quot;] = 254000,&lt;br /&gt;
[&amp;quot;S-gov&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;S-hon&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;S-hou&amp;quot;] = 9600,&lt;br /&gt;
[&amp;quot;S-inc&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;S-legal&amp;quot;] = 9700,&lt;br /&gt;
[&amp;quot;S-mil&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;S-new&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;S-non&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;S-npo&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;S-off&amp;quot;] = 42000,&lt;br /&gt;
[&amp;quot;S-par&amp;quot;] = 52000,&lt;br /&gt;
[&amp;quot;S-par/en&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;S-par/gb&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;S-par/uk&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;S-par/us-hs&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;S-par/us-sen&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;S-ppo&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;S-prec&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;S-rail&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;S-rail-start&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;S-rail/lines&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;S-reg&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;S-rel&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;S-roy&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;S-sports&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;S-start&amp;quot;] = 247000,&lt;br /&gt;
[&amp;quot;S-ttl&amp;quot;] = 236000,&lt;br /&gt;
[&amp;quot;S-ttl/check&amp;quot;] = 236000,&lt;br /&gt;
[&amp;quot;S-vac&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;SCO&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;SDcat&amp;quot;] = 6200000,&lt;br /&gt;
[&amp;quot;SECOND&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;SGP&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;SIA&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;SIPA&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;SLO&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;SMS&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;SMU&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;SPI_archive_notice&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;SPIarchive_notice&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;SPIcat&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;SPIclose&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;SPIpriorcases&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;SR/Olympics_profile&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;SRB&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;SS&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;SSPa&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;STN&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;SUBJECTSPACE_formatted&amp;quot;] = 42000,&lt;br /&gt;
[&amp;quot;SUI&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;SVG&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;SVG-Logo&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;SVG-Res&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;SVG-logo&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;SVK&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;SVN&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;SWE&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Sandbox_other&amp;quot;] = 408000,&lt;br /&gt;
[&amp;quot;Saturday&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Saved_book&amp;quot;] = 52000,&lt;br /&gt;
[&amp;quot;Sc&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Scholia&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;School_block&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;School_disambiguation&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Schoolblock&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Schooldis&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Schoolip&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Scientist_icon&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Scientist_icon2&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Sclass&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;Sclass2&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Screen_reader-only&amp;quot;] = 47000,&lt;br /&gt;
[&amp;quot;Screen_reader-only/styles.css&amp;quot;] = 82000,&lt;br /&gt;
[&amp;quot;Script&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;Script/Arabic&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Script/Hebrew&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Script/Nastaliq&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk/core&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk/is-iso-alpha4&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Script/doc/id-unk/name-to-alpha4&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Script/styles.css&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Script/styles_arabic.css&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Script/styles_hebrew.css&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Sdash&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Search_box&amp;quot;] = 64000,&lt;br /&gt;
[&amp;quot;Search_link&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Section_link&amp;quot;] = 85000,&lt;br /&gt;
[&amp;quot;Section_sizes&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;See&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;See_also&amp;quot;] = 201000,&lt;br /&gt;
[&amp;quot;Seealso&amp;quot;] = 7200,&lt;br /&gt;
[&amp;quot;Select_skin&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Selected_article&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Selected_picture&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Self&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;Self-published_inline&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Self-published_source&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Self-reference&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Self-reference_tool&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Sent_off&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Sentoff&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Separated_entries&amp;quot;] = 226000,&lt;br /&gt;
[&amp;quot;Sequence&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Series_overview&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Serif&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Set_category&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Set_index_article&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Sets_taxobox_colour&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Sfn&amp;quot;] = 180000,&lt;br /&gt;
[&amp;quot;SfnRef&amp;quot;] = 147000,&lt;br /&gt;
[&amp;quot;Sfnm&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Sfnp&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Sfnref&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Sfrac&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Sfrac/styles.css&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;SharedIPEDU&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Shared_IP&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Shared_IP_advice&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Shared_IP_corp&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Shared_IP_edu&amp;quot;] = 184000,&lt;br /&gt;
[&amp;quot;Shared_IP_gov&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Sharedip&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Sharedipedu&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Sherdog&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Ship&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Ship_index&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;Shipboxflag&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Shipboxflag/core&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Shipwrecks_navbox_footer&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Shipwrecks_navbox_footer/link&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Short_description&amp;quot;] = 6320000,&lt;br /&gt;
[&amp;quot;Short_description/lowercasecheck&amp;quot;] = 6320000,&lt;br /&gt;
[&amp;quot;Short_pages_monitor&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Short_pages_monitor/maximum_length&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Shortcut&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Should_be_SVG&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;Show_by_date&amp;quot;] = 9400,&lt;br /&gt;
[&amp;quot;Shy&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Sic&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Side_box&amp;quot;] = 1210000,&lt;br /&gt;
[&amp;quot;Sidebar&amp;quot;] = 286000,&lt;br /&gt;
[&amp;quot;Sidebar_games_events&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Sidebar_person&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Sidebar_person/styles.css&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Sidebar_with_collapsible_lists&amp;quot;] = 98000,&lt;br /&gt;
[&amp;quot;Sigfig&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Significant_figures&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Significant_figures/rnd&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Signpost-subscription&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Signpost-subscription/styles.css&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Signpost/item&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;Sildb_prim&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Silver02&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Silver2&amp;quot;] = 54000,&lt;br /&gt;
[&amp;quot;Silver_medal&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Similar_names&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Single+double&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Single+space&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Single-innings_cricket_match&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Single_chart&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Single_chart/chartnote&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Single_namespace&amp;quot;] = 224000,&lt;br /&gt;
[&amp;quot;Single_source&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Singlechart&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Singles&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;Sister-inline&amp;quot;] = 207000,&lt;br /&gt;
[&amp;quot;Sister_project&amp;quot;] = 1080000,&lt;br /&gt;
[&amp;quot;Sister_project/styles.css&amp;quot;] = 1080000,&lt;br /&gt;
[&amp;quot;Sister_project_links&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Skip_to_talk&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Skip_to_talk/styles.css&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Sky&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Sky/styles.css&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Slink&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Small&amp;quot;] = 639000,&lt;br /&gt;
[&amp;quot;Small_Solar_System_bodies&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Smallcaps&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Smallcaps/styles.css&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Smallcaps_all&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Smalldiv&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Smaller&amp;quot;] = 80000,&lt;br /&gt;
[&amp;quot;Smallsup&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Smiley&amp;quot;] = 48000,&lt;br /&gt;
[&amp;quot;Snd&amp;quot;] = 224000,&lt;br /&gt;
[&amp;quot;Snds&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Soccer_icon&amp;quot;] = 127000,&lt;br /&gt;
[&amp;quot;Soccer_icon2&amp;quot;] = 127000,&lt;br /&gt;
[&amp;quot;Soccer_icon4&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Soccerbase&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Soccerbase_season&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Soccerway&amp;quot;] = 81000,&lt;br /&gt;
[&amp;quot;Sock&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;Sock_list&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Sockcat&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Sockmaster&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Sockpuppet&amp;quot;] = 259000,&lt;br /&gt;
[&amp;quot;Sockpuppet/altmaster&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Sockpuppet/categorise&amp;quot;] = 259000,&lt;br /&gt;
[&amp;quot;SockpuppetCheckuser&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Sockpuppet_category&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;Sockpuppet_category/confirmed&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Sockpuppet_category/suspected&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Sockpuppetcheckuser&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Sockpuppeteer&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Soft_hyphen&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Soft_redirect&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Soft_redirect_protection&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;Softredirect&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Solar_luminosity&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Solar_mass&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Solar_radius&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Soldier_icon&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Soldier_icon2&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Songs_category&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Songs_category/core&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Sort&amp;quot;] = 110000,&lt;br /&gt;
[&amp;quot;Sortname&amp;quot;] = 59000,&lt;br /&gt;
[&amp;quot;Source-attribution&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Source_check&amp;quot;] = 938000,&lt;br /&gt;
[&amp;quot;Sourcecheck&amp;quot;] = 938000,&lt;br /&gt;
[&amp;quot;Sources&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Sources_exist&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;South_America_topic&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Sp&amp;quot;] = 182000,&lt;br /&gt;
[&amp;quot;Space&amp;quot;] = 58000,&lt;br /&gt;
[&amp;quot;Space+double&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Space+single&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Spaced_en_dash&amp;quot;] = 256000,&lt;br /&gt;
[&amp;quot;Spaced_en_dash_space&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Spaced_ndash&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Spaces&amp;quot;] = 601000,&lt;br /&gt;
[&amp;quot;Spain_metadata_Wikidata&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Spamlink&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Species_Latin_name_abbreviation_disambiguation&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Species_list&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Speciesbox&amp;quot;] = 343000,&lt;br /&gt;
[&amp;quot;Speciesbox/getGenus&amp;quot;] = 343000,&lt;br /&gt;
[&amp;quot;Speciesbox/getSpecies&amp;quot;] = 343000,&lt;br /&gt;
[&amp;quot;Speciesbox/name&amp;quot;] = 343000,&lt;br /&gt;
[&amp;quot;Speciesbox/parameterCheck&amp;quot;] = 343000,&lt;br /&gt;
[&amp;quot;Speciesbox/trim&amp;quot;] = 343000,&lt;br /&gt;
[&amp;quot;Specieslist&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Split_article&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Spnd&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Spoken_Wikipedia&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Sport_clubs_(dis)established_in_YYYY_category_header&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Sport_clubs_(dis)established_in_YYYY_category_header/core&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Sport_icon&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Sport_icon2&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;SportsYearCatUSstate&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Sports_links&amp;quot;] = 74000,&lt;br /&gt;
[&amp;quot;Sports_reference&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Squad_maintenance&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Sronly&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;Srt&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Stack&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;Stack/styles.css&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Stack_begin&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Stack_end&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;StaleIP&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;StandardEbooks&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Standings_table_end&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_entry&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_entry/record&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_start&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_start/colheader&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_start/colspan&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Standings_table_start/styles.css&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Starbox_astrometry&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Starbox_begin&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Starbox_catalog&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Starbox_character&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Starbox_detail&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Starbox_end&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Starbox_image&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Starbox_observe&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Starbox_reference&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Start-Class&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Start-date&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Start_and_end_dates&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Start_box&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Start_date&amp;quot;] = 504000,&lt;br /&gt;
[&amp;quot;Start_date_and_age&amp;quot;] = 167000,&lt;br /&gt;
[&amp;quot;Start_date_and_years_ago&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Start_date_text&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Start_of_course_timeline&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Start_of_course_week&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Start_tab&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Startflatlist&amp;quot;] = 155000,&lt;br /&gt;
[&amp;quot;Static_IP&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Static_row_numbers&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Static_row_numbers/styles.css&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Station&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Station_link&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Stdinchicite&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Steady&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Sticky_header&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Sticky_header/styles.css&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Stl&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Stn&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Stn_art_lnk&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Stnlnk&amp;quot;] = 33000,&lt;br /&gt;
[&amp;quot;Storm_colour&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Storm_name&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Storm_path&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Stortingetbio&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;StoryTeleplay&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Str_count&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Str_endswith&amp;quot;] = 208000,&lt;br /&gt;
[&amp;quot;Str_find&amp;quot;] = 298000,&lt;br /&gt;
[&amp;quot;Str_index&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Str_left&amp;quot;] = 971000,&lt;br /&gt;
[&amp;quot;Str_len&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Str_letter&amp;quot;] = 179000,&lt;br /&gt;
[&amp;quot;Str_letter/trim&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Str_number&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Str_number/trim&amp;quot;] = 205000,&lt;br /&gt;
[&amp;quot;Str_rep&amp;quot;] = 281000,&lt;br /&gt;
[&amp;quot;Str_trim&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Str_≠_len&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Str_≤_len&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Str_≥_len&amp;quot;] = 89000,&lt;br /&gt;
[&amp;quot;Strfind_short&amp;quot;] = 253000,&lt;br /&gt;
[&amp;quot;Strikethrough&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;String_split&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Strip_tags&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Strong&amp;quot;] = 924000,&lt;br /&gt;
[&amp;quot;Structurae&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Stub-Class&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Stub_Category&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Stub_category&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Stub_documentation&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Student_editor&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Student_sandbox&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Student_table_row&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Students_table&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Su&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Su-census1989&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Sub&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Subinfobox_bodystyle&amp;quot;] = 65000,&lt;br /&gt;
[&amp;quot;Subject_bar&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Suboff&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Subon&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Subpage_other&amp;quot;] = 340000,&lt;br /&gt;
[&amp;quot;Subscription_required&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Subsidebar_bodystyle&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Subst_only&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Substituted_comment&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Succession_box&amp;quot;] = 119000,&lt;br /&gt;
[&amp;quot;Succession_box/check&amp;quot;] = 119000,&lt;br /&gt;
[&amp;quot;Succession_links&amp;quot;] = 195000,&lt;br /&gt;
[&amp;quot;Summer_Olympics_by_year_category_navigation&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Summer_Olympics_by_year_category_navigation/core&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Sunday&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Sup&amp;quot;] = 64000,&lt;br /&gt;
[&amp;quot;Suppress_categories&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Surname&amp;quot;] = 73000,&lt;br /&gt;
[&amp;quot;Swiss_populations&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Swiss_populations_NC&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Swiss_populations_YM&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Swiss_populations_ref&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Switcher&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Module:SDcat&amp;quot;] = 6200000,&lt;br /&gt;
[&amp;quot;Module:SPI_archive_notice&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Module:Science_redirect&amp;quot;] = 297000,&lt;br /&gt;
[&amp;quot;Module:Science_redirect/conf&amp;quot;] = 297000,&lt;br /&gt;
[&amp;quot;Module:Section_link&amp;quot;] = 85000,&lt;br /&gt;
[&amp;quot;Module:Section_sizes&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Module:See_also_if_exists&amp;quot;] = 74000,&lt;br /&gt;
[&amp;quot;Module:Self&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;Module:Self/license_migration_data.json&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Module:Self/styles.css&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;Module:Separated_entries&amp;quot;] = 2440000,&lt;br /&gt;
[&amp;quot;Module:Series_overview&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;Module:Settlement_short_description&amp;quot;] = 711000,&lt;br /&gt;
[&amp;quot;Module:Shortcut&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Module:Shortcut/config&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Module:Shortcut/styles.css&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Module:Side_box&amp;quot;] = 1240000,&lt;br /&gt;
[&amp;quot;Module:Side_box/styles.css&amp;quot;] = 1240000,&lt;br /&gt;
[&amp;quot;Module:Sidebar&amp;quot;] = 373000,&lt;br /&gt;
[&amp;quot;Module:Sidebar/configuration&amp;quot;] = 373000,&lt;br /&gt;
[&amp;quot;Module:Sidebar/styles.css&amp;quot;] = 380000,&lt;br /&gt;
[&amp;quot;Module:Sidebar_games_events&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Module:Sidebar_games_events/styles.css&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Module:Singles&amp;quot;] = 45000,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links/bar/styles.css&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links/config&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Sister_project_links/styles.css&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:Sock_list&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Module:Sort&amp;quot;] = 140000,&lt;br /&gt;
[&amp;quot;Module:Sort_title&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Module:Sortkey&amp;quot;] = 97000,&lt;br /&gt;
[&amp;quot;Module:Split_article&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Module:Spoken_Wikipedia&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Module:Spoken_Wikipedia/configuration&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Module:Spoken_Wikipedia/styles.css&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Module:Sports_career&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Module:Sports_color&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;Module:Sports_color/baseball&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Module:Sports_color/basketball&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Sports_color/ice_hockey&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Module:Sports_rbr_table&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Sports_rbr_table/styles.css&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Sports_reference&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Module:Sports_results&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Module:Sports_results/styles.css&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Module:Sports_table&amp;quot;] = 66000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/Volleyball&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WDL&amp;quot;] = 57000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WDL_OT&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WL&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Module:Sports_table/WL_OT&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Module:Sports_table/argcheck&amp;quot;] = 66000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/styles.css&amp;quot;] = 66000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/sub&amp;quot;] = 66000,&lt;br /&gt;
[&amp;quot;Module:Sports_table/totalscheck&amp;quot;] = 47000,&lt;br /&gt;
[&amp;quot;Module:Stock_tickers/NYSE&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Module:Storm_categories&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Module:Storm_categories/categories&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Module:Storm_categories/colors&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Module:Storm_categories/icons&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Module:String&amp;quot;] = 11100000,&lt;br /&gt;
[&amp;quot;Module:String2&amp;quot;] = 4910000,&lt;br /&gt;
[&amp;quot;Module:Su&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Subject_bar&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Module:Suppress_categories&amp;quot;] = 5800,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Param&amp;diff=1575</id>
		<title>Template:Param</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Param&amp;diff=1575"/>
		<updated>2025-02-21T04:43:17Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SAFESUBST:&amp;lt;noinclude /&amp;gt;#ifeq:{{SAFESUBST:&amp;lt;noinclude /&amp;gt;Yesno|{{{nested|no}}}}}|yes||&amp;lt;{{{tag|code}}}&amp;gt;}}&amp;amp;#123;&amp;amp;#123;&amp;amp;#123;{{{1&amp;lt;noinclude&amp;gt;|foo&amp;lt;/noinclude&amp;gt;}}}{{SAFESUBST:&amp;lt;noinclude /&amp;gt;#ifeq:{{{2}}}|{{{2|}}} |&amp;amp;#124;}}{{{2|}}}&amp;amp;#125;&amp;amp;#125;&amp;amp;#125;{{SAFESUBST:&amp;lt;noinclude /&amp;gt;#ifeq:{{SAFESUBST:&amp;lt;noinclude /&amp;gt;Yesno|{{{nested|no}}}}}|yes||&amp;lt;/{{{tag|code}}}&amp;gt;}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   PLEASE ADD CATEGORIES AND INTERWIKIS&lt;br /&gt;
   TO THE /doc SUBPAGE, THANKS&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Shortcut&amp;diff=1573</id>
		<title>Template:Shortcut</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Shortcut&amp;diff=1573"/>
		<updated>2025-02-21T04:43:16Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Shortcut|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Tld&amp;diff=1571</id>
		<title>Template:Tld</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Tld&amp;diff=1571"/>
		<updated>2025-02-21T04:43:16Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Template link code]]&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:--&amp;diff=1569</id>
		<title>Template:--</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:--&amp;diff=1569"/>
		<updated>2025-02-21T04:43:16Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Em dash]]&lt;br /&gt;
&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from move}}&lt;br /&gt;
{{R from template shortcut}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Warning&amp;diff=1567</id>
		<title>Template:Warning</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Warning&amp;diff=1567"/>
		<updated>2025-02-21T04:43:16Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mbox&lt;br /&gt;
| name       = Warning&lt;br /&gt;
| demospace  = {{{demospace|}}}&lt;br /&gt;
| style      = {{#if:{{{style|}}} |{{{style}}} }}&lt;br /&gt;
| subst      = &amp;lt;includeonly&amp;gt;{{subst:substcheck}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
| type       = content&lt;br /&gt;
| image      = {{#if:{{{image|}}}| [[File:{{{image}}}|{{{imagesize|40px}}}|Warning]] }}&lt;br /&gt;
| small      = {{{small|}}}&lt;br /&gt;
| smallimage = {{#if:{{{image|}}}| [[File:{{{image}}}|30px|Warning]]}}&lt;br /&gt;
| imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }}&lt;br /&gt;
| textstyle  = {{{textstyle|text-align: {{#if:{{{center|}}}|center|{{{align|left}}}}};}}}&lt;br /&gt;
| text       = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |&amp;lt;div style=&amp;quot;{{{headstyle|text-align: {{#if:{{{center|}}}|center|left}};}}}&amp;quot;&amp;gt;&#039;&#039;&#039;{{{header|{{{heading|{{{title|}}}}}}}}}&#039;&#039;&#039;&amp;lt;/div&amp;gt;}}&amp;lt;!--&lt;br /&gt;
            --&amp;gt;{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage; interwikis go to Wikidata. --&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Em_dash&amp;diff=1565</id>
		<title>Template:Em dash</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Em_dash&amp;diff=1565"/>
		<updated>2025-02-21T04:43:15Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;—&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Cl&amp;diff=1563</id>
		<title>Template:Cl</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Cl&amp;diff=1563"/>
		<updated>2025-02-21T04:43:14Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Category link]]&lt;br /&gt;
{{R from move}}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Category_link&amp;diff=1561</id>
		<title>Template:Category link</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Category_link&amp;diff=1561"/>
		<updated>2025-02-21T04:43:14Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category link/core|1={{PAGENAME:{{{1}}}}}|2={{{2|Category:{{PAGENAME:{{{1}}}}}}}}|count={{{count|no}}}|page_count={{PAGESINCAT:{{PAGENAME:{{{1}}}}}|{{UC:{{{count_type|ALL}}}}}|R}}|backlog={{{backlog|{{formatnum:{{NUMBEROFPAGES}}|R}}}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Wikidata_entity_link&amp;diff=1559</id>
		<title>Template:Wikidata entity link</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Wikidata_entity_link&amp;diff=1559"/>
		<updated>2025-02-21T04:43:14Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#if:{{{1|}}}&lt;br /&gt;
| {{#switch:{{padleft:|1|{{uc:{{{1}}}}}}}&lt;br /&gt;
  | Q | P = [[d:Special:EntityPage/{{uc:{{{1}}}}}|{{#invoke:wd|label|{{uc:{{{1}}}}}}} &amp;lt;small&amp;gt;({{uc:{{{1}}}}})&amp;lt;/small&amp;gt;]]&lt;br /&gt;
  | #default = [[d:Special:EntityPage/Q{{uc:{{{1}}}}}|{{#invoke:wd|label|Q{{uc:{{{1}}}}}}} &amp;lt;small&amp;gt;(Q{{uc:{{{1|}}}}})&amp;lt;/small&amp;gt;]]&lt;br /&gt;
  }}&lt;br /&gt;
| {{#if:{{#invoke:wd|label|raw}}&lt;br /&gt;
  | [[d:Special:EntityPage/{{#invoke:wd|label|raw}}|{{#invoke:wd|label}} &amp;lt;small&amp;gt;({{#invoke:wd|label|raw}})&amp;lt;/small&amp;gt;]]&lt;br /&gt;
  | &amp;lt;small&amp;gt;(no entity)&amp;lt;/small&amp;gt;&lt;br /&gt;
  }}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Q&amp;diff=1557</id>
		<title>Template:Q</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Q&amp;diff=1557"/>
		<updated>2025-02-21T04:43:13Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Wikidata entity link]]&lt;br /&gt;
[[Category:Wikidata templates]]&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from template shortcut}}&lt;br /&gt;
{{R from move}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Wd/i18n&amp;diff=1555</id>
		<title>Module:Wd/i18n</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Wd/i18n&amp;diff=1555"/>
		<updated>2025-02-21T04:43:13Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- The values and functions in this submodule should be localized per wiki.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.init(aliasesP)&lt;br /&gt;
	p = {&lt;br /&gt;
		[&amp;quot;version&amp;quot;] = &amp;quot;7&amp;quot;,  -- increment this each time the below parameters are changed to avoid reference conflict errors&lt;br /&gt;
		[&amp;quot;errors&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;unknown-data-type&amp;quot;]          = &amp;quot;Unknown or unsupported datatype &#039;%s&#039;.&amp;quot;,&lt;br /&gt;
			[&amp;quot;missing-required-parameter&amp;quot;] = &amp;quot;No required parameters defined, needing at least one&amp;quot;,&lt;br /&gt;
			[&amp;quot;extra-required-parameter&amp;quot;]   = &amp;quot;Parameter &#039;%s&#039; must be defined as optional&amp;quot;,&lt;br /&gt;
			[&amp;quot;no-function-specified&amp;quot;]      = &amp;quot;You must specify a function to call&amp;quot;,  -- equal to the standard module error message&lt;br /&gt;
			[&amp;quot;main-called-twice&amp;quot;]          = &#039;The function &amp;quot;main&amp;quot; cannot be called twice&#039;,&lt;br /&gt;
			[&amp;quot;no-such-function&amp;quot;]           = &#039;The function &amp;quot;%s&amp;quot; does not exist&#039;,  -- equal to the standard module error message&lt;br /&gt;
            [&amp;quot;no-such-reference-template&amp;quot;] = &#039;Error: template &amp;quot;%s&amp;quot;, which is set in %s as the output template for the citation-output type &amp;quot;%s&amp;quot;, does not exist&#039;,&lt;br /&gt;
            -- Parts of the error message signalling a malformed reference.&lt;br /&gt;
            [&amp;quot;malformed-reference-header&amp;quot;] = &amp;quot;&amp;lt;span style=\&amp;quot;color:#dd3333\&amp;quot;&amp;gt;\nError: Unable to display the reference from Wikidata properly. Technical details:\n&amp;quot;,&lt;br /&gt;
            [&amp;quot;malformed-reference-footer&amp;quot;] = &amp;quot;See [[Module:wd/doc#References|the documentation]] for further details.\n&amp;lt;/span&amp;gt;\n[[Category:Module:Wd reference errors]]&amp;quot;,&lt;br /&gt;
            [&amp;quot;template-failure-reason&amp;quot;]    = &amp;quot;* Reason for the failure of {{tl|%s}}: %s\n&amp;quot;,&lt;br /&gt;
            [&amp;quot;missing-mandatory-param&amp;quot;]    = &#039;The output template call would miss the mandatory parameter &amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt;.&#039;,&lt;br /&gt;
            [&amp;quot;unknown-property-in-ref&amp;quot;]    = &#039;The Wikidata reference contains the property {{property|%s}}, which is not assigned to any parameter of this template.&#039;&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;info&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;edit-on-wikidata&amp;quot;] = &amp;quot;Edit this on Wikidata&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;numeric&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;decimal-mark&amp;quot;] = &amp;quot;.&amp;quot;,&lt;br /&gt;
			[&amp;quot;delimiter&amp;quot;]    = &amp;quot;,&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;datetime&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;prefixes&amp;quot;] = {&lt;br /&gt;
				[&amp;quot;decade-period&amp;quot;] = &amp;quot;&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			[&amp;quot;suffixes&amp;quot;] = {&lt;br /&gt;
				[&amp;quot;decade-period&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
				[&amp;quot;millennium&amp;quot;]    = &amp;quot; millennium&amp;quot;,&lt;br /&gt;
				[&amp;quot;century&amp;quot;]       = &amp;quot; century&amp;quot;,&lt;br /&gt;
				[&amp;quot;million-years&amp;quot;] = &amp;quot; million years&amp;quot;,&lt;br /&gt;
				[&amp;quot;billion-years&amp;quot;] = &amp;quot; billion years&amp;quot;,&lt;br /&gt;
				[&amp;quot;year&amp;quot;]          = &amp;quot; year&amp;quot;,&lt;br /&gt;
				[&amp;quot;years&amp;quot;]         = &amp;quot; years&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			[&amp;quot;julian-calendar&amp;quot;] = &amp;quot;Julian calendar&amp;quot;,  -- linked page title&lt;br /&gt;
			[&amp;quot;julian&amp;quot;]          = &amp;quot;Julian&amp;quot;,&lt;br /&gt;
			[&amp;quot;BCE&amp;quot;]             = &amp;quot;BCE&amp;quot;,&lt;br /&gt;
			[&amp;quot;CE&amp;quot;]              = &amp;quot;CE&amp;quot;,&lt;br /&gt;
			[&amp;quot;common-era&amp;quot;]      = &amp;quot;Common Era&amp;quot;  -- linked page title&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;coord&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;latitude-north&amp;quot;] = &amp;quot;N&amp;quot;,&lt;br /&gt;
			[&amp;quot;latitude-south&amp;quot;] = &amp;quot;S&amp;quot;,&lt;br /&gt;
			[&amp;quot;longitude-east&amp;quot;] = &amp;quot;E&amp;quot;,&lt;br /&gt;
			[&amp;quot;longitude-west&amp;quot;] = &amp;quot;W&amp;quot;,&lt;br /&gt;
			[&amp;quot;degrees&amp;quot;]        = &amp;quot;°&amp;quot;,&lt;br /&gt;
			[&amp;quot;minutes&amp;quot;]        = &amp;quot;&#039;&amp;quot;,&lt;br /&gt;
			[&amp;quot;seconds&amp;quot;]        = &#039;&amp;quot;&#039;,&lt;br /&gt;
			[&amp;quot;separator&amp;quot;]      = &amp;quot;, &amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;values&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;unknown&amp;quot;] = &amp;quot;unknown&amp;quot;,&lt;br /&gt;
			[&amp;quot;none&amp;quot;]    = &amp;quot;none&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		[&amp;quot;cite&amp;quot;] = {&lt;br /&gt;
			[&amp;quot;output-types&amp;quot;] = {&amp;quot;web&amp;quot;, &amp;quot;q&amp;quot;},  -- In this order, the output types will be tried&lt;br /&gt;
			[&amp;quot;param-mapping&amp;quot;] = {&lt;br /&gt;
				[&amp;quot;web&amp;quot;] = {&lt;br /&gt;
					-- &amp;lt;= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources&lt;br /&gt;
					-- =&amp;gt; right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. &amp;quot;&amp;quot;)&lt;br /&gt;
					[aliasesP.statedIn]                = &amp;quot;website&amp;quot;,&lt;br /&gt;
					[aliasesP.referenceURL]            = &amp;quot;url&amp;quot;,&lt;br /&gt;
					[aliasesP.publicationDate]         = &amp;quot;date&amp;quot;,&lt;br /&gt;
					[aliasesP.retrieved]               = &amp;quot;access-date&amp;quot;,&lt;br /&gt;
					[aliasesP.title]                   = &amp;quot;title&amp;quot;,&lt;br /&gt;
					[aliasesP.archiveURL]              = &amp;quot;archive-url&amp;quot;,&lt;br /&gt;
					[aliasesP.archiveDate]             = &amp;quot;archive-date&amp;quot;,&lt;br /&gt;
					[aliasesP.language]                = &amp;quot;language&amp;quot;,&lt;br /&gt;
					[aliasesP.author]                  = &amp;quot;author&amp;quot;,&lt;br /&gt;
					[aliasesP.authorNameString]        = &amp;quot;author&amp;quot;,&lt;br /&gt;
					[aliasesP.publisher]               = &amp;quot;publisher&amp;quot;,&lt;br /&gt;
					[aliasesP.quote]                   = &amp;quot;quote&amp;quot;,&lt;br /&gt;
					[aliasesP.pages]                   = &amp;quot;pages&amp;quot;,  -- extra option&lt;br /&gt;
					[aliasesP.publishedIn]             = &amp;quot;website&amp;quot;,&lt;br /&gt;
					[aliasesP.sectionVerseOrParagraph] = &amp;quot;at&amp;quot;&lt;br /&gt;
				},&lt;br /&gt;
				[&amp;quot;q&amp;quot;] = {&lt;br /&gt;
					-- &amp;lt;= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources&lt;br /&gt;
					-- =&amp;gt; right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. &amp;quot;&amp;quot;)&lt;br /&gt;
					[aliasesP.statedIn]                = &amp;quot;1&amp;quot;,&lt;br /&gt;
					[aliasesP.pages]                   = &amp;quot;pages&amp;quot;,&lt;br /&gt;
					[aliasesP.column]                  = &amp;quot;at&amp;quot;,&lt;br /&gt;
					[aliasesP.chapter]                 = &amp;quot;chapter&amp;quot;,&lt;br /&gt;
					[aliasesP.sectionVerseOrParagraph] = &amp;quot;section&amp;quot;,&lt;br /&gt;
					[&amp;quot;external-id&amp;quot;]                    = &amp;quot;id&amp;quot;,  -- used for any type of database property ID&lt;br /&gt;
					[aliasesP.title]                   = &amp;quot;title&amp;quot;,&lt;br /&gt;
					[aliasesP.publicationDate]         = &amp;quot;date&amp;quot;,&lt;br /&gt;
					[aliasesP.retrieved]               = &amp;quot;access-date&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			[&amp;quot;config&amp;quot;] = {&lt;br /&gt;
				-- supported fields:&lt;br /&gt;
				--     - template: name of the template used for output&lt;br /&gt;
				--     - numbered-params: citation params accepting an arbitrary number of values by numbering the params (e.g. author1, author2)&lt;br /&gt;
				--     - raw-value-params: params taking a raw value (which means the property is rendered with getValue with raw=true)&lt;br /&gt;
				--     - mandatory-params: params that are required be in the template call (after potentially appending numbers to params listed in numbered-params)&lt;br /&gt;
				-- Leaving out the &amp;quot;template&amp;quot; field causes the output type to be ignored.&lt;br /&gt;
				[&amp;quot;web&amp;quot;] = {&lt;br /&gt;
					[&amp;quot;template&amp;quot;] = &amp;quot;Cite web&amp;quot;,&lt;br /&gt;
					[&amp;quot;numbered-params&amp;quot;] = {&amp;quot;author&amp;quot;},&lt;br /&gt;
					[&amp;quot;mandatory-params&amp;quot;] = {&amp;quot;url&amp;quot;}&lt;br /&gt;
				},&lt;br /&gt;
				[&amp;quot;q&amp;quot;] = {&lt;br /&gt;
					[&amp;quot;template&amp;quot;] = &amp;quot;Cite Q&amp;quot;,&lt;br /&gt;
					[&amp;quot;raw-value-params&amp;quot;] = {&amp;quot;1&amp;quot;},  -- the first, unnamed parameter of CiteQ takes a QID, not the name of the item cited&lt;br /&gt;
					[&amp;quot;mandatory-params&amp;quot;] = {&amp;quot;1&amp;quot;}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	p.getOrdinalSuffix = function(num)&lt;br /&gt;
		if tostring(num):sub(-2,-2) == &#039;1&#039; then&lt;br /&gt;
			return &amp;quot;th&amp;quot;  -- 10th, 11th, 12th, 13th, ... 19th&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		num = tostring(num):sub(-1)&lt;br /&gt;
&lt;br /&gt;
		if num == &#039;1&#039; then&lt;br /&gt;
			return &amp;quot;st&amp;quot;&lt;br /&gt;
		elseif num == &#039;2&#039; then&lt;br /&gt;
			return &amp;quot;nd&amp;quot;&lt;br /&gt;
		elseif num == &#039;3&#039; then&lt;br /&gt;
			return &amp;quot;rd&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;th&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	p.addDelimiters = function(n)&lt;br /&gt;
		local left, num, right = string.match(n, &amp;quot;^([^%d]*%d)(%d*)(.-)$&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		if left and num and right then&lt;br /&gt;
			return left .. (num:reverse():gsub(&amp;quot;(%d%d%d)&amp;quot;, &amp;quot;%1&amp;quot; .. p[&#039;numeric&#039;][&#039;delimiter&#039;]):reverse()) .. right&lt;br /&gt;
		else&lt;br /&gt;
			return n&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Wd&amp;diff=1553</id>
		<title>Module:Wd</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Wd&amp;diff=1553"/>
		<updated>2025-02-21T04:43:13Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]].&lt;br /&gt;
&lt;br /&gt;
require(&amp;quot;strict&amp;quot;)&lt;br /&gt;
local p = {}&lt;br /&gt;
local module_arg = ...&lt;br /&gt;
local i18n&lt;br /&gt;
local i18nPath&lt;br /&gt;
&lt;br /&gt;
local function loadI18n(aliasesP, frame)&lt;br /&gt;
	local title&lt;br /&gt;
&lt;br /&gt;
	if frame then&lt;br /&gt;
		-- current module invoked by page/template, get its title from frame&lt;br /&gt;
		title = frame:getTitle()&lt;br /&gt;
	else&lt;br /&gt;
		-- current module included by other module, get its title from ...&lt;br /&gt;
		title = module_arg&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not i18n then&lt;br /&gt;
		i18nPath = title .. &amp;quot;/i18n&amp;quot;&lt;br /&gt;
		i18n = require(i18nPath).init(aliasesP)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.claimCommands = {&lt;br /&gt;
	property   = &amp;quot;property&amp;quot;,&lt;br /&gt;
	properties = &amp;quot;properties&amp;quot;,&lt;br /&gt;
	qualifier  = &amp;quot;qualifier&amp;quot;,&lt;br /&gt;
	qualifiers = &amp;quot;qualifiers&amp;quot;,&lt;br /&gt;
	reference  = &amp;quot;reference&amp;quot;,&lt;br /&gt;
	references = &amp;quot;references&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.generalCommands = {&lt;br /&gt;
	label       = &amp;quot;label&amp;quot;,&lt;br /&gt;
	title       = &amp;quot;title&amp;quot;,&lt;br /&gt;
	description = &amp;quot;description&amp;quot;,&lt;br /&gt;
	alias       = &amp;quot;alias&amp;quot;,&lt;br /&gt;
	aliases     = &amp;quot;aliases&amp;quot;,&lt;br /&gt;
	badge       = &amp;quot;badge&amp;quot;,&lt;br /&gt;
	badges      = &amp;quot;badges&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.flags = {&lt;br /&gt;
	linked        = &amp;quot;linked&amp;quot;,&lt;br /&gt;
	short         = &amp;quot;short&amp;quot;,&lt;br /&gt;
	raw           = &amp;quot;raw&amp;quot;,&lt;br /&gt;
	multilanguage = &amp;quot;multilanguage&amp;quot;,&lt;br /&gt;
	unit          = &amp;quot;unit&amp;quot;,&lt;br /&gt;
	-------------&lt;br /&gt;
	preferred     = &amp;quot;preferred&amp;quot;,&lt;br /&gt;
	normal        = &amp;quot;normal&amp;quot;,&lt;br /&gt;
	deprecated    = &amp;quot;deprecated&amp;quot;,&lt;br /&gt;
	best          = &amp;quot;best&amp;quot;,&lt;br /&gt;
	future        = &amp;quot;future&amp;quot;,&lt;br /&gt;
	current       = &amp;quot;current&amp;quot;,&lt;br /&gt;
	former        = &amp;quot;former&amp;quot;,&lt;br /&gt;
	edit          = &amp;quot;edit&amp;quot;,&lt;br /&gt;
	editAtEnd     = &amp;quot;edit@end&amp;quot;,&lt;br /&gt;
	mdy           = &amp;quot;mdy&amp;quot;,&lt;br /&gt;
	single        = &amp;quot;single&amp;quot;,&lt;br /&gt;
	sourced       = &amp;quot;sourced&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.args = {&lt;br /&gt;
	eid  = &amp;quot;eid&amp;quot;,&lt;br /&gt;
	page = &amp;quot;page&amp;quot;,&lt;br /&gt;
	date = &amp;quot;date&amp;quot;,&lt;br /&gt;
	globalSiteId = &amp;quot;globalSiteId&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local aliasesP = {&lt;br /&gt;
	coord                   = &amp;quot;P625&amp;quot;,&lt;br /&gt;
	-----------------------&lt;br /&gt;
	image                   = &amp;quot;P18&amp;quot;,&lt;br /&gt;
	author                  = &amp;quot;P50&amp;quot;,&lt;br /&gt;
	authorNameString        = &amp;quot;P2093&amp;quot;,&lt;br /&gt;
	publisher               = &amp;quot;P123&amp;quot;,&lt;br /&gt;
	importedFrom            = &amp;quot;P143&amp;quot;,&lt;br /&gt;
	wikimediaImportURL      = &amp;quot;P4656&amp;quot;,&lt;br /&gt;
	statedIn                = &amp;quot;P248&amp;quot;,&lt;br /&gt;
	pages                   = &amp;quot;P304&amp;quot;,&lt;br /&gt;
	language                = &amp;quot;P407&amp;quot;,&lt;br /&gt;
	hasPart                 = &amp;quot;P527&amp;quot;,&lt;br /&gt;
	publicationDate         = &amp;quot;P577&amp;quot;,&lt;br /&gt;
	startTime               = &amp;quot;P580&amp;quot;,&lt;br /&gt;
	endTime                 = &amp;quot;P582&amp;quot;,&lt;br /&gt;
	chapter                 = &amp;quot;P792&amp;quot;,&lt;br /&gt;
	retrieved               = &amp;quot;P813&amp;quot;,&lt;br /&gt;
	referenceURL            = &amp;quot;P854&amp;quot;,&lt;br /&gt;
	sectionVerseOrParagraph = &amp;quot;P958&amp;quot;,&lt;br /&gt;
	archiveURL              = &amp;quot;P1065&amp;quot;,&lt;br /&gt;
	title                   = &amp;quot;P1476&amp;quot;,&lt;br /&gt;
	formatterURL            = &amp;quot;P1630&amp;quot;,&lt;br /&gt;
	quote                   = &amp;quot;P1683&amp;quot;,&lt;br /&gt;
	shortName               = &amp;quot;P1813&amp;quot;,&lt;br /&gt;
	definingFormula         = &amp;quot;P2534&amp;quot;,&lt;br /&gt;
	archiveDate             = &amp;quot;P2960&amp;quot;,&lt;br /&gt;
	inferredFrom            = &amp;quot;P3452&amp;quot;,&lt;br /&gt;
	typeOfReference         = &amp;quot;P3865&amp;quot;,&lt;br /&gt;
	column                  = &amp;quot;P3903&amp;quot;,&lt;br /&gt;
	subjectNamedAs          = &amp;quot;P1810&amp;quot;,&lt;br /&gt;
	wikidataProperty        = &amp;quot;P1687&amp;quot;,&lt;br /&gt;
	publishedIn             = &amp;quot;P1433&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local aliasesQ = {&lt;br /&gt;
	percentage              = &amp;quot;Q11229&amp;quot;,&lt;br /&gt;
	prolepticJulianCalendar = &amp;quot;Q1985786&amp;quot;,&lt;br /&gt;
	citeWeb                 = &amp;quot;Q5637226&amp;quot;,&lt;br /&gt;
	citeQ                   = &amp;quot;Q22321052&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local parameters = {&lt;br /&gt;
	property  = &amp;quot;%p&amp;quot;,&lt;br /&gt;
	qualifier = &amp;quot;%q&amp;quot;,&lt;br /&gt;
	reference = &amp;quot;%r&amp;quot;,&lt;br /&gt;
	alias     = &amp;quot;%a&amp;quot;,&lt;br /&gt;
	badge     = &amp;quot;%b&amp;quot;,&lt;br /&gt;
	separator = &amp;quot;%s&amp;quot;,&lt;br /&gt;
	general   = &amp;quot;%x&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local formats = {&lt;br /&gt;
	property              = &amp;quot;%p[%s][%r]&amp;quot;,&lt;br /&gt;
	qualifier             = &amp;quot;%q[%s][%r]&amp;quot;,&lt;br /&gt;
	reference             = &amp;quot;%r&amp;quot;,&lt;br /&gt;
	propertyWithQualifier = &amp;quot;%p[ &amp;lt;span style=\&amp;quot;font-size:85\\%\&amp;quot;&amp;gt;(%q)&amp;lt;/span&amp;gt;][%s][%r]&amp;quot;,&lt;br /&gt;
	alias                 = &amp;quot;%a[%s]&amp;quot;,&lt;br /&gt;
	badge                 = &amp;quot;%b[%s]&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local hookNames = {              -- {level_1, level_2}&lt;br /&gt;
	[parameters.property]         = {&amp;quot;getProperty&amp;quot;},&lt;br /&gt;
	[parameters.reference]        = {&amp;quot;getReferences&amp;quot;, &amp;quot;getReference&amp;quot;},&lt;br /&gt;
	[parameters.qualifier]        = {&amp;quot;getAllQualifiers&amp;quot;},&lt;br /&gt;
	[parameters.qualifier..&amp;quot;\\d&amp;quot;] = {&amp;quot;getQualifiers&amp;quot;, &amp;quot;getQualifier&amp;quot;},&lt;br /&gt;
	[parameters.alias]            = {&amp;quot;getAlias&amp;quot;},&lt;br /&gt;
	[parameters.badge]            = {&amp;quot;getBadge&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- default value objects, should NOT be mutated but instead copied&lt;br /&gt;
local defaultSeparators = {&lt;br /&gt;
	[&amp;quot;sep&amp;quot;]      = {&amp;quot; &amp;quot;},&lt;br /&gt;
	[&amp;quot;sep%s&amp;quot;]    = {&amp;quot;,&amp;quot;},&lt;br /&gt;
	[&amp;quot;sep%q&amp;quot;]    = {&amp;quot;; &amp;quot;},&lt;br /&gt;
	[&amp;quot;sep%q\\d&amp;quot;] = {&amp;quot;, &amp;quot;},&lt;br /&gt;
	[&amp;quot;sep%r&amp;quot;]    = nil,  -- none&lt;br /&gt;
	[&amp;quot;punc&amp;quot;]     = nil   -- none&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local rankTable = {&lt;br /&gt;
	[&amp;quot;preferred&amp;quot;]  = 1,&lt;br /&gt;
	[&amp;quot;normal&amp;quot;]     = 2,&lt;br /&gt;
	[&amp;quot;deprecated&amp;quot;] = 3&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function replaceAlias(id)&lt;br /&gt;
	if aliasesP[id] then&lt;br /&gt;
		id = aliasesP[id]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function errorText(code, ...)&lt;br /&gt;
	local text = i18n[&amp;quot;errors&amp;quot;][code]&lt;br /&gt;
	if arg then text = mw.ustring.format(text, unpack(arg)) end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function throwError(errorMessage, ...)&lt;br /&gt;
	error(errorText(errorMessage, unpack(arg)))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function replaceDecimalMark(num)&lt;br /&gt;
	return mw.ustring.gsub(num, &amp;quot;[.]&amp;quot;, i18n[&#039;numeric&#039;][&#039;decimal-mark&#039;], 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function padZeros(num, numDigits)&lt;br /&gt;
	local numZeros&lt;br /&gt;
	local negative = false&lt;br /&gt;
&lt;br /&gt;
	if num &amp;lt; 0 then&lt;br /&gt;
		negative = true&lt;br /&gt;
		num = num * -1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	num = tostring(num)&lt;br /&gt;
	numZeros = numDigits - num:len()&lt;br /&gt;
&lt;br /&gt;
	for _ = 1, numZeros do&lt;br /&gt;
		num = &amp;quot;0&amp;quot;..num&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if negative then&lt;br /&gt;
		num = &amp;quot;-&amp;quot;..num&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return num&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function replaceSpecialChar(chr)&lt;br /&gt;
	if chr == &#039;_&#039; then&lt;br /&gt;
		-- replace underscores with spaces&lt;br /&gt;
		return &#039; &#039;&lt;br /&gt;
	else&lt;br /&gt;
		return chr&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function replaceSpecialChars(str)&lt;br /&gt;
	local chr&lt;br /&gt;
	local esc = false&lt;br /&gt;
	local strOut = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #str do&lt;br /&gt;
		chr = str:sub(i,i)&lt;br /&gt;
&lt;br /&gt;
		if not esc then&lt;br /&gt;
			if chr == &#039;\\&#039; then&lt;br /&gt;
				esc = true&lt;br /&gt;
			else&lt;br /&gt;
				strOut = strOut .. replaceSpecialChar(chr)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			strOut = strOut .. chr&lt;br /&gt;
			esc = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return strOut&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildWikilink(target, label)&lt;br /&gt;
	if not label or target == label then&lt;br /&gt;
		return &amp;quot;[[&amp;quot; .. target .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;[[&amp;quot; .. target .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- used to make frame.args mutable, to replace #frame.args (which is always 0)&lt;br /&gt;
-- with the actual amount and to simply copy tables&lt;br /&gt;
local function copyTable(tIn)&lt;br /&gt;
	if not tIn then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tOut = {}&lt;br /&gt;
&lt;br /&gt;
	for i, v in pairs(tIn) do&lt;br /&gt;
		tOut[i] = v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tOut&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- used to merge output arrays together;&lt;br /&gt;
-- note that it currently mutates the first input array&lt;br /&gt;
local function mergeArrays(a1, a2)&lt;br /&gt;
	for i = 1, #a2 do&lt;br /&gt;
		a1[#a1 + 1] = a2[i]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return a1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function split(str, del)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local i, j = str:find(del)&lt;br /&gt;
&lt;br /&gt;
	if i and j then&lt;br /&gt;
		out[1] = str:sub(1, i - 1)&lt;br /&gt;
		out[2] = str:sub(j + 1)&lt;br /&gt;
	else&lt;br /&gt;
		out[1] = str&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseWikidataURL(url)&lt;br /&gt;
	local id&lt;br /&gt;
&lt;br /&gt;
	if url:match(&#039;^http[s]?://&#039;) then&lt;br /&gt;
		id = split(url, &amp;quot;Q&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		if id[2] then&lt;br /&gt;
			return &amp;quot;Q&amp;quot; .. id[2]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseDate(dateStr, precision)&lt;br /&gt;
	precision = precision or &amp;quot;d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local i, j, index, ptr&lt;br /&gt;
	local parts = {nil, nil, nil}&lt;br /&gt;
&lt;br /&gt;
	if dateStr == nil then&lt;br /&gt;
		return parts[1], parts[2], parts[3]  -- year, month, day&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- &#039;T&#039; for snak values, &#039;/&#039; for outputs with &#039;/Julian&#039; attached&lt;br /&gt;
	i, j = dateStr:find(&amp;quot;[T/]&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if i then&lt;br /&gt;
		dateStr = dateStr:sub(1, i-1)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local from = 1&lt;br /&gt;
&lt;br /&gt;
	if dateStr:sub(1,1) == &amp;quot;-&amp;quot; then&lt;br /&gt;
		-- this is a negative number, look further ahead&lt;br /&gt;
		from = 2&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	index = 1&lt;br /&gt;
	ptr = 1&lt;br /&gt;
&lt;br /&gt;
	i, j = dateStr:find(&amp;quot;-&amp;quot;, from)&lt;br /&gt;
&lt;br /&gt;
	if i then&lt;br /&gt;
		-- year&lt;br /&gt;
		parts[index] = tonumber(dateStr:sub(ptr, i-1), 10)  -- explicitly give base 10 to prevent error&lt;br /&gt;
&lt;br /&gt;
		if parts[index] == -0 then&lt;br /&gt;
			parts[index] = tonumber(&amp;quot;0&amp;quot;)  -- for some reason, &#039;parts[index] = 0&#039; may actually store &#039;-0&#039;, so parse from string instead&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if precision == &amp;quot;y&amp;quot; then&lt;br /&gt;
			-- we&#039;re done&lt;br /&gt;
			return parts[1], parts[2], parts[3]  -- year, month, day&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		index = index + 1&lt;br /&gt;
		ptr = i + 1&lt;br /&gt;
&lt;br /&gt;
		i, j = dateStr:find(&amp;quot;-&amp;quot;, ptr)&lt;br /&gt;
&lt;br /&gt;
		if i then&lt;br /&gt;
			-- month&lt;br /&gt;
			parts[index] = tonumber(dateStr:sub(ptr, i-1), 10)&lt;br /&gt;
&lt;br /&gt;
			if precision == &amp;quot;m&amp;quot; then&lt;br /&gt;
				-- we&#039;re done&lt;br /&gt;
				return parts[1], parts[2], parts[3]  -- year, month, day&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			index = index + 1&lt;br /&gt;
			ptr = i + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if dateStr:sub(ptr) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		-- day if we have month, month if we have year, or year&lt;br /&gt;
		parts[index] = tonumber(dateStr:sub(ptr), 10)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return parts[1], parts[2], parts[3]  -- year, month, day&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function datePrecedesDate(aY, aM, aD, bY, bM, bD)&lt;br /&gt;
	if aY == nil or bY == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	aM = aM or 1&lt;br /&gt;
	aD = aD or 1&lt;br /&gt;
	bM = bM or 1&lt;br /&gt;
	bD = bD or 1&lt;br /&gt;
&lt;br /&gt;
	if aY &amp;lt; bY then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if aY &amp;gt; bY then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if aM &amp;lt; bM then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if aM &amp;gt; bM then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if aD &amp;lt; bD then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getHookName(param, index)&lt;br /&gt;
	if hookNames[param] then&lt;br /&gt;
		return hookNames[param][index]&lt;br /&gt;
	elseif param:len() &amp;gt; 2 then&lt;br /&gt;
		return hookNames[param:sub(1, 2)..&amp;quot;\\d&amp;quot;][index]&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function alwaysTrue()&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- The following function parses a format string.&lt;br /&gt;
--&lt;br /&gt;
-- The example below shows how a parsed string is structured in memory.&lt;br /&gt;
-- Variables other than &#039;str&#039; and &#039;child&#039; are left out for clarity&#039;s sake.&lt;br /&gt;
--&lt;br /&gt;
-- Example:&lt;br /&gt;
-- &amp;quot;A %p B [%s[%q1]] C [%r] D&amp;quot;&lt;br /&gt;
--&lt;br /&gt;
-- Structure:&lt;br /&gt;
-- [&lt;br /&gt;
--   {&lt;br /&gt;
--     str = &amp;quot;A &amp;quot;&lt;br /&gt;
--   },&lt;br /&gt;
--   {&lt;br /&gt;
--     str = &amp;quot;%p&amp;quot;&lt;br /&gt;
--   },&lt;br /&gt;
--   {&lt;br /&gt;
--     str = &amp;quot; B &amp;quot;,&lt;br /&gt;
--     child =&lt;br /&gt;
--     [&lt;br /&gt;
--       {&lt;br /&gt;
--         str = &amp;quot;%s&amp;quot;,&lt;br /&gt;
--         child =&lt;br /&gt;
--         [&lt;br /&gt;
--           {&lt;br /&gt;
--             str = &amp;quot;%q1&amp;quot;&lt;br /&gt;
--           }&lt;br /&gt;
--         ]&lt;br /&gt;
--       }&lt;br /&gt;
--     ]&lt;br /&gt;
--   },&lt;br /&gt;
--   {&lt;br /&gt;
--     str = &amp;quot; C &amp;quot;,&lt;br /&gt;
--     child =&lt;br /&gt;
--     [&lt;br /&gt;
--       {&lt;br /&gt;
--         str = &amp;quot;%r&amp;quot;&lt;br /&gt;
--       }&lt;br /&gt;
--     ]&lt;br /&gt;
--   },&lt;br /&gt;
--   {&lt;br /&gt;
--     str = &amp;quot; D&amp;quot;&lt;br /&gt;
--   }&lt;br /&gt;
-- ]&lt;br /&gt;
--&lt;br /&gt;
local function parseFormat(str)&lt;br /&gt;
	local chr, esc, param, root, cur, prev, new&lt;br /&gt;
	local params = {}&lt;br /&gt;
&lt;br /&gt;
	local function newObject(array)&lt;br /&gt;
		local obj = {}  -- new object&lt;br /&gt;
		obj.str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		array[#array + 1] = obj  -- array{object}&lt;br /&gt;
		obj.parent = array&lt;br /&gt;
&lt;br /&gt;
		return obj&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function endParam()&lt;br /&gt;
		if param &amp;gt; 0 then&lt;br /&gt;
			if cur.str ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				cur.str = &amp;quot;%&amp;quot;..cur.str&lt;br /&gt;
				cur.param = true&lt;br /&gt;
				params[cur.str] = true&lt;br /&gt;
				cur.parent.req[cur.str] = true&lt;br /&gt;
				prev = cur&lt;br /&gt;
				cur = newObject(cur.parent)&lt;br /&gt;
			end&lt;br /&gt;
			param = 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	root = {}  -- array&lt;br /&gt;
	root.req = {}&lt;br /&gt;
	cur = newObject(root)&lt;br /&gt;
	prev = nil&lt;br /&gt;
&lt;br /&gt;
	esc = false&lt;br /&gt;
	param = 0&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #str do&lt;br /&gt;
		chr = str:sub(i,i)&lt;br /&gt;
&lt;br /&gt;
		if not esc then&lt;br /&gt;
			if chr == &#039;\\&#039; then&lt;br /&gt;
				endParam()&lt;br /&gt;
				esc = true&lt;br /&gt;
			elseif chr == &#039;%&#039; then&lt;br /&gt;
				endParam()&lt;br /&gt;
				if cur.str ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					cur = newObject(cur.parent)&lt;br /&gt;
				end&lt;br /&gt;
				param = 2&lt;br /&gt;
			elseif chr == &#039;[&#039; then&lt;br /&gt;
				endParam()&lt;br /&gt;
				if prev and cur.str == &amp;quot;&amp;quot; then&lt;br /&gt;
					table.remove(cur.parent)&lt;br /&gt;
					cur = prev&lt;br /&gt;
				end&lt;br /&gt;
				cur.child = {}  -- new array&lt;br /&gt;
				cur.child.req = {}&lt;br /&gt;
				cur.child.parent = cur&lt;br /&gt;
				cur = newObject(cur.child)&lt;br /&gt;
			elseif chr == &#039;]&#039; then&lt;br /&gt;
				endParam()&lt;br /&gt;
				if cur.parent.parent then&lt;br /&gt;
					new = newObject(cur.parent.parent.parent)&lt;br /&gt;
					if cur.str == &amp;quot;&amp;quot; then&lt;br /&gt;
						table.remove(cur.parent)&lt;br /&gt;
					end&lt;br /&gt;
					cur = new&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				if param &amp;gt; 1 then&lt;br /&gt;
					param = param - 1&lt;br /&gt;
				elseif param == 1 then&lt;br /&gt;
					if not chr:match(&#039;%d&#039;) then&lt;br /&gt;
						endParam()&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				cur.str = cur.str .. replaceSpecialChar(chr)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			cur.str = cur.str .. chr&lt;br /&gt;
			esc = false&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		prev = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	endParam()&lt;br /&gt;
&lt;br /&gt;
	-- make sure that at least one required parameter has been defined&lt;br /&gt;
	if not next(root.req) then&lt;br /&gt;
		throwError(&amp;quot;missing-required-parameter&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- make sure that the separator parameter &amp;quot;%s&amp;quot; is not amongst the required parameters&lt;br /&gt;
	if root.req[parameters.separator] then&lt;br /&gt;
		throwError(&amp;quot;extra-required-parameter&amp;quot;, parameters.separator)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return root, params&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function sortOnRank(claims)&lt;br /&gt;
	local rankPos&lt;br /&gt;
	local ranks = {{}, {}, {}, {}}  -- preferred, normal, deprecated, (default)&lt;br /&gt;
	local sorted = {}&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs(claims) do&lt;br /&gt;
		rankPos = rankTable[v.rank] or 4&lt;br /&gt;
		ranks[rankPos][#ranks[rankPos] + 1] = v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	sorted = ranks[1]&lt;br /&gt;
	sorted = mergeArrays(sorted, ranks[2])&lt;br /&gt;
	sorted = mergeArrays(sorted, ranks[3])&lt;br /&gt;
&lt;br /&gt;
	return sorted&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isValueInTable(searchedItem, inputTable)&lt;br /&gt;
	for _, item in pairs(inputTable) do&lt;br /&gt;
		if item == searchedItem then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local Config = {}&lt;br /&gt;
&lt;br /&gt;
-- allows for recursive calls&lt;br /&gt;
function Config:new()&lt;br /&gt;
	local cfg = {}&lt;br /&gt;
	setmetatable(cfg, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
&lt;br /&gt;
	cfg.separators = {&lt;br /&gt;
		-- single value objects wrapped in arrays so that we can pass by reference&lt;br /&gt;
		[&amp;quot;sep&amp;quot;]   = {copyTable(defaultSeparators[&amp;quot;sep&amp;quot;])},&lt;br /&gt;
		[&amp;quot;sep%s&amp;quot;] = {copyTable(defaultSeparators[&amp;quot;sep%s&amp;quot;])},&lt;br /&gt;
		[&amp;quot;sep%q&amp;quot;] = {copyTable(defaultSeparators[&amp;quot;sep%q&amp;quot;])},&lt;br /&gt;
		[&amp;quot;sep%r&amp;quot;] = {copyTable(defaultSeparators[&amp;quot;sep%r&amp;quot;])},&lt;br /&gt;
		[&amp;quot;punc&amp;quot;]  = {copyTable(defaultSeparators[&amp;quot;punc&amp;quot;])}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	cfg.entity = nil&lt;br /&gt;
	cfg.entityID = nil&lt;br /&gt;
	cfg.propertyID = nil&lt;br /&gt;
	cfg.propertyValue = nil&lt;br /&gt;
	cfg.qualifierIDs = {}&lt;br /&gt;
	cfg.qualifierIDsAndValues = {}&lt;br /&gt;
&lt;br /&gt;
	cfg.bestRank = true&lt;br /&gt;
	cfg.ranks = {true, true, false}  -- preferred = true, normal = true, deprecated = false&lt;br /&gt;
	cfg.foundRank = #cfg.ranks&lt;br /&gt;
	cfg.flagBest = false&lt;br /&gt;
	cfg.flagRank = false&lt;br /&gt;
&lt;br /&gt;
	cfg.periods = {true, true, true}  -- future = true, current = true, former = true&lt;br /&gt;
	cfg.flagPeriod = false&lt;br /&gt;
	cfg.atDate = {parseDate(os.date(&#039;!%Y-%m-%d&#039;))}  -- today as {year, month, day}&lt;br /&gt;
&lt;br /&gt;
	cfg.mdyDate = false&lt;br /&gt;
	cfg.singleClaim = false&lt;br /&gt;
	cfg.sourcedOnly = false&lt;br /&gt;
	cfg.editable = false&lt;br /&gt;
	cfg.editAtEnd = false&lt;br /&gt;
&lt;br /&gt;
	cfg.inSitelinks = false&lt;br /&gt;
&lt;br /&gt;
	cfg.langCode = mw.language.getContentLanguage().code&lt;br /&gt;
	cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode)&lt;br /&gt;
	cfg.langObj = mw.language.new(cfg.langCode)&lt;br /&gt;
&lt;br /&gt;
	cfg.siteID = mw.wikibase.getGlobalSiteId()&lt;br /&gt;
&lt;br /&gt;
	cfg.states = {}&lt;br /&gt;
	cfg.states.qualifiersCount = 0&lt;br /&gt;
	cfg.curState = nil&lt;br /&gt;
&lt;br /&gt;
	cfg.prefetchedRefs = nil&lt;br /&gt;
&lt;br /&gt;
	return cfg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local State = {}&lt;br /&gt;
&lt;br /&gt;
function State:new(cfg, type)&lt;br /&gt;
	local stt = {}&lt;br /&gt;
	setmetatable(stt, self)&lt;br /&gt;
	self.__index = self&lt;br /&gt;
&lt;br /&gt;
	stt.conf = cfg&lt;br /&gt;
	stt.type = type&lt;br /&gt;
&lt;br /&gt;
	stt.results = {}&lt;br /&gt;
&lt;br /&gt;
	stt.parsedFormat = {}&lt;br /&gt;
	stt.separator = {}&lt;br /&gt;
	stt.movSeparator = {}&lt;br /&gt;
	stt.puncMark = {}&lt;br /&gt;
&lt;br /&gt;
	stt.linked = false&lt;br /&gt;
	stt.rawValue = false&lt;br /&gt;
	stt.shortName = false&lt;br /&gt;
	stt.anyLanguage = false&lt;br /&gt;
	stt.unitOnly = false&lt;br /&gt;
	stt.singleValue = false&lt;br /&gt;
&lt;br /&gt;
	return stt&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- if id == nil then item connected to current page is used&lt;br /&gt;
function Config:getLabel(id, raw, link, short)&lt;br /&gt;
	local label = nil&lt;br /&gt;
	local prefix, title= &amp;quot;&amp;quot;, nil&lt;br /&gt;
&lt;br /&gt;
	if not id then&lt;br /&gt;
		id = mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
&lt;br /&gt;
		if not id then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	id = id:upper()  -- just to be sure&lt;br /&gt;
&lt;br /&gt;
	if raw then&lt;br /&gt;
		-- check if given id actually exists&lt;br /&gt;
		if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then&lt;br /&gt;
			label = id&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		prefix, title = &amp;quot;d:Special:EntityPage/&amp;quot;, label -- may be nil&lt;br /&gt;
	else&lt;br /&gt;
		-- try short name first if requested&lt;br /&gt;
		if short then&lt;br /&gt;
			label = p._property{aliasesP.shortName, [p.args.eid] = id}  -- get short name&lt;br /&gt;
&lt;br /&gt;
			if label == &amp;quot;&amp;quot; then&lt;br /&gt;
				label = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- get label&lt;br /&gt;
		if not label then&lt;br /&gt;
			label = mw.wikibase.getLabel(id)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not label then&lt;br /&gt;
		label = &amp;quot;&amp;quot;&lt;br /&gt;
	elseif link then&lt;br /&gt;
		-- build a link if requested&lt;br /&gt;
		if not title then&lt;br /&gt;
			if id:sub(1,1) == &amp;quot;Q&amp;quot; then&lt;br /&gt;
				title = mw.wikibase.getSitelink(id)&lt;br /&gt;
			elseif id:sub(1,1) == &amp;quot;P&amp;quot; then&lt;br /&gt;
				-- properties have no sitelink, link to Wikidata instead&lt;br /&gt;
				prefix, title = &amp;quot;d:Special:EntityPage/&amp;quot;, id&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup&lt;br /&gt;
		if title then&lt;br /&gt;
			label = buildWikilink(prefix .. title, label)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return label&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:getEditIcon()&lt;br /&gt;
	local value = &amp;quot;&amp;quot;&lt;br /&gt;
	local prefix = &amp;quot;&amp;quot;&lt;br /&gt;
	local front = &amp;quot;&amp;amp;nbsp;&amp;quot;&lt;br /&gt;
	local back = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if self.entityID:sub(1,1) == &amp;quot;P&amp;quot; then&lt;br /&gt;
		prefix = &amp;quot;Property:&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.editAtEnd then&lt;br /&gt;
		front = &#039;&amp;lt;span style=&amp;quot;float:&#039;&lt;br /&gt;
&lt;br /&gt;
		if self.langObj:isRTL() then&lt;br /&gt;
			front = front .. &#039;left&#039;&lt;br /&gt;
		else&lt;br /&gt;
			front = front .. &#039;right&#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		front = front .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		back = &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	value = &amp;quot;[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=&amp;quot; .. i18n[&#039;info&#039;][&#039;edit-on-wikidata&#039;] .. &amp;quot;|link=https://www.wikidata.org/wiki/&amp;quot; .. prefix .. self.entityID .. &amp;quot;?uselang=&amp;quot; .. self.langCode&lt;br /&gt;
&lt;br /&gt;
	if self.propertyID then&lt;br /&gt;
		value = value .. &amp;quot;#&amp;quot; .. self.propertyID&lt;br /&gt;
	elseif self.inSitelinks then&lt;br /&gt;
		value = value .. &amp;quot;#sitelinks-wikipedia&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	value = value .. &amp;quot;|&amp;quot; .. i18n[&#039;info&#039;][&#039;edit-on-wikidata&#039;] .. &amp;quot;]]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	return front .. value .. back&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- used to create the final output string when it&#039;s all done, so that for references the&lt;br /&gt;
-- function extensionTag(&amp;quot;ref&amp;quot;, ...) is only called when they really ended up in the final output&lt;br /&gt;
function Config:concatValues(valuesArray)&lt;br /&gt;
	local outString = &amp;quot;&amp;quot;&lt;br /&gt;
	local j, skip&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #valuesArray do&lt;br /&gt;
		-- check if this is a reference&lt;br /&gt;
		if valuesArray[i].refHash then&lt;br /&gt;
			j = i - 1&lt;br /&gt;
			skip = false&lt;br /&gt;
&lt;br /&gt;
			-- skip this reference if it is part of a continuous row of references that already contains the exact same reference&lt;br /&gt;
			while valuesArray[j] and valuesArray[j].refHash do&lt;br /&gt;
				if valuesArray[i].refHash == valuesArray[j].refHash then&lt;br /&gt;
					skip = true&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				j = j - 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if not skip then&lt;br /&gt;
				-- add &amp;lt;ref&amp;gt; tag with the reference&#039;s hash as its name (to deduplicate references)&lt;br /&gt;
				outString = outString .. mw.getCurrentFrame():extensionTag(&amp;quot;ref&amp;quot;, valuesArray[i][1], {name = valuesArray[i].refHash})&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			outString = outString .. valuesArray[i][1]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return outString&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:convertUnit(unit, raw, link, short, unitOnly)&lt;br /&gt;
	local space = &amp;quot; &amp;quot;&lt;br /&gt;
	local label = &amp;quot;&amp;quot;&lt;br /&gt;
	local itemID&lt;br /&gt;
&lt;br /&gt;
	if unit == &amp;quot;&amp;quot; or unit == &amp;quot;1&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if unitOnly then&lt;br /&gt;
		space = &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	itemID = parseWikidataURL(unit)&lt;br /&gt;
&lt;br /&gt;
	if itemID then&lt;br /&gt;
		if itemID == aliasesQ.percentage then&lt;br /&gt;
			return &amp;quot;%&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			label = self:getLabel(itemID, raw, link, short)&lt;br /&gt;
&lt;br /&gt;
			if label ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				return space .. label&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function State:getValue(snak)&lt;br /&gt;
	return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type)&lt;br /&gt;
	if snak.snaktype == &#039;value&#039; then&lt;br /&gt;
		local datatype = snak.datavalue.type&lt;br /&gt;
		local subtype = snak.datatype&lt;br /&gt;
		local datavalue = snak.datavalue.value&lt;br /&gt;
&lt;br /&gt;
		if datatype == &#039;string&#039; then&lt;br /&gt;
			if subtype == &#039;url&#039; and link then&lt;br /&gt;
				-- create link explicitly&lt;br /&gt;
				if raw then&lt;br /&gt;
					-- will render as a linked number like [1]&lt;br /&gt;
					return &amp;quot;[&amp;quot; .. datavalue .. &amp;quot;]&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					return &amp;quot;[&amp;quot; .. datavalue .. &amp;quot; &amp;quot; .. datavalue .. &amp;quot;]&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
			elseif subtype == &#039;commonsMedia&#039; then&lt;br /&gt;
				if link then&lt;br /&gt;
					return buildWikilink(&amp;quot;c:File:&amp;quot; .. datavalue, datavalue)&lt;br /&gt;
				elseif not raw then&lt;br /&gt;
					return &amp;quot;[[File:&amp;quot; .. datavalue .. &amp;quot;]]&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					return datavalue&lt;br /&gt;
				end&lt;br /&gt;
			elseif subtype == &#039;geo-shape&#039; and link then&lt;br /&gt;
				return buildWikilink(&amp;quot;c:&amp;quot; .. datavalue, datavalue)&lt;br /&gt;
			elseif subtype == &#039;math&#039; and not raw then&lt;br /&gt;
				local attribute = nil&lt;br /&gt;
&lt;br /&gt;
				if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then&lt;br /&gt;
					attribute = {qid = self.entityID}&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				return mw.getCurrentFrame():extensionTag(&amp;quot;math&amp;quot;, datavalue, attribute)&lt;br /&gt;
			elseif subtype == &#039;external-id&#039; and link then&lt;br /&gt;
				local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property}  -- get formatter URL&lt;br /&gt;
&lt;br /&gt;
				if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					url = mw.ustring.gsub(url, &amp;quot;$1&amp;quot;, datavalue)&lt;br /&gt;
					return &amp;quot;[&amp;quot; .. url .. &amp;quot; &amp;quot; .. datavalue .. &amp;quot;]&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					return datavalue&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				return datavalue&lt;br /&gt;
			end&lt;br /&gt;
		elseif datatype == &#039;monolingualtext&#039; then&lt;br /&gt;
			if anyLang or datavalue[&#039;language&#039;] == self.langCode then&lt;br /&gt;
				return datavalue[&#039;text&#039;]&lt;br /&gt;
			else&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		elseif datatype == &#039;quantity&#039; then&lt;br /&gt;
			local value = &amp;quot;&amp;quot;&lt;br /&gt;
			local unit&lt;br /&gt;
&lt;br /&gt;
			if not unitOnly then&lt;br /&gt;
				-- get value and strip + signs from front&lt;br /&gt;
				value = mw.ustring.gsub(datavalue[&#039;amount&#039;], &amp;quot;^%+(.+)$&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
				if raw then&lt;br /&gt;
					return value&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- replace decimal mark based on locale&lt;br /&gt;
				value = replaceDecimalMark(value)&lt;br /&gt;
&lt;br /&gt;
				-- add delimiters for readability&lt;br /&gt;
				value = i18n.addDelimiters(value)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			unit = self:convertUnit(datavalue[&#039;unit&#039;], raw, link, short, unitOnly)&lt;br /&gt;
&lt;br /&gt;
			if unit then&lt;br /&gt;
				value = value .. unit&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			return value&lt;br /&gt;
		elseif datatype == &#039;time&#039; then&lt;br /&gt;
			local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr&lt;br /&gt;
			local yFactor = 1&lt;br /&gt;
			local sign = 1&lt;br /&gt;
			local prefix = &amp;quot;&amp;quot;&lt;br /&gt;
			local suffix = &amp;quot;&amp;quot;&lt;br /&gt;
			local mayAddCalendar = false&lt;br /&gt;
			local calendar = &amp;quot;&amp;quot;&lt;br /&gt;
			local precision = datavalue[&#039;precision&#039;]&lt;br /&gt;
&lt;br /&gt;
			if precision == 11 then&lt;br /&gt;
				p = &amp;quot;d&amp;quot;&lt;br /&gt;
			elseif precision == 10 then&lt;br /&gt;
				p = &amp;quot;m&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				p = &amp;quot;y&amp;quot;&lt;br /&gt;
				yFactor = 10^(9-precision)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			y, m, d = parseDate(datavalue[&#039;time&#039;], p)&lt;br /&gt;
&lt;br /&gt;
			if y &amp;lt; 0 then&lt;br /&gt;
				sign = -1&lt;br /&gt;
				y = y * sign&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- if precision is tens/hundreds/thousands/millions/billions of years&lt;br /&gt;
			if precision &amp;lt;= 8 then&lt;br /&gt;
				yDiv = y / yFactor&lt;br /&gt;
&lt;br /&gt;
				-- if precision is tens/hundreds/thousands of years&lt;br /&gt;
				if precision &amp;gt;= 6 then&lt;br /&gt;
					mayAddCalendar = true&lt;br /&gt;
&lt;br /&gt;
					if precision &amp;lt;= 7 then&lt;br /&gt;
						-- round centuries/millenniums up (e.g. 20th century or 3rd millennium)&lt;br /&gt;
						yRound = math.ceil(yDiv)&lt;br /&gt;
&lt;br /&gt;
						if not raw then&lt;br /&gt;
							if precision == 6 then&lt;br /&gt;
								suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;millennium&#039;]&lt;br /&gt;
							else&lt;br /&gt;
								suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;century&#039;]&lt;br /&gt;
							end&lt;br /&gt;
&lt;br /&gt;
							suffix = i18n.getOrdinalSuffix(yRound) .. suffix&lt;br /&gt;
						else&lt;br /&gt;
							-- if not verbose, take the first year of the century/millennium&lt;br /&gt;
							-- (e.g. 1901 for 20th century or 2001 for 3rd millennium)&lt;br /&gt;
							yRound = (yRound - 1) * yFactor + 1&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						-- precision == 8&lt;br /&gt;
						-- round decades down (e.g. 2010s)&lt;br /&gt;
						yRound = math.floor(yDiv) * yFactor&lt;br /&gt;
&lt;br /&gt;
						if not raw then&lt;br /&gt;
							prefix = i18n[&#039;datetime&#039;][&#039;prefixes&#039;][&#039;decade-period&#039;]&lt;br /&gt;
							suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;decade-period&#039;]&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if raw and sign &amp;lt; 0 then&lt;br /&gt;
						-- if BCE then compensate for &amp;quot;counting backwards&amp;quot;&lt;br /&gt;
						-- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE)&lt;br /&gt;
						yRound = yRound + yFactor - 1&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					local yReFactor, yReDiv, yReRound&lt;br /&gt;
&lt;br /&gt;
					-- round to nearest for tens of thousands of years or more&lt;br /&gt;
					yRound = math.floor(yDiv + 0.5)&lt;br /&gt;
&lt;br /&gt;
					if yRound == 0 then&lt;br /&gt;
						if precision &amp;lt;= 2 and y ~= 0 then&lt;br /&gt;
							yReFactor = 1e6&lt;br /&gt;
							yReDiv = y / yReFactor&lt;br /&gt;
							yReRound = math.floor(yReDiv + 0.5)&lt;br /&gt;
&lt;br /&gt;
							if yReDiv == yReRound then&lt;br /&gt;
								-- change precision to millions of years only if we have a whole number of them&lt;br /&gt;
								precision = 3&lt;br /&gt;
								yFactor = yReFactor&lt;br /&gt;
								yRound = yReRound&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
&lt;br /&gt;
						if yRound == 0 then&lt;br /&gt;
							-- otherwise, take the unrounded (original) number of years&lt;br /&gt;
							precision = 5&lt;br /&gt;
							yFactor = 1&lt;br /&gt;
							yRound = y&lt;br /&gt;
							mayAddCalendar = true&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if precision &amp;gt;= 1 and y ~= 0 then&lt;br /&gt;
						yFull = yRound * yFactor&lt;br /&gt;
&lt;br /&gt;
						yReFactor = 1e9&lt;br /&gt;
						yReDiv = yFull / yReFactor&lt;br /&gt;
						yReRound = math.floor(yReDiv + 0.5)&lt;br /&gt;
&lt;br /&gt;
						if yReDiv == yReRound then&lt;br /&gt;
							-- change precision to billions of years if we&#039;re in that range&lt;br /&gt;
							precision = 0&lt;br /&gt;
							yFactor = yReFactor&lt;br /&gt;
							yRound = yReRound&lt;br /&gt;
						else&lt;br /&gt;
							yReFactor = 1e6&lt;br /&gt;
							yReDiv = yFull / yReFactor&lt;br /&gt;
							yReRound = math.floor(yReDiv + 0.5)&lt;br /&gt;
&lt;br /&gt;
							if yReDiv == yReRound then&lt;br /&gt;
								-- change precision to millions of years if we&#039;re in that range&lt;br /&gt;
								precision = 3&lt;br /&gt;
								yFactor = yReFactor&lt;br /&gt;
								yRound = yReRound&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if not raw then&lt;br /&gt;
						if precision == 3 then&lt;br /&gt;
							suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;million-years&#039;]&lt;br /&gt;
						elseif precision == 0 then&lt;br /&gt;
							suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;billion-years&#039;]&lt;br /&gt;
						else&lt;br /&gt;
							yRound = yRound * yFactor&lt;br /&gt;
							if yRound == 1 then&lt;br /&gt;
								suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;year&#039;]&lt;br /&gt;
							else&lt;br /&gt;
								suffix = i18n[&#039;datetime&#039;][&#039;suffixes&#039;][&#039;years&#039;]&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						yRound = yRound * yFactor&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				yRound = y&lt;br /&gt;
				mayAddCalendar = true&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if mayAddCalendar then&lt;br /&gt;
				calendarID = parseWikidataURL(datavalue[&#039;calendarmodel&#039;])&lt;br /&gt;
&lt;br /&gt;
				if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then&lt;br /&gt;
					if not raw then&lt;br /&gt;
						if link then&lt;br /&gt;
							calendar = &amp;quot; (&amp;quot;..buildWikilink(i18n[&#039;datetime&#039;][&#039;julian-calendar&#039;], i18n[&#039;datetime&#039;][&#039;julian&#039;])..&amp;quot;)&amp;quot;&lt;br /&gt;
						else&lt;br /&gt;
							calendar = &amp;quot; (&amp;quot;..i18n[&#039;datetime&#039;][&#039;julian&#039;]..&amp;quot;)&amp;quot;&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						calendar = &amp;quot;/&amp;quot;..i18n[&#039;datetime&#039;][&#039;julian&#039;]&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if not raw then&lt;br /&gt;
				local ce = nil&lt;br /&gt;
&lt;br /&gt;
				if sign &amp;lt; 0 then&lt;br /&gt;
					ce = i18n[&#039;datetime&#039;][&#039;BCE&#039;]&lt;br /&gt;
				elseif precision &amp;lt;= 5 then&lt;br /&gt;
					ce = i18n[&#039;datetime&#039;][&#039;CE&#039;]&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if ce then&lt;br /&gt;
					if link then&lt;br /&gt;
						ce = buildWikilink(i18n[&#039;datetime&#039;][&#039;common-era&#039;], ce)&lt;br /&gt;
					end&lt;br /&gt;
					suffix = suffix .. &amp;quot; &amp;quot; .. ce&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				value = tostring(yRound)&lt;br /&gt;
&lt;br /&gt;
				if m then&lt;br /&gt;
					dateStr = self.langObj:formatDate(&amp;quot;F&amp;quot;, &amp;quot;1-&amp;quot;..m..&amp;quot;-1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
					if d then&lt;br /&gt;
						if self.mdyDate then&lt;br /&gt;
							dateStr = dateStr .. &amp;quot; &amp;quot; .. d .. &amp;quot;,&amp;quot;&lt;br /&gt;
						else&lt;br /&gt;
							dateStr = d .. &amp;quot; &amp;quot; .. dateStr&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					value = dateStr .. &amp;quot; &amp;quot; .. value&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				value = prefix .. value .. suffix .. calendar&lt;br /&gt;
			else&lt;br /&gt;
				value = padZeros(yRound * sign, 4)&lt;br /&gt;
&lt;br /&gt;
				if m then&lt;br /&gt;
					value = value .. &amp;quot;-&amp;quot; .. padZeros(m, 2)&lt;br /&gt;
&lt;br /&gt;
					if d then&lt;br /&gt;
						value = value .. &amp;quot;-&amp;quot; .. padZeros(d, 2)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				value = value .. calendar&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			return value&lt;br /&gt;
		elseif datatype == &#039;globecoordinate&#039; then&lt;br /&gt;
			-- logic from https://github.com/DataValues/Geo (v4.0.1)&lt;br /&gt;
&lt;br /&gt;
			local precision, unitsPerDegree, numDigits, strFormat, value, globe&lt;br /&gt;
			local latitude, latConv, latValue, latLink&lt;br /&gt;
			local longitude, lonConv, lonValue, lonLink&lt;br /&gt;
			local latDirection, latDirectionN, latDirectionS, latDirectionEN&lt;br /&gt;
			local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN&lt;br /&gt;
			local degSymbol, minSymbol, secSymbol, separator&lt;br /&gt;
&lt;br /&gt;
			local latDegrees = nil&lt;br /&gt;
			local latMinutes = nil&lt;br /&gt;
			local latSeconds = nil&lt;br /&gt;
			local lonDegrees = nil&lt;br /&gt;
			local lonMinutes = nil&lt;br /&gt;
			local lonSeconds = nil&lt;br /&gt;
&lt;br /&gt;
			local latDegSym = &amp;quot;&amp;quot;&lt;br /&gt;
			local latMinSym = &amp;quot;&amp;quot;&lt;br /&gt;
			local latSecSym = &amp;quot;&amp;quot;&lt;br /&gt;
			local lonDegSym = &amp;quot;&amp;quot;&lt;br /&gt;
			local lonMinSym = &amp;quot;&amp;quot;&lt;br /&gt;
			local lonSecSym = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			local latDirectionEN_N = &amp;quot;N&amp;quot;&lt;br /&gt;
			local latDirectionEN_S = &amp;quot;S&amp;quot;&lt;br /&gt;
			local lonDirectionEN_E = &amp;quot;E&amp;quot;&lt;br /&gt;
			local lonDirectionEN_W = &amp;quot;W&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			if not raw then&lt;br /&gt;
				latDirectionN = i18n[&#039;coord&#039;][&#039;latitude-north&#039;]&lt;br /&gt;
				latDirectionS = i18n[&#039;coord&#039;][&#039;latitude-south&#039;]&lt;br /&gt;
				lonDirectionE = i18n[&#039;coord&#039;][&#039;longitude-east&#039;]&lt;br /&gt;
				lonDirectionW = i18n[&#039;coord&#039;][&#039;longitude-west&#039;]&lt;br /&gt;
&lt;br /&gt;
				degSymbol = i18n[&#039;coord&#039;][&#039;degrees&#039;]&lt;br /&gt;
				minSymbol = i18n[&#039;coord&#039;][&#039;minutes&#039;]&lt;br /&gt;
				secSymbol = i18n[&#039;coord&#039;][&#039;seconds&#039;]&lt;br /&gt;
				separator = i18n[&#039;coord&#039;][&#039;separator&#039;]&lt;br /&gt;
			else&lt;br /&gt;
				latDirectionN = latDirectionEN_N&lt;br /&gt;
				latDirectionS = latDirectionEN_S&lt;br /&gt;
				lonDirectionE = lonDirectionEN_E&lt;br /&gt;
				lonDirectionW = lonDirectionEN_W&lt;br /&gt;
&lt;br /&gt;
				degSymbol = &amp;quot;/&amp;quot;&lt;br /&gt;
				minSymbol = &amp;quot;/&amp;quot;&lt;br /&gt;
				secSymbol = &amp;quot;/&amp;quot;&lt;br /&gt;
				separator = &amp;quot;/&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			latitude = datavalue[&#039;latitude&#039;]&lt;br /&gt;
			longitude = datavalue[&#039;longitude&#039;]&lt;br /&gt;
&lt;br /&gt;
			if latitude &amp;lt; 0 then&lt;br /&gt;
				latDirection = latDirectionS&lt;br /&gt;
				latDirectionEN = latDirectionEN_S&lt;br /&gt;
				latitude = math.abs(latitude)&lt;br /&gt;
			else&lt;br /&gt;
				latDirection = latDirectionN&lt;br /&gt;
				latDirectionEN = latDirectionEN_N&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if longitude &amp;lt; 0 then&lt;br /&gt;
				lonDirection = lonDirectionW&lt;br /&gt;
				lonDirectionEN = lonDirectionEN_W&lt;br /&gt;
				longitude = math.abs(longitude)&lt;br /&gt;
			else&lt;br /&gt;
				lonDirection = lonDirectionE&lt;br /&gt;
				lonDirectionEN = lonDirectionEN_E&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			precision = datavalue[&#039;precision&#039;]&lt;br /&gt;
&lt;br /&gt;
			if not precision or precision &amp;lt;= 0 then&lt;br /&gt;
				precision = 1 / 3600  -- precision not set (correctly), set to arcsecond&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- remove insignificant detail&lt;br /&gt;
			latitude = math.floor(latitude / precision + 0.5) * precision&lt;br /&gt;
			longitude = math.floor(longitude / precision + 0.5) * precision&lt;br /&gt;
&lt;br /&gt;
			if precision &amp;gt;= 1 - (1 / 60) and precision &amp;lt; 1 then&lt;br /&gt;
				precision = 1&lt;br /&gt;
			elseif precision &amp;gt;= (1 / 60) - (1 / 3600) and precision &amp;lt; (1 / 60) then&lt;br /&gt;
				precision = 1 / 60&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if precision &amp;gt;= 1 then&lt;br /&gt;
				unitsPerDegree = 1&lt;br /&gt;
			elseif precision &amp;gt;= (1 / 60)  then&lt;br /&gt;
				unitsPerDegree = 60&lt;br /&gt;
			else&lt;br /&gt;
				unitsPerDegree = 3600&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			numDigits = math.ceil(-math.log10(unitsPerDegree * precision))&lt;br /&gt;
&lt;br /&gt;
			if numDigits &amp;lt;= 0 then&lt;br /&gt;
				numDigits = tonumber(&amp;quot;0&amp;quot;)  -- for some reason, &#039;numDigits = 0&#039; may actually store &#039;-0&#039;, so parse from string instead&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			strFormat = &amp;quot;%.&amp;quot; .. numDigits .. &amp;quot;f&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			if precision &amp;gt;= 1 then&lt;br /&gt;
				latDegrees = strFormat:format(latitude)&lt;br /&gt;
				lonDegrees = strFormat:format(longitude)&lt;br /&gt;
&lt;br /&gt;
				if not raw then&lt;br /&gt;
					latDegSym = replaceDecimalMark(latDegrees) .. degSymbol&lt;br /&gt;
					lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol&lt;br /&gt;
				else&lt;br /&gt;
					latDegSym = latDegrees .. degSymbol&lt;br /&gt;
					lonDegSym = lonDegrees .. degSymbol&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits&lt;br /&gt;
				lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits&lt;br /&gt;
&lt;br /&gt;
				if precision &amp;gt;= (1 / 60) then&lt;br /&gt;
					latMinutes = latConv&lt;br /&gt;
					lonMinutes = lonConv&lt;br /&gt;
				else&lt;br /&gt;
					latSeconds = latConv&lt;br /&gt;
					lonSeconds = lonConv&lt;br /&gt;
&lt;br /&gt;
					latMinutes = math.floor(latSeconds / 60)&lt;br /&gt;
					lonMinutes = math.floor(lonSeconds / 60)&lt;br /&gt;
&lt;br /&gt;
					latSeconds = strFormat:format(latSeconds - (latMinutes * 60))&lt;br /&gt;
					lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60))&lt;br /&gt;
&lt;br /&gt;
					if not raw then&lt;br /&gt;
						latSecSym = replaceDecimalMark(latSeconds) .. secSymbol&lt;br /&gt;
						lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol&lt;br /&gt;
					else&lt;br /&gt;
						latSecSym = latSeconds .. secSymbol&lt;br /&gt;
						lonSecSym = lonSeconds .. secSymbol&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				latDegrees = math.floor(latMinutes / 60)&lt;br /&gt;
				lonDegrees = math.floor(lonMinutes / 60)&lt;br /&gt;
&lt;br /&gt;
				latDegSym = latDegrees .. degSymbol&lt;br /&gt;
				lonDegSym = lonDegrees .. degSymbol&lt;br /&gt;
&lt;br /&gt;
				latMinutes = latMinutes - (latDegrees * 60)&lt;br /&gt;
				lonMinutes = lonMinutes - (lonDegrees * 60)&lt;br /&gt;
&lt;br /&gt;
				if precision &amp;gt;= (1 / 60) then&lt;br /&gt;
					latMinutes = strFormat:format(latMinutes)&lt;br /&gt;
					lonMinutes = strFormat:format(lonMinutes)&lt;br /&gt;
&lt;br /&gt;
					if not raw then&lt;br /&gt;
						latMinSym = replaceDecimalMark(latMinutes) .. minSymbol&lt;br /&gt;
						lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol&lt;br /&gt;
					else&lt;br /&gt;
						latMinSym = latMinutes .. minSymbol&lt;br /&gt;
						lonMinSym = lonMinutes .. minSymbol&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					latMinSym = latMinutes .. minSymbol&lt;br /&gt;
					lonMinSym = lonMinutes .. minSymbol&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			latValue = latDegSym .. latMinSym .. latSecSym .. latDirection&lt;br /&gt;
			lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection&lt;br /&gt;
&lt;br /&gt;
			value = latValue .. separator .. lonValue&lt;br /&gt;
&lt;br /&gt;
			if link then&lt;br /&gt;
				globe = parseWikidataURL(datavalue[&#039;globe&#039;])&lt;br /&gt;
&lt;br /&gt;
				if globe then&lt;br /&gt;
					globe = mw.wikibase.getLabelByLang(globe, &amp;quot;en&amp;quot;):lower()&lt;br /&gt;
				else&lt;br /&gt;
					globe = &amp;quot;earth&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				latLink = table.concat({latDegrees, latMinutes, latSeconds}, &amp;quot;_&amp;quot;)&lt;br /&gt;
				lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, &amp;quot;_&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
				value = &amp;quot;[https://geohack.toolforge.org/geohack.php?language=&amp;quot;..self.langCode..&amp;quot;&amp;amp;params=&amp;quot;..latLink..&amp;quot;_&amp;quot;..latDirectionEN..&amp;quot;_&amp;quot;..lonLink..&amp;quot;_&amp;quot;..lonDirectionEN..&amp;quot;_globe:&amp;quot;..globe..&amp;quot; &amp;quot;..value..&amp;quot;]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			return value&lt;br /&gt;
		elseif datatype == &#039;wikibase-entityid&#039; then&lt;br /&gt;
			local label&lt;br /&gt;
			local itemID = datavalue[&#039;numeric-id&#039;]&lt;br /&gt;
&lt;br /&gt;
			if subtype == &#039;wikibase-item&#039; then&lt;br /&gt;
				itemID = &amp;quot;Q&amp;quot; .. itemID&lt;br /&gt;
			elseif subtype == &#039;wikibase-property&#039; then&lt;br /&gt;
				itemID = &amp;quot;P&amp;quot; .. itemID&lt;br /&gt;
			else&lt;br /&gt;
				return &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. errorText(&#039;unknown-data-type&#039;, subtype) .. &#039;&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			label = self:getLabel(itemID, raw, link, short)&lt;br /&gt;
&lt;br /&gt;
			if label == &amp;quot;&amp;quot; then&lt;br /&gt;
				label = nil&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			return label&lt;br /&gt;
		else&lt;br /&gt;
			return &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. errorText(&#039;unknown-data-type&#039;, datatype) .. &#039;&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	elseif snak.snaktype == &#039;somevalue&#039; and not noSpecial then&lt;br /&gt;
		if raw then&lt;br /&gt;
			return &amp;quot; &amp;quot;  -- single space represents &#039;somevalue&#039;&lt;br /&gt;
		else&lt;br /&gt;
			return i18n[&#039;values&#039;][&#039;unknown&#039;]&lt;br /&gt;
		end&lt;br /&gt;
	elseif snak.snaktype == &#039;novalue&#039; and not noSpecial then&lt;br /&gt;
		if raw then&lt;br /&gt;
			return &amp;quot;&amp;quot;  -- empty string represents &#039;novalue&#039;&lt;br /&gt;
		else&lt;br /&gt;
			return i18n[&#039;values&#039;][&#039;none&#039;]&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:getSingleRawQualifier(claim, qualifierID)&lt;br /&gt;
	local qualifiers&lt;br /&gt;
&lt;br /&gt;
	if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end&lt;br /&gt;
&lt;br /&gt;
	if qualifiers and qualifiers[1] then&lt;br /&gt;
		return self:getValue(qualifiers[1], true)  -- raw = true&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:snakEqualsValue(snak, value)&lt;br /&gt;
	local snakValue = self:getValue(snak, true)  -- raw = true&lt;br /&gt;
&lt;br /&gt;
	if snakValue and snak.snaktype == &#039;value&#039; and snak.datavalue.type == &#039;wikibase-entityid&#039; then value = value:upper() end&lt;br /&gt;
&lt;br /&gt;
	return snakValue == value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:setRank(rank)&lt;br /&gt;
	local rankPos&lt;br /&gt;
&lt;br /&gt;
	if rank == p.flags.best then&lt;br /&gt;
		self.bestRank = true&lt;br /&gt;
		self.flagBest = true  -- mark that &#039;best&#039; flag was given&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if rank:sub(1,9) == p.flags.preferred then&lt;br /&gt;
		rankPos = 1&lt;br /&gt;
	elseif rank:sub(1,6) == p.flags.normal then&lt;br /&gt;
		rankPos = 2&lt;br /&gt;
	elseif rank:sub(1,10) == p.flags.deprecated then&lt;br /&gt;
		rankPos = 3&lt;br /&gt;
	else&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- one of the rank flags was given, check if another one was given before&lt;br /&gt;
	if not self.flagRank then&lt;br /&gt;
		self.ranks = {false, false, false}  -- no other rank flag given before, so unset ranks&lt;br /&gt;
		self.bestRank = self.flagBest       -- unsets bestRank only if &#039;best&#039; flag was not given before&lt;br /&gt;
		self.flagRank = true                -- mark that a rank flag was given&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if rank:sub(-1) == &amp;quot;+&amp;quot; then&lt;br /&gt;
		for i = rankPos, 1, -1 do&lt;br /&gt;
			self.ranks[i] = true&lt;br /&gt;
		end&lt;br /&gt;
	elseif rank:sub(-1) == &amp;quot;-&amp;quot; then&lt;br /&gt;
		for i = rankPos, #self.ranks do&lt;br /&gt;
			self.ranks[i] = true&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		self.ranks[rankPos] = true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:setPeriod(period)&lt;br /&gt;
	local periodPos&lt;br /&gt;
&lt;br /&gt;
	if period == p.flags.future then&lt;br /&gt;
		periodPos = 1&lt;br /&gt;
	elseif period == p.flags.current then&lt;br /&gt;
		periodPos = 2&lt;br /&gt;
	elseif period == p.flags.former then&lt;br /&gt;
		periodPos = 3&lt;br /&gt;
	else&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- one of the period flags was given, check if another one was given before&lt;br /&gt;
	if not self.flagPeriod then&lt;br /&gt;
		self.periods = {false, false, false}  -- no other period flag given before, so unset periods&lt;br /&gt;
		self.flagPeriod = true                -- mark that a period flag was given&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	self.periods[periodPos] = true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:qualifierMatches(claim, id, value)&lt;br /&gt;
	local qualifiers&lt;br /&gt;
&lt;br /&gt;
	if claim.qualifiers then qualifiers = claim.qualifiers[id] end&lt;br /&gt;
	if qualifiers then&lt;br /&gt;
		for _, v in pairs(qualifiers) do&lt;br /&gt;
			if self:snakEqualsValue(v, value) then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif value == &amp;quot;&amp;quot; then&lt;br /&gt;
		-- if the qualifier is not present then treat it the same as the special value &#039;novalue&#039;&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:rankMatches(rankPos)&lt;br /&gt;
	if self.bestRank then&lt;br /&gt;
		return (self.ranks[rankPos] and self.foundRank &amp;gt;= rankPos)&lt;br /&gt;
	else&lt;br /&gt;
		return self.ranks[rankPos]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:timeMatches(claim)&lt;br /&gt;
	local startTime = nil&lt;br /&gt;
	local startTimeY = nil&lt;br /&gt;
	local startTimeM = nil&lt;br /&gt;
	local startTimeD = nil&lt;br /&gt;
	local endTime = nil&lt;br /&gt;
	local endTimeY = nil&lt;br /&gt;
	local endTimeM = nil&lt;br /&gt;
	local endTimeD = nil&lt;br /&gt;
&lt;br /&gt;
	if self.periods[1] and self.periods[2] and self.periods[3] then&lt;br /&gt;
		-- any time&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	startTime = self:getSingleRawQualifier(claim, aliasesP.startTime)&lt;br /&gt;
	if startTime and startTime ~= &amp;quot;&amp;quot; and startTime ~= &amp;quot; &amp;quot; then&lt;br /&gt;
		startTimeY, startTimeM, startTimeD = parseDate(startTime)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	endTime = self:getSingleRawQualifier(claim, aliasesP.endTime)&lt;br /&gt;
	if endTime and endTime ~= &amp;quot;&amp;quot; and endTime ~= &amp;quot; &amp;quot; then&lt;br /&gt;
		endTimeY, endTimeM, endTimeD = parseDate(endTime)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then&lt;br /&gt;
		-- invalidate end time if it precedes start time&lt;br /&gt;
		endTimeY = nil&lt;br /&gt;
		endTimeM = nil&lt;br /&gt;
		endTimeD = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.periods[1] then&lt;br /&gt;
		-- future&lt;br /&gt;
		if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.periods[2] then&lt;br /&gt;
		-- current&lt;br /&gt;
		if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and&lt;br /&gt;
		   (endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.periods[3] then&lt;br /&gt;
		-- former&lt;br /&gt;
		if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:processFlag(flag)&lt;br /&gt;
	if not flag then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if flag == p.flags.linked then&lt;br /&gt;
		self.curState.linked = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.raw then&lt;br /&gt;
		self.curState.rawValue = true&lt;br /&gt;
&lt;br /&gt;
		if self.curState == self.states[parameters.reference] then&lt;br /&gt;
			-- raw reference values end with periods and require a separator (other than none)&lt;br /&gt;
			self.separators[&amp;quot;sep%r&amp;quot;][1] = {&amp;quot; &amp;quot;}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.short then&lt;br /&gt;
		self.curState.shortName = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.multilanguage then&lt;br /&gt;
		self.curState.anyLanguage = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.unit then&lt;br /&gt;
		self.curState.unitOnly = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.mdy then&lt;br /&gt;
		self.mdyDate = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.single then&lt;br /&gt;
		self.singleClaim = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.sourced then&lt;br /&gt;
		self.sourcedOnly = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.edit then&lt;br /&gt;
		self.editable = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.editAtEnd then&lt;br /&gt;
		self.editable = true&lt;br /&gt;
		self.editAtEnd = true&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.best or flag:match(&#039;^&#039;..p.flags.preferred..&#039;[+-]?$&#039;) or flag:match(&#039;^&#039;..p.flags.normal..&#039;[+-]?$&#039;) or flag:match(&#039;^&#039;..p.flags.deprecated..&#039;[+-]?$&#039;) then&lt;br /&gt;
		self:setRank(flag)&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then&lt;br /&gt;
		self:setPeriod(flag)&lt;br /&gt;
		return true&lt;br /&gt;
	elseif flag == &amp;quot;&amp;quot; then&lt;br /&gt;
		-- ignore empty flags and carry on&lt;br /&gt;
		return true&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:processFlagOrCommand(flag)&lt;br /&gt;
	local param = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if not flag then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if flag == p.claimCommands.property or flag == p.claimCommands.properties then&lt;br /&gt;
		param = parameters.property&lt;br /&gt;
	elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then&lt;br /&gt;
		self.states.qualifiersCount = self.states.qualifiersCount + 1&lt;br /&gt;
		param = parameters.qualifier .. self.states.qualifiersCount&lt;br /&gt;
		self.separators[&amp;quot;sep&amp;quot;..param] = {copyTable(defaultSeparators[&amp;quot;sep%q\\d&amp;quot;])}&lt;br /&gt;
	elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then&lt;br /&gt;
		param = parameters.reference&lt;br /&gt;
	else&lt;br /&gt;
		return self:processFlag(flag)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if self.states[param] then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- create a new state for each command&lt;br /&gt;
	self.states[param] = State:new(self, param)&lt;br /&gt;
&lt;br /&gt;
	-- use &amp;quot;%x&amp;quot; as the general parameter name&lt;br /&gt;
	self.states[param].parsedFormat = parseFormat(parameters.general)  -- will be overwritten for param==&amp;quot;%p&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- set the separator&lt;br /&gt;
	self.states[param].separator = self.separators[&amp;quot;sep&amp;quot;..param]  -- will be nil for param==&amp;quot;%p&amp;quot;, which will be set separately&lt;br /&gt;
&lt;br /&gt;
	if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then&lt;br /&gt;
		self.states[param].singleValue = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	self.curState = self.states[param]&lt;br /&gt;
&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:processSeparators(args)&lt;br /&gt;
	local sep&lt;br /&gt;
&lt;br /&gt;
	for i, v in pairs(self.separators) do&lt;br /&gt;
		if args[i] then&lt;br /&gt;
			sep = replaceSpecialChars(args[i])&lt;br /&gt;
&lt;br /&gt;
			if sep ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				self.separators[i][1] = {sep}&lt;br /&gt;
			else&lt;br /&gt;
				self.separators[i][1] = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Config:setFormatAndSeparators(state, parsedFormat)&lt;br /&gt;
	state.parsedFormat = parsedFormat&lt;br /&gt;
	state.separator = self.separators[&amp;quot;sep&amp;quot;]&lt;br /&gt;
	state.movSeparator = self.separators[&amp;quot;sep&amp;quot;..parameters.separator]&lt;br /&gt;
	state.puncMark = self.separators[&amp;quot;punc&amp;quot;]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- determines if a claim has references by prefetching them from the claim using getReferences,&lt;br /&gt;
-- which applies some filtering that determines if a reference is actually returned,&lt;br /&gt;
-- and caches the references for later use&lt;br /&gt;
function State:isSourced(claim)&lt;br /&gt;
	self.conf.prefetchedRefs = self:getReferences(claim)&lt;br /&gt;
	return (#self.conf.prefetchedRefs &amp;gt; 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function State:resetCaches()&lt;br /&gt;
	-- any prefetched references of the previous claim must not be used&lt;br /&gt;
	self.conf.prefetchedRefs = nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function State:claimMatches(claim)&lt;br /&gt;
	local matches, rankPos&lt;br /&gt;
&lt;br /&gt;
	-- first of all, reset any cached values used for the previous claim&lt;br /&gt;
	self:resetCaches()&lt;br /&gt;
&lt;br /&gt;
	-- if a property value was given, check if it matches the claim&#039;s property value&lt;br /&gt;
	if self.conf.propertyValue then&lt;br /&gt;
		matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue)&lt;br /&gt;
	else&lt;br /&gt;
		matches = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if any qualifier values were given, check if each matches one of the claim&#039;s qualifier values&lt;br /&gt;
	for i, v in pairs(self.conf.qualifierIDsAndValues) do&lt;br /&gt;
		matches = (matches and self.conf:qualifierMatches(claim, i, v))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- check if the claim&#039;s rank and time period match&lt;br /&gt;
	rankPos = rankTable[claim.rank] or 4&lt;br /&gt;
	matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim))&lt;br /&gt;
&lt;br /&gt;
	-- if only claims with references must be returned, check if this one has any&lt;br /&gt;
	if self.conf.sourcedOnly then&lt;br /&gt;
		matches = (matches and self:isSourced(claim))  -- prefetches and caches references&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return matches, rankPos&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function State:out()&lt;br /&gt;
	local result  -- collection of arrays with value objects&lt;br /&gt;
	local valuesArray  -- array with value objects&lt;br /&gt;
	local sep = nil  -- value object&lt;br /&gt;
	local out = {}  -- array with value objects&lt;br /&gt;
&lt;br /&gt;
	local function walk(formatTable, result)&lt;br /&gt;
		local valuesArray = {}  -- array with value objects&lt;br /&gt;
&lt;br /&gt;
		for i, v in pairs(formatTable.req) do&lt;br /&gt;
			if not result[i] or not result[i][1] then&lt;br /&gt;
				-- we&#039;ve got no result for a parameter that is required on this level,&lt;br /&gt;
				-- so skip this level (and its children) by returning an empty result&lt;br /&gt;
				return {}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, v in ipairs(formatTable) do&lt;br /&gt;
			if v.param then&lt;br /&gt;
				valuesArray = mergeArrays(valuesArray, result[v.str])&lt;br /&gt;
			elseif v.str ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				valuesArray[#valuesArray + 1] = {v.str}&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if v.child then&lt;br /&gt;
				valuesArray = mergeArrays(valuesArray, walk(v.child, result))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return valuesArray&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- iterate through the results from back to front, so that we know when to add separators&lt;br /&gt;
	for i = #self.results, 1, -1 do&lt;br /&gt;
		result = self.results[i]&lt;br /&gt;
&lt;br /&gt;
		-- if there is already some output, then add the separators&lt;br /&gt;
		if #out &amp;gt; 0 then&lt;br /&gt;
			sep = self.separator[1]  -- fixed separator&lt;br /&gt;
			result[parameters.separator] = {self.movSeparator[1]}  -- movable separator&lt;br /&gt;
		else&lt;br /&gt;
			sep = nil&lt;br /&gt;
			result[parameters.separator] = {self.puncMark[1]}  -- optional punctuation mark&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		valuesArray = walk(self.parsedFormat, result)&lt;br /&gt;
&lt;br /&gt;
		if #valuesArray &amp;gt; 0 then&lt;br /&gt;
			if sep then&lt;br /&gt;
				valuesArray[#valuesArray + 1] = sep&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			out = mergeArrays(valuesArray, out)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- reset state before next iteration&lt;br /&gt;
	self.results = {}&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getProperty(claim)&lt;br /&gt;
	local value = {self:getValue(claim.mainsnak)}  -- create one value object&lt;br /&gt;
&lt;br /&gt;
	if #value &amp;gt; 0 then&lt;br /&gt;
		return {value}  -- wrap the value object in an array and return it&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array if there was no value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getQualifiers(claim, param)&lt;br /&gt;
	local qualifiers&lt;br /&gt;
&lt;br /&gt;
	if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end&lt;br /&gt;
	if qualifiers then&lt;br /&gt;
		-- iterate through claim&#039;s qualifier statements to collect their values;&lt;br /&gt;
		-- return array with multiple value objects&lt;br /&gt;
		return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier..&amp;quot;\\d&amp;quot;][2], count = 1})  -- pass qualifier state with level 2 hook&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 2 hook&lt;br /&gt;
function State:getQualifier(snak)&lt;br /&gt;
	local value = {self:getValue(snak)}  -- create one value object&lt;br /&gt;
&lt;br /&gt;
	if #value &amp;gt; 0 then&lt;br /&gt;
		return {value}  -- wrap the value object in an array and return it&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array if there was no value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getAllQualifiers(claim, param, result, hooks)&lt;br /&gt;
	local out = {}  -- array with value objects&lt;br /&gt;
	local sep = self.conf.separators[&amp;quot;sep&amp;quot;..parameters.qualifier][1]  -- value object&lt;br /&gt;
&lt;br /&gt;
	-- iterate through the output of the separate &amp;quot;qualifier(s)&amp;quot; commands&lt;br /&gt;
	for i = 1, self.conf.states.qualifiersCount do&lt;br /&gt;
&lt;br /&gt;
		-- if a hook has not been called yet, call it now&lt;br /&gt;
		if not result[parameters.qualifier..i] then&lt;br /&gt;
			self:callHook(parameters.qualifier..i, hooks, claim, result)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- if there is output for this particular &amp;quot;qualifier(s)&amp;quot; command, then add it&lt;br /&gt;
		if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then&lt;br /&gt;
&lt;br /&gt;
			-- if there is already some output, then add the separator&lt;br /&gt;
			if #out &amp;gt; 0 and sep then&lt;br /&gt;
				out[#out + 1] = sep&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			out = mergeArrays(out, result[parameters.qualifier..i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getReferences(claim)&lt;br /&gt;
	if self.conf.prefetchedRefs then&lt;br /&gt;
		-- return references that have been prefetched by isSourced&lt;br /&gt;
		return self.conf.prefetchedRefs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if claim.references then&lt;br /&gt;
		-- iterate through claim&#039;s reference statements to collect their values;&lt;br /&gt;
		-- return array with multiple value objects&lt;br /&gt;
		return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1})  -- pass reference state with level 2 hook&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 2 hook&lt;br /&gt;
function State:getReference(statement)&lt;br /&gt;
	local citeParamMapping = i18n[&#039;cite&#039;][&#039;param-mapping&#039;]&lt;br /&gt;
	local citeConfig = i18n[&#039;cite&#039;][&#039;config&#039;]&lt;br /&gt;
	local citeTypes = i18n[&#039;cite&#039;][&#039;output-types&#039;]&lt;br /&gt;
	&lt;br /&gt;
	-- will hold rendered properties of the reference which are not directly from statement.snaks, &lt;br /&gt;
	-- Namely, these are a backup title from &amp;quot;subject named as&amp;quot; and a URL generated from an external ID.&lt;br /&gt;
    local additionalProcessedProperties = {}&lt;br /&gt;
    -- for each citation type, there will be an associative array that associates lists of rendered properties&lt;br /&gt;
    -- to citation-template parameters&lt;br /&gt;
    local groupedProcessedProperties = {}&lt;br /&gt;
    -- like above, but only associates one rendered property to each parameter; if the above variable&lt;br /&gt;
    -- contains more strings for a parameter, the strings will be assigned to numbered params (e.g. &amp;quot;author1&amp;quot;)&lt;br /&gt;
	local citeParams = {}&lt;br /&gt;
&lt;br /&gt;
	local citeErrors = {}&lt;br /&gt;
	local referenceEmpty = true  -- will be set to false if at least one parameter is left unremoved&lt;br /&gt;
&lt;br /&gt;
	local version = 11  -- increment this each time the below logic is changed to avoid conflict errors&lt;br /&gt;
&lt;br /&gt;
	if not statement.snaks then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- don&#039;t use bot-added references referencing Wikimedia projects or containing &amp;quot;inferred from&amp;quot; (such references are not usable on Wikipedia)&lt;br /&gt;
	if statement.snaks[aliasesP.importedFrom] or statement.snaks[aliasesP.wikimediaImportURL] or statement.snaks[aliasesP.inferredFrom] then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- don&#039;t include &amp;quot;type of reference&amp;quot;&lt;br /&gt;
	if statement.snaks[aliasesP.typeOfReference] then&lt;br /&gt;
		statement.snaks[aliasesP.typeOfReference] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- don&#039;t include &amp;quot;image&amp;quot; to prevent littering&lt;br /&gt;
	if statement.snaks[aliasesP.image] then&lt;br /&gt;
		statement.snaks[aliasesP.image] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- don&#039;t include &amp;quot;language&amp;quot; if it is equal to the local one&lt;br /&gt;
	if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then&lt;br /&gt;
		statement.snaks[aliasesP.language] = nil&lt;br /&gt;
	end&lt;br /&gt;
    &lt;br /&gt;
    if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then&lt;br /&gt;
    	-- &amp;quot;stated in&amp;quot; was given but &amp;quot;reference URL&amp;quot; was not.&lt;br /&gt;
    	-- get &amp;quot;Wikidata property&amp;quot; properties from the item in &amp;quot;stated in&amp;quot;&lt;br /&gt;
    	-- if any of the returned properties of the external-id datatype is in statement.snaks, generate a link from it and use the link in the reference&lt;br /&gt;
    	&lt;br /&gt;
    	-- find the &amp;quot;Wikidata property&amp;quot; properties in the item from &amp;quot;stated in&amp;quot;&lt;br /&gt;
    	local wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, &amp;quot;, &amp;quot;, true)&lt;br /&gt;
    	for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do&lt;br /&gt;
    		if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == &amp;quot;external-id&amp;quot; then&lt;br /&gt;
    			local tempLink = self:getReferenceDetail(statement.snaks, wikidataPropertyOfSource, false, true)  -- not raw, linked&lt;br /&gt;
    			if mw.ustring.match(tempLink, &amp;quot;^%[%Z- %Z+%]$&amp;quot;) then  -- getValue returned a URL in square brackets.&lt;br /&gt;
    				-- the link is in wiki markup, so strip the square brackets and the display text&lt;br /&gt;
    				-- gsub also returns another, discarted value, therefore the result is assigned to tempLink first&lt;br /&gt;
    				tempLink = mw.ustring.gsub(tempLink, &amp;quot;^%[(%Z-) %Z+%]$&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
    		    	additionalProcessedProperties[aliasesP.referenceURL] = {tempLink}&lt;br /&gt;
    			    statement.snaks[wikidataPropertyOfSource] = nil&lt;br /&gt;
    			    break&lt;br /&gt;
    			end&lt;br /&gt;
    		end&lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- don&#039;t include &amp;quot;subject named as&amp;quot;, but use it as the title when &amp;quot;title&amp;quot; is not present but a URL is&lt;br /&gt;
    if statement.snaks[aliasesP.subjectNamedAs] then&lt;br /&gt;
    	if not statement.snaks[aliasesP.title] and (statement.snaks[aliasesP.referenceURL] or additionalProcessedProperties[aliasesP.referenceURL]) then&lt;br /&gt;
    		additionalProcessedProperties[aliasesP.title] = {self:getReferenceDetail(statement.snaks, aliasesP.subjectNamedAs, false, false, true)}  -- not raw, not linked, anyLang&lt;br /&gt;
    	end&lt;br /&gt;
    	statement.snaks[aliasesP.subjectNamedAs] = nil&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- initialize groupedProcessedProperties and citeParams&lt;br /&gt;
    for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
    	groupedProcessedProperties[citeType] = {}&lt;br /&gt;
    	citeParams[citeType] = {}&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	-- fill groupedProcessedProperties&lt;br /&gt;
	for refProperty in pairs(statement.snaks) do&lt;br /&gt;
		-- add the parameter to each matching type of citation&lt;br /&gt;
		for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
			repeat  -- just a simple wrapper to emulate &amp;quot;continue&amp;quot;&lt;br /&gt;
				-- skip if there already have been errors&lt;br /&gt;
				if citeErrors[citeType] then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				-- set mappingKey and prefix&lt;br /&gt;
				local mappingKey&lt;br /&gt;
				local prefix = &amp;quot;&amp;quot;&lt;br /&gt;
				if statement.snaks[refProperty][1].datatype == &#039;external-id&#039; then&lt;br /&gt;
					mappingKey = &amp;quot;external-id&amp;quot;&lt;br /&gt;
					prefix = self.conf:getLabel(refProperty)&lt;br /&gt;
		&lt;br /&gt;
					if prefix ~= &amp;quot;&amp;quot; then&lt;br /&gt;
						prefix = prefix .. &amp;quot; &amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					mappingKey = refProperty&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local paramName = citeParamMapping[citeType][mappingKey]&lt;br /&gt;
				-- skip properties with empty parameter name&lt;br /&gt;
				if paramName == &amp;quot;&amp;quot; then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				referenceEmpty = false&lt;br /&gt;
&lt;br /&gt;
				-- handle unknown properties in the reference&lt;br /&gt;
				if not paramName then&lt;br /&gt;
					local error_message = errorText(&amp;quot;unknown-property-in-ref&amp;quot;, refProperty)&lt;br /&gt;
					assert(error_message)  -- Should not be nil&lt;br /&gt;
					citeErrors[citeType] = error_message&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				-- set processedProperty&lt;br /&gt;
				local processedProperty&lt;br /&gt;
				local raw = false  -- if the value is wanted raw&lt;br /&gt;
				if isValueInTable(paramName, citeConfig[citeType][&amp;quot;raw-value-params&amp;quot;] or {}) then&lt;br /&gt;
					raw = true&lt;br /&gt;
				end&lt;br /&gt;
				if isValueInTable(paramName, citeConfig[citeType][&amp;quot;numbered-params&amp;quot;] or {}) then&lt;br /&gt;
					-- Multiple values may be given.&lt;br /&gt;
					processedProperty = self:getReferenceDetails(statement.snaks, refProperty, raw, self.linked, true)  -- anyLang = true&lt;br /&gt;
				else&lt;br /&gt;
					-- If multiple values are given, all but the first suitable one are discarted.&lt;br /&gt;
					processedProperty = {self:getReferenceDetail(statement.snaks, refProperty, raw, self.linked and (statement.snaks[refProperty][1].datatype ~= &#039;url&#039;), true)}  -- link = true/false, anyLang = true&lt;br /&gt;
				end&lt;br /&gt;
		&lt;br /&gt;
				if #processedProperty == 0 then&lt;br /&gt;
					break	&lt;br /&gt;
				end&lt;br /&gt;
                &lt;br /&gt;
                -- add an entry to groupedProcessedProperties&lt;br /&gt;
                if not groupedProcessedProperties[citeType][paramName] then&lt;br /&gt;
                	groupedProcessedProperties[citeType][paramName] = {}&lt;br /&gt;
                end&lt;br /&gt;
                for _, propertyValue in pairs(processedProperty) do&lt;br /&gt;
                	table.insert(groupedProcessedProperties[citeType][paramName], prefix .. propertyValue)&lt;br /&gt;
                end&lt;br /&gt;
            until true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- handle additional properties&lt;br /&gt;
	for refProperty in pairs(additionalProcessedProperties) do&lt;br /&gt;
		for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
			repeat&lt;br /&gt;
				-- skip if there already have been errors&lt;br /&gt;
				if citeErrors[citeType] then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
                local paramName = citeParamMapping[citeType][refProperty]&lt;br /&gt;
				-- handle unknown properties in the reference&lt;br /&gt;
				if not paramName then&lt;br /&gt;
					-- Skip this additional property, but do not cause an error.&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				if paramName == &amp;quot;&amp;quot; then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				referenceEmpty = false&lt;br /&gt;
                &lt;br /&gt;
                if not groupedProcessedProperties[citeType][paramName] then&lt;br /&gt;
                	groupedProcessedProperties[citeType][paramName] = {}&lt;br /&gt;
                end&lt;br /&gt;
                for _, propertyValue in pairs(additionalProcessedProperties[refProperty]) do&lt;br /&gt;
                	table.insert(groupedProcessedProperties[citeType][paramName], propertyValue)&lt;br /&gt;
                end&lt;br /&gt;
			until true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- fill citeParams&lt;br /&gt;
	for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
		for paramName, paramValues in pairs(groupedProcessedProperties[citeType]) do&lt;br /&gt;
			if #paramValues == 1 or not isValueInTable(paramName, citeConfig[citeType][&amp;quot;numbered-params&amp;quot;] or {}) then&lt;br /&gt;
				citeParams[citeType][paramName] = paramValues[1]&lt;br /&gt;
			else&lt;br /&gt;
				-- There is more than one value for this parameter - the values will&lt;br /&gt;
				-- go into separate numbered parameters (e.g. &amp;quot;author1&amp;quot;, &amp;quot;author2&amp;quot;)&lt;br /&gt;
				for paramNum, paramValue in pairs(paramValues) do&lt;br /&gt;
					citeParams[citeType][paramName .. paramNum] = paramValue&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- handle missing mandatory parameters for the templates&lt;br /&gt;
	for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
		for _, requiredCiteParam in pairs(citeConfig[citeType][&amp;quot;mandatory-params&amp;quot;] or {}) do&lt;br /&gt;
			if not citeParams[citeType][requiredCiteParam] then  -- The required param is not present.&lt;br /&gt;
				if citeErrors[citeType] then  -- Do not override the previous error, if it exists.&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				local error_message = errorText(&amp;quot;missing-mandatory-param&amp;quot;, requiredCiteParam)&lt;br /&gt;
				assert(error_message)  -- Should not be nil&lt;br /&gt;
				citeErrors[citeType] = error_message&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local citeTypeToUse = nil&lt;br /&gt;
&lt;br /&gt;
    -- choose the output template&lt;br /&gt;
    for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
    	if not citeErrors[citeType] then&lt;br /&gt;
    		citeTypeToUse = citeType &lt;br /&gt;
    		break&lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	-- set refContent&lt;br /&gt;
	local refContent = &amp;quot;&amp;quot;&lt;br /&gt;
	if citeTypeToUse then&lt;br /&gt;
		local templateToUse = citeConfig[citeTypeToUse][&amp;quot;template&amp;quot;]&lt;br /&gt;
		local paramsToUse = citeParams[citeTypeToUse]&lt;br /&gt;
		&lt;br /&gt;
		if not templateToUse or templateToUse == &amp;quot;&amp;quot; then &lt;br /&gt;
			throwError(&amp;quot;no-such-reference-template&amp;quot;, tostring(templateToUse), i18nPath, citeTypeToUse)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- if this module is being substituted then build a regular template call, otherwise expand the template&lt;br /&gt;
		if mw.isSubsting() then&lt;br /&gt;
			for i, v in pairs(paramsToUse) do&lt;br /&gt;
				refContent = refContent .. &amp;quot;|&amp;quot; .. i .. &amp;quot;=&amp;quot; .. v&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			refContent = &amp;quot;{{&amp;quot; .. templateToUse .. refContent .. &amp;quot;}}&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			xpcall(&lt;br /&gt;
				function () refContent = mw.getCurrentFrame():expandTemplate{title=templateToUse, args=paramsToUse} end,&lt;br /&gt;
				function () throwError(&amp;quot;no-such-reference-template&amp;quot;, templateToUse, i18nPath, citeTypeToUse) end&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	-- If the citation couldn&#039;t be displayed using any template, but is not empty (barring ignored propeties), throw an error.&lt;br /&gt;
	elseif not referenceEmpty then&lt;br /&gt;
		refContent = errorText(&amp;quot;malformed-reference-header&amp;quot;)&lt;br /&gt;
	    for _, citeType in ipairs(citeTypes) do&lt;br /&gt;
	    	refContent = refContent .. errorText(&amp;quot;template-failure-reason&amp;quot;, citeConfig[citeType][&amp;quot;template&amp;quot;], citeErrors[citeType])&lt;br /&gt;
	    end&lt;br /&gt;
		refContent = refContent .. errorText(&amp;quot;malformed-reference-footer&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    -- wrap refContent&lt;br /&gt;
	local ref = {}&lt;br /&gt;
	if refContent ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		ref = {refContent}&lt;br /&gt;
&lt;br /&gt;
		if not self.rawValue then&lt;br /&gt;
			-- this should become a &amp;lt;ref&amp;gt; tag, so save the reference&#039;s hash for later&lt;br /&gt;
			ref.refHash = &amp;quot;wikidata-&amp;quot; .. statement.hash .. &amp;quot;-v&amp;quot; .. (tonumber(i18n[&#039;version&#039;]) + version)&lt;br /&gt;
		end&lt;br /&gt;
		return {ref}&lt;br /&gt;
	else&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- gets a detail of one particular type for a reference&lt;br /&gt;
function State:getReferenceDetail(snaks, dType, raw, link, anyLang)&lt;br /&gt;
	local switchLang = anyLang&lt;br /&gt;
	local value = nil&lt;br /&gt;
&lt;br /&gt;
	if not snaks[dType] then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if anyLang, first try the local language and otherwise any language&lt;br /&gt;
	repeat&lt;br /&gt;
		for _, v in ipairs(snaks[dType]) do&lt;br /&gt;
			value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true)  -- noSpecial = true&lt;br /&gt;
&lt;br /&gt;
			if value then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if value or not anyLang then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		switchLang = not switchLang&lt;br /&gt;
	until anyLang and switchLang&lt;br /&gt;
&lt;br /&gt;
	return value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- gets the details of one particular type for a reference&lt;br /&gt;
function State:getReferenceDetails(snaks, dType, raw, link, anyLang)&lt;br /&gt;
	local values = {}&lt;br /&gt;
&lt;br /&gt;
	if not snaks[dType] then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs(snaks[dType]) do&lt;br /&gt;
		-- if nil is returned then it will not be added to the table&lt;br /&gt;
		values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true)  -- noSpecial = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return values&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getAlias(object)&lt;br /&gt;
	local value = object.value&lt;br /&gt;
	local title = nil&lt;br /&gt;
&lt;br /&gt;
	if value and self.linked then&lt;br /&gt;
		if self.conf.entityID:sub(1,1) == &amp;quot;Q&amp;quot; then&lt;br /&gt;
			title = mw.wikibase.getSitelink(self.conf.entityID)&lt;br /&gt;
		elseif self.conf.entityID:sub(1,1) == &amp;quot;P&amp;quot; then&lt;br /&gt;
			title = &amp;quot;d:Property:&amp;quot; .. self.conf.entityID&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if title then&lt;br /&gt;
			value = buildWikilink(title, value)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	value = {value}  -- create one value object&lt;br /&gt;
&lt;br /&gt;
	if #value &amp;gt; 0 then&lt;br /&gt;
		return {value}  -- wrap the value object in an array and return it&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array if there was no value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- level 1 hook&lt;br /&gt;
function State:getBadge(value)&lt;br /&gt;
	value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName)&lt;br /&gt;
&lt;br /&gt;
	if value == &amp;quot;&amp;quot; then&lt;br /&gt;
		value = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	value = {value}  -- create one value object&lt;br /&gt;
&lt;br /&gt;
	if #value &amp;gt; 0 then&lt;br /&gt;
		return {value}  -- wrap the value object in an array and return it&lt;br /&gt;
	else&lt;br /&gt;
		return {}  -- return empty array if there was no value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function State:callHook(param, hooks, statement, result)&lt;br /&gt;
	-- call a parameter&#039;s hook if it has been defined and if it has not been called before&lt;br /&gt;
	if not result[param] and hooks[param] then&lt;br /&gt;
		local valuesArray = self[hooks[param]](self, statement, param, result, hooks)  -- array with value objects&lt;br /&gt;
&lt;br /&gt;
		-- add to the result&lt;br /&gt;
		if #valuesArray &amp;gt; 0 then&lt;br /&gt;
			result[param] = valuesArray&lt;br /&gt;
			result.count = result.count + 1&lt;br /&gt;
		else&lt;br /&gt;
			result[param] = {}  -- an empty array to indicate that we&#039;ve tried this hook already&lt;br /&gt;
			return true  -- miss == true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- iterate through claims, claim&#039;s qualifiers or claim&#039;s references to collect values&lt;br /&gt;
function State:iterate(statements, hooks, matchHook)&lt;br /&gt;
	matchHook = matchHook or alwaysTrue&lt;br /&gt;
&lt;br /&gt;
	local matches = false&lt;br /&gt;
	local rankPos = nil&lt;br /&gt;
	local result, gotRequired&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs(statements) do&lt;br /&gt;
		-- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.)&lt;br /&gt;
		matches, rankPos = matchHook(self, v)&lt;br /&gt;
&lt;br /&gt;
		if matches then&lt;br /&gt;
			result = {count = 0}  -- collection of arrays with value objects&lt;br /&gt;
&lt;br /&gt;
			local function walk(formatTable)&lt;br /&gt;
				local miss&lt;br /&gt;
&lt;br /&gt;
				for i2, v2 in pairs(formatTable.req) do&lt;br /&gt;
					-- call a hook, adding its return value to the result&lt;br /&gt;
					miss = self:callHook(i2, hooks, v, result)&lt;br /&gt;
&lt;br /&gt;
					if miss then&lt;br /&gt;
						-- we miss a required value for this level, so return false&lt;br /&gt;
						return false&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if result.count == hooks.count then&lt;br /&gt;
						-- we&#039;re done if all hooks have been called;&lt;br /&gt;
						-- returning at this point breaks the loop&lt;br /&gt;
						return true&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				for _, v2 in ipairs(formatTable) do&lt;br /&gt;
					if result.count == hooks.count then&lt;br /&gt;
						-- we&#039;re done if all hooks have been called;&lt;br /&gt;
						-- returning at this point prevents further childs from being processed&lt;br /&gt;
						return true&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					if v2.child then&lt;br /&gt;
						walk(v2.child)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
			gotRequired = walk(self.parsedFormat)&lt;br /&gt;
&lt;br /&gt;
			-- only append the result if we got values for all required parameters on the root level&lt;br /&gt;
			if gotRequired then&lt;br /&gt;
				-- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank&lt;br /&gt;
				if rankPos and self.conf.foundRank &amp;gt; rankPos then&lt;br /&gt;
					self.conf.foundRank = rankPos&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- append the result&lt;br /&gt;
				self.results[#self.results + 1] = result&lt;br /&gt;
&lt;br /&gt;
				-- break if we only need a single value&lt;br /&gt;
				if self.singleValue then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return self:out()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getEntityId(arg, eid, page, allowOmitPropPrefix, globalSiteId)&lt;br /&gt;
	local id = nil&lt;br /&gt;
	local prop = nil&lt;br /&gt;
&lt;br /&gt;
	if arg then&lt;br /&gt;
		if arg:sub(1,1) == &amp;quot;:&amp;quot; then&lt;br /&gt;
			page = arg&lt;br /&gt;
			eid = nil&lt;br /&gt;
		elseif arg:sub(1,1):upper() == &amp;quot;Q&amp;quot; or arg:sub(1,9):lower() == &amp;quot;property:&amp;quot; or allowOmitPropPrefix then&lt;br /&gt;
			eid = arg&lt;br /&gt;
			page = nil&lt;br /&gt;
		else&lt;br /&gt;
			prop = arg&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if eid then&lt;br /&gt;
		if eid:sub(1,9):lower() == &amp;quot;property:&amp;quot; then&lt;br /&gt;
			id = replaceAlias(mw.text.trim(eid:sub(10)))&lt;br /&gt;
&lt;br /&gt;
			if id:sub(1,1):upper() ~= &amp;quot;P&amp;quot; then&lt;br /&gt;
				id = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			id = replaceAlias(eid)&lt;br /&gt;
		end&lt;br /&gt;
	elseif page then&lt;br /&gt;
		if page:sub(1,1) == &amp;quot;:&amp;quot; then&lt;br /&gt;
			page = mw.text.trim(page:sub(2))&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		id = mw.wikibase.getEntityIdForTitle(page, globalSiteId) or &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not id then&lt;br /&gt;
		id = mw.wikibase.getEntityIdForCurrentPage() or &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	id = id:upper()&lt;br /&gt;
&lt;br /&gt;
	if not mw.wikibase.isValidEntityId(id) then&lt;br /&gt;
		id = &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return id, prop&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function nextArg(args)&lt;br /&gt;
	local arg = args[args.pointer]&lt;br /&gt;
&lt;br /&gt;
	if arg then&lt;br /&gt;
		args.pointer = args.pointer + 1&lt;br /&gt;
		return mw.text.trim(arg)&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function claimCommand(args, funcName)&lt;br /&gt;
	local cfg = Config:new()&lt;br /&gt;
	cfg:processFlagOrCommand(funcName)  -- process first command (== function name)&lt;br /&gt;
&lt;br /&gt;
	local lastArg, parsedFormat, formatParams, claims, value&lt;br /&gt;
	local hooks = {count = 0}&lt;br /&gt;
&lt;br /&gt;
	-- set the date if given;&lt;br /&gt;
	-- must come BEFORE processing the flags&lt;br /&gt;
	if args[p.args.date] then&lt;br /&gt;
		cfg.atDate = {parseDate(args[p.args.date])}&lt;br /&gt;
		cfg.periods = {false, true, false}  -- change default time constraint to &#039;current&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- process flags and commands&lt;br /&gt;
	repeat&lt;br /&gt;
		lastArg = nextArg(args)&lt;br /&gt;
	until not cfg:processFlagOrCommand(lastArg)&lt;br /&gt;
&lt;br /&gt;
	-- get the entity ID from either the positional argument, the eid argument or the page argument&lt;br /&gt;
	cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], false, args[p.args.globalSiteId])&lt;br /&gt;
&lt;br /&gt;
	if cfg.entityID == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;  -- we cannot continue without a valid entity ID&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cfg.entity = mw.wikibase.getEntity(cfg.entityID)&lt;br /&gt;
&lt;br /&gt;
	if not cfg.propertyID then&lt;br /&gt;
		cfg.propertyID = nextArg(args)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cfg.propertyID = replaceAlias(cfg.propertyID)&lt;br /&gt;
&lt;br /&gt;
	if not cfg.entity or not cfg.propertyID then&lt;br /&gt;
		return &amp;quot;&amp;quot;  -- we cannot continue without an entity or a property ID&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cfg.propertyID = cfg.propertyID:upper()&lt;br /&gt;
&lt;br /&gt;
	if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then&lt;br /&gt;
		return &amp;quot;&amp;quot;  -- there is no use to continue without any claims&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	claims = cfg.entity.claims[cfg.propertyID]&lt;br /&gt;
&lt;br /&gt;
	if cfg.states.qualifiersCount &amp;gt; 0 then&lt;br /&gt;
		-- do further processing if &amp;quot;qualifier(s)&amp;quot; command was given&lt;br /&gt;
&lt;br /&gt;
		if #args - args.pointer + 1 &amp;gt; cfg.states.qualifiersCount then&lt;br /&gt;
			-- claim ID or literal value has been given&lt;br /&gt;
&lt;br /&gt;
			cfg.propertyValue = nextArg(args)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for i = 1, cfg.states.qualifiersCount do&lt;br /&gt;
			-- check if given qualifier ID is an alias and add it&lt;br /&gt;
			cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
		end&lt;br /&gt;
	elseif cfg.states[parameters.reference] then&lt;br /&gt;
		-- do further processing if &amp;quot;reference(s)&amp;quot; command was given&lt;br /&gt;
&lt;br /&gt;
		cfg.propertyValue = nextArg(args)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- check for special property value &#039;somevalue&#039; or &#039;novalue&#039;&lt;br /&gt;
	if cfg.propertyValue then&lt;br /&gt;
		cfg.propertyValue = replaceSpecialChars(cfg.propertyValue)&lt;br /&gt;
&lt;br /&gt;
		if cfg.propertyValue ~= &amp;quot;&amp;quot; and mw.text.trim(cfg.propertyValue) == &amp;quot;&amp;quot; then&lt;br /&gt;
			cfg.propertyValue = &amp;quot; &amp;quot;  -- single space represents &#039;somevalue&#039;, whereas empty string represents &#039;novalue&#039;&lt;br /&gt;
		else&lt;br /&gt;
			cfg.propertyValue = mw.text.trim(cfg.propertyValue)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- parse the desired format, or choose an appropriate format&lt;br /&gt;
	if args[&amp;quot;format&amp;quot;] then&lt;br /&gt;
		parsedFormat, formatParams = parseFormat(args[&amp;quot;format&amp;quot;])&lt;br /&gt;
	elseif cfg.states.qualifiersCount &amp;gt; 0 then  -- &amp;quot;qualifier(s)&amp;quot; command given&lt;br /&gt;
		if cfg.states[parameters.property] then  -- &amp;quot;propert(y|ies)&amp;quot; command given&lt;br /&gt;
			parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier)&lt;br /&gt;
		else&lt;br /&gt;
			parsedFormat, formatParams = parseFormat(formats.qualifier)&lt;br /&gt;
		end&lt;br /&gt;
	elseif cfg.states[parameters.property] then  -- &amp;quot;propert(y|ies)&amp;quot; command given&lt;br /&gt;
		parsedFormat, formatParams = parseFormat(formats.property)&lt;br /&gt;
	else  -- &amp;quot;reference(s)&amp;quot; command given&lt;br /&gt;
		parsedFormat, formatParams = parseFormat(formats.reference)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if a &amp;quot;qualifier(s)&amp;quot; command and no &amp;quot;propert(y|ies)&amp;quot; command has been given, make the movable separator a semicolon&lt;br /&gt;
	if cfg.states.qualifiersCount &amp;gt; 0 and not cfg.states[parameters.property] then&lt;br /&gt;
		cfg.separators[&amp;quot;sep&amp;quot;..parameters.separator][1] = {&amp;quot;;&amp;quot;}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if only &amp;quot;reference(s)&amp;quot; has been given, set the default separator to none (except when raw)&lt;br /&gt;
	if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0&lt;br /&gt;
	   and not cfg.states[parameters.reference].rawValue then&lt;br /&gt;
		cfg.separators[&amp;quot;sep&amp;quot;][1] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if exactly one &amp;quot;qualifier(s)&amp;quot; command has been given, make &amp;quot;sep%q&amp;quot; point to &amp;quot;sep%q1&amp;quot; to make them equivalent&lt;br /&gt;
	if cfg.states.qualifiersCount == 1 then&lt;br /&gt;
		cfg.separators[&amp;quot;sep&amp;quot;..parameters.qualifier] = cfg.separators[&amp;quot;sep&amp;quot;..parameters.qualifier..&amp;quot;1&amp;quot;]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- process overridden separator values;&lt;br /&gt;
	-- must come AFTER tweaking the default separators&lt;br /&gt;
	cfg:processSeparators(args)&lt;br /&gt;
&lt;br /&gt;
	-- define the hooks that should be called (getProperty, getQualifiers, getReferences);&lt;br /&gt;
	-- only define a hook if both its command (&amp;quot;propert(y|ies)&amp;quot;, &amp;quot;reference(s)&amp;quot;, &amp;quot;qualifier(s)&amp;quot;) and its parameter (&amp;quot;%p&amp;quot;, &amp;quot;%r&amp;quot;, &amp;quot;%q1&amp;quot;, &amp;quot;%q2&amp;quot;, &amp;quot;%q3&amp;quot;) have been given&lt;br /&gt;
	for i, v in pairs(cfg.states) do&lt;br /&gt;
		-- e.g. &#039;formatParams[&amp;quot;%q1&amp;quot;] or formatParams[&amp;quot;%q&amp;quot;]&#039; to define hook even if &amp;quot;%q1&amp;quot; was not defined to be able to build a complete value for &amp;quot;%q&amp;quot;&lt;br /&gt;
		if formatParams[i] or formatParams[i:sub(1, 2)] then&lt;br /&gt;
			hooks[i] = getHookName(i, 1)&lt;br /&gt;
			hooks.count = hooks.count + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- the &amp;quot;%q&amp;quot; parameter is not attached to a state, but is a collection of the results of multiple states (attached to &amp;quot;%q1&amp;quot;, &amp;quot;%q2&amp;quot;, &amp;quot;%q3&amp;quot;, ...);&lt;br /&gt;
	-- so if this parameter is given then this hook must be defined separately, but only if at least one &amp;quot;qualifier(s)&amp;quot; command has been given&lt;br /&gt;
	if formatParams[parameters.qualifier] and cfg.states.qualifiersCount &amp;gt; 0 then&lt;br /&gt;
		hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1)&lt;br /&gt;
		hooks.count = hooks.count + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- create a state for &amp;quot;properties&amp;quot; if it doesn&#039;t exist yet, which will be used as a base configuration for each claim iteration;&lt;br /&gt;
	-- must come AFTER defining the hooks&lt;br /&gt;
	if not cfg.states[parameters.property] then&lt;br /&gt;
		cfg.states[parameters.property] = State:new(cfg, parameters.property)&lt;br /&gt;
&lt;br /&gt;
		-- if the &amp;quot;single&amp;quot; flag has been given then this state should be equivalent to &amp;quot;property&amp;quot; (singular)&lt;br /&gt;
		if cfg.singleClaim then&lt;br /&gt;
			cfg.states[parameters.property].singleValue = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if the &amp;quot;sourced&amp;quot; flag has been given then create a state for &amp;quot;reference&amp;quot; if it doesn&#039;t exist yet, using default values,&lt;br /&gt;
	-- which must exist in order to be able to determine if a claim has any references;&lt;br /&gt;
	-- must come AFTER defining the hooks&lt;br /&gt;
	if cfg.sourcedOnly and not cfg.states[parameters.reference] then&lt;br /&gt;
		cfg:processFlagOrCommand(p.claimCommands.reference)  -- use singular &amp;quot;reference&amp;quot; to minimize overhead&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- set the parsed format and the separators (and optional punctuation mark);&lt;br /&gt;
	-- must come AFTER creating the additonal states&lt;br /&gt;
	cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat)&lt;br /&gt;
&lt;br /&gt;
	-- process qualifier matching values, analogous to cfg.propertyValue&lt;br /&gt;
	for i, v in pairs(args) do&lt;br /&gt;
		i = tostring(i)&lt;br /&gt;
&lt;br /&gt;
		if i:match(&#039;^[Pp]%d+$&#039;) or aliasesP[i] then&lt;br /&gt;
			v = replaceSpecialChars(v)&lt;br /&gt;
&lt;br /&gt;
			-- check for special qualifier value &#039;somevalue&#039;&lt;br /&gt;
			if v ~= &amp;quot;&amp;quot; and mw.text.trim(v) == &amp;quot;&amp;quot; then&lt;br /&gt;
				v = &amp;quot; &amp;quot;  -- single space represents &#039;somevalue&#039;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated)&lt;br /&gt;
	claims = sortOnRank(claims)&lt;br /&gt;
&lt;br /&gt;
	-- then iterate through the claims to collect values&lt;br /&gt;
	value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches))  -- pass property state with level 1 hooks and matchHook&lt;br /&gt;
&lt;br /&gt;
	-- if desired, add a clickable icon that may be used to edit the returned values on Wikidata&lt;br /&gt;
	if cfg.editable and value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		value = value .. cfg:getEditIcon()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function generalCommand(args, funcName)&lt;br /&gt;
	local cfg = Config:new()&lt;br /&gt;
	cfg.curState = State:new(cfg)&lt;br /&gt;
&lt;br /&gt;
	local lastArg&lt;br /&gt;
	local value = nil&lt;br /&gt;
&lt;br /&gt;
	repeat&lt;br /&gt;
		lastArg = nextArg(args)&lt;br /&gt;
	until not cfg:processFlag(lastArg)&lt;br /&gt;
&lt;br /&gt;
	-- get the entity ID from either the positional argument, the eid argument or the page argument&lt;br /&gt;
	cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true, args[p.args.globalSiteId])&lt;br /&gt;
&lt;br /&gt;
	if cfg.entityID == &amp;quot;&amp;quot; or not mw.wikibase.entityExists(cfg.entityID) then&lt;br /&gt;
		return &amp;quot;&amp;quot;  -- we cannot continue without an entity&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- serve according to the given command&lt;br /&gt;
	if funcName == p.generalCommands.label then&lt;br /&gt;
		value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName)&lt;br /&gt;
	elseif funcName == p.generalCommands.title then&lt;br /&gt;
		cfg.inSitelinks = true&lt;br /&gt;
&lt;br /&gt;
		if cfg.entityID:sub(1,1) == &amp;quot;Q&amp;quot; then&lt;br /&gt;
			value = mw.wikibase.getSitelink(cfg.entityID)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if cfg.curState.linked and value then&lt;br /&gt;
			value = buildWikilink(value)&lt;br /&gt;
		end&lt;br /&gt;
	elseif funcName == p.generalCommands.description then&lt;br /&gt;
		value = mw.wikibase.getDescription(cfg.entityID)&lt;br /&gt;
	else&lt;br /&gt;
		local parsedFormat, formatParams&lt;br /&gt;
		local hooks = {count = 0}&lt;br /&gt;
&lt;br /&gt;
		cfg.entity = mw.wikibase.getEntity(cfg.entityID)&lt;br /&gt;
&lt;br /&gt;
		if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then&lt;br /&gt;
			cfg.curState.singleValue = true&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then&lt;br /&gt;
			if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then&lt;br /&gt;
				return &amp;quot;&amp;quot;  -- there is no use to continue without any aliasses&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local aliases = cfg.entity.aliases[cfg.langCode]&lt;br /&gt;
&lt;br /&gt;
			-- parse the desired format, or parse the default aliases format&lt;br /&gt;
			if args[&amp;quot;format&amp;quot;] then&lt;br /&gt;
				parsedFormat, formatParams = parseFormat(args[&amp;quot;format&amp;quot;])&lt;br /&gt;
			else&lt;br /&gt;
				parsedFormat, formatParams = parseFormat(formats.alias)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- process overridden separator values;&lt;br /&gt;
			-- must come AFTER tweaking the default separators&lt;br /&gt;
			cfg:processSeparators(args)&lt;br /&gt;
&lt;br /&gt;
			-- define the hook that should be called (getAlias);&lt;br /&gt;
			-- only define the hook if the parameter (&amp;quot;%a&amp;quot;) has been given&lt;br /&gt;
			if formatParams[parameters.alias] then&lt;br /&gt;
				hooks[parameters.alias] = getHookName(parameters.alias, 1)&lt;br /&gt;
				hooks.count = hooks.count + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- set the parsed format and the separators (and optional punctuation mark)&lt;br /&gt;
			cfg:setFormatAndSeparators(cfg.curState, parsedFormat)&lt;br /&gt;
&lt;br /&gt;
			-- iterate to collect values&lt;br /&gt;
			value = cfg:concatValues(cfg.curState:iterate(aliases, hooks))&lt;br /&gt;
		elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then&lt;br /&gt;
			if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then&lt;br /&gt;
				return &amp;quot;&amp;quot;  -- there is no use to continue without any badges&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local badges = cfg.entity.sitelinks[cfg.siteID].badges&lt;br /&gt;
&lt;br /&gt;
			cfg.inSitelinks = true&lt;br /&gt;
&lt;br /&gt;
			-- parse the desired format, or parse the default aliases format&lt;br /&gt;
			if args[&amp;quot;format&amp;quot;] then&lt;br /&gt;
				parsedFormat, formatParams = parseFormat(args[&amp;quot;format&amp;quot;])&lt;br /&gt;
			else&lt;br /&gt;
				parsedFormat, formatParams = parseFormat(formats.badge)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- process overridden separator values;&lt;br /&gt;
			-- must come AFTER tweaking the default separators&lt;br /&gt;
			cfg:processSeparators(args)&lt;br /&gt;
&lt;br /&gt;
			-- define the hook that should be called (getBadge);&lt;br /&gt;
			-- only define the hook if the parameter (&amp;quot;%b&amp;quot;) has been given&lt;br /&gt;
			if formatParams[parameters.badge] then&lt;br /&gt;
				hooks[parameters.badge] = getHookName(parameters.badge, 1)&lt;br /&gt;
				hooks.count = hooks.count + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- set the parsed format and the separators (and optional punctuation mark)&lt;br /&gt;
			cfg:setFormatAndSeparators(cfg.curState, parsedFormat)&lt;br /&gt;
&lt;br /&gt;
			-- iterate to collect values&lt;br /&gt;
			value = cfg:concatValues(cfg.curState:iterate(badges, hooks))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	value = value or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if cfg.editable and value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		-- if desired, add a clickable icon that may be used to edit the returned value on Wikidata&lt;br /&gt;
		value = value .. cfg:getEditIcon()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args)&lt;br /&gt;
local function establishCommands(commandList, commandFunc)&lt;br /&gt;
	for _, commandName in pairs(commandList) do&lt;br /&gt;
		local function wikitextWrapper(frame)&lt;br /&gt;
			local args = copyTable(frame.args)&lt;br /&gt;
			args.pointer = 1&lt;br /&gt;
			loadI18n(aliasesP, frame)&lt;br /&gt;
			return commandFunc(args, commandName)&lt;br /&gt;
		end&lt;br /&gt;
		p[commandName] = wikitextWrapper&lt;br /&gt;
&lt;br /&gt;
		local function luaWrapper(args)&lt;br /&gt;
			args = copyTable(args)&lt;br /&gt;
			args.pointer = 1&lt;br /&gt;
			loadI18n(aliasesP)&lt;br /&gt;
			return commandFunc(args, commandName)&lt;br /&gt;
		end&lt;br /&gt;
		p[&amp;quot;_&amp;quot; .. commandName] = luaWrapper&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
establishCommands(p.claimCommands, claimCommand)&lt;br /&gt;
establishCommands(p.generalCommands, generalCommand)&lt;br /&gt;
&lt;br /&gt;
-- main function that is supposed to be used by wrapper templates&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	if not mw.wikibase then return nil end&lt;br /&gt;
&lt;br /&gt;
	local f, args&lt;br /&gt;
&lt;br /&gt;
	loadI18n(aliasesP, frame)&lt;br /&gt;
&lt;br /&gt;
	-- get the parent frame to take the arguments that were passed to the wrapper template&lt;br /&gt;
	frame = frame:getParent() or frame&lt;br /&gt;
&lt;br /&gt;
	if not frame.args[1] then&lt;br /&gt;
		throwError(&amp;quot;no-function-specified&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	f = mw.text.trim(frame.args[1])&lt;br /&gt;
&lt;br /&gt;
	if f == &amp;quot;main&amp;quot; then&lt;br /&gt;
		throwError(&amp;quot;main-called-twice&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	assert(p[&amp;quot;_&amp;quot;..f], errorText(&#039;no-such-function&#039;, f))&lt;br /&gt;
&lt;br /&gt;
	-- copy arguments from immutable to mutable table&lt;br /&gt;
	args = copyTable(frame.args)&lt;br /&gt;
&lt;br /&gt;
	-- remove the function name from the list&lt;br /&gt;
	table.remove(args, 1)&lt;br /&gt;
&lt;br /&gt;
	return p[&amp;quot;_&amp;quot;..f](args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Short_description/lowercasecheck&amp;diff=1551</id>
		<title>Template:Short description/lowercasecheck</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Short_description/lowercasecheck&amp;diff=1551"/>
		<updated>2025-02-21T04:43:13Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq:&amp;lt;!--test first character for lower-case letter--&amp;gt;{{#invoke:string|find|1={{{1|}}}|2=^%l|plain=false}}|1&lt;br /&gt;
|&amp;lt;!-- first character is a lower case letter; test against whitelist&lt;br /&gt;
--&amp;gt;{{#switch: {{First word|{{{1|}}}}}&amp;lt;!--begin whitelist--&amp;gt;&lt;br /&gt;
|c. &amp;lt;!--for circa--&amp;gt;&lt;br /&gt;
|gTLD&lt;br /&gt;
|iMac&lt;br /&gt;
|iOS&lt;br /&gt;
|iOS,&lt;br /&gt;
|iPad&lt;br /&gt;
|iPhone&lt;br /&gt;
|iTunes&lt;br /&gt;
|macOS&lt;br /&gt;
|none&lt;br /&gt;
|pH&lt;br /&gt;
|pH-dependent=&amp;lt;!-- end whitelist; short description starts with an allowed lower-case string; whitelist matched; do nothing --&amp;gt; &lt;br /&gt;
|#default=&amp;lt;!-- apply category to track lower-case short descriptions --&amp;gt;{{main other|[[Category:Pages with lower-case short description|{{trim|{{{1|}}}}}]]}}{{Testcases other|{{red|CATEGORY APPLIED}}}}&amp;lt;!-- end whitelist test --&amp;gt;}}&lt;br /&gt;
|&amp;lt;!-- short description does not start with lower-case letter; do nothing; end lower-case test --&amp;gt;&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Pagetype/rfd&amp;diff=1549</id>
		<title>Module:Pagetype/rfd</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Pagetype/rfd&amp;diff=1549"/>
		<updated>2025-02-21T04:43:13Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This page contains a table of all RfD templates and their&lt;br /&gt;
-- redirects. Templates names are capitalized, and the Template: prefix is&lt;br /&gt;
-- removed. Templates are grouped with the main template first, followed by&lt;br /&gt;
-- its redirects.&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	-- Template forms (these should be substituted so we should rarely see these)&lt;br /&gt;
	[&amp;quot;Redirect for discussion&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;RFD&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;RfD&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Rfd1&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Rfd-t&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Rfd&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Rfd-NPF&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;Rfd-NPF/core&amp;quot;] = true,&lt;br /&gt;
	-- Module forms&lt;br /&gt;
	[&amp;quot;#invoke:RfD&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;#invoke:RfD&amp;quot;] = true, -- The form made by substituting RfD&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Pagetype/softredirect&amp;diff=1547</id>
		<title>Module:Pagetype/softredirect</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Pagetype/softredirect&amp;diff=1547"/>
		<updated>2025-02-21T04:43:12Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This page contains a table of all soft redirect templates and their&lt;br /&gt;
-- redirects. Templates names are capitalized, and the Template: prefix is&lt;br /&gt;
-- removed. Templates are grouped with the main template first, followed by&lt;br /&gt;
-- its redirects.&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	[&amp;quot;R from category navigation&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Redirect from category navigation&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Category redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Cat move&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Cat red&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Cat redir&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Cat redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Category move&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Category Redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Categoryredirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Catr&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Catred&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Catredir&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Catredirect&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;R from template-generated category&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Redirect from template-generated category&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Portal soft redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Portal Redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Portal redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Portal Soft Redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Portalredirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Portalsoftredirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;PortRed&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Portred&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Portsoftred&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;PSR&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Psr&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Soft portal redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Soft redirect portal&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;SPR&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Spr&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;SRP&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Srp&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Salted redirect&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Soft redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Interwiki redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Plain soft redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Soft&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Soft link&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Soft redir&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Soft Redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Softr&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Softredir&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;SoftRedirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Softredirect&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Userrename&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Wikibooks redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;WBOOK&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wbook&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wikibook redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wikibooks Redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;WikibooksRedirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wikibooksredirect&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Wikimedia Commons redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;COMM&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Comm&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Commons Redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Commons redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;CommonsRedirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Commonsredirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wikimedia commons redirect&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Wikiquote redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wq&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Wikisource redirect&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Wikispecies redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wikispecies Redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;WikispeciesRedirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wikispeciesredirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;WSPEC&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wspec&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Wikivoyage redirect&amp;quot;] = true,&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;Wiktionary redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Moved to Wiktionary&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;RedirecttoWiktionary&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wi&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wikt red&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wikt redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wiktionary Redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wiktionary-redirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;WiktionaryRedirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wiktionaryredirect&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wiktr&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wiktred&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wiktredir&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wtr&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;Wtsr&amp;quot;] = true,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Wikitext_Parsing&amp;diff=1545</id>
		<title>Module:Wikitext Parsing</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Wikitext_Parsing&amp;diff=1545"/>
		<updated>2025-02-21T04:43:12Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&amp;quot;strict&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
--Helper functions&lt;br /&gt;
local function startswith(text, subtext)&lt;br /&gt;
	return string.sub(text, 1, #subtext) == subtext&lt;br /&gt;
end&lt;br /&gt;
local function endswith(text, subtext)&lt;br /&gt;
	return string.sub(text, -#subtext, -1) == subtext&lt;br /&gt;
end&lt;br /&gt;
local function allcases(s)&lt;br /&gt;
	return s:gsub(&amp;quot;%a&amp;quot;, function(c) &lt;br /&gt;
		return &amp;quot;[&amp;quot;..c:upper()..c:lower()..&amp;quot;]&amp;quot;&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
local trimcache = {}&lt;br /&gt;
local whitespace = {[&amp;quot; &amp;quot;]=1, [&amp;quot;\n&amp;quot;]=1, [&amp;quot;\t&amp;quot;]=1, [&amp;quot;\r&amp;quot;]=1}&lt;br /&gt;
local function cheaptrim(str) --mw.text.trim is surprisingly expensive, so here&#039;s an alternative approach&lt;br /&gt;
	local quick = trimcache[str]&lt;br /&gt;
	if quick then&lt;br /&gt;
		return quick&lt;br /&gt;
	else&lt;br /&gt;
		-- local out = string.gsub(str, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
		local lowEnd&lt;br /&gt;
		for i = 1,#str do&lt;br /&gt;
			if not whitespace[string.sub(str, i, i)] then&lt;br /&gt;
				lowEnd = i&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if not lowEnd then&lt;br /&gt;
			trimcache[str] = &amp;quot;&amp;quot;&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		for i = #str,1,-1 do&lt;br /&gt;
			if not whitespace[string.sub(str, i, i)] then&lt;br /&gt;
				local out = string.sub(str, lowEnd, i)&lt;br /&gt;
				trimcache[str] = out&lt;br /&gt;
				return out&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[=[ Implementation notes&lt;br /&gt;
---- NORMAL HTML TAGS ----&lt;br /&gt;
Tags are very strict on how they want to start, but loose on how they end.&lt;br /&gt;
The start must strictly follow &amp;lt;[tAgNaMe](%s|&amp;gt;) with no room for whitespace in&lt;br /&gt;
the tag&#039;s name, but may then flow as they want afterwards, making&lt;br /&gt;
&amp;lt;div\nclass\n=\n&amp;quot;\nerror\n&amp;quot;\n&amp;gt; valid&lt;br /&gt;
&lt;br /&gt;
There&#039;s no sense of escaping &amp;lt; or &amp;gt;&lt;br /&gt;
E.g.&lt;br /&gt;
 &amp;lt;div class=&amp;quot;error\&amp;gt;&amp;quot;&amp;gt; will end at \&amp;gt; despite it being inside a quote&lt;br /&gt;
 &amp;lt;div class=&amp;quot;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;error&amp;lt;/span&amp;gt;&amp;quot;&amp;gt; will not process the larger div&lt;br /&gt;
&lt;br /&gt;
If a tag has no end, it will consume all text instead of not processing&lt;br /&gt;
&lt;br /&gt;
---- NOPROCESSING TAGS (nowiki, pre, syntaxhighlight, source, etc.) ----&lt;br /&gt;
(In most comments, &amp;lt;source&amp;gt; will not be mentioned. This is because it is the&lt;br /&gt;
deprecated version of &amp;lt;syntaxhighlight&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
No-Processing tags have some interesting differences to the above rules.&lt;br /&gt;
For example, their syntax is a lot stricter. While an opening tag appears to&lt;br /&gt;
follow the same set of rules, A closing tag can&#039;t have any sort of extra&lt;br /&gt;
formatting period. While &amp;lt;/div a/a&amp;gt; is valid, &amp;lt;/nowiki a/a&amp;gt; isn&#039;t - only&lt;br /&gt;
newlines and spaces/tabs are allowed in closing tags.&lt;br /&gt;
Note that, even though &amp;lt;pre&amp;gt; tags cause a visual change when the ending tag has&lt;br /&gt;
extra formatting, it won&#039;t cause the no-processing effects. For some reason, the&lt;br /&gt;
format must be strict for that to apply.&lt;br /&gt;
&lt;br /&gt;
Both the content inside the tag pair and the content inside each side of the&lt;br /&gt;
pair is not processed. E.g. &amp;lt;nowiki |}}&amp;gt;|}}&amp;lt;/nowiki&amp;gt; would have both of the |}}&lt;br /&gt;
escaped in practice.&lt;br /&gt;
&lt;br /&gt;
When something in the code is referenced to as a &amp;quot;Nowiki Tag&amp;quot;, it means a tag&lt;br /&gt;
which causes wiki text to not be processed, which includes &amp;lt;nowiki&amp;gt;, &amp;lt;pre&amp;gt;,&lt;br /&gt;
and &amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since we only care about these tags, we can ignore the idea of an intercepting&lt;br /&gt;
tag preventing processing, and just go straight for the first ending we can find&lt;br /&gt;
If there is no ending to find, the tag will NOT consume the rest of the text in&lt;br /&gt;
terms of processing behaviour (though &amp;lt;pre&amp;gt; will appear to have an effect).&lt;br /&gt;
Even if there is no end of the tag, the content inside the opening half will&lt;br /&gt;
still be unprocessed, meaning {{X20|&amp;lt;nowiki }}&amp;gt;}} wouldn&#039;t end at the first }}&lt;br /&gt;
despite there being no ending to the tag.&lt;br /&gt;
&lt;br /&gt;
Note that there are some tags, like &amp;lt;math&amp;gt;, which also function like &amp;lt;nowiki&amp;gt;&lt;br /&gt;
which are included in this aswell. Some other tags, like &amp;lt;ref&amp;gt;, have far too&lt;br /&gt;
unpredictable behaviour to be handled currently (they&#039;d have to be split and&lt;br /&gt;
processed as something seperate - its complicated, but maybe not impossible.)&lt;br /&gt;
I suspect that every tag listed in [[Special:Version]] may behave somewhat like&lt;br /&gt;
this, but that&#039;s far too many cases worth checking for rarely used tags that may&lt;br /&gt;
not even have a good reason to contain {{ or }} anyways, so we leave them alone.&lt;br /&gt;
&lt;br /&gt;
---- HTML COMMENTS AND INCLUDEONLY ----&lt;br /&gt;
HTML Comments are about as basic as it could get for this&lt;br /&gt;
Start at &amp;lt;!--, end at --&amp;gt;, no extra conditions. Simple enough&lt;br /&gt;
If a comment has no end, it will eat all text instead of not being processed&lt;br /&gt;
&lt;br /&gt;
includeonly tags function mostly like a regular nowiki tag, with the exception&lt;br /&gt;
that the tag will actually consume all future text if not given an ending as&lt;br /&gt;
opposed to simply giving up and not changing anything. Due to complications and&lt;br /&gt;
the fact that this is far less likely to be present on a page, aswell as being&lt;br /&gt;
something that may not want to be escaped, includeonly tags are ignored during&lt;br /&gt;
our processing&lt;br /&gt;
--]=]&lt;br /&gt;
local validtags = {nowiki=1, pre=1, syntaxhighlight=1, source=1, math=1}&lt;br /&gt;
--This function expects the string to start with the tag&lt;br /&gt;
local function TestForNowikiTag(text, scanPosition)&lt;br /&gt;
	local tagName = (string.match(text, &amp;quot;^&amp;lt;([^\n /&amp;gt;]+)&amp;quot;, scanPosition) or &amp;quot;&amp;quot;):lower()&lt;br /&gt;
	if not validtags[tagName] then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local nextOpener = string.find(text, &amp;quot;&amp;lt;&amp;quot;, scanPosition+1) or -1&lt;br /&gt;
	local nextCloser = string.find(text, &amp;quot;&amp;gt;&amp;quot;, scanPosition+1) or -1&lt;br /&gt;
	if nextCloser &amp;gt; -1 and (nextOpener == -1 or nextCloser &amp;lt; nextOpener) then&lt;br /&gt;
		local startingTag = string.sub(text, scanPosition, nextCloser)&lt;br /&gt;
		--We have our starting tag (E.g. &#039;&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
		--Now find our ending...&lt;br /&gt;
		if endswith(startingTag, &amp;quot;/&amp;gt;&amp;quot;) then --self-closing tag (we are our own ending)&lt;br /&gt;
			return {&lt;br /&gt;
				Tag = tagName,&lt;br /&gt;
				Start = startingTag,&lt;br /&gt;
				Content = &amp;quot;&amp;quot;, End = &amp;quot;&amp;quot;,&lt;br /&gt;
				Length = #startingTag&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
		else&lt;br /&gt;
			local endingTagStart, endingTagEnd = string.find(text, &amp;quot;&amp;lt;/&amp;quot;..allcases(tagName)..&amp;quot;[ \t\n]*&amp;gt;&amp;quot;, scanPosition)&lt;br /&gt;
			if endingTagStart then --Regular tag formation&lt;br /&gt;
				local endingTag = string.sub(text, endingTagStart, endingTagEnd)&lt;br /&gt;
				local tagContent = string.sub(text, nextCloser+1, endingTagStart-1)&lt;br /&gt;
				return {&lt;br /&gt;
					Tag = tagName,&lt;br /&gt;
					Start = startingTag,&lt;br /&gt;
					Content = tagContent,&lt;br /&gt;
					End = endingTag,&lt;br /&gt;
					Length = #startingTag + #tagContent + #endingTag&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
			else --Content inside still needs escaping (also linter error!)&lt;br /&gt;
				return {&lt;br /&gt;
					Tag = tagName,&lt;br /&gt;
					Start = startingTag,&lt;br /&gt;
					Content = &amp;quot;&amp;quot;, End = &amp;quot;&amp;quot;,&lt;br /&gt;
					Length = #startingTag&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
local function TestForComment(text, scanPosition) --Like TestForNowikiTag but for &amp;lt;!-- --&amp;gt;&lt;br /&gt;
	if string.match(text, &amp;quot;^&amp;lt;!%-%-&amp;quot;, scanPosition) then&lt;br /&gt;
		local commentEnd = string.find(text, &amp;quot;--&amp;gt;&amp;quot;, scanPosition+4, true)&lt;br /&gt;
		if commentEnd then&lt;br /&gt;
			return {&lt;br /&gt;
				Start = &amp;quot;&amp;lt;!--&amp;quot;, End = &amp;quot;--&amp;gt;&amp;quot;,&lt;br /&gt;
				Content = string.sub(text, scanPosition+4, commentEnd-1),&lt;br /&gt;
				Length = commentEnd-scanPosition+3&lt;br /&gt;
			}&lt;br /&gt;
		else --Consumes all text if not given an ending&lt;br /&gt;
			return {&lt;br /&gt;
				Start = &amp;quot;&amp;lt;!--&amp;quot;, End = &amp;quot;&amp;quot;,&lt;br /&gt;
				Content = string.sub(text, scanPosition+4),&lt;br /&gt;
				Length = #text-scanPosition+1&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ Implementation notes&lt;br /&gt;
The goal of this function is to escape all text that wouldn&#039;t be parsed if it&lt;br /&gt;
was preprocessed (see above implementation notes).&lt;br /&gt;
&lt;br /&gt;
Using keepComments will keep all HTML comments instead of removing them. They&lt;br /&gt;
will still be escaped regardless to avoid processing errors&lt;br /&gt;
--]]&lt;br /&gt;
local function PrepareText(text, keepComments)&lt;br /&gt;
	local newtext = {}&lt;br /&gt;
	local scanPosition = 1&lt;br /&gt;
	while true do&lt;br /&gt;
		local NextCheck = string.find(text, &amp;quot;&amp;lt;[NnSsPpMm!]&amp;quot;, scanPosition) --Advance to the next potential tag we care about&lt;br /&gt;
		if not NextCheck then --Done&lt;br /&gt;
			newtext[#newtext+1] =  string.sub(text,scanPosition)&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		newtext[#newtext+1] = string.sub(text,scanPosition,NextCheck-1)&lt;br /&gt;
		scanPosition = NextCheck&lt;br /&gt;
		local Comment = TestForComment(text, scanPosition)&lt;br /&gt;
		if Comment then&lt;br /&gt;
			if keepComments then&lt;br /&gt;
				newtext[#newtext+1] = Comment.Start .. mw.text.nowiki(Comment.Content) .. Comment.End&lt;br /&gt;
			end&lt;br /&gt;
			scanPosition = scanPosition + Comment.Length&lt;br /&gt;
		else&lt;br /&gt;
			local Tag = TestForNowikiTag(text, scanPosition)&lt;br /&gt;
			if Tag then&lt;br /&gt;
				local newTagStart = &amp;quot;&amp;lt;&amp;quot; .. mw.text.nowiki(string.sub(Tag.Start,2,-2)) .. &amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
				local newTagEnd = &lt;br /&gt;
					Tag.End == &amp;quot;&amp;quot; and &amp;quot;&amp;quot; or --Respect no tag ending&lt;br /&gt;
					&amp;quot;&amp;lt;/&amp;quot; .. mw.text.nowiki(string.sub(Tag.End,3,-2)) .. &amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
				local newContent = mw.text.nowiki(Tag.Content)&lt;br /&gt;
				newtext[#newtext+1] = newTagStart .. newContent .. newTagEnd&lt;br /&gt;
				scanPosition = scanPosition + Tag.Length&lt;br /&gt;
			else --Nothing special, move on...&lt;br /&gt;
				newtext[#newtext+1] = string.sub(text, scanPosition, scanPosition)&lt;br /&gt;
				scanPosition = scanPosition + 1&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(newtext, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[=[ Implementation notes&lt;br /&gt;
This function is an alternative to Transcluder&#039;s getParameters which considers&lt;br /&gt;
the potential for a singular { or } or other odd syntax that %b doesn&#039;t like to&lt;br /&gt;
be in a parameter&#039;s value.&lt;br /&gt;
&lt;br /&gt;
When handling the difference between {{ and {{{, mediawiki will attempt to match&lt;br /&gt;
as many sequences of {{{ as possible before matching a {{&lt;br /&gt;
E.g.&lt;br /&gt;
 {{{{A}}}} -&amp;gt; { {{{A}}} }&lt;br /&gt;
 {{{{{{{{Text|A}}}}}}}} -&amp;gt; {{ {{{ {{{Text|A}}} }}} }}&lt;br /&gt;
If there aren&#039;t enough triple braces on both sides, the parser will compromise&lt;br /&gt;
for a template interpretation.&lt;br /&gt;
E.g.&lt;br /&gt;
 {{{{A}} }} -&amp;gt; {{ {{ A }} }}&lt;br /&gt;
&lt;br /&gt;
While there are technically concerns about things such as wikilinks breaking&lt;br /&gt;
template processing (E.g. {{[[}}]]}} doesn&#039;t stop at the first }}), it shouldn&#039;t&lt;br /&gt;
be our job to process inputs perfectly when the input has garbage ({ / } isn&#039;t&lt;br /&gt;
legal in titles anyways, so if something&#039;s unmatched in a wikilink, it&#039;s&lt;br /&gt;
guaranteed GIGO)&lt;br /&gt;
&lt;br /&gt;
Setting dontEscape will prevent running the input text through EET. Avoid&lt;br /&gt;
setting this to true if you don&#039;t have to set it.&lt;br /&gt;
&lt;br /&gt;
Returned values:&lt;br /&gt;
A table of all templates. Template data goes as follows:&lt;br /&gt;
 Text: The raw text of the template&lt;br /&gt;
 Name: The name of the template&lt;br /&gt;
 Args: A list of arguments&lt;br /&gt;
 Children: A list of immediate template children&lt;br /&gt;
--]=]&lt;br /&gt;
--Helper functions&lt;br /&gt;
local function boundlen(pair)&lt;br /&gt;
	return pair.End-pair.Start+1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Main function&lt;br /&gt;
local function ParseTemplates(InputText, dontEscape)&lt;br /&gt;
	--Setup&lt;br /&gt;
	if not dontEscape then&lt;br /&gt;
		InputText = PrepareText(InputText)&lt;br /&gt;
	end&lt;br /&gt;
	local function finalise(text)&lt;br /&gt;
		if not dontEscape then&lt;br /&gt;
			return mw.text.decode(text)&lt;br /&gt;
		else&lt;br /&gt;
			return text&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local function CreateContainerObj(Container)&lt;br /&gt;
		Container.Text = {}&lt;br /&gt;
		Container.Args = {}&lt;br /&gt;
		Container.ArgOrder = {}&lt;br /&gt;
		Container.Children = {}&lt;br /&gt;
		-- Container.Name = nil&lt;br /&gt;
		-- Container.Value = nil&lt;br /&gt;
		-- Container.Key = nil&lt;br /&gt;
		Container.BeyondStart = false&lt;br /&gt;
		Container.LastIndex = 1&lt;br /&gt;
		Container.finalise = finalise&lt;br /&gt;
		function Container:HandleArgInput(character, internalcall)&lt;br /&gt;
			if not internalcall then&lt;br /&gt;
				self.Text[#self.Text+1] = character&lt;br /&gt;
			end&lt;br /&gt;
			if character == &amp;quot;=&amp;quot; then&lt;br /&gt;
				if self.Key then&lt;br /&gt;
					self.Value[#self.Value+1] = character&lt;br /&gt;
				else&lt;br /&gt;
					self.Key = cheaptrim(self.Value and table.concat(self.Value, &amp;quot;&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
					self.Value = {}&lt;br /&gt;
				end&lt;br /&gt;
			else --&amp;quot;|&amp;quot; or &amp;quot;}&amp;quot;&lt;br /&gt;
				if not self.Name then&lt;br /&gt;
					self.Name = cheaptrim(self.Value and table.concat(self.Value, &amp;quot;&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
					self.Value = nil&lt;br /&gt;
				else&lt;br /&gt;
					self.Value = self.finalise(self.Value and table.concat(self.Value, &amp;quot;&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
					if self.Key then&lt;br /&gt;
						self.Key = self.finalise(self.Key)&lt;br /&gt;
						self.Args[self.Key] = cheaptrim(self.Value)&lt;br /&gt;
						self.ArgOrder[#self.ArgOrder+1] = self.Key&lt;br /&gt;
					else&lt;br /&gt;
						local Key = tostring(self.LastIndex)&lt;br /&gt;
						self.Args[Key] = self.Value&lt;br /&gt;
						self.ArgOrder[#self.ArgOrder+1] = Key&lt;br /&gt;
						self.LastIndex = self.LastIndex + 1&lt;br /&gt;
					end&lt;br /&gt;
					self.Key = nil&lt;br /&gt;
					self.Value = nil&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		function Container:AppendText(text, ftext)&lt;br /&gt;
			self.Text[#self.Text+1] = (ftext or text)&lt;br /&gt;
			if not self.Value then&lt;br /&gt;
				self.Value = {}&lt;br /&gt;
			end&lt;br /&gt;
			self.BeyondStart = self.BeyondStart or (#table.concat(self.Text, &amp;quot;&amp;quot;) &amp;gt; 2)&lt;br /&gt;
			if self.BeyondStart then&lt;br /&gt;
				self.Value[#self.Value+1] = text&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		function Container:Clean(IsTemplate)&lt;br /&gt;
			self.Text = table.concat(self.Text, &amp;quot;&amp;quot;)&lt;br /&gt;
			if self.Value and IsTemplate then&lt;br /&gt;
				self.Value = {string.sub(table.concat(self.Value, &amp;quot;&amp;quot;), 1, -3)} --Trim ending }}&lt;br /&gt;
				self:HandleArgInput(&amp;quot;|&amp;quot;, true) --Simulate ending&lt;br /&gt;
			end&lt;br /&gt;
			self.Value = nil&lt;br /&gt;
			self.Key = nil&lt;br /&gt;
			self.BeyondStart = nil&lt;br /&gt;
			self.LastIndex = nil&lt;br /&gt;
			self.finalise = nil&lt;br /&gt;
			self.HandleArgInput = nil&lt;br /&gt;
			self.AppendText = nil&lt;br /&gt;
			self.Clean = nil&lt;br /&gt;
		end&lt;br /&gt;
		return Container&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Step 1: Find and escape the content of all wikilinks on the page, which are stronger than templates (see implementation notes)&lt;br /&gt;
	local scannerPosition = 1&lt;br /&gt;
	local wikilinks = {}&lt;br /&gt;
	local openWikilinks = {}&lt;br /&gt;
	while true do&lt;br /&gt;
		local Position, _, Character = string.find(InputText, &amp;quot;([%[%]])%1&amp;quot;, scannerPosition)&lt;br /&gt;
		if not Position then --Done&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		scannerPosition = Position+2 --+2 to pass the [[ / ]]&lt;br /&gt;
		if Character == &amp;quot;[&amp;quot; then --Add a [[ to the pending wikilink queue&lt;br /&gt;
			openWikilinks[#openWikilinks+1] = Position&lt;br /&gt;
		else --Pair up the ]] to any available [[&lt;br /&gt;
			if #openWikilinks &amp;gt;= 1 then&lt;br /&gt;
				local start = table.remove(openWikilinks) --Pop the latest [[&lt;br /&gt;
				wikilinks[start] = {Start=start, End=Position+1, Type=&amp;quot;Wikilink&amp;quot;} --Note the pair&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Step 2: Find the bounds of every valid template and variable ({{ and {{{)&lt;br /&gt;
	local scannerPosition = 1&lt;br /&gt;
	local templates = {}&lt;br /&gt;
	local variables = {}&lt;br /&gt;
	local openBrackets = {}&lt;br /&gt;
	while true do&lt;br /&gt;
		local Start, _, Character = string.find(InputText, &amp;quot;([{}])%1&amp;quot;, scannerPosition)&lt;br /&gt;
		if not Start then --Done (both 9e9)&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		local _, End = string.find(InputText, &amp;quot;^&amp;quot;..Character..&amp;quot;+&amp;quot;, Start)&lt;br /&gt;
&lt;br /&gt;
		scannerPosition = Start --Get to the {{ / }} set&lt;br /&gt;
		if Character == &amp;quot;{&amp;quot; then --Add the {{+ set to the queue&lt;br /&gt;
			openBrackets[#openBrackets+1] = {Start=Start, End=End}&lt;br /&gt;
&lt;br /&gt;
		else --Pair up the }} to any available {{, accounting for {{{ / }}}&lt;br /&gt;
			local BracketCount = End-Start+1&lt;br /&gt;
			while BracketCount &amp;gt;= 2 and #openBrackets &amp;gt;= 1 do&lt;br /&gt;
				local OpenSet = table.remove(openBrackets)&lt;br /&gt;
				if boundlen(OpenSet) &amp;gt;= 3 and BracketCount &amp;gt;= 3 then --We have a {{{variable}}} (both sides have 3 spare)&lt;br /&gt;
					variables[OpenSet.End-2] = {Start=OpenSet.End-2, End=scannerPosition+2, Type=&amp;quot;Variable&amp;quot;} --Done like this to ensure chronological order&lt;br /&gt;
					BracketCount = BracketCount - 3&lt;br /&gt;
					OpenSet.End = OpenSet.End - 3&lt;br /&gt;
					scannerPosition = scannerPosition + 3&lt;br /&gt;
&lt;br /&gt;
				else --We have a {{template}} (both sides have 2 spare, but at least one side doesn&#039;t have 3 spare)&lt;br /&gt;
					templates[OpenSet.End-1] = {Start=OpenSet.End-1, End=scannerPosition+1, Type=&amp;quot;Template&amp;quot;} --Done like this to ensure chronological order&lt;br /&gt;
					BracketCount = BracketCount - 2&lt;br /&gt;
					OpenSet.End = OpenSet.End - 2&lt;br /&gt;
					scannerPosition = scannerPosition + 2&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if boundlen(OpenSet) &amp;gt;= 2 then --Still has enough data left, leave it in&lt;br /&gt;
					openBrackets[#openBrackets+1] = OpenSet&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		scannerPosition = End --Now move past the bracket set&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Step 3: Re-trace every object using their known bounds, collecting our parameters with (slight) ease&lt;br /&gt;
	local scannerPosition = 1&lt;br /&gt;
	local activeObjects = {}&lt;br /&gt;
	local finalObjects = {}&lt;br /&gt;
	while true do&lt;br /&gt;
		local LatestObject = activeObjects[#activeObjects] --Commonly needed object&lt;br /&gt;
		local NNC, _, Character --NNC = NextNotableCharacter&lt;br /&gt;
		if LatestObject then&lt;br /&gt;
			NNC, _, Character = string.find(InputText, &amp;quot;([{}%[%]|=])&amp;quot;, scannerPosition)&lt;br /&gt;
		else&lt;br /&gt;
			NNC, _, Character = string.find(InputText, &amp;quot;([{}])&amp;quot;, scannerPosition) --We are only after templates right now&lt;br /&gt;
		end&lt;br /&gt;
		if not NNC then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		if NNC &amp;gt; scannerPosition and LatestObject then&lt;br /&gt;
			local scannedContent = string.sub(InputText, scannerPosition, NNC-1)&lt;br /&gt;
			LatestObject:AppendText(scannedContent, finalise(scannedContent))&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		scannerPosition = NNC+1&lt;br /&gt;
		if Character == &amp;quot;{&amp;quot; or Character == &amp;quot;[&amp;quot; then&lt;br /&gt;
			local Container = templates[NNC] or variables[NNC] or wikilinks[NNC]&lt;br /&gt;
			if Container then&lt;br /&gt;
				CreateContainerObj(Container)&lt;br /&gt;
				if Container.Type == &amp;quot;Template&amp;quot; then&lt;br /&gt;
					Container:AppendText(&amp;quot;{{&amp;quot;)&lt;br /&gt;
					scannerPosition = NNC+2&lt;br /&gt;
				elseif Container.Type == &amp;quot;Variable&amp;quot; then&lt;br /&gt;
					Container:AppendText(&amp;quot;{{{&amp;quot;)&lt;br /&gt;
					scannerPosition = NNC+3&lt;br /&gt;
				else --Wikilink&lt;br /&gt;
					Container:AppendText(&amp;quot;[[&amp;quot;)&lt;br /&gt;
					scannerPosition = NNC+2&lt;br /&gt;
				end&lt;br /&gt;
				if LatestObject and Container.Type == &amp;quot;Template&amp;quot; then --Only templates count as children&lt;br /&gt;
					LatestObject.Children[#LatestObject.Children+1] = Container&lt;br /&gt;
				end&lt;br /&gt;
				activeObjects[#activeObjects+1] = Container&lt;br /&gt;
			elseif LatestObject then&lt;br /&gt;
				LatestObject:AppendText(Character)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif Character == &amp;quot;}&amp;quot; or Character == &amp;quot;]&amp;quot; then&lt;br /&gt;
			if LatestObject then&lt;br /&gt;
				LatestObject:AppendText(Character)&lt;br /&gt;
				if LatestObject.End == NNC then&lt;br /&gt;
					if LatestObject.Type == &amp;quot;Template&amp;quot; then&lt;br /&gt;
						LatestObject:Clean(true)&lt;br /&gt;
						finalObjects[#finalObjects+1] = LatestObject&lt;br /&gt;
					else&lt;br /&gt;
						LatestObject:Clean(false)&lt;br /&gt;
					end&lt;br /&gt;
					activeObjects[#activeObjects] = nil&lt;br /&gt;
					local NewLatest = activeObjects[#activeObjects]&lt;br /&gt;
					if NewLatest then&lt;br /&gt;
						NewLatest:AppendText(LatestObject.Text) --Append to new latest&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		else --| or =&lt;br /&gt;
			if LatestObject then&lt;br /&gt;
				LatestObject:HandleArgInput(Character)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Step 4: Fix the order&lt;br /&gt;
	local FixedOrder = {}&lt;br /&gt;
	local SortableReference = {}&lt;br /&gt;
	for _,Object in next,finalObjects do&lt;br /&gt;
		SortableReference[#SortableReference+1] = Object.Start&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(SortableReference)&lt;br /&gt;
	for i = 1,#SortableReference do&lt;br /&gt;
		local start = SortableReference[i]&lt;br /&gt;
		for n,Object in next,finalObjects do&lt;br /&gt;
			if Object.Start == start then&lt;br /&gt;
				finalObjects[n] = nil&lt;br /&gt;
				Object.Start = nil --Final cleanup&lt;br /&gt;
				Object.End = nil&lt;br /&gt;
				Object.Type = nil&lt;br /&gt;
				FixedOrder[#FixedOrder+1] = Object&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Finished, return&lt;br /&gt;
	return FixedOrder&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
--Main entry points&lt;br /&gt;
p.PrepareText = PrepareText&lt;br /&gt;
p.ParseTemplates = ParseTemplates&lt;br /&gt;
--Extra entry points, not really required&lt;br /&gt;
p.TestForNowikiTag = TestForNowikiTag&lt;br /&gt;
p.TestForComment = TestForComment&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&lt;br /&gt;
--[==[ console tests&lt;br /&gt;
&lt;br /&gt;
local s = [=[Hey!{{Text|&amp;lt;nowiki | ||&amp;gt;&lt;br /&gt;
Hey! }}&lt;br /&gt;
A&amp;lt;/nowiki&amp;gt;|&amp;lt;!--AAAAA|AAA--&amp;gt;Should see|Shouldn&#039;t see}}]=]&lt;br /&gt;
local out = p.PrepareText(s)&lt;br /&gt;
mw.logObject(out)&lt;br /&gt;
&lt;br /&gt;
local s = [=[B&amp;lt;!--&lt;br /&gt;
Hey!&lt;br /&gt;
--&amp;gt;A]=]&lt;br /&gt;
local out = p.TestForComment(s, 2)&lt;br /&gt;
mw.logObject(out); mw.log(string.sub(s, 2, out.Length))&lt;br /&gt;
&lt;br /&gt;
local a = p.ParseTemplates([=[&lt;br /&gt;
{{User:Aidan9382/templates/dummy&lt;br /&gt;
|A|B|C {{{A|B}}} { } } {&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;D&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|&amp;lt;pre&amp;gt;E&lt;br /&gt;
|F&amp;lt;/pre&amp;gt;&lt;br /&gt;
|G|=|a=|A  =  [[{{PAGENAME}}|A=B]]{{Text|1==&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;}}|A B=Success}}&lt;br /&gt;
]=])&lt;br /&gt;
mw.logObject(a)&lt;br /&gt;
&lt;br /&gt;
]==]&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:For-multi/doc&amp;diff=1543</id>
		<title>Template:For-multi/doc</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:For-multi/doc&amp;diff=1543"/>
		<updated>2025-02-21T04:43:12Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
{{High-use}}&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
{{Lua|Module:Hatnote|Module:Hatnote list}}&lt;br /&gt;
&lt;br /&gt;
{{tlx|For-multi}} is a hatnote template that produces a list of alternative uses for the title of the article and links to articles about those uses. It is similar to {{tlx|For}} with the primary difference being this template allows multiple uses to be listed while still being able to link to multiple articles per use. It is essentially the same as {{tlx|About}} but without the about clause at the start.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
===0 parameters===&lt;br /&gt;
When no parameters are provided, this template functions the exact same as {{tlx|Other uses}}. It is preferred to use that template as it more clearly explains the output of the function.&lt;br /&gt;
&lt;br /&gt;
The output with zero parameter {{tlc|For-multi}} is: {{For-multi}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Comparison to other templates&#039;&#039;&#039;: &lt;br /&gt;
This is the same as using {{tlx|Other uses}}: {{Other uses}}&lt;br /&gt;
&lt;br /&gt;
===One or two parameters===&lt;br /&gt;
When one or two parameters are provided, this template functions the exact same as {{tlx|For}}. It is preferred to use that template as the &amp;quot;multi&amp;quot; functionality of this template is not required.&lt;br /&gt;
&lt;br /&gt;
====1 Parameter====&lt;br /&gt;
&lt;br /&gt;
With one parameter, {{tlx|For-multi|UseA}} yields: {{For-multi|UseA}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Comparison to other templates&#039;&#039;&#039;: &lt;br /&gt;
This is identical to passing the same arguments to {{tlx|For}}. For example, {{tlx|For|UseA}} yields: {{For|UseA}}&lt;br /&gt;
&lt;br /&gt;
====2 Parameters====&lt;br /&gt;
&lt;br /&gt;
With two parameters, {{tlx|For-multi|UseA|ArticleA}} yields: {{For-multi|UseA|ArticleA}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Comparison to other templates&#039;&#039;&#039;: &lt;br /&gt;
This is identical to passing the same arguments to {{tlx|For}}. For example, {{tlx|For|UseA|ArticleA}} yields: {{For|UseA|ArticleA}}&lt;br /&gt;
&lt;br /&gt;
===3 or more parameters===&lt;br /&gt;
When three or more parameters are provided, this template can be used. Functionally, it is the same as {{tlx|About}}, but without the about clause at the beginning. Per the guideline at [[WP:HNS]], it is up to the editor to decide whether or not the hatnote should contain a brief summary (i.e. whether or not the hatnote should use {{tlx|For-multi}} or {{tlx|About}}) based on their preference and what is likely to be clearer and easier for the reader.&lt;br /&gt;
&lt;br /&gt;
With three parameters, the output of &lt;br /&gt;
:{{tlx|For-multi|UseA|ArticleA|UseB}} &lt;br /&gt;
is: {{For-multi|UseA|ArticleA|UseB}}&lt;br /&gt;
&lt;br /&gt;
With four parameters, the output of&lt;br /&gt;
:{{tlx|For-multi|UseA|ArticleA|UseB|ArticleB}} &lt;br /&gt;
is: {{For-multi|UseA|ArticleA|UseB|ArticleB}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Comparison to other templates&#039;&#039;&#039;: &lt;br /&gt;
The output of {{tlx|For-multi|UseA|ArticleA|UseB}}  is different from {{tlx|For}} provided with three parameters where {{tlx|For|UseA|ArticleA|ArticleB}} yields: {{For|UseA|ArticleA|ArticleB}}&lt;br /&gt;
&lt;br /&gt;
As you can see, this function is able to output multiple uses, unlike {{tlx|For}}. {{tlx|About}} also produces the same output, but with an about clause at the beginning. For example, {{tlx|About|About|UseA|ArticleA|UseB}} yields: {{About|About|UseA|ArticleA|UseB}}&lt;br /&gt;
&lt;br /&gt;
Technically, {{tlx|About}} can be used by passing an empty first parameter, but this isn&#039;t recommended as the wikitext &amp;lt;code&amp;gt;{{((}}About||UseA|ArticleA|UseB}}&amp;lt;/code&amp;gt; doesn&#039;t make it clear what the output is going to be and what the purpose of the template is as, in this case, the name of the template &amp;quot;About&amp;quot; is misleading. Using it this way would look like: {{About||UseA|ArticleA|UseB}}&lt;br /&gt;
&lt;br /&gt;
====Multiple articles per use====&lt;br /&gt;
&lt;br /&gt;
Multiple articles can be used per use by putting a parameter with the content &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; between them. For example, the wikitext &amp;lt;!-- formerly: &amp;lt;code&amp;gt;{{((}}For-multi|UseA|ArticleA|and|ArticleB|and|ArticleC|UseB|ArticleD|and|ArticleE}}&amp;lt;/code&amp;gt; --&amp;gt;&lt;br /&gt;
:{{tlx|For-multi|UseA|ArticleA|and|ArticleB|and|ArticleC|UseB|ArticleD|and|ArticleE}} &lt;br /&gt;
yields: {{For-multi|UseA|ArticleA|and|ArticleB|and|ArticleC|UseB|ArticleD|and|ArticleE}}&lt;br /&gt;
&lt;br /&gt;
====Last parameter====&lt;br /&gt;
When the last parameter is a &amp;quot;use&amp;quot;, the current article plus (disambiguation) will be linked to at the end of the template. For example, &lt;br /&gt;
:{{tlx|For-multi|UseA|ArticleA|UseB}} &lt;br /&gt;
yields: {{For-multi|UseA|ArticleA|UseB}}&lt;br /&gt;
&lt;br /&gt;
The above example produces a link to the current page name (without the namespace) plus &amp;quot;(disambiguation)&amp;quot; at the end.&lt;br /&gt;
&lt;br /&gt;
== TemplateData ==&lt;br /&gt;
{{TemplateData header}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;This template lists multiple other uses for the title and links to articles about those uses. See the documentation for more information on usage and alternatives.&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other use 1&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the first other use of the title is. If unused or blank, defaults to \&amp;quot;For other uses\&amp;quot; and ignores parameters 3ff.&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 1&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The title of the first other page. If unused, defaults to \&amp;quot;[page title] (disambiguation)\&amp;quot;.&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other use 2&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the second other use of the title is. If unused or blank, defaults to \&amp;quot;For other uses\&amp;quot; and ignores parameters 5ff.&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 2&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The title of the second other page. If unused or blank and parameter 3 exists, defaults to \&amp;quot;[page title] (disambiguation)\&amp;quot;.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other use 3&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the third other use of the title is. If unused or blank, defaults to \&amp;quot;For other uses\&amp;quot; and ignores parameters 7ff.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;6&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 3&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The title of the third other page. If unused or blank and parameter 5 exists, defaults to \&amp;quot;[page title] (disambiguation)\&amp;quot;.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;7&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other use 4&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;What the fourth other use of the title is. If unused or blank, defaults to \&amp;quot;For other uses\&amp;quot;.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;8&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Other page 4&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The title of the fourth other page. If unused or blank and parameter 7 exists, defaults to \&amp;quot;[page title] (disambiguation)\&amp;quot;.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disambiguation and redirection hatnote templates]]&lt;br /&gt;
* {{tl|Disambiguation}} – for helping readers find other articles with the same or similar names. Placed at the bottom of the article.&lt;br /&gt;
* {{tl|For}} – hatnote linking to multiple articles or disambiguation pages; e.g. &#039;&#039;For similar terms, see ArticleA, ArticleB, and ArticleC.&#039;&#039;&lt;br /&gt;
* {{tl|Other uses}} – hatnote linking to a disambiguation pages; e.g. &#039;&#039;For other uses, see Target (disambiguation).&#039;&#039;&lt;br /&gt;
* {{tl|Redirect}} – for linking to disambiguation pages in an article that is [[WP:PRIMARYREDIRECT|the primary topic of a redirect]]&lt;br /&gt;
* {{tl|WikiProject Disambiguation}} – for disambig talkpages&lt;br /&gt;
* [[Wikipedia:Hatnote]]&lt;br /&gt;
&lt;br /&gt;
{{Hatnote templates}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Disambiguation and redirection hatnote templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Transclusion_count/data/F&amp;diff=1541</id>
		<title>Module:Transclusion count/data/F</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Transclusion_count/data/F&amp;diff=1541"/>
		<updated>2025-02-21T04:43:07Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;F1&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;FA-Class&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;FAA-airport&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;FACClosed&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;FAC_link&amp;quot;] = 111000,&lt;br /&gt;
[&amp;quot;FAR_link&amp;quot;] = 111000,&lt;br /&gt;
[&amp;quot;FCC-LMS-Facility&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;FCC_Licensing_and_Management_System_facility&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;FIDE&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;FIFA_player&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;FIN&amp;quot;] = 9500,&lt;br /&gt;
[&amp;quot;FIPS&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;FJC_Bio&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;FL-Class&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;FLCClosed&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;FM-Class&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;FMA&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;FMARB&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;FMXL&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;FM_station_data&amp;quot;] = 8500,&lt;br /&gt;
[&amp;quot;FPCnom/VotingEnds&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;FPCresult&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;FRA&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;FRG&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;FTE&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;FULLBASEPAGENAME&amp;quot;] = 323000,&lt;br /&gt;
[&amp;quot;FULLROOTPAGENAME&amp;quot;] = 2910000,&lt;br /&gt;
[&amp;quot;FXL&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;FYI&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Fa_bottom&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Fa_top&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Facebook&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Facepalm&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Facl&amp;quot;] = 111000,&lt;br /&gt;
[&amp;quot;Fact&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;FadedPage&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;FailedGA&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Failed_verification&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Family_name_explanation&amp;quot;] = 88000,&lt;br /&gt;
[&amp;quot;Family_name_explanation/core&amp;quot;] = 88000,&lt;br /&gt;
[&amp;quot;Family_name_hatnote&amp;quot;] = 87000,&lt;br /&gt;
[&amp;quot;Farl&amp;quot;] = 111000,&lt;br /&gt;
[&amp;quot;Fb&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;Fb-rt&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Fb_cs_footer&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Fb_gd&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Fb_overview&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Fb_overview2&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Fb_rs&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Fb_rs_footer&amp;quot;] = 9700,&lt;br /&gt;
[&amp;quot;Fba/core&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Fba/list&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;Fbaicon&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Fbaicon/core&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Fbicon&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Fbu&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Fbu-rt&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Fbw&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Fdacite&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Fdate&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;FeaturedPicture&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Featured_article&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Featured_article_tools&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Featured_list&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Featured_picture&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Featured_topic_box&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Featured_topic_box/styles.css&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Feedback_link&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Fiction-based_redirects_to_list_entries_category_handler&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Fictional_character_redirect&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;File-Class&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;File_other&amp;quot;] = 956000,&lt;br /&gt;
[&amp;quot;Film_date&amp;quot;] = 158000,&lt;br /&gt;
[&amp;quot;Filter_category_by_topic&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Find&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;FindYDCportal&amp;quot;] = 184000,&lt;br /&gt;
[&amp;quot;Find_a_Grave&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Find_a_Grave_cemetery&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Find_country&amp;quot;] = 267000,&lt;br /&gt;
[&amp;quot;Find_demonym&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Find_general_sources&amp;quot;] = 864000,&lt;br /&gt;
[&amp;quot;Find_medical_sources&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;Find_page_text&amp;quot;] = 2640000,&lt;br /&gt;
[&amp;quot;Find_sources&amp;quot;] = 600000,&lt;br /&gt;
[&amp;quot;Find_sources/proj/is_biography&amp;quot;] = 586000,&lt;br /&gt;
[&amp;quot;Find_sources/proj/is_med&amp;quot;] = 600000,&lt;br /&gt;
[&amp;quot;Find_sources/proj/is_video&amp;quot;] = 592000,&lt;br /&gt;
[&amp;quot;Find_sources/top_proj&amp;quot;] = 600000,&lt;br /&gt;
[&amp;quot;Find_sources_AFD&amp;quot;] = 229000,&lt;br /&gt;
[&amp;quot;Find_sources_mainspace&amp;quot;] = 687000,&lt;br /&gt;
[&amp;quot;Find_video_game_sources&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Find_video_game_sources_short&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Findsources&amp;quot;] = 42000,&lt;br /&gt;
[&amp;quot;First_nonempty&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;First_word&amp;quot;] = 591000,&lt;br /&gt;
[&amp;quot;FishBase&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;FishBase_genus&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Fix&amp;quot;] = 959000,&lt;br /&gt;
[&amp;quot;Fix-span&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;Fix/category&amp;quot;] = 927000,&lt;br /&gt;
[&amp;quot;Fix_comma_category&amp;quot;] = 571000,&lt;br /&gt;
[&amp;quot;Fixed&amp;quot;] = 9600,&lt;br /&gt;
[&amp;quot;Fl.&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Flag&amp;quot;] = 351000,&lt;br /&gt;
[&amp;quot;Flag/core&amp;quot;] = 351000,&lt;br /&gt;
[&amp;quot;FlagCGFathlete&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;FlagIOC&amp;quot;] = 9200,&lt;br /&gt;
[&amp;quot;FlagIOC2&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;FlagIOC2athlete&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;FlagIOC2team&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;FlagIOCathlete&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;FlagIOCteam&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;FlagIPC&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;FlagPASO&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;FlagPASOathlete&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Flag_CGF_athlete&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Flag_IOC&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Flag_IOC_2&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Flag_IOC_2_athlete&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Flag_IOC_2_medalist&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Flag_IOC_2_team&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Flag_IOC_athlete&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Flag_IOC_team&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Flag_IPC&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Flag_PASO&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Flag_PASO_athlete&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Flag_athlete&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;Flag_country&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Flag_country/core&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Flag_data&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Flag_decoration&amp;quot;] = 89000,&lt;br /&gt;
[&amp;quot;Flag_decoration/core&amp;quot;] = 89000,&lt;br /&gt;
[&amp;quot;Flag_icon&amp;quot;] = 599000,&lt;br /&gt;
[&amp;quot;Flag_icon/core&amp;quot;] = 600000,&lt;br /&gt;
[&amp;quot;Flag_icon/nt&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Flag_link&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Flag_link/core&amp;quot;] = 81000,&lt;br /&gt;
[&amp;quot;Flag_medalist&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Flag_medalist/core&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Flag_team&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Flagathlete&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;Flagbig&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Flagbig/core&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;Flagcountry&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Flagdeco&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;Flagg&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Flagicon&amp;quot;] = 479000,&lt;br /&gt;
[&amp;quot;Flagicon_image&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;Flagmedalist&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Flagright/core&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Flagteam&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Flagu&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;Flagu/core&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;Flat_list&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Flatlist&amp;quot;] = 2320000,&lt;br /&gt;
[&amp;quot;FloraBase&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Floruit&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Fmbox&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;FoP-USonly&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Font&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Font_color&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Fontcolor&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;Fooian_expatriate_sportspeople_in_Bar_cat&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Fooian_expatriate_sportspeople_in_Bar_cat/core&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Fooian_expatriate_sportspeople_in_Bar_cat/sortname&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Fooian_fooers&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;FootballFacts.ru&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Football_box&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Football_box_collapsible&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Football_box_collapsible/styles.css&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Football_kit&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;Football_manager_history&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Football_squad&amp;quot;] = 47000,&lt;br /&gt;
[&amp;quot;Football_squad2_player&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;Football_squad_end&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Football_squad_manager&amp;quot;] = 48000,&lt;br /&gt;
[&amp;quot;Football_squad_mid&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Football_squad_player&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Football_squad_player/role&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Football_squad_player/styles.css&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Football_squad_start&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Footballbox&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Footballbox_collapsible&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;Footballstats&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Foo–Bar_relations_category&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Foo–Bar_relations_category/core&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Foo–Bar_relations_category/countrynamesortfix&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Foo–Bar_relations_category/fixcountryname&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Foo–Bar_relations_category/inner_core&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Foo–Bar_relations_category/mapname&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;For&amp;quot;] = 194000,&lt;br /&gt;
[&amp;quot;For-multi&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;For_loop&amp;quot;] = 813000,&lt;br /&gt;
[&amp;quot;For_multi&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;For_nowiki&amp;quot;] = 9100,&lt;br /&gt;
[&amp;quot;ForaDeJogo&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Force_plural&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Format_linkr&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Format_numeric_span&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Format_price&amp;quot;] = 9500,&lt;br /&gt;
[&amp;quot;Format_price/digits&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;Formatprice&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Fossil_range&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Fossil_range/bar&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Fossil_range/marker&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Fossilrange&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Frac&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Fraction&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Fraction/styles.css&amp;quot;] = 101000,&lt;br /&gt;
[&amp;quot;France_metadata_Wikidata&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;Free_access&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Free_in_US_media&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Free_media&amp;quot;] = 142000,&lt;br /&gt;
[&amp;quot;Freedom_of_panorama_(US_only)&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Frequency&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Friday&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Fs_end&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Fs_mid&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Fs_player&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Fs_start&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Full-time_equivalent&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Full_citation_needed&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;Full_party_name_with_color&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Fullurl&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Fullurl:&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Further&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;Further_information&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Fussballdaten&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Module:Fb_overview&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Module:FeaturedTopicSum&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Module:Fedi-share&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Module:Fiction-based_redirects_to_list_entries_category_handler&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:Fiction-based_redirects_to_list_entries_category_handler/RedirectType&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:Fiction_redirect_category_handler&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Module:File_link&amp;quot;] = 78000,&lt;br /&gt;
[&amp;quot;Module:FindYDCportal&amp;quot;] = 336000,&lt;br /&gt;
[&amp;quot;Module:Find_country&amp;quot;] = 210000,&lt;br /&gt;
[&amp;quot;Module:Find_demonym&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Module:Find_sources&amp;quot;] = 1560000,&lt;br /&gt;
[&amp;quot;Module:Find_sources/config&amp;quot;] = 1560000,&lt;br /&gt;
[&amp;quot;Module:Find_sources/links&amp;quot;] = 1560000,&lt;br /&gt;
[&amp;quot;Module:Find_sources/templates/Find_general_sources&amp;quot;] = 864000,&lt;br /&gt;
[&amp;quot;Module:Find_sources/templates/Find_sources_mainspace&amp;quot;] = 687000,&lt;br /&gt;
[&amp;quot;Module:Find_sources/templates/Find_sources_medical&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;Module:Find_sources/templates/Find_sources_video_games&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Module:Flag&amp;quot;] = 323000,&lt;br /&gt;
[&amp;quot;Module:Flagg&amp;quot;] = 404000,&lt;br /&gt;
[&amp;quot;Module:Flagg/Altvar_data&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Module:Flaglist&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Module:Football_box&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Module:Football_box/styles.css&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Module:Football_box_collapsible&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Module:Football_manager_history&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Module:Football_squad&amp;quot;] = 47000,&lt;br /&gt;
[&amp;quot;Module:Footnotes&amp;quot;] = 324000,&lt;br /&gt;
[&amp;quot;Module:Footnotes/anchor_id_list&amp;quot;] = 238000,&lt;br /&gt;
[&amp;quot;Module:Footnotes/anchor_id_list/data&amp;quot;] = 238000,&lt;br /&gt;
[&amp;quot;Module:Footnotes/whitelist&amp;quot;] = 238000,&lt;br /&gt;
[&amp;quot;Module:For&amp;quot;] = 195000,&lt;br /&gt;
[&amp;quot;Module:For_loop&amp;quot;] = 813000,&lt;br /&gt;
[&amp;quot;Module:For_nowiki&amp;quot;] = 9100,&lt;br /&gt;
[&amp;quot;Module:Format_link&amp;quot;] = 1410000,&lt;br /&gt;
[&amp;quot;Module:Formatted_appearance&amp;quot;] = 5300,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Hatnote_templates&amp;diff=1539</id>
		<title>Template:Hatnote templates</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Template:Hatnote_templates&amp;diff=1539"/>
		<updated>2025-02-21T04:43:07Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox&lt;br /&gt;
| name = Hatnote templates&lt;br /&gt;
| state = {{{state|&amp;lt;includeonly&amp;gt;autocollapse&amp;lt;/includeonly&amp;gt;}}}&lt;br /&gt;
| bodyclass = hlist&lt;br /&gt;
| belowclass = hlist&lt;br /&gt;
| title  = [[WP:Hatnote#Hatnote templates|Hatnote templates]]&lt;br /&gt;
&lt;br /&gt;
| above =&lt;br /&gt;
*[[Wikipedia:Hatnote]]&lt;br /&gt;
*[[Wikipedia:Disambiguation]]&lt;br /&gt;
*[[Wikipedia:Redirect]]&lt;br /&gt;
&lt;br /&gt;
| group1 = Generic&lt;br /&gt;
| list1 =&lt;br /&gt;
*{{tl|Hatnote}}&lt;br /&gt;
*{{tl|Hatnote group}}&lt;br /&gt;
*{{tl|Self-reference}}&lt;br /&gt;
&lt;br /&gt;
| group2 = For and about&lt;br /&gt;
| list2 =&lt;br /&gt;
*{{tl|For}}&lt;br /&gt;
*{{tl|For-text}} (for custom text)&lt;br /&gt;
*{{tl|For-multi}} (for multiple uses)&lt;br /&gt;
*{{tl|About}}&lt;br /&gt;
*Variations: {{tl|Other uses}}&lt;br /&gt;
*{{tl|Other uses of}}&lt;br /&gt;
*{{tl|Redirect-distinguish-for}}&lt;br /&gt;
*{{tl|About-distinguish}}&lt;br /&gt;
*{{tl|About-distinguish-text}}&lt;br /&gt;
&lt;br /&gt;
| group3 = Other topics&lt;br /&gt;
| list3 =&lt;br /&gt;
*{{tl|Other people}}&lt;br /&gt;
*{{tl|About other people}} (adds &amp;quot;about&amp;quot; description)&lt;br /&gt;
*{{tl|Similar names}}&lt;br /&gt;
*{{tl|Other storms}}&lt;br /&gt;
*{{tl|Other places}}&lt;br /&gt;
*{{tl|Other ships}}&lt;br /&gt;
&lt;br /&gt;
| group4 = Redirect&lt;br /&gt;
| list4 =&lt;br /&gt;
*{{tl|Redirect}}&lt;br /&gt;
*{{tl|Redirect2}} (for two redirects)&lt;br /&gt;
*{{tl|Redirect-multi}} (for multiple redirects)&lt;br /&gt;
*{{tl|Redirect-several}} (for several redirects, without listing each)&lt;br /&gt;
*{{tl|Redirect-synonym}}&lt;br /&gt;
*{{tl|Redirect-distinguish}}&lt;br /&gt;
*{{tl|Redirect-distinguish-text}}&lt;br /&gt;
*{{tl|Redirect-distinguish-for}}&lt;br /&gt;
*{{tl|Technical reasons}}&lt;br /&gt;
&lt;br /&gt;
| group5 = Distinguish&lt;br /&gt;
| list5 =&lt;br /&gt;
*{{tl|Distinguish}} (supports custom text)&lt;br /&gt;
*{{tl|About-distinguish}}&lt;br /&gt;
*{{tl|About-distinguish-text}} (for custom text)&lt;br /&gt;
*{{tl|Redirect-distinguish}}&lt;br /&gt;
*{{tl|Redirect-distinguish-text}} (for custom text)&lt;br /&gt;
*{{tl|Redirect-distinguish-for}}&lt;br /&gt;
&lt;br /&gt;
| group6 = For use in sections&lt;br /&gt;
| list6 =&lt;br /&gt;
*{{tl|Main}}&lt;br /&gt;
*{{tl|Main if exists}}&lt;br /&gt;
*{{tl|Main list}}&lt;br /&gt;
*{{tl|Further}}&lt;br /&gt;
*{{tl|Further-text}} (for custom text)&lt;br /&gt;
*{{tl|Further interlanguage link}}&lt;br /&gt;
*{{tl|See also}}&lt;br /&gt;
*{{tl|See also-text}} (for custom text)&lt;br /&gt;
*{{tl|For outline}}&lt;br /&gt;
*{{tl|For timeline}}&lt;br /&gt;
&lt;br /&gt;
| group7 = Special&lt;br /&gt;
| list7 =&lt;br /&gt;
*{{tl|Broader}}&lt;br /&gt;
*{{tl|For introduction}}&lt;br /&gt;
*{{tl|See Wiktionary}}&lt;br /&gt;
*{{tl|Transcluding article}}&lt;br /&gt;
*{{tl|Transcluded section}}&lt;br /&gt;
&lt;br /&gt;
| group8 = Subject specific&lt;br /&gt;
| list8 = &lt;br /&gt;
* {{tl|About year}}&lt;br /&gt;
* {{tl|Highway detail hatnote}}&lt;br /&gt;
* {{tl|For LMST}}&lt;br /&gt;
* {{tl|WikiIPA}}&lt;br /&gt;
&lt;br /&gt;
| below =&lt;br /&gt;
*{{Icon|cat}} [[:Category:Hatnote templates]]&lt;br /&gt;
**[[:Category:Hatnote modules|modules]]&lt;br /&gt;
**[[:Category:Hatnote templates for names|for [family] names]]&lt;br /&gt;
**[[:Category:Hatnote templates for lists|for lists]]&lt;br /&gt;
*[[Template:Category hatnote templates|hatnote templates for category pages]]&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:About&amp;diff=1537</id>
		<title>Module:About</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:About&amp;diff=1537"/>
		<updated>2025-02-21T04:43:05Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local mArguments --initialize lazily&lt;br /&gt;
local mHatnote = require(&#039;Module:Hatnote&#039;)&lt;br /&gt;
local mHatList = require(&#039;Module:Hatnote list&#039;)&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.about (frame)&lt;br /&gt;
	-- A passthrough that gets args from the frame and all&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	args = mArguments.getArgs(frame)&lt;br /&gt;
	return p._about(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p._about (args, options)&lt;br /&gt;
	-- Produces &amp;quot;about&amp;quot; hatnote.&lt;br /&gt;
&lt;br /&gt;
	-- Type checks and defaults&lt;br /&gt;
	checkType(&#039;_about&#039;, 1, args, &#039;table&#039;, true)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	checkType(&#039;_about&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	local defaultOptions = {&lt;br /&gt;
		aboutForm = &#039;This %s is about %s. &#039;,&lt;br /&gt;
		PageType = require(&#039;Module:Pagetype&#039;).main(),&lt;br /&gt;
		otherText = nil, --included for complete list&lt;br /&gt;
		sectionString = &#039;section&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for k, v in pairs(defaultOptions) do&lt;br /&gt;
		if options[k] == nil then options[k] = v end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set initial &amp;quot;about&amp;quot; string&lt;br /&gt;
	local pageType = (args.section and options.sectionString) or options.PageType&lt;br /&gt;
	local about = &#039;&#039;&lt;br /&gt;
	if args[1] then&lt;br /&gt;
		about = string.format(options.aboutForm, pageType, args[1])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Allow passing through certain options&lt;br /&gt;
	local fsOptions = {&lt;br /&gt;
		otherText = options.otherText,&lt;br /&gt;
		extratext = args.text&lt;br /&gt;
	}&lt;br /&gt;
	local hnOptions = {&lt;br /&gt;
		selfref = args.selfref&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	-- Set for-see list&lt;br /&gt;
	local forSee = mHatList._forSee(args, 2, fsOptions)&lt;br /&gt;
&lt;br /&gt;
	-- Concatenate and return&lt;br /&gt;
	return mHatnote._hatnote(about .. forSee, hnOptions)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Other_uses&amp;diff=1535</id>
		<title>Module:Other uses</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Other_uses&amp;diff=1535"/>
		<updated>2025-02-21T04:43:05Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local mHatnote = require(&#039;Module:Hatnote&#039;)&lt;br /&gt;
local mHatlist = require(&#039;Module:Hatnote list&#039;)&lt;br /&gt;
local mArguments --initialize lazily&lt;br /&gt;
local mTableTools --initialize lazily&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Produces standard {{other uses}} implementation&lt;br /&gt;
function p.otheruses(frame)&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	mTableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
	local args = mTableTools.compressSparseArray(mArguments.getArgs(frame))&lt;br /&gt;
	local title = mw.title.getCurrentTitle().prefixedText&lt;br /&gt;
	return p._otheruses(args, {title=title})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Implements &amp;quot;other [x]&amp;quot; templates with otherText supplied at invocation&lt;br /&gt;
function p.otherX(frame)&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	mTableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
	local x = frame.args[1]&lt;br /&gt;
	local args = mTableTools.compressSparseArray(&lt;br /&gt;
		mArguments.getArgs(frame, {parentOnly = true})&lt;br /&gt;
	)&lt;br /&gt;
	local options = {&lt;br /&gt;
		title = mw.title.getCurrentTitle().prefixedText,&lt;br /&gt;
		otherText = x&lt;br /&gt;
	}&lt;br /&gt;
	return p._otheruses(args, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Main generator&lt;br /&gt;
function p._otheruses(args, options)&lt;br /&gt;
	--Type-checks and defaults&lt;br /&gt;
	checkType(&#039;_otheruses&#039;, 1, args, &#039;table&#039;, true)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	checkType(&#039;_otheruses&#039;, 2, options, &#039;table&#039;)&lt;br /&gt;
	if not (options.defaultPage or options.title) then&lt;br /&gt;
		error(&#039;No default title data provided in &amp;quot;_otheruses&amp;quot; options table&#039;, 2)&lt;br /&gt;
	end&lt;br /&gt;
	local emptyArgs = true&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;number&#039; then emptyArgs = false break end&lt;br /&gt;
	end&lt;br /&gt;
	if emptyArgs then&lt;br /&gt;
		args = {&lt;br /&gt;
			options.defaultPage or&lt;br /&gt;
			mHatnote.disambiguate(options.title, options.disambiguator)&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	--Generate and return hatnote&lt;br /&gt;
	local text = mHatlist.forSeeTableToString({{&lt;br /&gt;
		use = options.otherText and &amp;quot;other &amp;quot; .. options.otherText or nil,&lt;br /&gt;
		pages = args&lt;br /&gt;
	}})&lt;br /&gt;
	return mHatnote._hatnote(text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Icon/data&amp;diff=1533</id>
		<title>Module:Icon/data</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Icon/data&amp;diff=1533"/>
		<updated>2025-02-21T04:43:05Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module stores icon data for [[Module:Icon]].&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Icon data&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local data = {&lt;br /&gt;
	fa = {&lt;br /&gt;
		image = &amp;quot;Featured article star.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	far = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article review&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	farc = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article removal candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffa = {&lt;br /&gt;
		aliases = {&amp;quot;dfa&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Featured article star - cross.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fac = {&lt;br /&gt;
		aliases = {&amp;quot;fan&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured article candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffac = {&lt;br /&gt;
		aliases = {&amp;quot;nofa&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-former.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured article candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fl = {&lt;br /&gt;
		image = &amp;quot;Featured article star.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured list&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	flrc = {&lt;br /&gt;
		aliases = {&amp;quot;flr&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured list removal candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffl = {&lt;br /&gt;
		aliases = {&amp;quot;dfl&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-featured-strike.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured list&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	flc = {&lt;br /&gt;
		aliases = {&amp;quot;fln&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured list candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fflc = {&lt;br /&gt;
		aliases = {&amp;quot;nofl&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-former.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured list candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	a = {&lt;br /&gt;
		image = &amp;quot;Symbol a class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;A-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	admin = {&lt;br /&gt;
		aliases = {&amp;quot;mop&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Wikipedia Administrator.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Administrator&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	dac = {&lt;br /&gt;
		aliases = {&amp;quot;daa&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol unsupport A vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Demoted A-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	acc = {&lt;br /&gt;
		aliases = {&amp;quot;acn&amp;quot;, &amp;quot;aac&amp;quot;},&lt;br /&gt;
		image = &amp;quot;A candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;A-Class article candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	noac = {&lt;br /&gt;
		aliases = {&amp;quot;faac&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol unsupport A vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Failed A-Class article candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ga = {&lt;br /&gt;
		image = &amp;quot;Symbol support vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gar = {&lt;br /&gt;
		image = &amp;quot;GA Candidate Neutral vote(ChaosNil).svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article reassessment&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	dga = {&lt;br /&gt;
		image = &amp;quot;Symbol unsupport vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Delisted good article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gan = {&lt;br /&gt;
		aliases = {&amp;quot;gac&amp;quot;},&lt;br /&gt;
		image = &amp;quot;GA candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article nominee&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	ga2 = {&lt;br /&gt;
		image = &amp;quot;Symbol neutral vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article, 2nd opinion&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gah = {&lt;br /&gt;
		image = &amp;quot;Symbol wait.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good article on hold&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	fgan = {&lt;br /&gt;
		aliases = {&amp;quot;noga&amp;quot;, &amp;quot;gaf&amp;quot;, &amp;quot;gf&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol oppose vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Failed good article nominee&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	fp = {&lt;br /&gt;
		image = &amp;quot;Cscr-featured.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured picture&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fpc = {&lt;br /&gt;
		aliases = {&amp;quot;fpn&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured picture candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffp = {&lt;br /&gt;
		image = &amp;quot;Cscr-former.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured picture&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	vp = {&lt;br /&gt;
		image = &amp;quot;ENWP VP Logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Valued picture&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	vpc = {&lt;br /&gt;
		image = &amp;quot;Valued pics 1.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Valued picture candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fs = {&lt;br /&gt;
		image = &amp;quot;Cscr-featured.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured sound&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffs = {&lt;br /&gt;
		image = &amp;quot;Cscr-former.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured sound&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fsc = {&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured sound candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fpo = {&lt;br /&gt;
		image = &amp;quot;Linecons big-star.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Before the featured portal process ceased in 2017, this had been designated as a featured portal.&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fpor = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured portal review&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ffpo = {&lt;br /&gt;
		image = &amp;quot;Featured article star - cross.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured portal&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fpoc = {&lt;br /&gt;
		image = &amp;quot;Cscr-candidate.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured portal candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ft = {&lt;br /&gt;
		image = &amp;quot;Cscr-featuredtopic.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured topic&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ftrc = {&lt;br /&gt;
		image = &amp;quot;Cscr-star piece.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured topic removal candidate&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	fft = {&lt;br /&gt;
		aliases = {&amp;quot;dft&amp;quot;},&lt;br /&gt;
		image = &amp;quot;DFT candidate_cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Former featured topic&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ftc = {&lt;br /&gt;
		aliases = {&amp;quot;ftn&amp;quot;},&lt;br /&gt;
		image = &amp;quot;FT candidate cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Featured topic candidate&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gt = {&lt;br /&gt;
		image = &amp;quot;Support cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good topic&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gtrc = {&lt;br /&gt;
		image = &amp;quot;Symbol unsupport vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good topic removal candidate&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	gtc = {&lt;br /&gt;
		aliases = {&amp;quot;gtn&amp;quot;},&lt;br /&gt;
		image = &amp;quot;GA candidate cluster.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Good topic candidate&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	bplus = {&lt;br /&gt;
		aliases = {&amp;quot;b+&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol bplus class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Bplus-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	b = {&lt;br /&gt;
		image = &amp;quot;Symbol b class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;B-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	br = {&lt;br /&gt;
		aliases = {&amp;quot;bcr&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Bclass-checklist.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;B-Class review&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	c = {&lt;br /&gt;
		image = &amp;quot;Symbol c class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;C-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	start = {&lt;br /&gt;
		image = &amp;quot;Symbol start class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Start-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	stub = {&lt;br /&gt;
		image = &amp;quot;Symbol stub class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Stub-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	list = {&lt;br /&gt;
		aliases = {&amp;quot;comparison&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol list class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;List-Class article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	no = {&lt;br /&gt;
		image = &amp;quot;Crystal button cancel.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Unknown-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	book = {&lt;br /&gt;
		image = &amp;quot;Symbol book class2.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikipedia book&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	category = {&lt;br /&gt;
		aliases = {&amp;quot;cat&amp;quot;, &amp;quot;categ&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol category class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Category&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	disambiguation = {&lt;br /&gt;
		aliases = {&amp;quot;dab&amp;quot;, &amp;quot;disamb&amp;quot;, &amp;quot;disambig&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol dab class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Disambiguation page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	image = {&lt;br /&gt;
		aliases = {&amp;quot;file&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol file class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;File&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	needed = {&lt;br /&gt;
		image = &amp;quot;Symbol needed class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Needed article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	outline = {&lt;br /&gt;
		image = &amp;quot;Global thinking.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Outline&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	portal = {&lt;br /&gt;
		image = &amp;quot;Symbol portal class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Portal&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	project = {&lt;br /&gt;
		image = &amp;quot;Symbol project class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Project page&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	redirect = {&lt;br /&gt;
		aliases = {&amp;quot;red&amp;quot;, &amp;quot;redir&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol redirect vote2.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Redirect&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	template = {&lt;br /&gt;
		aliases = {&amp;quot;temp&amp;quot;, &amp;quot;templ&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol template class pink.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Template&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	essay = {&lt;br /&gt;
		image = &amp;quot;Essay.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Essay&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	na = {&lt;br /&gt;
		image = &amp;quot;Symbol na class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Non-article page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	aa = {&lt;br /&gt;
		image = &amp;quot;Yes check.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Audited article of limited subject matter&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	da = {&lt;br /&gt;
		image = &amp;quot;Symbol oppose vote.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Demoted article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	dyk = {&lt;br /&gt;
		image = &amp;quot;Symbol question.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Did You Know?&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	dyk2 = {&lt;br /&gt;
		image = &amp;quot;DYK questionmark icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Did You Know?&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	pr = {&lt;br /&gt;
		image = &amp;quot;Nuvola apps kedit.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Peer review&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	ppr = {&lt;br /&gt;
		image = &amp;quot;Nuvola apps kedit.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Portal peer review&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	q = {&lt;br /&gt;
		aliases = {&amp;quot;question&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Symbol question.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Question&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	cleanup = {&lt;br /&gt;
		image = &amp;quot;Edit-clear.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Cleanup work&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	qi = {&lt;br /&gt;
		image = &amp;quot;Quality images logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Quality image on Wikimedia Commons&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	vi = {&lt;br /&gt;
		image = &amp;quot;Valued image seal.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Valued image on Wikimedia Commons&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	tfa = {&lt;br /&gt;
		image = &amp;quot;Wikipedia-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Today&#039;s Featured Article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	tfl = {&lt;br /&gt;
		image = &amp;quot;Wikipedia-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Today&#039;s Featured List&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	itn = {&lt;br /&gt;
		image = &amp;quot;Globe current.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;In The News&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	otd = {&lt;br /&gt;
		image = &amp;quot;Nuvola apps date.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;On This Day&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikiproject = {&lt;br /&gt;
		image = &amp;quot;People icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;WikiProject&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	goce = {&lt;br /&gt;
		image = &amp;quot;Writing Magnifying.PNG&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Guild of Copy Editors&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikipedia = {&lt;br /&gt;
		image = &amp;quot;Wikipedia-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikipedia page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	commons = {&lt;br /&gt;
		image = &amp;quot;Commons-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Commons page&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	wikiquote = {&lt;br /&gt;
		image = &amp;quot;Wikiquote-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikiquote page&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	wikiversity = {&lt;br /&gt;
		image = &amp;quot;Wikiversity logo 2017.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikiversity page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikibooks = {&lt;br /&gt;
		image = &amp;quot;Wikibooks-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikibooks page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikisource = {&lt;br /&gt;
		image = &amp;quot;Wikisource-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikisource page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wiktionary = {&lt;br /&gt;
		image = &amp;quot;Wiktionary-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wiktionary page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikinews = {&lt;br /&gt;
		image = &amp;quot;Wikinews-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikinews page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikispecies = {&lt;br /&gt;
		image = &amp;quot;Wikispecies-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikispecies page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	wikidata = {&lt;br /&gt;
		image = &amp;quot;Wikidata-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikidata page&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	wikivoyage = {&lt;br /&gt;
		image = &amp;quot;Wikivoyage-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Wikivoyage page&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	 mediawiki = {&lt;br /&gt;
		 image = &amp;quot;MediaWiki-2020-icon.svg&amp;quot;,&lt;br /&gt;
		 tooltip = &amp;quot;MediaWiki&amp;quot;,&lt;br /&gt;
		 link = true,&lt;br /&gt;
	 },&lt;br /&gt;
	 phabricator = {&lt;br /&gt;
		 aliases = {&amp;quot;phab&amp;quot;},&lt;br /&gt;
		 image = &amp;quot;Favicon-Phabricator-WM.svg&amp;quot;,&lt;br /&gt;
		 tooltip = &amp;quot;Phabricator&amp;quot;,&lt;br /&gt;
		 link = false,&lt;br /&gt;
	 },&lt;br /&gt;
	 wikitech = {&lt;br /&gt;
		 image = &amp;quot;Wikitech-2021-blue-icon.svg&amp;quot;,&lt;br /&gt;
		 tooltip = &amp;quot;Wikitech&amp;quot;,&lt;br /&gt;
		 link = true,&lt;br /&gt;
	 },&lt;br /&gt;
	meta = {&lt;br /&gt;
		image = &amp;quot;Wikimedia Community Logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Meta-wiki page&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	four = {&lt;br /&gt;
		aliases = {&amp;quot;4a&amp;quot;},&lt;br /&gt;
		image = &amp;quot;Four Award.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Four Award&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	million = {&lt;br /&gt;
		image = &amp;quot;Million award logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Million Award&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	module = {&lt;br /&gt;
		image = &amp;quot;Lua-logo-nolabel.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Module&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	vital = {&lt;br /&gt;
		image = &amp;quot;Círculos_Concéntricos.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Vital article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	potd  = {&lt;br /&gt;
		image = &amp;quot;Wikipedia-logo.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Picture of the Day&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	draft = {&lt;br /&gt;
		image = &amp;quot;Symbol draft class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Draft-Class article&amp;quot;,&lt;br /&gt;
		link = true,&lt;br /&gt;
	},&lt;br /&gt;
	user = {&lt;br /&gt;
		image = &amp;quot;Symbol user class.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;User-Class article&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	info = {&lt;br /&gt;
		image = &amp;quot;Information icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Information&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	discussionnotificaion = {&lt;br /&gt;
		image = &amp;quot;Echo edit-user-talk icon.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Discussion&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	alert = {&lt;br /&gt;
		image = &amp;quot;OOjs UI icon alert.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Black alert&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;alert-imagewarning&#039;] = {&lt;br /&gt;
		image = &amp;quot;OOjs UI icon alert image warning.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Alert&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;alert-constructive&#039;] = {&lt;br /&gt;
		image = &amp;quot;OOjs UI icon alert-constructive.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Green alert&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;alert-blackred&#039;] = {&lt;br /&gt;
		image = &amp;quot;OOjs UI icon alert destructive black-darkred.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Black, white, and red alert&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	barnstar2 = {&lt;br /&gt;
		image = &amp;quot;Original Barnstar Hires.svg&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Original barnstar hires&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	barnstar = {&lt;br /&gt;
		image = &amp;quot;Original Barnstar.png&amp;quot;,&lt;br /&gt;
		tooltip = &amp;quot;Original barnstar&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	},&lt;br /&gt;
	_DEFAULT = {&lt;br /&gt;
		image = &amp;quot;Symbol question.svg&amp;quot;,&lt;br /&gt;
		link = false,&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- End icon data&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Make aliases work the same as normal keys, and remove the &amp;quot;aliases&amp;quot; subtables.&lt;br /&gt;
local ret= {}&lt;br /&gt;
for code, iconData in pairs(data) do&lt;br /&gt;
	iconData.canonicalCode = code&lt;br /&gt;
	if iconData.aliases then&lt;br /&gt;
		for _, alias in ipairs(iconData.aliases) do&lt;br /&gt;
			ret[alias] = iconData&lt;br /&gt;
		end&lt;br /&gt;
		iconData.aliases = nil&lt;br /&gt;
	end&lt;br /&gt;
	ret[code] = iconData&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return ret&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
	<entry>
		<id>https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Icon&amp;diff=1531</id>
		<title>Module:Icon</title>
		<link rel="alternate" type="text/html" href="https://cryptipedia.duckdns.org/mediawiki/index.php?title=Module:Icon&amp;diff=1531"/>
		<updated>2025-02-21T04:43:05Z</updated>

		<summary type="html">&lt;p&gt;Nyx: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements [[Template:Icon]].&lt;br /&gt;
&lt;br /&gt;
require(&amp;quot;strict&amp;quot;)&lt;br /&gt;
local yesNo = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local getPlain = nil&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Determine whether we&#039;re being called from a sandbox&lt;br /&gt;
local sandbox = mw.getCurrentFrame():getTitle():find(&#039;sandbox&#039;, 1, true) and &#039;/sandbox&#039; or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-- Implements [[Template:Icon]]&lt;br /&gt;
-- Returns the icon image corresponding to a string (like &#039;B&#039;)&lt;br /&gt;
function p._main(args, data)&lt;br /&gt;
	local data_module = &#039;Module:Icon/data&#039;..sandbox&lt;br /&gt;
	data = data or mw.loadData(data_module)&lt;br /&gt;
	local code = args.class or args[1]&lt;br /&gt;
	local iconData&lt;br /&gt;
	if code then&lt;br /&gt;
		code = code:match(&#039;^%s*(.-)%s*$&#039;):lower() -- trim whitespace and put in lower case&lt;br /&gt;
		iconData = data[code]&lt;br /&gt;
	end&lt;br /&gt;
	if not iconData then&lt;br /&gt;
		iconData = data._DEFAULT&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;[[File:%s%s%s|%s|class=noviewer|alt=%s]]&#039;,&lt;br /&gt;
		iconData.image,&lt;br /&gt;
		iconData.tooltip and &#039;|&#039; .. iconData.tooltip or &#039;&#039;,&lt;br /&gt;
		iconData.link == false and &#039;|link=&#039; or &#039;&#039;,&lt;br /&gt;
		args.size or &#039;16x16px&#039;,&lt;br /&gt;
		iconData.alt or &#039;&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Implements [[Template:Icon link]], a superset of [[Template:Icon]]&lt;br /&gt;
-- Returns an icon, plus a suitably formatted wikilink&lt;br /&gt;
function p._link(args, data)&lt;br /&gt;
	args.size = args.size or args.iconsize&lt;br /&gt;
	local icon = p._main(args, data)&lt;br /&gt;
	-- If no link given in args[2], default back to [[Template:Icon]]&lt;br /&gt;
	if not args[2] then&lt;br /&gt;
		return icon&lt;br /&gt;
	end&lt;br /&gt;
	-- Strip wiki markup out of link&lt;br /&gt;
	getPlain = getPlain or require(&amp;quot;Module:Text&amp;quot;).Text().getPlain&lt;br /&gt;
	local link = getPlain(args[2])&lt;br /&gt;
	local display = args[3] or args[2]&lt;br /&gt;
	-- italicize display string, if requested&lt;br /&gt;
	if yesNo(args.i) or yesNo(args.italic) or yesNo(args.italics) then&lt;br /&gt;
		display = &#039;&amp;lt;i&amp;gt;&#039;..display..&#039;&amp;lt;/i&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- if display is link, just use standard wlink&lt;br /&gt;
	if link == display then&lt;br /&gt;
		return &#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&#039;..icon..&#039; &amp;lt;/span&amp;gt;[[&#039;..link..&#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&#039;..icon..&#039; &amp;lt;/span&amp;gt;[[&#039;..link..&#039;|&#039;..display..&#039;]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame,{parentFirst=true})&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.link(frame)&lt;br /&gt;
	local args = getArgs(frame,{parentFirst=true})&lt;br /&gt;
	return p._link(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p[&#039;&#039;] = function (frame) return p._main(frame.args) end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Nyx</name></author>
	</entry>
</feed>