<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://fa.farahowzeh.ir/w/api.php?hidebots=1&amp;urlversion=1&amp;days=7&amp;limit=50&amp;action=feedrecentchanges&amp;feedformat=atom</id>
	<title>فراحوزه  - تغییرات اخیر [fa]</title>
	<link rel="self" type="application/atom+xml" href="https://fa.farahowzeh.ir/w/api.php?hidebots=1&amp;urlversion=1&amp;days=7&amp;limit=50&amp;action=feedrecentchanges&amp;feedformat=atom"/>
	<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/wiki/%D9%88%DB%8C%DA%98%D9%87:%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1%D8%A7%D8%AA_%D8%A7%D8%AE%DB%8C%D8%B1"/>
	<updated>2026-06-25T18:12:27Z</updated>
	<subtitle>آخرین تغییرات ویکی را در این خوراک پیگیری کنید.</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%DA%86%D9%BE&amp;diff=2096&amp;oldid=0</id>
		<title>الگو:چپ</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%DA%86%D9%BE&amp;diff=2096&amp;oldid=0"/>
		<updated>2026-06-25T10:02:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D8%A7%D9%84%DA%AF%D9%88:%DA%86%D9%BE&quot; title=&quot;الگو:چپ&quot;&gt;الگو:چپ&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۱ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;direction: ltr; text-align: left&amp;quot;&amp;gt;{{{1|}}}&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D9%BE%D8%A7%DB%8C%D8%A7%D9%86&amp;diff=2094&amp;oldid=0</id>
		<title>الگو:پایان</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D9%BE%D8%A7%DB%8C%D8%A7%D9%86&amp;diff=2094&amp;oldid=0"/>
		<updated>2026-06-25T10:02:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D8%A7%D9%84%DA%AF%D9%88:%D9%BE%D8%A7%DB%8C%D8%A7%D9%86&quot; title=&quot;الگو:پایان&quot;&gt;الگو:پایان&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۱ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;پایان چند ستونه و می تواند پایان چیزهای دیگر هم باشد&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C/%D9%82%D8%A7%D8%A8&amp;diff=2092&amp;oldid=0</id>
		<title>الگو:صفحه اصلی/قاب</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C/%D9%82%D8%A7%D8%A8&amp;diff=2092&amp;oldid=0"/>
		<updated>2026-06-25T10:02:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D8%A7%D9%84%DA%AF%D9%88:%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C/%D9%82%D8%A7%D8%A8&quot; title=&quot;الگو:صفحه اصلی/قاب&quot;&gt;الگو:صفحه اصلی/قاب&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۱ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;{{{class|}}}&amp;quot; style=&amp;quot;box-shadow: 2px 4px 11px 0px #becbd5; border-radius: 10px; overflow: hidden; {{{style|}}};&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;heading&amp;quot; style=&amp;quot;overflow: hidden; background-color: #d9ecff; border-top-left-radius: 8px; border-top-right-radius: 8px; {{{heading style|}}}&amp;quot;&amp;gt;&lt;br /&gt;
        {{#if: {{{تصویر|}}}|&amp;lt;div style=&amp;quot;float: right; padding: 5px&amp;quot;&amp;gt;[[image: {{{تصویر}}}|30px|link=|alt=]]&amp;lt;/div&amp;gt;}}&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;font-size: 130%; font-weight: bold; line-height: 40px; float: right; margin: 0; padding: 0px 20px; border: none; {{{heading text style|}}}&amp;quot;&amp;gt;{{{عنوان}}}&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;content {{{content class|}}}&amp;quot; style=&amp;quot;padding: 10px; vertical-align: top; {{{content style|}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{{محتوا}}}{{#if: {{{پیوند|}}}|&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: right&amp;quot;&amp;gt;{{{پیوند}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D8%B3%D8%AA%D9%88%D9%86_%D8%B4%D8%B1%D9%88%D8%B9&amp;diff=2090&amp;oldid=0</id>
		<title>الگو:ستون شروع</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D8%B3%D8%AA%D9%88%D9%86_%D8%B4%D8%B1%D9%88%D8%B9&amp;diff=2090&amp;oldid=0"/>
		<updated>2026-06-25T10:02:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D8%A7%D9%84%DA%AF%D9%88:%D8%B3%D8%AA%D9%88%D9%86_%D8%B4%D8%B1%D9%88%D8%B9&quot; class=&quot;mw-redirect&quot; title=&quot;الگو:ستون شروع&quot;&gt;الگو:ستون شروع&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۱ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;#تغییر_مسیر [[الگو:ستون-شروع]]&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D8%B3%D8%AA%D9%88%D9%86-%D8%B4%D8%B1%D9%88%D8%B9&amp;diff=2088&amp;oldid=0</id>
		<title>الگو:ستون-شروع</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D8%A7%D9%84%DA%AF%D9%88:%D8%B3%D8%AA%D9%88%D9%86-%D8%B4%D8%B1%D9%88%D8%B9&amp;diff=2088&amp;oldid=0"/>
		<updated>2026-06-25T10:02:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D8%A7%D9%84%DA%AF%D9%88:%D8%B3%D8%AA%D9%88%D9%86-%D8%B4%D8%B1%D9%88%D8%B9&quot; title=&quot;الگو:ستون-شروع&quot;&gt;الگو:ستون-شروع&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۱ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;{{#if:{{{عرض|}}}|{{colwidth|{{{عرض}}}}}|{{column-count|{{{1|}}}}} {{column-gap|{{#invoke:Numeral converter|convert_template|en|{{{فاصله|}}}}}}} {{column-rule|{{#invoke:Numeral converter|convert_template|en|{{{جداساز|}}}}}|outset|#eee}} }} {{#ifeq:{{lc:{{{small|}}}}}|yes|font-size:100%;}};  background-color:{{{رنگ|}}};&amp;quot;&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:%D8%A7%D9%84%DA%AF%D9%88%DB%8C_%DB%8C%DA%A9%D8%B3%D8%A7%D9%86_%D8%A8%D9%87_%D8%B2%D8%A8%D8%A7%D9%86_%D8%AF%DB%8C%DA%AF%D8%B1&amp;diff=2086&amp;oldid=0</id>
		<title>پودمان:الگوی یکسان به زبان دیگر</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:%D8%A7%D9%84%DA%AF%D9%88%DB%8C_%DB%8C%DA%A9%D8%B3%D8%A7%D9%86_%D8%A8%D9%87_%D8%B2%D8%A8%D8%A7%D9%86_%D8%AF%DB%8C%DA%AF%D8%B1&amp;diff=2086&amp;oldid=0"/>
		<updated>2026-06-25T09:35:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:%D8%A7%D9%84%DA%AF%D9%88%DB%8C_%DB%8C%DA%A9%D8%B3%D8%A7%D9%86_%D8%A8%D9%87_%D8%B2%D8%A8%D8%A7%D9%86_%D8%AF%DB%8C%DA%AF%D8%B1&quot; title=&quot;پودمان:الگوی یکسان به زبان دیگر&quot;&gt;پودمان:الگوی یکسان به زبان دیگر&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- این پودمان برای [[الگو:جعبه پیام الگوی یکسان انگلیسی و فارسی]] است.&lt;br /&gt;
local messageBox = require(&amp;quot;Module:Message box&amp;quot;).main&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
  main = function(frame)&lt;br /&gt;
    local currentTitle, args&lt;br /&gt;
&lt;br /&gt;
    currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
    args = getArgs(&lt;br /&gt;
    	frame, &lt;br /&gt;
    	{&lt;br /&gt;
    		trim = true, &lt;br /&gt;
    		removeBlanks = true,&lt;br /&gt;
    		parentOnly = true,&lt;br /&gt;
    		wrappers = &amp;quot;الگو:الگوی یکسان به زبان دیگر&amp;quot;,&lt;br /&gt;
    		noOverwrite = true,&lt;br /&gt;
    		valueFunc = function(_, value)&lt;br /&gt;
    			return mw.ustring.gsub(value, &amp;quot;الگو:&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		}&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
    -- 10 is template namespace&lt;br /&gt;
    if currentTitle:inNamespace(10) then&lt;br /&gt;
      if type(args[1]) ~= &amp;quot;nil&amp;quot; and mw.title.new(args[1], 10).exists then&lt;br /&gt;
        local text, templateIs, templateIn&lt;br /&gt;
&lt;br /&gt;
        text = &amp;quot;این الگوی &amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if mw.ustring.match(currentTitle.text, &amp;quot;[a-zA-Z]&amp;quot;) then&lt;br /&gt;
          templateIs = &amp;quot;انگلیسی&amp;quot;&lt;br /&gt;
          templateIn = &amp;quot;فارسی&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
          templateIs = &amp;quot;فارسی&amp;quot;&lt;br /&gt;
          templateIn = &amp;quot;انگلیسی&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        text = text .. templateIs .. &amp;quot; [[الگو:&amp;quot; .. args[1] .. &amp;quot;|نمونهٔ &amp;quot; .. templateIn ..&amp;quot;]] دارد که همه پارامترهایش &amp;quot; .. templateIn .. &amp;quot; است.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if templateIn == &amp;quot;فارسی&amp;quot; then&lt;br /&gt;
          text = text .. &amp;quot; توصیه می‌کنیم از الگوی فارسی استفاده کنید.&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Add category into persian templates have similar template in English.&lt;br /&gt;
        if templateIs == &amp;quot;فارسی&amp;quot; then&lt;br /&gt;
          text = text .. &amp;quot;[[رده:دارای الگوی یکسان به زبان دیگر]]&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return messageBox(&amp;quot;ombox&amp;quot;, {text=text})&lt;br /&gt;
      else&lt;br /&gt;
        error(&amp;quot;الگوی مقصد یا مشخص نشده‌است یا در فضای نام الگو قرار ندارد&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
      error(&amp;quot;الگوی {{الگوی|الگوی یکسان به زبان دیگر}} فقط در فضای نام الگو استفاده می‌شود&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Yesno&amp;diff=2083&amp;oldid=0</id>
		<title>پودمان:Yesno</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Yesno&amp;diff=2083&amp;oldid=0"/>
		<updated>2026-06-25T09:35:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Yesno&quot; title=&quot;پودمان:Yesno&quot;&gt;پودمان:Yesno&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Function allowing for consistent treatment of boolean-like wikitext input.&lt;br /&gt;
-- It works similarly to the template {{yesno}}.&lt;br /&gt;
&lt;br /&gt;
return function (val, default)&lt;br /&gt;
	-- If your wiki uses non-ascii characters for any of &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc., you&lt;br /&gt;
	-- should replace &amp;quot;val:lower()&amp;quot; with &amp;quot;mw.ustring.lower(val)&amp;quot; in the&lt;br /&gt;
	-- following line.&lt;br /&gt;
	val = type(val) == &amp;#039;string&amp;#039; and mw.ustring.lower(val) or val&lt;br /&gt;
	if val == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	elseif val == true &lt;br /&gt;
		or val == &amp;#039;yes&amp;#039;&lt;br /&gt;
		or val == &amp;#039;y&amp;#039;&lt;br /&gt;
		or val == &amp;#039;true&amp;#039;&lt;br /&gt;
		or val == &amp;#039;t&amp;#039;&lt;br /&gt;
		or val == &amp;#039;on&amp;#039;&lt;br /&gt;
		or val == &amp;#039;بله&amp;#039;&lt;br /&gt;
		or val == &amp;#039;آره&amp;#039;&lt;br /&gt;
		or val == &amp;#039;درست&amp;#039;&lt;br /&gt;
		or val == &amp;#039;صحیح&amp;#039;&lt;br /&gt;
		or val == &amp;#039;روشن&amp;#039;&lt;br /&gt;
		or tonumber(val) == 1&lt;br /&gt;
	then&lt;br /&gt;
		return true&lt;br /&gt;
	elseif val == false&lt;br /&gt;
		or val == &amp;#039;no&amp;#039;&lt;br /&gt;
		or val == &amp;#039;n&amp;#039;&lt;br /&gt;
		or val == &amp;#039;false&amp;#039;&lt;br /&gt;
		or val == &amp;#039;f&amp;#039;&lt;br /&gt;
		or val == &amp;#039;off&amp;#039;&lt;br /&gt;
		or val == &amp;#039;خیر&amp;#039;&lt;br /&gt;
		or val == &amp;#039;نه&amp;#039;&lt;br /&gt;
		or val == &amp;#039;غلط&amp;#039;&lt;br /&gt;
		or val == &amp;#039;اشتباه&amp;#039;&lt;br /&gt;
		or val == &amp;#039;خاموش&amp;#039;&lt;br /&gt;
		or tonumber(val) == 0&lt;br /&gt;
	then&lt;br /&gt;
		return false&lt;br /&gt;
	else&lt;br /&gt;
		return default&lt;br /&gt;
	end&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Unsubst&amp;diff=2080&amp;oldid=0</id>
		<title>پودمان:Unsubst</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Unsubst&amp;diff=2080&amp;oldid=0"/>
		<updated>2026-06-25T09:35:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Unsubst&quot; title=&quot;پودمان:Unsubst&quot;&gt;پودمان:Unsubst&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local checkType = require(&amp;#039;libraryUtil&amp;#039;).checkType&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local BODY_PARAM = &amp;#039;$B&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local specialParams = {&lt;br /&gt;
	[&amp;#039;$params&amp;#039;] = &amp;#039;parameter list&amp;#039;,&lt;br /&gt;
	[&amp;#039;$aliases&amp;#039;] = &amp;#039;parameter aliases&amp;#039;,&lt;br /&gt;
	[&amp;#039;$flags&amp;#039;] = &amp;#039;flags&amp;#039;,&lt;br /&gt;
	[&amp;#039;$B&amp;#039;] = &amp;#039;template content&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame, body)&lt;br /&gt;
	-- If we are substing, this function returns a template invocation, and if&lt;br /&gt;
	-- not, it returns the template body. The template body can be specified in&lt;br /&gt;
	-- the body parameter, or in the template parameter defined in the&lt;br /&gt;
	-- BODY_PARAM variable. This function can be called from Lua or from&lt;br /&gt;
	-- #invoke.&lt;br /&gt;
&lt;br /&gt;
	-- Return the template body if we aren&amp;#039;t substing.&lt;br /&gt;
	if not mw.isSubsting() then&lt;br /&gt;
		if body ~= nil then&lt;br /&gt;
			return body&lt;br /&gt;
		elseif frame.args[BODY_PARAM] ~= nil then&lt;br /&gt;
			return frame.args[BODY_PARAM]&lt;br /&gt;
		else&lt;br /&gt;
			error(string.format(&lt;br /&gt;
				&amp;quot;no template content specified (use parameter &amp;#039;%s&amp;#039; from #invoke)&amp;quot;,&lt;br /&gt;
				BODY_PARAM&lt;br /&gt;
			), 2)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Sanity check for the frame object.&lt;br /&gt;
	if type(frame) ~= &amp;#039;table&amp;#039;&lt;br /&gt;
		or type(frame.getParent) ~= &amp;#039;function&amp;#039;&lt;br /&gt;
		or not frame:getParent()&lt;br /&gt;
	then&lt;br /&gt;
		error(&lt;br /&gt;
			&amp;quot;argument #1 to &amp;#039;main&amp;#039; must be a frame object with a parent &amp;quot; ..&lt;br /&gt;
			&amp;quot;frame available&amp;quot;,&lt;br /&gt;
			2&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Find the invocation name.&lt;br /&gt;
	local mTemplateInvocation = require(&amp;#039;Module:Template invocation&amp;#039;)&lt;br /&gt;
	local name = mTemplateInvocation.name(frame:getParent():getTitle())&lt;br /&gt;
&lt;br /&gt;
	-- Combine passed args with passed defaults&lt;br /&gt;
	local args = {}&lt;br /&gt;
	if string.find( &amp;#039;,&amp;#039;..(frame.args[&amp;#039;$flags&amp;#039;] or &amp;#039;&amp;#039;)..&amp;#039;,&amp;#039;, &amp;#039;,%s*override%s*,&amp;#039; ) then&lt;br /&gt;
		for k, v in pairs( frame:getParent().args ) do&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in pairs( frame.args ) do&lt;br /&gt;
			if not specialParams[k] then&lt;br /&gt;
				if v == &amp;#039;__DATE__&amp;#039; then&lt;br /&gt;
					v = mw.getContentLanguage():formatDate( &amp;#039;F Y&amp;#039; )&lt;br /&gt;
				end&lt;br /&gt;
				args[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for k, v in pairs( frame.args ) do&lt;br /&gt;
			if not specialParams[k] then&lt;br /&gt;
				if v == &amp;#039;__DATE__&amp;#039; then&lt;br /&gt;
					v = mw.getContentLanguage():formatDate( &amp;#039;F Y&amp;#039; )&lt;br /&gt;
				end&lt;br /&gt;
				args[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in pairs( frame:getParent().args ) do&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Trim parameters, if not specified otherwise&lt;br /&gt;
	if not string.find( &amp;#039;,&amp;#039;..(frame.args[&amp;#039;$flags&amp;#039;] or &amp;#039;&amp;#039;)..&amp;#039;,&amp;#039;, &amp;#039;,%s*keep%-whitespace%s*,&amp;#039; ) then&lt;br /&gt;
		for k, v in pairs( args ) do args[k] = mw.ustring.match(v, &amp;#039;^%s*(.*)%s*$&amp;#039;) or &amp;#039;&amp;#039; end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Pull information from parameter aliases&lt;br /&gt;
	local aliases = {}&lt;br /&gt;
	if frame.args[&amp;#039;$aliases&amp;#039;] then&lt;br /&gt;
		local list = mw.text.split( frame.args[&amp;#039;$aliases&amp;#039;], &amp;#039;%s*,%s*&amp;#039; )&lt;br /&gt;
		for k, v in ipairs( list ) do&lt;br /&gt;
			local tmp = mw.text.split( v, &amp;#039;%s*&amp;gt;%s*&amp;#039; )&lt;br /&gt;
			aliases[tonumber(mw.ustring.match(tmp[1], &amp;#039;^[1-9][0-9]*$&amp;#039;)) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], &amp;#039;^[1-9][0-9]*$&amp;#039;))) or tmp[2])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs( aliases ) do&lt;br /&gt;
		if args[k] and ( not args[v] or args[v] == &amp;#039;&amp;#039; ) then&lt;br /&gt;
			args[v] = args[k]&lt;br /&gt;
		end&lt;br /&gt;
		args[k] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Remove empty parameters, if specified&lt;br /&gt;
	if string.find( &amp;#039;,&amp;#039;..(frame.args[&amp;#039;$flags&amp;#039;] or &amp;#039;&amp;#039;)..&amp;#039;,&amp;#039;, &amp;#039;,%s*remove%-empty%s*,&amp;#039; ) then&lt;br /&gt;
		local tmp = 0&lt;br /&gt;
		for k, v in ipairs( args ) do&lt;br /&gt;
			if v ~= &amp;#039;&amp;#039; or ( args[k+1] and args[k+1] ~= &amp;#039;&amp;#039; ) or ( args[k+2] and args[k+2] ~= &amp;#039;&amp;#039; ) then&lt;br /&gt;
				tmp = k&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in pairs( args ) do&lt;br /&gt;
			if v == &amp;#039;&amp;#039; then&lt;br /&gt;
				if not (type(k) == &amp;#039;number&amp;#039; and k &amp;lt; tmp) then args[k] = nil end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Order parameters&lt;br /&gt;
	if frame.args[&amp;#039;$params&amp;#039;] then&lt;br /&gt;
		local params, tmp = mw.text.split( frame.args[&amp;#039;$params&amp;#039;], &amp;#039;%s*,%s*&amp;#039; ), {}&lt;br /&gt;
		for k, v in ipairs(params) do&lt;br /&gt;
			v = tonumber(mw.ustring.match(v, &amp;#039;^[1-9][0-9]*$&amp;#039;)) or v&lt;br /&gt;
			if args[v] then tmp[v], args[v] = args[v], nil end&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end&lt;br /&gt;
		args = tmp&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mTemplateInvocation.invocation(name, args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p[&amp;#039;&amp;#039;] = p.main -- For backwards compatibility&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:TreeChart/data&amp;diff=2077&amp;oldid=0</id>
		<title>پودمان:TreeChart/data</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:TreeChart/data&amp;diff=2077&amp;oldid=0"/>
		<updated>2026-06-25T09:35:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:TreeChart/data&quot; title=&quot;پودمان:TreeChart/data&quot;&gt;پودمان:TreeChart/data&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local SLD = &amp;#039;1px solid black&amp;#039;&lt;br /&gt;
local DSH = &amp;#039;1px dashed black&amp;#039;&lt;br /&gt;
local DOT = &amp;#039;1px dotted black&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local data = {&lt;br /&gt;
	[&amp;#039;!&amp;#039;] = {&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;%&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;quot;&amp;#039;&amp;quot;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;(&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;)&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;*&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;+&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;,&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;-&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;.&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;7&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;:&amp;#039;] = {&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;A&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;C&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;D&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;F&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;G&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;G2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;H&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;J&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;K&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;L&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;M&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;P&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;Q&amp;#039;] = {&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;R&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;S&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;T3&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;T2&amp;#039;] = {&lt;br /&gt;
		b = { { style ={ [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style =  { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = {  [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;T&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;U&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;V&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;W&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;X&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;Y&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;Z&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;^&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;$&amp;#039;] = {&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039;, rowspan = &amp;#039;2&amp;#039;}, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;`&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;a2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] = &amp;#039;1px dashed #000001&amp;#039;, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;a&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;b2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = &amp;#039;1px dotted #000001&amp;#039;, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;b3&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;b&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;c&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;d&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;di&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;dj&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;e&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;f&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;fh&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] =DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;fy&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;h&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;he&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;i&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;ic&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;j&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;jc&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;k2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;k3&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;k&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;kq&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;kr&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;kq2&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;kr2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
	[&amp;#039;l2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] = &amp;#039;1px dashed #000001&amp;#039;, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;l3&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;l4&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;l&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;m2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;m&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;mp&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;mp2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;n2&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = &amp;#039;1px dotted #000001&amp;#039;, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;n&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;np&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;np2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;o2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;o&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { rowspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;om&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;om2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;on&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;on2&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;p2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DSH, [&amp;#039;border-bottom&amp;#039;] = &amp;#039;1px dotted #000001&amp;#039;, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;p&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;q2&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] = &amp;#039;1px dashed #000001&amp;#039;, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;q&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;ql&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;ql2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, [&amp;#039;border-bottom&amp;#039;] =DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;r2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;r&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;rl&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;rl2&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = DOT, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;t&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;v&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = SLD, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;x&amp;#039;] = {},&lt;br /&gt;
	[&amp;#039;y&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;ye&amp;#039;] = {&lt;br /&gt;
		b = { { style = { [&amp;#039;border-right&amp;#039;] = SLD, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;1em&amp;#039;, height = &amp;#039;1em&amp;#039; } },&lt;br /&gt;
			{ attr = { rowspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;1em&amp;#039;, height = &amp;#039;2em&amp;#039; } } }&lt;br /&gt;
			},&lt;br /&gt;
	[&amp;#039;~&amp;#039;] = {&lt;br /&gt;
		b = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } },&lt;br /&gt;
		t = { { attr = { colspan = &amp;#039;2&amp;#039; }, style = { [&amp;#039;border-bottom&amp;#039;] = DSH, width = &amp;#039;2em&amp;#039;, height = &amp;#039;1em&amp;#039; } } }&lt;br /&gt;
			}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local retval = {}&lt;br /&gt;
&lt;br /&gt;
for k,v in pairs(data) do&lt;br /&gt;
	retval[k] = {}&lt;br /&gt;
	for k2,v2 in pairs(v) do&lt;br /&gt;
		local renderedCells = mw.html.create()&lt;br /&gt;
		for k3,v3 in ipairs(v2) do&lt;br /&gt;
			renderedCells:tag(&amp;#039;td&amp;#039;):css(v3.style or {}):attr(v3.attr or {})&lt;br /&gt;
		end&lt;br /&gt;
		retval[k][k2] = tostring(renderedCells)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return retval&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:TreeChart&amp;diff=2074&amp;oldid=0</id>
		<title>پودمان:TreeChart</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:TreeChart&amp;diff=2074&amp;oldid=0"/>
		<updated>2026-06-25T09:35:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:TreeChart&quot; title=&quot;پودمان:TreeChart&quot;&gt;پودمان:TreeChart&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;Module:No globals&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local cells = mw.loadData(&amp;#039;Module:TreeChart/data&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._main(cell_args)&lt;br /&gt;
	local ret = mw.html.create()&lt;br /&gt;
	local top = ret:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
						:css{ height = &amp;#039;1px&amp;#039;,&lt;br /&gt;
								[&amp;#039;text-align&amp;#039;] = &amp;#039;center&amp;#039; }&lt;br /&gt;
	local bottom = ret:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
						:css{ height = &amp;#039;1px&amp;#039;,&lt;br /&gt;
								[&amp;#039;text-align&amp;#039;] = &amp;#039;center&amp;#039; }&lt;br /&gt;
	for _, v in ipairs(cell_args) do&lt;br /&gt;
		if type(v) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			top:wikitext(cells[v].t)&lt;br /&gt;
			bottom:wikitext(cells[v].b)&lt;br /&gt;
		else&lt;br /&gt;
			top:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:attr{ colspan = v.colspan or cell_args.colspan or 6,&lt;br /&gt;
						rowspan = v.rowspan or cell_args.rowspan or 2 }&lt;br /&gt;
				:css{ padding = &amp;#039;0.2em&amp;#039;,&lt;br /&gt;
						border = (v.border or cell_args.border or &amp;#039;2&amp;#039;) .. &amp;#039;px solid black&amp;#039; }&lt;br /&gt;
				:cssText(v.boxstyle or cell_args.boxstyle)&lt;br /&gt;
				:wikitext(v.text)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {wrappers = &amp;#039;Template:Tree chart&amp;#039;, trim = false, removeBlanks = false})&lt;br /&gt;
	local cell_args = {&lt;br /&gt;
		colspan = args.colspan,&lt;br /&gt;
		rowspan = args.rowspan,&lt;br /&gt;
		border = args.border,&lt;br /&gt;
		boxstyle = args.boxstyle&lt;br /&gt;
	}&lt;br /&gt;
	for _, val in ipairs(args) do&lt;br /&gt;
		local trimmedVal = val:match(&amp;#039;^%s*(.-)%s*$&amp;#039;)&lt;br /&gt;
		if trimmedVal == &amp;#039;&amp;#039; then&lt;br /&gt;
			trimmedVal = &amp;#039;$&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		if cells[trimmedVal] then&lt;br /&gt;
			table.insert(cell_args, trimmedVal)&lt;br /&gt;
		else&lt;br /&gt;
			-- Unnamed params behave weirdly&lt;br /&gt;
			-- white space at the front counts for param_{{{1}}}, but not whitespace at the end, so remove it&lt;br /&gt;
			local leftTrimmedVal = val:gsub(&amp;#039;%s+$&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
			table.insert(cell_args, {&lt;br /&gt;
				text = args[trimmedVal] or (&amp;#039;{{{&amp;#039;..trimmedVal..&amp;#039;}}}&amp;#039;),&lt;br /&gt;
				colspan = args[&amp;#039;colspan_&amp;#039;..leftTrimmedVal],&lt;br /&gt;
				rowspan = args[&amp;#039;rowspan_&amp;#039;..leftTrimmedVal],&lt;br /&gt;
				border = args[&amp;#039;border_&amp;#039;..leftTrimmedVal],&lt;br /&gt;
				boxstyle = args[&amp;#039;boxstyle_&amp;#039;..leftTrimmedVal]&lt;br /&gt;
			})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p._main(cell_args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/T&amp;diff=2071&amp;oldid=0</id>
		<title>پودمان:Transclusion count/data/T</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/T&amp;diff=2071&amp;oldid=0"/>
		<updated>2026-06-25T09:35:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/T&quot; title=&quot;پودمان:Transclusion count/data/T&quot;&gt;پودمان:Transclusion count/data/T&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;T&amp;quot;] = 270000,&lt;br /&gt;
[&amp;quot;T1&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;T:TDYK&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;TAFI/Picture_box&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;TAFI/Picture_box/show_picture&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;TBA&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;TCH&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;TCMDb_name&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;TCMDb_title&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;TDMCA&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;TFAFULL&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;TFAIMAGE&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;TFAfooter&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;TFArecentlist&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;THA&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;TOC_bottom&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;TOC_left&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;TOC_left/styles.css&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;TOC_limit&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;TOC_limit/styles.css&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;TOC_right&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;TOC_right/styles.css&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;TOC_top&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;TOClimit&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;TOCright&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;TUR&amp;quot;] = 7600,&lt;br /&gt;
[&amp;quot;TV.com_episode&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;TV.com_show&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;TVDebutsEndingsAntonym&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;TVQ&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;TWA/Logo/3&amp;quot;] = 54000,&lt;br /&gt;
[&amp;quot;TWA/Navigation2&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;TWA_nav_inner_black&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;TWP&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Tab&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Tag&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Talk&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Talk_archive&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;Talk_archive_navigation&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Talk_header&amp;quot;] = 538000,&lt;br /&gt;
[&amp;quot;Talk_other&amp;quot;] = 162000,&lt;br /&gt;
[&amp;quot;Talk_page&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Talk_page_header&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Talk_page_of_redirect&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Talk_page_stalker&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Talk_page_watcher&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Talk_quote_block&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Talk_quote_block/styles.css&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Talk_quote_inline&amp;quot;] = 64000,&lt;br /&gt;
[&amp;quot;Talk_quote_inline/styles.css&amp;quot;] = 64000,&lt;br /&gt;
[&amp;quot;Talkarchive&amp;quot;] = 98000,&lt;br /&gt;
[&amp;quot;Talkarchivenav&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Talkback&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;Talkheader&amp;quot;] = 134000,&lt;br /&gt;
[&amp;quot;Talkpage&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Talkquote&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Talkspace_detect&amp;quot;] = 371000,&lt;br /&gt;
[&amp;quot;Tan&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Tasks&amp;quot;] = 665000,&lt;br /&gt;
[&amp;quot;Taxobox&amp;quot;] = 181000,&lt;br /&gt;
[&amp;quot;Taxobox/Error_colour&amp;quot;] = 442000,&lt;br /&gt;
[&amp;quot;Taxobox/core&amp;quot;] = 442000,&lt;br /&gt;
[&amp;quot;Taxobox/species&amp;quot;] = 62000,&lt;br /&gt;
[&amp;quot;Taxobox_colour&amp;quot;] = 514000,&lt;br /&gt;
[&amp;quot;Taxobox_name&amp;quot;] = 121000,&lt;br /&gt;
[&amp;quot;Taxon_info&amp;quot;] = 285000,&lt;br /&gt;
[&amp;quot;Taxon_italics&amp;quot;] = 212000,&lt;br /&gt;
[&amp;quot;Taxonbar&amp;quot;] = 434000,&lt;br /&gt;
[&amp;quot;Taxonbar/candidate&amp;quot;] = 409000,&lt;br /&gt;
[&amp;quot;Taxonomy&amp;quot;] = 395000,&lt;br /&gt;
[&amp;quot;Taxonomy/Acanthomorpha&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Taxonomy/Acanthopterygii&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Taxonomy/Acari&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Actinopteri&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Taxonomy/Actinopterygii&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Taxonomy/Aculeata&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Taxonomy/Adephaga&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Taxonomy/Afrophidia&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Taxonomy/Alethinophidia&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Taxonomy/Amniota&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Taxonomy/Amphibia&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Taxonomy/Amphiesmenoptera&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Taxonomy/Anartioptera&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Taxonomy/Angiosperms&amp;quot;] = 89000,&lt;br /&gt;
[&amp;quot;Taxonomy/Animalia&amp;quot;] = 225000,&lt;br /&gt;
[&amp;quot;Taxonomy/Anthophila&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Taxonomy/Antliophora&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;Taxonomy/Anura&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Taxonomy/Apocrita&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Taxonomy/Apoditrysia&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;Taxonomy/Apoidea&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Taxonomy/Arachnida&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Taxonomy/Arachnomorpha&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Taxonomy/Araneae&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Taxonomy/Araneoidea&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Araneomorphae&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Taxonomy/Archaeplastida&amp;quot;] = 95000,&lt;br /&gt;
[&amp;quot;Taxonomy/Archosauria&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Taxonomy/Archosauria/skip&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Taxonomy/Arctiinae&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Taxonomy/Arctiini&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Taxonomy/Arthropoda&amp;quot;] = 113000,&lt;br /&gt;
[&amp;quot;Taxonomy/Artiodactyla&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Taxonomy/Ascomycota&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Taxonomy/Asilomorpha&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Taxonomy/Asparagales&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Taxonomy/Asteraceae&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Taxonomy/Asterales&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Taxonomy/Asterids&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Taxonomy/Asteroideae&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Taxonomy/Australaves&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Taxonomy/Avemetatarsalia&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Taxonomy/Aves&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Taxonomy/Aves/skip&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Taxonomy/Batrachia&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;Taxonomy/Batrachomorpha&amp;quot;] = 8500,&lt;br /&gt;
[&amp;quot;Taxonomy/Bilateria&amp;quot;] = 221000,&lt;br /&gt;
[&amp;quot;Taxonomy/Bivalvia&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Taxonomy/Bombycoidea&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Taxonomy/Boreoeutheria&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Taxonomy/Brachycera&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Taxonomy/Bulbophyllum&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Taxonomy/Caenogastropoda&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Taxonomy/Caenophidia&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Taxonomy/Calyptratae&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Taxonomy/Campanulids&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Taxonomy/Carabidae&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Taxonomy/Caraboidea&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Taxonomy/Caryophyllales&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Taxonomy/Cephalopoda&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Cerambycidae&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Taxonomy/Chelicerata&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Taxonomy/Chordata&amp;quot;] = 82000,&lt;br /&gt;
[&amp;quot;Taxonomy/Chrysomelidae&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Taxonomy/Chrysomeloidea&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Taxonomy/Cladotheria&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Cnidaria&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Taxonomy/Coelolepida&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Taxonomy/Coleoptera&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Taxonomy/Colubroides&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Taxonomy/Commelinids&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Taxonomy/Condylognatha&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Taxonomy/Conoidea&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Taxonomy/Core_eudicots&amp;quot;] = 56000,&lt;br /&gt;
[&amp;quot;Taxonomy/Crambidae&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Cucujiformia&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Taxonomy/Curculionoidea&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Taxonomy/Cyclorrhapha&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Taxonomy/Cyperaceae&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Taxonomy/Cyprinidae&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Taxonomy/Cypriniformes&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Taxonomy/Cypriniphysae&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Taxonomy/Cyprinoidea&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Taxonomy/Dendrobieae&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Taxonomy/Deuterostomia&amp;quot;] = 83000,&lt;br /&gt;
[&amp;quot;Taxonomy/Diaphoretickes&amp;quot;] = 97000,&lt;br /&gt;
[&amp;quot;Taxonomy/Diapsida&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Dicondylia&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;Taxonomy/Dikarya&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Taxonomy/Dinosauria&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Taxonomy/Dinosauriformes&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Taxonomy/Dinosauromorpha&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Taxonomy/Diptera&amp;quot;] = 9100,&lt;br /&gt;
[&amp;quot;Taxonomy/Ditrysia&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Taxonomy/Dracohors&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Taxonomy/Ecdysozoa&amp;quot;] = 114000,&lt;br /&gt;
[&amp;quot;Taxonomy/Elpistostegalia&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Taxonomy/Embryophytes&amp;quot;] = 94000,&lt;br /&gt;
[&amp;quot;Taxonomy/Embryophytes/Plantae&amp;quot;] = 94000,&lt;br /&gt;
[&amp;quot;Taxonomy/Endopterygota&amp;quot;] = 81000,&lt;br /&gt;
[&amp;quot;Taxonomy/Entelegynae&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Taxonomy/Eotetrapodiformes&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Taxonomy/Epidendroideae&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Taxonomy/Erebidae&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Taxonomy/Eremoneura&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Taxonomy/Ericales&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Taxonomy/Euarchontoglires&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Taxonomy/Eudicots&amp;quot;] = 59000,&lt;br /&gt;
[&amp;quot;Taxonomy/Eufalconimorphae&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Taxonomy/Eugnathostomata&amp;quot;] = 65000,&lt;br /&gt;
[&amp;quot;Taxonomy/Eukaryota&amp;quot;] = 326000,&lt;br /&gt;
[&amp;quot;Taxonomy/Eukaryota/displayed&amp;quot;] = 324000,&lt;br /&gt;
[&amp;quot;Taxonomy/Eulepidoptera&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;Taxonomy/Eumetabola&amp;quot;] = 87000,&lt;br /&gt;
[&amp;quot;Taxonomy/Eumetazoa&amp;quot;] = 224000,&lt;br /&gt;
[&amp;quot;Taxonomy/Euphorbia&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Euphorbiaceae&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Taxonomy/Euphorbieae&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Euphorbiinae&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Euphorbioideae&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Taxonomy/Eureptilia&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Euteleostomi&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Taxonomy/Eutheria&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Taxonomy/Euthyneura&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Taxonomy/Fabaceae&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Taxonomy/Fabales&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Taxonomy/Fabids&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Taxonomy/Ferungulata&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Taxonomy/Filozoa&amp;quot;] = 225000,&lt;br /&gt;
[&amp;quot;Taxonomy/Fungi&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Taxonomy/Gastropoda&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Taxonomy/Geadephaga&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;Taxonomy/Gekkota&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Taxonomy/Gelechioidea&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Taxonomy/Gentianales&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Taxonomy/Geometridae&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Taxonomy/Geometroidea&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Taxonomy/Glires&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Taxonomy/Glossata&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Taxonomy/Gnathostomata&amp;quot;] = 65000,&lt;br /&gt;
[&amp;quot;Taxonomy/Graminid_clade&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Taxonomy/Hemiptera&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Taxonomy/Heterobranchia&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Taxonomy/Heteroneura&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Taxonomy/Heteroptera&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Taxonomy/Hexapoda&amp;quot;] = 95000,&lt;br /&gt;
[&amp;quot;Taxonomy/Holomycota&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Taxonomy/Holotheria&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Holozoa&amp;quot;] = 225000,&lt;br /&gt;
[&amp;quot;Taxonomy/Hyloidea&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Taxonomy/Hymenoptera&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;Taxonomy/Hymenopterida&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;Taxonomy/Inopinaves&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Taxonomy/Insecta&amp;quot;] = 94000,&lt;br /&gt;
[&amp;quot;Taxonomy/Lamiaceae&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Taxonomy/Lamiales&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Taxonomy/Lamiids&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Taxonomy/Lamiinae&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Larentiinae&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Laurasiatheria&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Taxonomy/Leotiomyceta&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Lepidoptera&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Taxonomy/Lepidosauria&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Taxonomy/Lepidosauromorpha&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Taxonomy/Life&amp;quot;] = 330000,&lt;br /&gt;
[&amp;quot;Taxonomy/Lissamphibia&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Taxonomy/Lophotrochozoa&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Taxonomy/Macroheterocera&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Taxonomy/Magnoliids&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Taxonomy/Malpighiales&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Taxonomy/Malvids&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Taxonomy/Mammalia&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Mammaliaformes&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Mammaliaformes/skip&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Metapterygota&amp;quot;] = 91000,&lt;br /&gt;
[&amp;quot;Taxonomy/Mollusca&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Taxonomy/Monocots&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Taxonomy/Muroidea&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Taxonomy/Muscomorpha&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Taxonomy/Myoglossata&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Taxonomy/Myomorpha&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Myrtaceae&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Taxonomy/Myrtales&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Taxonomy/Myrtoideae&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Taxonomy/Neoaves&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Taxonomy/Neobatrachia&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Taxonomy/Neodiapsida&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Neogastropoda&amp;quot;] = 8600,&lt;br /&gt;
[&amp;quot;Taxonomy/Neognathae&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Taxonomy/Neolepidoptera&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Taxonomy/Neoptera&amp;quot;] = 91000,&lt;br /&gt;
[&amp;quot;Taxonomy/Neopterygii&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Taxonomy/Nephrozoa&amp;quot;] = 220000,&lt;br /&gt;
[&amp;quot;Taxonomy/Noctuidae&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Noctuoidea&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Taxonomy/Obazoa&amp;quot;] = 229000,&lt;br /&gt;
[&amp;quot;Taxonomy/Obtectomera&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;Taxonomy/Oestroidea&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Olfactores&amp;quot;] = 65000,&lt;br /&gt;
[&amp;quot;Taxonomy/Ophidia&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Taxonomy/Opisthokonta&amp;quot;] = 229000,&lt;br /&gt;
[&amp;quot;Taxonomy/Opisthothelae&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Taxonomy/Orchidaceae&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Taxonomy/Orchidoideae&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Taxonomy/Ornithodira&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Taxonomy/Orthoptera&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Taxonomy/Orthopterida&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Taxonomy/Ostariophysi&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Taxonomy/Osteichthyes&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Taxonomy/Otophysi&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;Taxonomy/Ovalentaria&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Taxonomy/Palaeoptera&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Taxonomy/Panarthropoda&amp;quot;] = 113000,&lt;br /&gt;
[&amp;quot;Taxonomy/Pancrustacea&amp;quot;] = 97000,&lt;br /&gt;
[&amp;quot;Taxonomy/Panorpida&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;Taxonomy/Panorthoptera&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Taxonomy/Papilionoidea&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Taxonomy/ParaHoxozoa&amp;quot;] = 223000,&lt;br /&gt;
[&amp;quot;Taxonomy/Paraneoptera&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Taxonomy/Passeri&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;Taxonomy/Passerida&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Taxonomy/Passeriformes&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;Taxonomy/Passeroidea&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Percomorpha&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Taxonomy/Pezizomycotina&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Taxonomy/Phytophaga&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;Taxonomy/Piperaceae&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Taxonomy/Piperales&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Taxonomy/Piperoideae&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Taxonomy/Placentalia&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Taxonomy/Plantae&amp;quot;] = 94000,&lt;br /&gt;
[&amp;quot;Taxonomy/Poaceae&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Taxonomy/Poales&amp;quot;] = 8500,&lt;br /&gt;
[&amp;quot;Taxonomy/Polyneoptera&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Taxonomy/Polyorthoptera&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Taxonomy/Polyphaga&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Taxonomy/Polysporangiophytes&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;Taxonomy/Polysporangiophytes/Plantae&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;Taxonomy/Protostomia&amp;quot;] = 138000,&lt;br /&gt;
[&amp;quot;Taxonomy/Psittacopasserae&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Taxonomy/Pterygota&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;Taxonomy/Pyraloidea&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Taxonomy/Ranoidea&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Taxonomy/Reptilia&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Reptiliomorpha&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Taxonomy/Rhipidistia&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Taxonomy/Rodentia&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Taxonomy/Romeriida&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Rosales&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Taxonomy/Rosids&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;Taxonomy/Rubiaceae&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Taxonomy/Rubioideae&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Taxonomy/Saccharomyceta&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Taxonomy/Salientia&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Taxonomy/Salticidae&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Taxonomy/Salticinae&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Taxonomy/Sapindales&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Taxonomy/Sarcopterygii&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Taxonomy/Sauria&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Saurischia&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Sauropsida&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Taxonomy/Schizophora&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Taxonomy/Scrotifera&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Taxonomy/Serpentes&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Taxonomy/Siluriformes&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Taxonomy/Spermatophyta&amp;quot;] = 91000,&lt;br /&gt;
[&amp;quot;Taxonomy/Spermatophytes/Plantae&amp;quot;] = 91000,&lt;br /&gt;
[&amp;quot;Taxonomy/Spiralia&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Taxonomy/Squamata&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Taxonomy/Stegocephalia&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Taxonomy/Superasterids&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Taxonomy/Superrosids&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;Taxonomy/Synapsida&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Taxonomy/Tachinidae&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Taxonomy/Tactopoda&amp;quot;] = 113000,&lt;br /&gt;
[&amp;quot;Taxonomy/Teleostei&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Taxonomy/Teleostomi&amp;quot;] = 63000,&lt;br /&gt;
[&amp;quot;Taxonomy/Telluraves&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Taxonomy/Tetrapoda&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Taxonomy/Tetrapodomorpha&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Taxonomy/Theria&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Tortricidae&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Tortricoidea&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Taxonomy/Toxicofera&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Taxonomy/Tracheophyta&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;Taxonomy/Tracheophytes/Plantae&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;Taxonomy/Trechnotheria&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Tribosphenida&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Trochida&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Taxonomy/Trochoidea&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Taxonomy/Ungulata&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Taxonomy/Unicalcarida&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Taxonomy/Unikonta&amp;quot;] = 229000,&lt;br /&gt;
[&amp;quot;Taxonomy/Vertebrata&amp;quot;] = 65000,&lt;br /&gt;
[&amp;quot;Taxonomy/Vetigastropoda&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Taxonomy/Virus&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Taxonomy/Zatheria&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Taxonomy/Zoosporia&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Taxonomy/nobreak&amp;quot;] = 395000,&lt;br /&gt;
[&amp;quot;Taxonomy_key&amp;quot;] = 72000,&lt;br /&gt;
[&amp;quot;Taxonomy_preload&amp;quot;] = 74000,&lt;br /&gt;
[&amp;quot;Tb&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Tcmdb_title&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Team_appearances_list&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Team_roster_navbox&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Technical&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;TelevisionWikiProject&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Television_episode_redirect_handler&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Television_episode_short_description&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Template&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Template-Class&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;TemplateData_header&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Template_category&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Template_for_discussion/dated&amp;quot;] = 337000,&lt;br /&gt;
[&amp;quot;Template_link_with_link_off&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;Template_link_with_linked_braces&amp;quot;] = 9900,&lt;br /&gt;
[&amp;quot;Template_link_with_parameters&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;Template_link_with_subst&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Template_link_with_subst_and_parameters&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Template_other&amp;quot;] = 4540000,&lt;br /&gt;
[&amp;quot;Template_parameter_usage&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Template_parameter_value&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Template_reference_list&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Template_shortcut&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;TennisEventInfo&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Tennis_events&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Tennis_icon&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Tennis_icon2&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Testcases_notice&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Tfd_links&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Tfm/dated&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Thank_you&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;The_Africa_Destubathon_banner&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;The_edit-summary_field&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Their&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;They_have&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Thin_space&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Thinsp&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Third-party&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;This_is_a_new_user&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Thoroughbred_racing&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Thursday&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Tick&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;Time/JST_offset&amp;quot;] = 96000,&lt;br /&gt;
[&amp;quot;Time_ago&amp;quot;] = 146000,&lt;br /&gt;
[&amp;quot;Title_case&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Title_decade&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Title_disambig_text&amp;quot;] = 208000,&lt;br /&gt;
[&amp;quot;Title_without_disambig&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Title_year&amp;quot;] = 160000,&lt;br /&gt;
[&amp;quot;Tl&amp;quot;] = 5130000,&lt;br /&gt;
[&amp;quot;Tl2&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Tlc&amp;quot;] = 772000,&lt;br /&gt;
[&amp;quot;Tld&amp;quot;] = 125000,&lt;br /&gt;
[&amp;quot;Tlf&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;Tlg&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;Tlp&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;Tls&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Tlsp&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;Tlu&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Tlx&amp;quot;] = 2650000,&lt;br /&gt;
[&amp;quot;Tlxs&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Tmbox&amp;quot;] = 2750000,&lt;br /&gt;
[&amp;quot;Tn&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Tnull&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;To_do&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Tocright&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Todo&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Tomorrow&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Tone&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Tone-cmn&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Toolbar&amp;quot;] = 302000,&lt;br /&gt;
[&amp;quot;Tooltip&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Top-Class&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Top-importance&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Top_icon&amp;quot;] = 62000,&lt;br /&gt;
[&amp;quot;Totd&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Totd_nav&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Tp&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Tpr&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Tps&amp;quot;] = 9500,&lt;br /&gt;
[&amp;quot;Tpw&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Tq&amp;quot;] = 62000,&lt;br /&gt;
[&amp;quot;Track_gauge&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Track_listing&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;Tracking_category&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Tracklist&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Trademark&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;Trademarked&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;TrainsWikiProject&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Trans&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Transclude&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Transclude_lead_excerpt&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Transl&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Translated&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Translated_page&amp;quot;] = 68000,&lt;br /&gt;
[&amp;quot;Translation&amp;quot;] = 7600,&lt;br /&gt;
[&amp;quot;Translation/Base&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Translation/Information&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Translation/Summary&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Tree_chart&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Tree_chart/end&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Tree_chart/start&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Trim&amp;quot;] = 1520000,&lt;br /&gt;
[&amp;quot;Trim_brackets&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Trim_quotes&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Trunc&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;Tuesday&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Tv.com_episode&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Tv.com_show&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Twitter&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;TwoLegResult&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;TwoLegStart&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;TwoLeg_start&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Two_digit_year&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Module:TNT&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Module:TableTools&amp;quot;] = 4540000,&lt;br /&gt;
[&amp;quot;Module:Table_empty_cell&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Module:TaxonItalics&amp;quot;] = 514000,&lt;br /&gt;
[&amp;quot;Module:TaxonList&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Module:Taxonbar&amp;quot;] = 434000,&lt;br /&gt;
[&amp;quot;Module:Taxonbar/candidate&amp;quot;] = 409000,&lt;br /&gt;
[&amp;quot;Module:Taxonbar/conf&amp;quot;] = 434000,&lt;br /&gt;
[&amp;quot;Module:Taxonbar/exists&amp;quot;] = 409000,&lt;br /&gt;
[&amp;quot;Module:TeamBracket&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;Module:TeamBracket-Tennis&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Module:Team_appearances_list&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:Team_appearances_list/data&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:Team_bracket_tracking&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Module:Team_roster_navbox&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;Module:Television_episode_redirect_handler&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:Television_episode_short_description&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Module:Television_infoboxes_disambiguation_check&amp;quot;] = 56000,&lt;br /&gt;
[&amp;quot;Module:TemplatePar&amp;quot;] = 48000,&lt;br /&gt;
[&amp;quot;Module:Template_parameter_value&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Module:Template_wrapper&amp;quot;] = 175000,&lt;br /&gt;
[&amp;quot;Module:Tennis_events_nav&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Module:Tfd_links&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Module:Time_ago&amp;quot;] = 146000,&lt;br /&gt;
[&amp;quot;Module:Tlg&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;Module:Toolbar&amp;quot;] = 1140000,&lt;br /&gt;
[&amp;quot;Module:Track_gauge&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Module:Track_gauge/data&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Module:Track_listing&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;Module:Transclusion_count&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Module:Tree_chart&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Module:Tree_chart/data&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Module:Trim_quotes&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Module:Type_in_location&amp;quot;] = 89000,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/S&amp;diff=2068&amp;oldid=0</id>
		<title>پودمان:Transclusion count/data/S</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/S&amp;diff=2068&amp;oldid=0"/>
		<updated>2026-06-25T09:35:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/S&quot; title=&quot;پودمان:Transclusion count/data/S&quot;&gt;پودمان:Transclusion count/data/S&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;return {}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/R&amp;diff=2065&amp;oldid=0</id>
		<title>پودمان:Transclusion count/data/R</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/R&amp;diff=2065&amp;oldid=0"/>
		<updated>2026-06-25T09:35:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/R&quot; title=&quot;پودمان:Transclusion count/data/R&quot;&gt;پودمان:Transclusion count/data/R&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;R&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;R/ref&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;RA&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;REVISIONUSER2&amp;quot;] = 61000,&lt;br /&gt;
[&amp;quot;RMS&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;RMnac&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;ROM&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;ROU&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;RPGproject&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;RSA&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;RSS-Atom_feed_notice&amp;quot;] = 241000,&lt;br /&gt;
[&amp;quot;RUS&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;R_ambig&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;R_avoided_double_redirect&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;R_for_convenience&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;R_from_ATC_code&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;R_from_ATCvet_code&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;R_from_DOI_prefix&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;R_from_IMO_number&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;R_from_ISO_4&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;R_from_ISO_4_abbreviation&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;R_from_ISO_639&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;R_from_ISO_639_code&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;R_from_NLM&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;R_from_NLM_abbreviation&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;R_from_UN/LOCODE&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;R_from_US_postal_abbreviation&amp;quot;] = 42000,&lt;br /&gt;
[&amp;quot;R_from_Unicode&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;R_from_Unicode_character&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;R_from_abbreviation&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;R_from_adjective&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;R_from_airport_code&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;R_from_album&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;R_from_alternate_name&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;R_from_alternate_spelling&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;R_from_alternative_capitalization&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;R_from_alternative_disambiguation&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;R_from_alternative_language&amp;quot;] = 56000,&lt;br /&gt;
[&amp;quot;R_from_alternative_name&amp;quot;] = 132000,&lt;br /&gt;
[&amp;quot;R_from_alternative_punctuation&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;R_from_alternative_scientific_name&amp;quot;] = 94000,&lt;br /&gt;
[&amp;quot;R_from_alternative_spelling&amp;quot;] = 92000,&lt;br /&gt;
[&amp;quot;R_from_alternative_title&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;R_from_ambiguous&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;R_from_ambiguous_page&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;R_from_ambiguous_sort_name&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;R_from_ambiguous_term&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;R_from_birth_name&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;R_from_case_citation&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;R_from_diacritic&amp;quot;] = 8500,&lt;br /&gt;
[&amp;quot;R_from_domain_name&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;R_from_drug_trade_name&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;R_from_fictional_character&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;R_from_fictional_element&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;R_from_former_name&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;R_from_full_name&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;R_from_gene_symbol&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;R_from_historic_name&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;R_from_incomplete_disambiguation&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;R_from_incorrect_disambiguation&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;R_from_incorrect_name&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;R_from_initialism&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;R_from_list_topic&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;R_from_long_name&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;R_from_member&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;R_from_merge&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;R_from_miscapitalisation&amp;quot;] = 8100,&lt;br /&gt;
[&amp;quot;R_from_misspelling&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;R_from_modification&amp;quot;] = 472000,&lt;br /&gt;
[&amp;quot;R_from_molecular_formula&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;R_from_monotypic_taxon&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;R_from_more_specific_name&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;R_from_move&amp;quot;] = 1640000,&lt;br /&gt;
[&amp;quot;R_from_move/except&amp;quot;] = 1640000,&lt;br /&gt;
[&amp;quot;R_from_name_with_title&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;R_from_other_capitalisation&amp;quot;] = 403000,&lt;br /&gt;
[&amp;quot;R_from_other_capitalization&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;R_from_other_disambiguation&amp;quot;] = 9400,&lt;br /&gt;
[&amp;quot;R_from_other_name&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;R_from_plural&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;R_from_related_topic&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;R_from_related_word&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;R_from_remote_page&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;R_from_remote_talk_page&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;R_from_school&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;R_from_scientific_name&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;R_from_short_name&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;R_from_shortcut&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;R_from_song&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;R_from_sort_name&amp;quot;] = 104000,&lt;br /&gt;
[&amp;quot;R_from_subpage&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;R_from_subtopic&amp;quot;] = 39000,&lt;br /&gt;
[&amp;quot;R_from_surname&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;R_from_synonym&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;R_from_television_episode&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;R_from_template_shortcut&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;R_from_title_with_diacritics&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;R_from_title_without_diacritics&amp;quot;] = 404000,&lt;br /&gt;
[&amp;quot;R_from_trade_name&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;R_from_typo&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;R_from_unnecessary_disambiguation&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;R_from_year&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;R_printworthy&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;R_shell&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;R_to_Swiss_municipality_(,_Switzerland)&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;R_to_Swiss_municipality_(canton)&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;R_to_Swiss_municipality_2L&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;R_to_TV_episode_list_entry&amp;quot;] = 8600,&lt;br /&gt;
[&amp;quot;R_to_anchor&amp;quot;] = 48000,&lt;br /&gt;
[&amp;quot;R_to_century&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;R_to_diacritic&amp;quot;] = 409000,&lt;br /&gt;
[&amp;quot;R_to_diacritics&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;R_to_disambiguation&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;R_to_disambiguation_page&amp;quot;] = 221000,&lt;br /&gt;
[&amp;quot;R_to_list&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;R_to_list_entry&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;R_to_monotypic_taxon&amp;quot;] = 9800,&lt;br /&gt;
[&amp;quot;R_to_project_namespace&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;R_to_redirect_template&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;R_to_related_topic&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;R_to_scientific_name&amp;quot;] = 83000,&lt;br /&gt;
[&amp;quot;R_to_section&amp;quot;] = 225000,&lt;br /&gt;
[&amp;quot;R_to_short_name&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;R_to_subpage&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;R_unprintworthy&amp;quot;] = 63000,&lt;br /&gt;
[&amp;quot;R_with_history&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;R_with_possibilities&amp;quot;] = 64000,&lt;br /&gt;
[&amp;quot;RadioStationsProject&amp;quot;] = 9200,&lt;br /&gt;
[&amp;quot;Radio_formats&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Rail-interchange&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;RailGauge&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Rail_color&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Rail_color_box&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Rail_line&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Rail_navbox_titlestyle&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Rail_pass_box&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Rail_start&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Raise&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Rand&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Random_number&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Random_page_in_category&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Random_subpage&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Rating&amp;quot;] = 94000,&lt;br /&gt;
[&amp;quot;Rating-Christgau&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Rayment&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Rayment-bt&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Rayment-hc&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Rcat_shell&amp;quot;] = 86000,&lt;br /&gt;
[&amp;quot;Rcb&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Rcr&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Re&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Recent_AfDs&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Recent_AfDs/core&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Red&amp;quot;] = 275000,&lt;br /&gt;
[&amp;quot;Redir_from_US_postal_ab&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Redirect&amp;quot;] = 42000,&lt;br /&gt;
[&amp;quot;Redirect-Class&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Redirect-distinguish&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Redirect_category&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Redirect_category_shell&amp;quot;] = 1180000,&lt;br /&gt;
[&amp;quot;Redirect_from_modification&amp;quot;] = 115000,&lt;br /&gt;
[&amp;quot;Redirect_from_move&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Redirect_shell&amp;quot;] = 248000,&lt;br /&gt;
[&amp;quot;Redirect_template&amp;quot;] = 4730000,&lt;br /&gt;
[&amp;quot;Redirect_to_section&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Redr&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Ref&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Ref_begin&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Ref_end&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Ref_improve&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Ref_label&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Refbegin&amp;quot;] = 166000,&lt;br /&gt;
[&amp;quot;Refbegin/styles.css&amp;quot;] = 166000,&lt;br /&gt;
[&amp;quot;Refend&amp;quot;] = 164000,&lt;br /&gt;
[&amp;quot;Refideas&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;Refimprove&amp;quot;] = 146000,&lt;br /&gt;
[&amp;quot;Refimprove_section&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Reflist&amp;quot;] = 5190000,&lt;br /&gt;
[&amp;quot;Reflist-talk&amp;quot;] = 59000,&lt;br /&gt;
[&amp;quot;Reflist_talk&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Refn&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Region_history_sidebar_title&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Regional_notice_board_box&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Registered_Historic_Places&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;ReleaseVersionParameters&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Reliable_sources_for_medical_articles&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Remove_file_prefix&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Remove_first_word&amp;quot;] = 109000,&lt;br /&gt;
[&amp;quot;Repeat_vandal&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Repeated_IP_abuse&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Repeatvandal&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Replace&amp;quot;] = 1020000,&lt;br /&gt;
[&amp;quot;Reply&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Reply_to&amp;quot;] = 206000,&lt;br /&gt;
[&amp;quot;Replyto&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Republican_Party_(US)/meta/color&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Republican_Party_(US)/meta/shading&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Republican_Party_(US)/meta/shortname&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Republican_Party_(United_States)/meta/color&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Republican_Party_(United_States)/meta/shortname&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Reqmapin&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Reqphoto&amp;quot;] = 80000,&lt;br /&gt;
[&amp;quot;Request_edit&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Request_edit/answered&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Request_edit/declined&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Resize&amp;quot;] = 206000,&lt;br /&gt;
[&amp;quot;Resolved&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Respell&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Retired&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Retrieved&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Reverse_date&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Reviewer_topicon&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;RfA_watchlist_notice&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Rfd_log_header&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Ribbon_devices&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Ribbon_devices/alt&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Ribbon_devices/device&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Ribbon_devices/device_layout&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Right&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;Rint&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;River&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Rlp&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Rlp/Positions&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Rmri&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Rnd&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Rollback_topicon&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Roman&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Romania_metadata_Wikidata&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;RomanianSoccer&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Rotten-tomatoes&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Rotten_Tomatoes&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Round&amp;quot;] = 284000,&lt;br /&gt;
[&amp;quot;Round4-with_third&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Round_corners&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;RouteBox&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Routemap&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Routemap/styles.css&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;RoutemapRouteIcon&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Rp&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Rshell&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Rtl-lang&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Rto&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Ru&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Ru-census&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Ru-census2002&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Ru-census2010&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Ru-pop-ref&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Rubiaceae-stub&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Rugby_league_squad2_coach&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Rugbybox&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;RussiaAdmMunRef&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Russia_Time_Zone_Wikidata&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Russia_Time_Zone_Wikidata/getQID&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Rut&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Rwd&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Rws&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Module:R_avoided_double_redirect&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Module:Rail-interchange_multi&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Module:Random&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Module:Redirect&amp;quot;] = 5380000,&lt;br /&gt;
[&amp;quot;Module:Redirect-distinguish&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Module:Redirect_hatnote&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Module:Redirect_template&amp;quot;] = 4730000,&lt;br /&gt;
[&amp;quot;Module:Redirect_template_handler&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Module:Reply_to&amp;quot;] = 206000,&lt;br /&gt;
[&amp;quot;Module:ResolveEntityId&amp;quot;] = 1820000,&lt;br /&gt;
[&amp;quot;Module:Respell&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Module:Road_data&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:Road_data/RJL_types&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Module:Road_data/browse&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Module:Road_data/countrymask&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Module:Road_data/parser&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Module:Road_data/parser/hooks&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Module:Road_data/parser/sandbox&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/JPN&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/USA&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/USA/regional/GRR&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/USA/regional/NER&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Module:Road_data/strings/USA/regional/Tour&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Module:Road_data/util&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Module:Roman&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Module:RoundN&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Module:Routemap&amp;quot;] = 18000,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/N&amp;diff=2062&amp;oldid=0</id>
		<title>پودمان:Transclusion count/data/N</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/N&amp;diff=2062&amp;oldid=0"/>
		<updated>2026-06-25T09:35:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/N&quot; title=&quot;پودمان:Transclusion count/data/N&quot;&gt;پودمان:Transclusion count/data/N&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;N&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;N/A&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;N/a&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;NA-Class&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;NASTRO_comment&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;NBA_Draft_template_list&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;NBA_Year&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;NBA_color&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;NBA_color_cell&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;NBA_color_cell2&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;NBA_player_statistics_legend&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;NBA_player_statistics_start&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;NBbox&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;NBbox/1&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;NCAA_color_cell&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;NCAA_secondary_color_cell&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;NED&amp;quot;] = 8600,&lt;br /&gt;
[&amp;quot;NFLAltPrimaryColor&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;NFLAltPrimaryStyle&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;NFLAltSecondaryColor&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;NFLPrimaryColor&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;NFLPrimaryStyle&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;NFLSecondaryColor&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;NFL_Roster_navbox_template_list&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;NFL_Year&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;NFL_predraft&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;NFL_predraft/check&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;NFL_predraft/ftin&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;NFT&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;NFT_player&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;NGA&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;NHLE&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;NHLS_url&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;NLD&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;NLM_content&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;NOINDEX&amp;quot;] = 367000,&lt;br /&gt;
[&amp;quot;NOR&amp;quot;] = 8100,&lt;br /&gt;
[&amp;quot;NRDB_species&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;NRHP-PA&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;NRHPGoogleMapFootnote&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;NRHP_Focus&amp;quot;] = 73000,&lt;br /&gt;
[&amp;quot;NRHP_color&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;NRHP_date_for_lists&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;NRHP_date_for_lists/dates&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;NRHP_header&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;NRHP_navigation_box&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;NRHP_row&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;NRHP_style&amp;quot;] = 68000,&lt;br /&gt;
[&amp;quot;NRHP_url&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;NRHP_url/core&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;NRISref&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;NSWcity&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;NSWcity/core&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;NUMBEROFSECTIONS&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;NYCS_br&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;NYCS_time_2&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;NZL&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;NZ_electorate_link&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Namespace_detect&amp;quot;] = 304000,&lt;br /&gt;
[&amp;quot;Namespace_detect_showall&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Narrow_no-break_space&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Nastaliq&amp;quot;] = 8500,&lt;br /&gt;
[&amp;quot;Nat_fs_end&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;National_Heritage_List_for_England&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;National_Rail_style&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;National_Register_of_Historic_Places&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;National_Register_of_Historic_Places_in_Massachusetts&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;National_Register_of_Historic_Places_in_New_York&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;National_Register_of_Historic_Places_in_North_Carolina&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;National_Register_of_Historic_Places_in_Pennsylvania&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;National_Register_of_Historic_Places_in_Virginia&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;National_basketball_squad&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;National_field_hockey_squad&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;National_football_squad_end&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;National_football_squad_start/styles.css&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;National_squad&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;National_squad_no_numbers&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Native_name&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Navbar&amp;quot;] = 9150000,&lt;br /&gt;
[&amp;quot;Navbar-collapsible&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Navbar-header&amp;quot;] = 58000,&lt;br /&gt;
[&amp;quot;Navbox&amp;quot;] = 2790000,&lt;br /&gt;
[&amp;quot;Navbox_Canada&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Navbox_Canada/styles.css&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Navbox_GR_munic&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Navbox_Musical_artist&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Navbox_decade_list&amp;quot;] = 9800,&lt;br /&gt;
[&amp;quot;Navbox_musical_artist&amp;quot;] = 205000,&lt;br /&gt;
[&amp;quot;Navbox_musical_artist/color&amp;quot;] = 205000,&lt;br /&gt;
[&amp;quot;Navbox_rugby_league_squad&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Navbox_season_by_team&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Navbox_with_collapsible_groups&amp;quot;] = 118000,&lt;br /&gt;
[&amp;quot;Navbox_with_collapsible_sections&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Navbox_with_columns&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Navboxes&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Navboxes_colour&amp;quot;] = 9300,&lt;br /&gt;
[&amp;quot;Navseasoncats&amp;quot;] = 378000,&lt;br /&gt;
[&amp;quot;Navseasoncats_with_centuries_below_decade&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;Navseasoncats_with_decades_below_year&amp;quot;] = 219000,&lt;br /&gt;
[&amp;quot;Navsource&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Navy&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Navy/core&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Nay&amp;quot;] = 8600,&lt;br /&gt;
[&amp;quot;Nbay&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Nbsp&amp;quot;] = 416000,&lt;br /&gt;
[&amp;quot;Nbsp_to_space&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Ndash&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Nee&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;NeilBrownPlayers&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;New_York_Stock_Exchange&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;New_user_bar&amp;quot;] = 57000,&lt;br /&gt;
[&amp;quot;Newbot&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Next_period&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Nihongo&amp;quot;] = 94000,&lt;br /&gt;
[&amp;quot;Nihongo2&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Nnbsp&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;No&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;No.&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;No2&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;NoSpam&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;NoSpamEmail&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;No_footnotes&amp;quot;] = 54000,&lt;br /&gt;
[&amp;quot;No_ping&amp;quot;] = 364000,&lt;br /&gt;
[&amp;quot;No_plot&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;No_redirect&amp;quot;] = 452000,&lt;br /&gt;
[&amp;quot;No_spam&amp;quot;] = 225000,&lt;br /&gt;
[&amp;quot;No_wrap&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Nobold&amp;quot;] = 148000,&lt;br /&gt;
[&amp;quot;Nobold/styles.css&amp;quot;] = 148000,&lt;br /&gt;
[&amp;quot;Nobr&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Nobreak&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Nochange&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Nofootnotes&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Noindex&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Noitalic&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Noitalic/styles.css&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Nom&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;Nominated&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Non-diffusing_subcategory&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Non-free_2D_art&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Non-free_album_cover&amp;quot;] = 186000,&lt;br /&gt;
[&amp;quot;Non-free_audio_sample&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Non-free_biog-pic&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Non-free_book_cover&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;Non-free_comic&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Non-free_fair_use&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Non-free_fair_use_in&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Non-free_film_screenshot&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Non-free_game_cover&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Non-free_game_screenshot&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Non-free_historic_image&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Non-free_image_data&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Non-free_image_rationale&amp;quot;] = 9500,&lt;br /&gt;
[&amp;quot;Non-free_in_US&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Non-free_logo&amp;quot;] = 153000,&lt;br /&gt;
[&amp;quot;Non-free_magazine_cover&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;Non-free_media&amp;quot;] = 661000,&lt;br /&gt;
[&amp;quot;Non-free_media_data&amp;quot;] = 9600,&lt;br /&gt;
[&amp;quot;Non-free_media_rationale&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Non-free_movie_poster&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Non-free_poster&amp;quot;] = 90000,&lt;br /&gt;
[&amp;quot;Non-free_promotional&amp;quot;] = 9400,&lt;br /&gt;
[&amp;quot;Non-free_reduce&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Non-free_school_logo&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Non-free_seal&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Non-free_symbol&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Non-free_television_screenshot&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Non-free_title-card&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Non-free_use_rationale&amp;quot;] = 436000,&lt;br /&gt;
[&amp;quot;Non-free_use_rationale_2&amp;quot;] = 164000,&lt;br /&gt;
[&amp;quot;Non-free_use_rationale_album_cover&amp;quot;] = 124000,&lt;br /&gt;
[&amp;quot;Non-free_use_rationale_book_cover&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Non-free_use_rationale_logo&amp;quot;] = 96000,&lt;br /&gt;
[&amp;quot;Non-free_use_rationale_poster&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Non-free_use_rationale_video_cover&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Non-free_use_rationale_video_game_cover&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Non-free_video_cover&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Non-free_video_game_cover&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Non-free_video_game_cover/platform&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Non-free_video_game_screenshot&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Non-free_video_game_screenshot/platform&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Non-free_with_permission&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Noping&amp;quot;] = 297000,&lt;br /&gt;
[&amp;quot;Noprint&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Noredirect&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Normalwraplink&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;NorthAmNative&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;North_America_topic&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Northern_Ireland_tasks&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Nospam&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Not-PD-US-expired-min-year&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Not_a_ballot&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Not_a_forum&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Not_a_typo&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Not_around&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Not_done&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Notability&amp;quot;] = 63000,&lt;br /&gt;
[&amp;quot;Notdone&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Note&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Note_label&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Notelist&amp;quot;] = 98000,&lt;br /&gt;
[&amp;quot;Notelist-lr&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Notelist-ua&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Notes&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;Notice&amp;quot;] = 105000,&lt;br /&gt;
[&amp;quot;NovelsWikiProject&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Nowiki_=&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Nowrap&amp;quot;] = 1130000,&lt;br /&gt;
[&amp;quot;Nq&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Nrut&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Ns0&amp;quot;] = 259000,&lt;br /&gt;
[&amp;quot;Ns_has_subpages&amp;quot;] = 1670000,&lt;br /&gt;
[&amp;quot;Nts&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Ntsh&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Number_of_defined_parameters&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Number_table_sorting&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Number_table_sorting_hidden&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Number_to_word&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Numismaticnotice&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Nutshell&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Nw=&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Module:NUMBEROFSECTIONS&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Module:Namespace_detect&amp;quot;] = 11700000,&lt;br /&gt;
[&amp;quot;Module:Namespace_detect/config&amp;quot;] = 13600000,&lt;br /&gt;
[&amp;quot;Module:Namespace_detect/data&amp;quot;] = 13600000,&lt;br /&gt;
[&amp;quot;Module:National_squad&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;Module:Navbar&amp;quot;] = 14900000,&lt;br /&gt;
[&amp;quot;Module:Navbox&amp;quot;] = 4160000,&lt;br /&gt;
[&amp;quot;Module:Navbox_Canada&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Module:Navbox_with_collapsible_groups&amp;quot;] = 120000,&lt;br /&gt;
[&amp;quot;Module:Navboxes&amp;quot;] = 43000,&lt;br /&gt;
[&amp;quot;Module:Navseasoncats&amp;quot;] = 384000,&lt;br /&gt;
[&amp;quot;Module:Navseasoncats/navyear&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Module:Navseasoncats_with_centuries_below_decade&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;Module:Navseasoncats_with_year_navigation&amp;quot;] = 219000,&lt;br /&gt;
[&amp;quot;Module:Nihongo&amp;quot;] = 95000,&lt;br /&gt;
[&amp;quot;Module:No_globals&amp;quot;] = 15300000,&lt;br /&gt;
[&amp;quot;Module:No_ping&amp;quot;] = 364000,&lt;br /&gt;
[&amp;quot;Module:Noinclude&amp;quot;] = 89000,&lt;br /&gt;
[&amp;quot;Module:Ns_has_subpages&amp;quot;] = 1670000,&lt;br /&gt;
[&amp;quot;Module:Number_table_sorting&amp;quot;] = 26000,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/I&amp;diff=2059&amp;oldid=0</id>
		<title>پودمان:Transclusion count/data/I</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/I&amp;diff=2059&amp;oldid=0"/>
		<updated>2026-06-25T09:35:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/I&quot; title=&quot;پودمان:Transclusion count/data/I&quot;&gt;پودمان:Transclusion count/data/I&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;IAAF_name&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;IAST&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;IBDB_name&amp;quot;] = 8500,&lt;br /&gt;
[&amp;quot;ICD10&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;ICD9&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;ICS&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;IDN&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;IMDB_name&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;IMDB_title&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;IMDb_episode&amp;quot;] = 8100,&lt;br /&gt;
[&amp;quot;IMDb_name&amp;quot;] = 138000,&lt;br /&gt;
[&amp;quot;IMDb_title&amp;quot;] = 171000,&lt;br /&gt;
[&amp;quot;IMO_Number&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;IMSLP&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;IMSLP2&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;IND&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;INR&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;INRConvert&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;INRConvert/CurrentRate&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;INRConvert/USD&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;INRConvert/out&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;IOC_profile&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;IP&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;IPA&amp;quot;] = 92000,&lt;br /&gt;
[&amp;quot;IPA-all&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;IPA-de&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;IPA-es&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;IPA-fr&amp;quot;] = 9500,&lt;br /&gt;
[&amp;quot;IPA-it&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;IPA-nl&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;IPA-pl&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;IPA-pt&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;IPA-ru&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;IPA-sh&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;IPA-sl&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;IPA-th&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;IPA_audio_link&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;IPAc-cmn&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;IPAc-en&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;IPAc-pl&amp;quot;] = 53000,&lt;br /&gt;
[&amp;quot;IPSummary&amp;quot;] = 72000,&lt;br /&gt;
[&amp;quot;IP_summary&amp;quot;] = 72000,&lt;br /&gt;
[&amp;quot;IPsock&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;IPtalk&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;IPuser&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;IPvandal&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;IRC&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;IRL&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;IRN&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;ISBN&amp;quot;] = 445000,&lt;br /&gt;
[&amp;quot;ISBNT&amp;quot;] = 33000,&lt;br /&gt;
[&amp;quot;ISO_15924/script-example-character&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;ISO_15924/wp-name&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;ISO_15924/wp-name/label&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;ISO_15924_code&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;ISO_3166_code&amp;quot;] = 133000,&lt;br /&gt;
[&amp;quot;ISO_3166_name&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;ISO_639_name&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;ISP&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;ISP_test&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;ISR&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;ISSN&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;ISSN_link&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;ISTAT&amp;quot;] = 8100,&lt;br /&gt;
[&amp;quot;ISU_figure_skater&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;ITA&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;ITF&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;ITF_profile&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;ITIS&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;ITN_talk&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;ITN_talk/date&amp;quot;] = 6900,&lt;br /&gt;
[&amp;quot;IUCN_banner&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;I_sup&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Iaaf_name&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;Ice_hockey&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Ice_hockey_stats&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Icehockeystats&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Icon&amp;quot;] = 490000,&lt;br /&gt;
[&amp;quot;If&amp;quot;] = 121000,&lt;br /&gt;
[&amp;quot;If_between&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;If_both&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;If_either&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;If_empty&amp;quot;] = 2600000,&lt;br /&gt;
[&amp;quot;If_first_display_both&amp;quot;] = 56000,&lt;br /&gt;
[&amp;quot;If_in_page&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;If_last_display_both&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;If_preview&amp;quot;] = 54000,&lt;br /&gt;
[&amp;quot;If_then_show&amp;quot;] = 210000,&lt;br /&gt;
[&amp;quot;Ifempty&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Ifexist_not_redirect&amp;quot;] = 418000,&lt;br /&gt;
[&amp;quot;Ifnotempty&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Ifnumber&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Ifsubst&amp;quot;] = 67000,&lt;br /&gt;
[&amp;quot;Ih&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Ill&amp;quot;] = 50000,&lt;br /&gt;
[&amp;quot;Illm&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Image_frame&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Image_label&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Image_label_begin&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Image_label_end&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Image_label_small&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Image_needed&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Image_other&amp;quot;] = 331000,&lt;br /&gt;
[&amp;quot;Image_requested&amp;quot;] = 171000,&lt;br /&gt;
[&amp;quot;Image_requested/Category_helper&amp;quot;] = 167000,&lt;br /&gt;
[&amp;quot;Imbox&amp;quot;] = 900000,&lt;br /&gt;
[&amp;quot;Imdb_episode&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Imdb_name&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;Imdb_title&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Importance&amp;quot;] = 5120000,&lt;br /&gt;
[&amp;quot;Importance/colour&amp;quot;] = 5130000,&lt;br /&gt;
[&amp;quot;Importance_mask&amp;quot;] = 7860000,&lt;br /&gt;
[&amp;quot;Improve_categories&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;In_class&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;In_lang&amp;quot;] = 329000,&lt;br /&gt;
[&amp;quot;In_string&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;In_title&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Inactive_WikiProject_banner&amp;quot;] = 148000,&lt;br /&gt;
[&amp;quot;Inactive_userpage_blanked&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Include-USGov&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Incomplete_list&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Increase&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Incumbent_pope&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Independent/meta/color&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Independent_(US)/meta/color&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Independent_(politician)/meta/color&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Independent_(politician)/meta/shortname&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Independent_politician/meta/color&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Independent_politician/meta/shortname&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;IndexFungorum&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Indian_English&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Indian_National_Congress/meta/color&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Indian_National_Congress/meta/shortname&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Indian_Railways_color&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Indian_Railways_style&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Indian_Rupee&amp;quot;] = 8500,&lt;br /&gt;
[&amp;quot;Indian_railway_code&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Inflation&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Inflation-fn&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Inflation-year&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Inflation/IN/startyear&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Inflation/UK&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Inflation/UK/dataset&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Inflation/UK/startyear&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Inflation/US&amp;quot;] = 8100,&lt;br /&gt;
[&amp;quot;Inflation/US/dataset&amp;quot;] = 8100,&lt;br /&gt;
[&amp;quot;Inflation/US/startyear&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Inflation/fn&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Inflation/year&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Info&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;Infobox&amp;quot;] = 3460000,&lt;br /&gt;
[&amp;quot;Infobox3cols&amp;quot;] = 260000,&lt;br /&gt;
[&amp;quot;Infobox_AFL_biography&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Infobox_Aircraft_Begin&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Infobox_Aircraft_Type&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Infobox_Athletics_Championships&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Infobox_Australian_place&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Infobox_CFL_biography&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Infobox_CFL_biography/position&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Infobox_Canada_electoral_district&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Infobox_Chinese&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Infobox_Chinese/Footer&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Infobox_Chinese/Header&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Infobox_Chinese/Korean&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Infobox_Christian_leader&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Infobox_Company&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Infobox_Congressman&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Infobox_Election&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Infobox_French_commune&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Infobox_GAA_player&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Infobox_Gaelic_Athletic_Association_player&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Infobox_German_location&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_German_place&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_Greece_place&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Infobox_Greek_Dimos&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Infobox_Indian_politician&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Infobox_Italian_comune&amp;quot;] = 8100,&lt;br /&gt;
[&amp;quot;Infobox_Korean_name&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Infobox_Korean_name/categories&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Infobox_MLB_yearly&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Infobox_NCAA_team_season&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Infobox_NFL_biography&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Infobox_NFL_player&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Infobox_NFL_season&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Infobox_NFL_team_season&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Infobox_NRHP&amp;quot;] = 70000,&lt;br /&gt;
[&amp;quot;Infobox_NRHP/conv&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Infobox_NRHP/locmapin2region&amp;quot;] = 64000,&lt;br /&gt;
[&amp;quot;Infobox_Newspaper&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Infobox_Officeholder&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Infobox_Olympic_event&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Infobox_Olympic_event/games_text&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Infobox_Organization&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Infobox_Paralympic_event&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Infobox_Paralympic_event/games_text&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Infobox_Person&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Infobox_Politician&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Infobox_Romania_place&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Infobox_Romanian_subdivision&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Infobox_Russian_district&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Infobox_Russian_inhabited_locality&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Infobox_SCOTUS_case&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Infobox_SCOTUS_case/courts&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Infobox_SSSI&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Infobox_School&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Infobox_Site_of_Special_Scientific_Interest&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Infobox_Software&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Infobox_State_Representative&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Infobox_Swiss_town&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Infobox_Switzerland_municipality&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Infobox_U.S._county&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Infobox_U.S._county/district&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Infobox_UK_place&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Infobox_UK_place/NoDialCode&amp;quot;] = 7600,&lt;br /&gt;
[&amp;quot;Infobox_UK_place/NoPostCode&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Infobox_UK_place/area&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Infobox_UK_place/dist&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Infobox_UK_place/local&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Infobox_UN_resolution&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Infobox_University&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Infobox_Wikipedia_user&amp;quot;] = 7600,&lt;br /&gt;
[&amp;quot;Infobox_academic&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;Infobox_aircraft_begin&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Infobox_aircraft_type&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Infobox_airline&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Infobox_airport&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Infobox_airport/datatable&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Infobox_album&amp;quot;] = 157000,&lt;br /&gt;
[&amp;quot;Infobox_album/color&amp;quot;] = 179000,&lt;br /&gt;
[&amp;quot;Infobox_album/link&amp;quot;] = 157000,&lt;br /&gt;
[&amp;quot;Infobox_anatomy&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Infobox_ancient_site&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Infobox_animanga/Footer&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Infobox_animanga/Header&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Infobox_animanga/Print&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Infobox_animanga/Video&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Infobox_architect&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Infobox_artist&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Infobox_artist_discography&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Infobox_artwork&amp;quot;] = 9100,&lt;br /&gt;
[&amp;quot;Infobox_athlete&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Infobox_attraction/status&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Infobox_automobile&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Infobox_award&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Infobox_badminton_player&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Infobox_baseball_biography&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Infobox_baseball_biography/style&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Infobox_basketball_biography&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Infobox_basketball_biography/style&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Infobox_basketball_club&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Infobox_bilateral_relations&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Infobox_body_of_water&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Infobox_book&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;Infobox_boxer&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Infobox_bridge&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Infobox_building&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Infobox_character&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;Infobox_chess_biography&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Infobox_chess_player&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Infobox_church&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Infobox_church/denomination&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Infobox_church/font_color&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Infobox_civilian_attack&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Infobox_college_coach&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Infobox_college_sports_team_season&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Infobox_college_sports_team_season/link&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Infobox_college_sports_team_season/name&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Infobox_college_sports_team_season/succession&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Infobox_college_sports_team_season/team&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Infobox_comic_book_title&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Infobox_comics_character&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Infobox_comics_creator&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Infobox_company&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;Infobox_concert&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Infobox_constituency&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Infobox_country&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Infobox_country/formernext&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Infobox_country/imagetable&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Infobox_country/multirow&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Infobox_country/status_text&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Infobox_country_at_games&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_country_at_games/core&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_court_case&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Infobox_court_case/images&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Infobox_cricketer&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;Infobox_cricketer/career&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;Infobox_cricketer/national_side&amp;quot;] = 7100,&lt;br /&gt;
[&amp;quot;Infobox_criminal&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Infobox_cultivar&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Infobox_curler&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Infobox_cycling_race_report&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Infobox_cyclist&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Infobox_dam&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Infobox_designation_list&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Infobox_designation_list/entry&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Infobox_dim&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Infobox_dim/core&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Infobox_diocese&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Infobox_drug&amp;quot;] = 8100,&lt;br /&gt;
[&amp;quot;Infobox_drug/chemical_formula&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatATC&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatCASnumber&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatChEBI&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatChEMBL&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatChemDBNIAID&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatChemSpider&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatCompTox&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatDrugBank&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatIUPHARBPS&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatJmol&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatKEGG&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatPDBligand&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatPubChemCID&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatPubChemSID&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/formatUNII&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/legal_status&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/licence&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/maintenance_categories&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/pregnancy_category&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_drug/title&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Infobox_election&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Infobox_election/row&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Infobox_election/shortname&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Infobox_enzyme&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Infobox_ethnic_group&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Infobox_event&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Infobox_figure_skater&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Infobox_film&amp;quot;] = 143000,&lt;br /&gt;
[&amp;quot;Infobox_film_awards&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Infobox_film_awards/link&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Infobox_film_awards/style&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Infobox_food&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Infobox_football_biography&amp;quot;] = 182000,&lt;br /&gt;
[&amp;quot;Infobox_football_club&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Infobox_football_club_season&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Infobox_football_league&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Infobox_football_league_season&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Infobox_football_match&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Infobox_football_tournament_season&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Infobox_former_subdivision&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Infobox_game_score&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Infobox_gene&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_given_name&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Infobox_golfer&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Infobox_golfer/highest_ranking&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Infobox_government_agency&amp;quot;] = 8600,&lt;br /&gt;
[&amp;quot;Infobox_gridiron_football_person&amp;quot;] = 4100,&lt;br /&gt;
[&amp;quot;Infobox_gridiron_football_person/position&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Infobox_gymnast&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Infobox_handball_biography&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Infobox_historic_site&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Infobox_horseraces&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Infobox_hospital&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Infobox_hospital/care_system&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Infobox_hospital/lists&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Infobox_ice_hockey_player&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Infobox_international_football_competition&amp;quot;] = 4800,&lt;br /&gt;
[&amp;quot;Infobox_islands&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Infobox_islands/area&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;Infobox_islands/density&amp;quot;] = 8300,&lt;br /&gt;
[&amp;quot;Infobox_islands/length&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Infobox_journal&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Infobox_journal/Abbreviation_search&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Infobox_journal/Bluebook_check&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Infobox_journal/Former_check&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Infobox_journal/ISO_4_check&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Infobox_journal/ISSN-eISSN&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Infobox_journal/Indexing_search&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;Infobox_journal/MathSciNet_check&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Infobox_journal/NLM_check&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Infobox_journal/frequency&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Infobox_judge&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Infobox_lake&amp;quot;] = 5800,&lt;br /&gt;
[&amp;quot;Infobox_language&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Infobox_language/family-color&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Infobox_language/genetic&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Infobox_language/linguistlist&amp;quot;] = 9000,&lt;br /&gt;
[&amp;quot;Infobox_language/ref&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Infobox_legislature&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Infobox_lighthouse&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Infobox_locomotive&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Infobox_magazine&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Infobox_manner_of_address&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Infobox_mapframe&amp;quot;] = 83000,&lt;br /&gt;
[&amp;quot;Infobox_martial_artist&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Infobox_martial_artist/record&amp;quot;] = 5000,&lt;br /&gt;
[&amp;quot;Infobox_medal_templates&amp;quot;] = 373000,&lt;br /&gt;
[&amp;quot;Infobox_medical_condition&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Infobox_medical_condition_(new)&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Infobox_military_award&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Infobox_military_conflict&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Infobox_military_installation&amp;quot;] = 8600,&lt;br /&gt;
[&amp;quot;Infobox_military_person&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Infobox_military_structure&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Infobox_military_unit&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Infobox_model&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Infobox_monarch&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Infobox_mountain&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Infobox_museum&amp;quot;] = 8600,&lt;br /&gt;
[&amp;quot;Infobox_musical_artist&amp;quot;] = 114000,&lt;br /&gt;
[&amp;quot;Infobox_musical_artist/color&amp;quot;] = 114000,&lt;br /&gt;
[&amp;quot;Infobox_musical_artist/hCard_class&amp;quot;] = 290000,&lt;br /&gt;
[&amp;quot;Infobox_musical_artist/tracking&amp;quot;] = 101000,&lt;br /&gt;
[&amp;quot;Infobox_name&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Infobox_name_module&amp;quot;] = 7600,&lt;br /&gt;
[&amp;quot;Infobox_newspaper&amp;quot;] = 8700,&lt;br /&gt;
[&amp;quot;Infobox_nobility&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Infobox_noble&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Infobox_officeholder&amp;quot;] = 169000,&lt;br /&gt;
[&amp;quot;Infobox_officeholder/office&amp;quot;] = 173000,&lt;br /&gt;
[&amp;quot;Infobox_official_post&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Infobox_organization&amp;quot;] = 29000,&lt;br /&gt;
[&amp;quot;Infobox_pageant_titleholder&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Infobox_park&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Infobox_person&amp;quot;] = 389000,&lt;br /&gt;
[&amp;quot;Infobox_person/Wikidata&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Infobox_person/height&amp;quot;] = 225000,&lt;br /&gt;
[&amp;quot;Infobox_person/length&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;Infobox_person/weight&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;Infobox_philosopher&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Infobox_planet&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Infobox_play&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Infobox_political_party&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Infobox_politician&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Infobox_power_station&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Infobox_prepared_food&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Infobox_professional_wrestler&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Infobox_professional_wrestling_event&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Infobox_protected_area&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Infobox_protein_family&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Infobox_publisher&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Infobox_racehorse&amp;quot;] = 5200,&lt;br /&gt;
[&amp;quot;Infobox_racing_driver&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Infobox_radio_station&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;Infobox_rail&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Infobox_rail_line&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Infobox_rail_line/tracking&amp;quot;] = 6400,&lt;br /&gt;
[&amp;quot;Infobox_rail_service&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Infobox_reality_competition_season&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Infobox_record_label&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Infobox_recurring_event&amp;quot;] = 5500,&lt;br /&gt;
[&amp;quot;Infobox_religious_biography&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Infobox_religious_building&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;Infobox_religious_building/color&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Infobox_requested&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Infobox_river&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Infobox_river/calcunit&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Infobox_river/discharge&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Infobox_river/row-style&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Infobox_river/source&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Infobox_road&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Infobox_road/banner&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_road/browselinks/USA&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_road/hide/cities&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Infobox_road/maint/USA&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_road/meta/colors&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Infobox_road/meta/errors&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Infobox_road/meta/mask/category&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Infobox_road/meta/mask/country&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Infobox_road/meta/mask/subtype1&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_road/meta/mask/subtype2&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Infobox_road/name/USA&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_road/name/USA/StateName&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Infobox_road/shield/USA&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_road/shieldmain/USA&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_road_small&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Infobox_rockunit&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Infobox_royalty&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Infobox_royalty/short_description&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Infobox_rugby_biography&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_rugby_biography/correct_date&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Infobox_rugby_biography/depcheck&amp;quot;] = 6500,&lt;br /&gt;
[&amp;quot;Infobox_rugby_league_biography&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Infobox_rugby_league_biography/PLAYER&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;Infobox_rugby_team&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Infobox_saint&amp;quot;] = 4300,&lt;br /&gt;
[&amp;quot;Infobox_school&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Infobox_school/short_description&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Infobox_school_district&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Infobox_scientist&amp;quot;] = 40000,&lt;br /&gt;
[&amp;quot;Infobox_service_record&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Infobox_settlement&amp;quot;] = 534000,&lt;br /&gt;
[&amp;quot;Infobox_settlement/areadisp&amp;quot;] = 210000,&lt;br /&gt;
[&amp;quot;Infobox_settlement/columns&amp;quot;] = 84000,&lt;br /&gt;
[&amp;quot;Infobox_settlement/densdisp&amp;quot;] = 399000,&lt;br /&gt;
[&amp;quot;Infobox_settlement/impus&amp;quot;] = 76000,&lt;br /&gt;
[&amp;quot;Infobox_settlement/lengthdisp&amp;quot;] = 155000,&lt;br /&gt;
[&amp;quot;Infobox_settlement/link&amp;quot;] = 84000,&lt;br /&gt;
[&amp;quot;Infobox_settlement/metric&amp;quot;] = 188000,&lt;br /&gt;
[&amp;quot;Infobox_settlement/pref&amp;quot;] = 264000,&lt;br /&gt;
[&amp;quot;Infobox_ship_begin&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Infobox_ship_career&amp;quot;] = 34000,&lt;br /&gt;
[&amp;quot;Infobox_ship_characteristics&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Infobox_ship_class_overview&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Infobox_ship_image&amp;quot;] = 36000,&lt;br /&gt;
[&amp;quot;Infobox_shopping_mall&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Infobox_skier&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Infobox_soap_character&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Infobox_software&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Infobox_software/simple&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Infobox_song&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;Infobox_song/color&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;Infobox_song/link&amp;quot;] = 69000,&lt;br /&gt;
[&amp;quot;Infobox_spaceflight&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Infobox_speed_skater&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Infobox_sports_competition_event&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Infobox_sports_competition_event/medalrow&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Infobox_sports_league&amp;quot;] = 3400,&lt;br /&gt;
[&amp;quot;Infobox_sports_season&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Infobox_sportsperson&amp;quot;] = 96000,&lt;br /&gt;
[&amp;quot;Infobox_stadium&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Infobox_state_representative&amp;quot;] = 3600,&lt;br /&gt;
[&amp;quot;Infobox_station&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;Infobox_station/styles.css&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;Infobox_street&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Infobox_swimmer&amp;quot;] = 8900,&lt;br /&gt;
[&amp;quot;Infobox_television&amp;quot;] = 51000,&lt;br /&gt;
[&amp;quot;Infobox_television_channel&amp;quot;] = 6000,&lt;br /&gt;
[&amp;quot;Infobox_television_episode&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Infobox_television_season&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Infobox_television_station&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Infobox_tennis_biography&amp;quot;] = 7900,&lt;br /&gt;
[&amp;quot;Infobox_tennis_tournament_event&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Infobox_tennis_tournament_year&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;Infobox_tennis_tournament_year/color&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Infobox_tennis_tournament_year/footer&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Infobox_train&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Infobox_tropical_cyclone&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Infobox_union&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Infobox_university&amp;quot;] = 26000,&lt;br /&gt;
[&amp;quot;Infobox_user&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Infobox_venue&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Infobox_video_game&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Infobox_volleyball_biography&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;Infobox_weapon&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;Infobox_website&amp;quot;] = 7300,&lt;br /&gt;
[&amp;quot;Infobox_writer&amp;quot;] = 33000,&lt;br /&gt;
[&amp;quot;Information&amp;quot;] = 133000,&lt;br /&gt;
[&amp;quot;Inline&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Input_link&amp;quot;] = 33000,&lt;br /&gt;
[&amp;quot;Inputbox&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Instagram&amp;quot;] = 6100,&lt;br /&gt;
[&amp;quot;Interlanguage_link&amp;quot;] = 82000,&lt;br /&gt;
[&amp;quot;Interlanguage_link_multi&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Internet_Archive_author&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Internet_Archive_film&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Intitle&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Invalid_SVG&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Ipsock&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Iptalk&amp;quot;] = 22000,&lt;br /&gt;
[&amp;quot;IranCensus2006&amp;quot;] = 63000,&lt;br /&gt;
[&amp;quot;IranNCSGN&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Iran_Census_2006&amp;quot;] = 63000,&lt;br /&gt;
[&amp;quot;Irish_place_name&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;IsValidPageName&amp;quot;] = 104000,&lt;br /&gt;
[&amp;quot;Is_article&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Is_country_in_Central_America&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Is_country_in_the_Caribbean&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Is_empty&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Is_interwiki_link&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Is_italic_taxon&amp;quot;] = 331000,&lt;br /&gt;
[&amp;quot;Isbn&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Isfdb_name&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Isfdb_title&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Isnumeric&amp;quot;] = 168000,&lt;br /&gt;
[&amp;quot;Iso2continent&amp;quot;] = 19000,&lt;br /&gt;
[&amp;quot;Iso2country&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Iso2country/article&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Iso2country/data&amp;quot;] = 20000,&lt;br /&gt;
[&amp;quot;Issubst&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;Isu_name&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Italic_title&amp;quot;] = 777000,&lt;br /&gt;
[&amp;quot;Italic_title_prefixed&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Italics_after&amp;quot;] = 8200,&lt;br /&gt;
[&amp;quot;Italics_colon&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Italictitle&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;Ivm&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Ivm/styles.css&amp;quot;] = 5700,&lt;br /&gt;
[&amp;quot;Ivmbox&amp;quot;] = 107000,&lt;br /&gt;
[&amp;quot;Ivory_messagebox&amp;quot;] = 107000,&lt;br /&gt;
[&amp;quot;Module:I18n/complex_date&amp;quot;] = 57000,&lt;br /&gt;
[&amp;quot;Module:IPA_symbol&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Module:IPA_symbol/data&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;Module:IPAc-en&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Module:IPAc-en/data&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Module:IPAc-en/phonemes&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Module:IPAc-en/pronunciation&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;Module:IPAddress&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Module:ISO_3166&amp;quot;] = 597000,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/AT&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/BA&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/CA&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/DE&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/ES&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/FR&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/GB&amp;quot;] = 5300,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/GR&amp;quot;] = 2800,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/IN&amp;quot;] = 25000,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/National&amp;quot;] = 597000,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/RS&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/RU&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Module:ISO_3166/data/US&amp;quot;] = 80000,&lt;br /&gt;
[&amp;quot;Module:ISO_639_name&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Module:ISOdate&amp;quot;] = 57000,&lt;br /&gt;
[&amp;quot;Module:Icon&amp;quot;] = 490000,&lt;br /&gt;
[&amp;quot;Module:Icon/data&amp;quot;] = 490000,&lt;br /&gt;
[&amp;quot;Module:If_empty&amp;quot;] = 2600000,&lt;br /&gt;
[&amp;quot;Module:If_in_page&amp;quot;] = 6800,&lt;br /&gt;
[&amp;quot;Module:If_preview&amp;quot;] = 54000,&lt;br /&gt;
[&amp;quot;Module:In_lang&amp;quot;] = 329000,&lt;br /&gt;
[&amp;quot;Module:Infobox&amp;quot;] = 3620000,&lt;br /&gt;
[&amp;quot;Module:Infobox/dates&amp;quot;] = 59000,&lt;br /&gt;
[&amp;quot;Module:Infobox3cols&amp;quot;] = 273000,&lt;br /&gt;
[&amp;quot;Module:InfoboxImage&amp;quot;] = 3850000,&lt;br /&gt;
[&amp;quot;Module:Infobox_body_of_water_tracking&amp;quot;] = 17000,&lt;br /&gt;
[&amp;quot;Module:Infobox_cyclist_tracking&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Module:Infobox_gene&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Infobox_mapframe&amp;quot;] = 326000,&lt;br /&gt;
[&amp;quot;Module:Infobox_military_conflict&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Infobox_military_conflict/styles.css&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:Infobox_multi-lingual_name&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Module:Infobox_multi-lingual_name/data&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;Module:Infobox_power_station&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Module:Infobox_road&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Module:Infobox_road/color&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Module:Infobox_road/length&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Module:Infobox_road/locations&amp;quot;] = 23000,&lt;br /&gt;
[&amp;quot;Module:Infobox_road/map&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Module:Infobox_road/meta/mask/country&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Module:Infobox_television_disambiguation_check&amp;quot;] = 56000,&lt;br /&gt;
[&amp;quot;Module:Infobox_television_season_disambiguation_check&amp;quot;] = 7600,&lt;br /&gt;
[&amp;quot;Module:Infobox_television_season_name&amp;quot;] = 8000,&lt;br /&gt;
[&amp;quot;Module:Internet_Archive&amp;quot;] = 18000,&lt;br /&gt;
[&amp;quot;Module:IrelandByCountyCatNav&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Module:Is_infobox_in_lead&amp;quot;] = 213000,&lt;br /&gt;
[&amp;quot;Module:Italic_title&amp;quot;] = 1020000,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/D&amp;diff=2056&amp;oldid=0</id>
		<title>پودمان:Transclusion count/data/D</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/D&amp;diff=2056&amp;oldid=0"/>
		<updated>2026-06-25T09:35:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count/data/D&quot; title=&quot;پودمان:Transclusion count/data/D&quot;&gt;پودمان:Transclusion count/data/D&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;return {&lt;br /&gt;
[&amp;quot;D&amp;amp;D&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;D&amp;amp;D_to-do&amp;quot;] = 5400,&lt;br /&gt;
[&amp;quot;D-da&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;DANFS&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;DC-Comics-trademark-copyright&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;DDR&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;DEC&amp;quot;] = 7800,&lt;br /&gt;
[&amp;quot;DECADE&amp;quot;] = 224000,&lt;br /&gt;
[&amp;quot;DEN&amp;quot;] = 5900,&lt;br /&gt;
[&amp;quot;DEU&amp;quot;] = 16000,&lt;br /&gt;
[&amp;quot;DMC&amp;quot;] = 64000,&lt;br /&gt;
[&amp;quot;DMCA&amp;quot;] = 1540000,&lt;br /&gt;
[&amp;quot;DNB&amp;quot;] = 8500,&lt;br /&gt;
[&amp;quot;DNB_portal&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;DNK&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;DNZB&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;DOI&amp;quot;] = 4900,&lt;br /&gt;
[&amp;quot;DOWs&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;DPP&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;DPP/logo&amp;quot;] = 77000,&lt;br /&gt;
[&amp;quot;DRV_links&amp;quot;] = 2900,&lt;br /&gt;
[&amp;quot;DWT&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;DYKC&amp;quot;] = 6700,&lt;br /&gt;
[&amp;quot;DYKF&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;DYK_blue&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;DYK_checklist&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;DYK_conditions&amp;quot;] = 41000,&lt;br /&gt;
[&amp;quot;DYK_files&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;DYK_header&amp;quot;] = 8500,&lt;br /&gt;
[&amp;quot;DYK_nompage_links&amp;quot;] = 53000,&lt;br /&gt;
[&amp;quot;DYK_talk&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;DYK_talk/date&amp;quot;] = 93000,&lt;br /&gt;
[&amp;quot;DYK_tools&amp;quot;] = 38000,&lt;br /&gt;
[&amp;quot;DYKfile&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;DZA&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;Dab&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Dablink&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Dagger&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_assignment&amp;quot;] = 31000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_course_header&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_course_header/edit-note&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_sandbox&amp;quot;] = 58000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_student_editor&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_student_program_sandbox&amp;quot;] = 58000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_talk_course_link&amp;quot;] = 46000,&lt;br /&gt;
[&amp;quot;Dashboard.wikiedu.org_user_talk&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Date&amp;quot;] = 49000,&lt;br /&gt;
[&amp;quot;Date-mf&amp;quot;] = 30000,&lt;br /&gt;
[&amp;quot;Date_table_sorting&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;Dated_maintenance_category&amp;quot;] = 1640000,&lt;br /&gt;
[&amp;quot;Day+1&amp;quot;] = 6300,&lt;br /&gt;
[&amp;quot;Day-1&amp;quot;] = 7700,&lt;br /&gt;
[&amp;quot;Dbox&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Dc&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Dda&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Dead_link&amp;quot;] = 257000,&lt;br /&gt;
[&amp;quot;Death-date&amp;quot;] = 9100,&lt;br /&gt;
[&amp;quot;Death-date_and_age&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Death_date&amp;quot;] = 8800,&lt;br /&gt;
[&amp;quot;Death_date_and_age&amp;quot;] = 298000,&lt;br /&gt;
[&amp;quot;Death_year_and_age&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Death_year_category_header&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Decade_link&amp;quot;] = 28000,&lt;br /&gt;
[&amp;quot;Decline&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Declined&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Decrease&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Define&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Deg2DMS&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Deletion_review_log_header&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Deletion_review_log_header/Core&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Delink&amp;quot;] = 1480000,&lt;br /&gt;
[&amp;quot;Delink_question_hyphen-minus&amp;quot;] = 255000,&lt;br /&gt;
[&amp;quot;Delrevxfd&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Democratic_Party_(US)/meta/color&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Democratic_Party_(US)/meta/shading&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Democratic_Party_(US)/meta/shortname&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Democratic_Party_(United_States)/meta/color&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;Democratic_Party_(United_States)/meta/shortname&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Demography&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Deprecated_code&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Description_missing&amp;quot;] = 9600,&lt;br /&gt;
[&amp;quot;Designation/abbreviation&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Designation/color&amp;quot;] = 74000,&lt;br /&gt;
[&amp;quot;Designation/colour&amp;quot;] = 76000,&lt;br /&gt;
[&amp;quot;Designation/colour2&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Designation/divbox&amp;quot;] = 24000,&lt;br /&gt;
[&amp;quot;Designation/text&amp;quot;] = 37000,&lt;br /&gt;
[&amp;quot;Designation_list&amp;quot;] = 4600,&lt;br /&gt;
[&amp;quot;Details&amp;quot;] = 6600,&lt;br /&gt;
[&amp;quot;DetailsLink&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Detect_singular&amp;quot;] = 531000,&lt;br /&gt;
[&amp;quot;Deutsche_Bahn_station_codes&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;DfE_performance_tables&amp;quot;] = 4200,&lt;br /&gt;
[&amp;quot;Diff&amp;quot;] = 27000,&lt;br /&gt;
[&amp;quot;Diff2&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Digits&amp;quot;] = 14000,&lt;br /&gt;
[&amp;quot;Directories_box&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Disamb&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Disambig&amp;quot;] = 65000,&lt;br /&gt;
[&amp;quot;Disambig-Class&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;DisambigProj&amp;quot;] = 12000,&lt;br /&gt;
[&amp;quot;DisambigProject&amp;quot;] = 152000,&lt;br /&gt;
[&amp;quot;Disambigproject&amp;quot;] = 5100,&lt;br /&gt;
[&amp;quot;Disambiguation&amp;quot;] = 195000,&lt;br /&gt;
[&amp;quot;Disambiguation/cat&amp;quot;] = 195000,&lt;br /&gt;
[&amp;quot;Disambiguation_needed&amp;quot;] = 4500,&lt;br /&gt;
[&amp;quot;Disambiguation_page_short_description&amp;quot;] = 316000,&lt;br /&gt;
[&amp;quot;Discogs_artist&amp;quot;] = 9100,&lt;br /&gt;
[&amp;quot;Discogs_master&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;Discogs_release&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Discussion_bottom&amp;quot;] = 11000,&lt;br /&gt;
[&amp;quot;Discussion_top&amp;quot;] = 10000,&lt;br /&gt;
[&amp;quot;DisestcatCountry&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;DisestcatCountry/core&amp;quot;] = 8400,&lt;br /&gt;
[&amp;quot;DisestcatCountryDecade&amp;quot;] = 2400,&lt;br /&gt;
[&amp;quot;DisestcatUSstate&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;DisestcatUSstate/core&amp;quot;] = 4400,&lt;br /&gt;
[&amp;quot;Disputed&amp;quot;] = 2100,&lt;br /&gt;
[&amp;quot;Distinguish&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;Disused_Rail_Start&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Disused_rail_start&amp;quot;] = 3700,&lt;br /&gt;
[&amp;quot;Disused_style&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Div_col&amp;quot;] = 313000,&lt;br /&gt;
[&amp;quot;Div_col_end&amp;quot;] = 235000,&lt;br /&gt;
[&amp;quot;Divbox&amp;quot;] = 219000,&lt;br /&gt;
[&amp;quot;Divbox/styles.css&amp;quot;] = 244000,&lt;br /&gt;
[&amp;quot;Dmbox&amp;quot;] = 408000,&lt;br /&gt;
[&amp;quot;Dmbox/styles.css&amp;quot;] = 407000,&lt;br /&gt;
[&amp;quot;Dmoz&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Dn&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Do_not_move_to_Commons&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Doc&amp;quot;] = 3000,&lt;br /&gt;
[&amp;quot;Documentation&amp;quot;] = 76000,&lt;br /&gt;
[&amp;quot;Documentation_subpage&amp;quot;] = 81000,&lt;br /&gt;
[&amp;quot;Dog_opentask&amp;quot;] = 3200,&lt;br /&gt;
[&amp;quot;Doi&amp;quot;] = 21000,&lt;br /&gt;
[&amp;quot;Doing&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Don&amp;#039;t_edit_this_line&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;Don&amp;#039;t_edit_this_line_always_display&amp;quot;] = 327000,&lt;br /&gt;
[&amp;quot;Don&amp;#039;t_edit_this_line_extinct&amp;quot;] = 327000,&lt;br /&gt;
[&amp;quot;Don&amp;#039;t_edit_this_line_link_target&amp;quot;] = 327000,&lt;br /&gt;
[&amp;quot;Don&amp;#039;t_edit_this_line_link_text&amp;quot;] = 327000,&lt;br /&gt;
[&amp;quot;Don&amp;#039;t_edit_this_line_parent&amp;quot;] = 327000,&lt;br /&gt;
[&amp;quot;Don&amp;#039;t_edit_this_line_rank&amp;quot;] = 327000,&lt;br /&gt;
[&amp;quot;Don&amp;#039;t_edit_this_line_refs&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;Don&amp;#039;t_edit_this_line_same_as&amp;quot;] = 327000,&lt;br /&gt;
[&amp;quot;Done&amp;quot;] = 83000,&lt;br /&gt;
[&amp;quot;Done-t&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Doppelganger&amp;quot;] = 2700,&lt;br /&gt;
[&amp;quot;Dot&amp;quot;] = 3100,&lt;br /&gt;
[&amp;quot;Double-dagger&amp;quot;] = 9800,&lt;br /&gt;
[&amp;quot;Dr&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Dr-logno&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Dr-make&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Dr-yr&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Draft_article&amp;quot;] = 2500,&lt;br /&gt;
[&amp;quot;Draft_article_check&amp;quot;] = 2600,&lt;br /&gt;
[&amp;quot;Draft_other&amp;quot;] = 115000,&lt;br /&gt;
[&amp;quot;Draw&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Draw_key&amp;quot;] = 15000,&lt;br /&gt;
[&amp;quot;Drep&amp;quot;] = 3500,&lt;br /&gt;
[&amp;quot;Drugbankcite&amp;quot;] = 4700,&lt;br /&gt;
[&amp;quot;Drugbox&amp;quot;] = 7400,&lt;br /&gt;
[&amp;quot;Drugs.com&amp;quot;] = 3300,&lt;br /&gt;
[&amp;quot;Ds/editnotice&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Ds/talk_notice&amp;quot;] = 3900,&lt;br /&gt;
[&amp;quot;Ds/topics&amp;quot;] = 6200,&lt;br /&gt;
[&amp;quot;Dsindex&amp;quot;] = 2200,&lt;br /&gt;
[&amp;quot;Dts&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;Dubious&amp;quot;] = 7500,&lt;br /&gt;
[&amp;quot;Duck&amp;quot;] = 2300,&lt;br /&gt;
[&amp;quot;Dummytab&amp;quot;] = 3800,&lt;br /&gt;
[&amp;quot;Duration&amp;quot;] = 35000,&lt;br /&gt;
[&amp;quot;Dyktalk&amp;quot;] = 44000,&lt;br /&gt;
[&amp;quot;Dynamic_IP&amp;quot;] = 5600,&lt;br /&gt;
[&amp;quot;Dynamic_list&amp;quot;] = 7000,&lt;br /&gt;
[&amp;quot;Module:DYK_checklist&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Module:DYK_checklist/data&amp;quot;] = 4000,&lt;br /&gt;
[&amp;quot;Module:DYK_nompage_links&amp;quot;] = 53000,&lt;br /&gt;
[&amp;quot;Module:Data&amp;quot;] = 135000,&lt;br /&gt;
[&amp;quot;Module:Date&amp;quot;] = 1110000,&lt;br /&gt;
[&amp;quot;Module:DateI18n&amp;quot;] = 13000,&lt;br /&gt;
[&amp;quot;Module:Date_table_sorting&amp;quot;] = 32000,&lt;br /&gt;
[&amp;quot;Module:Delink&amp;quot;] = 1510000,&lt;br /&gt;
[&amp;quot;Module:Demography&amp;quot;] = 2000,&lt;br /&gt;
[&amp;quot;Module:Distinguish&amp;quot;] = 71000,&lt;br /&gt;
[&amp;quot;Module:Documentation&amp;quot;] = 113000,&lt;br /&gt;
[&amp;quot;Module:Documentation/config&amp;quot;] = 113000,&lt;br /&gt;
[&amp;quot;Module:Duration&amp;quot;] = 226000,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count&amp;diff=2053&amp;oldid=0</id>
		<title>پودمان:Transclusion count</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count&amp;diff=2053&amp;oldid=0"/>
		<updated>2026-06-25T09:35:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Transclusion_count&quot; title=&quot;پودمان:Transclusion count&quot;&gt;پودمان:Transclusion count&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.fetch(frame)&lt;br /&gt;
	local template = nil&lt;br /&gt;
	local return_value = nil&lt;br /&gt;
&lt;br /&gt;
	-- Use demo parameter if it exists, otherswise use current template name&lt;br /&gt;
	local namespace = mw.title.getCurrentTitle().namespace&lt;br /&gt;
	if frame.args[&amp;quot;demo&amp;quot;] and frame.args[&amp;quot;demo&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		template = frame.args[&amp;quot;demo&amp;quot;]&lt;br /&gt;
	elseif namespace == 10 then -- Template namespace&lt;br /&gt;
		template = mw.title.getCurrentTitle().text&lt;br /&gt;
	elseif namespace == 828 then -- Module namespace&lt;br /&gt;
		template = (mw.site.namespaces[828].name .. &amp;quot;:&amp;quot; .. mw.title.getCurrentTitle().text)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- If in template or module namespace, look up count in /data&lt;br /&gt;
	if template ~= nil then&lt;br /&gt;
		namespace = mw.title.new(template, &amp;quot;Template&amp;quot;).namespace&lt;br /&gt;
		if namespace == 10 or namespace == 828 then&lt;br /&gt;
			template =  mw.ustring.gsub(template, &amp;quot;/doc$&amp;quot;, &amp;quot;&amp;quot;) -- strip /doc from end&lt;br /&gt;
			template =  mw.ustring.gsub(template, &amp;quot;/توضیحات$&amp;quot;, &amp;quot;&amp;quot;) -- strip /توضیحات from end&lt;br /&gt;
			local index = mw.ustring.sub(mw.title.new(template).text,1,1)&lt;br /&gt;
			local subpage_title = &amp;#039;Transclusion_count/data/&amp;#039; .. (index or &amp;quot;other&amp;quot;)&lt;br /&gt;
			local subpage = mw.title.makeTitle(828, subpage_title)&lt;br /&gt;
			if subpage.exists then&lt;br /&gt;
				local data = mw.loadData(&amp;#039;Module:&amp;#039; .. subpage_title)&lt;br /&gt;
				return_value = tonumber(data[mw.ustring.gsub(template, &amp;quot; &amp;quot;, &amp;quot;_&amp;quot;)])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- If database value doesn&amp;#039;t exist, use value passed to template&lt;br /&gt;
	if return_value == nil and frame.args[1] ~= nil then&lt;br /&gt;
		local arg1=mw.ustring.match(frame.args[1], &amp;#039;[%d,]+&amp;#039;)&lt;br /&gt;
		if arg1 and arg1 ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			return_value = tonumber(frame:callParserFunction(&amp;#039;formatnum&amp;#039;, arg1, &amp;#039;R&amp;#039;))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return return_value	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Tlg&amp;diff=2050&amp;oldid=0</id>
		<title>پودمان:Tlg</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Tlg&amp;diff=2050&amp;oldid=0"/>
		<updated>2026-06-25T09:35:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Tlg&quot; title=&quot;پودمان:Tlg&quot;&gt;پودمان:Tlg&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This implements Template:Tlg&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Is a string non-empty?&lt;br /&gt;
local function _ne(s) &lt;br /&gt;
	return s ~= nil and s ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local nw = mw.text.nowiki&lt;br /&gt;
&lt;br /&gt;
local function addTemplate(s)&lt;br /&gt;
	local i, _ = s:find(&amp;#039;:&amp;#039;, 1, true)&lt;br /&gt;
	if i == nil then&lt;br /&gt;
		return &amp;#039;Template:&amp;#039; .. s&lt;br /&gt;
	end&lt;br /&gt;
	local ns = s:sub(1, i - 1)&lt;br /&gt;
	if ns == &amp;#039;&amp;#039; or mw.site.namespaces[ns] then&lt;br /&gt;
		return s&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;Template:&amp;#039; .. s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function trimTemplate(s)&lt;br /&gt;
	local needle = &amp;#039;template:&amp;#039;&lt;br /&gt;
	if s:sub(1, needle:len()):lower() == needle then&lt;br /&gt;
		return s:sub(needle:len() + 1)	&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function linkTitle(args)&lt;br /&gt;
	if _ne(args.nolink) then&lt;br /&gt;
		return args[&amp;#039;1&amp;#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local titleObj&lt;br /&gt;
	local titlePart = &amp;#039;[[&amp;#039;&lt;br /&gt;
	if args[&amp;#039;1&amp;#039;] then&lt;br /&gt;
		-- This handles :Page and other NS&lt;br /&gt;
		titleObj = mw.title.new(args[&amp;#039;1&amp;#039;], &amp;#039;Template&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		titleObj = mw.title.getCurrentTitle()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or&lt;br /&gt;
				addTemplate(args[&amp;#039;1&amp;#039;]))&lt;br /&gt;
	&lt;br /&gt;
	local textPart = args.alttext&lt;br /&gt;
	if not _ne(textPart) then&lt;br /&gt;
		if titleObj ~= nil then&lt;br /&gt;
			textPart = titleObj:inNamespace(&amp;quot;Template&amp;quot;) and args[&amp;#039;1&amp;#039;] or titleObj.fullText&lt;br /&gt;
		else&lt;br /&gt;
			-- redlink&lt;br /&gt;
			textPart = args[&amp;#039;1&amp;#039;]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if _ne(args.subst) then&lt;br /&gt;
		-- HACK: the ns thing above is probably broken&lt;br /&gt;
		textPart = &amp;#039;subst:&amp;#039; .. textPart&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if _ne(args.brace) then&lt;br /&gt;
		textPart = nw(&amp;#039;{{&amp;#039;) .. textPart .. nw(&amp;#039;}}&amp;#039;)&lt;br /&gt;
	elseif _ne(args.braceinside) then&lt;br /&gt;
		textPart = nw(&amp;#039;{&amp;#039;) .. textPart .. nw(&amp;#039;}&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	titlePart = titlePart .. &amp;#039;|&amp;#039; .. textPart .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	if _ne(args.braceinside) then&lt;br /&gt;
		titlePart = nw(&amp;#039;{&amp;#039;) .. titlePart .. nw(&amp;#039;}&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return titlePart&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame, {&lt;br /&gt;
		trim = true,&lt;br /&gt;
		removeBlanks = false&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname)&lt;br /&gt;
	local italic = _ne(args.italic) or _ne(args.italics)&lt;br /&gt;
	local dontBrace = _ne(args.brace) or _ne(args.braceinside)&lt;br /&gt;
	local code = _ne(args.code) or _ne(args.tt)&lt;br /&gt;
	&lt;br /&gt;
	-- Build the link part&lt;br /&gt;
	local titlePart = linkTitle(args)&lt;br /&gt;
	if bold then titlePart = &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. titlePart .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; end&lt;br /&gt;
	if _ne(args.nowrapname) then titlePart = &amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039; .. titlePart .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; end&lt;br /&gt;
	&lt;br /&gt;
	-- Build the arguments&lt;br /&gt;
	local textPart = &amp;quot;&amp;quot;&lt;br /&gt;
	for i = 2, 11 do&lt;br /&gt;
		local ii = tostring(i)&lt;br /&gt;
		local val = args[ii]&lt;br /&gt;
		if val ~= nil then val = mw.text.unstripNoWiki(val) else break end&lt;br /&gt;
		if _ne(args.nowiki) then val = nw(val) end&lt;br /&gt;
		if italic then val = &amp;#039;&amp;lt;span style=&amp;quot;font-style:italic;&amp;quot;&amp;gt;&amp;#039; .. val .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; end&lt;br /&gt;
		textPart = textPart .. &amp;#039;&amp;amp;#124;&amp;#039; .. val&lt;br /&gt;
	end&lt;br /&gt;
	if _ne(args[&amp;#039;12&amp;#039;]) then textPart = textPart .. &amp;#039;&amp;amp;#124;…&amp;#039; end&lt;br /&gt;
	&lt;br /&gt;
	-- final wrap&lt;br /&gt;
	local ret = titlePart .. textPart&lt;br /&gt;
	if not dontBrace then ret = nw(&amp;#039;{{&amp;#039;) .. ret .. nw(&amp;#039;}}&amp;#039;) end&lt;br /&gt;
	if _ne(args.a) then ret = nw(&amp;#039;*&amp;#039;) .. &amp;#039;&amp;amp;nbsp;&amp;#039; .. ret end&lt;br /&gt;
	if _ne(args.kbd) then ret = &amp;#039;&amp;lt;kbd&amp;gt;&amp;#039; .. ret .. &amp;#039;&amp;lt;/kbd&amp;gt;&amp;#039; end&lt;br /&gt;
	if code then&lt;br /&gt;
		ret = &amp;#039;&amp;lt;code&amp;gt;&amp;#039; .. ret .. &amp;#039;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
	elseif _ne(args.plaincode) then&lt;br /&gt;
		ret = &amp;#039;&amp;lt;code style=&amp;quot;border:none;background:transparent;&amp;quot;&amp;gt;&amp;#039; .. ret .. &amp;#039;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if _ne(args.nowrap) then ret = &amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039; .. ret .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; end&lt;br /&gt;
	&lt;br /&gt;
	--[[ Wrap as html?? &lt;br /&gt;
	local span = mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
	span:wikitext(ret)&lt;br /&gt;
	--]]&lt;br /&gt;
	if _ne(args.debug) then ret = ret .. &amp;#039;\n&amp;lt;pre&amp;gt;&amp;#039; .. mw.text.encode(mw.dumpObject(args)) .. &amp;#039;&amp;lt;/pre&amp;gt;&amp;#039; end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Template_wrapper&amp;diff=2047&amp;oldid=0</id>
		<title>پودمان:Template wrapper</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Template_wrapper&amp;diff=2047&amp;oldid=0"/>
		<updated>2026-06-25T09:35:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Template_wrapper&quot; title=&quot;پودمان:Template wrapper&quot;&gt;پودمان:Template wrapper&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;Module:No globals&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
local error_msg = &amp;#039;&amp;lt;span style=\&amp;quot;font-size:100%\&amp;quot; class=\&amp;quot;error\&amp;quot;&amp;gt;پارامتر &amp;lt;code style=\&amp;quot;color:inherit; border:inherit; padding:inherit;\&amp;quot;&amp;gt;&amp;amp;#124;_template=&amp;lt;/code&amp;gt; ناموجود یا خالی&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ I N _ T A B L E &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
scan through tbl looking for value; return true if found, false else&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_in_table (tbl, value)&lt;br /&gt;
    for k, v in pairs (tbl) do&lt;br /&gt;
        if v == value then return true end&lt;br /&gt;
    end&lt;br /&gt;
    return false;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A D D _ P A R A M E T E R &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
adds parameter name and its value to args table according to the state of boolean list argument; kv pair for&lt;br /&gt;
template execution; k=v string for template listing.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function add_parameter (k, v, args, list)&lt;br /&gt;
	if list then&lt;br /&gt;
		table.insert( args, table.concat ({k, &amp;#039;=&amp;#039;, v}));						-- write parameter names and values to args table as string&lt;br /&gt;
	else&lt;br /&gt;
		args[k] = v;															-- copy parameters to args table&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A L I A S _ M A P _ G E T &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns a table of local template (parent frame) parameter names and the target template names that match where&lt;br /&gt;
in [key]=&amp;lt;value&amp;gt; pairs where:&lt;br /&gt;
	[key] is local template parameter name (an alias)&lt;br /&gt;
	&amp;lt;value&amp;gt; is target template parameter name (the canonical parameter name used in the working template)&lt;br /&gt;
&lt;br /&gt;
The parameter |_alias-map= has the form:&lt;br /&gt;
	|_alias-map=&amp;lt;list&amp;gt;&lt;br /&gt;
where &amp;lt;list&amp;gt; is a comma-separated list of alias / canonical parameter name pairs in the form&lt;br /&gt;
	&amp;lt;from&amp;gt; : &amp;lt;to&amp;gt;&lt;br /&gt;
where:&lt;br /&gt;
	&amp;lt;from&amp;gt; is the local template&amp;#039;s parameter name (alias)&lt;br /&gt;
	&amp;lt;to&amp;gt; is the target template&amp;#039;s parameter name (canonical)&lt;br /&gt;
	for enumerated parameters place an octothorp (#) where the enumerator digits are placed in the parameter names:&lt;br /&gt;
		&amp;lt;from#&amp;gt; : &amp;lt;to#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function alias_map_get (_alias_map)&lt;br /&gt;
	local T = mw.text.split (_alias_map, &amp;#039;%s*,%s*&amp;#039;);							-- convert the comma-separated list into a table of alias pairs&lt;br /&gt;
	local mapped_aliases = {};													-- mapped aliases will go here&lt;br /&gt;
	local l_name, t_name;														-- parameter names&lt;br /&gt;
	&lt;br /&gt;
	for _, alias_pair in ipairs (T) do											-- loop through the table of alias pairs&lt;br /&gt;
		l_name, t_name = mw.ustring.match (alias_pair, &amp;#039;(.-)%s*:%s*(.+)&amp;#039;);		-- from each pair, get local and target parameter names&lt;br /&gt;
		if l_name and t_name then												-- if both are set&lt;br /&gt;
			if mw.getContentLanguage():parseFormattedNumber(l_name) then&lt;br /&gt;
				l_name = mw.getContentLanguage():parseFormattedNumber(l_name);	-- convert number-as-text to a number&lt;br /&gt;
			end&lt;br /&gt;
			mapped_aliases[l_name] = t_name;									-- add them to the map table&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mapped_aliases;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; F R A M E _ A R G S _ G E T &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Fetch the wrapper template&amp;#039;s &amp;#039;default&amp;#039; and control parameters; adds default parameters to args&lt;br /&gt;
&lt;br /&gt;
returns content of |_template= parameter (name of the working template); nil else&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function frame_args_get (frame_args, args, list)&lt;br /&gt;
	local template;&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (frame_args) do											-- here we get the wrapper template&amp;#039;s &amp;#039;default&amp;#039; parameters&lt;br /&gt;
		if &amp;#039;string&amp;#039; == type (k) and (v and (&amp;#039;&amp;#039; ~= v)) then						-- do not pass along positional or empty parameters&lt;br /&gt;
			if &amp;#039;_template&amp;#039; == k then&lt;br /&gt;
				template = v;													-- save the name of template that we are wrapping&lt;br /&gt;
			elseif &amp;#039;_exclude&amp;#039; ~= k and &amp;#039;_reuse&amp;#039; ~= k and &amp;#039;_include-positional&amp;#039; ~= k  and &amp;#039;_alias-map&amp;#039; ~= k then	-- these already handled so ignore here; &lt;br /&gt;
				add_parameter (k, v, args, list);								-- add all other parameters to args in the style dictated by list&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return template;															-- return contents of |_template= parameter&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[--------------------------&amp;lt; P F R A M E _ A R G S _ G E T &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Fetches the wrapper template&amp;#039;s &amp;#039;live&amp;#039; parameters; adds live parameters that aren&amp;#039;t members of the exclude table to&lt;br /&gt;
args table; positional parameters may not be excluded&lt;br /&gt;
&lt;br /&gt;
no return value&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function pframe_args_get (pframe_args, args, exclude, _include_positional, list)&lt;br /&gt;
	for k, v in pairs (pframe_args) do&lt;br /&gt;
		if &amp;#039;string&amp;#039; == type (k) and not is_in_table (exclude, k) then			-- do not pass along excluded parameters&lt;br /&gt;
			if v and (&amp;#039;&amp;#039; ~= v) then												-- pass along only those parameters that have assigned values&lt;br /&gt;
				if &amp;#039;unset&amp;#039; == v:lower() then									-- special keyword to unset &amp;#039;default&amp;#039; parameters set in the wrapper template&lt;br /&gt;
					v = &amp;#039;&amp;#039;;														-- unset the value in the args table&lt;br /&gt;
				end&lt;br /&gt;
				add_parameter (k, v, args, list)								-- add all other parameters to args in the style dictated by list; alias map only supported for local-template parameters&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if _include_positional then&lt;br /&gt;
		for i, v in ipairs (pframe_args) do										-- pass along positional parameters&lt;br /&gt;
			if &amp;#039;unset&amp;#039; == v:lower() then										-- special keyword to unset &amp;#039;default&amp;#039; parameters set in the wrapper template&lt;br /&gt;
				v = &amp;#039;&amp;#039;;															-- unset the value in the args table&lt;br /&gt;
			end&lt;br /&gt;
			add_parameter (i, v, args, list);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ M A I N &amp;gt;--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Collect the various default and live parameters into args styled according to boolean list.&lt;br /&gt;
&lt;br /&gt;
returns name of the working or listed template or nil for an error message&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _main (frame, args, list)&lt;br /&gt;
	local template;&lt;br /&gt;
	local exclude = {};															-- table of parameter names for parameters that are not passed to the working template&lt;br /&gt;
	local reuse_list = {};														-- table of pframe parameter names whose values are modified before they are passed to the working template as the same name&lt;br /&gt;
	local alias_map = {};														-- table that maps parameter aliases to working template canonical parameter names&lt;br /&gt;
	local _include_positional;&lt;br /&gt;
	&lt;br /&gt;
	if frame.args._exclude and (&amp;#039;&amp;#039; ~= frame.args._exclude) then					-- if there is |_exclude= and it&amp;#039;s not empty&lt;br /&gt;
		exclude = mw.text.split (frame.args._exclude, &amp;quot;%s*,%s*&amp;quot;);				-- make a table from its contents&lt;br /&gt;
	end&lt;br /&gt;
																				-- TODO: |_reuse= needs a better name (|_reuse=)&lt;br /&gt;
	if frame.args._reuse and (&amp;#039;&amp;#039; ~= frame.args._reuse) then					-- if there is |_reuse= and it&amp;#039;s not empty&lt;br /&gt;
		reuse_list = mw.text.split (frame.args._reuse, &amp;quot;%s*,%s*&amp;quot;);				-- make a table from its contents&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if frame.args[&amp;#039;_alias-map&amp;#039;] and (&amp;#039;&amp;#039; ~= frame.args[&amp;#039;_alias-map&amp;#039;]) then		-- if there is |_alias-map= and it&amp;#039;s not empty&lt;br /&gt;
		alias_map = alias_map_get (frame.args[&amp;#039;_alias-map&amp;#039;]);					-- make a table from its contents&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	template = frame_args_get (frame.args, args, list);							-- get parameters provided in the {{#invoke:template wrapper|...|...}}&lt;br /&gt;
	if nil == template or &amp;#039;&amp;#039; == template then									-- this is the one parameter that is required by this module&lt;br /&gt;
		return nil;																-- not present, tell calling function to emit an error message&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	_include_positional = &amp;#039;yes&amp;#039; == frame.args[&amp;#039;_include-positional&amp;#039;];			-- when true pass all positional parameters along with non-excluded named parameters to ...&lt;br /&gt;
																				-- ... the working template; positional parameters are not excludable&lt;br /&gt;
																				&lt;br /&gt;
	local _pframe_args = frame:getParent().args;								-- here we get the wrapper template&amp;#039;s &amp;#039;live&amp;#039; parameters from pframe.args&lt;br /&gt;
	local pframe_args = {};														-- a local table that we can modify&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (_pframe_args) do											-- make a copy that we can modify&lt;br /&gt;
		pframe_args[k] = v;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
-- here we look for pframe parameters that are aliases of canonical parameter names; when found&lt;br /&gt;
-- we replace the alias with the canonical.  We do this here because the reuse_list works on&lt;br /&gt;
-- canonical parameter names so first we convert alias parameter names to canonical names and then&lt;br /&gt;
-- we remove those canonical names from the pframe table that are reused (provided to the working&lt;br /&gt;
-- template through the frame args table)&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (alias_map) do											-- k is alias name, v is canonical name&lt;br /&gt;
		if pframe_args[k] then													-- if pframe_args has parameter with alias name&lt;br /&gt;
			pframe_args[v] = _pframe_args[k];									-- create new canonical name with alias&amp;#039; value&lt;br /&gt;
			pframe_args[k] = nil;												-- unset the alias&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (pframe_args) do											-- do enumerated parameter alias -&amp;gt; canonical translation&lt;br /&gt;
		if &amp;#039;string&amp;#039; == type (k) then											-- only named parameters can be enumerated&lt;br /&gt;
			if alias_map[k..&amp;#039;#&amp;#039;] then											-- non-enumerated alias matches enumerated parameter pattern? enumerator at end only&lt;br /&gt;
				pframe_args[mw.ustring.gsub(alias_map[k..&amp;#039;#&amp;#039;], &amp;#039;#&amp;#039;, &amp;#039;&amp;#039;)] = v;				-- remove &amp;#039;#&amp;#039; and copy parameter to pframe_args table&lt;br /&gt;
				pframe_args[k] = nil;											-- unset the alias&lt;br /&gt;
			elseif mw.ustring.match (k, &amp;#039;%d+&amp;#039;) then											-- if this parameter name contains digits&lt;br /&gt;
				local temp = mw.ustring.gsub (k, &amp;#039;%d+&amp;#039;, &amp;#039;#&amp;#039;);								-- make a copy; digits replaced with single &amp;#039;#&amp;#039;&lt;br /&gt;
				local enum = mw.ustring.match (k, &amp;#039;%d+&amp;#039;);									-- get the enumerator&lt;br /&gt;
				&lt;br /&gt;
				if alias_map[temp] then											-- if this parameter is a recognized enumerated alias&lt;br /&gt;
					pframe_args[mw.ustring.gsub(alias_map[temp], &amp;#039;#&amp;#039;, enum)] = v;			-- use canonical name and replace &amp;#039;#&amp;#039; with enumerator and add to pframe_args&lt;br /&gt;
					pframe_args[k] = nil;										-- unset the alias&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- pframe parameters that are _reused are &amp;#039;reused&amp;#039; have the form something like this:&lt;br /&gt;
--	|chapter=[[wikisource:{{{chapter}}}|{{{chapter}}}]]&lt;br /&gt;
-- where a parameter in the wrapping template is modified and then passed to the working template&lt;br /&gt;
-- using the same parameter name (in this example |chapter=)&lt;br /&gt;
&lt;br /&gt;
																				-- remove parameters that will be reused&lt;br /&gt;
	for k, v in ipairs (reuse_list) do											-- k is numerical index, v is canonical parameter name to ignore&lt;br /&gt;
		if pframe_args[v] then													-- if pframe_args has parameter that should be ignored&lt;br /&gt;
			pframe_args[v] = nil;												-- unset the ignored parameter&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	pframe_args_get (pframe_args, args, exclude, _include_positional, list);	-- add parameters and values to args that are not listed in the exclude table&lt;br /&gt;
&lt;br /&gt;
	return template;															-- args now has all default and live parameters, return working template name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; W R A P &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Template entry point.  Call this function to &amp;#039;execute&amp;#039; the working template&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function wrap (frame)&lt;br /&gt;
	local args = {};															-- table of default and live parameters and their values to be passed to the wrapped template&lt;br /&gt;
	local template;																-- the name of the working template&lt;br /&gt;
&lt;br /&gt;
	template = _main (frame, args, false);										-- get default and live parameters and the name of the working template&lt;br /&gt;
	if not template then														-- template name is required&lt;br /&gt;
		return error_msg;														-- emit error message and abandon if template name not present&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return frame:expandTemplate {title=template, args=args};					-- render the working template&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L I S T &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Template entry point.  Call this function to &amp;#039;display&amp;#039; the source for the working template.  This function added&lt;br /&gt;
as a result of a TfD here: Wikipedia:Templates_for_discussion/Log/2018_April_28#Module:PassArguments&lt;br /&gt;
&lt;br /&gt;
This function replaces a similarly named function which was used in {{cite compare}} and {{cite compare2}}&lt;br /&gt;
&lt;br /&gt;
Values in the args table are numerically indexed strings in the form &amp;#039;name=value&amp;#039;&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function list(frame, do_link)&lt;br /&gt;
	local args = {};						-- table of default and live parameters and their values to be passed to the listed template&lt;br /&gt;
	local template;							-- the name of the listed template&lt;br /&gt;
&lt;br /&gt;
	template = _main (frame, args, true);	-- get default and live parameters and the name of the listed template&lt;br /&gt;
	if not template then					-- template name is required&lt;br /&gt;
		return error_msg;					-- emit error message and abandon if template name not present&lt;br /&gt;
	end&lt;br /&gt;
	if do_link then&lt;br /&gt;
		template = mw.ustring.format((&amp;#039;[[%s|%s]]&amp;#039;), frame:expandTemplate{ title=&amp;#039;Transclude&amp;#039;, args = {template} }, template)&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(args)&lt;br /&gt;
	for i = 1, #args do&lt;br /&gt;
		local stripped = mw.ustring.match(args[i], &amp;#039;^&amp;#039; .. i .. &amp;#039;=([^=]*)$&amp;#039;)&lt;br /&gt;
		if stripped then args[i] = stripped else break end&lt;br /&gt;
	end&lt;br /&gt;
	return frame:preprocess(table.concat({&lt;br /&gt;
		&amp;#039;&amp;lt;code style=&amp;quot;color:inherit; background:inherit; border:none;&amp;quot;&amp;gt;&amp;amp;#123;&amp;amp;#123;&amp;#039;,&lt;br /&gt;
		template,&lt;br /&gt;
		(&amp;#039;&amp;lt;wbr&amp;gt;&amp;lt;nowiki&amp;gt;|%s&amp;lt;/nowiki&amp;gt;&amp;#039;):rep(#args):format(unpack(args)), &amp;#039;&amp;amp;#125;&amp;amp;#125;&amp;lt;/code&amp;gt;&amp;#039;}));	-- render the template&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function link (frame)&lt;br /&gt;
	return list(frame, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N S &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	link = link,&lt;br /&gt;
	list = list,&lt;br /&gt;
	wrap = wrap,&lt;br /&gt;
	};&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Template_link_general/doc&amp;diff=2044&amp;oldid=0</id>
		<title>پودمان:Template link general/doc</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Template_link_general/doc&amp;diff=2044&amp;oldid=0"/>
		<updated>2026-06-25T09:35:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Template_link_general/doc&quot; title=&quot;پودمان:Template link general/doc&quot;&gt;پودمان:Template link general/doc&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{used in system}}&lt;br /&gt;
{{High risk}}&lt;br /&gt;
Implements {{Tl|Template link general}} and other templates in its family&lt;br /&gt;
&lt;br /&gt;
==Basic usage==&lt;br /&gt;
&amp;lt;pre&amp;gt;{{#invoke:template link general|main}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
This module is used by {{t|template link general}} and related templates to display links to templates. It is similar to {{t|tl}} but with additional formatting options and the ability to include parameters in the display. See {{slink|Template:Template_link_general#Parameters}} for the full list, which can be enabled by passing any value to them (such as &amp;quot;on&amp;quot;, &amp;quot;yes&amp;quot;, etc).&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Template_link_general&amp;diff=2041&amp;oldid=0</id>
		<title>پودمان:Template link general</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Template_link_general&amp;diff=2041&amp;oldid=0"/>
		<updated>2026-06-25T09:35:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Template_link_general&quot; title=&quot;پودمان:Template link general&quot;&gt;پودمان:Template link general&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This implements Template:Tlg&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Is a string non-empty?&lt;br /&gt;
local function _ne(s) &lt;br /&gt;
	return s ~= nil and s ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local nw = mw.text.nowiki&lt;br /&gt;
&lt;br /&gt;
local function addTemplate(s)&lt;br /&gt;
	local i, _ = s:find(&amp;#039;:&amp;#039;, 1, true)&lt;br /&gt;
	if i == nil then&lt;br /&gt;
		return &amp;#039;Template:&amp;#039; .. s&lt;br /&gt;
	end&lt;br /&gt;
	local ns = s:sub(1, i - 1)&lt;br /&gt;
	if ns == &amp;#039;&amp;#039; or mw.site.namespaces[ns] then&lt;br /&gt;
		return s&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;Template:&amp;#039; .. s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function trimTemplate(s)&lt;br /&gt;
	local needle = &amp;#039;template:&amp;#039;&lt;br /&gt;
	if s:sub(1, needle:len()):lower() == needle then&lt;br /&gt;
		return s:sub(needle:len() + 1)	&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function linkTitle(args)&lt;br /&gt;
	if _ne(args.nolink) then&lt;br /&gt;
		return args[&amp;#039;1&amp;#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local titleObj&lt;br /&gt;
	local titlePart = &amp;#039;[[&amp;#039;&lt;br /&gt;
	if args[&amp;#039;1&amp;#039;] then&lt;br /&gt;
		-- This handles :Page and other NS&lt;br /&gt;
		titleObj = mw.title.new(args[&amp;#039;1&amp;#039;], &amp;#039;Template&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		titleObj = mw.title.getCurrentTitle()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or&lt;br /&gt;
				addTemplate(args[&amp;#039;1&amp;#039;]))&lt;br /&gt;
	&lt;br /&gt;
	local textPart = args.alttext&lt;br /&gt;
	if not _ne(textPart) then&lt;br /&gt;
		if titleObj ~= nil then&lt;br /&gt;
			textPart = titleObj:inNamespace(&amp;quot;Template&amp;quot;) and args[&amp;#039;1&amp;#039;] or titleObj.fullText&lt;br /&gt;
		else&lt;br /&gt;
			-- redlink&lt;br /&gt;
			textPart = args[&amp;#039;1&amp;#039;]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if _ne(args.subst) then&lt;br /&gt;
		-- HACK: the ns thing above is probably broken&lt;br /&gt;
		textPart = &amp;#039;subst:&amp;#039; .. textPart&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if _ne(args.brace) then&lt;br /&gt;
		textPart = nw(&amp;#039;{{&amp;#039;) .. textPart .. nw(&amp;#039;}}&amp;#039;)&lt;br /&gt;
	elseif _ne(args.braceinside) then&lt;br /&gt;
		textPart = nw(&amp;#039;{&amp;#039;) .. textPart .. nw(&amp;#039;}&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	titlePart = titlePart .. &amp;#039;|&amp;#039; .. textPart .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	if _ne(args.braceinside) then&lt;br /&gt;
		titlePart = nw(&amp;#039;{&amp;#039;) .. titlePart .. nw(&amp;#039;}&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return titlePart&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame, {&lt;br /&gt;
		trim = true,&lt;br /&gt;
		removeBlanks = false&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname)&lt;br /&gt;
	local italic = _ne(args.italic) or _ne(args.italics)&lt;br /&gt;
	local dontBrace = _ne(args.brace) or _ne(args.braceinside)&lt;br /&gt;
	local code = _ne(args.code) or _ne(args.tt)&lt;br /&gt;
	&lt;br /&gt;
	-- Build the link part&lt;br /&gt;
	local titlePart = linkTitle(args)&lt;br /&gt;
	if bold then titlePart = &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. titlePart .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; end&lt;br /&gt;
	if _ne(args.nowrapname) then titlePart = &amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039; .. titlePart .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; end&lt;br /&gt;
	&lt;br /&gt;
	-- Build the arguments&lt;br /&gt;
	local textPart = &amp;quot;&amp;quot;&lt;br /&gt;
	for i = 2, 11 do&lt;br /&gt;
		local ii = tostring(i)&lt;br /&gt;
		local val = args[ii]&lt;br /&gt;
		if val ~= nil then val = mw.text.unstripNoWiki(val) else break end&lt;br /&gt;
		if _ne(args.nowiki) then val = nw(val) end&lt;br /&gt;
		if italic then val = &amp;#039;&amp;lt;span style=&amp;quot;font-style:italic;&amp;quot;&amp;gt;&amp;#039; .. val .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; end&lt;br /&gt;
		textPart = textPart .. &amp;#039;&amp;amp;#124;&amp;#039; .. val&lt;br /&gt;
	end&lt;br /&gt;
	if _ne(args[&amp;#039;12&amp;#039;]) then textPart = textPart .. &amp;#039;&amp;amp;#124;…&amp;#039; end&lt;br /&gt;
	&lt;br /&gt;
	-- final wrap&lt;br /&gt;
	local ret = titlePart .. textPart&lt;br /&gt;
	if not dontBrace then ret = nw(&amp;#039;{{&amp;#039;) .. ret .. nw(&amp;#039;}}&amp;#039;) end&lt;br /&gt;
	if _ne(args.a) then ret = nw(&amp;#039;*&amp;#039;) .. &amp;#039;&amp;amp;nbsp;&amp;#039; .. ret end&lt;br /&gt;
	if _ne(args.kbd) then ret = &amp;#039;&amp;lt;kbd&amp;gt;&amp;#039; .. ret .. &amp;#039;&amp;lt;/kbd&amp;gt;&amp;#039; end&lt;br /&gt;
	if code then&lt;br /&gt;
		ret = &amp;#039;&amp;lt;code&amp;gt;&amp;#039; .. ret .. &amp;#039;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
	elseif _ne(args.plaincode) then&lt;br /&gt;
		ret = &amp;#039;&amp;lt;code style=&amp;quot;border:none;background:transparent;&amp;quot;&amp;gt;&amp;#039; .. ret .. &amp;#039;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if _ne(args.nowrap) then ret = &amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039; .. ret .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; end&lt;br /&gt;
	&lt;br /&gt;
	--[[ Wrap as html?? &lt;br /&gt;
	local span = mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
	span:wikitext(ret)&lt;br /&gt;
	--]]&lt;br /&gt;
	if _ne(args.debug) then ret = ret .. &amp;#039;\n&amp;lt;pre&amp;gt;&amp;#039; .. mw.text.encode(mw.dumpObject(args)) .. &amp;#039;&amp;lt;/pre&amp;gt;&amp;#039; end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:TableTools&amp;diff=2038&amp;oldid=0</id>
		<title>پودمان:TableTools</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:TableTools&amp;diff=2038&amp;oldid=0"/>
		<updated>2026-06-25T09:35:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:TableTools&quot; title=&quot;پودمان:TableTools&quot;&gt;پودمان:TableTools&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--                               TableTools                                       --&lt;br /&gt;
--                                                                                --&lt;br /&gt;
-- This module includes a number of functions for dealing with Lua tables.        --&lt;br /&gt;
-- It is a meta-module, meant to be called from other Lua modules, and should     --&lt;br /&gt;
-- not be called directly from #invoke.                                           --&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Define often-used variables and functions.&lt;br /&gt;
local floor = math.floor&lt;br /&gt;
local infinity = math.huge&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local checkTypeMulti = libraryUtil.checkTypeMulti&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- isPositiveInteger&lt;br /&gt;
--&lt;br /&gt;
-- This function returns true if the given value is a positive integer, and false&lt;br /&gt;
-- if not. Although it doesn&amp;#039;t operate on tables, it is included here as it is&lt;br /&gt;
-- useful for determining whether a given table key is in the array part or the&lt;br /&gt;
-- hash part of a table.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.isPositiveInteger(v)&lt;br /&gt;
	return type(v) == &amp;#039;number&amp;#039; and v &amp;gt;= 1 and floor(v) == v and v &amp;lt; infinity&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- isNan&lt;br /&gt;
--&lt;br /&gt;
-- This function returns true if the given number is a NaN value, and false&lt;br /&gt;
-- if not. Although it doesn&amp;#039;t operate on tables, it is included here as it is&lt;br /&gt;
-- useful for determining whether a value can be a valid table key. Lua will&lt;br /&gt;
-- generate an error if a NaN is used as a table key.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.isNan(v)&lt;br /&gt;
	return type(v) == &amp;#039;number&amp;#039; and tostring(v) == &amp;#039;-nan&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- shallowClone&lt;br /&gt;
--&lt;br /&gt;
-- This returns a clone of a table. The value returned is a new table, but all&lt;br /&gt;
-- subtables and functions are shared. Metamethods are respected, but the returned&lt;br /&gt;
-- table will have no metatable of its own.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.shallowClone(t)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		ret[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- removeDuplicates&lt;br /&gt;
--&lt;br /&gt;
-- This removes duplicate values from an array. Non-positive-integer keys are&lt;br /&gt;
-- ignored. The earliest value is kept, and all subsequent duplicate values are&lt;br /&gt;
-- removed, but otherwise the array order is unchanged.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.removeDuplicates(t)&lt;br /&gt;
	checkType(&amp;#039;removeDuplicates&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
	local isNan = p.isNan&lt;br /&gt;
	local ret, exists = {}, {}&lt;br /&gt;
	for i, v in ipairs(t) do&lt;br /&gt;
		if isNan(v) then&lt;br /&gt;
			-- NaNs can&amp;#039;t be table keys, and they are also unique, so we don&amp;#039;t need to check existence.&lt;br /&gt;
			ret[#ret + 1] = v&lt;br /&gt;
		else&lt;br /&gt;
			if not exists[v] then&lt;br /&gt;
				ret[#ret + 1] = v&lt;br /&gt;
				exists[v] = true&lt;br /&gt;
			end&lt;br /&gt;
		end	&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end			&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- numKeys&lt;br /&gt;
--&lt;br /&gt;
-- This takes a table and returns an array containing the numbers of any numerical&lt;br /&gt;
-- keys that have non-nil values, sorted in numerical order.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.numKeys(t)&lt;br /&gt;
	checkType(&amp;#039;numKeys&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
	local isPositiveInteger = p.isPositiveInteger&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		if isPositiveInteger(k) then&lt;br /&gt;
			nums[#nums + 1] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- affixNums&lt;br /&gt;
--&lt;br /&gt;
-- This takes a table and returns an array containing the numbers of keys with the&lt;br /&gt;
-- specified prefix and suffix. For example, for the table&lt;br /&gt;
-- {a1 = &amp;#039;foo&amp;#039;, a3 = &amp;#039;bar&amp;#039;, a6 = &amp;#039;baz&amp;#039;} and the prefix &amp;quot;a&amp;quot;, affixNums will&lt;br /&gt;
-- return {1, 3, 6}.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.affixNums(t, prefix, suffix)&lt;br /&gt;
	checkType(&amp;#039;affixNums&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;affixNums&amp;#039;, 2, prefix, &amp;#039;string&amp;#039;, true)&lt;br /&gt;
	checkType(&amp;#039;affixNums&amp;#039;, 3, suffix, &amp;#039;string&amp;#039;, true)&lt;br /&gt;
&lt;br /&gt;
	local function cleanPattern(s)&lt;br /&gt;
		-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.&lt;br /&gt;
		return s:gsub(&amp;#039;([%(%)%%%.%[%]%*%+%-%?%^%$])&amp;#039;, &amp;#039;%%%1&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	prefix = prefix or &amp;#039;&amp;#039;&lt;br /&gt;
	suffix = suffix or &amp;#039;&amp;#039;&lt;br /&gt;
	prefix = cleanPattern(prefix)&lt;br /&gt;
	suffix = cleanPattern(suffix)&lt;br /&gt;
	local pattern = &amp;#039;^&amp;#039; .. prefix .. &amp;#039;([1-9]%d*)&amp;#039; .. suffix .. &amp;#039;$&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		if type(k) == &amp;#039;string&amp;#039; then			&lt;br /&gt;
			local num = mw.ustring.match(k, pattern)&lt;br /&gt;
			if num then&lt;br /&gt;
				nums[#nums + 1] = tonumber(num)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- numData&lt;br /&gt;
--&lt;br /&gt;
-- Given a table with keys like (&amp;quot;foo1&amp;quot;, &amp;quot;bar1&amp;quot;, &amp;quot;foo2&amp;quot;, &amp;quot;baz2&amp;quot;), returns a table&lt;br /&gt;
-- of subtables in the format &lt;br /&gt;
-- { [1] = {foo = &amp;#039;text&amp;#039;, bar = &amp;#039;text&amp;#039;}, [2] = {foo = &amp;#039;text&amp;#039;, baz = &amp;#039;text&amp;#039;} }&lt;br /&gt;
-- Keys that don&amp;#039;t end with an integer are stored in a subtable named &amp;quot;other&amp;quot;.&lt;br /&gt;
-- The compress option compresses the table so that it can be iterated over with&lt;br /&gt;
-- ipairs.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.numData(t, compress)&lt;br /&gt;
	checkType(&amp;#039;numData&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;numData&amp;#039;, 2, compress, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		local prefix, num = mw.ustring.match(tostring(k), &amp;#039;^([^0-9]*)([1-9][0-9]*)$&amp;#039;)&lt;br /&gt;
		if num then&lt;br /&gt;
			num = tonumber(num)&lt;br /&gt;
			local subtable = ret[num] or {}&lt;br /&gt;
			if prefix == &amp;#039;&amp;#039; then&lt;br /&gt;
				-- Positional parameters match the blank string; put them at the start of the subtable instead.&lt;br /&gt;
				prefix = 1&lt;br /&gt;
			end&lt;br /&gt;
			subtable[prefix] = v&lt;br /&gt;
			ret[num] = subtable&lt;br /&gt;
		else&lt;br /&gt;
			local subtable = ret.other or {}&lt;br /&gt;
			subtable[k] = v&lt;br /&gt;
			ret.other = subtable&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if compress then&lt;br /&gt;
		local other = ret.other&lt;br /&gt;
		ret = p.compressSparseArray(ret)&lt;br /&gt;
		ret.other = other&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- compressSparseArray&lt;br /&gt;
--&lt;br /&gt;
-- This takes an array with one or more nil values, and removes the nil values&lt;br /&gt;
-- while preserving the order, so that the array can be safely traversed with&lt;br /&gt;
-- ipairs.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.compressSparseArray(t)&lt;br /&gt;
	checkType(&amp;#039;compressSparseArray&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	local nums = p.numKeys(t)&lt;br /&gt;
	for _, num in ipairs(nums) do&lt;br /&gt;
		ret[#ret + 1] = t[num]&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- sparseIpairs&lt;br /&gt;
--&lt;br /&gt;
-- This is an iterator for sparse arrays. It can be used like ipairs, but can&lt;br /&gt;
-- handle nil values.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.sparseIpairs(t)&lt;br /&gt;
	checkType(&amp;#039;sparseIpairs&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
	local nums = p.numKeys(t)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	local lim = #nums&lt;br /&gt;
	return function ()&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if i &amp;lt;= lim then&lt;br /&gt;
			local key = nums[i]&lt;br /&gt;
			return key, t[key]&lt;br /&gt;
		else&lt;br /&gt;
			return nil, nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- size&lt;br /&gt;
--&lt;br /&gt;
-- This returns the size of a key/value pair table. It will also work on arrays,&lt;br /&gt;
-- but for arrays it is more efficient to use the # operator.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function p.size(t)&lt;br /&gt;
	checkType(&amp;#039;size&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k in pairs(t) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return i&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function defaultKeySort(item1, item2)&lt;br /&gt;
	-- &amp;quot;number&amp;quot; &amp;lt; &amp;quot;string&amp;quot;, so numbers will be sorted before strings.&lt;br /&gt;
	local type1, type2 = type(item1), type(item2)&lt;br /&gt;
	if type1 ~= type2 then&lt;br /&gt;
		return type1 &amp;lt; type2&lt;br /&gt;
	else -- This will fail with table, boolean, function.&lt;br /&gt;
		return item1 &amp;lt; item2&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Returns a list of the keys in a table, sorted using either a default&lt;br /&gt;
	comparison function or a custom keySort function.&lt;br /&gt;
]]&lt;br /&gt;
function p.keysToList(t, keySort, checked)&lt;br /&gt;
	if not checked then&lt;br /&gt;
		checkType(&amp;#039;keysToList&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
		checkTypeMulti(&amp;#039;keysToList&amp;#039;, 2, keySort, { &amp;#039;function&amp;#039;, &amp;#039;boolean&amp;#039;, &amp;#039;nil&amp;#039; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local list = {}&lt;br /&gt;
	local index = 1&lt;br /&gt;
	for key, value in pairs(t) do&lt;br /&gt;
		list[index] = key&lt;br /&gt;
		index = index + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if keySort ~= false then&lt;br /&gt;
		keySort = type(keySort) == &amp;#039;function&amp;#039; and keySort or defaultKeySort&lt;br /&gt;
		&lt;br /&gt;
		table.sort(list, keySort)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Iterates through a table, with the keys sorted using the keysToList function.&lt;br /&gt;
	If there are only numerical keys, sparseIpairs is probably more efficient.&lt;br /&gt;
]]&lt;br /&gt;
function p.sortedPairs(t, keySort)&lt;br /&gt;
	checkType(&amp;#039;sortedPairs&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;sortedPairs&amp;#039;, 2, keySort, &amp;#039;function&amp;#039;, true)&lt;br /&gt;
	&lt;br /&gt;
	local list = p.keysToList(t, keySort, true)&lt;br /&gt;
	&lt;br /&gt;
	local i = 0&lt;br /&gt;
	return function()&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		local key = list[i]&lt;br /&gt;
		if key ~= nil then&lt;br /&gt;
			return key, t[key]&lt;br /&gt;
		else&lt;br /&gt;
			return nil, nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Returns true if all keys in the table are consecutive integers starting at 1.&lt;br /&gt;
--]]&lt;br /&gt;
function p.isArray(t)&lt;br /&gt;
	checkType(&amp;quot;isArray&amp;quot;, 1, t, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if t[i] == nil then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; } -&amp;gt; { a = 1, b = 2, c = 3 }&lt;br /&gt;
function p.invert(array)&lt;br /&gt;
	checkType(&amp;quot;invert&amp;quot;, 1, array, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local map = {}&lt;br /&gt;
	for i, v in ipairs(array) do&lt;br /&gt;
		map[v] = i&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return map&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	{ &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; } -&amp;gt; { [&amp;quot;a&amp;quot;] = true, [&amp;quot;b&amp;quot;] = true, [&amp;quot;c&amp;quot;] = true }&lt;br /&gt;
--]]&lt;br /&gt;
function p.listToSet(t)&lt;br /&gt;
	checkType(&amp;quot;listToSet&amp;quot;, 1, t, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local set = {}&lt;br /&gt;
	for _, item in ipairs(t) do&lt;br /&gt;
		set[item] = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return set&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Recursive deep copy function.&lt;br /&gt;
	Preserves identities of subtables.&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
local function _deepCopy(orig, includeMetatable, already_seen)&lt;br /&gt;
	-- Stores copies of tables indexed by the original table.&lt;br /&gt;
	already_seen = already_seen or {}&lt;br /&gt;
	&lt;br /&gt;
	local copy = already_seen[orig]&lt;br /&gt;
	if copy ~= nil then&lt;br /&gt;
		return copy&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if type(orig) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		copy = {}&lt;br /&gt;
		for orig_key, orig_value in pairs(orig) do&lt;br /&gt;
			copy[deepcopy(orig_key, includeMetatable, already_seen)] = deepcopy(orig_value, includeMetatable, already_seen)&lt;br /&gt;
		end&lt;br /&gt;
		already_seen[orig] = copy&lt;br /&gt;
		&lt;br /&gt;
		if includeMetatable then&lt;br /&gt;
			local mt = getmetatable(orig)&lt;br /&gt;
			if mt ~= nil then&lt;br /&gt;
				local mt_copy = deepcopy(mt, includeMetatable, already_seen)&lt;br /&gt;
				setmetatable(copy, mt_copy)&lt;br /&gt;
				already_seen[mt] = mt_copy&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else -- number, string, boolean, etc&lt;br /&gt;
		copy = orig&lt;br /&gt;
	end&lt;br /&gt;
	return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.deepCopy(orig, noMetatable, already_seen)&lt;br /&gt;
	checkType(&amp;quot;deepCopy&amp;quot;, 3, already_seen, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	&lt;br /&gt;
	return _deepCopy(orig, not noMetatable, already_seen)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Concatenates all values in the table that are indexed by a number, in order.&lt;br /&gt;
	sparseConcat{ a, nil, c, d }  =&amp;gt;  &amp;quot;acd&amp;quot;&lt;br /&gt;
	sparseConcat{ nil, b, c, d }  =&amp;gt;  &amp;quot;bcd&amp;quot;&lt;br /&gt;
]]&lt;br /&gt;
function p.sparseConcat(t, sep, i, j)&lt;br /&gt;
	local list = {}&lt;br /&gt;
	&lt;br /&gt;
	local list_i = 0&lt;br /&gt;
	for _, v in p.sparseIpairs(t) do&lt;br /&gt;
		list_i = list_i + 1&lt;br /&gt;
		list[list_i] = v&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(list, sep, i, j)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- Finds the length of an array, or of a quasi-array with keys such&lt;br /&gt;
-- as &amp;quot;data1&amp;quot;, &amp;quot;data2&amp;quot;, etc., using an exponential search algorithm. &lt;br /&gt;
-- It is similar to the operator #, but may return&lt;br /&gt;
-- a different value when there are gaps in the array portion of the table.&lt;br /&gt;
-- Intended to be used on data loaded with mw.loadData. For other tables, use #.&lt;br /&gt;
-- Note: #frame.args in frame object always be set to 0, regardless of &lt;br /&gt;
-- the number of unnamed template parameters, so use this function for&lt;br /&gt;
-- frame.args.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function p.length(t, prefix)&lt;br /&gt;
	-- requiring module inline so that [[Module:Exponential search]]&lt;br /&gt;
	-- which is only needed by this one function&lt;br /&gt;
	-- doesn&amp;#039;t get millions of transclusions&lt;br /&gt;
	local expSearch = require(&amp;quot;Module:Exponential search&amp;quot;)&lt;br /&gt;
	checkType(&amp;#039;length&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;length&amp;#039;, 2, prefix, &amp;#039;string&amp;#039;, true)&lt;br /&gt;
	return expSearch(function(i)&lt;br /&gt;
		local key&lt;br /&gt;
		if prefix then&lt;br /&gt;
			key = prefix .. tostring(i)&lt;br /&gt;
		else&lt;br /&gt;
			key = i&lt;br /&gt;
		end&lt;br /&gt;
		return t[key] ~= nil&lt;br /&gt;
	end) or 0&lt;br /&gt;
end&lt;br /&gt;
function p.inArray(arr, valueToFind)&lt;br /&gt;
	checkType(&amp;quot;inArray&amp;quot;, 1, arr, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- if valueToFind is nil, error?&lt;br /&gt;
	&lt;br /&gt;
	for _, v in ipairs(arr) do&lt;br /&gt;
		if v == valueToFind 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;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:String&amp;diff=2035&amp;oldid=0</id>
		<title>پودمان:String</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:String&amp;diff=2035&amp;oldid=0"/>
		<updated>2026-06-25T09:35:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:String&quot; title=&quot;پودمان:String&quot;&gt;پودمان:String&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
&lt;br /&gt;
This module is intended to provide access to basic string functions.&lt;br /&gt;
&lt;br /&gt;
Most of the functions provided here can be invoked with named parameters,&lt;br /&gt;
unnamed parameters, or a mixture.  If named parameters are used, Mediawiki will&lt;br /&gt;
automatically remove any leading or trailing whitespace from the parameter.&lt;br /&gt;
Depending on the intended use, it may be advantageous to either preserve or&lt;br /&gt;
remove such whitespace.&lt;br /&gt;
&lt;br /&gt;
Global options&lt;br /&gt;
    ignore_errors: If set to &amp;#039;true&amp;#039; or 1, any error condition will result in&lt;br /&gt;
        an empty string being returned rather than an error message.&lt;br /&gt;
&lt;br /&gt;
    error_category: If an error occurs, specifies the name of a category to&lt;br /&gt;
        include with the error message.  The default category is&lt;br /&gt;
        [Category:Errors reported by Module String].&lt;br /&gt;
&lt;br /&gt;
    no_category: If set to &amp;#039;true&amp;#039; or 1, no category will be added if an error&lt;br /&gt;
        is generated.&lt;br /&gt;
&lt;br /&gt;
Unit tests for this module are available at Module:String/tests.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local str = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
len&lt;br /&gt;
&lt;br /&gt;
This function returns the length of the target string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|len|target_string|}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|len|s=target_string}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string whose length to report&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the target string.&lt;br /&gt;
]]&lt;br /&gt;
function str.len( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&amp;#039;s&amp;#039;} )&lt;br /&gt;
	local s = new_args[&amp;#039;s&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	return mw.ustring.len( s )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
sub&lt;br /&gt;
&lt;br /&gt;
This function returns a substring of the target string at specified indices.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|sub|target_string|start_index|end_index}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to return a subset of&lt;br /&gt;
    i: The fist index of the substring to return, defaults to 1.&lt;br /&gt;
    j: The last index of the string to return, defaults to the last character.&lt;br /&gt;
&lt;br /&gt;
The first character of the string is assigned an index of 1.  If either i or j&lt;br /&gt;
is a negative value, it is interpreted the same as selecting a character by&lt;br /&gt;
counting from the end of the string.  Hence, a value of -1 is the same as&lt;br /&gt;
selecting the last character of the string.&lt;br /&gt;
&lt;br /&gt;
If the requested indices are out of range for the given string, an error is&lt;br /&gt;
reported.&lt;br /&gt;
]]&lt;br /&gt;
function str.sub( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, { &amp;#039;s&amp;#039;, &amp;#039;i&amp;#039;, &amp;#039;j&amp;#039; } )&lt;br /&gt;
	local s = new_args[&amp;#039;s&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local i = tonumber( new_args[&amp;#039;i&amp;#039;] ) or 1&lt;br /&gt;
	local j = tonumber( new_args[&amp;#039;j&amp;#039;] ) or -1&lt;br /&gt;
&lt;br /&gt;
	local len = mw.ustring.len( s )&lt;br /&gt;
&lt;br /&gt;
	-- Convert negatives for range checking&lt;br /&gt;
	if i &amp;lt; 0 then&lt;br /&gt;
		i = len + i + 1&lt;br /&gt;
	end&lt;br /&gt;
	if j &amp;lt; 0 then&lt;br /&gt;
		j = len + j + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if i &amp;gt; len or j &amp;gt; len or i &amp;lt; 1 or j &amp;lt; 1 then&lt;br /&gt;
		return str._error( &amp;#039;String subset index out of range&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if j &amp;lt; i then&lt;br /&gt;
		return str._error( &amp;#039;String subset indices out of order&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.ustring.sub( s, i, j )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
This function implements that features of {{str sub old}} and is kept in order&lt;br /&gt;
to maintain these older templates.&lt;br /&gt;
]]&lt;br /&gt;
function str.sublength( frame )&lt;br /&gt;
	local i = tonumber( frame.args.i ) or 0&lt;br /&gt;
	local len = tonumber( frame.args.len )&lt;br /&gt;
	return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
_match&lt;br /&gt;
&lt;br /&gt;
This function returns a substring from the source string that matches a&lt;br /&gt;
specified pattern. It is exported for use in other modules&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
strmatch = require(&amp;quot;Module:String&amp;quot;)._match&lt;br /&gt;
sresult = strmatch( s, pattern, start, match, plain, nomatch )&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to search&lt;br /&gt;
    pattern: The pattern or string to find within the string&lt;br /&gt;
    start: The index within the source string to start the search.  The first&lt;br /&gt;
        character of the string has index 1.  Defaults to 1.&lt;br /&gt;
    match: In some cases it may be possible to make multiple matches on a single&lt;br /&gt;
        string.  This specifies which match to return, where the first match is&lt;br /&gt;
        match= 1.  If a negative number is specified then a match is returned&lt;br /&gt;
        counting from the last match.  Hence match = -1 is the same as requesting&lt;br /&gt;
        the last match.  Defaults to 1.&lt;br /&gt;
    plain: A flag indicating that the pattern should be understood as plain&lt;br /&gt;
        text.  Defaults to false.&lt;br /&gt;
    nomatch: If no match is found, output the &amp;quot;nomatch&amp;quot; value rather than an error.&lt;br /&gt;
&lt;br /&gt;
For information on constructing Lua patterns, a form of [regular expression], see:&lt;br /&gt;
&lt;br /&gt;
* http://www.lua.org/manual/5.1/manual.html#5.4.1&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
-- This sub-routine is exported for use in other modules&lt;br /&gt;
function str._match( s, pattern, start, match_index, plain_flag, nomatch )&lt;br /&gt;
	if s == &amp;#039;&amp;#039; then&lt;br /&gt;
		return str._error( &amp;#039;Target string is empty&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if pattern == &amp;#039;&amp;#039; then&lt;br /&gt;
		return str._error( &amp;#039;Pattern string is empty&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	start = tonumber(start) or 1&lt;br /&gt;
	if math.abs(start) &amp;lt; 1 or math.abs(start) &amp;gt; mw.ustring.len( s ) then&lt;br /&gt;
		return str._error( &amp;#039;Requested start is out of range&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if match_index == 0 then&lt;br /&gt;
		return str._error( &amp;#039;Match index is out of range&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if plain_flag then&lt;br /&gt;
		pattern = str._escapePattern( pattern )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result&lt;br /&gt;
	if match_index == 1 then&lt;br /&gt;
		-- Find first match is simple case&lt;br /&gt;
		result = mw.ustring.match( s, pattern, start )&lt;br /&gt;
	else&lt;br /&gt;
		if start &amp;gt; 1 then&lt;br /&gt;
			s = mw.ustring.sub( s, start )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local iterator = mw.ustring.gmatch(s, pattern)&lt;br /&gt;
		if match_index &amp;gt; 0 then&lt;br /&gt;
			-- Forward search&lt;br /&gt;
			for w in iterator do&lt;br /&gt;
				match_index = match_index - 1&lt;br /&gt;
				if match_index == 0 then&lt;br /&gt;
					result = w&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- Reverse search&lt;br /&gt;
			local result_table = {}&lt;br /&gt;
			local count = 1&lt;br /&gt;
			for w in iterator do&lt;br /&gt;
				result_table[count] = w&lt;br /&gt;
				count = count + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			result = result_table[ count + match_index ]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if result == nil then&lt;br /&gt;
		if nomatch == nil then&lt;br /&gt;
			return str._error( &amp;#039;Match not found&amp;#039; )&lt;br /&gt;
		else&lt;br /&gt;
			return nomatch&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
match&lt;br /&gt;
&lt;br /&gt;
This function returns a substring from the source string that matches a&lt;br /&gt;
specified pattern.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index&lt;br /&gt;
    |match=match_number|plain=plain_flag|nomatch=nomatch_output}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to search&lt;br /&gt;
    pattern: The pattern or string to find within the string&lt;br /&gt;
    start: The index within the source string to start the search.  The first&lt;br /&gt;
        character of the string has index 1.  Defaults to 1.&lt;br /&gt;
    match: In some cases it may be possible to make multiple matches on a single&lt;br /&gt;
        string.  This specifies which match to return, where the first match is&lt;br /&gt;
        match= 1.  If a negative number is specified then a match is returned&lt;br /&gt;
        counting from the last match.  Hence match = -1 is the same as requesting&lt;br /&gt;
        the last match.  Defaults to 1.&lt;br /&gt;
    plain: A flag indicating that the pattern should be understood as plain&lt;br /&gt;
        text.  Defaults to false.&lt;br /&gt;
    nomatch: If no match is found, output the &amp;quot;nomatch&amp;quot; value rather than an error.&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from each string.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
If the match_number or start_index are out of range for the string being queried, then&lt;br /&gt;
this function generates an error.  An error is also generated if no match is found.&lt;br /&gt;
If one adds the parameter ignore_errors=true, then the error will be suppressed and&lt;br /&gt;
an empty string will be returned on any failure.&lt;br /&gt;
&lt;br /&gt;
For information on constructing Lua patterns, a form of [regular expression], see:&lt;br /&gt;
&lt;br /&gt;
* http://www.lua.org/manual/5.1/manual.html#5.4.1&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
-- This is the entry point for #invoke:String|match&lt;br /&gt;
function str.match( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&amp;#039;s&amp;#039;, &amp;#039;pattern&amp;#039;, &amp;#039;start&amp;#039;, &amp;#039;match&amp;#039;, &amp;#039;plain&amp;#039;, &amp;#039;nomatch&amp;#039;} )&lt;br /&gt;
	local s = new_args[&amp;#039;s&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local start = tonumber( new_args[&amp;#039;start&amp;#039;] ) or 1&lt;br /&gt;
	local plain_flag = str._getBoolean( new_args[&amp;#039;plain&amp;#039;] or false )&lt;br /&gt;
	local pattern = new_args[&amp;#039;pattern&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local match_index = math.floor( tonumber(new_args[&amp;#039;match&amp;#039;]) or 1 )&lt;br /&gt;
	local nomatch = new_args[&amp;#039;nomatch&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
	return str._match( s, pattern, start, match_index, plain_flag, nomatch )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
pos&lt;br /&gt;
&lt;br /&gt;
This function returns a single character from the target string at position pos.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|pos|target_string|index_value}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|pos|target=target_string|pos=index_value}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    target: The string to search&lt;br /&gt;
    pos: The index for the character to return&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the target string.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
The first character has an index value of 1.&lt;br /&gt;
&lt;br /&gt;
If one requests a negative value, this function will select a character by counting backwards&lt;br /&gt;
from the end of the string.  In other words pos = -1 is the same as asking for the last character.&lt;br /&gt;
&lt;br /&gt;
A requested value of zero, or a value greater than the length of the string returns an error.&lt;br /&gt;
]]&lt;br /&gt;
function str.pos( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&amp;#039;target&amp;#039;, &amp;#039;pos&amp;#039;} )&lt;br /&gt;
	local target_str = new_args[&amp;#039;target&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local pos = tonumber( new_args[&amp;#039;pos&amp;#039;] ) or 0&lt;br /&gt;
&lt;br /&gt;
	if pos == 0 or math.abs(pos) &amp;gt; mw.ustring.len( target_str ) then&lt;br /&gt;
		return str._error( &amp;#039;String index out of range&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.ustring.sub( target_str, pos, pos )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
str_find&lt;br /&gt;
&lt;br /&gt;
This function duplicates the behavior of {{str_find}}, including all of its quirks.&lt;br /&gt;
This is provided in order to support existing templates, but is NOT RECOMMENDED for&lt;br /&gt;
new code and templates.  New code is recommended to use the &amp;quot;find&amp;quot; function instead.&lt;br /&gt;
&lt;br /&gt;
Returns the first index in &amp;quot;source&amp;quot; that is a match to &amp;quot;target&amp;quot;.  Indexing is 1-based,&lt;br /&gt;
and the function returns -1 if the &amp;quot;target&amp;quot; string is not present in &amp;quot;source&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Important Note: If the &amp;quot;target&amp;quot; string is empty / missing, this function returns a&lt;br /&gt;
value of &amp;quot;1&amp;quot;, which is generally unexpected behavior, and must be accounted for&lt;br /&gt;
separatetly.&lt;br /&gt;
]]&lt;br /&gt;
function str.str_find( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&amp;#039;source&amp;#039;, &amp;#039;target&amp;#039;} )&lt;br /&gt;
	local source_str = new_args[&amp;#039;source&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local target_str = new_args[&amp;#039;target&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	if target_str == &amp;#039;&amp;#039; then&lt;br /&gt;
		return 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local start = mw.ustring.find( source_str, target_str, 1, true )&lt;br /&gt;
	if start == nil then&lt;br /&gt;
		start = -1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return start&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
find&lt;br /&gt;
&lt;br /&gt;
This function allows one to search for a target string or pattern within another&lt;br /&gt;
string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    source: The string to search&lt;br /&gt;
    target: The string or pattern to find within source&lt;br /&gt;
    start: The index within the source string to start the search, defaults to 1&lt;br /&gt;
    plain: Boolean flag indicating that target should be understood as plain&lt;br /&gt;
        text and not as a Lua style regular expression, defaults to true&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the parameter.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
This function returns the first index &amp;gt;= &amp;quot;start&amp;quot; where &amp;quot;target&amp;quot; can be found&lt;br /&gt;
within &amp;quot;source&amp;quot;.  Indices are 1-based.  If &amp;quot;target&amp;quot; is not found, then this&lt;br /&gt;
function returns 0.  If either &amp;quot;source&amp;quot; or &amp;quot;target&amp;quot; are missing / empty, this&lt;br /&gt;
function also returns 0.&lt;br /&gt;
&lt;br /&gt;
This function should be safe for UTF-8 strings.&lt;br /&gt;
]]&lt;br /&gt;
function str.find( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&amp;#039;source&amp;#039;, &amp;#039;target&amp;#039;, &amp;#039;start&amp;#039;, &amp;#039;plain&amp;#039; } )&lt;br /&gt;
	local source_str = new_args[&amp;#039;source&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local pattern = new_args[&amp;#039;target&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local start_pos = tonumber(new_args[&amp;#039;start&amp;#039;]) or 1&lt;br /&gt;
	local plain = new_args[&amp;#039;plain&amp;#039;] or true&lt;br /&gt;
&lt;br /&gt;
	if source_str == &amp;#039;&amp;#039; or pattern == &amp;#039;&amp;#039; then&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	plain = str._getBoolean( plain )&lt;br /&gt;
&lt;br /&gt;
	local start = mw.ustring.find( source_str, pattern, start_pos, plain )&lt;br /&gt;
	if start == nil then&lt;br /&gt;
		start = 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return start&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
replace&lt;br /&gt;
&lt;br /&gt;
This function allows one to replace a target string or pattern within another&lt;br /&gt;
string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|&lt;br /&gt;
   count=replacement_count|plain=plain_flag}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    source: The string to search&lt;br /&gt;
    pattern: The string or pattern to find within source&lt;br /&gt;
    replace: The replacement text&lt;br /&gt;
    count: The number of occurences to replace, defaults to all.&lt;br /&gt;
    plain: Boolean flag indicating that pattern should be understood as plain&lt;br /&gt;
        text and not as a Lua style regular expression, defaults to true&lt;br /&gt;
]]&lt;br /&gt;
function str.replace( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&amp;#039;source&amp;#039;, &amp;#039;pattern&amp;#039;, &amp;#039;replace&amp;#039;, &amp;#039;count&amp;#039;, &amp;#039;plain&amp;#039; } )&lt;br /&gt;
	local source_str = new_args[&amp;#039;source&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local pattern = new_args[&amp;#039;pattern&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local replace = new_args[&amp;#039;replace&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local count = tonumber( new_args[&amp;#039;count&amp;#039;] )&lt;br /&gt;
	local plain = new_args[&amp;#039;plain&amp;#039;] or true&lt;br /&gt;
&lt;br /&gt;
	if source_str == &amp;#039;&amp;#039; or pattern == &amp;#039;&amp;#039; then&lt;br /&gt;
		return source_str&lt;br /&gt;
	end&lt;br /&gt;
	plain = str._getBoolean( plain )&lt;br /&gt;
&lt;br /&gt;
	if plain then&lt;br /&gt;
		pattern = str._escapePattern( pattern )&lt;br /&gt;
		replace = mw.ustring.gsub( replace, &amp;quot;%%&amp;quot;, &amp;quot;%%%%&amp;quot; ) --Only need to escape replacement sequences.&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result&lt;br /&gt;
&lt;br /&gt;
	if count ~= nil then&lt;br /&gt;
		result = mw.ustring.gsub( source_str, pattern, replace, count )&lt;br /&gt;
	else&lt;br /&gt;
		result = mw.ustring.gsub( source_str, pattern, replace )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    simple function to pipe string.rep to templates.&lt;br /&gt;
]]&lt;br /&gt;
function str.rep( frame )&lt;br /&gt;
	local repetitions = tonumber( frame.args[2] )&lt;br /&gt;
	if not repetitions then&lt;br /&gt;
		return str._error( &amp;#039;function rep expects a number as second parameter, received &amp;quot;&amp;#039; .. ( frame.args[2] or &amp;#039;&amp;#039; ) .. &amp;#039;&amp;quot;&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return string.rep( frame.args[1] or &amp;#039;&amp;#039;, repetitions )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
escapePattern&lt;br /&gt;
&lt;br /&gt;
This function escapes special characters from a Lua string pattern. See [1]&lt;br /&gt;
for details on how patterns work.&lt;br /&gt;
&lt;br /&gt;
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|escapePattern|pattern_string}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    pattern_string: The pattern string to escape.&lt;br /&gt;
]]&lt;br /&gt;
function str.escapePattern( frame )&lt;br /&gt;
	local pattern_str = frame.args[1]&lt;br /&gt;
	if not pattern_str then&lt;br /&gt;
		return str._error( &amp;#039;No pattern string specified&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	local result = str._escapePattern( pattern_str )&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
count&lt;br /&gt;
This function counts the number of occurrences of one string in another.&lt;br /&gt;
]]&lt;br /&gt;
function str.count(frame)&lt;br /&gt;
	local args = str._getParameters(frame.args, {&amp;#039;source&amp;#039;, &amp;#039;pattern&amp;#039;, &amp;#039;plain&amp;#039;})&lt;br /&gt;
	local source = args.source or &amp;#039;&amp;#039;&lt;br /&gt;
	local pattern = args.pattern or &amp;#039;&amp;#039;&lt;br /&gt;
	local plain = str._getBoolean(args.plain or true)&lt;br /&gt;
	if plain then&lt;br /&gt;
		pattern = str._escapePattern(pattern)&lt;br /&gt;
	end&lt;br /&gt;
	local _, count = mw.ustring.gsub(source, pattern, &amp;#039;&amp;#039;)&lt;br /&gt;
	return count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
endswith&lt;br /&gt;
This function determines whether a string ends with another string.&lt;br /&gt;
]]&lt;br /&gt;
function str.endswith(frame)&lt;br /&gt;
	local args = str._getParameters(frame.args, {&amp;#039;source&amp;#039;, &amp;#039;pattern&amp;#039;})&lt;br /&gt;
	local source = args.source or &amp;#039;&amp;#039;&lt;br /&gt;
	local pattern = args.pattern or &amp;#039;&amp;#039;&lt;br /&gt;
	if pattern == &amp;#039;&amp;#039; then&lt;br /&gt;
		-- All strings end with the empty string.&lt;br /&gt;
		return &amp;quot;yes&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then&lt;br /&gt;
		return &amp;quot;yes&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
join&lt;br /&gt;
&lt;br /&gt;
Join all non empty arguments together; the first argument is the separator.&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|join|sep|one|two|three}}&lt;br /&gt;
]]&lt;br /&gt;
function str.join(frame)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	local sep&lt;br /&gt;
	for _, v in ipairs( frame.args ) do&lt;br /&gt;
		if sep then&lt;br /&gt;
			if v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				table.insert(args, v)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			sep = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat( args, sep or &amp;#039;&amp;#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that populates the argument list given that user may need to use a mix of&lt;br /&gt;
named and unnamed parameters.  This is relevant because named parameters are not&lt;br /&gt;
identical to unnamed parameters due to string trimming, and when dealing with strings&lt;br /&gt;
we sometimes want to either preserve or remove that whitespace depending on the application.&lt;br /&gt;
]]&lt;br /&gt;
function str._getParameters( frame_args, arg_list )&lt;br /&gt;
	local new_args = {}&lt;br /&gt;
	local index = 1&lt;br /&gt;
	local value&lt;br /&gt;
&lt;br /&gt;
	for _, arg in ipairs( arg_list ) do&lt;br /&gt;
		value = frame_args[arg]&lt;br /&gt;
		if value == nil then&lt;br /&gt;
			value = frame_args[index]&lt;br /&gt;
			index = index + 1&lt;br /&gt;
		end&lt;br /&gt;
		new_args[arg] = value&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return new_args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function to handle error messages.&lt;br /&gt;
]]&lt;br /&gt;
function str._error( error_str )&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local error_category = frame.args.error_category or &amp;#039;Errors reported by Module String&amp;#039;&lt;br /&gt;
	local ignore_errors = frame.args.ignore_errors or false&lt;br /&gt;
	local no_category = frame.args.no_category or false&lt;br /&gt;
&lt;br /&gt;
	if str._getBoolean(ignore_errors) then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local error_str = &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;String Module Error: &amp;#039; .. error_str .. &amp;#039;&amp;lt;/strong&amp;gt;&amp;#039;&lt;br /&gt;
	if error_category ~= &amp;#039;&amp;#039; and not str._getBoolean( no_category ) then&lt;br /&gt;
		error_str = &amp;#039;[[Category:&amp;#039; .. error_category .. &amp;#039;]]&amp;#039; .. error_str&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return error_str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper Function to interpret boolean strings&lt;br /&gt;
]]&lt;br /&gt;
function str._getBoolean( boolean_str )&lt;br /&gt;
	local boolean_value&lt;br /&gt;
&lt;br /&gt;
	if type( boolean_str ) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		boolean_str = boolean_str:lower()&lt;br /&gt;
		if boolean_str == &amp;#039;false&amp;#039; or boolean_str == &amp;#039;no&amp;#039; or boolean_str == &amp;#039;0&amp;#039;&lt;br /&gt;
				or boolean_str == &amp;#039;&amp;#039; then&lt;br /&gt;
			boolean_value = false&lt;br /&gt;
		else&lt;br /&gt;
			boolean_value = true&lt;br /&gt;
		end&lt;br /&gt;
	elseif type( boolean_str ) == &amp;#039;boolean&amp;#039; then&lt;br /&gt;
		boolean_value = boolean_str&lt;br /&gt;
	else&lt;br /&gt;
		error( &amp;#039;No boolean value found&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return boolean_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that escapes all pattern characters so that they will be treated&lt;br /&gt;
as plain text.&lt;br /&gt;
]]&lt;br /&gt;
function str._escapePattern( pattern_str )&lt;br /&gt;
	return mw.ustring.gsub( pattern_str, &amp;quot;([%(%)%.%%%+%-%*%?%[%^%$%]])&amp;quot;, &amp;quot;%%%1&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return str&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Sidebar/styles.css&amp;diff=2032&amp;oldid=0</id>
		<title>پودمان:Sidebar/styles.css</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Sidebar/styles.css&amp;diff=2032&amp;oldid=0"/>
		<updated>2026-06-25T09:35:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Sidebar/styles.css&quot; title=&quot;پودمان:Sidebar/styles.css&quot;&gt;پودمان:Sidebar/styles.css&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* {{pp-template}} */&lt;br /&gt;
/* TODO: Invert width design to be &amp;quot;mobile first&amp;quot; */&lt;br /&gt;
.sidebar {&lt;br /&gt;
	/* TODO: Ask if we should have max-width 22em instead */&lt;br /&gt;
	width: 22em;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: left;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	clear: left;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0.5em 1em 1em 0;&lt;br /&gt;
	background: #f8f9fa;&lt;br /&gt;
	border: 1px solid #aaa;&lt;br /&gt;
	padding: 0.2em;&lt;br /&gt;
	border-spacing: 0.4em 0;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	line-height: 1.4em;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	/* Timeless has display: none on .nomobile at mobile resolutions, so we&lt;br /&gt;
	 * unhide it with display: table and let precedence and proximity win.&lt;br /&gt;
	 */&lt;br /&gt;
	display: table; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unfortunately, so does Minerva desktop, except Minerva drops an&lt;br /&gt;
 * !important on the declaration. So we have to be mean for Minerva users.&lt;br /&gt;
 * Mobile removes the element entirely with `wgMFRemovableClasses` in &lt;br /&gt;
 * https://github.com/wikimedia/operations-mediawiki-config/blob/master/&lt;br /&gt;
 wmf-config/InitialiseSettings.php#L16992&lt;br /&gt;
 * which is why displaying it categorically with display: table works.&lt;br /&gt;
 * We don&amp;#039;t really want to expose the generic user in the wild on mobile to have&lt;br /&gt;
 * to deal with sidebars. (Maybe the ones with collapsible lists, so that&lt;br /&gt;
 * might be an improvement. That is blocked on [[:phab:T111565]].)&lt;br /&gt;
 */&lt;br /&gt;
body.skin-minerva .sidebar {&lt;br /&gt;
	display: table !important;&lt;br /&gt;
	/* also, minerva is way too aggressive about other stylings on tables.&lt;br /&gt;
	 * TODO remove when this template gets moved to a div. plans on talk page.&lt;br /&gt;
	 * We always float right on Minerva because that&amp;#039;s a lot of extra CSS&lt;br /&gt;
	 * otherwise. */&lt;br /&gt;
    float: left !important;&lt;br /&gt;
    margin: 0.5em 0 1em 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar a {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-wraplinks a {&lt;br /&gt;
	white-space: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-subgroup {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border-spacing: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO: Investigate whether -left and -none are used. */&lt;br /&gt;
.sidebar-left {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: right;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	clear: right;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0.5em 1em 1em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-none {&lt;br /&gt;
	float: none;&lt;br /&gt;
	clear: both;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin: 0.5em 1em 1em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-outer-title {&lt;br /&gt;
	padding-bottom: 0.2em;&lt;br /&gt;
	font-size: 125%;&lt;br /&gt;
	line-height: 1.2em;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-top-image {&lt;br /&gt;
	padding: 0.4em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-top-caption,&lt;br /&gt;
.sidebar-pretitle-with-top-image,&lt;br /&gt;
.sidebar-caption {&lt;br /&gt;
	padding-top: 0.2em;&lt;br /&gt;
	line-height: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-pretitle {&lt;br /&gt;
	padding-top: 0.4em;&lt;br /&gt;
	line-height: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-title,&lt;br /&gt;
.sidebar-title-with-pretitle {&lt;br /&gt;
	padding: 0.2em 0.4em;&lt;br /&gt;
	font-size: 145%;&lt;br /&gt;
	line-height: 1.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-title-with-pretitle {&lt;br /&gt;
	padding-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-image {&lt;br /&gt;
	padding: 0.2em 0 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-heading {&lt;br /&gt;
	padding: 0.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-content {&lt;br /&gt;
	padding: 0 0.1em 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-content-with-subgroup {&lt;br /&gt;
	padding: 0.1em 0 0.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-above,&lt;br /&gt;
.sidebar-below {&lt;br /&gt;
	padding: 0.3em 0.4em;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-collapse .sidebar-above,&lt;br /&gt;
.sidebar-collapse .sidebar-below {&lt;br /&gt;
	border-top: 1px solid #aaa;&lt;br /&gt;
	border-bottom: 1px solid #aaa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-navbar {&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	font-size: 115%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-collapse .sidebar-navbar {&lt;br /&gt;
	padding-top: 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-collapse .mw-collapsible-toggle {&lt;br /&gt;
	margin-top: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sidebar-list-title {&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	line-height: 1.6em;&lt;br /&gt;
	font-size: 105%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
	/* users have wide latitude to set arbitrary width and margin :(&lt;br /&gt;
	   &amp;quot;Super-specific&amp;quot; selector to prevent overriding this appearance by&lt;br /&gt;
	   lower level sidebars too */&lt;br /&gt;
	body.mediawiki .sidebar {&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		float: none !important; /* Remove when we div based; Minerva is dumb */&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* TODO: We might consider making all links wrap at small resolutions and then&lt;br /&gt;
	 * only introduce nowrap at higher resolutions. Do when we invert the media&lt;br /&gt;
	 * query.&lt;br /&gt;
	 */&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Sidebar/configuration&amp;diff=2029&amp;oldid=0</id>
		<title>پودمان:Sidebar/configuration</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Sidebar/configuration&amp;diff=2029&amp;oldid=0"/>
		<updated>2026-06-25T09:35:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Sidebar/configuration&quot; title=&quot;پودمان:Sidebar/configuration&quot;&gt;پودمان:Sidebar/configuration&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;return {&lt;br /&gt;
	i18n = {&lt;br /&gt;
		child_yes = &amp;#039;yes&amp;#039;,&lt;br /&gt;
		float_none = &amp;#039;none&amp;#039;,&lt;br /&gt;
		float_left = &amp;#039;right&amp;#039;,&lt;br /&gt;
		wrap_true = &amp;#039;true&amp;#039;,&lt;br /&gt;
		navbar_none = &amp;#039;none&amp;#039;,&lt;br /&gt;
		navbar_off = &amp;#039;off&amp;#039;,&lt;br /&gt;
		default_list_title = &amp;#039;فهرست&amp;#039;,&lt;br /&gt;
		title_not_to_add_navbar = &amp;#039;Template:Sidebar&amp;#039;,&lt;br /&gt;
		collapse_title_not_to_add_navbar = &amp;#039;Template:Sidebar with collapsible lists&amp;#039;,&lt;br /&gt;
		templatestyles = &amp;#039;Module:Sidebar/styles.css&amp;#039;,&lt;br /&gt;
		category = {&lt;br /&gt;
			child = &amp;#039;[[رده:صفحه‌هایی که از نوار کناری با پارامتر فرزند استفاده می‌کنند]]&amp;#039;,&lt;br /&gt;
			conversion = &amp;#039;[[رده:نوارهای کناری با سبک نیازمند تبدیل]]&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		pattern = {&lt;br /&gt;
			collapse_sandbox = &amp;#039;/صفحه تمرین&amp;#039;,&lt;br /&gt;
			sandbox = &amp;#039;/صفحه تمرین&amp;#039;,&lt;br /&gt;
			subgroup = &amp;#039;sidebar%-subgroup&amp;#039;,&lt;br /&gt;
			style_conversion = &amp;#039;style$&amp;#039;,&lt;br /&gt;
			uncategorized_conversion_titles = {&lt;br /&gt;
				&amp;#039;/[Ss]andbox&amp;#039;,&lt;br /&gt;
				&amp;#039;/[Tt]estcases&amp;#039;,&lt;br /&gt;
				&amp;#039;/[Dd]oc$&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		class = {&lt;br /&gt;
			sidebar = &amp;#039;sidebar&amp;#039;,&lt;br /&gt;
			subgroup = &amp;#039;sidebar-subgroup&amp;#039;,&lt;br /&gt;
			collapse = &amp;#039;sidebar-collapse&amp;#039;,&lt;br /&gt;
			float_none = &amp;#039;sidebar-none&amp;#039;,&lt;br /&gt;
			float_left = &amp;#039;sidebar-left&amp;#039;,&lt;br /&gt;
			wraplinks = &amp;#039;sidebar-wraplinks&amp;#039;,&lt;br /&gt;
			outer_title = &amp;#039;sidebar-outer-title&amp;#039;,&lt;br /&gt;
			top_image = &amp;#039;sidebar-top-image&amp;#039;,&lt;br /&gt;
			top_caption = &amp;#039;sidebar-top-caption&amp;#039;,&lt;br /&gt;
			pretitle = &amp;#039;sidebar-pretitle&amp;#039;,&lt;br /&gt;
			pretitle_with_top_image = &amp;#039;sidebar-pretitle-with-top-image&amp;#039;,&lt;br /&gt;
			title = &amp;#039;sidebar-title&amp;#039;,&lt;br /&gt;
			title_with_pretitle = &amp;#039;sidebar-title-with-pretitle&amp;#039;,&lt;br /&gt;
			image = &amp;#039;sidebar-image&amp;#039;,&lt;br /&gt;
			caption = &amp;#039;sidebar-caption&amp;#039;,&lt;br /&gt;
			above = &amp;#039;sidebar-above&amp;#039;,&lt;br /&gt;
			heading = &amp;#039;sidebar-heading&amp;#039;,&lt;br /&gt;
			content = &amp;#039;sidebar-content&amp;#039;,&lt;br /&gt;
			content_with_subgroup = &amp;#039;sidebar-content-with-subgroup&amp;#039;,&lt;br /&gt;
			below = &amp;#039;sidebar-below&amp;#039;,&lt;br /&gt;
			navbar = &amp;#039;sidebar-navbar&amp;#039;,&lt;br /&gt;
			list = &amp;#039;sidebar-list&amp;#039;,&lt;br /&gt;
			list_title = &amp;#039;sidebar-list-title&amp;#039;,&lt;br /&gt;
			list_content = &amp;#039;sidebar-list-content&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Sidebar&amp;diff=2026&amp;oldid=0</id>
		<title>پودمان:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Sidebar&amp;diff=2026&amp;oldid=0"/>
		<updated>2026-06-25T09:35:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Sidebar&quot; title=&quot;پودمان:Sidebar&quot;&gt;پودمان:Sidebar&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--&lt;br /&gt;
-- This module implements {{Sidebar}}&lt;br /&gt;
--&lt;br /&gt;
require(&amp;#039;Module:No globals&amp;#039;)&lt;br /&gt;
local cfg = mw.loadData(&amp;#039;Module:Sidebar/configuration&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Categorizes calling templates and modules with a &amp;#039;style&amp;#039; parameter of any sort&lt;br /&gt;
for tracking to convert to TemplateStyles.&lt;br /&gt;
&lt;br /&gt;
TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module.&lt;br /&gt;
TODO would probably want to remove /log and /archive as CS1 does&lt;br /&gt;
]]&lt;br /&gt;
local function categorizeTemplatesWithInlineStyles(args)&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	if title.namespace ~= 10 and title.namespace ~= 828 then return &amp;#039;&amp;#039; end&lt;br /&gt;
	for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do&lt;br /&gt;
		if title.text:match(pattern) then return &amp;#039;&amp;#039; end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for key, _ in pairs(args) do&lt;br /&gt;
		if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == &amp;#039;width&amp;#039; then&lt;br /&gt;
			return cfg.i18n.category.conversion&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
For compatibility with the original {{sidebar with collapsible lists}}&lt;br /&gt;
implementation, which passed some parameters through {{#if}} to trim their&lt;br /&gt;
whitespace. This also triggered the automatic newline behavior.&lt;br /&gt;
]]&lt;br /&gt;
-- See ([[meta:Help:Newlines and spaces#Automatic newline]])&lt;br /&gt;
local function trimAndAddAutomaticNewline(s)&lt;br /&gt;
	s = mw.ustring.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
	if mw.ustring.find(s, &amp;#039;^[#*:;]&amp;#039;) or mw.ustring.find(s, &amp;#039;^{|&amp;#039;) then&lt;br /&gt;
		return &amp;#039;\n&amp;#039; .. s&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Finds whether a sidebar has a subgroup sidebar.&lt;br /&gt;
]]&lt;br /&gt;
local function hasSubgroup(s)&lt;br /&gt;
	if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then&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;
--[[&lt;br /&gt;
Main sidebar function. Takes the frame, args, and an optional collapsibleClass.&lt;br /&gt;
The collapsibleClass is and should be used only for sidebars with collapsible&lt;br /&gt;
lists, as in p.collapsible.&lt;br /&gt;
]]&lt;br /&gt;
function p.sidebar(frame, args, collapsibleClass)&lt;br /&gt;
	if not args then&lt;br /&gt;
		args = getArgs(frame)&lt;br /&gt;
	end&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
	local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes&lt;br /&gt;
&lt;br /&gt;
	root = root:tag(&amp;#039;table&amp;#039;)&lt;br /&gt;
	if not child then&lt;br /&gt;
		root &lt;br /&gt;
			:addClass(cfg.i18n.class.sidebar)&lt;br /&gt;
			-- force collapsibleclass to be sidebar-collapse otherwise output nothing&lt;br /&gt;
			:addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil)&lt;br /&gt;
			:addClass(&amp;#039;nomobile&amp;#039;)&lt;br /&gt;
			:addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil)&lt;br /&gt;
			:addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil)&lt;br /&gt;
			:addClass(args.wraplinks == cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil)&lt;br /&gt;
			:addClass(args.bodyclass or args.class)&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, args.width or nil)&lt;br /&gt;
			:cssText(args.bodystyle or args.style)&lt;br /&gt;
&lt;br /&gt;
		if args.outertitle then&lt;br /&gt;
			root&lt;br /&gt;
				:tag(&amp;#039;caption&amp;#039;)&lt;br /&gt;
					:addClass(cfg.i18n.class.outer_title)&lt;br /&gt;
					:addClass(args.outertitleclass)&lt;br /&gt;
					:cssText(args.outertitlestyle)&lt;br /&gt;
					:wikitext(args.outertitle)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if args.topimage then&lt;br /&gt;
			local imageCell = root:tag(&amp;#039;tr&amp;#039;):tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
			imageCell&lt;br /&gt;
				:addClass(cfg.i18n.class.top_image)&lt;br /&gt;
				:addClass(args.topimageclass)&lt;br /&gt;
				:cssText(args.topimagestyle)&lt;br /&gt;
				:wikitext(args.topimage)&lt;br /&gt;
&lt;br /&gt;
			if args.topcaption then&lt;br /&gt;
				imageCell&lt;br /&gt;
					:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
						:addClass(cfg.i18n.class.top_caption)&lt;br /&gt;
						:cssText(args.topcaptionstyle)&lt;br /&gt;
						:wikitext(args.topcaption)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if args.pretitle then&lt;br /&gt;
			root&lt;br /&gt;
				:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
					:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
						:addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image&lt;br /&gt;
							or cfg.i18n.class.pretitle)&lt;br /&gt;
						:addClass(args.pretitleclass)&lt;br /&gt;
						:cssText(args.basestyle)&lt;br /&gt;
						:cssText(args.pretitlestyle)&lt;br /&gt;
						:wikitext(args.pretitle)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		root&lt;br /&gt;
			:addClass(cfg.i18n.class.subgroup)&lt;br /&gt;
			:addClass(args.bodyclass or args.class)&lt;br /&gt;
			:cssText(args.bodystyle or args.style)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.title then&lt;br /&gt;
		if child then&lt;br /&gt;
			root&lt;br /&gt;
				:wikitext(args.title)&lt;br /&gt;
		else&lt;br /&gt;
			root&lt;br /&gt;
				:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
					:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
						:addClass(args.pretitle and cfg.i18n.class.title_with_pretitle&lt;br /&gt;
							or cfg.i18n.class.title)&lt;br /&gt;
						:addClass(args.titleclass)&lt;br /&gt;
						:cssText(args.basestyle)&lt;br /&gt;
						:cssText(args.titlestyle)&lt;br /&gt;
						:wikitext(args.title)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.image then&lt;br /&gt;
		local imageCell = root:tag(&amp;#039;tr&amp;#039;):tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
		imageCell&lt;br /&gt;
			:addClass(cfg.i18n.class.image)&lt;br /&gt;
			:addClass(args.imageclass)&lt;br /&gt;
			:cssText(args.imagestyle)&lt;br /&gt;
			:wikitext(args.image)&lt;br /&gt;
&lt;br /&gt;
		if args.caption then&lt;br /&gt;
			imageCell&lt;br /&gt;
				:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
					:addClass(cfg.i18n.class.caption)&lt;br /&gt;
					:cssText(args.captionstyle)&lt;br /&gt;
					:wikitext(args.caption)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.above then&lt;br /&gt;
		root&lt;br /&gt;
			:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:addClass(cfg.i18n.class.above)&lt;br /&gt;
					:addClass(args.aboveclass)&lt;br /&gt;
					:cssText(args.abovestyle)&lt;br /&gt;
					:newline() -- newline required for bullet-points to work&lt;br /&gt;
					:wikitext(args.above)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local rowNums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		k = &amp;#039;&amp;#039; .. k&lt;br /&gt;
		local num = k:match(&amp;#039;^heading(%d+)$&amp;#039;) or k:match(&amp;#039;^content(%d+)$&amp;#039;)&lt;br /&gt;
		if num then table.insert(rowNums, tonumber(num)) end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(rowNums)&lt;br /&gt;
	-- remove duplicates from the list (e.g. 3 will be duplicated if both heading3&lt;br /&gt;
	-- and content3 are specified)&lt;br /&gt;
	for i = #rowNums, 1, -1 do&lt;br /&gt;
		if rowNums[i] == rowNums[i - 1] then&lt;br /&gt;
			table.remove(rowNums, i)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for i, num in ipairs(rowNums) do&lt;br /&gt;
		local heading = args[&amp;#039;heading&amp;#039; .. num]&lt;br /&gt;
		if heading then&lt;br /&gt;
			root&lt;br /&gt;
				:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
					:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
						:addClass(cfg.i18n.class.heading)&lt;br /&gt;
						:addClass(args.headingclass)&lt;br /&gt;
						:addClass(args[&amp;#039;heading&amp;#039; .. num .. &amp;#039;class&amp;#039;])&lt;br /&gt;
						:cssText(args.basestyle)&lt;br /&gt;
						:cssText(args.headingstyle)&lt;br /&gt;
						:cssText(args[&amp;#039;heading&amp;#039; .. num .. &amp;#039;style&amp;#039;])&lt;br /&gt;
						:newline()&lt;br /&gt;
						:wikitext(heading)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local content = args[&amp;#039;content&amp;#039; .. num]&lt;br /&gt;
		if content then&lt;br /&gt;
			root&lt;br /&gt;
				:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
					:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
						:addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup&lt;br /&gt;
							or cfg.i18n.class.content)&lt;br /&gt;
						:addClass(args.contentclass)&lt;br /&gt;
						:addClass(args[&amp;#039;content&amp;#039; .. num .. &amp;#039;class&amp;#039;])&lt;br /&gt;
						:cssText(args.contentstyle)&lt;br /&gt;
						:cssText(args[&amp;#039;content&amp;#039; .. num .. &amp;#039;style&amp;#039;])&lt;br /&gt;
						:newline()&lt;br /&gt;
						:wikitext(content)&lt;br /&gt;
						:done()&lt;br /&gt;
					 -- Without a linebreak after the &amp;lt;/td&amp;gt;, a nested list like&lt;br /&gt;
					 -- &amp;quot;* {{hlist| ...}}&amp;quot; doesn&amp;#039;t parse correctly.&lt;br /&gt;
					:newline()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.below then&lt;br /&gt;
		root&lt;br /&gt;
			:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:addClass(cfg.i18n.class.below)&lt;br /&gt;
					:addClass(args.belowclass)&lt;br /&gt;
					:cssText(args.belowstyle)&lt;br /&gt;
					:newline()&lt;br /&gt;
					:wikitext(args.below)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not child then&lt;br /&gt;
		if args.navbar ~= cfg.i18n.navbar_none and args.navbar ~= cfg.i18n.navbar_off and&lt;br /&gt;
			(args.name or frame:getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, &amp;#039;&amp;#039;) ~=&lt;br /&gt;
			cfg.i18n.title_not_to_add_navbar) then&lt;br /&gt;
			root&lt;br /&gt;
				:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
					:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
						:addClass(cfg.i18n.class.navbar)&lt;br /&gt;
						:cssText(args.navbarstyle)&lt;br /&gt;
						:wikitext(require(&amp;#039;Module:Navbar&amp;#039;)._navbar{&lt;br /&gt;
							args.name,&lt;br /&gt;
							mini = 1,&lt;br /&gt;
							fontstyle = args.navbarfontstyle&lt;br /&gt;
						})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local base_templatestyles = frame:extensionTag{&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;, args = { src = cfg.i18n.templatestyles }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local templatestyles = &amp;#039;&amp;#039;&lt;br /&gt;
	if args[&amp;#039;templatestyles&amp;#039;] and args[&amp;#039;templatestyles&amp;#039;] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &amp;#039;templatestyles&amp;#039;, args = { src = args[&amp;#039;templatestyles&amp;#039;] }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local child_templatestyles = &amp;#039;&amp;#039;&lt;br /&gt;
	if args[&amp;#039;child templatestyles&amp;#039;] and args[&amp;#039;child templatestyles&amp;#039;] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		child_templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &amp;#039;templatestyles&amp;#039;, args = { src = args[&amp;#039;child templatestyles&amp;#039;] }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local grandchild_templatestyles = &amp;#039;&amp;#039;&lt;br /&gt;
	if args[&amp;#039;grandchild templatestyles&amp;#039;] and args[&amp;#039;grandchild templatestyles&amp;#039;] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		grandchild_templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &amp;#039;templatestyles&amp;#039;, args = { src = args[&amp;#039;grandchild templatestyles&amp;#039;] }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat({&lt;br /&gt;
		base_templatestyles,&lt;br /&gt;
		templatestyles,&lt;br /&gt;
		child_templatestyles,&lt;br /&gt;
		grandchild_templatestyles,&lt;br /&gt;
		tostring(root),&lt;br /&gt;
		(child and cfg.i18n.category.child or &amp;#039;&amp;#039;),&lt;br /&gt;
		categorizeTemplatesWithInlineStyles(args)&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Main entry point for sidebar with collapsible lists.&lt;br /&gt;
Does the work of creating the collapsible lists themselves and including them&lt;br /&gt;
into the args.&lt;br /&gt;
]]&lt;br /&gt;
function p.collapsible(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	if not args.name and&lt;br /&gt;
		frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, &amp;#039;&amp;#039;) ==&lt;br /&gt;
		cfg.i18n.collapse_title_not_to_add_navbar then&lt;br /&gt;
		args.navbar = cfg.i18n.navbar_none&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local contentArgs = {}&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = string.match(k, &amp;#039;^list(%d+)$&amp;#039;)&lt;br /&gt;
		if num then&lt;br /&gt;
			local expand = args.expanded and&lt;br /&gt;
				(args.expanded == &amp;#039;all&amp;#039; or args.expanded == args[&amp;#039;list&amp;#039; .. num .. &amp;#039;name&amp;#039;])&lt;br /&gt;
			local row = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
			row&lt;br /&gt;
				:addClass(cfg.i18n.class.list)&lt;br /&gt;
				:addClass(&amp;#039;mw-collapsible&amp;#039;)&lt;br /&gt;
				:addClass((not expand) and &amp;#039;mw-collapsed&amp;#039; or nil)&lt;br /&gt;
				:addClass(args[&amp;#039;list&amp;#039; .. num .. &amp;#039;class&amp;#039;])&lt;br /&gt;
				:cssText(args.listframestyle)&lt;br /&gt;
				:cssText(args[&amp;#039;list&amp;#039; .. num .. &amp;#039;framestyle&amp;#039;])&lt;br /&gt;
				:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
					:addClass(cfg.i18n.class.list_title)&lt;br /&gt;
					-- don&amp;#039;t /need/ a listnumtitleclass because you can do&lt;br /&gt;
					-- .templateclass .listnumclass .sidebar-list-title&lt;br /&gt;
					:addClass(args.listtitleclass)&lt;br /&gt;
					:cssText(args.basestyle)&lt;br /&gt;
					:cssText(args.listtitlestyle)&lt;br /&gt;
					:cssText(args[&amp;#039;list&amp;#039; .. num .. &amp;#039;titlestyle&amp;#039;])&lt;br /&gt;
					:wikitext(trimAndAddAutomaticNewline(args[&amp;#039;list&amp;#039; .. num .. &amp;#039;title&amp;#039;]&lt;br /&gt;
						or cfg.i18n.default_list_title))&lt;br /&gt;
					:done()&lt;br /&gt;
				:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
					:addClass(cfg.i18n.class.list_content)&lt;br /&gt;
					:addClass(&amp;#039;mw-collapsible-content&amp;#039;)&lt;br /&gt;
					-- don&amp;#039;t /need/ a listnumstyleclass because you can do&lt;br /&gt;
					-- .templatename .listnumclass .sidebar-list&lt;br /&gt;
					:addClass(args.listclass)&lt;br /&gt;
					:cssText(args.liststyle)&lt;br /&gt;
					:cssText(args[&amp;#039;list&amp;#039; .. num .. &amp;#039;style&amp;#039;])&lt;br /&gt;
					:wikitext(trimAndAddAutomaticNewline(args[&amp;#039;list&amp;#039; .. num]))&lt;br /&gt;
&lt;br /&gt;
			contentArgs[&amp;#039;content&amp;#039; .. num] = tostring(row)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs(contentArgs) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p.sidebar(frame, args, cfg.i18n.class.collapse)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Shortcut/config&amp;diff=2023&amp;oldid=0</id>
		<title>پودمان:Shortcut/config</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Shortcut/config&amp;diff=2023&amp;oldid=0"/>
		<updated>2026-06-25T09:35:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Shortcut/config&quot; title=&quot;پودمان:Shortcut/config&quot;&gt;پودمان:Shortcut/config&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module holds configuration data for [[Module:Shortcut]].&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
&lt;br /&gt;
-- The heading at the top of the shortcut box. It accepts the following parameter:&lt;br /&gt;
-- $1 - the total number of shortcuts. (required)&lt;br /&gt;
[&amp;#039;shortcut-heading&amp;#039;] = &amp;#039;[[ویکی‌پدیا:میانبر|{{PLURAL:$1|میانبر|میانبرها}}]]:&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
-- The heading when |redirect=yes is given. It accepts the following parameter:&lt;br /&gt;
-- $1 - the total number of shortcuts. (required)&lt;br /&gt;
[&amp;#039;redirect-heading&amp;#039;] = &amp;#039;[[ویکی‌پدیا:تغییرمسیر|{{PLURAL:$1|تغییرمسیر|تغییرمسیرها}}]]&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
-- The error message to display when a shortcut is invalid (is not a string, or&lt;br /&gt;
-- is the blank string). It accepts the following parameter:&lt;br /&gt;
-- $1 - the number of the shortcut in the argument list. (required)&lt;br /&gt;
[&amp;#039;invalid-shortcut-error&amp;#039;] = &amp;#039;میانبر #$1 نامعتبر است (میانبرها باید &amp;#039; ..&lt;br /&gt;
	&amp;#039;رشته‌هایی از دست کم یک نویسه باشند)&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
-- The error message to display when no shortcuts or other displayable content&lt;br /&gt;
-- were specified. (required)&lt;br /&gt;
[&amp;#039;no-content-error&amp;#039;] = &amp;#039;خطا: میانبری مشخص نشده‌است و پارامتر &amp;#039; ..&lt;br /&gt;
	mw.text.nowiki(&amp;#039;|msg=&amp;#039;) ..&lt;br /&gt;
	&amp;#039; تنظیم نشده‌است.&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
-- A category to add when the no-content-error message is displayed. (optional)&lt;br /&gt;
[&amp;#039;no-content-error-category&amp;#039;] = &amp;#039;الگو:میانبر بدون پارامتر&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
-- The error category to add if the shortcut listed in the first parameter&lt;br /&gt;
-- doesn&amp;#039;t exist. (optional)&lt;br /&gt;
[&amp;#039;first-parameter-error-category&amp;#039;] = &amp;#039;پارامتر نخست نیازمند اصلاح جعبه میانبر ویکی‌پدیا&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Shortcut&amp;diff=2020&amp;oldid=0</id>
		<title>پودمان:Shortcut</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Shortcut&amp;diff=2020&amp;oldid=0"/>
		<updated>2026-06-25T09:35:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Shortcut&quot; title=&quot;پودمان:Shortcut&quot;&gt;پودمان:Shortcut&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{shortcut}}.&lt;br /&gt;
&lt;br /&gt;
-- Set constants&lt;br /&gt;
local CONFIG_MODULE = &amp;#039;Module:Shortcut/config&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- Load required modules&lt;br /&gt;
local checkType = require(&amp;#039;libraryUtil&amp;#039;).checkType&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function message(msg, ...)&lt;br /&gt;
	return mw.message.newRawMessage(msg, ...):plain()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeCategoryLink(cat)&lt;br /&gt;
	return mw.ustring.format(&amp;#039;[[%s:%s]]&amp;#039;, mw.site.namespaces[14].name, cat)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(shortcuts, options, frame, cfg)&lt;br /&gt;
	checkType(&amp;#039;_main&amp;#039;, 1, shortcuts, &amp;#039;table&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;_main&amp;#039;, 2, options, &amp;#039;table&amp;#039;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	frame = frame or mw.getCurrentFrame()&lt;br /&gt;
	cfg = cfg or mw.loadData(CONFIG_MODULE)&lt;br /&gt;
	local templateMode = (options.template or options[&amp;#039;الگو&amp;#039;]) and (yesno(options.template) or yesno(options[&amp;#039;الگو&amp;#039;]))&lt;br /&gt;
	local redirectMode = (options.redirect or options[&amp;#039;تغییرمسیر&amp;#039;]) and (yesno(options.redirect) or yesno(options[&amp;#039;تغییرمسیر&amp;#039;]))&lt;br /&gt;
	local isCategorized = (not options.category) or (not options[&amp;#039;رده&amp;#039;]) or (yesno(options.category) ~= false) or (yesno(options[&amp;#039;رده&amp;#039;]) ~= false)&lt;br /&gt;
&lt;br /&gt;
	-- Validate shortcuts&lt;br /&gt;
	for i, shortcut in ipairs(shortcuts) do&lt;br /&gt;
		if type(shortcut) ~= &amp;#039;string&amp;#039; or #shortcut &amp;lt; 1 then&lt;br /&gt;
			error(message(cfg[&amp;#039;invalid-shortcut-error&amp;#039;], i), 2)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Make the list items. These are the shortcuts plus any extra lines such&lt;br /&gt;
	-- as options.msg.&lt;br /&gt;
	local listItems = {}&lt;br /&gt;
	for i, shortcut in ipairs(shortcuts) do&lt;br /&gt;
		local templatePath, prefix&lt;br /&gt;
		if templateMode then&lt;br /&gt;
			-- Namespace detection&lt;br /&gt;
			local titleObj = mw.title.new(shortcut, 10)&lt;br /&gt;
			if titleObj.namespace == 10 then&lt;br /&gt;
				templatePath = titleObj.fullText&lt;br /&gt;
			else&lt;br /&gt;
				templatePath = shortcut&lt;br /&gt;
			end&lt;br /&gt;
			prefix = options[&amp;#039;pre&amp;#039; .. i] or options.pre or options[&amp;#039;پیشوند&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		if (options.target or options[&amp;#039;مقصد&amp;#039;]) and (yesno(options.target) or yesno(options[&amp;#039;مقصد&amp;#039;])) then&lt;br /&gt;
			listItems[i] = templateMode&lt;br /&gt;
				and mw.ustring.format(&amp;quot;&amp;amp;#123;&amp;amp;#123;%s[[%s|%s]]&amp;amp;#125;&amp;amp;#125;&amp;quot;, prefix, templatePath, shortcut)&lt;br /&gt;
				or mw.ustring.format(&amp;quot;[[%s]]&amp;quot;, shortcut)&lt;br /&gt;
		else&lt;br /&gt;
			listItems[i] = frame:expandTemplate{&lt;br /&gt;
				title = &amp;#039;تغییرمسیر ممنوع&amp;#039;,&lt;br /&gt;
				args = templateMode and {templatePath, shortcut} or {shortcut, shortcut}&lt;br /&gt;
			}&lt;br /&gt;
			if templateMode then&lt;br /&gt;
				listItems[i] = mw.ustring.format(&amp;quot;&amp;amp;#123;&amp;amp;#123;%s%s&amp;amp;#125;&amp;amp;#125;&amp;quot;, prefix, listItems[i])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(listItems, (options.msg or options[&amp;#039;پیام&amp;#039;]))&lt;br /&gt;
&lt;br /&gt;
	-- Return an error if we have nothing to display&lt;br /&gt;
	if #listItems &amp;lt; 1 then&lt;br /&gt;
		local msg = cfg[&amp;#039;no-content-error&amp;#039;]&lt;br /&gt;
		msg = mw.ustring.format(&amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;%s&amp;lt;/strong&amp;gt;&amp;#039;, msg)&lt;br /&gt;
		if isCategorized and cfg[&amp;#039;no-content-error-category&amp;#039;] then&lt;br /&gt;
			msg = msg .. makeCategoryLink(cfg[&amp;#039;no-content-error-category&amp;#039;])&lt;br /&gt;
		end&lt;br /&gt;
		return msg&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
	root:wikitext(frame:extensionTag{ name = &amp;#039;templatestyles&amp;#039;, args = { src = &amp;#039;میانبر/styles.css&amp;#039;} })&lt;br /&gt;
	-- Anchors&lt;br /&gt;
	local anchorDiv = root&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;module-shortcutanchordiv&amp;#039;)&lt;br /&gt;
	for i, shortcut in ipairs(shortcuts) do&lt;br /&gt;
		local anchor = mw.uri.anchorEncode(shortcut)&lt;br /&gt;
		anchorDiv:tag(&amp;#039;span&amp;#039;):attr(&amp;#039;id&amp;#039;, anchor)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Shortcut heading&lt;br /&gt;
	local shortcutHeading&lt;br /&gt;
	do&lt;br /&gt;
		local nShortcuts = #shortcuts&lt;br /&gt;
		if nShortcuts &amp;gt; 0 then&lt;br /&gt;
			local headingMsg = options[&amp;#039;shortcut-heading&amp;#039;] or&lt;br /&gt;
				redirectMode and cfg[&amp;#039;redirect-heading&amp;#039;] or&lt;br /&gt;
				cfg[&amp;#039;shortcut-heading&amp;#039;]&lt;br /&gt;
			shortcutHeading = message(headingMsg, nShortcuts)&lt;br /&gt;
			shortcutHeading = frame:preprocess(shortcutHeading)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Shortcut box&lt;br /&gt;
	local shortcutList = root&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;module-shortcutboxplain plainlist noprint&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;role&amp;#039;, &amp;#039;note&amp;#039;)&lt;br /&gt;
	if (options.float and (options.float:lower() == &amp;#039;right&amp;#039; or options.float == &amp;#039;راست&amp;#039;)) or (options[&amp;#039;شناور&amp;#039;] and (options[&amp;#039;شناور&amp;#039;]:lower() == &amp;#039;right&amp;#039; or options[&amp;#039;شناور&amp;#039;] == &amp;#039;راست&amp;#039;)) then&lt;br /&gt;
		shortcutList:addClass(&amp;#039;module-shortcutboxright&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if (options.clear and options.clear ~= &amp;#039;&amp;#039;) or (options[&amp;#039;پاک‌کن&amp;#039;] and options[&amp;#039;پاک‌کن&amp;#039;] ~= &amp;#039;&amp;#039;) then&lt;br /&gt;
		shortcutList:css(&amp;#039;clear&amp;#039;, (options.clear or options[&amp;#039;پاک‌کن&amp;#039;]))&lt;br /&gt;
	end&lt;br /&gt;
	if shortcutHeading then&lt;br /&gt;
		shortcutList&lt;br /&gt;
			:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;module-shortcutlist&amp;#039;)&lt;br /&gt;
				:wikitext(shortcutHeading)&lt;br /&gt;
	end&lt;br /&gt;
	local list = shortcutList:tag(&amp;#039;ul&amp;#039;)&lt;br /&gt;
	for i, item in ipairs(listItems) do&lt;br /&gt;
		list:tag(&amp;#039;li&amp;#039;):wikitext(item)&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	-- Separate shortcuts from options&lt;br /&gt;
	local shortcuts, options = {}, {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			shortcuts[k] = v&lt;br /&gt;
		else&lt;br /&gt;
			options[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Compress the shortcut array, which may contain nils.&lt;br /&gt;
	local function compressArray(t)&lt;br /&gt;
		local nums, ret = {}, {}&lt;br /&gt;
		for k in pairs(t) do&lt;br /&gt;
			nums[#nums + 1] = k&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(nums)&lt;br /&gt;
		for i, num in ipairs(nums) do&lt;br /&gt;
			ret[i] = t[num]&lt;br /&gt;
		end&lt;br /&gt;
		return ret&lt;br /&gt;
	end&lt;br /&gt;
	shortcuts = compressArray(shortcuts)&lt;br /&gt;
&lt;br /&gt;
	return p._main(shortcuts, options, frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Set_local_argument_names&amp;diff=2017&amp;oldid=0</id>
		<title>پودمان:Set local argument names</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Set_local_argument_names&amp;diff=2017&amp;oldid=0"/>
		<updated>2026-06-25T09:35:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Set_local_argument_names&quot; title=&quot;پودمان:Set local argument names&quot;&gt;پودمان:Set local argument names&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Intended to set local arguments in args table&lt;br /&gt;
-- Useful for localizing modules and defining args in local language&lt;br /&gt;
&lt;br /&gt;
return function(args_table, args)&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if args_table[v] then args_table[k] = args_table[v] end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:See_also&amp;diff=2014&amp;oldid=0</id>
		<title>پودمان:See also</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:See_also&amp;diff=2014&amp;oldid=0"/>
		<updated>2026-06-25T09:35:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:See_also&quot; title=&quot;پودمان:See also&quot;&gt;پودمان:See also&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
-- This module produces a &amp;quot;See also: a, b and c&amp;quot; link. It implements the&lt;br /&gt;
-- template {{see also}}.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local mHatnote = require(&amp;#039;Module:Hatnote&amp;#039;)&lt;br /&gt;
local mTableTools -- lazily initialise&lt;br /&gt;
local mArguments -- lazily initialise&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.seealso(frame)&lt;br /&gt;
	mTableTools = require(&amp;#039;Module:TableTools&amp;#039;)&lt;br /&gt;
	mArguments = require(&amp;#039;Module:Arguments&amp;#039;)&lt;br /&gt;
	local args = mArguments.getArgs(frame, {parentOnly = true})&lt;br /&gt;
	local pages = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			local numstring = tostring(k)&lt;br /&gt;
			local display = args[&amp;#039;label &amp;#039; .. numstring]&lt;br /&gt;
				or args[&amp;#039;l&amp;#039; .. numstring]&lt;br /&gt;
			local page = {v, display}&lt;br /&gt;
			pages[k] = page&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	pages = mTableTools.compressSparseArray(pages)&lt;br /&gt;
	if not pages[1] then&lt;br /&gt;
		return mHatnote.makeWikitextError(&lt;br /&gt;
			&amp;#039;نام هیچ صفحه‌ای مشخص نشده‌است&amp;#039;,&lt;br /&gt;
			&amp;#039;الگو:همچنین ببینید#خطاها&amp;#039;,&lt;br /&gt;
			args.category&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local options = {&lt;br /&gt;
		altphrase = args.altphrase,&lt;br /&gt;
		selfref = args.selfref&lt;br /&gt;
	}&lt;br /&gt;
	return p._seealso(options, unpack(pages))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._seealso(options, ...)&lt;br /&gt;
	local altphrase = options and options.altphrase or &amp;#039;همچنین ببینید&amp;#039;&lt;br /&gt;
	local links = mHatnote.formatPageTables(...)&lt;br /&gt;
	links = mw.text.listToText(links)&lt;br /&gt;
	local text = altphrase .. &amp;#039;: &amp;#039; .. links&lt;br /&gt;
&lt;br /&gt;
	-- Pass options through.&lt;br /&gt;
	local hnOptions = {}&lt;br /&gt;
	hnOptions.selfref = options.selfref&lt;br /&gt;
	hnOptions.extraclasses = &amp;#039;boilerplate seealso&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	return mHatnote._hatnote(text, hnOptions)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Section_link&amp;diff=2011&amp;oldid=0</id>
		<title>پودمان:Section link</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Section_link&amp;diff=2011&amp;oldid=0"/>
		<updated>2026-06-25T09:35:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Section_link&quot; title=&quot;پودمان:Section link&quot;&gt;پودمان:Section link&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{section link}}.&lt;br /&gt;
require(&amp;#039;Module:No globals&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
local checkType = require(&amp;#039;libraryUtil&amp;#039;).checkType&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function makeSectionLink(page, section, display)&lt;br /&gt;
	display = display or section&lt;br /&gt;
	page = page or &amp;#039;&amp;#039;&lt;br /&gt;
	-- MediaWiki doesn&amp;#039;t allow these in `page`, so only need to do for `section`&lt;br /&gt;
	if type(section) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		section = string.gsub(section, &amp;quot;{&amp;quot;, &amp;quot;&amp;amp;#x7B;&amp;quot;)&lt;br /&gt;
		section = string.gsub(section, &amp;quot;}&amp;quot;, &amp;quot;&amp;amp;#x7D;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&amp;#039;[[%s#%s|%s]]&amp;#039;, page, section, display)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function normalizeTitle(title)&lt;br /&gt;
	title = mw.ustring.gsub(mw.ustring.gsub(title, &amp;quot;&amp;#039;&amp;quot;, &amp;quot;&amp;quot;), &amp;#039;&amp;quot;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	title = mw.ustring.gsub(title, &amp;quot;%b&amp;lt;&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	return mw.title.new(title).prefixedText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(page, sections, options, title)&lt;br /&gt;
	-- Validate input.&lt;br /&gt;
	checkType(&amp;#039;_main&amp;#039;, 1, page, &amp;#039;string&amp;#039;, true)&lt;br /&gt;
	checkType(&amp;#039;_main&amp;#039;, 3, options, &amp;#039;table&amp;#039;, true)&lt;br /&gt;
	if sections == nil then&lt;br /&gt;
		sections = {}&lt;br /&gt;
	elseif type(sections) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		sections = {sections}&lt;br /&gt;
	elseif type(sections) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&amp;quot;type error in argument #2 to &amp;#039;_main&amp;#039; &amp;quot; ..&lt;br /&gt;
			&amp;quot;(string, table or nil expected, got %s)&amp;quot;,&lt;br /&gt;
			type(sections)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	title = title or mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	-- Deal with blank page names elegantly&lt;br /&gt;
	if page and not page:find(&amp;#039;%S&amp;#039;) then&lt;br /&gt;
		page = nil&lt;br /&gt;
		options.nopage = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Make the link(s).&lt;br /&gt;
	local isShowingPage = not options.nopage&lt;br /&gt;
	if #sections &amp;lt;= 1 then&lt;br /&gt;
		local linkPage = page or &amp;#039;&amp;#039;&lt;br /&gt;
		local section = sections[1] or &amp;#039;Notes&amp;#039;&lt;br /&gt;
		local display = &amp;#039;§&amp;amp;nbsp;&amp;#039; .. section&lt;br /&gt;
		if isShowingPage then&lt;br /&gt;
			page = page or title.prefixedText&lt;br /&gt;
			if options.display and options.display ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				if normalizeTitle(options.display) == normalizeTitle(page) then&lt;br /&gt;
					display = options.display .. &amp;#039; &amp;#039; .. display&lt;br /&gt;
				else&lt;br /&gt;
					error(string.format(&lt;br /&gt;
						&amp;#039;Display title &amp;quot;%s&amp;quot; was ignored since it is &amp;#039; ..&lt;br /&gt;
						&amp;quot;not equivalent to the page&amp;#039;s actual title&amp;quot;,&lt;br /&gt;
						options.display&lt;br /&gt;
					), 0)&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				display = page .. &amp;#039; &amp;#039; .. display&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return makeSectionLink(linkPage, section, display)&lt;br /&gt;
	else&lt;br /&gt;
		-- Multiple sections. First, make a list of the links to display.&lt;br /&gt;
		local ret = {}&lt;br /&gt;
		for i, section in ipairs(sections) do&lt;br /&gt;
			ret[i] = makeSectionLink(page, section)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Assemble the list of links into a string with mw.text.listToText.&lt;br /&gt;
		-- We use the default separator for mw.text.listToText, but a custom&lt;br /&gt;
		-- conjunction. There is also a special case conjunction if we only&lt;br /&gt;
		-- have two links.&lt;br /&gt;
		local conjunction&lt;br /&gt;
		if #sections == 2 then&lt;br /&gt;
			conjunction = &amp;#039;&amp;amp;#8203; and &amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			conjunction = &amp;#039;, and &amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		ret = mw.text.listToText(ret, nil, conjunction)&lt;br /&gt;
&lt;br /&gt;
		-- Add the intro text.&lt;br /&gt;
		local intro = &amp;#039;§§&amp;amp;nbsp;&amp;#039;&lt;br /&gt;
		if isShowingPage then&lt;br /&gt;
			intro = (page or title.prefixedText) .. &amp;#039; &amp;#039; .. intro&lt;br /&gt;
		end&lt;br /&gt;
		ret = intro .. ret&lt;br /&gt;
&lt;br /&gt;
		return ret&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
		wrappers = &amp;#039;Template:Section link&amp;#039;,&lt;br /&gt;
		valueFunc = function (key, value)&lt;br /&gt;
			value = value:match(&amp;#039;^%s*(.-)%s*$&amp;#039;) -- Trim whitespace&lt;br /&gt;
			-- Allow blank first parameters, as the wikitext template does this.&lt;br /&gt;
			if value ~= &amp;#039;&amp;#039; or key == 1 then&lt;br /&gt;
				return value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs(args) do													-- replace underscores in the positional parameter values&lt;br /&gt;
		if &amp;#039;number&amp;#039; == type(k) then&lt;br /&gt;
			if not yesno (args[&amp;#039;keep-underscores&amp;#039;]) then						-- unless |keep-underscores=yes&lt;br /&gt;
				args[k] = mw.uri.decode (v, &amp;#039;WIKI&amp;#039;);							-- percent-decode; replace underscores with space characters&lt;br /&gt;
			else&lt;br /&gt;
				args[k] = mw.uri.decode (v, &amp;#039;PATH&amp;#039;);							-- percent-decode; retain underscores&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Sort the arguments.&lt;br /&gt;
	local page&lt;br /&gt;
	local sections, options = {}, {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if k == 1 then&lt;br /&gt;
			-- Doing this in the loop because of a bug in [[Module:Arguments]]&lt;br /&gt;
			-- when using pairs with deleted arguments.&lt;br /&gt;
			page = mw.text.decode(v, true)&lt;br /&gt;
		elseif type(k) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			sections[k] = v&lt;br /&gt;
		else&lt;br /&gt;
			options[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	options.nopage = yesno (options.nopage);									-- make boolean&lt;br /&gt;
	&lt;br /&gt;
	-- Extract section from page, if present&lt;br /&gt;
	if page then&lt;br /&gt;
		local p, s = page:match(&amp;#039;^(.-)#(.*)$&amp;#039;)&lt;br /&gt;
		if p then page, sections[1] = p, s end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Compress the sections array.&lt;br /&gt;
	local function compressArray(t)&lt;br /&gt;
		local nums, ret = {}, {}&lt;br /&gt;
		for num in pairs(t) do&lt;br /&gt;
			nums[#nums + 1] = num&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(nums)&lt;br /&gt;
		for i, num in ipairs(nums) do&lt;br /&gt;
			ret[i] = t[num]&lt;br /&gt;
		end&lt;br /&gt;
		return ret&lt;br /&gt;
	end&lt;br /&gt;
	sections = compressArray(sections)&lt;br /&gt;
&lt;br /&gt;
	return p._main(page, sections, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Reply_to&amp;diff=2008&amp;oldid=0</id>
		<title>پودمان:Reply to</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Reply_to&amp;diff=2008&amp;oldid=0"/>
		<updated>2026-06-25T09:35:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Reply_to&quot; title=&quot;پودمان:Reply to&quot;&gt;پودمان:Reply to&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.replyto(frame)&lt;br /&gt;
	local origArgs = frame:getParent().args&lt;br /&gt;
	local args = {}&lt;br /&gt;
	local maxArg = 1&lt;br /&gt;
	local usernames = 0&lt;br /&gt;
	for k, v in pairs(origArgs) do&lt;br /&gt;
		if type(k) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			if mw.ustring.match(v,&amp;#039;%S&amp;#039;) then&lt;br /&gt;
				if k &amp;gt; maxArg then maxArg = k end&lt;br /&gt;
				usernames = usernames + 1&lt;br /&gt;
				local title = mw.title.new(v)&lt;br /&gt;
				if not title then return &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;خطا در [[الگو:پاسخ به]]: ورودی دارای نویسه‌های ممنوعه است.&amp;lt;/strong&amp;gt;&amp;#039; end&lt;br /&gt;
				args[k] = title.rootText&lt;br /&gt;
			end&lt;br /&gt;
		elseif v == &amp;#039;&amp;#039; and k:sub(0,5) == &amp;#039;label&amp;#039; then&lt;br /&gt;
			args[k] = &amp;#039;&amp;amp;#x200B;&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if usernames &amp;gt; (tonumber(frame.args.max) or 50) then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;خطا در [[الگو:پاسخ به]]: بیش از %s نام تعریف شده‌است.&amp;lt;/strong&amp;gt;&amp;#039;,&lt;br /&gt;
			tostring(frame.args.max or 50)&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		if usernames &amp;lt; 1 then&lt;br /&gt;
			if frame.args.example then args[1] = frame.args.example else return &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;خطا در [[الگو:پاسخ به]]: نام کاربری داده نشده‌است.&amp;lt;/strong&amp;gt;&amp;#039; end&lt;br /&gt;
		end&lt;br /&gt;
		local isfirst = true&lt;br /&gt;
		local outStr = &amp;#039;&amp;#039;&lt;br /&gt;
		for i = 1, maxArg do&lt;br /&gt;
			if args[i] then&lt;br /&gt;
				if isfirst then&lt;br /&gt;
					outStr = string.format(&lt;br /&gt;
						&amp;#039;&amp;lt;span class=&amp;quot;template-ping&amp;quot;&amp;gt;%s[[کاربر:%s|%s]]&amp;#039;,&lt;br /&gt;
						args[&amp;#039;prefix&amp;#039;] or &amp;#039;@&amp;#039;,&lt;br /&gt;
						args[i],&lt;br /&gt;
						(args[&amp;#039;label1&amp;#039;] or args[&amp;#039;label&amp;#039;]) or args[i]&lt;br /&gt;
					)&lt;br /&gt;
 					isfirst = false&lt;br /&gt;
				else&lt;br /&gt;
					if ( i &amp;lt; usernames and (usernames &amp;gt; 2) or ((usernames == 2) and (args[&amp;#039;c&amp;#039;] == &amp;#039;&amp;#039;)) ) then outStr = outStr..&amp;#039;،&amp;amp;rlm;&amp;#039; end&lt;br /&gt;
					if i == maxArg then outStr = outStr..&amp;#039; &amp;#039;..(args[&amp;#039;c&amp;#039;] or &amp;#039;و&amp;#039;) end&lt;br /&gt;
					outStr = string.format(&lt;br /&gt;
						&amp;#039;%s [[کاربر:%s|%s]]&amp;#039;,&lt;br /&gt;
						outStr,&lt;br /&gt;
						args[i],&lt;br /&gt;
						args[&amp;#039;label&amp;#039;..tostring(i)] or args[i]&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		outStr = outStr..(args[&amp;#039;p&amp;#039;] or &amp;#039;: &amp;#039;)..&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
		return outStr&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Redirect_template&amp;diff=2005&amp;oldid=0</id>
		<title>پودمان:Redirect template</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Redirect_template&amp;diff=2005&amp;oldid=0"/>
		<updated>2026-06-25T09:35:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Redirect_template&quot; title=&quot;پودمان:Redirect template&quot;&gt;پودمان:Redirect template&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;Module:No globals&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- key is beginning of arg name. value is table with namespace number and link&lt;br /&gt;
-- alternatively, a function taking the namespace number and returning a validity&lt;br /&gt;
-- can be used&lt;br /&gt;
local namespaceCategories = {&lt;br /&gt;
	all = { function() return true end },&lt;br /&gt;
	main = { 0, &amp;#039;[[wp:mainspace|main]]&amp;#039; },&lt;br /&gt;
	help = { 12, &amp;#039;[[wp:help namespace|help]]&amp;#039; },&lt;br /&gt;
	portal = { 100, &amp;#039;[[wp:portal|portal]]&amp;#039; },&lt;br /&gt;
	talk = { function(n) return n &amp;gt; 0 and n%2 == 1 end, &amp;#039;[[Help:Using talk pages|talk]]&amp;#039; },&lt;br /&gt;
	template = { 10, &amp;#039;[[wp:template namespace|template]]&amp;#039; },&lt;br /&gt;
	wikipedia = { 4, &amp;#039;[[wp:project namespace|Wikipedia project]]&amp;#039; },&lt;br /&gt;
	category = { 14, &amp;#039;[[wp:categorization|category]]&amp;#039; },&lt;br /&gt;
	user = { 2, &amp;#039;[[wp:user pages|user]]&amp;#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- remove whitespaces from beginning and end of args&lt;br /&gt;
local function valueFunc(key, val)&lt;br /&gt;
	if type(val) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		val = val:match(&amp;#039;^%s*(.-)%s*$&amp;#039;)&lt;br /&gt;
		if val == &amp;#039;&amp;#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getPrettyName(args)&lt;br /&gt;
	for k in pairs(namespaceCategories) do&lt;br /&gt;
		if args[k .. &amp;#039; category&amp;#039;] then&lt;br /&gt;
			return string.format(&amp;quot;&amp;#039;&amp;#039;&amp;#039;[[:Category:%s|%s]]&amp;#039;&amp;#039;&amp;#039;: &amp;quot;, args[k .. &amp;#039; category&amp;#039;], args.name)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&amp;quot;&amp;#039;&amp;#039;&amp;#039;%s&amp;#039;&amp;#039;&amp;#039;: &amp;quot;, args.name)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {wrappers = &amp;#039;Template:Redirect template&amp;#039;, valueFunc = valueFunc})&lt;br /&gt;
	local namespace = mw.title.getCurrentTitle().namespace&lt;br /&gt;
&lt;br /&gt;
	--- XXX: this is a HORRIBLE HACK. kill it with fire as soon as https://bugzilla.wikimedia.org/show_bug.cgi?id=12974 is fixed&lt;br /&gt;
	local beCompatibleWithBug12974 = args.info and (args.info:find(&amp;#039;^[:;#*]&amp;#039;, 1) == 1 or args.info:find(&amp;#039;{|&amp;#039;, 1, true) == 1) and &amp;#039;\n&amp;#039; or &amp;#039; &amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	local content = string.format(&amp;#039;\n&amp;lt;div class=&amp;quot;rcat %s&amp;quot;&amp;gt;\n*%sThis is a redirect%s%s.%s%s\n&amp;lt;/div&amp;gt;&amp;#039;,&lt;br /&gt;
		args.id and (&amp;#039;rcat-&amp;#039; .. string.gsub(args.id, &amp;#039; &amp;#039;, &amp;#039;_&amp;#039;)) or &amp;#039;&amp;#039;,&lt;br /&gt;
		args.name and getPrettyName(args) or &amp;#039;&amp;#039;,&lt;br /&gt;
		args.from and (&amp;#039; from &amp;#039; .. args.from) or &amp;#039;&amp;#039;,&lt;br /&gt;
		args.to and (&amp;#039; to &amp;#039; .. args.to) or &amp;#039;&amp;#039;,&lt;br /&gt;
		args.info and beCompatibleWithBug12974 or &amp;#039;&amp;#039;,&lt;br /&gt;
		args.info or &amp;#039;&amp;#039;&lt;br /&gt;
	)&lt;br /&gt;
	&lt;br /&gt;
	for k,v in pairs(namespaceCategories) do&lt;br /&gt;
		if args[k .. &amp;#039; category&amp;#039;] then&lt;br /&gt;
			if type(v[1]) == &amp;#039;function&amp;#039; and v[1](namespace) or v[1] == namespace then&lt;br /&gt;
				content = content .. string.format(&amp;#039;[[Category:%s]]&amp;#039;, args[k .. &amp;#039; category&amp;#039;])&lt;br /&gt;
			elseif args[&amp;#039;other category&amp;#039;] then&lt;br /&gt;
				content = content .. string.format(&amp;#039;[[Category:%s]]&amp;#039;, args[&amp;#039;other category&amp;#039;])&lt;br /&gt;
			else&lt;br /&gt;
				content = content .. frame:expandTemplate{title = &amp;#039;Incorrect redirect template&amp;#039;, args = {v[2]}}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if namespace == 0 then&lt;br /&gt;
		local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
		if yesno(args.printworthy) == true then&lt;br /&gt;
			return content .. &amp;#039;[[Category:Printworthy redirects]]&amp;#039;&lt;br /&gt;
		elseif yesno(args.printworthy) == false then&lt;br /&gt;
			return content .. &amp;#039;[[Category:Unprintworthy redirects]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return content&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Redirect_hatnote&amp;diff=2002&amp;oldid=0</id>
		<title>پودمان:Redirect hatnote</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Redirect_hatnote&amp;diff=2002&amp;oldid=0"/>
		<updated>2026-06-25T09:35:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Redirect_hatnote&quot; title=&quot;پودمان:Redirect hatnote&quot;&gt;پودمان:Redirect hatnote&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
-- This module produces a &amp;quot;redirect&amp;quot; hatnote. It looks like this:&lt;br /&gt;
-- &amp;#039;&amp;quot;X&amp;quot; redirects here. For other uses, see Y.&amp;#039;&lt;br /&gt;
-- It implements the {{redirect}} template.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local mHatnote = require(&amp;#039;Module:Hatnote&amp;#039;)&lt;br /&gt;
local mHatList = require(&amp;#039;Module:Hatnote list&amp;#039;)&lt;br /&gt;
local mArguments --lazily initialize&lt;br /&gt;
local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local checkTypeMulti = libraryUtil.checkTypeMulti&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function getTitle(...)&lt;br /&gt;
	local success, titleObj = pcall(mw.title.new, ...)&lt;br /&gt;
	if success then&lt;br /&gt;
		return titleObj&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.redirect(frame)&lt;br /&gt;
	mArguments = require(&amp;#039;Module:Arguments&amp;#039;)&lt;br /&gt;
	local args = mArguments.getArgs(frame, {parentOnly=true})&lt;br /&gt;
	--Get number of redirects&lt;br /&gt;
	local numRedirects = tonumber(frame.args[1]) or 1&lt;br /&gt;
	-- Create the options table.&lt;br /&gt;
	local options = {}&lt;br /&gt;
	options.selfref = args.selfref&lt;br /&gt;
	return p._redirect(args, numRedirects, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._redirect(args, numRedirects, options, currentTitle, redirectTitle, targetTitle)&lt;br /&gt;
	-- Validate the input. Don&amp;#039;t bother checking currentTitle, redirectTitle or&lt;br /&gt;
	-- targetTitle, as they are only used in testing.&lt;br /&gt;
	checkType(&amp;#039;_redirect&amp;#039;, 1, args, &amp;#039;table&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;_redirect&amp;#039;, 2, numRedirects, &amp;#039;number&amp;#039;, true)&lt;br /&gt;
	numRedirects = numRedirects or 1&lt;br /&gt;
	checkType(&amp;#039;_redirect&amp;#039;, 3, options, &amp;#039;table&amp;#039;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	currentTitle = currentTitle or mw.title.getCurrentTitle()&lt;br /&gt;
	-- Get the table of redirects&lt;br /&gt;
	local redirect = {}&lt;br /&gt;
	for i = 1, numRedirects do&lt;br /&gt;
		-- Return an error if a redirect parameter is missing.&lt;br /&gt;
		if not args[i] then&lt;br /&gt;
			return mHatnote.makeWikitextError(&lt;br /&gt;
				&amp;#039;missing redirect parameter&amp;#039;,&lt;br /&gt;
				&amp;#039;Template:Redirect#Errors&amp;#039;,&lt;br /&gt;
				args.category&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
		redirect[i] = args[i]&lt;br /&gt;
	end&lt;br /&gt;
	-- Generate the text.&lt;br /&gt;
	local formattedRedirect = {}&lt;br /&gt;
	for k,v in pairs(redirect) do&lt;br /&gt;
		formattedRedirect[k] = &amp;#039;«&amp;#039; .. v .. &amp;#039;»&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	local text = {&lt;br /&gt;
		 mHatList.andList(formattedRedirect) .. &amp;#039; &amp;#039; .. (#redirect == 1 and &amp;#039;به اینجا تغییرمسیر دارد.&amp;#039; or &amp;#039;به اینجا تغییرمسیر دارند.&amp;#039;),&lt;br /&gt;
		mHatList._forSee(args, #redirect + 1, {title = redirect[1]})&lt;br /&gt;
	}&lt;br /&gt;
	text = table.concat(text, &amp;#039; &amp;#039;)&lt;br /&gt;
	-- Functionality for adding categories	&lt;br /&gt;
	local categoryTable = {}&lt;br /&gt;
	function addCategory(cat)&lt;br /&gt;
		if cat and cat ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			-- Add by index to avoid duplicates&lt;br /&gt;
			categoryTable[string.format(&amp;#039;[[رده:%s]]&amp;#039;, cat)] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	--Generate tracking categories&lt;br /&gt;
	local mhOptions = {}&lt;br /&gt;
	for k,v in pairs(redirect) do&lt;br /&gt;
		-- We don&amp;#039;t need a tracking category if the template invocation has been&lt;br /&gt;
		-- copied directly from the docs, or if we aren&amp;#039;t in main- or category-space.&lt;br /&gt;
		if not v:find(&amp;#039;^(REDIRECT|تغییر_?مسیر)%d*$&amp;#039;) and v ~= &amp;#039;TERM&amp;#039; -- &lt;br /&gt;
			and currentTitle.namespace == 0 or currentTitle.namespace == 14&lt;br /&gt;
		then&lt;br /&gt;
			redirectTitle = redirectTitle or getTitle(v)&lt;br /&gt;
			if not redirectTitle or not redirectTitle.exists then&lt;br /&gt;
				addCategory(&amp;#039;Missing redirects&amp;#039;)&lt;br /&gt;
			elseif not redirectTitle.isRedirect then&lt;br /&gt;
				addCategory(&amp;#039;تغییرمسیرهای گم‌شده&amp;#039;)&lt;br /&gt;
			else&lt;br /&gt;
				local mRedirect = require(&amp;#039;Module:Redirect&amp;#039;)&lt;br /&gt;
				local target = mRedirect.getTarget(redirectTitle)&lt;br /&gt;
				targetTitle = targetTitle or target and getTitle(target)&lt;br /&gt;
				if targetTitle and targetTitle ~= currentTitle then&lt;br /&gt;
					addCategory(&amp;#039;تغییرمسیرهای گم‌شده&amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Generate the options to pass to [[Module:Hatnote]].&lt;br /&gt;
		if currentTitle.namespace == 0 and not mhOptions.selfref&lt;br /&gt;
			and redirectTitle and redirectTitle.namespace ~= 0&lt;br /&gt;
		then&lt;br /&gt;
			-- We are on a mainspace page, and the hatnote starts with something&lt;br /&gt;
			-- like &amp;quot;Wikipedia:Foo redirects here&amp;quot;, so automatically label it as&lt;br /&gt;
			-- a self-reference.&lt;br /&gt;
			mhOptions.selfref = true&lt;br /&gt;
		else&lt;br /&gt;
			mhOptions.selfref = options.selfref&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	--concatenate all the categories&lt;br /&gt;
	local category = &amp;#039;&amp;#039;&lt;br /&gt;
	for k,v in pairs(categoryTable) do&lt;br /&gt;
		category = category .. k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mHatnote._hatnote(text, mhOptions) .. category&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Redirect&amp;diff=1999&amp;oldid=0</id>
		<title>پودمان:Redirect</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Redirect&amp;diff=1999&amp;oldid=0"/>
		<updated>2026-06-25T09:35:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Redirect&quot; title=&quot;پودمان:Redirect&quot;&gt;پودمان:Redirect&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module provides functions for getting the target of a redirect page.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Gets a mw.title object, using pcall to avoid generating script errors if we&lt;br /&gt;
-- are over the expensive function count limit (among other possible causes).&lt;br /&gt;
local function getTitle(...)&lt;br /&gt;
	local success, titleObj = pcall(mw.title.new, ...)&lt;br /&gt;
	if success then&lt;br /&gt;
		return titleObj&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Gets the name of a page that a redirect leads to, or nil if it isn&amp;#039;t a&lt;br /&gt;
-- redirect.&lt;br /&gt;
function p.getTargetFromText(text)&lt;br /&gt;
	return string.match(&lt;br /&gt;
		text,&lt;br /&gt;
		&amp;quot;^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)%]%]&amp;quot;&lt;br /&gt;
	) or string.match(&lt;br /&gt;
		text,&lt;br /&gt;
		&amp;quot;^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Gets the target of a redirect. If the page specified is not a redirect,&lt;br /&gt;
-- returns nil.&lt;br /&gt;
function p.getTarget(page, fulltext)&lt;br /&gt;
	-- Get the title object. Both page names and title objects are allowed&lt;br /&gt;
	-- as input.&lt;br /&gt;
	local titleObj&lt;br /&gt;
	if type(page) == &amp;#039;string&amp;#039; or type(page) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		titleObj = getTitle(page)&lt;br /&gt;
	elseif type(page) == &amp;#039;table&amp;#039; and type(page.getContent) == &amp;#039;function&amp;#039; then&lt;br /&gt;
		titleObj = page&lt;br /&gt;
	else&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&amp;quot;bad argument #1 to &amp;#039;getTarget&amp;#039;&amp;quot;&lt;br /&gt;
				.. &amp;quot; (string, number, or title object expected, got %s)&amp;quot;,&lt;br /&gt;
			type(page)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
	if not titleObj or not titleObj.isRedirect then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Find the target by using string matching on the page content.&lt;br /&gt;
	local target = p.getTargetFromText(titleObj:getContent() or &amp;quot;&amp;quot;)&lt;br /&gt;
	if target then&lt;br /&gt;
		local targetTitle = getTitle(target)&lt;br /&gt;
		if targetTitle then&lt;br /&gt;
			if fulltext then&lt;br /&gt;
				return targetTitle.fullText&lt;br /&gt;
			else&lt;br /&gt;
				return targetTitle.prefixedText&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- The page is a redirect, but matching failed. This indicates a bug in&lt;br /&gt;
		-- the redirect matching pattern, so throw an error.&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&amp;#039;could not parse redirect on page &amp;quot;%s&amp;quot;&amp;#039;,&lt;br /&gt;
			fulltext and titleObj.fullText or titleObj.prefixedText&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- Given a single page name determines what page it redirects to and returns the&lt;br /&gt;
-- target page name, or the passed page name when not a redirect. The passed&lt;br /&gt;
-- page name can be given as plain text or as a page link.&lt;br /&gt;
-- &lt;br /&gt;
-- Returns page name as plain text, or when the bracket parameter is given, as a&lt;br /&gt;
-- page link. Returns an error message when page does not exist or the redirect&lt;br /&gt;
-- target cannot be determined for some reason.&lt;br /&gt;
--]]&lt;br /&gt;
function p.luaMain(rname, bracket, fulltext)&lt;br /&gt;
	if type(rname) ~= &amp;quot;string&amp;quot; or not rname:find(&amp;quot;%S&amp;quot;) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	bracket = bracket and &amp;quot;[[%s]]&amp;quot; or &amp;quot;%s&amp;quot;&lt;br /&gt;
	rname = rname:match(&amp;quot;%[%[(.+)%]%]&amp;quot;) or rname&lt;br /&gt;
	local target = p.getTarget(rname, fulltext)&lt;br /&gt;
	local ret = target or rname&lt;br /&gt;
	ret = getTitle(ret)&lt;br /&gt;
	if ret then&lt;br /&gt;
		if fulltext then&lt;br /&gt;
			ret = ret.fullText&lt;br /&gt;
		else&lt;br /&gt;
			ret = ret.prefixedText&lt;br /&gt;
		end&lt;br /&gt;
		return bracket:format(ret)&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Provides access to the luaMain function from wikitext.&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {frameOnly = true})&lt;br /&gt;
	return p.luaMain(args[1], args.bracket, args.fulltext) or &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns true if the specified page is a redirect, and false otherwise.&lt;br /&gt;
function p.luaIsRedirect(page)&lt;br /&gt;
	local titleObj = getTitle(page)&lt;br /&gt;
	if not titleObj then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	if titleObj.isRedirect then&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;
-- Provides access to the luaIsRedirect function from wikitext, returning &amp;#039;yes&amp;#039;&lt;br /&gt;
-- if the specified page is a redirect, and the blank string otherwise.&lt;br /&gt;
function p.isRedirect(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {frameOnly = true})&lt;br /&gt;
	if p.luaIsRedirect(args[1]) then&lt;br /&gt;
		return &amp;#039;yes&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Protection_banner/config&amp;diff=1996&amp;oldid=0</id>
		<title>پودمان:Protection banner/config</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Protection_banner/config&amp;diff=1996&amp;oldid=0"/>
		<updated>2026-06-25T09:35:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Protection_banner/config&quot; title=&quot;پودمان:Protection banner/config&quot;&gt;پودمان:Protection banner/config&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;a href=&quot;https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Protection_banner/config&amp;amp;diff=1996&quot;&gt;نمایش تغییرات&lt;/a&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Protection_banner&amp;diff=1993&amp;oldid=0</id>
		<title>پودمان:Protection banner</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Protection_banner&amp;diff=1993&amp;oldid=0"/>
		<updated>2026-06-25T09:35:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Protection_banner&quot; title=&quot;پودمان:Protection banner&quot;&gt;پودمان:Protection banner&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{pp-meta}} and its daughter templates such as&lt;br /&gt;
-- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}.&lt;br /&gt;
-- بخش‌هایی از این پودمان برای فارسی‌سازی بهتر تغییریافته است. لطفاً هنگام به‌روزرسانی دقت کنید.&lt;br /&gt;
&lt;br /&gt;
-- Initialise necessary modules.&lt;br /&gt;
require(&amp;#039;Module:No globals&amp;#039;)&lt;br /&gt;
local converter = require(&amp;quot;Module:Numeral converter&amp;quot;).convert&lt;br /&gt;
local makeFileLink = require(&amp;#039;Module:File link&amp;#039;)._main&lt;br /&gt;
local effectiveProtectionLevel = require(&amp;#039;Module:Effective protection level&amp;#039;)._main&lt;br /&gt;
local effectiveProtectionExpiry = require(&amp;#039;Module:Effective protection expiry&amp;#039;)._main&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- Lazily initialise modules and objects we don&amp;#039;t always need.&lt;br /&gt;
local getArgs, makeMessageBox, lang&lt;br /&gt;
&lt;br /&gt;
-- Set constants.&lt;br /&gt;
local CONFIG_MODULE = &amp;#039;Module:Protection banner/config&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- چون ممکنه نام ماه میلادی رو به فارسی کاربران بنویسند من این تابع رو تعریف کردم که به انگلیسی برگرداند تا خطای تاریخ نامعتبر ندهد.&lt;br /&gt;
local function replacePersianGreMonthName(frame)&lt;br /&gt;
	getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local greMonth = {&amp;#039;January&amp;#039;, &amp;#039;February&amp;#039;, &amp;#039;March&amp;#039;, &amp;#039;April&amp;#039;, &amp;#039;May&amp;#039;, &amp;#039;June&amp;#039;, &amp;#039;July&amp;#039;, &amp;#039;August&amp;#039;, &amp;#039;September&amp;#039;, &amp;#039;October&amp;#039;, &amp;#039;November&amp;#039;, &amp;#039;December&amp;#039;}&lt;br /&gt;
	local perGreMonth = {&amp;#039;ژانویه&amp;#039;, &amp;#039;فوریه&amp;#039;, &amp;#039;مارس&amp;#039;, &amp;#039;آوریل&amp;#039;, &amp;#039;مه&amp;#039;, &amp;#039;ژوئن&amp;#039;, &amp;#039;ژوئیه&amp;#039;, &amp;#039;اوت&amp;#039;, &amp;#039;سپتامبر&amp;#039;, &amp;#039;اکتبر&amp;#039;, &amp;#039;نوامبر&amp;#039;, &amp;#039;دسامبر&amp;#039;}&lt;br /&gt;
	for k, v in ipairs(perGreMonth) do&lt;br /&gt;
		args[1] = mw.ustring.gsub(args[1], v, greMonth[k])&lt;br /&gt;
	end&lt;br /&gt;
	return converter(&amp;quot;en&amp;quot;, args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- از آنجا که تاریخ‌ها به صورت انگلیسی به پودمان داده می‌شوند، از mw.getLanguage(&amp;#039;en&amp;#039;) استفاده شده‌است&lt;br /&gt;
-- و خروجی formatDate() از آبجکت زبان مربوطه با فرمت xi انگلیسی است.&lt;br /&gt;
-- برای تبدیل نام انگلیسی ماه‌های فارسی به نوشتهٔ فارسی از این تابع استفاده می‌شود.&lt;br /&gt;
local function replacePersianMonthName(str)&lt;br /&gt;
	local engMonth = {&amp;#039;Farvardin&amp;#039;, &amp;#039;Ordibehesht&amp;#039;, &amp;#039;Khordad&amp;#039;, &amp;#039;Tir&amp;#039;, &amp;#039;Mordad&amp;#039;, &amp;#039;Shahrivar&amp;#039;, &amp;#039;Mehr&amp;#039;, &amp;#039;Aban&amp;#039;, &amp;#039;Azar&amp;#039;, &amp;#039;Dey&amp;#039;, &amp;#039;Bahman&amp;#039;, &amp;#039;Esfand&amp;#039;}&lt;br /&gt;
	local faMonth = {&amp;#039;فروردین&amp;#039;, &amp;#039;اردیبهشت&amp;#039;, &amp;#039;خرداد&amp;#039;, &amp;#039;تیر&amp;#039;, &amp;#039;مرداد&amp;#039;, &amp;#039;شهریور&amp;#039;, &amp;#039;مهر&amp;#039;, &amp;#039;آبان&amp;#039;, &amp;#039;آذر&amp;#039;, &amp;#039;دی&amp;#039;, &amp;#039;بهمن&amp;#039;, &amp;#039;اسفند&amp;#039;}&lt;br /&gt;
	for k, v in ipairs(engMonth) do&lt;br /&gt;
		str = mw.ustring.gsub(str, v, faMonth[k])&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeCategoryLink(cat, sort)&lt;br /&gt;
	if cat then&lt;br /&gt;
		return mw.ustring.format(&lt;br /&gt;
			&amp;#039;[[%s:%s|%s]]&amp;#039;,&lt;br /&gt;
			mw.site.namespaces[14].name,&lt;br /&gt;
			cat,&lt;br /&gt;
			sort&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Validation function for the expiry and the protection date&lt;br /&gt;
local function validateDate(dateString, dateType)&lt;br /&gt;
	if not lang then&lt;br /&gt;
		-- در خط زیر جای mw.language.getContentLanguage() از mw.getLanguage(&amp;#039;en&amp;#039;) استفاده کردم.&lt;br /&gt;
		lang = mw.getLanguage(&amp;#039;en&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local success, result = pcall(lang.formatDate, lang, &amp;#039;U&amp;#039;, converter(&amp;#039;en&amp;#039;, dateString))&lt;br /&gt;
	if success then&lt;br /&gt;
		result = tonumber(result)&lt;br /&gt;
		if result then&lt;br /&gt;
			return result&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	error(mw.ustring.format(&lt;br /&gt;
		&amp;#039;%s نامعتبر: %s&amp;#039;,&lt;br /&gt;
		dateType,&lt;br /&gt;
		tostring(dateString)&lt;br /&gt;
	), 4)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeFullUrl(page, query, display)&lt;br /&gt;
	return mw.ustring.format(&lt;br /&gt;
		&amp;#039;[%s %s]&amp;#039;,&lt;br /&gt;
		tostring(mw.uri.fullUrl(page, query)),&lt;br /&gt;
		display&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Given a directed graph formatted as node -&amp;gt; table of direct successors,&lt;br /&gt;
-- get a table of all nodes reachable from a given node (though always&lt;br /&gt;
-- including the given node).&lt;br /&gt;
local function getReachableNodes(graph, start)&lt;br /&gt;
	local toWalk, retval = {[start] = true}, {}&lt;br /&gt;
	while true do&lt;br /&gt;
		-- Can&amp;#039;t use pairs() since we&amp;#039;re adding and removing things as we&amp;#039;re iterating&lt;br /&gt;
		local k = next(toWalk) -- This always gets the &amp;quot;first&amp;quot; key&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return retval&lt;br /&gt;
		end&lt;br /&gt;
		toWalk[k] = nil&lt;br /&gt;
		retval[k] = true&lt;br /&gt;
		for _,v in ipairs(graph[k]) do&lt;br /&gt;
			if not retval[v] then&lt;br /&gt;
				toWalk[v] = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Protection = {}&lt;br /&gt;
Protection.__index = Protection&lt;br /&gt;
&lt;br /&gt;
Protection.supportedActions = {&lt;br /&gt;
	edit = true,&lt;br /&gt;
	move = true,&lt;br /&gt;
	autoreview = true,&lt;br /&gt;
	upload = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Protection.bannerConfigFields = {&lt;br /&gt;
	&amp;#039;text&amp;#039;,&lt;br /&gt;
	&amp;#039;explanation&amp;#039;,&lt;br /&gt;
	&amp;#039;tooltip&amp;#039;,&lt;br /&gt;
	&amp;#039;alt&amp;#039;,&lt;br /&gt;
	&amp;#039;link&amp;#039;,&lt;br /&gt;
	&amp;#039;image&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Protection.new(args, cfg, title)&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	obj._cfg = cfg&lt;br /&gt;
	obj.title = title or mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	-- Set action&lt;br /&gt;
	if not args.action then&lt;br /&gt;
		obj.action = &amp;#039;edit&amp;#039;&lt;br /&gt;
	elseif Protection.supportedActions[args.action] then&lt;br /&gt;
		obj.action = args.action&lt;br /&gt;
	else&lt;br /&gt;
		error(mw.ustring.format(&lt;br /&gt;
			&amp;#039;اقدام نامعتبر: %s&amp;#039;,&lt;br /&gt;
			tostring(args.action)&lt;br /&gt;
		), 3)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set level&lt;br /&gt;
	obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title)&lt;br /&gt;
	if not obj.level or (obj.action == &amp;#039;move&amp;#039; and obj.level == &amp;#039;autoconfirmed&amp;#039;) then&lt;br /&gt;
		-- Users need to be autoconfirmed to move pages anyway, so treat&lt;br /&gt;
		-- semi-move-protected pages as unprotected.&lt;br /&gt;
		obj.level = &amp;#039;*&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set expiry&lt;br /&gt;
	local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title)&lt;br /&gt;
	if effectiveExpiry == &amp;#039;infinity&amp;#039; then&lt;br /&gt;
		obj.expiry = &amp;#039;indef&amp;#039;&lt;br /&gt;
	elseif effectiveExpiry ~= &amp;#039;unknown&amp;#039; then&lt;br /&gt;
		obj.expiry = validateDate(effectiveExpiry, &amp;#039;تاریخ انقضا&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set reason&lt;br /&gt;
	if args[1] then&lt;br /&gt;
		obj.reason = mw.ustring.lower(args[1])&lt;br /&gt;
		if obj.reason:find(&amp;#039;|&amp;#039;) then&lt;br /&gt;
			error(&amp;#039;دلایل نمی‌تواند شامل نویسه خط عمودی («|») باشد&amp;#039;, 3)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set protection date&lt;br /&gt;
	if args.date then&lt;br /&gt;
		obj.protectionDate = validateDate(args.date, &amp;#039;تاریخ حفاظت&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Set banner config&lt;br /&gt;
	do&lt;br /&gt;
		obj.bannerConfig = {}&lt;br /&gt;
		local configTables = {}&lt;br /&gt;
		if cfg.banners[obj.action] then&lt;br /&gt;
			configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason]&lt;br /&gt;
		end&lt;br /&gt;
		if cfg.defaultBanners[obj.action] then&lt;br /&gt;
			configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level]&lt;br /&gt;
			configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default&lt;br /&gt;
		end&lt;br /&gt;
		configTables[#configTables + 1] = cfg.masterBanner&lt;br /&gt;
		for i, field in ipairs(Protection.bannerConfigFields) do&lt;br /&gt;
			for j, t in ipairs(configTables) do&lt;br /&gt;
				if t[field] then&lt;br /&gt;
					obj.bannerConfig[field] = t[field]&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return setmetatable(obj, Protection)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isProtected()&lt;br /&gt;
	return self.level ~= &amp;#039;*&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isTemporary()&lt;br /&gt;
	return type(self.expiry) == &amp;#039;number&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:makeProtectionCategory()&lt;br /&gt;
	local cfg = self._cfg&lt;br /&gt;
	local title = self.title&lt;br /&gt;
	&lt;br /&gt;
	-- Exit if the page is not protected.&lt;br /&gt;
	if not self:isProtected() then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Get the expiry key fragment.&lt;br /&gt;
	local expiryFragment&lt;br /&gt;
	if self.expiry == &amp;#039;indef&amp;#039; then&lt;br /&gt;
		expiryFragment = self.expiry&lt;br /&gt;
	elseif type(self.expiry) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		expiryFragment = &amp;#039;temp&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get the namespace key fragment.&lt;br /&gt;
	local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace]&lt;br /&gt;
	if not namespaceFragment and title.namespace % 2 == 1 then&lt;br /&gt;
			namespaceFragment = &amp;#039;talk&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	-- Define the order that key fragments are tested in. This is done with an&lt;br /&gt;
	-- array of tables containing the value to be tested, along with its&lt;br /&gt;
	-- position in the cfg.protectionCategories table.&lt;br /&gt;
	local order = {&lt;br /&gt;
		{val = expiryFragment,    keypos = 1},&lt;br /&gt;
		{val = namespaceFragment, keypos = 2},&lt;br /&gt;
		{val = self.reason,       keypos = 3},&lt;br /&gt;
		{val = self.level,        keypos = 4},&lt;br /&gt;
		{val = self.action,       keypos = 5}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- The old protection templates used an ad-hoc protection category system,&lt;br /&gt;
	-- with some templates prioritising namespaces in their categories, and&lt;br /&gt;
	-- others prioritising the protection reason. To emulate this in this module&lt;br /&gt;
	-- we use the config table cfg.reasonsWithNamespacePriority to set the&lt;br /&gt;
	-- reasons for which namespaces have priority over protection reason.&lt;br /&gt;
	-- If we are dealing with one of those reasons, move the namespace table to&lt;br /&gt;
	-- the end of the order table, i.e. give it highest priority. If not, the&lt;br /&gt;
	-- reason should have highest priority, so move that to the end of the table&lt;br /&gt;
	-- instead.&lt;br /&gt;
	--]]&lt;br /&gt;
	table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3))&lt;br /&gt;
 &lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define the attempt order. Inactive subtables (subtables with nil &amp;quot;value&amp;quot;&lt;br /&gt;
	-- fields) are moved to the end, where they will later be given the key&lt;br /&gt;
	-- &amp;quot;all&amp;quot;. This is to cut down on the number of table lookups in&lt;br /&gt;
	-- cfg.protectionCategories, which grows exponentially with the number of&lt;br /&gt;
	-- non-nil keys. We keep track of the number of active subtables with the&lt;br /&gt;
	-- noActive parameter.&lt;br /&gt;
	--]]&lt;br /&gt;
	local noActive, attemptOrder&lt;br /&gt;
	do&lt;br /&gt;
		local active, inactive = {}, {}&lt;br /&gt;
		for i, t in ipairs(order) do&lt;br /&gt;
			if t.val then&lt;br /&gt;
				active[#active + 1] = t&lt;br /&gt;
			else&lt;br /&gt;
				inactive[#inactive + 1] = t&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		noActive = #active&lt;br /&gt;
		attemptOrder = active&lt;br /&gt;
		for i, t in ipairs(inactive) do&lt;br /&gt;
			attemptOrder[#attemptOrder + 1] = t&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	--[[&lt;br /&gt;
	-- Check increasingly generic key combinations until we find a match. If a&lt;br /&gt;
	-- specific category exists for the combination of key fragments we are&lt;br /&gt;
	-- given, that match will be found first. If not, we keep trying different&lt;br /&gt;
	-- key fragment combinations until we match using the key&lt;br /&gt;
	-- &amp;quot;all-all-all-all-all&amp;quot;.&lt;br /&gt;
	--&lt;br /&gt;
	-- To generate the keys, we index the key subtables using a binary matrix&lt;br /&gt;
	-- with indexes i and j. j is only calculated up to the number of active&lt;br /&gt;
	-- subtables. For example, if there were three active subtables, the matrix&lt;br /&gt;
	-- would look like this, with 0 corresponding to the key fragment &amp;quot;all&amp;quot;, and&lt;br /&gt;
	-- 1 corresponding to other key fragments.&lt;br /&gt;
	-- &lt;br /&gt;
	--   j 1  2  3&lt;br /&gt;
	-- i  &lt;br /&gt;
	-- 1   1  1  1&lt;br /&gt;
	-- 2   0  1  1&lt;br /&gt;
	-- 3   1  0  1&lt;br /&gt;
	-- 4   0  0  1&lt;br /&gt;
	-- 5   1  1  0&lt;br /&gt;
	-- 6   0  1  0&lt;br /&gt;
	-- 7   1  0  0&lt;br /&gt;
	-- 8   0  0  0&lt;br /&gt;
	-- &lt;br /&gt;
	-- Values of j higher than the number of active subtables are set&lt;br /&gt;
	-- to the string &amp;quot;all&amp;quot;.&lt;br /&gt;
	--&lt;br /&gt;
	-- A key for cfg.protectionCategories is constructed for each value of i.&lt;br /&gt;
	-- The position of the value in the key is determined by the keypos field in&lt;br /&gt;
	-- each subtable.&lt;br /&gt;
	--]]&lt;br /&gt;
	local cats = cfg.protectionCategories&lt;br /&gt;
	for i = 1, 2^noActive do&lt;br /&gt;
		local key = {}&lt;br /&gt;
		for j, t in ipairs(attemptOrder) do&lt;br /&gt;
			if j &amp;gt; noActive then&lt;br /&gt;
				key[t.keypos] = &amp;#039;all&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				local quotient = i / 2 ^ (j - 1)&lt;br /&gt;
				quotient = math.ceil(quotient)&lt;br /&gt;
				if quotient % 2 == 1 then&lt;br /&gt;
					key[t.keypos] = t.val&lt;br /&gt;
				else&lt;br /&gt;
					key[t.keypos] = &amp;#039;all&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		key = table.concat(key, &amp;#039;|&amp;#039;)&lt;br /&gt;
		local attempt = cats[key]&lt;br /&gt;
		if attempt then&lt;br /&gt;
			return makeCategoryLink(attempt, title.text)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isIncorrect()&lt;br /&gt;
	local expiry = self.expiry&lt;br /&gt;
	return not self:isProtected()&lt;br /&gt;
		or type(expiry) == &amp;#039;number&amp;#039; and expiry &amp;lt; os.time()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isTemplateProtectedNonTemplate()&lt;br /&gt;
	local action, namespace = self.action, self.title.namespace&lt;br /&gt;
	return self.level == &amp;#039;templateeditor&amp;#039;&lt;br /&gt;
		and (&lt;br /&gt;
			(action ~= &amp;#039;edit&amp;#039; and action ~= &amp;#039;move&amp;#039;)&lt;br /&gt;
			or (namespace ~= 10 and namespace ~= 828)&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:makeCategoryLinks()&lt;br /&gt;
	local msg = self._cfg.msg&lt;br /&gt;
	local ret = { self:makeProtectionCategory() }&lt;br /&gt;
	if self:isIncorrect() then&lt;br /&gt;
		ret[#ret + 1] = makeCategoryLink(&lt;br /&gt;
			msg[&amp;#039;tracking-category-incorrect&amp;#039;],&lt;br /&gt;
			self.title.text&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	if self:isTemplateProtectedNonTemplate() then&lt;br /&gt;
		ret[#ret + 1] = makeCategoryLink(&lt;br /&gt;
			msg[&amp;#039;tracking-category-template&amp;#039;],&lt;br /&gt;
			self.title.text&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Blurb class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Blurb = {}&lt;br /&gt;
Blurb.__index = Blurb&lt;br /&gt;
&lt;br /&gt;
Blurb.bannerTextFields = {&lt;br /&gt;
	text = true,&lt;br /&gt;
	explanation = true,&lt;br /&gt;
	tooltip = true,&lt;br /&gt;
	alt = true,&lt;br /&gt;
	link = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Blurb.new(protectionObj, args, cfg)&lt;br /&gt;
	return setmetatable({&lt;br /&gt;
		_cfg = cfg,&lt;br /&gt;
		_protectionObj = protectionObj,&lt;br /&gt;
		_args = args&lt;br /&gt;
	}, Blurb)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Private methods --&lt;br /&gt;
&lt;br /&gt;
function Blurb:_formatDate(num)&lt;br /&gt;
	-- Formats a Unix timestamp into dd Month, YYYY format.&lt;br /&gt;
	-- در خط زیر جای mw.language.getContentLanguage() از mw.getLanguage(&amp;#039;en&amp;#039;) استفاده کردم.&lt;br /&gt;
	lang = lang or mw.getLanguage(&amp;#039;en&amp;#039;)&lt;br /&gt;
	local success, date = pcall(&lt;br /&gt;
		lang.formatDate,&lt;br /&gt;
		lang,&lt;br /&gt;
		self._cfg.msg[&amp;#039;expiry-date-format&amp;#039;] or &amp;#039;xij xiF xiY&amp;#039;, -- The &amp;#039;xi&amp;#039; prefix is the prefix for displaying Iranian time&lt;br /&gt;
		&amp;#039;@&amp;#039; .. replacePersianGreMonthName{converter(&amp;#039;en&amp;#039;, tostring(num))}&lt;br /&gt;
	)&lt;br /&gt;
	if success then&lt;br /&gt;
		return date&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_getExpandedMessage(msgKey)&lt;br /&gt;
	return self:_substituteParameters(self._cfg.msg[msgKey])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_substituteParameters(msg)&lt;br /&gt;
	if not self._params then&lt;br /&gt;
		local parameterFuncs = {}&lt;br /&gt;
&lt;br /&gt;
		parameterFuncs.CURRENTVERSION     = self._makeCurrentVersionParameter&lt;br /&gt;
		parameterFuncs.EDITREQUEST        = self._makeEditRequestParameter&lt;br /&gt;
		parameterFuncs.EXPIRY             = self._makeExpiryParameter&lt;br /&gt;
		parameterFuncs.EXPLANATIONBLURB   = self._makeExplanationBlurbParameter&lt;br /&gt;
		parameterFuncs.IMAGELINK          = self._makeImageLinkParameter&lt;br /&gt;
		parameterFuncs.INTROBLURB         = self._makeIntroBlurbParameter&lt;br /&gt;
		parameterFuncs.INTROFRAGMENT      = self._makeIntroFragmentParameter&lt;br /&gt;
		parameterFuncs.PAGETYPE           = self._makePagetypeParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONBLURB    = self._makeProtectionBlurbParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONDATE     = self._makeProtectionDateParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONLEVEL    = self._makeProtectionLevelParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONLOG      = self._makeProtectionLogParameter&lt;br /&gt;
		parameterFuncs.TALKPAGE           = self._makeTalkPageParameter&lt;br /&gt;
		parameterFuncs.TOOLTIPBLURB       = self._makeTooltipBlurbParameter&lt;br /&gt;
		parameterFuncs.TOOLTIPFRAGMENT    = self._makeTooltipFragmentParameter&lt;br /&gt;
		parameterFuncs.VANDAL             = self._makeVandalTemplateParameter&lt;br /&gt;
		&lt;br /&gt;
		self._params = setmetatable({}, {&lt;br /&gt;
			__index = function (t, k)&lt;br /&gt;
				local param&lt;br /&gt;
				if parameterFuncs[k] then&lt;br /&gt;
					param = parameterFuncs[k](self)&lt;br /&gt;
				end&lt;br /&gt;
				param = param or &amp;#039;&amp;#039;&lt;br /&gt;
				t[k] = param&lt;br /&gt;
				return param&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	msg = msg:gsub(&amp;#039;${(%u+)}&amp;#039;, self._params)&lt;br /&gt;
	return msg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeCurrentVersionParameter()&lt;br /&gt;
	-- A link to the page history or the move log, depending on the kind of&lt;br /&gt;
	-- protection.&lt;br /&gt;
	local pagename = self._protectionObj.title.prefixedText&lt;br /&gt;
	if self._protectionObj.action == &amp;#039;move&amp;#039; then&lt;br /&gt;
		-- We need the move log link.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			&amp;#039;ویژه:سیاهه‌ها&amp;#039;,&lt;br /&gt;
			{type = &amp;#039;move&amp;#039;, page = pagename},&lt;br /&gt;
			self:_getExpandedMessage(&amp;#039;current-version-move-display&amp;#039;)&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		-- We need the history link.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			pagename,&lt;br /&gt;
			{action = &amp;#039;history&amp;#039;},&lt;br /&gt;
			self:_getExpandedMessage(&amp;#039;current-version-edit-display&amp;#039;)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeEditRequestParameter()&lt;br /&gt;
	local mEditRequest = require(&amp;#039;Module:Submit an edit request&amp;#039;)&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	&lt;br /&gt;
	-- Get the edit request type.&lt;br /&gt;
	local requestType&lt;br /&gt;
	if action == &amp;#039;edit&amp;#039; then&lt;br /&gt;
		if level == &amp;#039;autoconfirmed&amp;#039; then&lt;br /&gt;
			requestType = &amp;#039;semi&amp;#039;&lt;br /&gt;
		elseif level == &amp;#039;extendedconfirmed&amp;#039; then&lt;br /&gt;
			requestType = &amp;#039;extended&amp;#039;&lt;br /&gt;
		elseif level == &amp;#039;templateeditor&amp;#039; then&lt;br /&gt;
			requestType = &amp;#039;template&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	requestType = requestType or &amp;#039;full&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	-- Get the display value.&lt;br /&gt;
	local display = self:_getExpandedMessage(&amp;#039;edit-request-display&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	return mEditRequest._link{type = requestType, display = display}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeExpiryParameter()&lt;br /&gt;
	local expiry = self._protectionObj.expiry&lt;br /&gt;
	if type(expiry) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		return self:_formatDate(expiry)&lt;br /&gt;
	else&lt;br /&gt;
		return expiry&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeExplanationBlurbParameter()&lt;br /&gt;
	-- Cover special cases first.&lt;br /&gt;
	if self._protectionObj.title.namespace == 8 then&lt;br /&gt;
		-- MediaWiki namespace&lt;br /&gt;
		return self:_getExpandedMessage(&amp;#039;explanation-blurb-nounprotect&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get explanation blurb table keys&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local talkKey = self._protectionObj.title.isTalkPage and &amp;#039;talk&amp;#039; or &amp;#039;subject&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- Find the message in the explanation blurb table and substitute any&lt;br /&gt;
	-- parameters.&lt;br /&gt;
	local explanations = self._cfg.explanationBlurbs&lt;br /&gt;
	local msg&lt;br /&gt;
	if explanations[action][level] and explanations[action][level][talkKey] then&lt;br /&gt;
		msg = explanations[action][level][talkKey]&lt;br /&gt;
	elseif explanations[action][level] and explanations[action][level].default then&lt;br /&gt;
		msg = explanations[action][level].default&lt;br /&gt;
	elseif explanations[action].default and explanations[action].default[talkKey] then&lt;br /&gt;
		msg = explanations[action].default[talkKey]&lt;br /&gt;
	elseif explanations[action].default and explanations[action].default.default then&lt;br /&gt;
		msg = explanations[action].default.default&lt;br /&gt;
	else&lt;br /&gt;
		error(mw.ustring.format(&lt;br /&gt;
			&amp;#039;نمی‌توان explanation blurb را برای عمل «%s»، سطح «%s» و کلید بحث «%s» پیدا کرد&amp;#039;,&lt;br /&gt;
			action,&lt;br /&gt;
			level,&lt;br /&gt;
			talkKey&lt;br /&gt;
		), 8)&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeImageLinkParameter()&lt;br /&gt;
	local imageLinks = self._cfg.imageLinks&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if imageLinks[action][level] then&lt;br /&gt;
		msg = imageLinks[action][level]&lt;br /&gt;
	elseif imageLinks[action].default then&lt;br /&gt;
		msg = imageLinks[action].default&lt;br /&gt;
	else&lt;br /&gt;
		msg = imageLinks.edit.default&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeIntroBlurbParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return converter(&amp;#039;fa&amp;#039;, replacePersianMonthName(self:_getExpandedMessage(&amp;#039;intro-blurb-expiry&amp;#039;)))&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&amp;#039;intro-blurb-noexpiry&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeIntroFragmentParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return converter(&amp;#039;fa&amp;#039;, replacePersianMonthName(self:_getExpandedMessage(&amp;#039;intro-fragment-expiry&amp;#039;)))&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&amp;#039;intro-fragment-noexpiry&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makePagetypeParameter()&lt;br /&gt;
	local pagetypes = self._cfg.pagetypes&lt;br /&gt;
	return pagetypes[self._protectionObj.title.namespace]&lt;br /&gt;
		or pagetypes.default&lt;br /&gt;
		or error(&amp;#039;هیچ نوع صفحه پیش‌فرضی تعریف نشده‌است&amp;#039;, 8)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionBlurbParameter()&lt;br /&gt;
	local protectionBlurbs = self._cfg.protectionBlurbs&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if protectionBlurbs[action][level] then&lt;br /&gt;
		msg = protectionBlurbs[action][level]&lt;br /&gt;
	elseif protectionBlurbs[action].default then&lt;br /&gt;
		msg = protectionBlurbs[action].default&lt;br /&gt;
	elseif protectionBlurbs.edit.default then&lt;br /&gt;
		msg = protectionBlurbs.edit.default&lt;br /&gt;
	else&lt;br /&gt;
		error(&amp;#039;هیچ blurb حفاظتی برای protectionBlurbs.edit.default تعریف نشده‌است&amp;#039;, 8)&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionDateParameter()&lt;br /&gt;
	local protectionDate = self._protectionObj.protectionDate&lt;br /&gt;
	if type(protectionDate) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		return self:_formatDate(protectionDate)&lt;br /&gt;
	else&lt;br /&gt;
		return protectionDate&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionLevelParameter()&lt;br /&gt;
	local protectionLevels = self._cfg.protectionLevels&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if protectionLevels[action][level] then&lt;br /&gt;
		msg = protectionLevels[action][level]&lt;br /&gt;
	elseif protectionLevels[action].default then&lt;br /&gt;
		msg = protectionLevels[action].default&lt;br /&gt;
	elseif protectionLevels.edit.default then&lt;br /&gt;
		msg = protectionLevels.edit.default&lt;br /&gt;
	else&lt;br /&gt;
		error(&amp;#039;هیچ سطح حفاظتی برای protectionLevels.edit.default تعریف نشده‌است&amp;#039;, 8)&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionLogParameter()&lt;br /&gt;
	local pagename = self._protectionObj.title.prefixedText&lt;br /&gt;
	if self._protectionObj.action == &amp;#039;autoreview&amp;#039; then&lt;br /&gt;
		-- We need the pending changes log.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			&amp;#039;ویژه:سیاهه‌ها&amp;#039;,&lt;br /&gt;
			{type = &amp;#039;stable&amp;#039;, page = pagename},&lt;br /&gt;
			self:_getExpandedMessage(&amp;#039;pc-log-display&amp;#039;)&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		-- We need the protection log.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			&amp;#039;ویژه:سیاهه‌ها&amp;#039;,&lt;br /&gt;
			{type = &amp;#039;protect&amp;#039;, page = pagename},&lt;br /&gt;
			self:_getExpandedMessage(&amp;#039;protection-log-display&amp;#039;)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTalkPageParameter()&lt;br /&gt;
	return mw.ustring.format(&lt;br /&gt;
		&amp;#039;[[%s:%s#%s|%s]]&amp;#039;,&lt;br /&gt;
		mw.site.namespaces[self._protectionObj.title.namespace].talk.name,&lt;br /&gt;
		self._protectionObj.title.text,&lt;br /&gt;
		self._args.section or &amp;#039;top&amp;#039;,&lt;br /&gt;
		self:_getExpandedMessage(&amp;#039;talk-page-link-display&amp;#039;)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTooltipBlurbParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return converter(&amp;#039;fa&amp;#039;, replacePersianMonthName(self:_getExpandedMessage(&amp;#039;tooltip-blurb-expiry&amp;#039;)))&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&amp;#039;tooltip-blurb-noexpiry&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTooltipFragmentParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return converter(&amp;#039;fa&amp;#039;, replacePersianMonthName(self:_getExpandedMessage(&amp;#039;tooltip-fragment-expiry&amp;#039;)))&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&amp;#039;tooltip-fragment-noexpiry&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeVandalTemplateParameter()&lt;br /&gt;
	return require(&amp;#039;Module:Vandal-m&amp;#039;)._main{&lt;br /&gt;
		self._args.user or self._protectionObj.title.baseText&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Public methods --&lt;br /&gt;
&lt;br /&gt;
function Blurb:makeBannerText(key)&lt;br /&gt;
	-- Validate input.&lt;br /&gt;
	if not key or not Blurb.bannerTextFields[key] then&lt;br /&gt;
		error(mw.ustring.format(&lt;br /&gt;
			&amp;#039;«%s» زمینه پیکربندی بنر معتبری نیست&amp;#039;,&lt;br /&gt;
			tostring(key)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Generate the text.&lt;br /&gt;
	local msg = self._protectionObj.bannerConfig[key]&lt;br /&gt;
	if type(msg) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		return self:_substituteParameters(msg)&lt;br /&gt;
	elseif type(msg) == &amp;#039;function&amp;#039; then&lt;br /&gt;
		msg = msg(self._protectionObj, self._args)&lt;br /&gt;
		if type(msg) ~= &amp;#039;string&amp;#039; then&lt;br /&gt;
			error(mw.ustring.format(&lt;br /&gt;
				&amp;#039;خروجی نامناسب از تابع پیکربندی بنر همراه کلید &amp;quot;%s&amp;quot;&amp;#039;&lt;br /&gt;
					.. &amp;#039; (رشته انتظار می‌رود، %s داده شده‌است)&amp;#039;,&lt;br /&gt;
				tostring(key),&lt;br /&gt;
				type(msg)&lt;br /&gt;
			), 4)&lt;br /&gt;
		end&lt;br /&gt;
		return self:_substituteParameters(msg)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- BannerTemplate class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local BannerTemplate = {}&lt;br /&gt;
BannerTemplate.__index = BannerTemplate&lt;br /&gt;
&lt;br /&gt;
function BannerTemplate.new(protectionObj, cfg)&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	obj._cfg = cfg&lt;br /&gt;
&lt;br /&gt;
	-- Set the image filename.&lt;br /&gt;
	local imageFilename = protectionObj.bannerConfig.image&lt;br /&gt;
	if imageFilename then&lt;br /&gt;
		obj._imageFilename = imageFilename&lt;br /&gt;
	else&lt;br /&gt;
		-- If an image filename isn&amp;#039;t specified explicitly in the banner config,&lt;br /&gt;
		-- generate it from the protection status and the namespace.&lt;br /&gt;
		local action = protectionObj.action&lt;br /&gt;
		local level = protectionObj.level&lt;br /&gt;
		local namespace = protectionObj.title.namespace&lt;br /&gt;
		local reason = protectionObj.reason&lt;br /&gt;
		&lt;br /&gt;
		-- Deal with special cases first.&lt;br /&gt;
		if (&lt;br /&gt;
			namespace == 10&lt;br /&gt;
			or namespace == 828&lt;br /&gt;
			or reason and obj._cfg.indefImageReasons[reason]&lt;br /&gt;
			)&lt;br /&gt;
			and action == &amp;#039;edit&amp;#039;&lt;br /&gt;
			and level == &amp;#039;sysop&amp;#039;&lt;br /&gt;
			and not protectionObj:isTemporary()&lt;br /&gt;
		then&lt;br /&gt;
			-- Fully protected modules and templates get the special red &amp;quot;indef&amp;quot;&lt;br /&gt;
			-- padlock.&lt;br /&gt;
			obj._imageFilename = obj._cfg.msg[&amp;#039;image-filename-indef&amp;#039;]&lt;br /&gt;
		else&lt;br /&gt;
			-- Deal with regular protection types.&lt;br /&gt;
			local images = obj._cfg.images&lt;br /&gt;
			if images[action] then&lt;br /&gt;
				if images[action][level] then&lt;br /&gt;
					obj._imageFilename = images[action][level]&lt;br /&gt;
				elseif images[action].default then&lt;br /&gt;
					obj._imageFilename = images[action].default&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return setmetatable(obj, BannerTemplate)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function BannerTemplate:renderImage()&lt;br /&gt;
	local filename = self._imageFilename&lt;br /&gt;
		or self._cfg.msg[&amp;#039;image-filename-default&amp;#039;]&lt;br /&gt;
		or &amp;#039;Transparent.gif&amp;#039;&lt;br /&gt;
	return makeFileLink{&lt;br /&gt;
		file = filename,&lt;br /&gt;
		size = (self.imageWidth or 20) .. &amp;#039;px&amp;#039;,&lt;br /&gt;
		alt = self._imageAlt,&lt;br /&gt;
		link = self._imageLink,&lt;br /&gt;
		caption = self.imageCaption&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Banner class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Banner = setmetatable({}, BannerTemplate)&lt;br /&gt;
Banner.__index = Banner&lt;br /&gt;
&lt;br /&gt;
function Banner.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
	local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn&amp;#039;t need the blurb.&lt;br /&gt;
	obj.imageWidth = 40&lt;br /&gt;
	obj.imageCaption = blurbObj:makeBannerText(&amp;#039;alt&amp;#039;) -- Large banners use the alt text for the tooltip.&lt;br /&gt;
	obj._reasonText = blurbObj:makeBannerText(&amp;#039;text&amp;#039;)&lt;br /&gt;
	obj._explanationText = blurbObj:makeBannerText(&amp;#039;explanation&amp;#039;)&lt;br /&gt;
	obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing.&lt;br /&gt;
	return setmetatable(obj, Banner)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Banner:__tostring()&lt;br /&gt;
	-- Renders the banner.&lt;br /&gt;
	makeMessageBox = makeMessageBox or require(&amp;#039;Module:Message box&amp;#039;).main&lt;br /&gt;
	local reasonText = self._reasonText or error(&amp;#039;هیچ متن دلیلی تعیین نشده‌است&amp;#039;, 2)&lt;br /&gt;
	local explanationText = self._explanationText&lt;br /&gt;
	local mbargs = {&lt;br /&gt;
		page = self._page,&lt;br /&gt;
		type = &amp;#039;protection&amp;#039;,&lt;br /&gt;
		image = self:renderImage(),&lt;br /&gt;
		text = mw.ustring.format(&lt;br /&gt;
			&amp;quot;&amp;#039;&amp;#039;&amp;#039;%s&amp;#039;&amp;#039;&amp;#039;%s&amp;quot;,&lt;br /&gt;
			reasonText,&lt;br /&gt;
			explanationText and &amp;#039;&amp;lt;br /&amp;gt;&amp;#039; .. explanationText or &amp;#039;&amp;#039;&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	return makeMessageBox(&amp;#039;mbox&amp;#039;, mbargs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Padlock class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Padlock = setmetatable({}, BannerTemplate)&lt;br /&gt;
Padlock.__index = Padlock&lt;br /&gt;
&lt;br /&gt;
function Padlock.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
	local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn&amp;#039;t need the blurb.&lt;br /&gt;
	obj.imageWidth = 20&lt;br /&gt;
	obj.imageCaption = blurbObj:makeBannerText(&amp;#039;tooltip&amp;#039;)&lt;br /&gt;
	obj._imageAlt = blurbObj:makeBannerText(&amp;#039;alt&amp;#039;)&lt;br /&gt;
	obj._imageLink = blurbObj:makeBannerText(&amp;#039;link&amp;#039;)&lt;br /&gt;
	obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action]&lt;br /&gt;
		or cfg.padlockIndicatorNames.default&lt;br /&gt;
		or &amp;#039;pp-default&amp;#039;&lt;br /&gt;
	return setmetatable(obj, Padlock)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Padlock:__tostring()&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	-- The nowiki tag helps prevent whitespace at the top of articles.&lt;br /&gt;
	return frame:extensionTag{name = &amp;#039;nowiki&amp;#039;} .. frame:extensionTag{&lt;br /&gt;
		name = &amp;#039;indicator&amp;#039;,&lt;br /&gt;
		args = {name = self._indicatorName},&lt;br /&gt;
		content = self:renderImage()&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses()&lt;br /&gt;
	-- This is used for testing purposes.&lt;br /&gt;
	return {&lt;br /&gt;
		Protection = Protection,&lt;br /&gt;
		Blurb = Blurb,&lt;br /&gt;
		BannerTemplate = BannerTemplate,&lt;br /&gt;
		Banner = Banner,&lt;br /&gt;
		Padlock = Padlock,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args, cfg, title)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	&lt;br /&gt;
	-- local args&lt;br /&gt;
	if args[&amp;#039;کوچک&amp;#039;] then args.small = args[&amp;#039;کوچک&amp;#039;] end&lt;br /&gt;
	if args[&amp;#039;عمل&amp;#039;] then args.action = args[&amp;#039;عمل&amp;#039;] end&lt;br /&gt;
	if args[&amp;#039;تاریخ&amp;#039;] then args.date = args[&amp;#039;تاریخ&amp;#039;] end&lt;br /&gt;
	if args[&amp;#039;کاربر&amp;#039;] then args.user = args[&amp;#039;کاربر&amp;#039;] end&lt;br /&gt;
	if args[&amp;#039;بخش&amp;#039;] then args.section = args[&amp;#039;بخش&amp;#039;] end&lt;br /&gt;
	if args[&amp;#039;رده&amp;#039;] then args.category = args[&amp;#039;رده&amp;#039;] end&lt;br /&gt;
	if args[&amp;#039;فقط رده&amp;#039;] then args.catonly = args[&amp;#039;فقط رده&amp;#039;] end&lt;br /&gt;
	&lt;br /&gt;
	cfg = cfg or require(CONFIG_MODULE)&lt;br /&gt;
&lt;br /&gt;
	local protectionObj = Protection.new(args, cfg, title)&lt;br /&gt;
&lt;br /&gt;
	local ret = {}&lt;br /&gt;
&lt;br /&gt;
	-- If a page&amp;#039;s edit protection is equally or more restrictive than its&lt;br /&gt;
	-- protection from some other action, then don&amp;#039;t bother displaying anything&lt;br /&gt;
	-- for the other action (except categories).&lt;br /&gt;
	if protectionObj.action == &amp;#039;edit&amp;#039; or&lt;br /&gt;
		args.demolevel or&lt;br /&gt;
		not getReachableNodes(&lt;br /&gt;
			cfg.hierarchy,&lt;br /&gt;
			protectionObj.level&lt;br /&gt;
		)[effectiveProtectionLevel(&amp;#039;edit&amp;#039;, protectionObj.title)]&lt;br /&gt;
	then&lt;br /&gt;
		-- Initialise the blurb object&lt;br /&gt;
		local blurbObj = Blurb.new(protectionObj, args, cfg)&lt;br /&gt;
	&lt;br /&gt;
		-- Render the banner&lt;br /&gt;
		if protectionObj:isProtected() then&lt;br /&gt;
			ret[#ret + 1] = tostring(&lt;br /&gt;
				(yesno(args.small) and Padlock or Banner)&lt;br /&gt;
				.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the categories&lt;br /&gt;
	if yesno(args.category) ~= false then&lt;br /&gt;
		ret[#ret + 1] = protectionObj:makeCategoryLinks()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(ret)	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame, cfg)&lt;br /&gt;
	cfg = cfg or require(CONFIG_MODULE)&lt;br /&gt;
&lt;br /&gt;
	-- Find default args, if any.&lt;br /&gt;
	local parent = frame.getParent and frame:getParent()&lt;br /&gt;
	local defaultArgs = parent and cfg.wrappers[mw.ustring.gsub(parent:getTitle(), &amp;#039;/تمرین$&amp;#039;, &amp;#039;&amp;#039;)]&lt;br /&gt;
&lt;br /&gt;
	-- Find user args, and use the parent frame if we are being called from a&lt;br /&gt;
	-- wrapper template.&lt;br /&gt;
	getArgs = getArgs or require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	local userArgs = getArgs(frame, {&lt;br /&gt;
		parentOnly = defaultArgs,&lt;br /&gt;
		frameOnly = not defaultArgs&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	-- Build the args table. User-specified args overwrite default args.&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(defaultArgs or {}) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(userArgs) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args, cfg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Parameter_names_example&amp;diff=1990&amp;oldid=0</id>
		<title>پودمان:Parameter names example</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Parameter_names_example&amp;diff=1990&amp;oldid=0"/>
		<updated>2026-06-25T09:35:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Parameter_names_example&quot; title=&quot;پودمان:Parameter names example&quot;&gt;پودمان:Parameter names example&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{parameter names example}}.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function makeParam(s)&lt;br /&gt;
	local lb = &amp;#039;&amp;amp;#123;&amp;#039;&lt;br /&gt;
	local rb = &amp;#039;&amp;amp;#125;&amp;#039;&lt;br /&gt;
	return lb:rep(3) .. s .. rb:rep(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function italicize(s)&lt;br /&gt;
	return &amp;quot;&amp;#039;&amp;#039;&amp;quot; .. s .. &amp;quot;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function plain(s)&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args, frame)&lt;br /&gt;
	-- Find how we want to format the arguments to the template.&lt;br /&gt;
	local formatFunc&lt;br /&gt;
	if args._display == &amp;#039;italics&amp;#039; or args._display == &amp;#039;italic&amp;#039; then&lt;br /&gt;
		formatFunc = italicize&lt;br /&gt;
	elseif args._display == &amp;#039;plain&amp;#039; then&lt;br /&gt;
		formatFunc = plain&lt;br /&gt;
	else&lt;br /&gt;
		formatFunc = makeParam&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Build the table of template arguments.&lt;br /&gt;
	local targs = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			targs[v] = formatFunc(v)&lt;br /&gt;
		elseif not k:find(&amp;#039;^_&amp;#039;) then&lt;br /&gt;
			targs[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	targs[&amp;#039;nocat&amp;#039;] = &amp;#039;yes&amp;#039;;&lt;br /&gt;
	targs[&amp;#039;categories&amp;#039;] = &amp;#039;no&amp;#039;;&lt;br /&gt;
	targs[&amp;#039;demo&amp;#039;] = &amp;#039;yes&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	-- Find the template name.&lt;br /&gt;
	local template&lt;br /&gt;
	if args._template then&lt;br /&gt;
		template = args._template&lt;br /&gt;
	else&lt;br /&gt;
		local currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
		if currentTitle.prefixedText:find(&amp;#039;/sandbox$&amp;#039;) then&lt;br /&gt;
			template = currentTitle.prefixedText&lt;br /&gt;
		else&lt;br /&gt;
			template = currentTitle.basePageTitle.prefixedText&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Call the template with the arguments.&lt;br /&gt;
	frame = frame or mw.getCurrentFrame()&lt;br /&gt;
	local success, result = pcall(&lt;br /&gt;
		frame.expandTemplate,&lt;br /&gt;
		frame,&lt;br /&gt;
		{title = template, args = targs}&lt;br /&gt;
	)&lt;br /&gt;
	if success then&lt;br /&gt;
		return result&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
		wrappers = &amp;#039;Template:Parameter names example&amp;#039;&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(args, frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Pagetype/config&amp;diff=1987&amp;oldid=0</id>
		<title>پودمان:Pagetype/config</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Pagetype/config&amp;diff=1987&amp;oldid=0"/>
		<updated>2026-06-25T09:35:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Pagetype/config&quot; title=&quot;پودمان:Pagetype/config&quot;&gt;پودمان:Pagetype/config&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                  Module:Pagetype configuration data                        --&lt;br /&gt;
-- This page holds localisation and configuration data for Module:Pagetype.   --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = {} -- Don&amp;#039;t edit this line.&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                        Start configuration data                            --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table holds the values to use for &amp;quot;main=true&amp;quot;, &amp;quot;user=true&amp;quot;, etc. Keys to&lt;br /&gt;
-- this table should be namespace parameters that can be used with&lt;br /&gt;
-- [[Module:Namespace detect]]. &lt;br /&gt;
cfg.pagetypes = {&lt;br /&gt;
	[&amp;#039;main&amp;#039;]              = &amp;#039;مقاله&amp;#039;,&lt;br /&gt;
	[&amp;#039;user&amp;#039;]              = &amp;#039;صفحه کاربر&amp;#039;,&lt;br /&gt;
	[&amp;#039;project&amp;#039;]           = &amp;#039;صفحه پروژه&amp;#039;,&lt;br /&gt;
	[&amp;#039;wikipedia&amp;#039;]         = &amp;#039;صفحه پروژه&amp;#039;,&lt;br /&gt;
	[&amp;#039;wp&amp;#039;]                = &amp;#039;صفحه پروژه&amp;#039;,&lt;br /&gt;
	[&amp;#039;file&amp;#039;]              = &amp;#039;پرونده&amp;#039;,&lt;br /&gt;
	[&amp;#039;image&amp;#039;]             = &amp;#039;پرونده&amp;#039;,&lt;br /&gt;
	[&amp;#039;mediawiki&amp;#039;]         = &amp;#039;صفحه رابط&amp;#039;,&lt;br /&gt;
	[&amp;#039;template&amp;#039;]          = &amp;#039;الگو&amp;#039;,&lt;br /&gt;
	[&amp;#039;help&amp;#039;]              = &amp;#039;صفحه راهنما&amp;#039;,&lt;br /&gt;
	[&amp;#039;category&amp;#039;]          = &amp;#039;رده&amp;#039;,&lt;br /&gt;
	[&amp;#039;portal&amp;#039;]            = &amp;#039;درگاه&amp;#039;,&lt;br /&gt;
	[&amp;#039;book&amp;#039;]              = &amp;#039;کتاب&amp;#039;,&lt;br /&gt;
	[&amp;#039;draft&amp;#039;]             = &amp;#039;پیش‌نویس&amp;#039;,&lt;br /&gt;
	[&amp;#039;education program&amp;#039;] = &amp;#039;صفحه برنامه آموزش&amp;#039;,&lt;br /&gt;
	[&amp;#039;timedtext&amp;#039;]         = &amp;#039;صفحه متن زمان‌دار&amp;#039;,&lt;br /&gt;
	[&amp;#039;module&amp;#039;]            = &amp;#039;پودمان&amp;#039;,&lt;br /&gt;
	[&amp;#039;topic&amp;#039;]             = &amp;#039;مبحث&amp;#039;,&lt;br /&gt;
	[&amp;#039;gadget&amp;#039;]            = &amp;#039;ابزار&amp;#039;,&lt;br /&gt;
	[&amp;#039;gadget definition&amp;#039;] = &amp;#039;تعریف ابزار&amp;#039;,&lt;br /&gt;
	[&amp;#039;talk&amp;#039;]              = &amp;#039;صفحه بحث&amp;#039;,&lt;br /&gt;
	[&amp;#039;special&amp;#039;]           = &amp;#039;صفحه ویژه&amp;#039;,&lt;br /&gt;
	[&amp;#039;media&amp;#039;]             = &amp;#039;پرونده&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- This table holds the names of the namespaces to be looked up from&lt;br /&gt;
-- cfg.pagetypes by default.&lt;br /&gt;
cfg.defaultNamespaces = {&lt;br /&gt;
	&amp;#039;main&amp;#039;,&lt;br /&gt;
	&amp;#039;file&amp;#039;,&lt;br /&gt;
	&amp;#039;template&amp;#039;,&lt;br /&gt;
	&amp;#039;category&amp;#039;,&lt;br /&gt;
	&amp;#039;module&amp;#039;,&lt;br /&gt;
	&amp;#039;book&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- This table holds the names of the namespaces to be looked up from&lt;br /&gt;
-- cfg.pagetypes if cfg.defaultnsExtended is set.&lt;br /&gt;
cfg.extendedNamespaces = {&lt;br /&gt;
	&amp;#039;main&amp;#039;,&lt;br /&gt;
	&amp;#039;user&amp;#039;,&lt;br /&gt;
	&amp;#039;project&amp;#039;,&lt;br /&gt;
	&amp;#039;file&amp;#039;,&lt;br /&gt;
	&amp;#039;mediawiki&amp;#039;,&lt;br /&gt;
	&amp;#039;template&amp;#039;,&lt;br /&gt;
	&amp;#039;category&amp;#039;,&lt;br /&gt;
	&amp;#039;help&amp;#039;,&lt;br /&gt;
	&amp;#039;portal&amp;#039;,&lt;br /&gt;
	&amp;#039;module&amp;#039;,&lt;br /&gt;
	&amp;#039;book&amp;#039;,&lt;br /&gt;
	&amp;#039;draft&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- The parameter name to set which default namespace values to be looked up from&lt;br /&gt;
-- cfg.pagetypes.&lt;br /&gt;
cfg.defaultns = &amp;#039;defaultns&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The value of cfg.defaultns to set all namespaces, including talk.&lt;br /&gt;
cfg.defaultnsAll = &amp;#039;همه&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The value of cfg.defaultns to set the namespaces listed in&lt;br /&gt;
-- cfg.extendedNamespaces&lt;br /&gt;
cfg.defaultnsExtended = &amp;#039;گسترده&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The value of cfg.defaultns to set no default namespaces.&lt;br /&gt;
cfg.defaultnsNone = &amp;#039;هیچ‌کدام&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter name to use for disambiguation pages page.&lt;br /&gt;
cfg.dab = &amp;#039;dab&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- This table holds the different possible aliases for disambiguation-class&lt;br /&gt;
-- pages. These should be lower-case.&lt;br /&gt;
cfg.dabAliases = {&lt;br /&gt;
	&amp;#039;disambiguation&amp;#039;,&lt;br /&gt;
	&amp;#039;disambig&amp;#039;,&lt;br /&gt;
	&amp;#039;disamb&amp;#039;,&lt;br /&gt;
	&amp;#039;dab&amp;#039;,&lt;br /&gt;
	&amp;#039;ابهام‌زدایی&amp;#039;,&lt;br /&gt;
	&amp;#039;ابهام&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- The default value for disambiguation pages.&lt;br /&gt;
cfg.dabDefault = &amp;#039;صفحه&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter name to use for N/A-class page.&lt;br /&gt;
cfg.na = &amp;#039;na&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- This table holds the different possible aliases for N/A-class pages. These&lt;br /&gt;
-- should be lower-case.&lt;br /&gt;
cfg.naAliases = {&amp;#039;na&amp;#039;, &amp;#039;n/a&amp;#039;,&amp;#039;قابل اجرا نیست&amp;#039;, &amp;#039;در دسترس نیست&amp;#039;, &amp;#039;بدون پاسخ&amp;#039;}&lt;br /&gt;
&lt;br /&gt;
-- The default value for N/A-class pages.&lt;br /&gt;
cfg.naDefault = &amp;#039;صفحه&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter name to use for redirects.&lt;br /&gt;
cfg.redirect = &amp;#039;redirect&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The default value to use for redirects.&lt;br /&gt;
cfg.redirectDefault = &amp;#039;تفییرمسیر&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter name for undefined namespaces.&lt;br /&gt;
cfg.other = &amp;#039;other&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- The value used if the module detects an undefined namespace.&lt;br /&gt;
cfg.otherDefault = &amp;#039;صفحه&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                        End configuration data                              --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return cfg -- Don&amp;#039;t edit this line&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Pagetype&amp;diff=1984&amp;oldid=0</id>
		<title>پودمان:Pagetype</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Pagetype&amp;diff=1984&amp;oldid=0"/>
		<updated>2026-06-25T09:35:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Pagetype&quot; title=&quot;پودمان:Pagetype&quot;&gt;پودمان:Pagetype&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--                                PAGETYPE                                    --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--      This is a meta-module intended to replace {{pagetype}} and similar    --&lt;br /&gt;
--      templates. It automatically detects namespaces, and allows for a      --&lt;br /&gt;
--      great deal of customisation. It can easily be ported to other         --&lt;br /&gt;
--      wikis by changing the values in the [[Module:Pagetype/config]].       --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Load config.&lt;br /&gt;
local cfg = mw.loadData(&amp;#039;Module:Pagetype/config&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- Load required modules.&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local nsDetectModule = require(&amp;#039;Module:Namespace detect&amp;#039;)&lt;br /&gt;
local nsDetect = nsDetectModule._main&lt;br /&gt;
local getParamMappings = nsDetectModule.getParamMappings&lt;br /&gt;
local getPageObject = nsDetectModule.getPageObject&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function shallowCopy(t)&lt;br /&gt;
	-- Makes a shallow copy of a table.&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		ret[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function checkPagetypeInput(namespace, val)&lt;br /&gt;
	-- Checks to see whether we need the default value for the given namespace,&lt;br /&gt;
	-- and if so gets it from the pagetypes table.&lt;br /&gt;
	-- The yesno function returns true/false for &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc., and returns&lt;br /&gt;
	-- val for other input.&lt;br /&gt;
	local ret = yesno(val, val)&lt;br /&gt;
	if ret and type(ret) ~= &amp;#039;string&amp;#039; then&lt;br /&gt;
		ret = cfg.pagetypes[namespace]&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getPagetypeFromClass(class, param, aliasTable, default)&lt;br /&gt;
	-- Gets the pagetype from a class specified from the first positional&lt;br /&gt;
	-- parameter.&lt;br /&gt;
	param = yesno(param, param)&lt;br /&gt;
	if param ~= false then -- No check if specifically disallowed.&lt;br /&gt;
		for _, alias in ipairs(aliasTable) do&lt;br /&gt;
			if class == alias then&lt;br /&gt;
				if type(param) == &amp;#039;string&amp;#039; then&lt;br /&gt;
					return param&lt;br /&gt;
				else&lt;br /&gt;
					return default&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getNsDetectValue(args)&lt;br /&gt;
	-- Builds the arguments to pass to [[Module:Namespace detect]] and returns&lt;br /&gt;
	-- the result.&lt;br /&gt;
&lt;br /&gt;
	-- Get the default values.&lt;br /&gt;
	local ndArgs = {}&lt;br /&gt;
	local defaultns = args[cfg.defaultns]&lt;br /&gt;
	if defaultns == cfg.defaultnsAll then&lt;br /&gt;
		ndArgs = shallowCopy(cfg.pagetypes)&lt;br /&gt;
	else&lt;br /&gt;
		local defaultnsArray&lt;br /&gt;
		if defaultns == cfg.defaultnsExtended then&lt;br /&gt;
			defaultnsArray = cfg.extendedNamespaces&lt;br /&gt;
		elseif defaultns == cfg.defaultnsNone then&lt;br /&gt;
			defaultnsArray = {}&lt;br /&gt;
		else&lt;br /&gt;
			defaultnsArray = cfg.defaultNamespaces&lt;br /&gt;
		end&lt;br /&gt;
		for _, namespace in ipairs(defaultnsArray) do&lt;br /&gt;
			ndArgs[namespace] = cfg.pagetypes[namespace]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Add custom values passed in from the arguments. These overwrite the&lt;br /&gt;
	-- defaults. The possible argument names are fetched from&lt;br /&gt;
	-- Module:Namespace detect automatically in case new namespaces are&lt;br /&gt;
	-- added. Although we accept namespace aliases as parameters, we only pass&lt;br /&gt;
	-- the local namespace name as a parameter to Module:Namespace detect.&lt;br /&gt;
	-- This means that the &amp;quot;image&amp;quot; parameter can overwrite defaults for the&lt;br /&gt;
	-- File: namespace, which wouldn&amp;#039;t work if we passed the parameters through&lt;br /&gt;
	-- separately.&lt;br /&gt;
	--]]&lt;br /&gt;
	local mappings = getParamMappings()&lt;br /&gt;
	for ns, paramAliases in pairs(mappings) do&lt;br /&gt;
		-- Copy the aliases table, as # doesn&amp;#039;t work with tables returned from&lt;br /&gt;
		-- mw.loadData.&lt;br /&gt;
		paramAliases = shallowCopy(paramAliases)&lt;br /&gt;
		local paramName = paramAliases[1]&lt;br /&gt;
		-- Iterate backwards along the array so that any values for the local&lt;br /&gt;
		-- namespace names overwrite those for namespace aliases.&lt;br /&gt;
		for i = #paramAliases, 1, -1 do&lt;br /&gt;
			local paramAlias = paramAliases[i]&lt;br /&gt;
			local ndArg = checkPagetypeInput(paramAlias, args[paramAlias])&lt;br /&gt;
			if ndArg == false then&lt;br /&gt;
				-- If any arguments are false, convert them to nil to protect&lt;br /&gt;
				-- against breakage by future changes to&lt;br /&gt;
				-- [[Module:Namespace detect]].&lt;br /&gt;
				ndArgs[paramName] = nil&lt;br /&gt;
			elseif ndArg then&lt;br /&gt;
				ndArgs[paramName] = ndArg&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Check for disambiguation-class and N/A-class pages in mainspace.&lt;br /&gt;
	if ndArgs.main then&lt;br /&gt;
		local class = args[1]&lt;br /&gt;
		if type(class) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			-- Put in lower case so e.g. &amp;quot;Dab&amp;quot; and &amp;quot;dab&amp;quot; will both match.&lt;br /&gt;
			class = mw.ustring.lower(class)&lt;br /&gt;
		end&lt;br /&gt;
		local dab = getPagetypeFromClass(&lt;br /&gt;
			class,&lt;br /&gt;
			args[cfg.dab],&lt;br /&gt;
			cfg.dabAliases,&lt;br /&gt;
			cfg.dabDefault&lt;br /&gt;
		)&lt;br /&gt;
		if dab then&lt;br /&gt;
			ndArgs.main = dab&lt;br /&gt;
		else&lt;br /&gt;
			local na = getPagetypeFromClass(&lt;br /&gt;
				class,&lt;br /&gt;
				args[cfg.na],&lt;br /&gt;
				cfg.naAliases,&lt;br /&gt;
				cfg.naDefault&lt;br /&gt;
			)&lt;br /&gt;
			if na then&lt;br /&gt;
				ndArgs.main = na&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- If there is no talk value specified, use the corresponding subject &lt;br /&gt;
	-- namespace for talk pages.&lt;br /&gt;
	if not ndArgs.talk then&lt;br /&gt;
		ndArgs.subjectns = true&lt;br /&gt;
	end&lt;br /&gt;
	-- Add the fallback value. This can also be customised, but it cannot be&lt;br /&gt;
	-- disabled.&lt;br /&gt;
	local other = args[cfg.other]&lt;br /&gt;
	-- We will ignore true/false/nil results from yesno here, but using it&lt;br /&gt;
	-- anyway for consistency.&lt;br /&gt;
	other = yesno(other, other)&lt;br /&gt;
	if type(other) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		ndArgs.other = other&lt;br /&gt;
	else&lt;br /&gt;
		ndArgs.other = cfg.otherDefault&lt;br /&gt;
	end&lt;br /&gt;
	-- Allow custom page values.&lt;br /&gt;
	ndArgs.page = args.page&lt;br /&gt;
	return nsDetect(ndArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function detectRedirects(args)&lt;br /&gt;
	local redirect = args[cfg.redirect]&lt;br /&gt;
	-- The yesno function returns true/false for &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc., and returns&lt;br /&gt;
	-- redirect for other input.&lt;br /&gt;
	redirect = yesno(redirect, redirect)&lt;br /&gt;
	if redirect == false then&lt;br /&gt;
		-- Detect redirects unless they have been explicitly disallowed with&lt;br /&gt;
		-- &amp;quot;redirect=no&amp;quot; or similar.&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	local pageObject = getPageObject(args.page)&lt;br /&gt;
	-- If we are using subject namespaces elsewhere, do so here as well.&lt;br /&gt;
	if pageObject&lt;br /&gt;
		and not yesno(args.talk, true)&lt;br /&gt;
		and args[cfg.defaultns] ~= cfg.defaultnsAll&lt;br /&gt;
	then&lt;br /&gt;
		pageObject = getPageObject(&lt;br /&gt;
			pageObject.subjectNsText .. &amp;#039;:&amp;#039; .. pageObject.text&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	-- Allow custom values for redirects.&lt;br /&gt;
	if pageObject and pageObject.isRedirect then&lt;br /&gt;
		if type(redirect) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			return redirect&lt;br /&gt;
		else&lt;br /&gt;
			return cfg.redirectDefault&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local redirect = detectRedirects(args)&lt;br /&gt;
	local pagetype = &amp;quot;&amp;quot;&lt;br /&gt;
	if redirect then&lt;br /&gt;
		pagetype = redirect&lt;br /&gt;
	else&lt;br /&gt;
		pagetype = getNsDetectValue(args)&lt;br /&gt;
	end&lt;br /&gt;
	if yesno(args.plural, false) then&lt;br /&gt;
		-- if cfg.irregularPlurals[pagetype] then&lt;br /&gt;
		--	pagetype = cfg.irregularPlurals[pagetype]&lt;br /&gt;
		--else&lt;br /&gt;
		if pagetype == &amp;quot;الگو&amp;quot; then&lt;br /&gt;
			pagetype = pagetype .. &amp;quot;های&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			pagetype = pagetype .. &amp;quot;‌های&amp;quot; -- often &amp;#039;s&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if yesno(args.caps, false) then&lt;br /&gt;
		pagetype = mw.ustring.upper(mw.ustring.sub(pagetype, 1, 1)) ..&lt;br /&gt;
			mw.ustring.sub(pagetype, 2)&lt;br /&gt;
	end&lt;br /&gt;
	return pagetype&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Numeral_converter2&amp;diff=1981&amp;oldid=0</id>
		<title>پودمان:Numeral converter2</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Numeral_converter2&amp;diff=1981&amp;oldid=0"/>
		<updated>2026-06-25T09:34:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Numeral_converter2&quot; title=&quot;پودمان:Numeral converter2&quot;&gt;پودمان:Numeral converter2&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Use this function from templates.&lt;br /&gt;
function p.convert_template(frame)&lt;br /&gt;
  -- Third argument is optional; If true given, signs like dot (.) will be replaced.&lt;br /&gt;
  frame.args[3] = frame.args[3] or nil&lt;br /&gt;
  return p.convert(frame.args[1], frame.args[2], frame.args[3])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Use these function directly in modules.&lt;br /&gt;
&lt;br /&gt;
function p.convert(lang, text, signs, virgule)&lt;br /&gt;
  text = tostring(text)&lt;br /&gt;
  signs = signs or nil&lt;br /&gt;
  virgule= virgule or nil&lt;br /&gt;
&lt;br /&gt;
  if lang == &amp;quot;fa&amp;quot; or lang == &amp;quot;ur&amp;quot; or lang == &amp;quot;mzn&amp;quot; or lang == &amp;quot;glk&amp;quot; then -- برای فارسی، اردو، مازندرانی، گیلکی&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[0٠]&amp;quot;, &amp;quot;۰&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[1١]&amp;quot;, &amp;quot;۱&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[2٢]&amp;quot;, &amp;quot;۲&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[3٣]&amp;quot;, &amp;quot;۳&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[4٤]&amp;quot;, &amp;quot;۴&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[5٥]&amp;quot;, &amp;quot;۵&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[6٦]&amp;quot;, &amp;quot;۶&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[7٧]&amp;quot;, &amp;quot;۷&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[8٨]&amp;quot;, &amp;quot;۸&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[9٩]&amp;quot;, &amp;quot;۹&amp;quot;)&lt;br /&gt;
--    text = mw.ustring.gsub(text, &amp;quot;ISBN &amp;quot;, &amp;quot;&amp;quot;)	&lt;br /&gt;
    --تبدیل نقطه به «٫» را به دلیل ایجاد مشکل در فارسی‌سازی برخی شناسه‌ها که نقطه دارند حذف کردم&lt;br /&gt;
    if type(signs) ~= &amp;quot;nil&amp;quot; then&lt;br /&gt;
      text = mw.ustring.gsub(text, &amp;quot;%.&amp;quot;, &amp;quot;٫&amp;quot;)&lt;br /&gt;
      --تبدیل % به درصد فارسی ٪ را نگذاشتم چون ممکن است کدهای درصدی وارد شده به پودمان را خراب کند.&lt;br /&gt;
    end&lt;br /&gt;
  elseif lang == &amp;quot;en&amp;quot; then -- تبدیل به انگلیسی&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۰٠]&amp;quot;, &amp;quot;0&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۱١]&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۲٢]&amp;quot;, &amp;quot;2&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۳٣]&amp;quot;, &amp;quot;3&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۴٤]&amp;quot;, &amp;quot;4&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۵٥]&amp;quot;, &amp;quot;5&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۶٦]&amp;quot;, &amp;quot;6&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۷٧]&amp;quot;, &amp;quot;7&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۸٨]&amp;quot;, &amp;quot;8&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۹٩]&amp;quot;, &amp;quot;9&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;٫&amp;quot;, &amp;quot;.&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;٪&amp;quot;, &amp;quot;%&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Numeral_converter&amp;diff=1978&amp;oldid=0</id>
		<title>پودمان:Numeral converter</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Numeral_converter&amp;diff=1978&amp;oldid=0"/>
		<updated>2026-06-25T09:34:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Numeral_converter&quot; title=&quot;پودمان:Numeral converter&quot;&gt;پودمان:Numeral converter&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Use this function from templates.&lt;br /&gt;
function p.convert_template(frame)&lt;br /&gt;
  -- Third argument is optional; If true given, signs like dot (.) will be replaced.&lt;br /&gt;
  frame.args[3] = frame.args[3] or nil&lt;br /&gt;
  return p.convert(frame.args[1], frame.args[2], frame.args[3])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Use these function directly in modules.&lt;br /&gt;
&lt;br /&gt;
function p.convert_cordination_template(frame)&lt;br /&gt;
  return p.convert(&amp;#039;en&amp;#039;,p.convert_cordination(frame.args[1]))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.convert_cordination(text)&lt;br /&gt;
  text = tostring(text)&lt;br /&gt;
  text = mw.ustring.gsub(text, &amp;quot;شمالی&amp;quot;, &amp;quot;N&amp;quot;)&lt;br /&gt;
  text = mw.ustring.gsub(text, &amp;quot;شرقی&amp;quot;, &amp;quot;E&amp;quot;)&lt;br /&gt;
  text = mw.ustring.gsub(text, &amp;quot;جنوبی&amp;quot;, &amp;quot;S&amp;quot;)&lt;br /&gt;
  text = mw.ustring.gsub(text, &amp;quot;غربی&amp;quot;, &amp;quot;W&amp;quot;)&lt;br /&gt;
  return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.convert_Fa_cordination(text)&lt;br /&gt;
  text = tostring(text)&lt;br /&gt;
  text = mw.ustring.gsub(text,&amp;quot;N&amp;quot;, &amp;quot;شمالی&amp;quot;)&lt;br /&gt;
  text = mw.ustring.gsub(text,&amp;quot;E&amp;quot;, &amp;quot;شرقی&amp;quot;)&lt;br /&gt;
  text = mw.ustring.gsub(text,  &amp;quot;S&amp;quot;,&amp;quot;جنوبی&amp;quot;)&lt;br /&gt;
  text = mw.ustring.gsub(text, &amp;quot;W&amp;quot;,&amp;quot;غربی&amp;quot;)&lt;br /&gt;
  return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.convert(lang, text, signs, virgule)&lt;br /&gt;
  text = tostring(text)&lt;br /&gt;
  signs = signs or nil&lt;br /&gt;
  virgule= virgule or nil&lt;br /&gt;
&lt;br /&gt;
  if lang == &amp;quot;fa&amp;quot; or lang == &amp;quot;ur&amp;quot; or lang == &amp;quot;mzn&amp;quot; or lang == &amp;quot;glk&amp;quot; then -- برای فارسی، اردو، مازندرانی، گیلکی&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[0٠]&amp;quot;, &amp;quot;۰&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[1١]&amp;quot;, &amp;quot;۱&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[2٢]&amp;quot;, &amp;quot;۲&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[3٣]&amp;quot;, &amp;quot;۳&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[4٤]&amp;quot;, &amp;quot;۴&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[5٥]&amp;quot;, &amp;quot;۵&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[6٦]&amp;quot;, &amp;quot;۶&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[7٧]&amp;quot;, &amp;quot;۷&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[8٨]&amp;quot;, &amp;quot;۸&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[9٩]&amp;quot;, &amp;quot;۹&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[.]&amp;quot;, &amp;quot;٫&amp;quot;)&lt;br /&gt;
    if type(signs) ~= &amp;quot;nil&amp;quot; then&lt;br /&gt;
      text = mw.ustring.gsub(text, &amp;quot;%.&amp;quot;, &amp;quot;٫&amp;quot;)&lt;br /&gt;
      --تبدیل % به درصد فارسی ٪ را نگذاشتم چون ممکن است کدهای درصدی وارد شده به پودمان را خراب کند.&lt;br /&gt;
    end&lt;br /&gt;
  elseif lang == &amp;quot;ar&amp;quot; or lang == &amp;quot;ckb&amp;quot; or lang == &amp;quot;ks&amp;quot; then -- برای عربی، کردی سورانی، کشمیری&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۰0]&amp;quot;, &amp;quot;٠&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۱1]&amp;quot;, &amp;quot;١&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۲2]&amp;quot;, &amp;quot;٢&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۳3]&amp;quot;, &amp;quot;٣&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۴4]&amp;quot;, &amp;quot;٤&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۵5]&amp;quot;, &amp;quot;٥&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۶6]&amp;quot;, &amp;quot;٦&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۷7]&amp;quot;, &amp;quot;٧&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۸8]&amp;quot;, &amp;quot;٨&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۹9]&amp;quot;, &amp;quot;٩&amp;quot;)&lt;br /&gt;
  elseif lang and lang ~= &amp;quot;&amp;quot; then -- برای همهٔ زبان‌های دیگر&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۰٠]&amp;quot;, &amp;quot;0&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۱١]&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۲٢]&amp;quot;, &amp;quot;2&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۳٣]&amp;quot;, &amp;quot;3&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۴٤]&amp;quot;, &amp;quot;4&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۵٥]&amp;quot;, &amp;quot;5&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۶٦]&amp;quot;, &amp;quot;6&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۷٧]&amp;quot;, &amp;quot;7&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۸٨]&amp;quot;, &amp;quot;8&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;[۹٩]&amp;quot;, &amp;quot;9&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;٫&amp;quot;, &amp;quot;.&amp;quot;)&lt;br /&gt;
    text = mw.ustring.gsub(text, &amp;quot;٪&amp;quot;, &amp;quot;%&amp;quot;)&lt;br /&gt;
    if type(virgule) ~= &amp;quot;nil&amp;quot; then&lt;br /&gt;
      text = mw.ustring.gsub(text, &amp;quot;،&amp;quot;, &amp;quot;,&amp;quot;)&lt;br /&gt;
      text = mw.ustring.gsub(text, &amp;quot;٪&amp;quot;, &amp;quot;%&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Ns_has_subpages&amp;diff=1975&amp;oldid=0</id>
		<title>پودمان:Ns has subpages</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Ns_has_subpages&amp;diff=1975&amp;oldid=0"/>
		<updated>2026-06-25T09:34:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Ns_has_subpages&quot; title=&quot;پودمان:Ns has subpages&quot;&gt;پودمان:Ns has subpages&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements [[Template:Ns has subpages]].&lt;br /&gt;
-- While the template is fairly simple, this information is made available to&lt;br /&gt;
-- Lua directly, so using a module means that we don&amp;#039;t have to update the&lt;br /&gt;
-- template as new namespaces are added.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p._main(ns, frame)&lt;br /&gt;
	-- Get the current namespace if we were not passed one.&lt;br /&gt;
	if not ns then&lt;br /&gt;
		ns = mw.title.getCurrentTitle().namespace&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Look up the namespace table from mw.site.namespaces. This should work&lt;br /&gt;
	-- for a majority of cases.&lt;br /&gt;
	local nsTable = mw.site.namespaces[ns]&lt;br /&gt;
&lt;br /&gt;
	-- Try using string matching to get the namespace from page names.&lt;br /&gt;
	-- Do a quick and dirty bad title check to try and make sure we do the same&lt;br /&gt;
	-- thing as {{NAMESPACE}} in most cases.&lt;br /&gt;
	if not nsTable and type(ns) == &amp;#039;string&amp;#039; and not ns:find(&amp;#039;[&amp;lt;&amp;gt;|%[%]{}]&amp;#039;) then&lt;br /&gt;
		local nsStripped = ns:gsub(&amp;#039;^[_%s]*:&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		nsStripped = nsStripped:gsub(&amp;#039;:.*$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		nsTable = mw.site.namespaces[nsStripped]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- If we still have no match then try the {{NAMESPACE}} parser function,&lt;br /&gt;
	-- which should catch the remainder of cases. Don&amp;#039;t use a mw.title object,&lt;br /&gt;
	-- as this would increment the expensive function count for each new page&lt;br /&gt;
	-- tested.&lt;br /&gt;
	if not nsTable then&lt;br /&gt;
		frame = frame or mw.getCurrentFrame()&lt;br /&gt;
		local nsProcessed = frame:callParserFunction(&amp;#039;NAMESPACE&amp;#039;, ns)&lt;br /&gt;
		nsTable = nsProcessed and mw.site.namespaces[nsProcessed]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return nsTable and nsTable.hasSubpages&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local ns = frame:getParent().args[1]&lt;br /&gt;
	if ns then&lt;br /&gt;
		ns = ns:match(&amp;#039;^%s*(.-)%s*$&amp;#039;) -- trim whitespace&lt;br /&gt;
		ns = tonumber(ns) or ns&lt;br /&gt;
	end&lt;br /&gt;
	local hasSubpages = p._main(ns, frame)&lt;br /&gt;
	return hasSubpages and &amp;#039;yes&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:No_globals&amp;diff=1972&amp;oldid=0</id>
		<title>پودمان:No globals</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:No_globals&amp;diff=1972&amp;oldid=0"/>
		<updated>2026-06-25T09:34:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:No_globals&quot; title=&quot;پودمان:No globals&quot;&gt;پودمان:No globals&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local mt = getmetatable(_G) or {}&lt;br /&gt;
function mt.__index (t, k)&lt;br /&gt;
	if k ~= &amp;#039;arg&amp;#039; then&lt;br /&gt;
		error(&amp;#039;Tried to read nil global &amp;#039; .. tostring(k), 2)&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
function mt.__newindex(t, k, v)&lt;br /&gt;
	if k ~= &amp;#039;arg&amp;#039; then&lt;br /&gt;
		error(&amp;#039;Tried to write global &amp;#039; .. tostring(k), 2)&lt;br /&gt;
	end&lt;br /&gt;
	rawset(t, k, v)&lt;br /&gt;
end&lt;br /&gt;
setmetatable(_G, mt)&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox_with_collapsible_groups&amp;diff=1969&amp;oldid=0</id>
		<title>پودمان:Navbox with collapsible groups</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox_with_collapsible_groups&amp;diff=1969&amp;oldid=0"/>
		<updated>2026-06-25T09:34:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox_with_collapsible_groups&quot; title=&quot;پودمان:Navbox with collapsible groups&quot;&gt;پودمان:Navbox with collapsible groups&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{Navbox with collapsible groups}}&lt;br /&gt;
local q = {}&lt;br /&gt;
local Navbox = require(&amp;#039;Module:Navbox&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- helper functions&lt;br /&gt;
local function concatstrings(s)&lt;br /&gt;
	local r = table.concat(s, &amp;#039;&amp;#039;)&lt;br /&gt;
	if r:match(&amp;#039;^%s*$&amp;#039;) then r = nil end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function concatstyles(s)&lt;br /&gt;
	local r = table.concat(s, &amp;#039;;&amp;#039;)&lt;br /&gt;
	while r:match(&amp;#039;;%s*;&amp;#039;) do&lt;br /&gt;
		r = mw.ustring.gsub(r, &amp;#039;;%s*;&amp;#039;, &amp;#039;;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if r:match(&amp;#039;^%s*;%s*$&amp;#039;) then r = nil end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function q._navbox(pargs)&lt;br /&gt;
	-- table for args passed to navbox&lt;br /&gt;
	local targs = {}&lt;br /&gt;
&lt;br /&gt;
	-- process args&lt;br /&gt;
	local passthrough = {&lt;br /&gt;
		[&amp;#039;name&amp;#039;]=true,[&amp;#039;navbar&amp;#039;]=true,[&amp;#039;state&amp;#039;]=true,[&amp;#039;border&amp;#039;]=true,&lt;br /&gt;
		[&amp;#039;bodyclass&amp;#039;]=true,[&amp;#039;groupclass&amp;#039;]=true,[&amp;#039;listclass&amp;#039;]=true,&lt;br /&gt;
		[&amp;#039;style&amp;#039;]=true,[&amp;#039;bodystyle&amp;#039;]=true,[&amp;#039;basestyle&amp;#039;]=true,&lt;br /&gt;
		[&amp;#039;title&amp;#039;]=true,[&amp;#039;titleclass&amp;#039;]=true,[&amp;#039;titlestyle&amp;#039;]=true,&lt;br /&gt;
		[&amp;#039;above&amp;#039;]=true,[&amp;#039;aboveclass&amp;#039;]=true,[&amp;#039;abovestyle&amp;#039;]=true,&lt;br /&gt;
		[&amp;#039;below&amp;#039;]=true,[&amp;#039;belowclass&amp;#039;]=true,[&amp;#039;belowstyle&amp;#039;]=true,&lt;br /&gt;
		[&amp;#039;image&amp;#039;]=true,[&amp;#039;imageclass&amp;#039;]=true,[&amp;#039;imagestyle&amp;#039;]=true,&lt;br /&gt;
		[&amp;#039;imageleft&amp;#039;]=true,[&amp;#039;imageleftstyle&amp;#039;]=true&lt;br /&gt;
	}&lt;br /&gt;
	for k,v in pairs(pargs) do&lt;br /&gt;
		if k and type(k) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			if passthrough[k] then&lt;br /&gt;
				targs[k] = v&lt;br /&gt;
			elseif (k:match(&amp;#039;^list[0-9][0-9]*$&amp;#039;) &lt;br /&gt;
					or k:match(&amp;#039;^content[0-9][0-9]*$&amp;#039;) ) then&lt;br /&gt;
				local n = mw.ustring.gsub(k, &amp;#039;^[a-z]*([0-9]*)$&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
				if (targs[&amp;#039;list&amp;#039; .. n] == nil and pargs[&amp;#039;group&amp;#039; .. n] == nil&lt;br /&gt;
					and pargs[&amp;#039;sect&amp;#039; .. n] == nil and pargs[&amp;#039;section&amp;#039; .. n] == nil) then&lt;br /&gt;
					targs[&amp;#039;list&amp;#039; .. n] = concatstrings(&lt;br /&gt;
						{pargs[&amp;#039;list&amp;#039; .. n] or &amp;#039;&amp;#039;, pargs[&amp;#039;content&amp;#039; .. n] or &amp;#039;&amp;#039;})&lt;br /&gt;
				end&lt;br /&gt;
			elseif (k:match(&amp;#039;^group[0-9][0-9]*$&amp;#039;) &lt;br /&gt;
					or k:match(&amp;#039;^sect[0-9][0-9]*$&amp;#039;) &lt;br /&gt;
					or k:match(&amp;#039;^section[0-9][0-9]*$&amp;#039;) ) then&lt;br /&gt;
				local n = mw.ustring.gsub(k, &amp;#039;^[a-z]*([0-9]*)$&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
				if targs[&amp;#039;list&amp;#039; .. n] == nil then&lt;br /&gt;
					local titlestyle = concatstyles(&lt;br /&gt;
						{pargs[&amp;#039;groupstyle&amp;#039;] or &amp;#039;&amp;#039;,pargs[&amp;#039;secttitlestyle&amp;#039;] or &amp;#039;&amp;#039;, &lt;br /&gt;
							pargs[&amp;#039;group&amp;#039; .. n .. &amp;#039;style&amp;#039;] or &amp;#039;&amp;#039;, &lt;br /&gt;
							pargs[&amp;#039;section&amp;#039; .. n ..&amp;#039;titlestyle&amp;#039;] or &amp;#039;&amp;#039;})&lt;br /&gt;
					local liststyle = concatstyles(&lt;br /&gt;
						{pargs[&amp;#039;liststyle&amp;#039;] or &amp;#039;&amp;#039;, pargs[&amp;#039;contentstyle&amp;#039;] or &amp;#039;&amp;#039;, &lt;br /&gt;
							pargs[&amp;#039;list&amp;#039; .. n .. &amp;#039;style&amp;#039;] or &amp;#039;&amp;#039;, &lt;br /&gt;
							pargs[&amp;#039;content&amp;#039; .. n .. &amp;#039;style&amp;#039;] or &amp;#039;&amp;#039;})&lt;br /&gt;
					local title = concatstrings(&lt;br /&gt;
						{pargs[&amp;#039;group&amp;#039; .. n] or &amp;#039;&amp;#039;, &lt;br /&gt;
							pargs[&amp;#039;sect&amp;#039; .. n] or &amp;#039;&amp;#039;,&lt;br /&gt;
							pargs[&amp;#039;section&amp;#039; .. n] or &amp;#039;&amp;#039;})&lt;br /&gt;
					local list = concatstrings(&lt;br /&gt;
						{pargs[&amp;#039;list&amp;#039; .. n] or &amp;#039;&amp;#039;, &lt;br /&gt;
							pargs[&amp;#039;content&amp;#039; .. n] or &amp;#039;&amp;#039;})&lt;br /&gt;
					local state = (pargs[&amp;#039;abbr&amp;#039; .. n] and pargs[&amp;#039;abbr&amp;#039; .. n] == pargs[&amp;#039;selected&amp;#039;]) &lt;br /&gt;
						and &amp;#039;uncollapsed&amp;#039; or pargs[&amp;#039;state&amp;#039; .. n] or &amp;#039;collapsed&amp;#039;&lt;br /&gt;
					&lt;br /&gt;
					targs[&amp;#039;list&amp;#039; .. n] = Navbox._navbox(&lt;br /&gt;
						{&amp;#039;child&amp;#039;, navbar = &amp;#039;plain&amp;#039;, state = state,&lt;br /&gt;
						basestyle = pargs[&amp;#039;basestyle&amp;#039;],&lt;br /&gt;
						title = title, titlestyle = titlestyle,&lt;br /&gt;
						list1 = list, liststyle = liststyle,&lt;br /&gt;
						listclass = pargs[&amp;#039;list&amp;#039; .. n .. &amp;#039;class&amp;#039;],&lt;br /&gt;
						image = pargs[&amp;#039;image&amp;#039; .. n],&lt;br /&gt;
						imageleft = pargs[&amp;#039;imageleft&amp;#039; .. n],&lt;br /&gt;
						listpadding = pargs[&amp;#039;listpadding&amp;#039;]})&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- ordering of style and bodystyle&lt;br /&gt;
	targs[&amp;#039;style&amp;#039;] = concatstyles({targs[&amp;#039;style&amp;#039;] or &amp;#039;&amp;#039;, targs[&amp;#039;bodystyle&amp;#039;] or &amp;#039;&amp;#039;})&lt;br /&gt;
	targs[&amp;#039;bodystyle&amp;#039;] = nil&lt;br /&gt;
	&lt;br /&gt;
	-- child or subgroup&lt;br /&gt;
	if targs[&amp;#039;border&amp;#039;] == nil then targs[&amp;#039;border&amp;#039;] = pargs[1] end&lt;br /&gt;
&lt;br /&gt;
	return Navbox._navbox(targs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function q.navbox(frame)&lt;br /&gt;
	local pargs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {wrappers = {&amp;#039;Template:Navbox with collapsible groups&amp;#039;}})&lt;br /&gt;
&lt;br /&gt;
	-- Read the arguments in the order they&amp;#039;ll be output in, to make references number in the right order.&lt;br /&gt;
	local _&lt;br /&gt;
	_ = pargs.title&lt;br /&gt;
	_ = pargs.above&lt;br /&gt;
	for i = 1, 20 do&lt;br /&gt;
		_ = pargs[&amp;quot;group&amp;quot; .. tostring(i)]&lt;br /&gt;
		_ = pargs[&amp;quot;list&amp;quot; .. tostring(i)]&lt;br /&gt;
	end&lt;br /&gt;
	_ = pargs.below&lt;br /&gt;
&lt;br /&gt;
	return q._navbox(pargs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return q&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox/styles.css&amp;diff=1966&amp;oldid=0</id>
		<title>پودمان:Navbox/styles.css</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox/styles.css&amp;diff=1966&amp;oldid=0"/>
		<updated>2026-06-25T09:34:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox/styles.css&quot; title=&quot;پودمان:Navbox/styles.css&quot;&gt;پودمان:Navbox/styles.css&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* {{pp|small=y}} */&lt;br /&gt;
.navbox {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	clear: both;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 1px;&lt;br /&gt;
	margin: 1em auto 0; /* Prevent preceding content from clinging to navboxes */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbox {&lt;br /&gt;
	margin-top: 0; /* No top margin for nested navboxes */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox + .navbox, /* TODO: remove first line after transclusions have updated */&lt;br /&gt;
.navbox + .navbox-styles + .navbox {&lt;br /&gt;
	margin-top: -1px; /* Single pixel border between adjacent navboxes */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-inner,&lt;br /&gt;
.navbox-subgroup {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-group,&lt;br /&gt;
.navbox-title,&lt;br /&gt;
.navbox-abovebelow {&lt;br /&gt;
	padding: 0.25em 1em;&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-group {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox,&lt;br /&gt;
.navbox-subgroup {&lt;br /&gt;
	background-color: #f8f9fa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-list {&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	border-color: #f8f9fa; /* Must match background color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-list-with-group {&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	border-left-width: 2px;&lt;br /&gt;
	border-right-style: solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* cell spacing for navbox cells */&lt;br /&gt;
/* Borders above 2nd, 3rd, etc. rows */&lt;br /&gt;
/* TODO: figure out how to replace tr as structure;&lt;br /&gt;
 * with div structure it should be just a matter of first-child */&lt;br /&gt;
tr + tr &amp;gt; .navbox-abovebelow,&lt;br /&gt;
tr + tr &amp;gt; .navbox-group,&lt;br /&gt;
tr + tr &amp;gt; .navbox-image,&lt;br /&gt;
tr + tr &amp;gt; .navbox-list {&lt;br /&gt;
	border-top: 2px solid #f8f9fa; /* Must match background color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-title {&lt;br /&gt;
	background-color: #b3ccff; /* Level 1 color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-abovebelow,&lt;br /&gt;
.navbox-group,&lt;br /&gt;
.navbox-subgroup .navbox-title {&lt;br /&gt;
	background-color: #dbe7ff; /* Level 2 color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-subgroup .navbox-group,&lt;br /&gt;
.navbox-subgroup .navbox-abovebelow {&lt;br /&gt;
	background-color: #e5edff; /* Level 3 color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-even {&lt;br /&gt;
	background-color: #f8f9fa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-odd {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO: figure out how to remove reliance on td as structure */&lt;br /&gt;
.navbox .hlist td dl,&lt;br /&gt;
.navbox .hlist td ol,&lt;br /&gt;
.navbox .hlist td ul,&lt;br /&gt;
.navbox td.hlist dl,&lt;br /&gt;
.navbox td.hlist ol,&lt;br /&gt;
.navbox td.hlist ul {&lt;br /&gt;
	padding: 0.125em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbar {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-title .navbar {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: right;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin-left: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* RTL fix for navbox-list bullet lists; See [[Special:Permalink/24864265#خطای ظاهری]]. */&lt;br /&gt;
.navbox-list li {&lt;br /&gt;
	unicode-bidi: isolate;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox/configuration&amp;diff=1963&amp;oldid=0</id>
		<title>پودمان:Navbox/configuration</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox/configuration&amp;diff=1963&amp;oldid=0"/>
		<updated>2026-06-25T09:34:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox/configuration&quot; title=&quot;پودمان:Navbox/configuration&quot;&gt;پودمان:Navbox/configuration&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;return {&lt;br /&gt;
	aria_label = &amp;#039;Navbox&amp;#039;,&lt;br /&gt;
	nowrap_item = &amp;#039;%s&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;#039;,&lt;br /&gt;
	templatestyles = mw.getCurrentFrame():extensionTag{&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;, args = { src = &amp;#039;Module:Navbox/styles.css&amp;#039; }&lt;br /&gt;
	},&lt;br /&gt;
	hlist_templatestyles = &amp;#039;Hlist/styles.css&amp;#039;,&lt;br /&gt;
	plainlist_templatestyles = &amp;#039;فهرست ساده/styles.css&amp;#039;,&lt;br /&gt;
	-- do not localize marker table&lt;br /&gt;
	marker = {&lt;br /&gt;
		oddeven = &amp;#039;\127_ODDEVEN_\127&amp;#039;,&lt;br /&gt;
		restart = &amp;#039;\127_ODDEVEN0_\127&amp;#039;,&lt;br /&gt;
		regex = &amp;#039;\127_ODDEVEN(%d?)_\127&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	category = {&lt;br /&gt;
		orphan = &amp;#039;[[رده:جعبه‌های ناوبری یتیم]]&amp;#039;,&lt;br /&gt;
		horizontal_lists = &amp;#039;جعبه‌های ناوبری بدون فهرست افقی&amp;#039;,&lt;br /&gt;
		background_colors = &amp;#039;جعبه‌های ناوبری با استفاده از رنگ‌های پس‌زمینه&amp;#039;,&lt;br /&gt;
		illegible = &amp;#039;جعبه‌های ناوبری بالقوه ناخوانا&amp;#039;,&lt;br /&gt;
		borders = &amp;#039;جعبه‌های ناوبری با استفاده از حاشیه&amp;#039;,&lt;br /&gt;
	},&lt;br /&gt;
	keyword = {&lt;br /&gt;
		border_subgroup = &amp;#039;subgroup&amp;#039;,&lt;br /&gt;
		border_child = &amp;#039;child&amp;#039;,&lt;br /&gt;
		border_none = &amp;#039;none&amp;#039;,&lt;br /&gt;
		evenodd_swap = &amp;#039;swap&amp;#039;,&lt;br /&gt;
		navbar_off = &amp;#039;off&amp;#039;,&lt;br /&gt;
		navbar_plain = &amp;#039;plain&amp;#039;,&lt;br /&gt;
		nocat_false = &amp;#039;false&amp;#039;,&lt;br /&gt;
		nowrapitems_yes = &amp;#039;yes&amp;#039;,&lt;br /&gt;
		orphan_yes = &amp;#039;yes&amp;#039;,&lt;br /&gt;
		state_collapsed = &amp;#039;collapsed&amp;#039;,&lt;br /&gt;
		state_off = &amp;#039;off&amp;#039;,&lt;br /&gt;
		state_plain = &amp;#039;plain&amp;#039;,&lt;br /&gt;
		subpage_doc = &amp;#039;توضیحات&amp;#039;,&lt;br /&gt;
		subpage_sandbox = &amp;#039;تمرین&amp;#039;,&lt;br /&gt;
		subpage_testcases = &amp;#039;آزمایشی&amp;#039;,&lt;br /&gt;
		tracking_no = &amp;#039;no&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	class = {&lt;br /&gt;
		autocollapse = &amp;#039;autocollapse&amp;#039;,&lt;br /&gt;
		collapsible = &amp;#039;mw-collapsible&amp;#039;,&lt;br /&gt;
		collapsed = &amp;#039;mw-collapsed&amp;#039;,&lt;br /&gt;
		-- Warning&lt;br /&gt;
		navbox = &amp;#039;navbox&amp;#039;, -- WMF currently hides &amp;#039;navbox&amp;#039; from mobile,&lt;br /&gt;
		-- so you probably shouldn&amp;#039;t change the navbox class.&lt;br /&gt;
		navbox_abovebelow = &amp;#039;navbox-abovebelow&amp;#039;,&lt;br /&gt;
		navbox_group = &amp;#039;navbox-group&amp;#039;,&lt;br /&gt;
		navbox_image = &amp;#039;navbox-image&amp;#039;,&lt;br /&gt;
		navbox_inner = &amp;#039;navbox-inner&amp;#039;,&lt;br /&gt;
		navbox_list = &amp;#039;navbox-list&amp;#039;,&lt;br /&gt;
		navbox_list_with_group = &amp;#039;navbox-list-with-group&amp;#039;,&lt;br /&gt;
		navbox_part = &amp;#039;navbox-&amp;#039;, -- do not l10n&lt;br /&gt;
		navbox_styles = &amp;#039;navbox-styles&amp;#039;,&lt;br /&gt;
		navbox_subgroup = &amp;#039;navbox-subgroup&amp;#039;,&lt;br /&gt;
		navbox_title = &amp;#039;navbox-title&amp;#039;, -- l10n only if you change pattern.navbox_title below&lt;br /&gt;
		navbox_odd_part = &amp;#039;odd&amp;#039;, -- do not l10n&lt;br /&gt;
		navbox_even_part = &amp;#039;even&amp;#039;, -- do not l10n&lt;br /&gt;
		nomobile = &amp;#039;nomobile&amp;#039;,&lt;br /&gt;
		nowraplinks = &amp;#039;nowraplinks&amp;#039;,&lt;br /&gt;
		noviewer = &amp;#039;noviewer&amp;#039; -- used to remove images from MediaViewer&lt;br /&gt;
	},&lt;br /&gt;
	pattern = {&lt;br /&gt;
		listnum = &amp;#039;^list(%d+)$&amp;#039;,&lt;br /&gt;
		class = &amp;#039;class&amp;#039;,&lt;br /&gt;
		sandbox = &amp;#039;/تمرین$&amp;#039;,&lt;br /&gt;
		navbox = &amp;#039;الگو:Navbox&amp;#039;,&lt;br /&gt;
		nowrap = &amp;#039;^&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
		style = &amp;#039;style$&amp;#039;,&lt;br /&gt;
		navbox_title = &amp;#039;&amp;lt;th[^&amp;gt;]*&amp;quot;navbox%-title&amp;quot;&amp;#039;,&lt;br /&gt;
		hlist = &amp;#039;hlist&amp;#039;,&lt;br /&gt;
		plainlist = &amp;#039;plainlist&amp;#039;,&lt;br /&gt;
	},&lt;br /&gt;
	arg = {&lt;br /&gt;
		above = &amp;#039;above&amp;#039;,&lt;br /&gt;
		aboveclass = &amp;#039;aboveclass&amp;#039;,&lt;br /&gt;
		abovestyle = &amp;#039;abovestyle&amp;#039;,&lt;br /&gt;
		basestyle = &amp;#039;basestyle&amp;#039;,&lt;br /&gt;
		bodyclass = &amp;#039;bodyclass&amp;#039;,&lt;br /&gt;
		bodystyle = &amp;#039;bodystyle&amp;#039;,&lt;br /&gt;
		border = &amp;#039;border&amp;#039;,&lt;br /&gt;
		below = &amp;#039;below&amp;#039;,&lt;br /&gt;
		belowclass = &amp;#039;belowclass&amp;#039;,&lt;br /&gt;
		belowstyle = &amp;#039;belowstyle&amp;#039;,&lt;br /&gt;
		evenodd = &amp;#039;evenodd&amp;#039;,&lt;br /&gt;
		evenstyle = &amp;#039;evenstyle&amp;#039;,&lt;br /&gt;
		group1 = &amp;#039;group1&amp;#039;,&lt;br /&gt;
		group2 = &amp;#039;group2&amp;#039;,&lt;br /&gt;
		group_and_num = &amp;#039;group%d&amp;#039;,&lt;br /&gt;
		groupstyle_and_num = &amp;#039;group%dstyle&amp;#039;,&lt;br /&gt;
		groupclass = &amp;#039;groupclass&amp;#039;,&lt;br /&gt;
		groupstyle = &amp;#039;groupstyle&amp;#039;,&lt;br /&gt;
		groupwidth = &amp;#039;groupwidth&amp;#039;,&lt;br /&gt;
		innerstyle = &amp;#039;innerstyle&amp;#039;,&lt;br /&gt;
		image = &amp;#039;image&amp;#039;,&lt;br /&gt;
		imageclass = &amp;#039;imageclass&amp;#039;,&lt;br /&gt;
		imageleft = &amp;#039;imageleft&amp;#039;,&lt;br /&gt;
		imageleftstyle = &amp;#039;imageleftstyle&amp;#039;,&lt;br /&gt;
		imagesetyle = &amp;#039;imagestyle&amp;#039;,&lt;br /&gt;
		list_and_num = &amp;#039;list%d&amp;#039;,&lt;br /&gt;
		listclass_and_num = &amp;#039;list%dclass&amp;#039;,&lt;br /&gt;
		liststyle_and_num = &amp;#039;list%dstyle&amp;#039;,&lt;br /&gt;
		list1padding = &amp;#039;list1padding&amp;#039;,&lt;br /&gt;
		listclass = &amp;#039;listclass&amp;#039;,&lt;br /&gt;
		listpadding = &amp;#039;listpadding&amp;#039;,&lt;br /&gt;
		liststyle = &amp;#039;liststyle&amp;#039;,&lt;br /&gt;
		name = &amp;#039;name&amp;#039;,&lt;br /&gt;
		navbar = &amp;#039;navbar&amp;#039;,&lt;br /&gt;
		navboxclass = &amp;#039;navboxclass&amp;#039;,&lt;br /&gt;
		nocat = &amp;#039;nocat&amp;#039;,&lt;br /&gt;
		nowrapitems = &amp;#039;nowrapitems&amp;#039;,&lt;br /&gt;
		oddstyle = &amp;#039;oddstyle&amp;#039;,&lt;br /&gt;
		orphan = &amp;#039;orphan&amp;#039;,&lt;br /&gt;
		state = &amp;#039;state&amp;#039;,&lt;br /&gt;
		style = &amp;#039;style&amp;#039;,&lt;br /&gt;
		templatestyles = &amp;#039;templatestyles&amp;#039;,&lt;br /&gt;
		child_templatestyles = &amp;#039;child templatestyles&amp;#039;,&lt;br /&gt;
		title = &amp;#039;title&amp;#039;,&lt;br /&gt;
		titleclass = &amp;#039;titleclass&amp;#039;,&lt;br /&gt;
		titlestyle = &amp;#039;titlestyle&amp;#039;,&lt;br /&gt;
		tracking = &amp;#039;tracking&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	-- names of navbar arguments&lt;br /&gt;
	navbar = {&lt;br /&gt;
		name = 1,&lt;br /&gt;
		fontstyle = &amp;#039;fontstyle&amp;#039;,&lt;br /&gt;
		mini = &amp;#039;mini&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox&amp;diff=1960&amp;oldid=0</id>
		<title>پودمان:Navbox</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox&amp;diff=1960&amp;oldid=0"/>
		<updated>2026-06-25T09:34:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbox&quot; title=&quot;پودمان:Navbox&quot;&gt;پودمان:Navbox&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
local p = {}&lt;br /&gt;
local navbar = require(&amp;#039;Module:Navbar&amp;#039;)._navbar&lt;br /&gt;
local cfg = mw.loadData(&amp;#039;Module:Navbox/configuration&amp;#039;)&lt;br /&gt;
local getArgs -- lazily initialized&lt;br /&gt;
local args&lt;br /&gt;
local format = string.format&lt;br /&gt;
&lt;br /&gt;
local function striped(wikitext, border)&lt;br /&gt;
	-- Return wikitext with markers replaced for odd/even striping.&lt;br /&gt;
	-- Child (subgroup) navboxes are flagged with a category that is removed&lt;br /&gt;
	-- by parent navboxes. The result is that the category shows all pages&lt;br /&gt;
	-- where a child navbox is not contained in a parent navbox.&lt;br /&gt;
	local orphanCat = cfg.category.orphan&lt;br /&gt;
	if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then&lt;br /&gt;
		-- No change; striping occurs in outermost navbox.&lt;br /&gt;
		return wikitext .. orphanCat&lt;br /&gt;
	end&lt;br /&gt;
	local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part&lt;br /&gt;
	if args[cfg.arg.evenodd] then&lt;br /&gt;
		if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then&lt;br /&gt;
			first, second = second, first&lt;br /&gt;
		else&lt;br /&gt;
			first = args[cfg.arg.evenodd]&lt;br /&gt;
			second = first&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local changer&lt;br /&gt;
	if first == second then&lt;br /&gt;
		changer = first&lt;br /&gt;
	else&lt;br /&gt;
		local index = 0&lt;br /&gt;
		changer = function (code)&lt;br /&gt;
			if code == &amp;#039;0&amp;#039; then&lt;br /&gt;
				-- Current occurrence is for a group before a nested table.&lt;br /&gt;
				-- Set it to first as a valid although pointless class.&lt;br /&gt;
				-- The next occurrence will be the first row after a title&lt;br /&gt;
				-- in a subgroup and will also be first.&lt;br /&gt;
				index = 0&lt;br /&gt;
				return first&lt;br /&gt;
			end&lt;br /&gt;
			index = index + 1&lt;br /&gt;
			return index % 2 == 1 and first or second&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local regex = orphanCat:gsub(&amp;#039;([%[%]])&amp;#039;, &amp;#039;%%%1&amp;#039;)&lt;br /&gt;
	return (wikitext:gsub(regex, &amp;#039;&amp;#039;):gsub(cfg.marker.regex, changer)) -- () omits gsub count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function processItem(item, nowrapitems)&lt;br /&gt;
	if item:sub(1, 2) == &amp;#039;{|&amp;#039; then&lt;br /&gt;
		-- Applying nowrap to lines in a table does not make sense.&lt;br /&gt;
		-- Add newlines to compensate for trim of x in |parm=x in a template.&lt;br /&gt;
		return &amp;#039;\n&amp;#039; .. item ..&amp;#039;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if nowrapitems == cfg.keyword.nowrapitems_yes then&lt;br /&gt;
		local lines = {}&lt;br /&gt;
		for line in (item .. &amp;#039;\n&amp;#039;):gmatch(&amp;#039;([^\n]*)\n&amp;#039;) do&lt;br /&gt;
			local prefix, content = line:match(&amp;#039;^([*:;#]+)%s*(.*)&amp;#039;)&lt;br /&gt;
			if prefix and not content:match(cfg.pattern.nowrap) then&lt;br /&gt;
				line = format(cfg.nowrap_item, prefix, content)&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, line)&lt;br /&gt;
		end&lt;br /&gt;
		item = table.concat(lines, &amp;#039;\n&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if item:match(&amp;#039;^[*:;#]&amp;#039;) then&lt;br /&gt;
		return &amp;#039;\n&amp;#039; .. item ..&amp;#039;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return item&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function has_navbar()&lt;br /&gt;
	return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off&lt;br /&gt;
		and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain&lt;br /&gt;
		and (&lt;br /&gt;
			args[cfg.arg.name]&lt;br /&gt;
			or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, &amp;#039;&amp;#039;)&lt;br /&gt;
				~= cfg.pattern.navbox&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- extract text color from css, which is the only permitted inline CSS for the navbar&lt;br /&gt;
local function extract_color(css_str)&lt;br /&gt;
	-- return nil because navbar takes its argument into mw.html which handles&lt;br /&gt;
	-- nil gracefully, removing the associated style attribute&lt;br /&gt;
	return mw.ustring.match(&amp;#039;;&amp;#039; .. css_str .. &amp;#039;;&amp;#039;, &amp;#039;.*;%s*([Cc][Oo][Ll][Oo][Rr]%s*:%s*.-)%s*;&amp;#039;) or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderNavBar(titleCell)&lt;br /&gt;
	if has_navbar() then&lt;br /&gt;
		titleCell:wikitext(navbar{&lt;br /&gt;
			[cfg.navbar.name] = args[cfg.arg.name],&lt;br /&gt;
			[cfg.navbar.mini] = 1,&lt;br /&gt;
			[cfg.navbar.fontstyle] = extract_color(&lt;br /&gt;
				(args[cfg.arg.basestyle] or &amp;#039;&amp;#039;) .. &amp;#039;;&amp;#039; .. (args[cfg.arg.titlestyle] or &amp;#039;&amp;#039;)&lt;br /&gt;
			)&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTitleRow(tbl)&lt;br /&gt;
	if not args[cfg.arg.title] then return end&lt;br /&gt;
&lt;br /&gt;
	local titleRow = tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	local titleCell = titleRow:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;scope&amp;#039;, &amp;#039;col&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	local titleColspan = 2&lt;br /&gt;
	if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end&lt;br /&gt;
	if args[cfg.arg.image] then titleColspan = titleColspan + 1 end&lt;br /&gt;
&lt;br /&gt;
	titleCell&lt;br /&gt;
		:cssText(args[cfg.arg.basestyle])&lt;br /&gt;
		:cssText(args[cfg.arg.titlestyle])&lt;br /&gt;
		:addClass(cfg.class.navbox_title)&lt;br /&gt;
		:attr(&amp;#039;colspan&amp;#039;, titleColspan)&lt;br /&gt;
&lt;br /&gt;
	renderNavBar(titleCell)&lt;br /&gt;
&lt;br /&gt;
	titleCell&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			-- id for aria-labelledby attribute&lt;br /&gt;
			:attr(&amp;#039;id&amp;#039;, mw.uri.anchorEncode(args[cfg.arg.title]))&lt;br /&gt;
			:addClass(args[cfg.arg.titleclass])&lt;br /&gt;
			:css(&amp;#039;font-size&amp;#039;, &amp;#039;114%&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;margin&amp;#039;, &amp;#039;0 4em&amp;#039;)&lt;br /&gt;
			:wikitext(processItem(args[cfg.arg.title]))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getAboveBelowColspan()&lt;br /&gt;
	local ret = 2&lt;br /&gt;
	if args[cfg.arg.imageleft] then ret = ret + 1 end&lt;br /&gt;
	if args[cfg.arg.image] then ret = ret + 1 end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderAboveRow(tbl)&lt;br /&gt;
	if not args[cfg.arg.above] then return end&lt;br /&gt;
&lt;br /&gt;
	tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:addClass(cfg.class.navbox_abovebelow)&lt;br /&gt;
			:addClass(args[cfg.arg.aboveclass])&lt;br /&gt;
			:cssText(args[cfg.arg.basestyle])&lt;br /&gt;
			:cssText(args[cfg.arg.abovestyle])&lt;br /&gt;
			:attr(&amp;#039;colspan&amp;#039;, getAboveBelowColspan())&lt;br /&gt;
			:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
				-- id for aria-labelledby attribute, if no title&lt;br /&gt;
				:attr(&amp;#039;id&amp;#039;, (not args[cfg.arg.title]) and mw.uri.anchorEncode(args[cfg.arg.above]) or nil)&lt;br /&gt;
				:wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems]))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBelowRow(tbl)&lt;br /&gt;
	if not args[cfg.arg.below] then return end&lt;br /&gt;
&lt;br /&gt;
	tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:addClass(cfg.class.navbox_abovebelow)&lt;br /&gt;
			:addClass(args[cfg.arg.belowclass])&lt;br /&gt;
			:cssText(args[cfg.arg.basestyle])&lt;br /&gt;
			:cssText(args[cfg.arg.belowstyle])&lt;br /&gt;
			:attr(&amp;#039;colspan&amp;#039;, getAboveBelowColspan())&lt;br /&gt;
			:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
				:wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems]))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderListRow(tbl, index, listnum, listnums_size)&lt;br /&gt;
	local row = tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if index == 1 and args[cfg.arg.imageleft] then&lt;br /&gt;
		row&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:addClass(cfg.class.noviewer)&lt;br /&gt;
				:addClass(cfg.class.navbox_image)&lt;br /&gt;
				:addClass(args[cfg.arg.imageclass])&lt;br /&gt;
				:css(&amp;#039;width&amp;#039;, &amp;#039;1px&amp;#039;)               -- Minimize width&lt;br /&gt;
				:css(&amp;#039;padding&amp;#039;, &amp;#039;0 2px 0 0&amp;#039;)&lt;br /&gt;
				:cssText(args[cfg.arg.imageleftstyle])&lt;br /&gt;
				:attr(&amp;#039;rowspan&amp;#039;, listnums_size)&lt;br /&gt;
				:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
					:wikitext(processItem(args[cfg.arg.imageleft]))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local group_and_num = format(cfg.arg.group_and_num, listnum)&lt;br /&gt;
	local groupstyle_and_num = format(cfg.arg.groupstyle_and_num, listnum)&lt;br /&gt;
	if args[group_and_num] then&lt;br /&gt;
		local groupCell = row:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
		-- id for aria-labelledby attribute, if lone group with no title or above&lt;br /&gt;
		if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then&lt;br /&gt;
			groupCell&lt;br /&gt;
				:attr(&amp;#039;id&amp;#039;, mw.uri.anchorEncode(args[cfg.arg.group1]))&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		groupCell&lt;br /&gt;
			:attr(&amp;#039;scope&amp;#039;, &amp;#039;row&amp;#039;)&lt;br /&gt;
			:addClass(cfg.class.navbox_group)&lt;br /&gt;
			:addClass(args[cfg.arg.groupclass])&lt;br /&gt;
			:cssText(args[cfg.arg.basestyle])&lt;br /&gt;
			-- If groupwidth not specified, minimize width&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, args[cfg.arg.groupwidth] or &amp;#039;1%&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
		groupCell&lt;br /&gt;
			:cssText(args[cfg.arg.groupstyle])&lt;br /&gt;
			:cssText(args[groupstyle_and_num])&lt;br /&gt;
			:wikitext(args[group_and_num])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listCell = row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if args[group_and_num] then&lt;br /&gt;
		listCell&lt;br /&gt;
			:addClass(cfg.class.navbox_list_with_group)&lt;br /&gt;
	else&lt;br /&gt;
		listCell:attr(&amp;#039;colspan&amp;#039;, 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not args[cfg.arg.groupwidth] then&lt;br /&gt;
		listCell:css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local rowstyle  -- usually nil so cssText(rowstyle) usually adds nothing&lt;br /&gt;
	if index % 2 == 1 then&lt;br /&gt;
		rowstyle = args[cfg.arg.oddstyle]&lt;br /&gt;
	else&lt;br /&gt;
		rowstyle = args[cfg.arg.evenstyle]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local list_and_num = format(cfg.arg.list_and_num, listnum)&lt;br /&gt;
	local listText = args[list_and_num]&lt;br /&gt;
	local oddEven = cfg.marker.oddeven&lt;br /&gt;
	if listText:sub(1, 12) == &amp;#039;&amp;lt;/div&amp;gt;&amp;lt;table&amp;#039; then&lt;br /&gt;
		-- Assume list text is for a subgroup navbox so no automatic striping for this row.&lt;br /&gt;
		oddEven = listText:find(cfg.pattern.navbox_title) and cfg.marker.restart or cfg.class.navbox_odd_part&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local liststyle_and_num = format(cfg.arg.liststyle_and_num, listnum)&lt;br /&gt;
	local listclass_and_num = format(cfg.arg.listclass_and_num, listnum)&lt;br /&gt;
	listCell&lt;br /&gt;
		:css(&amp;#039;padding&amp;#039;, &amp;#039;0&amp;#039;)&lt;br /&gt;
		:cssText(args[cfg.arg.liststyle])&lt;br /&gt;
		:cssText(rowstyle)&lt;br /&gt;
		:cssText(args[liststyle_and_num])&lt;br /&gt;
		:addClass(cfg.class.navbox_list)&lt;br /&gt;
		:addClass(cfg.class.navbox_part .. oddEven)&lt;br /&gt;
		:addClass(args[cfg.arg.listclass])&lt;br /&gt;
		:addClass(args[listclass_and_num])&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;padding&amp;#039;,&lt;br /&gt;
				(index == 1 and args[cfg.arg.list1padding]) or args[cfg.arg.listpadding] or &amp;#039;0 0.25em&amp;#039;&lt;br /&gt;
			)&lt;br /&gt;
			:wikitext(processItem(listText, args[cfg.arg.nowrapitems]))&lt;br /&gt;
&lt;br /&gt;
	if index == 1 and args[cfg.arg.image] then&lt;br /&gt;
		row&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:addClass(cfg.class.noviewer)&lt;br /&gt;
				:addClass(cfg.class.navbox_image)&lt;br /&gt;
				:addClass(args[cfg.arg.imageclass])&lt;br /&gt;
				:css(&amp;#039;width&amp;#039;, &amp;#039;1px&amp;#039;)               -- Minimize width&lt;br /&gt;
				:css(&amp;#039;padding&amp;#039;, &amp;#039;0 0 0 2px&amp;#039;)&lt;br /&gt;
				:cssText(args[cfg.arg.imagestyle])&lt;br /&gt;
				:attr(&amp;#039;rowspan&amp;#039;, listnums_size)&lt;br /&gt;
				:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
					:wikitext(processItem(args[cfg.arg.image]))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function has_list_class(htmlclass)&lt;br /&gt;
	local patterns = {&lt;br /&gt;
		&amp;#039;^&amp;#039; .. htmlclass .. &amp;#039;$&amp;#039;,&lt;br /&gt;
		&amp;#039;%s&amp;#039; .. htmlclass .. &amp;#039;$&amp;#039;,&lt;br /&gt;
		&amp;#039;^&amp;#039; .. htmlclass .. &amp;#039;%s&amp;#039;,&lt;br /&gt;
		&amp;#039;%s&amp;#039; .. htmlclass .. &amp;#039;%s&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for arg, _ in pairs(args) do&lt;br /&gt;
		if type(arg) == &amp;#039;string&amp;#039; and mw.ustring.find(arg, cfg.pattern.class) then&lt;br /&gt;
			for _, pattern in ipairs(patterns) do&lt;br /&gt;
				if mw.ustring.find(args[arg] or &amp;#039;&amp;#039;, pattern) then&lt;br /&gt;
					return true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- there are a lot of list classes in the wild, so we add their TemplateStyles&lt;br /&gt;
local function add_list_styles()&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local function add_list_templatestyles(htmlclass, templatestyles)&lt;br /&gt;
		if has_list_class(htmlclass) then&lt;br /&gt;
			return frame:extensionTag{&lt;br /&gt;
				name = &amp;#039;templatestyles&amp;#039;, args = { src = templatestyles }&lt;br /&gt;
			}&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local hlist_styles = add_list_templatestyles(&amp;#039;hlist&amp;#039;, cfg.hlist_templatestyles)&lt;br /&gt;
	local plainlist_styles = add_list_templatestyles(&amp;#039;plainlist&amp;#039;, cfg.plainlist_templatestyles)&lt;br /&gt;
	&lt;br /&gt;
	-- a second workaround for [[phab:T303378]]&lt;br /&gt;
	-- when that issue is fixed, we can actually use has_navbar not to emit the&lt;br /&gt;
	-- tag here if we want&lt;br /&gt;
	if has_navbar() and hlist_styles == &amp;#039;&amp;#039; then&lt;br /&gt;
		hlist_styles = frame:extensionTag{&lt;br /&gt;
			name = &amp;#039;templatestyles&amp;#039;, args = { src = cfg.hlist_templatestyles }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- hlist -&amp;gt; plainlist is best-effort to preserve old Common.css ordering.&lt;br /&gt;
	-- this ordering is not a guarantee because most navboxes will emit only&lt;br /&gt;
	-- one of these classes [hlist_note]&lt;br /&gt;
	return hlist_styles .. plainlist_styles&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function needsHorizontalLists(border)&lt;br /&gt;
	if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasBackgroundColors()&lt;br /&gt;
	for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle,&lt;br /&gt;
		cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do&lt;br /&gt;
		if tostring(args[key]):find(&amp;#039;background&amp;#039;, 1, true) 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 function hasBorders()&lt;br /&gt;
	for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle,&lt;br /&gt;
		cfg.arg.abovestyle, cfg.arg.belowstyle}) do&lt;br /&gt;
		if tostring(args[key]):find(&amp;#039;border&amp;#039;, 1, true) 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 function isIllegible()&lt;br /&gt;
	local styleratio = require(&amp;#039;Module:Color contrast&amp;#039;)._styleratio&lt;br /&gt;
	for key, style in pairs(args) do&lt;br /&gt;
		if tostring(key):match(cfg.pattern.style) then&lt;br /&gt;
			if styleratio{mw.text.unstripNoWiki(style)} &amp;lt; 4.5 then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTrackingCategories(border)&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end&lt;br /&gt;
	if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end&lt;br /&gt;
	if isIllegible() then table.insert(cats, cfg.category.illegible) end&lt;br /&gt;
	if hasBorders() then table.insert(cats, cfg.category.borders) end&lt;br /&gt;
	return cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTrackingCategories(builder, border)&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	if title.namespace ~= 10 then return end -- not in template space&lt;br /&gt;
	local subpage = title.subpageText&lt;br /&gt;
	if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox&lt;br /&gt;
		or subpage == cfg.keyword.subpage_testcases then return end&lt;br /&gt;
&lt;br /&gt;
	for _, cat in ipairs(getTrackingCategories(border)) do&lt;br /&gt;
		builder:wikitext(&amp;#039;[[رده:&amp;#039; .. cat .. &amp;#039;]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMainTable(border, listnums)&lt;br /&gt;
	local tbl = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
		:addClass(cfg.class.nowraplinks)&lt;br /&gt;
		:addClass(args[cfg.arg.bodyclass])&lt;br /&gt;
&lt;br /&gt;
	local state = args[cfg.arg.state]&lt;br /&gt;
	if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then&lt;br /&gt;
		if state == cfg.keyword.state_collapsed then&lt;br /&gt;
			state = cfg.class.collapsed&lt;br /&gt;
		end&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass(cfg.class.collapsible)&lt;br /&gt;
			:addClass(state or cfg.class.autocollapse)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	tbl:css(&amp;#039;border-spacing&amp;#039;, 0)&lt;br /&gt;
	if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass(cfg.class.navbox_subgroup)&lt;br /&gt;
			:cssText(args[cfg.arg.bodystyle])&lt;br /&gt;
			:cssText(args[cfg.arg.style])&lt;br /&gt;
	else  -- regular navbox - bodystyle and style will be applied to the wrapper table&lt;br /&gt;
		tbl&lt;br /&gt;
			:addClass(cfg.class.navbox_inner)&lt;br /&gt;
			:css(&amp;#039;background&amp;#039;, &amp;#039;transparent&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;color&amp;#039;, &amp;#039;inherit&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	tbl:cssText(args[cfg.arg.innerstyle])&lt;br /&gt;
&lt;br /&gt;
	renderTitleRow(tbl)&lt;br /&gt;
	renderAboveRow(tbl)&lt;br /&gt;
	local listnums_size = #listnums&lt;br /&gt;
	for i, listnum in ipairs(listnums) do&lt;br /&gt;
		renderListRow(tbl, i, listnum, listnums_size)&lt;br /&gt;
	end&lt;br /&gt;
	renderBelowRow(tbl)&lt;br /&gt;
&lt;br /&gt;
	return tbl&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function add_navbox_styles(hiding_templatestyles)&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	-- This is a lambda so that it doesn&amp;#039;t need the frame as a parameter&lt;br /&gt;
	local function add_user_styles(templatestyles)&lt;br /&gt;
		if templatestyles and templatestyles ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			return frame:extensionTag{&lt;br /&gt;
				name = &amp;#039;templatestyles&amp;#039;, args = { src = templatestyles }&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- get templatestyles. load base from config so that Lua only needs to do&lt;br /&gt;
	-- the work once of parser tag expansion&lt;br /&gt;
	local base_templatestyles = cfg.templatestyles&lt;br /&gt;
	local templatestyles = add_user_styles(args[cfg.arg.templatestyles])&lt;br /&gt;
	local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles])&lt;br /&gt;
&lt;br /&gt;
	-- The &amp;#039;navbox-styles&amp;#039; div exists to wrap the styles to work around T200206&lt;br /&gt;
	-- more elegantly. Instead of combinatorial rules, this ends up being linear&lt;br /&gt;
	-- number of CSS rules.&lt;br /&gt;
	return mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
		:addClass(cfg.class.navbox_styles)&lt;br /&gt;
		:wikitext(&lt;br /&gt;
			add_list_styles() .. -- see [hlist_note] applied to &amp;#039;before base_templatestyles&amp;#039;&lt;br /&gt;
			base_templatestyles ..&lt;br /&gt;
			templatestyles ..&lt;br /&gt;
			child_templatestyles ..&lt;br /&gt;
			table.concat(hiding_templatestyles)&lt;br /&gt;
		)&lt;br /&gt;
		:done()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- work around [[phab:T303378]]&lt;br /&gt;
-- for each arg: find all the templatestyles strip markers, insert them into a&lt;br /&gt;
-- table. then remove all templatestyles markers from the arg&lt;br /&gt;
local function move_hiding_templatestyles(args)&lt;br /&gt;
	local gfind = string.gfind&lt;br /&gt;
	local gsub = string.gsub&lt;br /&gt;
	local templatestyles_markers = {}&lt;br /&gt;
	local strip_marker_pattern = &amp;#039;(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)&amp;#039;&lt;br /&gt;
	for k, arg in pairs(args) do&lt;br /&gt;
		for marker in gfind(arg, strip_marker_pattern) do&lt;br /&gt;
			table.insert(templatestyles_markers, marker)&lt;br /&gt;
		end&lt;br /&gt;
		args[k] = gsub(arg, strip_marker_pattern, &amp;#039;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return templatestyles_markers&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._navbox(navboxArgs)&lt;br /&gt;
	args = navboxArgs&lt;br /&gt;
	local hiding_templatestyles = move_hiding_templatestyles(args)&lt;br /&gt;
	local listnums = {}&lt;br /&gt;
&lt;br /&gt;
	for k, _ in pairs(args) do&lt;br /&gt;
		if type(k) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			local listnum = k:match(cfg.pattern.listnum)&lt;br /&gt;
			if listnum then table.insert(listnums, tonumber(listnum)) end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(listnums)&lt;br /&gt;
&lt;br /&gt;
	local border = mw.text.trim(args[cfg.arg.border] or args[1] or &amp;#039;&amp;#039;)&lt;br /&gt;
	if border == cfg.keyword.border_child then&lt;br /&gt;
		border = cfg.keyword.border_subgroup&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- render the main body of the navbox&lt;br /&gt;
	local tbl = renderMainTable(border, listnums)&lt;br /&gt;
&lt;br /&gt;
	local res = mw.html.create()&lt;br /&gt;
	-- render the appropriate wrapper for the navbox, based on the border param&lt;br /&gt;
&lt;br /&gt;
	if border == cfg.keyword.border_none then&lt;br /&gt;
		res:node(add_navbox_styles(hiding_templatestyles))&lt;br /&gt;
		local nav = res:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;role&amp;#039;, &amp;#039;navigation&amp;#039;)&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		-- aria-labelledby title, otherwise above, otherwise lone group&lt;br /&gt;
		if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1]&lt;br /&gt;
			and not args[cfg.arg.group2]) then&lt;br /&gt;
			nav:attr(&lt;br /&gt;
				&amp;#039;aria-labelledby&amp;#039;,&lt;br /&gt;
				mw.uri.anchorEncode(&lt;br /&gt;
					args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]&lt;br /&gt;
				)&lt;br /&gt;
			)&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr(&amp;#039;aria-label&amp;#039;, cfg.aria_label)&lt;br /&gt;
		end&lt;br /&gt;
	elseif border == cfg.keyword.border_subgroup then&lt;br /&gt;
		-- We assume that this navbox is being rendered in a list cell of a&lt;br /&gt;
		-- parent navbox, and is therefore inside a div with padding:0em 0.25em.&lt;br /&gt;
		-- We start with a &amp;lt;/div&amp;gt; to avoid the padding being applied, and at the&lt;br /&gt;
		-- end add a &amp;lt;div&amp;gt; to balance out the parent&amp;#039;s &amp;lt;/div&amp;gt;&lt;br /&gt;
		res&lt;br /&gt;
			:wikitext(&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		res:node(add_navbox_styles(hiding_templatestyles))&lt;br /&gt;
		local nav = res:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;role&amp;#039;, &amp;#039;navigation&amp;#039;)&lt;br /&gt;
			:addClass(cfg.class.navbox)&lt;br /&gt;
			:addClass(args[cfg.arg.navboxclass])&lt;br /&gt;
			:cssText(args[cfg.arg.bodystyle])&lt;br /&gt;
			:cssText(args[cfg.arg.style])&lt;br /&gt;
			:css(&amp;#039;padding&amp;#039;, &amp;#039;3px&amp;#039;)&lt;br /&gt;
			:node(tbl)&lt;br /&gt;
		-- aria-labelledby title, otherwise above, otherwise lone group&lt;br /&gt;
		if args[cfg.arg.title] or args[cfg.arg.above]&lt;br /&gt;
			or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then&lt;br /&gt;
			nav:attr(&lt;br /&gt;
				&amp;#039;aria-labelledby&amp;#039;,&lt;br /&gt;
				mw.uri.anchorEncode(args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1])&lt;br /&gt;
			)&lt;br /&gt;
		else&lt;br /&gt;
			nav:attr(&amp;#039;aria-label&amp;#039;, cfg.aria_label)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then&lt;br /&gt;
		renderTrackingCategories(res, border)&lt;br /&gt;
	end&lt;br /&gt;
	return striped(tostring(res), border)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	end&lt;br /&gt;
	args = getArgs(frame, {wrappers = {cfg.pattern.navbox}})&lt;br /&gt;
&lt;br /&gt;
	-- Read the arguments in the order they&amp;#039;ll be output in, to make references&lt;br /&gt;
	-- number in the right order.&lt;br /&gt;
	local _&lt;br /&gt;
	_ = args[cfg.arg.title]&lt;br /&gt;
	_ = args[cfg.arg.above]&lt;br /&gt;
	-- Limit this to 20 as covering &amp;#039;most&amp;#039; cases (that&amp;#039;s a SWAG) and because&lt;br /&gt;
	-- iterator approach won&amp;#039;t work here&lt;br /&gt;
	for i = 1, 20 do&lt;br /&gt;
		_ = args[format(cfg.arg.group_and_num, i)]&lt;br /&gt;
		_ = args[format(cfg.arg.list_and_num, i)]&lt;br /&gt;
	end&lt;br /&gt;
	_ = args[cfg.arg.below]&lt;br /&gt;
&lt;br /&gt;
	return p._navbox(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbar/styles.css&amp;diff=1957&amp;oldid=0</id>
		<title>پودمان:Navbar/styles.css</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbar/styles.css&amp;diff=1957&amp;oldid=0"/>
		<updated>2026-06-25T09:34:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbar/styles.css&quot; title=&quot;پودمان:Navbar/styles.css&quot;&gt;پودمان:Navbar/styles.css&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* {{pp|small=yes}} */&lt;br /&gt;
.navbar {&lt;br /&gt;
	display: inline;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-collapse {&lt;br /&gt;
	float: right;&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-boxtext {&lt;br /&gt;
	word-spacing: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar ul {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	line-height: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-brackets::before {&lt;br /&gt;
	margin-left: -0.125em;&lt;br /&gt;
	content: &amp;#039;[ &amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-brackets::after {&lt;br /&gt;
	margin-right: -0.125em;&lt;br /&gt;
	content: &amp;#039; ]&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar li {&lt;br /&gt;
	word-spacing: -0.125em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar a &amp;gt; span,&lt;br /&gt;
.navbar a &amp;gt; abbr {&lt;br /&gt;
	text-decoration: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-mini abbr {&lt;br /&gt;
	font-variant: small-caps;&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	cursor: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-ct-full {&lt;br /&gt;
	font-size: 114%;&lt;br /&gt;
	margin: 0 7em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-ct-mini {&lt;br /&gt;
	font-size: 114%;&lt;br /&gt;
	margin: 0 4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* not the usual @media screen, we simply remove navbar in @media print */&lt;br /&gt;
html.skin-theme-clientpref-night .navbar li a abbr {&lt;br /&gt;
	color: var(--color-base) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
	html.skin-theme-clientpref-os .navbar li a abbr {&lt;br /&gt;
		color: var(--color-base) !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media print {&lt;br /&gt;
	.navbar {&lt;br /&gt;
		display: none !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbar/configuration&amp;diff=1954&amp;oldid=0</id>
		<title>پودمان:Navbar/configuration</title>
		<link rel="alternate" type="text/html" href="https://fa.farahowzeh.ir/w/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbar/configuration&amp;diff=1954&amp;oldid=0"/>
		<updated>2026-06-25T09:34:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Esfandiari&quot; class=&quot;mw-userlink&quot; title=&quot;کاربر:Esfandiari&quot;&gt;&lt;bdi&gt;Esfandiari&lt;/bdi&gt;&lt;/a&gt; &lt;a href=&quot;/wiki/%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Navbar/configuration&quot; title=&quot;پودمان:Navbar/configuration&quot;&gt;پودمان:Navbar/configuration&lt;/a&gt; را از طریق بارگذاری پرونده درون‌ریزی کرد (۲ نسخه)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;return {&lt;br /&gt;
	[&amp;#039;templatestyles&amp;#039;] = &amp;#039;پودمان:Navbar/styles.css&amp;#039;,&lt;br /&gt;
	[&amp;#039;hlist_templatestyles&amp;#039;] = &amp;#039;Hlist/styles.css&amp;#039;,&lt;br /&gt;
	[&amp;#039;box_text&amp;#039;] = &amp;#039;این جعبه: &amp;#039;,			-- default text box when not plain or mini&lt;br /&gt;
	[&amp;#039;title_namespace&amp;#039;] = &amp;#039;الگو&amp;#039;,		-- namespace to default to for title&lt;br /&gt;
	[&amp;#039;invalid_title&amp;#039;] = &amp;#039;عنوان نامعتبر &amp;#039;,&lt;br /&gt;
	[&amp;#039;classes&amp;#039;] = { -- set a line to nil if you don&amp;#039;t want it&lt;br /&gt;
		[&amp;#039;navbar&amp;#039;] = &amp;#039;navbar&amp;#039;,&lt;br /&gt;
		[&amp;#039;plainlinks&amp;#039;] = &amp;#039;plainlinks&amp;#039;, -- plainlinks&lt;br /&gt;
		[&amp;#039;horizontal_list&amp;#039;] = &amp;#039;hlist&amp;#039;, -- horizontal list class&lt;br /&gt;
		[&amp;#039;mini&amp;#039;] = &amp;#039;navbar-mini&amp;#039;, -- class indicating small links in the navbar&lt;br /&gt;
		[&amp;#039;this_box&amp;#039;] = &amp;#039;navbar-boxtext&amp;#039;,&lt;br /&gt;
		[&amp;#039;brackets&amp;#039;] = &amp;#039;navbar-brackets&amp;#039;,&lt;br /&gt;
		-- &amp;#039;collapsible&amp;#039; is the key for a class to indicate the navbar is&lt;br /&gt;
		-- setting up the collapsible element in addition to the normal&lt;br /&gt;
		-- navbar.&lt;br /&gt;
		[&amp;#039;collapsible&amp;#039;] = &amp;#039;navbar-collapse&amp;#039;,&lt;br /&gt;
		[&amp;#039;collapsible_title_mini&amp;#039;] = &amp;#039;navbar-ct-mini&amp;#039;,&lt;br /&gt;
		[&amp;#039;collapsible_title_full&amp;#039;] = &amp;#039;navbar-ct-full&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
</feed>