<link href="../fonts/font.css" rel="stylesheet" type="text/css">

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
		<id>https://wiki.imaroof.ir/index.php?action=history&amp;feed=atom&amp;title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86%3AInfobox_settlement</id>
		<title>پودمان:Infobox settlement - تاریخچهٔ ویرایش‌ها</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.imaroof.ir/index.php?action=history&amp;feed=atom&amp;title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86%3AInfobox_settlement"/>
		<link rel="alternate" type="text/html" href="https://wiki.imaroof.ir/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Infobox_settlement&amp;action=history"/>
		<updated>2026-08-03T16:30:53Z</updated>
		<subtitle>تاریخچهٔ ویرایش‌های این صفحه در ویکی</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://wiki.imaroof.ir/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Infobox_settlement&amp;diff=991&amp;oldid=prev</id>
		<title>Admin: ۱ نسخه واردشده</title>
		<link rel="alternate" type="text/html" href="https://wiki.imaroof.ir/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Infobox_settlement&amp;diff=991&amp;oldid=prev"/>
				<updated>2016-03-03T11:25:26Z</updated>
		
		<summary type="html">&lt;p&gt;۱ نسخه واردشده&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;tr style='vertical-align: top;' lang='fa'&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;→ نسخهٔ قدیمی‌تر&lt;/td&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;نسخهٔ ‏۱۳ اسفند ۱۳۹۴، ساعت ۱۱:۲۵&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan='2' style='text-align: center;' lang='fa'&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(بدون تفاوت)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>https://wiki.imaroof.ir/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Infobox_settlement&amp;diff=990&amp;oldid=prev</id>
		<title>Rich Farmbrough: Define local rndv in lengthdisp</title>
		<link rel="alternate" type="text/html" href="https://wiki.imaroof.ir/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Infobox_settlement&amp;diff=990&amp;oldid=prev"/>
				<updated>2016-01-09T12:57:59Z</updated>
		
		<summary type="html">&lt;p&gt;Define local rndv in lengthdisp&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--&lt;br /&gt;
-- This template will implement {{Infobox settlement}}&lt;br /&gt;
--&lt;br /&gt;
local p = {}&lt;br /&gt;
local math_module = require( &amp;quot;Module:Math&amp;quot; )&lt;br /&gt;
local precision = math_module._precision&lt;br /&gt;
local infobox_module = require('Module:Infobox')&lt;br /&gt;
local image_module = require('Module:InfoboxImage')&lt;br /&gt;
local locationmap_module = require('Module:Location map')&lt;br /&gt;
&lt;br /&gt;
local function isnotempty(s)&lt;br /&gt;
	return s and s:match( '^%s*(.-)%s*$' ) ~= ''&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function firstnonempty(s)&lt;br /&gt;
	for i=1,#s do&lt;br /&gt;
		if (s[i] and s[i]:match( '^%s*(.-)%s*$' ) ~= '') then&lt;br /&gt;
			return s[i]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ''&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function yesno(s, yes, no, ukn, blank)&lt;br /&gt;
	-- this function implements yesno&lt;br /&gt;
	local vals = {['yes'] = 1, ['y'] = 1, ['1'] = 1, ['no'] = 0, ['n'] = 0, ['0'] = 0}&lt;br /&gt;
	if( s and s:match( '^%s*(.-)%s*$' ) ~= '') then&lt;br /&gt;
		local outval = vals(s:lower())&lt;br /&gt;
		if( outval == nil ) then&lt;br /&gt;
			return ukn&lt;br /&gt;
		else&lt;br /&gt;
			return (outval == 1) and yes or no&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return blank&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function rnd(num, digits)&lt;br /&gt;
	-- This function implements {{rnd}}&lt;br /&gt;
	return math_module._precision_format(tostring(num), tostring(digits))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function order_of_magnitude(num)&lt;br /&gt;
	-- This function partially implements {{Order of magnitude}}&lt;br /&gt;
    if( num ) then&lt;br /&gt;
		num = math.abs(num)&lt;br /&gt;
		if( num == 0 ) then&lt;br /&gt;
			return 0&lt;br /&gt;
		else&lt;br /&gt;
			return math.floor( math.log10(num) )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function page_exists( title )&lt;br /&gt;
    -- This function implements #ifexist&lt;br /&gt;
    local noError, titleObject = pcall(mw.title.new, title)&lt;br /&gt;
    if not noError then&lt;br /&gt;
        return false&lt;br /&gt;
    else&lt;br /&gt;
        if titleObject then&lt;br /&gt;
            return titleObject.exists&lt;br /&gt;
        else&lt;br /&gt;
            return false&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function link(pagelink, linktext, name)&lt;br /&gt;
    -- This function implements {{Infobox settlement/link}}&lt;br /&gt;
    pagelink = pagelink or ''&lt;br /&gt;
    linktext = linktext or ''&lt;br /&gt;
    name     = name or ''&lt;br /&gt;
    &lt;br /&gt;
    if( pagelink ~= '' ) then&lt;br /&gt;
        -- use &amp;quot;[[pagelink|linktext]]&amp;quot;&lt;br /&gt;
        return string.format('[[%s|%s]]', pagelink, linktext)&lt;br /&gt;
    else&lt;br /&gt;
        -- try &amp;quot;[[linktext of PAGENAME|linktext]]&amp;quot;&lt;br /&gt;
        pagelink = string.format('%s of %s',linktext, mw.title.getCurrentTitle().text)&lt;br /&gt;
        if( page_exists( pagelink ) ) then&lt;br /&gt;
            return string.format('[[%s|%s]]', pagelink, linktext)&lt;br /&gt;
        elseif( name ~= '' ) then&lt;br /&gt;
            -- try &amp;quot;[[linktext of name|linktext]]&amp;quot;&lt;br /&gt;
            pagelink = string.format('%s of %s', linktext, name)&lt;br /&gt;
            if( page_exists(pagelink) ) then&lt;br /&gt;
               return string.format('[[%s|%s]]', pagelink, linktext)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return linktext&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function columns(cell1, cell2, cell3, cell4)&lt;br /&gt;
    --- This function implements {{Infobox settlement/columns}} with no cell0&lt;br /&gt;
    local function makecell( c1 )&lt;br /&gt;
        if isnotempty(c1) then&lt;br /&gt;
			local root = mw.html.create('td')&lt;br /&gt;
			root:attr('align', 'center')&lt;br /&gt;
				:css('vertical-align', 'middle')&lt;br /&gt;
				:wikitext(c1)&lt;br /&gt;
            return tostring(root)&lt;br /&gt;
        end&lt;br /&gt;
        return ''&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local function makerow( c1, c2 )&lt;br /&gt;
        local root = mw.html.create('')&lt;br /&gt;
        if isnotempty(c1) then&lt;br /&gt;
            if isnotempty(c2) then&lt;br /&gt;
            	root:tag('td')&lt;br /&gt;
					:attr('align', 'center')&lt;br /&gt;
					:css('vertical-align', 'middle')&lt;br /&gt;
					:wikitext(c1)&lt;br /&gt;
				root:tag('td')&lt;br /&gt;
					:attr('align', 'center')&lt;br /&gt;
					:css('vertical-align', 'middle')&lt;br /&gt;
					:wikitext(c2)&lt;br /&gt;
            else&lt;br /&gt;
            	root:tag('td')&lt;br /&gt;
					:attr('colspan', '2')&lt;br /&gt;
					:attr('align', 'center')&lt;br /&gt;
					:css('vertical-align', 'middle')&lt;br /&gt;
					:wikitext(c1)&lt;br /&gt;
            end&lt;br /&gt;
        elseif isnotempty(c2) then&lt;br /&gt;
			root:tag('td')&lt;br /&gt;
				:attr('colspan', '2')&lt;br /&gt;
				:attr('align', 'center')&lt;br /&gt;
				:css('vertical-align', 'middle')&lt;br /&gt;
				:wikitext(c2)&lt;br /&gt;
        end&lt;br /&gt;
        return tostring(root)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local count = 0&lt;br /&gt;
    count = count + (isnotempty(cell1) and 1 or 0)&lt;br /&gt;
    count = count + (isnotempty(cell2) and 1 or 0)&lt;br /&gt;
    count = count + (isnotempty(cell3) and 1 or 0)&lt;br /&gt;
    count = count + (isnotempty(cell4) and 1 or 0)&lt;br /&gt;
&lt;br /&gt;
    if(count &amp;gt; 0) then&lt;br /&gt;
		local root = mw.html.create('table')&lt;br /&gt;
		root:css('width', '100%')&lt;br /&gt;
			:css('background', 'transparent')&lt;br /&gt;
		if(count &amp;gt; 2) then&lt;br /&gt;
			root:tag('tr')&lt;br /&gt;
					:wikitext(makerow(cell1, cell2))&lt;br /&gt;
			root:tag('tr')&lt;br /&gt;
					:wikitext(makerow(cell3, cell4))&lt;br /&gt;
		else&lt;br /&gt;
			root:tag('tr')&lt;br /&gt;
				:wikitext(makecell(cell1))&lt;br /&gt;
				:wikitext(makecell(cell2))&lt;br /&gt;
				:wikitext(makecell(cell3))&lt;br /&gt;
				:wikitext(makecell(cell4))&lt;br /&gt;
		end&lt;br /&gt;
		return tostring(root)&lt;br /&gt;
	else&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function columns2(cell0, cell1, cell2, cell3, cell4, cell5)&lt;br /&gt;
    -- This function implements {{Infobox settlement/columns}} with cell0&lt;br /&gt;
    local function makerow( c1 )&lt;br /&gt;
		if isnotempty(c1) then&lt;br /&gt;
			local root = mw.html.create('tr')&lt;br /&gt;
			root:tag('td')&lt;br /&gt;
				:attr('align', 'center')&lt;br /&gt;
				:css('style', 'vertical-align:middle')&lt;br /&gt;
				:wikitext(c1)&lt;br /&gt;
			return tostring(root)&lt;br /&gt;
		else&lt;br /&gt;
			return ''&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
    &lt;br /&gt;
	local count = 0&lt;br /&gt;
	count = count + (isnotempty(cell1) and 1 or 0)&lt;br /&gt;
	count = count + (isnotempty(cell2) and 1 or 0)&lt;br /&gt;
	count = count + (isnotempty(cell3) and 1 or 0)&lt;br /&gt;
	count = count + (isnotempty(cell4) and 1 or 0)&lt;br /&gt;
	count = count + (isnotempty(cell5) and 1 or 0)&lt;br /&gt;
&lt;br /&gt;
	if(count &amp;gt; 0) then&lt;br /&gt;
		local root = mw.html.create('table')&lt;br /&gt;
		root:css('width', '100%')&lt;br /&gt;
			:css('background', 'transparent')&lt;br /&gt;
		local row = root:tag('tr')&lt;br /&gt;
		row&lt;br /&gt;
			:tag('td')&lt;br /&gt;
				:tag('table')&lt;br /&gt;
					:css('width', '100%')&lt;br /&gt;
					:css('background', 'transparent')&lt;br /&gt;
					:wikitext(makerow(cell1))&lt;br /&gt;
					:wikitext(makerow(cell2))&lt;br /&gt;
					:wikitext(makerow(cell3))&lt;br /&gt;
					:wikitext(makerow(cell4))&lt;br /&gt;
					:wikitext(makerow(cell5))&lt;br /&gt;
        if isnotempty(cell0) then&lt;br /&gt;
			row&lt;br /&gt;
				:tag('td')&lt;br /&gt;
					:attr('align', 'center')&lt;br /&gt;
					:css('vertical-align', 'top')&lt;br /&gt;
					:wikitext(cell0)&lt;br /&gt;
		end&lt;br /&gt;
		return tostring(root)&lt;br /&gt;
	else&lt;br /&gt;
		return cell0&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function translitlangbox(transtype, transinfo)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	args['child'] = 'yes'&lt;br /&gt;
	local count = 0&lt;br /&gt;
	for i=0,6 do&lt;br /&gt;
		if(isnotempty(transinfo[i]) and isnotempty(transtype[i])) then&lt;br /&gt;
			args['rowclass' .. tostring(i+1)] = isnotempty(transtype[i+1]) and 'mergedrow' or 'mergedbottomrow'&lt;br /&gt;
			args['label' .. tostring(i+1)] = '&amp;amp;nbsp;•&amp;amp;nbsp;' .. transtype[i]&lt;br /&gt;
			args['data' .. tostring(i+1)] = transinfo[i]&lt;br /&gt;
			count = count + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ( count &amp;gt; 0 ) and args or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function unitpref(pref, region, unit_type)&lt;br /&gt;
    -- This function implements {{Infobox settlement/pref}}&lt;br /&gt;
    local pref_impus = { ['imperial'] = 1, ['english'] = 1, ['uk'] = 1, ['us'] = 1, &lt;br /&gt;
        ['u.s.'] = 1, ['standard'] = 1, ['us customary'] = 1, ['u.s. customary'] = 1}&lt;br /&gt;
    local pr = (pref and pref:lower()) or ''&lt;br /&gt;
    local r = region or ''&lt;br /&gt;
    local u = unit_type or ''&lt;br /&gt;
&lt;br /&gt;
    pr = mw.ustring.gsub(pr, '^%s*([a-z].*[a-z\.])%s*$','%1')&lt;br /&gt;
&lt;br /&gt;
    if( pref_impus[pr] ) then&lt;br /&gt;
        return 'impus'&lt;br /&gt;
    end&lt;br /&gt;
    if( mw.ustring.match( r, 'United States' ) ) then&lt;br /&gt;
        return 'impus'&lt;br /&gt;
    end&lt;br /&gt;
    if( mw.ustring.match( r, 'United Kingdom' ) ) then&lt;br /&gt;
        return 'impus'&lt;br /&gt;
    end&lt;br /&gt;
    if( (u .. '_' .. pr ) == 'area_dunam' ) then&lt;br /&gt;
        return 'dunam'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return 'metric'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function areadisp(frame, pref, name, mag, ha, km2, sqmi, acre, dunam, percent, link)&lt;br /&gt;
    -- This function implements {{Infobox settlement/areadisp}}&lt;br /&gt;
    local function formatnum(num)&lt;br /&gt;
        return frame:callParserFunction{ name = 'formatnum', args = num }&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local metv, metu = '', ''&lt;br /&gt;
    local impv, impu = '', ''&lt;br /&gt;
    local dunv, dunu = '', ''&lt;br /&gt;
    local lstr1, lstr2 = '', ''&lt;br /&gt;
    local rndv = 0&lt;br /&gt;
    &lt;br /&gt;
    pref = pref or ''&lt;br /&gt;
    name = name or ''&lt;br /&gt;
    mag = mag or ''&lt;br /&gt;
    ha = ha or ''&lt;br /&gt;
    km2 = km2 or ''&lt;br /&gt;
    sqmi = sqmi or ''&lt;br /&gt;
    acre = acre or ''&lt;br /&gt;
    dunam = dunam or ''&lt;br /&gt;
    percent = percent or ''&lt;br /&gt;
    link = link or ''&lt;br /&gt;
    &lt;br /&gt;
    if ( ha ~= '' ) then&lt;br /&gt;
        metv = formatnum( ha )&lt;br /&gt;
        metu = 'ha'&lt;br /&gt;
    elseif ( km2 ~= '' ) then&lt;br /&gt;
        metv = formatnum( km2 )&lt;br /&gt;
        metu = 'km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;'&lt;br /&gt;
    elseif ( dunam ~= '' ) then&lt;br /&gt;
        if (tonumber(dunam) &amp;lt; 1E3) then&lt;br /&gt;
            -- convert dunams to hectares&lt;br /&gt;
            metv = dunam/10&lt;br /&gt;
            metu = 'ha'&lt;br /&gt;
            rndv = precision(dunam)+1&lt;br /&gt;
            metv = rnd(metv,rndv)&lt;br /&gt;
        else&lt;br /&gt;
            -- convert dunams to square kilometers&lt;br /&gt;
            metv = dunam/1000&lt;br /&gt;
            metu = 'km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;'&lt;br /&gt;
            rndv = precision(dunam)+3&lt;br /&gt;
            metv = rnd(metv,rndv)&lt;br /&gt;
        end&lt;br /&gt;
    elseif( acre ~= '' ) then &lt;br /&gt;
        -- convert acres to hectares&lt;br /&gt;
        metv = acre*0.4046856422&lt;br /&gt;
        metu = 'ha'&lt;br /&gt;
        rndv = math.max(precision(acre),-1*order_of_magnitude(metv))&lt;br /&gt;
        metv = rnd(metv,rndv)&lt;br /&gt;
    elseif( sqmi ~= '' ) then&lt;br /&gt;
        -- convert sqmi to km2&lt;br /&gt;
        metv = sqmi*2.589988110336&lt;br /&gt;
        metu = 'km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;'&lt;br /&gt;
        rndv = math.max(precision(sqmi)-1,-1*order_of_magnitude(metv))&lt;br /&gt;
        metv = rnd(metv,rndv)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if ( acre ~= '' ) then&lt;br /&gt;
        impv = formatnum( acre )&lt;br /&gt;
        impu = 'acre'&lt;br /&gt;
    elseif ( sqmi ~= '' ) then&lt;br /&gt;
        impv = formatnum( sqmi )&lt;br /&gt;
        impu = 'sq&amp;amp;nbsp;mi'&lt;br /&gt;
    elseif (ha ~= '' ) then&lt;br /&gt;
        -- convert hectares to acres&lt;br /&gt;
        impv = ha/0.4046856422&lt;br /&gt;
        impu = 'acre'&lt;br /&gt;
        rndv = precision(ha)&lt;br /&gt;
        impv = rnd(impv,rndv)&lt;br /&gt;
    elseif (km2 ~= '' ) then&lt;br /&gt;
        -- convert square kilometres to square miles&lt;br /&gt;
        impv = km2/2.589988110336&lt;br /&gt;
        impu = 'sq&amp;amp;nbsp;mi'&lt;br /&gt;
        rndv = math.max(precision(km2),-1*order_of_magnitude(impv))&lt;br /&gt;
        impv = rnd(impv,rndv)&lt;br /&gt;
    elseif (dunam ~= '' ) then&lt;br /&gt;
        if (tonumber(dunam) &amp;lt; 2589) then&lt;br /&gt;
            -- convert dunams to acres&lt;br /&gt;
            impv = dunam/4.046856422&lt;br /&gt;
            impu = 'acre'&lt;br /&gt;
            rndv = math.max(precision(dunam),-1*order_of_magnitude(impv))&lt;br /&gt;
            impv = rnd(impv,rndv)&lt;br /&gt;
        else&lt;br /&gt;
            -- convert dunams to square miles&lt;br /&gt;
            impv = dunam/2589.988110336&lt;br /&gt;
            impu = 'sq&amp;amp;nbsp;mi'&lt;br /&gt;
            rndv = math.max(precision(dunam)+3,-1*order_of_magnitude(impv))&lt;br /&gt;
            impv = rnd(impv,rndv)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if( mw.ustring.match(pref:lower(), '^%s*dunam%s*$') and (dunam == '') ) then&lt;br /&gt;
        if( km2 ~= '' ) then&lt;br /&gt;
            -- convert square kilometres to dunams&lt;br /&gt;
            dunv = km2*1000&lt;br /&gt;
            rndv = precision(km2)-3&lt;br /&gt;
            dunv = rnd(dunv,rndv)&lt;br /&gt;
        elseif( ha ~= '' ) then&lt;br /&gt;
            -- convert hectares to dunams&lt;br /&gt;
            dunv = ha*10&lt;br /&gt;
            rndv = precision(ha)-1&lt;br /&gt;
            dunv = rnd(dunv,rndv)&lt;br /&gt;
        elseif( sqmi ~= '' ) then&lt;br /&gt;
            -- convert square miles to dunams&lt;br /&gt;
            dunv = sqmi*2589.988110336&lt;br /&gt;
            rndv = math.max(precision(sqmi)-4,-1*order_of_magnitude(dunv))&lt;br /&gt;
            dunv = rnd(dunv,rndv)&lt;br /&gt;
        elseif( acre ~= '' ) then&lt;br /&gt;
            -- convert acres to dunams&lt;br /&gt;
            dunv = acre*4.046856422&lt;br /&gt;
            rndv = math.max(precision(acre)-1,-1*order_of_magnitude(dunv))&lt;br /&gt;
            dunv = rnd(dunv,rndv)&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        dunv = formatnum( dunam )&lt;br /&gt;
    end&lt;br /&gt;
    if( link ~= '' ) then&lt;br /&gt;
        dunu = '[[dunum]]'&lt;br /&gt;
    else&lt;br /&gt;
        dunu = 'dunam'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if( (impu == 'acre') and (tonumber(impv) ~= 1) ) then&lt;br /&gt;
        impu = impu .. 's'&lt;br /&gt;
    end    &lt;br /&gt;
    if( tonumber(dunv) ~= 1 ) then&lt;br /&gt;
        dunu = dunu .. 's'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if( metv ~= '' and impv ~= '' ) then&lt;br /&gt;
        pref = unitpref(pref, name, 'area')&lt;br /&gt;
        if( percent ~= '' ) then&lt;br /&gt;
            percent = ' &amp;amp;nbsp;' .. percent .. '%'&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        if( mag ~= '' ) then&lt;br /&gt;
            if( metu == 'ha' ) then&lt;br /&gt;
                lstr1 = tostring( order_of_magnitude( metv * 1E4 ) ) &lt;br /&gt;
            else&lt;br /&gt;
                lstr1 = tostring( order_of_magnitude( metv * 1E6 ) )&lt;br /&gt;
            end&lt;br /&gt;
            lstr1 = '[[1_E+' .. lstr1 .. '_m²|'&lt;br /&gt;
            lstr2 = ']]'&lt;br /&gt;
         end&lt;br /&gt;
   &lt;br /&gt;
         if( pref == 'impus' ) then&lt;br /&gt;
             return string.format('%s&amp;amp;nbsp;%s (%s%s&amp;amp;nbsp;%s%s)%s', &lt;br /&gt;
                 impv, impu, lstr1, metv, metu, lstr2, percent)&lt;br /&gt;
         elseif ( pref == 'dunam' ) then&lt;br /&gt;
             return string.format('%s&amp;amp;nbsp;%s (%s%s&amp;amp;nbsp;%s%s&amp;amp;nbsp;or&amp;amp;nbsp;%s&amp;amp;nbsp;%s)%s', &lt;br /&gt;
                 dunv, dunu, lstr1, metv, metu, lstr2, impv, impu, percent)&lt;br /&gt;
         else&lt;br /&gt;
             return string.format('%s%s&amp;amp;nbsp;%s%s (%s&amp;amp;nbsp;%s)%s', &lt;br /&gt;
                 lstr1, metv, metu, lstr2, impv, impu, percent)&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function densdisp(frame, pref, name, perkm2, persqmi, pop, ha, km2, sqmi, acre, dunam)&lt;br /&gt;
    -- This function implements {{Infobox settlement/densdisp}}&lt;br /&gt;
    local function numorzero( num )&lt;br /&gt;
        num = num or ''&lt;br /&gt;
        num = tonumber(frame:callParserFunction{ name = 'formatnum', args = {num, 'R'}})&lt;br /&gt;
        if( num == nil ) then&lt;br /&gt;
            return 0&lt;br /&gt;
        else&lt;br /&gt;
            return num&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function formatnum(num)&lt;br /&gt;
        return frame:callParserFunction{ name = 'formatnum', args = num }&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local function formatnumR(num)&lt;br /&gt;
        return frame:callParserFunction{ name = 'formatnum', args = {num, 'R'} }&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local metv, metu = '', 'km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;'&lt;br /&gt;
    local impv, impu = '', 'sq&amp;amp;nbsp;mi'&lt;br /&gt;
    local rndv = 0&lt;br /&gt;
    local perkm2num = tonumber(formatnumR(perkm2 or ''))&lt;br /&gt;
    local persqminum = tonumber(formatnumR(persqmi or ''))&lt;br /&gt;
    local popnum = tonumber(formatnumR(pop or ''))&lt;br /&gt;
&lt;br /&gt;
    pref = pref or ''&lt;br /&gt;
    name = name or ''&lt;br /&gt;
    perkm2 = perkm2 or ''&lt;br /&gt;
    persqmi = persqmi or ''&lt;br /&gt;
    pop = pop or ''&lt;br /&gt;
    ha = numorzero(ha)&lt;br /&gt;
    km2 = numorzero(km2)&lt;br /&gt;
    acre = numorzero(acre)&lt;br /&gt;
    sqmi = numorzero(sqmi)&lt;br /&gt;
    dunam = numorzero(dunam)&lt;br /&gt;
    &lt;br /&gt;
    if( (perkm2num == nil) and (persqminum == nil) ) then&lt;br /&gt;
       if( mw.ustring.match(perkm2:lower(), '^%s*auto%s*$') or mw.ustring.match(persqmi:lower(), '^%s*auto%s*$') ) then&lt;br /&gt;
           if( popnum ~= nil ) then&lt;br /&gt;
               if( km2 &amp;gt; 0 ) then&lt;br /&gt;
                   metv = popnum/km2&lt;br /&gt;
                   rndv = 1 - order_of_magnitude(metv)&lt;br /&gt;
                   metv = rnd(metv,rndv)&lt;br /&gt;
               elseif( ha &amp;gt; 0 ) then&lt;br /&gt;
                   metv = 100*popnum/ha&lt;br /&gt;
                   rndv = 1 - order_of_magnitude(metv)&lt;br /&gt;
                   metv = rnd(metv,rndv)&lt;br /&gt;
               elseif( dunam &amp;gt; 0 ) then&lt;br /&gt;
                   metv = 1000*popnum/dunam&lt;br /&gt;
                   rndv = 1 - order_of_magnitude(metv)&lt;br /&gt;
                   metv = rnd(metv,rndv)&lt;br /&gt;
               elseif( acre &amp;gt; 0 ) then&lt;br /&gt;
                   metv = (popnum/acre)/0.004046856422&lt;br /&gt;
                   rndv = 1 - order_of_magnitude(metv)&lt;br /&gt;
                   metv = rnd(metv,rndv)&lt;br /&gt;
               elseif( sqmi &amp;gt; 0 ) then&lt;br /&gt;
                   metv = (popnum/sqmi)/2.589988110336&lt;br /&gt;
                   rndv = 1 - order_of_magnitude(metv)&lt;br /&gt;
                   metv = rnd(metv,rndv)&lt;br /&gt;
               end&lt;br /&gt;
               if( sqmi &amp;gt; 0 ) then&lt;br /&gt;
                   impv = popnum/sqmi&lt;br /&gt;
                   rndv = 1 - order_of_magnitude(impv)&lt;br /&gt;
                   impv = rnd(impv,rndv)&lt;br /&gt;
               elseif( acre &amp;gt; 0 ) then&lt;br /&gt;
                   impv = 640*popnum/acre&lt;br /&gt;
                     rndv = 1 - order_of_magnitude(impv)&lt;br /&gt;
                   impv = rnd(impv,rndv)&lt;br /&gt;
               elseif( km2 &amp;gt; 0 ) then&lt;br /&gt;
                   impv = 2.589988110336*popnum/km2&lt;br /&gt;
                   rndv = 1 - order_of_magnitude(impv)&lt;br /&gt;
                   impv = rnd(impv,rndv)&lt;br /&gt;
               elseif( ha &amp;gt; 0 ) then&lt;br /&gt;
                   impv = 258.9988110336*popnum/ha&lt;br /&gt;
                   rndv = 1 - order_of_magnitude(impv)&lt;br /&gt;
                   impv = rnd(impv,rndv)&lt;br /&gt;
               elseif( dunam &amp;gt; 0 ) then&lt;br /&gt;
                   impv = 2589.988110336*popnum/dunam&lt;br /&gt;
                   rndv = 1 - order_of_magnitude(impv)&lt;br /&gt;
                   impv = rnd(impv,rndv)&lt;br /&gt;
               end&lt;br /&gt;
           end&lt;br /&gt;
       end&lt;br /&gt;
   elseif( perkm2num ~= nil ) then&lt;br /&gt;
       if( persqminum ~= nil ) then&lt;br /&gt;
           metv = formatnum( perkm2 )&lt;br /&gt;
           impv = formatnum( persqmi )&lt;br /&gt;
       else&lt;br /&gt;
           metv = formatnum( perkm2 )&lt;br /&gt;
           impv = perkm2num*2.589988110336&lt;br /&gt;
           rndv = math.max(precision(perkm2num)-1,-1*order_of_magnitude(impv)) &lt;br /&gt;
           impv = rnd(impv,rndv)&lt;br /&gt;
       end&lt;br /&gt;
    elseif( persqminum ~= nil ) then&lt;br /&gt;
        metv = persqminum/2.589988110336&lt;br /&gt;
        rndv = math.max(precision(persqminum),-1*order_of_magnitude(metv))&lt;br /&gt;
        metv = rnd(metv,rndv)&lt;br /&gt;
        impv = formatnum( persqmi )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if( metv ~= '' and impv ~= '') then&lt;br /&gt;
      pref = unitpref(pref, name, 'area')&lt;br /&gt;
      if( pref == 'impus' ) then&lt;br /&gt;
         return string.format('%s/%s (%s/%s)', impv, impu, metv, metu)&lt;br /&gt;
      else&lt;br /&gt;
         return string.format('%s/%s (%s/%s)', metv, metu, impv, impu)&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
      return ''&lt;br /&gt;
    end  &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function lengthdisp(frame, pref, name, km, m, mi, ft)&lt;br /&gt;
    -- This function implements {{Infobox settlement/lengthdisp}}&lt;br /&gt;
    local function formatnum(num)&lt;br /&gt;
        return frame:callParserFunction{ name = 'formatnum', args = num }&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local metv, metu = '', ''&lt;br /&gt;
    local impv, impu = '', ''&lt;br /&gt;
    local rndv = 0&lt;br /&gt;
    pref = pref or ''&lt;br /&gt;
    name = name or ''&lt;br /&gt;
    m = m or ''&lt;br /&gt;
    km = km or ''&lt;br /&gt;
    ft = ft or ''&lt;br /&gt;
    mi = mi or ''&lt;br /&gt;
    &lt;br /&gt;
    if ( km ~= '' ) then&lt;br /&gt;
        metv = formatnum( km )&lt;br /&gt;
        metu = 'km'&lt;br /&gt;
    elseif ( m ~= '' ) then&lt;br /&gt;
        metv = formatnum( m )&lt;br /&gt;
        metu = 'm'&lt;br /&gt;
    elseif ( mi ~= '' ) then&lt;br /&gt;
        metv = mi*1.609344&lt;br /&gt;
        metu = 'km'&lt;br /&gt;
        rndv = precision(mi)&lt;br /&gt;
        metv = rnd(metv,rndv)&lt;br /&gt;
    elseif ( ft ~= '' ) then&lt;br /&gt;
        metv = ft*0.3048&lt;br /&gt;
        metu = 'm'&lt;br /&gt;
        rndv = math.max(precision(ft),-1*order_of_magnitude(metv))&lt;br /&gt;
        metv = rnd(metv,rndv)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if ( mi ~= '' ) then&lt;br /&gt;
        impv = formatnum( mi )&lt;br /&gt;
        impu = 'mi'&lt;br /&gt;
    elseif ( ft ~= '' ) then&lt;br /&gt;
        impv = formatnum( ft )&lt;br /&gt;
        impu = 'ft'&lt;br /&gt;
    elseif ( km ~= '' ) then&lt;br /&gt;
        impv = km/1.609344&lt;br /&gt;
        impu = 'mi'&lt;br /&gt;
        rndv = math.max(precision(km),-1*order_of_magnitude(impv))&lt;br /&gt;
        impv = rnd(impv,rndv)&lt;br /&gt;
    elseif ( m ~= '' ) then&lt;br /&gt;
        impv = m/0.3048&lt;br /&gt;
        impu = 'ft'&lt;br /&gt;
        rndv = precision(m)&lt;br /&gt;
        impv = rnd(impv,rndv)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if( impv ~= '' and metv ~= '' ) then&lt;br /&gt;
        pref = unitpref(pref, name, 'length')&lt;br /&gt;
        if( pref == 'impus' ) then&lt;br /&gt;
           return string.format('%s&amp;amp;nbsp;%s (%s&amp;amp;nbsp;%s)', impv, impu, metv, metu)&lt;br /&gt;
        else&lt;br /&gt;
           return string.format('%s&amp;amp;nbsp;%s (%s&amp;amp;nbsp;%s)', metv, metu, impv, impu)&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return ''&lt;br /&gt;
    end    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.areadisp(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    return areadisp(frame, args['pref'], args['name'], args['mag'], &lt;br /&gt;
        args['ha'], args['km2'], args['sqmi'], args['acre'], args['dunam'], args['percent'], args['link'])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.densdisp(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    return densdisp(frame, args['pref'], args['name'], &lt;br /&gt;
        args['/km2'], args['/sqmi'], args['pop'], args['ha'], args['km2'], args['sqmi'], args['acre'], args['dunam'])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lengthdisp(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    return lengthdisp(frame, args['pref'], args['name'], args['km'], args['m'], args['mi'], args['ft'])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.link(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    return link(args['link'], args['type'], args['name'])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.columns(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    if( args[0] and args[0] ~= '' ) then&lt;br /&gt;
      return columns2(args[0], args[1], args[2], args[3], args[4], args[5])&lt;br /&gt;
    else&lt;br /&gt;
      return columns(args[1], args[2], args[3], args[4])&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.infobox(frame)&lt;br /&gt;
    local args = {}&lt;br /&gt;
    local oargs = frame:getParent().args&lt;br /&gt;
    local pname = firstnonempty({oargs['name'], oargs['official_name'], mw.title.text})&lt;br /&gt;
    local narrowmap = isnotempty(oargs['pushpin_map_narrow']) and isnotempty(oargs['pushpin_map'])&lt;br /&gt;
    args['bodyclass'] = 'geography vcard'&lt;br /&gt;
    args['bodystyle'] = 'width:23em'&lt;br /&gt;
    args['headerstyle'] = 'text-align:left'&lt;br /&gt;
    args['abovestyle'] = 'font-size:1.25em; white-space:nowrap'&lt;br /&gt;
    -- build the names, type, and transliterations subbox&lt;br /&gt;
    local sargs = {}&lt;br /&gt;
    local scount = 0&lt;br /&gt;
    sargs['child'] = 'yes'&lt;br /&gt;
    if( (isnotempty(oargs['name']) or isnotempty(oargs['official_name']) ) and&lt;br /&gt;
    	(isnotempty(oargs['settlement_type']) or isnotempty(oargs['type']) ) ) then&lt;br /&gt;
	    sargs['subheaderstyle'] = 'background-color:#cddeff; font-weight:bold;'&lt;br /&gt;
    	sargs['subheader'] = '&amp;lt;span class=&amp;quot;category&amp;quot;&amp;gt;'&lt;br /&gt;
    		.. firstnonempty(oargs['settlement_type'], oargs['type']) .. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
    	scount = scount + 1&lt;br /&gt;
    end&lt;br /&gt;
    if( isnotempty(oargs['name']) and isnotempty(oargs['official_name']) ) then&lt;br /&gt;
    	sargs['rowclass1'] = 'mergedtoprow'&lt;br /&gt;
    	sargs['header1'] = oargs['official_name']&lt;br /&gt;
    	scount = scount + 1&lt;br /&gt;
    end&lt;br /&gt;
    if( isnotempty(oargs['translit_lang1']) ) then&lt;br /&gt;
    	local targs = translitlangbox(&lt;br /&gt;
    		{oargs['translit_lang1_type'],&lt;br /&gt;
    		 oargs['translit_lang1_type1'],&lt;br /&gt;
    		 oargs['translit_lang1_type2'],&lt;br /&gt;
    		 oargs['translit_lang1_type3'],&lt;br /&gt;
    		 oargs['translit_lang1_type4'],&lt;br /&gt;
    		 oargs['translit_lang1_type5'],&lt;br /&gt;
    		 oargs['translit_lang1_type6']},&lt;br /&gt;
    		{oargs['translit_lang1_info'],&lt;br /&gt;
    		 oargs['translit_lang1_info1'],&lt;br /&gt;
    		 oargs['translit_lang1_info2'],&lt;br /&gt;
    		 oargs['translit_lang1_info3'],&lt;br /&gt;
    		 oargs['translit_lang1_info4'],&lt;br /&gt;
    		 oargs['translit_lang1_info5'],&lt;br /&gt;
    		 oargs['translit_lang1_info6']})&lt;br /&gt;
    	if( targs ) then&lt;br /&gt;
    		sargs['rowclass2'] = 'mergedtoprow'&lt;br /&gt;
    		sargs['header2'] = oargs['translit_lang1'] .. '&amp;amp;nbsp;transcription(s)' .. infobox_module._infobox(targs)&lt;br /&gt;
	    	scount = scount + 1&lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
    if( isnotempty(oargs['translit_lang2']) ) then&lt;br /&gt;
    	local targs = translitlangbox(&lt;br /&gt;
    		{oargs['translit_lang2_type'],&lt;br /&gt;
    		 oargs['translit_lang2_type1'],&lt;br /&gt;
    		 oargs['translit_lang2_type2'],&lt;br /&gt;
    		 oargs['translit_lang2_type3'],&lt;br /&gt;
    		 oargs['translit_lang2_type4'],&lt;br /&gt;
    		 oargs['translit_lang2_type5'],&lt;br /&gt;
    		 oargs['translit_lang2_type6']},&lt;br /&gt;
    		{oargs['translit_lang2_info'],&lt;br /&gt;
    		 oargs['translit_lang2_info1'],&lt;br /&gt;
    		 oargs['translit_lang2_info2'],&lt;br /&gt;
    		 oargs['translit_lang2_info3'],&lt;br /&gt;
    		 oargs['translit_lang2_info4'],&lt;br /&gt;
    		 oargs['translit_lang2_info5'],&lt;br /&gt;
    		 oargs['translit_lang2_info6']})&lt;br /&gt;
    	if( targs ) then&lt;br /&gt;
    		sargs['rowclass3'] = 'mergedtoprow'&lt;br /&gt;
    		sargs['header3'] = oargs['translit_lang2'] .. '&amp;amp;nbsp;transcription(s)' .. infobox_module._infobox(targs)&lt;br /&gt;
	    	scount = scount + 1&lt;br /&gt;
    	end&lt;br /&gt;
	end&lt;br /&gt;
    -- End of names, type, and transliterations&lt;br /&gt;
&lt;br /&gt;
    args['above'] =  '&amp;lt;span class=&amp;quot;fn org&amp;quot;&amp;gt;' .. pname .. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
    if(isnotempty(oargs['native_name'])) then&lt;br /&gt;
    	args['above'] = args['above'] .. '&amp;lt;br /&amp;gt;&amp;lt;span class=&amp;quot;nickname&amp;quot;'&lt;br /&gt;
    		.. isnotempty(oargs['native_name_lang']) and ' lang=&amp;quot;' .. oargs['native_name_lang'] .. '&amp;quot;&amp;gt;'&lt;br /&gt;
    		.. oargs['native_name'] .. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
    if(isnotempty(oargs['other_name'])) then&lt;br /&gt;
    	args['above'] = args['above'] .. '&amp;lt;br /&amp;gt;&amp;lt;span class=&amp;quot;nickname&amp;quot; style=&amp;quot;font-size:78%&amp;quot;&amp;gt;'&lt;br /&gt;
    		.. oargs['other_name'] .. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
    end&lt;br /&gt;
   	if( scount &amp;gt; 0 ) then&lt;br /&gt;
	    args['above'] = args['above'] .. infobox_module._infobox(sargs)&lt;br /&gt;
	end&lt;br /&gt;
	-- Skyline image&lt;br /&gt;
	if( isnotempty(oargs['image_skyline']) ) then&lt;br /&gt;
		args['imagestyle'] = 'padding:0.7em 0.8em'&lt;br /&gt;
		args['image'] = image_module._InfoboxImage(&lt;br /&gt;
			{['image'] = oargs['image_skyline'], &lt;br /&gt;
			 ['size'] = oargs['imagesize'], &lt;br /&gt;
			 ['sizedefault'] = '250px', &lt;br /&gt;
			 ['alt'] = oargs['image_alt'],&lt;br /&gt;
			 ['title'] = oargs['image_caption'] or ('Skyline of ' .. pname)&lt;br /&gt;
			 })&lt;br /&gt;
		if( isnotempty(oargs['image_caption']) ) then&lt;br /&gt;
			args['image'] = args['image'] .. '&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;' .. oargs['image_caption'] .. '&amp;lt;/small&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Other image&lt;br /&gt;
	if( isnotempty(oargs['image']) ) then&lt;br /&gt;
		args['image2'] = oargs['image']&lt;br /&gt;
	end&lt;br /&gt;
	-- Primary map&lt;br /&gt;
	local image_map = nil&lt;br /&gt;
	if( isnotempty(oargs['image_map']) ) then&lt;br /&gt;
		local msize = narrowmap and '100px' or '250px'&lt;br /&gt;
		&lt;br /&gt;
		image_map = image_module._InfoboxImage({&lt;br /&gt;
			['image'] = oargs['image_map'],&lt;br /&gt;
			['size'] = oargs['mapsize'],&lt;br /&gt;
			['sizedefault'] = msize,&lt;br /&gt;
			['alt'] = oargs['map_alt'],&lt;br /&gt;
			['title'] = oargs['map_caption'] or 'Location of ' .. pname,&lt;br /&gt;
			})&lt;br /&gt;
		if( isnotempty(oargs['map_caption'])) then&lt;br /&gt;
			image_map = image_map .. '&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;' .. oargs['map_caption'] .. '&amp;lt;/small&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Primary pushpin map&lt;br /&gt;
	local pushpin_map = nil&lt;br /&gt;
	if( isnotempty(oargs['pushpin_map']) and isnotempty(oargs['latd']) and isnotempty(oargs['longd'])) then&lt;br /&gt;
		local plabel&lt;br /&gt;
		if(oargs['pushpin_label_position'] and oargs['pushpin_label_position']:lower() == 'none') then&lt;br /&gt;
			plabel = ''&lt;br /&gt;
		else if( isnotempty(oargs['pushpin_label']) ) then&lt;br /&gt;
			plabel = oargs['pushpin_label']&lt;br /&gt;
		else&lt;br /&gt;
			plabel = pname&lt;br /&gt;
		end&lt;br /&gt;
		local pwidth = ''&lt;br /&gt;
		if(narrowmap) then&lt;br /&gt;
			pwidth = firstnonempty(oargs['pushpin_mapsize'], '150')&lt;br /&gt;
		end&lt;br /&gt;
		local lat, lat_deg, lat_min, lat_sec&lt;br /&gt;
		if(isnotempty(oargs['latm']) or isnotempty(oargs['latNS'])) then&lt;br /&gt;
			lat = ''&lt;br /&gt;
			lat_deg = oargs['latd'] or ''&lt;br /&gt;
			lat_min = oargs['latm'] or ''&lt;br /&gt;
			lat_sec = oargs['lats'] or ''&lt;br /&gt;
		else&lt;br /&gt;
			lat = oargs['latd'] or ''&lt;br /&gt;
		end&lt;br /&gt;
		local long, lon_deg, lon_min, lon_sec&lt;br /&gt;
		if(isnotempty(oargs['longm']) or isnotempty(oargs['longEW'])) then&lt;br /&gt;
			long = ''&lt;br /&gt;
			lon_deg = oargs['longd'] or ''&lt;br /&gt;
			lon_min = oargs['longm'] or ''&lt;br /&gt;
			lon_sec = oargs['longs'] or ''&lt;br /&gt;
		else&lt;br /&gt;
			long = oargs['longd'] or ''&lt;br /&gt;
		end&lt;br /&gt;
		local caption = firstnonempty({oargs['pushpin_map_caption'], oargs['map_caption']})&lt;br /&gt;
		pushpin_map = '&amp;lt;center&amp;gt;' .. locationmap_module._main({&lt;br /&gt;
			['1'] = oargs['pushpin_map'],&lt;br /&gt;
			['border'] = 'none',&lt;br /&gt;
			['alt'] = oargs['pushpin_map_alt'],&lt;br /&gt;
			['caption'] = '',&lt;br /&gt;
			['float'] = 'none',&lt;br /&gt;
			['width'] = pwidth,&lt;br /&gt;
			['default_width'] = '250',&lt;br /&gt;
			['relief'] = oargs['pushpin_relief'],&lt;br /&gt;
			['AlternativeMap'] = oargs['pushpin_image'],&lt;br /&gt;
			['label'] = plabel,&lt;br /&gt;
			['lat'] = lat, ['long'] = long,&lt;br /&gt;
			['lat_deg'] = lat_deg, ['lat_min'] = lat_min, ['lat_sec'] = lat_sec,&lt;br /&gt;
			['lat_dir'] = oargs['latNS'] or '',&lt;br /&gt;
			['lon_deg'] = lon_deg, ['lon_min'] = lon_min, ['lon_sec'] = lon_sec,&lt;br /&gt;
			['lon_dir'] = oargs['lonEW'] or '',&lt;br /&gt;
			['marksize'] = '6',&lt;br /&gt;
			['position'] = oargs['pushpin_label_position'] or ''&lt;br /&gt;
			})&lt;br /&gt;
		if( caption ) then&lt;br /&gt;
			pushpin_map = pushpin_map .. '&amp;lt;small&amp;gt;' .. caption .. '&amp;lt;/small&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
			pushpin_map = pushpin_map .. '&amp;lt;/center&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Flag, Seal, Shield and Coat of arms&lt;br /&gt;
	if( isnotempty(oargs['image_flag']) or isnotempty(oargs['image_seal']) &lt;br /&gt;
		or isnotempty(oargs['image_shield']) or isnotempty(oargs['image_blank_emblem'])&lt;br /&gt;
		or narrowmap) then&lt;br /&gt;
		args['rowclass1'] = 'mergedtoprow'&lt;br /&gt;
		args['class1'] = 'maptable'&lt;br /&gt;
		local isize = (isnotempty(oargs['pushpin_map_narrow']) and isnotempty(oargs['pushpin_map'])) and '85px' or '100px'&lt;br /&gt;
		local targs = {}&lt;br /&gt;
		if( isnotempty(oargs['image_flag']) ) then&lt;br /&gt;
			local iborder = yesno(oargs['flag_border'], 'yes', '', 'yes', 'yes')&lt;br /&gt;
			targs[1] = image_module._InfoboxImage({&lt;br /&gt;
				['image'] = oargs['image_flag'],&lt;br /&gt;
				['size'] = oargs['flag_size'],&lt;br /&gt;
				['sizedefault'] = isize,&lt;br /&gt;
				['border'] = iborder,&lt;br /&gt;
				['alt'] = oargs['flag_alt'],&lt;br /&gt;
				['title'] = 'Flag of ' .. pname,&lt;br /&gt;
				}) .. '&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;\'\'\'' .. link(oargs['flag_link'], 'Flag', oargs['official_name']) .. '\'\'\'&amp;lt;/small&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
		if( isnotempty(oargs['image_seal']) ) then&lt;br /&gt;
			targs[2] = image_module._InfoboxImage({&lt;br /&gt;
				['image'] = oargs['image_seal'],&lt;br /&gt;
				['size'] = oargs['seal_size'],&lt;br /&gt;
				['sizedefault'] = isize,&lt;br /&gt;
				['alt'] = oargs['seal_alt'],&lt;br /&gt;
				['title'] = 'Official seal of ' .. pname,&lt;br /&gt;
				}) .. '&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;\'\'\'' .. link(oargs['seal_link'], firstnonempty(oargs['seal_type'], 'Seal'), oargs['official_name']) .. '\'\'\'&amp;lt;/small&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
		if( isnotempty(oargs['image_shield']) ) then&lt;br /&gt;
			targs[3] = image_module._InfoboxImage({&lt;br /&gt;
				['image'] = oargs['image_shield'],&lt;br /&gt;
				['size'] = oargs['shield_size'],&lt;br /&gt;
				['sizedefault'] = isize,&lt;br /&gt;
				['alt'] = oargs['shield_alt'],&lt;br /&gt;
				['title'] = 'Coat of arms of ' .. pname,&lt;br /&gt;
				}) .. '&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;\'\'\'' .. link(oargs['shield_link'], 'Coat of arms', oargs['official_name']) .. '\'\'\'&amp;lt;/small&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
		if( isnotempty(oargs['image_blank_emblem']) ) then&lt;br /&gt;
			targs[4] = image_module._InfoboxImage({&lt;br /&gt;
				['image'] = oargs['image_blank_emblem'],&lt;br /&gt;
				['size'] = oargs['blank_emblem_size'],&lt;br /&gt;
				['sizedefault'] = isize,&lt;br /&gt;
				['alt'] = oargs['blank_emblem_alt'],&lt;br /&gt;
				['title'] = 'Official logo of ' .. pname,&lt;br /&gt;
				}) .. '&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;\'\'\'' .. link(oargs['blank_emblem_link'], firstnonempty(oargs['blank_emblem_type'], 'Logo'), oargs['official_name']) .. '\'\'\'&amp;lt;/small&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
		targs[5] = image_map&lt;br /&gt;
		if( narrowmap and pushpin_map) then&lt;br /&gt;
			args['data1'] = columns2(pushpin_map, targs[1], targs[2], targs[3], targs[4], targs[5])&lt;br /&gt;
		else&lt;br /&gt;
			args['data1'] = columns(targs[1], targs[2], targs[3], targs[4])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Nickname&lt;br /&gt;
	if( isnotempty(oargs['nickname']) ) then&lt;br /&gt;
		args['rowclass2'] = 'mergedrow'&lt;br /&gt;
		args['data2'] = 'Nickname(s): &amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;' .. oargs['nickname'] .. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
	end&lt;br /&gt;
	-- Motto&lt;br /&gt;
	if( isnotempty(oargs['motto']) ) then&lt;br /&gt;
		args['rowclass3'] = 'mergedrow'&lt;br /&gt;
		args['data3'] = 'Motto: ' .. oargs['motto']&lt;br /&gt;
	end&lt;br /&gt;
	-- Anthem&lt;br /&gt;
	if( isnotempty(oargs['anthem']) ) then&lt;br /&gt;
		args['rowclass4'] = 'mergedrow'&lt;br /&gt;
		args['data4'] = 'Anthem: ' .. oargs['anthem']&lt;br /&gt;
	end&lt;br /&gt;
	-- Map&lt;br /&gt;
	if( narrowmap  and image_map ) then&lt;br /&gt;
		args['rowclass5'] = mergedrow&lt;br /&gt;
		args['data5'] = image_map&lt;br /&gt;
	end&lt;br /&gt;
	if( isnotempty(oargs['image_map1']) ) then&lt;br /&gt;
		args['rowclass6'] = mergedrow&lt;br /&gt;
		args['data6'] = image_module._InfoboxImage({&lt;br /&gt;
			['image'] = oargs['image_map1'],&lt;br /&gt;
			['size'] = oargs['mapsize1'],&lt;br /&gt;
			['sizedefault'] = '250px',&lt;br /&gt;
			['alt'] = oargs['map_alt1'],&lt;br /&gt;
			['title'] = oargs['map_caption1'] or 'Location of ' .. pname,&lt;br /&gt;
			})&lt;br /&gt;
		if( isnotempty(oargs['map_caption1'])) then&lt;br /&gt;
			image_map = image_map .. '&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;' .. oargs['map_caption1'] .. '&amp;lt;/small&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Dot map&lt;br /&gt;
	if( isnotempty(oargs['image_dot_map']) ) then&lt;br /&gt;
		args['rowclass7'] = 'mergedrow'&lt;br /&gt;
		args['data7'] = '&amp;lt;center&amp;gt;Dot maps not supported!&amp;lt;/center&amp;gt;'&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
    -- Pushpin map&lt;br /&gt;
	if( narrowmap == nil and pushpin_map) then&lt;br /&gt;
		args['rowclass8'] = 'mergedtoprow'&lt;br /&gt;
		args['data8'] = pushpin_map&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    return infobox_module._infobox(args)&lt;br /&gt;
 &lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Rich Farmbrough</name></author>	</entry>

	</feed>