<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://bard-wiki.net/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ATopic_monitoring</id>
	<title>Модуль:Topic monitoring - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://bard-wiki.net/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ATopic_monitoring"/>
	<link rel="alternate" type="text/html" href="https://bard-wiki.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Topic_monitoring&amp;action=history"/>
	<updated>2026-11-09T16:10:50Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://bard-wiki.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Topic_monitoring&amp;diff=7445&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://bard-wiki.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Topic_monitoring&amp;diff=7445&amp;oldid=prev"/>
		<updated>2023-06-21T15:46:10Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 18:46, 21 июня 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&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://bard-wiki.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Topic_monitoring&amp;diff=7444&amp;oldid=prev</id>
		<title>ru&gt;Alex NB IT в 12:56, 27 декабря 2021</title>
		<link rel="alternate" type="text/html" href="https://bard-wiki.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Topic_monitoring&amp;diff=7444&amp;oldid=prev"/>
		<updated>2021-12-27T12:56:37Z</updated>

		<summary type="html">&lt;p&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;
local function conceal(text, class)&lt;br /&gt;
	 class = class or &amp;#039;&amp;#039;&lt;br /&gt;
	 return &amp;#039;&amp;lt;span style=&amp;quot;display:none; speak:none;&amp;quot; class=&amp;quot;topicWatch-&amp;#039; .. class .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. text .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; -- содержимое шаблона {{~}}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function findInTable(table, value)&lt;br /&gt;
	for k, v in pairs(table) do&lt;br /&gt;
		if v == value 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 cleanSectionHeading(heading)&lt;br /&gt;
	-- The following patterns reproduce [[Участник:Jack who built the house/transferHeadingToSummary.js]]&lt;br /&gt;
	heading = mw.ustring.gsub(heading, &amp;#039;%[%[:?[^|%]]*|([^%]]*)%]%]&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	heading = mw.ustring.gsub(heading, &amp;#039;%[%[:?([^%]]*)%]%]&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	heading = mw.ustring.gsub(heading, &amp;quot;&amp;#039;&amp;#039;&amp;#039;(.-)&amp;#039;&amp;#039;&amp;#039;&amp;quot;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	heading = mw.ustring.gsub(heading, &amp;quot;&amp;#039;&amp;#039;(.-)&amp;#039;&amp;#039;&amp;quot;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	heading = mw.ustring.gsub(heading, &amp;#039;&amp;lt;/?%w+ ?/?&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	heading = mw.ustring.gsub(heading, &amp;#039;&amp;lt;%w+ [%w ]-=[^&amp;lt;&amp;gt;]-&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	heading = mw.ustring.gsub(heading, &amp;#039;  +&amp;#039;, &amp;#039; &amp;#039;)&lt;br /&gt;
	heading = mw.text.trim(heading)&lt;br /&gt;
	return heading&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function sectionHeadingToLink(sectionHeading)&lt;br /&gt;
	local sectionHeadingLink = sectionHeading&lt;br /&gt;
	-- The following reproduces processURI function of [[Участник:Jack who built the house/copyWikilinks.js]]&lt;br /&gt;
	--[[sectionHeadingLink = mw.ustring.gsub(sectionHeadingLink, &amp;#039;&amp;lt;&amp;#039;, &amp;#039;%%3C&amp;#039;)&lt;br /&gt;
	sectionHeadingLink = mw.ustring.gsub(sectionHeadingLink, &amp;#039;&amp;gt;&amp;#039;, &amp;#039;%%3E&amp;#039;)&lt;br /&gt;
	sectionHeadingLink = mw.ustring.gsub(sectionHeadingLink, &amp;#039;%[&amp;#039;, &amp;#039;%%5B&amp;#039;)&lt;br /&gt;
	sectionHeadingLink = mw.ustring.gsub(sectionHeadingLink, &amp;#039;%]&amp;#039;, &amp;#039;%%5D&amp;#039;)&lt;br /&gt;
	sectionHeadingLink = mw.ustring.gsub(sectionHeadingLink, &amp;#039;{&amp;#039;, &amp;#039;%%7B&amp;#039;)&lt;br /&gt;
	sectionHeadingLink = mw.ustring.gsub(sectionHeadingLink, &amp;#039;|&amp;#039;, &amp;#039;%%7C&amp;#039;)&lt;br /&gt;
	sectionHeadingLink = mw.ustring.gsub(sectionHeadingLink, &amp;#039;}&amp;#039;, &amp;#039;%%7D&amp;#039;)&lt;br /&gt;
	sectionHeadingLink = mw.ustring.gsub(sectionHeadingLink, &amp;#039; &amp;#039;, &amp;#039;.C2.A0&amp;#039;)]]&lt;br /&gt;
	return &amp;#039;#&amp;#039; .. sectionHeadingLink&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function killHeadingMarkers(content)&lt;br /&gt;
	content = mw.ustring.gsub(&lt;br /&gt;
		content,&lt;br /&gt;
		string.char(127) .. &amp;#039;\&amp;#039;&amp;quot;`UNIQ%-%-h%-%d+%-%-QINU`&amp;quot;\&amp;#039;&amp;#039; .. string.char(127),&lt;br /&gt;
		&amp;#039;&amp;#039;&lt;br /&gt;
	)&lt;br /&gt;
	return content&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require(&amp;#039;Модуль:Arguments&amp;#039;).getArgs&lt;br /&gt;
	end&lt;br /&gt;
	local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
	local args = getArgs(frame, {removeBlanks = false})&lt;br /&gt;
	local ru = mw.getLanguage(&amp;#039;ru&amp;#039;)&lt;br /&gt;
	local errorInfo = {}&lt;br /&gt;
	&lt;br /&gt;
	-- обрабатываем параметры&lt;br /&gt;
	local talkpageMode = args[&amp;#039;режим&amp;#039;] == &amp;#039;страницы&amp;#039;&lt;br /&gt;
	local afdMode = args[&amp;#039;режим&amp;#039;] == &amp;#039;КУ&amp;#039;&lt;br /&gt;
	local pageListMode = args[&amp;#039;режим&amp;#039;] == &amp;#039;список страниц&amp;#039;&lt;br /&gt;
	local standardMode&lt;br /&gt;
	if not talkpageMode and not afdMode and not pageListMode then&lt;br /&gt;
		standardMode = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local separateTopicListPage, separateTopicList&lt;br /&gt;
	if standardMode and not args[1] then&lt;br /&gt;
		separateTopicListPage = mw.title.new(args[&amp;#039;список&amp;#039;] or mw.title.getCurrentTitle().prefixedText .. &amp;#039;/список&amp;#039;)&lt;br /&gt;
		if separateTopicListPage.exists then&lt;br /&gt;
			local content = separateTopicListPage:getContent()&lt;br /&gt;
			if content:find(&amp;#039;{{&amp;#039;) then&lt;br /&gt;
				content = frame:preprocess(content)&lt;br /&gt;
			end&lt;br /&gt;
			separateTopicList = mw.text.split(content, &amp;#039;\n&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if not separateTopicList or (separateTopicList[1] == &amp;#039;&amp;#039; and not separateTopicList[2]) then&lt;br /&gt;
			separateTopicList = {}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local afdItems, nominationsNum&lt;br /&gt;
	if afdMode then&lt;br /&gt;
		local afdListPage = mw.title.new(&amp;#039;Википедия:К удалению&amp;#039;) -- Участник:Jack who built the house/песочница2&lt;br /&gt;
		nominationsNum = tonumber(args[&amp;#039;номинаций&amp;#039;]) or 50&lt;br /&gt;
		&lt;br /&gt;
		afdItems = {}&lt;br /&gt;
		local afdListContent = afdListPage:getContent()&lt;br /&gt;
		afdListContent = mw.ustring.gsub(afdListContent, &amp;#039;&amp;lt;small&amp;gt;.-&amp;lt;\/small&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		afdListContent = mw.ustring.gsub(afdListContent, &amp;#039;&amp;lt;s&amp;gt;.-&amp;lt;\/s&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		local iterator = mw.ustring.gmatch(afdListContent, &amp;#039;{{Удаление статей|([^|]+)|([^\n]+)}}&amp;#039;)&lt;br /&gt;
		reversedIteratorTable = {}&lt;br /&gt;
		for day, topics in iterator do&lt;br /&gt;
			table.insert(reversedIteratorTable, 1, {day = day, topics = topics})&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in pairs(reversedIteratorTable) do&lt;br /&gt;
			day = v.day&lt;br /&gt;
			topics = v.topics&lt;br /&gt;
			local afdPage = &amp;#039;Википедия:К удалению/&amp;#039; .. ru:formatDate(&amp;#039;j xg Y&amp;#039;, day)&lt;br /&gt;
			&lt;br /&gt;
			local iterator = mw.text.gsplit(topics, &amp;#039; • &amp;#039;, true)&lt;br /&gt;
			for v2 in iterator do&lt;br /&gt;
				if v2 ~= &amp;#039;&amp;#039; then&lt;br /&gt;
					v2 = cleanSectionHeading(v2)&lt;br /&gt;
					table.insert(afdItems, afdPage .. &amp;#039;#&amp;#039; .. v2)&lt;br /&gt;
				end&lt;br /&gt;
				if #afdItems &amp;gt;= nominationsNum + 50 then break end&lt;br /&gt;
			end&lt;br /&gt;
			if #afdItems &amp;gt;= nominationsNum + 50 then break end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local topicsToShow = tonumber(args[&amp;#039;тем&amp;#039;]) or 10000&lt;br /&gt;
	&lt;br /&gt;
	-- число тем, содержимое которых выводить непосредственно на странице, а не ссылаться на другую&lt;br /&gt;
	local fullTopicsToShow = not pageListMode and (&lt;br /&gt;
			   tonumber(args[&amp;#039;полных тем&amp;#039;])&lt;br /&gt;
			or (&lt;br /&gt;
				afdMode and 1000 or 10&lt;br /&gt;
			   )&lt;br /&gt;
		)&lt;br /&gt;
	&lt;br /&gt;
	if topicsToShow == 0 and fullTopicsToShow == 0 then return &amp;#039;&amp;#039; end&lt;br /&gt;
	&lt;br /&gt;
	local style = args[&amp;#039;стиль&amp;#039;] == &amp;#039;форумный&amp;#039; and args[&amp;#039;стиль&amp;#039;] or &amp;#039;wikitable&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	local showTopicCount&lt;br /&gt;
	if args[&amp;#039;показывать количество тем&amp;#039;] then&lt;br /&gt;
		showTopicCount = yesno(args[&amp;#039;показывать количество тем&amp;#039;], true)&lt;br /&gt;
	else&lt;br /&gt;
		showTopicCount = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local reloadLink&lt;br /&gt;
	if args[&amp;#039;обновить&amp;#039;] then&lt;br /&gt;
		reloadLink = yesno(args[&amp;#039;обновить&amp;#039;], false)&lt;br /&gt;
	else&lt;br /&gt;
		reloadLink = false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local sortFullTopics, sortTopics&lt;br /&gt;
	if afdMode then&lt;br /&gt;
		sortFullTopics = false&lt;br /&gt;
		sortTopics = false&lt;br /&gt;
	elseif args[&amp;#039;сортировка полных тем&amp;#039;] then&lt;br /&gt;
		sortFullTopics = yesno(args[&amp;#039;сортировка полных тем&amp;#039;], false)&lt;br /&gt;
		sortTopics = true&lt;br /&gt;
	else&lt;br /&gt;
		sortFullTopics = true&lt;br /&gt;
		sortTopics = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- проверяем и обрабатываем части названий, чистим от дубликатов&lt;br /&gt;
	-- wrongItems — элементы, с которыми что-то не так уже на этапе распознавания адреса&lt;br /&gt;
	-- itemsToRemove — элементы, которые предлагается удалить из списка отслеживания&lt;br /&gt;
	-- errorInfo (объявлено выше) — сообщения об ошибке&lt;br /&gt;
	local items, wrongItems, itemsToRemove = {}, {}, {}&lt;br /&gt;
	for k, v in pairs(separateTopicList or afdItems or args) do&lt;br /&gt;
		if type(k) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			if v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				local newItem = {&lt;br /&gt;
					originalFullTitle = v,&lt;br /&gt;
					titleObject = mw.title.new(v),&lt;br /&gt;
				}&lt;br /&gt;
				if newItem.titleObject and newItem.titleObject.prefixedText ~= &amp;#039;&amp;#039; then&lt;br /&gt;
					if newItem.titleObject.fragment ~= &amp;#039;&amp;#039; then&lt;br /&gt;
						newItem.sectionHeading = mw.text.encode(mw.uri.decode(newItem.titleObject.fragment), &amp;#039;&amp;lt;&amp;gt;%[%]{|}&amp;#039;)&lt;br /&gt;
						if not talkpageMode and not pageListMode then&lt;br /&gt;
							newItem.resultMode = false&lt;br /&gt;
							newItem.sectionHeading = mw.ustring.gsub(newItem.sectionHeading, &amp;#039;\\итог$&amp;#039;, function (s)&lt;br /&gt;
								newItem.resultMode = true&lt;br /&gt;
								return &amp;#039;&amp;#039;&lt;br /&gt;
							end)&lt;br /&gt;
							newItem.sectionHeading = mw.ustring.gsub(newItem.sectionHeading, &amp;#039;\\\\\\.*$&amp;#039;, function (s) -- \\\Итог&lt;br /&gt;
								newItem.subsectionHeading = s&lt;br /&gt;
								return &amp;#039;&amp;#039;&lt;br /&gt;
							end)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if not newItem.sectionHeading and not talkpageMode and not pageListMode then&lt;br /&gt;
						table.insert(wrongItems, v)&lt;br /&gt;
						table.insert(itemsToRemove, v)&lt;br /&gt;
					else&lt;br /&gt;
						local found = false&lt;br /&gt;
						for k2, v2 in pairs(items) do&lt;br /&gt;
							if v2.titleObject.prefixedText == newItem.titleObject.prefixedText and (not newItem.sectionHeading or v2.sectionHeading == newItem.sectionHeading) and (not newItem.subsectionHeading or v2.subsectionHeading == newItem.subsectionHeading) then&lt;br /&gt;
								found = true&lt;br /&gt;
								break&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						if not found then&lt;br /&gt;
							table.insert(items, newItem)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(itemsToRemove, v)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					table.insert(wrongItems, v)&lt;br /&gt;
					table.insert(itemsToRemove, v)&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(itemsToRemove, v)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #wrongItems &amp;gt; 0 then&lt;br /&gt;
		local wrongItemsString =&lt;br /&gt;
			    #wrongItems == 1&lt;br /&gt;
			and &amp;#039;Что-то не так с элементом&amp;#039;&lt;br /&gt;
			 or &amp;#039;Что-то не так со следующими элементами:&amp;#039;&lt;br /&gt;
		for k, v in pairs(wrongItems) do&lt;br /&gt;
			if k ~= 1 then&lt;br /&gt;
				wrongItemsString = wrongItemsString .. &amp;#039;, &amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			wrongItemsString = wrongItemsString .. &amp;#039; «&amp;#039; .. v .. &amp;#039;»&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		wrongItemsString = wrongItemsString .. &amp;#039;.&amp;#039;&lt;br /&gt;
		table.insert(errorInfo, wrongItemsString)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- запрашиваем данные&lt;br /&gt;
	local allData = {}&lt;br /&gt;
	local talkpageCount&lt;br /&gt;
	local onlyPageTitle&lt;br /&gt;
	local pageListData&lt;br /&gt;
	if talkpageMode then&lt;br /&gt;
		talkpageCount = 0&lt;br /&gt;
		local parse_talkpage_content = require(&amp;#039;Модуль:Get page content&amp;#039;)._parse_talkpage_content&lt;br /&gt;
		&lt;br /&gt;
		for k, v in pairs(items) do&lt;br /&gt;
			local argsToPass = {}&lt;br /&gt;
			argsToPass[1] = v.titleObject&lt;br /&gt;
			argsToPass[&amp;#039;короткие заголовки&amp;#039;] = not items[2] and true or false&lt;br /&gt;
			if fullTopicsToShow == 0 then&lt;br /&gt;
				argsToPass[&amp;#039;только статистика&amp;#039;] = true&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local allDataFromPage = parse_talkpage_content(argsToPass)&lt;br /&gt;
			if type(allDataFromPage) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				if allDataFromPage[1] then&lt;br /&gt;
					local pageTitle = v.titleObject.prefixedText&lt;br /&gt;
					talkpageCount = talkpageCount + 1&lt;br /&gt;
					for k2, v2 in pairs(allDataFromPage) do&lt;br /&gt;
						v2.pageTitle = pageTitle&lt;br /&gt;
						v2.canonicalPath = v2.pageTitle .. &amp;#039;#&amp;#039; .. v2.sectionHeading .. (v2.subsectionHeading and &amp;#039;\\\\\\&amp;#039; .. v2.subsectionHeading or &amp;#039;&amp;#039;)&lt;br /&gt;
						table.insert(allData, v2)&lt;br /&gt;
					end&lt;br /&gt;
					if talkpageCount == 1 then&lt;br /&gt;
						onlyPageTitle = pageTitle&lt;br /&gt;
					end&lt;br /&gt;
				elseif allDataFromPage.pageNotExistMessage then&lt;br /&gt;
					table.insert(itemsToRemove, v.originalFullTitle)&lt;br /&gt;
					table.insert(errorInfo, allDataFromPage.pageNotExistMessage)&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(errorInfo, &amp;#039;Не удалось получить данные о странице «&amp;#039; .. v.titleObject.prefixedText .. &amp;#039;» от модуля получения содержимого страницы.&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif pageListMode then&lt;br /&gt;
		pageListData = {}&lt;br /&gt;
		local parse_talkpage_content = require(&amp;#039;Модуль:Get page content&amp;#039;)._parse_talkpage_content&lt;br /&gt;
		&lt;br /&gt;
		for k, v in pairs(items) do&lt;br /&gt;
			local argsToPass = {}&lt;br /&gt;
			argsToPass[1] = v.titleObject&lt;br /&gt;
			argsToPass[&amp;#039;только статистика&amp;#039;] = true&lt;br /&gt;
			argsToPass[&amp;#039;режим списков страниц&amp;#039;] = true&lt;br /&gt;
			&lt;br /&gt;
			local allDataFromPage = parse_talkpage_content(argsToPass)&lt;br /&gt;
			if type(allDataFromPage) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				if allDataFromPage[1] then&lt;br /&gt;
					local pageTitle = v.titleObject.prefixedText&lt;br /&gt;
					local pageData = {&lt;br /&gt;
						num = k,&lt;br /&gt;
						pageTitle = pageTitle,&lt;br /&gt;
						msgCount = 0,&lt;br /&gt;
						topicCount = 0,&lt;br /&gt;
						lastMsgDateTimestamp = 0&lt;br /&gt;
					}&lt;br /&gt;
					for k2, v2 in pairs(allDataFromPage) do&lt;br /&gt;
						if v2.msgCount then&lt;br /&gt;
							pageData.msgCount = pageData.msgCount + v2.msgCount&lt;br /&gt;
							if v2.lastMsgDateTimestamp &amp;gt; pageData.lastMsgDateTimestamp then&lt;br /&gt;
								--pageData.lastMsgDate = v2.lastMsgDate&lt;br /&gt;
								pageData.lastMsgDateString = v2.lastMsgDateString&lt;br /&gt;
								pageData.lastMsgDateTimestamp = v2.lastMsgDateTimestamp&lt;br /&gt;
								pageData.lastMsgAuthor = v2.lastMsgAuthor&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						pageData.topicCount = pageData.topicCount + 1&lt;br /&gt;
						if v2.warningHeading and not pageData.warningHeading then&lt;br /&gt;
							pageData.warningHeading = v2.warningHeading&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					table.insert(pageListData, pageData)&lt;br /&gt;
				elseif allDataFromPage.pageNotExistMessage then&lt;br /&gt;
					table.insert(itemsToRemove, v.originalFullTitle)&lt;br /&gt;
					table.insert(errorInfo, allDataFromPage.pageNotExistMessage)&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(errorInfo, &amp;#039;Не удалось получить данные о странице «&amp;#039; .. v.titleObject.prefixedText .. &amp;#039;» от модуля получения содержимого страницы.&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local parse_section_content = require(&amp;#039;Модуль:Get page content&amp;#039;)._parse_section_content&lt;br /&gt;
		&lt;br /&gt;
		for k, v in pairs(items) do&lt;br /&gt;
			local argsToPass = {}&lt;br /&gt;
			table.insert(argsToPass, v.titleObject)&lt;br /&gt;
			table.insert(argsToPass, v.sectionHeading)&lt;br /&gt;
			argsToPass[&amp;#039;итог&amp;#039;] = v.resultMode&lt;br /&gt;
			argsToPass[&amp;#039;подраздел&amp;#039;] = v.subsectionHeading&lt;br /&gt;
			argsToPass[&amp;#039;как данные&amp;#039;] = true&lt;br /&gt;
			if fullTopicsToShow == 0 then&lt;br /&gt;
				argsToPass[&amp;#039;только статистика&amp;#039;] = true&lt;br /&gt;
			else&lt;br /&gt;
				argsToPass[&amp;#039;стандартный заголовок&amp;#039;] = true&lt;br /&gt;
			end&lt;br /&gt;
			if afdMode then&lt;br /&gt;
				argsToPass[&amp;#039;режим КУ&amp;#039;] = true&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local data = parse_section_content(argsToPass)&lt;br /&gt;
			if type(data) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				if data.pageNotExistMessage then&lt;br /&gt;
					table.insert(itemsToRemove, v.originalFullTitle)&lt;br /&gt;
					table.insert(errorInfo, data.pageNotExistMessage)&lt;br /&gt;
				elseif data.sectionNotExistMessage then&lt;br /&gt;
					table.insert(itemsToRemove, v.originalFullTitle)&lt;br /&gt;
					table.insert(errorInfo, data.sectionNotExistMessage)&lt;br /&gt;
				else&lt;br /&gt;
					if topicsToShow ~= 0 and data.msgCount then&lt;br /&gt;
						data.pageTitle = v.titleObject.prefixedText&lt;br /&gt;
						data.sectionHeading = v.sectionHeading&lt;br /&gt;
						if argsToPass[&amp;#039;подраздел&amp;#039;] then&lt;br /&gt;
							data.subsectionHeading = argsToPass[&amp;#039;подраздел&amp;#039;]&lt;br /&gt;
						end&lt;br /&gt;
						data.canonicalPath = data.pageTitle .. &amp;#039;#&amp;#039; .. data.sectionHeading .. (data.subsectionHeading and &amp;#039;\\\\\\&amp;#039; .. data.subsectionHeading or &amp;#039;&amp;#039;)&lt;br /&gt;
					end&lt;br /&gt;
					if afdMode then&lt;br /&gt;
						if not data.closureHeading then&lt;br /&gt;
							table.insert(allData, data)&lt;br /&gt;
							if #allData &amp;gt;= nominationsNum then break end&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						table.insert(allData, data)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(errorInfo, &amp;#039;Не удалось получить данные о странице «&amp;#039; .. v.titleObject.prefixedText .. &amp;#039;» от модуля получения содержимого страницы.&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for k, v in pairs(allData) do&lt;br /&gt;
		allData[k].num = k&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- если включена сортировка и полных тем, и тем в таблице, мы можем сразу отсортировать общий массив&lt;br /&gt;
	if sortTopics and (fullTopicsToShow == 0 or sortFullTopics) then&lt;br /&gt;
		table.sort(allData, function (data1, data2)&lt;br /&gt;
			-- благодаря 10000 - dataN.num темы частично сохраняют изначальный порядок&lt;br /&gt;
			local lastMsgDate1Timestamp = data1.lastMsgDateTimestamp or 10000 - data1.num&lt;br /&gt;
			local lastMsgDate2Timestamp = data2.lastMsgDateTimestamp or 10000 - data2.num&lt;br /&gt;
			&lt;br /&gt;
			return lastMsgDate1Timestamp &amp;gt; lastMsgDate2Timestamp&lt;br /&gt;
		end)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- считаем число тем и страниц, откладываем отсутствующие&lt;br /&gt;
	local pages, topics, fullTopics = {}, {}, {}&lt;br /&gt;
	local randomNum&lt;br /&gt;
	if allData[1] then&lt;br /&gt;
		if fullTopicsToShow ~= 0 then&lt;br /&gt;
			randomNum = tostring(os.clock()):sub(-7)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for k, v in pairs(allData) do&lt;br /&gt;
			table.insert(fullTopics, v)&lt;br /&gt;
			if v.msgCount then&lt;br /&gt;
				table.insert(topics, v)&lt;br /&gt;
				if not findInTable(pages, v.pageTitle) then&lt;br /&gt;
					table.insert(pages, v.pageTitle)&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;
	if sortTopics and (fullTopicsToShow ~= 0 and not sortFullTopics) then&lt;br /&gt;
		table.sort(topics, function (data1, data2)&lt;br /&gt;
			-- благодаря 10000 - dataN.num темы частично сохраняют изначальный порядок&lt;br /&gt;
			local lastMsgDate1Timestamp = data1.lastMsgDateTimestamp or 10000 - data1.num&lt;br /&gt;
			local lastMsgDate2Timestamp = data2.lastMsgDateTimestamp or 10000 - data2.num&lt;br /&gt;
			&lt;br /&gt;
			return lastMsgDate1Timestamp &amp;gt; lastMsgDate2Timestamp&lt;br /&gt;
		end)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #topics &amp;gt; topicsToShow then&lt;br /&gt;
		pages = {}&lt;br /&gt;
		for k, v in pairs(topics) do&lt;br /&gt;
			if not findInTable(pages, v.pageTitle) then&lt;br /&gt;
				table.insert(pages, v.pageTitle)&lt;br /&gt;
			end&lt;br /&gt;
			if k == topicsToShow then&lt;br /&gt;
				for i = k + 1, #topics do&lt;br /&gt;
					table.remove(topics, k + 1)&lt;br /&gt;
				end&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- формируем шапку&lt;br /&gt;
	local headerContent = &amp;#039;&amp;#039;&lt;br /&gt;
	if talkpageMode and talkpageCount == 1 then&lt;br /&gt;
		headerContent = headerContent .. &amp;#039;&amp;lt;div style=&amp;quot;font-size:1.5em;&amp;quot;&amp;gt;[[&amp;#039; .. onlyPageTitle .. &amp;#039;]]&amp;lt;/div&amp;gt;\n&amp;#039;&lt;br /&gt;
	elseif afdMode then&lt;br /&gt;
		headerContent = headerContent .. &amp;#039;&amp;lt;div style=&amp;quot;font-size:1.5em;&amp;quot;&amp;gt;&amp;#039; .. #topics .. &amp;#039; &amp;#039; .. ru:plural(#topics, &amp;#039;самая старая незакрытая номинация&amp;#039;, &amp;#039;самые старые незакрытые номинации&amp;#039;, &amp;#039;самых старых незакрытых номинаций&amp;#039;) .. &amp;#039; «[[ВП:К удалению|К удалению]]»&amp;lt;/div&amp;gt;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if showTopicCount then&lt;br /&gt;
		if standardMode or talkpageMode then&lt;br /&gt;
			headerContent = headerContent .. &amp;#039;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;&amp;#039; .. #topics .. &amp;#039;&amp;lt;/b&amp;gt; &amp;#039; .. ru:plural(#topics, &amp;#039;тема&amp;#039;, &amp;#039;темы&amp;#039;, &amp;#039;тем&amp;#039;) .. &amp;#039; на &amp;lt;b&amp;gt;&amp;#039; .. #pages .. &amp;#039;&amp;lt;/b&amp;gt; &amp;#039; .. ru:plural(#pages, &amp;#039;странице&amp;#039;, &amp;#039;страницах&amp;#039;)&lt;br /&gt;
		elseif afdMode then&lt;br /&gt;
			if #pages ~= 0 then&lt;br /&gt;
				headerContent = headerContent .. &amp;#039;&amp;lt;p&amp;gt;За &amp;lt;b&amp;gt;&amp;#039; .. #pages .. &amp;#039;&amp;lt;/b&amp;gt; &amp;#039; .. ru:plural(#pages, &amp;#039;день&amp;#039;, &amp;#039;дня&amp;#039;, &amp;#039;дней&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif pageListMode then&lt;br /&gt;
			headerContent = headerContent .. &amp;#039;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;&amp;#039; .. #pageListData .. &amp;#039;&amp;lt;/b&amp;gt; &amp;#039; .. ru:plural(#pageListData, &amp;#039;страница&amp;#039;, &amp;#039;страницы&amp;#039;, &amp;#039;страниц&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if separateTopicListPage then&lt;br /&gt;
			headerContent = headerContent .. &amp;#039;&amp;amp;nbsp;&amp;lt;b&amp;gt;·&amp;lt;/b&amp;gt; &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[&amp;#039; .. separateTopicListPage:fullUrl(&amp;#039;action=edit&amp;#039;) .. &amp;#039; Редактировать список тем]&amp;lt;/span&amp;gt;\n&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		headerContent = headerContent .. &amp;#039;&amp;lt;/p&amp;gt;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if reloadLink then&lt;br /&gt;
		headerContent = headerContent .. &amp;#039;&amp;lt;p &amp;#039; .. (&lt;br /&gt;
			    not false  -- пока оставим&lt;br /&gt;
			and &amp;#039;style=&amp;quot;margin-top:1.5em;&amp;quot;&amp;#039;&lt;br /&gt;
			 or &amp;#039;&amp;#039;&lt;br /&gt;
		) .. &amp;#039;&amp;gt;&amp;lt;span style=&amp;quot;font-size:1.5em;&amp;quot; class=&amp;quot;plainlinks purgelink&amp;quot;&amp;gt;[&amp;#039; .. mw.title.getCurrentTitle():fullUrl(&amp;#039;action=purge&amp;#039;) .. &amp;#039; Обновить]&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;b&amp;gt;·&amp;lt;/b&amp;gt; обновлялось в &amp;#039; .. ru:formatDate(&amp;#039;H:i j xg Y&amp;#039;) .. &amp;#039; (UTC)&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if reloadLink or separateTopicPage then&lt;br /&gt;
		headerContent = headerContent .. &amp;#039;&amp;lt;/p&amp;gt;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not afdMode and not pageListMode and fullTopicsToShow &amp;gt; 50 and #topics &amp;gt; 50 then&lt;br /&gt;
		headerContent = headerContent .. &amp;#039;&amp;lt;p style=&amp;quot;font-size:85%;&amp;quot;&amp;gt;Для более быстрой загрузки страницы и экономии ресурсов сервера сократите число тем, содержимое которых выводится на странице, уменьшив значение параметра &amp;lt;code&amp;gt;полных тем&amp;lt;/code&amp;gt; в шаблоне.&amp;lt;/p&amp;gt;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- формируем таблицу&lt;br /&gt;
	local outFragmentLink_title = &amp;#039;Ссылка прямо на реплику в настоящий момент работает только при включенном гаджете «Удобные обсуждения»&amp;#039;&lt;br /&gt;
	if pageListData and pageListData[1] then&lt;br /&gt;
		local tableContent =&lt;br /&gt;
			   &amp;#039;{| class=&amp;quot;wikitable wide sortable&amp;quot; style=&amp;quot;line-height:1.4;&amp;quot;\n&amp;#039;&lt;br /&gt;
			.. &amp;#039;! width=&amp;quot;2%&amp;quot; | №&amp;#039;&lt;br /&gt;
			.. &amp;#039;!! Страница &amp;#039;&lt;br /&gt;
			.. &amp;#039;!! width=&amp;quot;25%&amp;quot; class=&amp;quot;nowrap&amp;quot; | Последнее сообщение &amp;#039;&lt;br /&gt;
			.. &amp;#039;!! width=&amp;quot;10%&amp;quot; | Тем &amp;#039;&lt;br /&gt;
			.. &amp;#039;!! width=&amp;quot;10%&amp;quot; | Сообщений\n&amp;#039;&lt;br /&gt;
		for k, v in pairs(pageListData) do&lt;br /&gt;
			if v.msgCount then&lt;br /&gt;
				tableContent = tableContent&lt;br /&gt;
					.. &amp;#039;|-\n&amp;#039;&lt;br /&gt;
					.. &amp;#039;| style=&amp;quot;text-align:center;&amp;quot; | &amp;#039; .. v.num .. &amp;#039;\n&amp;#039;&lt;br /&gt;
					.. &amp;#039;| &amp;#039; .. conceal(v.pageTitle, &amp;#039;wikilink&amp;#039;) .. &amp;#039;[[&amp;#039; .. v.pageTitle .. &amp;#039;|&amp;lt;span style=&amp;quot;display:block; font-size:110%;&amp;quot;&amp;gt;&amp;#039; .. v.pageTitle .. (&lt;br /&gt;
							    v.warningHeading&lt;br /&gt;
							and &amp;#039;&amp;lt;span style=&amp;quot;display:inline-block; margin-left:1em; padding:0 8px; border-radius:5px; font-size:83.33%; line-height:1.5; letter-spacing:1px; background-color:#a07; color:#f9f9f9; white-space:nowrap;&amp;quot;&amp;gt;ПРЕДУПР.&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
							 or &amp;#039;&amp;#039;&lt;br /&gt;
						) .. &amp;#039;&amp;lt;/span&amp;gt;]]\n&amp;#039;&lt;br /&gt;
					.. &amp;#039;| style=&amp;quot;/* Chrome */ word-break:break-word; /* ? */ word-wrap:break-word;&amp;quot; | &amp;#039; .. (&lt;br /&gt;
						    v.msgCount &amp;gt; 0&lt;br /&gt;
						and conceal(v.lastMsgDateTimestamp, &amp;#039;lastMsgDate&amp;#039;) .. &amp;#039;[[&amp;#039; .. v.pageTitle .. &amp;#039;#&amp;#039; .. v.lastMsgDateString .. &amp;#039;_&amp;#039; .. v.lastMsgAuthor .. &amp;#039;|&amp;lt;span style=&amp;quot;display:block; text-decoration:inherit;&amp;quot; class=&amp;quot;topicWatch-outFragmentLink&amp;quot; title=&amp;quot;&amp;#039; .. outFragmentLink_title .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. v.lastMsgDateString .. &amp;#039;&amp;lt;br&amp;gt;от &amp;#039; .. v.lastMsgAuthor .. &amp;#039;&amp;lt;/span&amp;gt;]]\n&amp;#039;&lt;br /&gt;
						 or &amp;#039;—\n&amp;#039;&lt;br /&gt;
					)&lt;br /&gt;
					.. &amp;#039;| style=&amp;quot;text-align:center;&amp;quot; | &amp;#039; .. conceal(v.msgCount, &amp;#039;topicCount&amp;#039;) .. v.topicCount .. &amp;#039;\n&amp;#039;&lt;br /&gt;
					.. &amp;#039;| style=&amp;quot;text-align:center;&amp;quot; | &amp;#039; .. conceal(v.msgCount, &amp;#039;msgCount&amp;#039;) .. v.msgCount .. &amp;#039;\n&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		tableContent = tableContent .. &amp;#039;|}\n&amp;#039;&lt;br /&gt;
		headerContent = headerContent .. tableContent&lt;br /&gt;
	elseif topicsToShow ~= 0 and #topics ~= 0 then&lt;br /&gt;
		local needHighlightOutLinks = fullTopicsToShow ~= 0 and fullTopicsToShow &amp;lt; math.min(#topics, topicsToShow)&lt;br /&gt;
		local labelColors =&lt;br /&gt;
			    afdMode&lt;br /&gt;
			and {&lt;br /&gt;
					closure           = &amp;#039;#800&amp;#039;,&lt;br /&gt;
					preclosure        = &amp;#039;#25820e&amp;#039;,&lt;br /&gt;
					challengedClosure = &amp;#039;#a07&amp;#039;,&lt;br /&gt;
					partialClosure    = &amp;#039;#00a&amp;#039;,&lt;br /&gt;
				}&lt;br /&gt;
			 or {&lt;br /&gt;
					closure           = &amp;#039;#999&amp;#039;,&lt;br /&gt;
					preclosure        = &amp;#039;#999&amp;#039;,&lt;br /&gt;
					challengedClosure = &amp;#039;#999&amp;#039;,&lt;br /&gt;
					partialClosure    = &amp;#039;#999&amp;#039;,&lt;br /&gt;
				}&lt;br /&gt;
		&lt;br /&gt;
		local tableContent&lt;br /&gt;
		if style == &amp;#039;wikitable&amp;#039; then&lt;br /&gt;
			tableContent =&lt;br /&gt;
				   &amp;#039;{| class=&amp;quot;wikitable wide sortable topicWatch-topicTable&amp;quot;&amp;#039; .. (fullTopicsToShow ~= 0 and &amp;#039; id=&amp;quot;topicTable&amp;#039; .. randomNum .. &amp;#039;&amp;quot;&amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039; style=&amp;quot;line-height:1.4;&amp;quot;\n&amp;#039;&lt;br /&gt;
				.. (talkpageMode and talkpageCount &amp;gt; 1 and &amp;#039;&amp;#039; or &amp;#039;! width=&amp;quot;2%&amp;quot; | № !&amp;#039;)&lt;br /&gt;
				.. &amp;#039;! Тема &amp;#039;&lt;br /&gt;
				.. &amp;#039;!! width=&amp;quot;25%&amp;quot; class=&amp;quot;nowrap&amp;quot; | Последнее сообщение &amp;#039;&lt;br /&gt;
				.. &amp;#039;!! width=&amp;quot;10%&amp;quot; | Сообщений &amp;#039;&lt;br /&gt;
				.. &amp;#039;!! width=&amp;quot;10%&amp;quot; | Авторов\n&amp;#039;&lt;br /&gt;
		elseif style == &amp;#039;форумный&amp;#039; then&lt;br /&gt;
			tableContent =&lt;br /&gt;
				   &amp;#039;{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; style=&amp;quot;margin:1em 0; padding:8px 13px; border:1px solid #afd2e9; background:#f1f7fb; line-height:1.4;&amp;quot;\n&amp;#039;&lt;br /&gt;
				.. &amp;#039;|\n&amp;#039;&lt;br /&gt;
				.. &amp;#039;{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; class=&amp;quot;sortable topicWatch-topicTable&amp;quot;&amp;#039; .. (fullTopicsToShow ~= 0 and &amp;#039; id=&amp;quot;topicTable&amp;#039; .. randomNum .. &amp;#039;&amp;quot;&amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
				.. &amp;#039;|-\n&amp;#039;&lt;br /&gt;
				.. (talkpageMode and talkpageCount &amp;gt; 1 and &amp;#039;&amp;#039; or &amp;#039;! style=&amp;quot;border-bottom:1px solid #afd2e9; padding:2px 1.5em 4px 0; text-align:right; font-weight:normal;&amp;quot; | № !&amp;#039;)&lt;br /&gt;
				.. &amp;#039;! style=&amp;quot;border-bottom:1px solid #afd2e9; padding:2px 2em 4px 0; text-align:left; font-weight:normal;&amp;quot; | &amp;#039; .. (talkpageMode and talkpageCount == 1 and &amp;#039;&amp;#039; or &amp;#039;&amp;lt;span style=&amp;quot;visibility:hidden;&amp;quot;&amp;gt;§ &amp;lt;/span&amp;gt;&amp;#039;) .. &amp;#039;Тема &amp;#039;&lt;br /&gt;
				.. &amp;#039;!! style=&amp;quot;border-bottom:1px solid #afd2e9; padding:2px 2em 4px 0; text-align:left; font-weight:normal;&amp;quot; class=&amp;quot;nowrap&amp;quot; | Последнее сообщение &amp;#039;&lt;br /&gt;
				.. &amp;#039;!! style=&amp;quot;border-bottom:1px solid #afd2e9; padding:2px 1.5em 4px 0; text-align:left; font-weight:normal;&amp;quot; | Сообщений\n&amp;#039;&lt;br /&gt;
				.. &amp;#039;|-\n&amp;#039;&lt;br /&gt;
				.. &amp;#039;| colspan=&amp;quot;3&amp;quot; style=&amp;quot;padding-top:6px;&amp;quot; |\n&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in pairs(topics) do&lt;br /&gt;
			local labels = (  -- может быть предварительный после оспоренного, поэтому ярлык оспаривания раньше&lt;br /&gt;
					    v.challengedClosureHeading&lt;br /&gt;
					and &amp;#039;&amp;lt;span style=&amp;quot;display:inline-block; margin-left:1em; padding:0 8px; border-radius:5px; font-size:83.33%; line-height:1.5; letter-spacing:1px; background-color:&amp;#039; .. labelColors.challengedClosure .. &amp;#039;; color:#f9f9f9; white-space:nowrap;&amp;quot; title=&amp;quot;В теме есть подраздел с названием «&amp;#039; .. v.challengedClosureHeading .. &amp;#039;»&amp;quot;&amp;#039; .. (afdMode and &amp;#039;&amp;#039; or &amp;#039; class=&amp;quot;topicWatch-label-challengedClosure&amp;quot;&amp;#039;) .. &amp;#039;&amp;gt;ОСПОРЕНО&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
					 or &amp;#039;&amp;#039;&lt;br /&gt;
				) .. (&lt;br /&gt;
					    v.preclosureHeading&lt;br /&gt;
					and &amp;#039;&amp;lt;span style=&amp;quot;display:inline-block; margin-left:1em; padding:0 8px; border-radius:5px; font-size:83.33%; line-height:1.5; letter-spacing:1px; background-color:&amp;#039; .. labelColors.preclosure .. &amp;#039;; color:#f9f9f9; white-space:nowrap;&amp;quot; title=&amp;quot;В теме есть подраздел с названием «&amp;#039; .. v.preclosureHeading .. &amp;#039;»&amp;quot;&amp;#039; .. (afdMode and &amp;#039;&amp;#039; or &amp;#039; class=&amp;quot;topicWatch-label-preclosure&amp;quot;&amp;#039;) .. &amp;#039;&amp;gt;ПРЕДЫТОГ&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
					 or &amp;#039;&amp;#039;&lt;br /&gt;
				) .. (&lt;br /&gt;
					    v.partialClosureHeading&lt;br /&gt;
					and &amp;#039;&amp;lt;span style=&amp;quot;display:inline-block; margin-left:1em; padding:0 8px; border-radius:5px; font-size:83.33%; line-height:1.5; letter-spacing:1px; background-color:&amp;#039; .. labelColors.partialClosure .. &amp;#039;; color:#f9f9f9; white-space:nowrap;&amp;quot; title=&amp;quot;В теме есть подподраздел с названием «&amp;#039; .. v.partialClosureHeading .. &amp;#039;»&amp;quot;&amp;#039; .. (afdMode and &amp;#039;&amp;#039; or &amp;#039; class=&amp;quot;topicWatch-label-partialClosure&amp;quot;&amp;#039;) .. &amp;#039;&amp;gt;ЧАСТ. ИТОГ&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
					 or &amp;#039;&amp;#039;&lt;br /&gt;
				) .. (&lt;br /&gt;
					    v.closureHeading&lt;br /&gt;
					and &amp;#039;&amp;lt;span style=&amp;quot;display:inline-block; margin-left:1em; padding:0 8px; border-radius:5px; font-size:83.33%; line-height:1.5; letter-spacing:1px; background-color:&amp;#039; .. labelColors.closure .. &amp;#039;; color:#f9f9f9; white-space:nowrap;&amp;quot; title=&amp;quot;В теме есть подраздел с названием «&amp;#039; .. v.closureHeading .. &amp;#039;»&amp;quot;&amp;#039; .. (afdMode and &amp;#039;&amp;#039; or &amp;#039; class=&amp;quot;topicWatch-label-closure&amp;quot;&amp;#039;) .. &amp;#039;&amp;gt;ИТОГ&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
					 or &amp;#039;&amp;#039;&lt;br /&gt;
				)&lt;br /&gt;
			&lt;br /&gt;
			local topicString, lastMsgString, msgCountString, authorCountString, numString&lt;br /&gt;
			local topicAttrs, lastMsgAttrs, msgCountAttrs, authorCountAttrs, numAttrs&lt;br /&gt;
			if style == &amp;#039;wikitable&amp;#039; then&lt;br /&gt;
				numString = v.num&lt;br /&gt;
				topicString = conceal(v.canonicalPath, &amp;#039;wikilink&amp;#039;) .. &amp;#039;[[&amp;#039; .. (&lt;br /&gt;
						    k &amp;lt;= fullTopicsToShow&lt;br /&gt;
						and (&lt;br /&gt;
							    talkpageMode and talkpageCount == 1&lt;br /&gt;
							and v.sectionHeadingLink&lt;br /&gt;
							 or (&lt;br /&gt;
								    v.subsectionHeading&lt;br /&gt;
								and v.subsectionHeading .. &amp;#039; (&amp;#039; .. v.sectionHeadingLink .. &amp;#039;)&amp;#039;&lt;br /&gt;
								 or v.sectionHeadingLink&lt;br /&gt;
								) .. &amp;#039; ← &amp;#039; .. v.pageTitle&lt;br /&gt;
							)&lt;br /&gt;
						 or v.pageTitle .. (&lt;br /&gt;
							    v.subsectionHeading&lt;br /&gt;
							and v.subsectionHeading .. &amp;#039; (&amp;#039; .. v.sectionHeadingLink .. &amp;#039;)&amp;#039;&lt;br /&gt;
							 or v.sectionHeadingLink&lt;br /&gt;
							)&lt;br /&gt;
					) .. &amp;#039;|&amp;lt;span &amp;#039; .. (k &amp;lt;= fullTopicsToShow and fullTopicsToShow ~= 0 and &amp;#039;&amp;#039; or &amp;#039;title=&amp;quot;Откроется на отдельной странице&amp;quot; &amp;#039;) .. (&lt;br /&gt;
						    talkpageMode and talkpageCount == 1&lt;br /&gt;
						and &amp;#039;style=&amp;quot;display:block; font-size:110%;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
						 or &amp;#039;style=&amp;quot;display:block;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;visibility:hidden;&amp;quot;&amp;gt;§ &amp;lt;/span&amp;gt;&amp;lt;small&amp;gt;&amp;#039; .. v.pageTitle .. &amp;#039;&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;display:inline-block;&amp;quot;&amp;gt;§ &amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
					) .. v.sectionHeading .. labels .. &amp;#039;&amp;lt;/span&amp;gt;]]&amp;#039;  -- TODO: учёт подраздела&lt;br /&gt;
				lastMsgString = conceal(v.lastMsgDateTimestamp, &amp;#039;lastMsgDate&amp;#039;) .. (&lt;br /&gt;
						    k &amp;lt;= fullTopicsToShow&lt;br /&gt;
						and &amp;#039;[[#&amp;#039; .. v.lastMsgAnchor .. &amp;#039;|&amp;lt;span style=&amp;quot;display:block; text-decoration:inherit;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
						 or &amp;#039;[[&amp;#039; .. v.pageTitle .. &amp;#039;#&amp;#039; .. v.lastMsgAnchor .. &amp;#039;|&amp;lt;span style=&amp;quot;display:block; text-decoration:inherit;&amp;quot; class=&amp;quot;topicWatch-outFragmentLink&amp;quot; title=&amp;quot;&amp;#039; .. outFragmentLink_title .. &amp;#039;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
					) .. v.lastMsgDateString .. &amp;#039;&amp;lt;br&amp;gt;от &amp;#039; .. v.lastMsgAuthor .. &amp;#039;&amp;lt;/span&amp;gt;]]&amp;#039;&lt;br /&gt;
				msgCountString = conceal(v.msgCount, &amp;#039;msgCount&amp;#039;) .. v.msgCount&lt;br /&gt;
				authorCountString = conceal(#v.authors, &amp;#039;authorCount&amp;#039;) .. &amp;#039;&amp;lt;span style=&amp;quot;border-bottom:1px dotted; cursor:help;&amp;quot; title=&amp;quot;&amp;#039; .. table.concat(v.authors, &amp;#039;, &amp;#039;) .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. #v.authors .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
				&lt;br /&gt;
				numAttrs = &amp;#039;style=&amp;quot;text-align:center;&amp;quot;&amp;#039;&lt;br /&gt;
				topicAttrs = &amp;#039;&amp;#039;&lt;br /&gt;
				lastMsgAttrs = &amp;#039;style=&amp;quot;/* Chrome */ word-break:break-word; /* ? */ word-wrap:break-word;&amp;quot;&amp;#039;&lt;br /&gt;
				msgCountAttrs = &amp;#039;style=&amp;quot;text-align:center;&amp;quot;&amp;#039;&lt;br /&gt;
				authorCountAttrs = &amp;#039;style=&amp;quot;text-align:center;&amp;quot;&amp;#039;&lt;br /&gt;
			elseif style == &amp;#039;форумный&amp;#039; then&lt;br /&gt;
				numString =     talkpageMode and talkpageCount == 1&lt;br /&gt;
							and &amp;#039;&amp;lt;span style=&amp;quot;font-size:110%; visibility:hidden;&amp;quot;&amp;gt;l&amp;lt;/span&amp;gt;&amp;#039; .. v.num .. &amp;#039;&amp;lt;span style=&amp;quot;font-size:110%; visibility:hidden;&amp;quot;&amp;gt;l&amp;lt;/span&amp;gt;&amp;#039;  -- способ, рекомендуемый Горбуновым, чтобы строки были на одной линии&lt;br /&gt;
							 or v.num&lt;br /&gt;
				topicString = conceal(v.canonicalPath, &amp;#039;wikilink&amp;#039;)  .. &amp;#039;[[&amp;#039; .. v.pageTitle .. (&lt;br /&gt;
						    v.subsectionHeading&lt;br /&gt;
						and v.subsectionHeading .. &amp;#039; (&amp;#039; .. v.sectionHeadingLink .. &amp;#039;)&amp;#039;&lt;br /&gt;
						 or v.sectionHeadingLink&lt;br /&gt;
					) .. &amp;#039;|&amp;#039; .. (&lt;br /&gt;
						    talkpageMode and talkpageCount == 1&lt;br /&gt;
						and &amp;#039;&amp;lt;span style=&amp;quot;display:block; font-size:110%;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
						 or &amp;#039;&amp;lt;span style=&amp;quot;display:block;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;display:inline-block;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;visibility:hidden;&amp;quot;&amp;gt;§ &amp;lt;/span&amp;gt;&amp;lt;small&amp;gt;&amp;#039; .. mw.ustring.gsub(v.pageTitle, &amp;#039;Википедия:Форум/&amp;#039;, &amp;#039;&amp;#039;) .. &amp;#039;&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;display:inline-block;&amp;quot;&amp;gt;§ &amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
					) .. v.sectionHeading .. labels .. &amp;#039;&amp;lt;/span&amp;gt;]]&amp;#039;&lt;br /&gt;
				lastMsgString = conceal(v.lastMsgDateTimestamp, &amp;#039;lastMsgDate&amp;#039;) .. (&lt;br /&gt;
						    k &amp;lt;= fullTopicsToShow&lt;br /&gt;
						and &amp;#039;[[#&amp;#039; .. v.lastMsgAnchor .. &amp;#039;|&amp;lt;span style=&amp;quot;display:block; text-decoration:inherit;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
						 or &amp;#039;[[&amp;#039; .. v.pageTitle .. &amp;#039;#&amp;#039; .. v.lastMsgAnchor .. &amp;#039;|&amp;lt;span style=&amp;quot;display:block; text-decoration:inherit;&amp;quot; class=&amp;quot;topicWatch-outFragmentLink&amp;quot; title=&amp;quot;&amp;#039; .. outFragmentLink_title .. &amp;#039;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
					) .. v.lastMsgDateString .. &amp;#039;&amp;lt;br&amp;gt;от &amp;#039; .. v.lastMsgAuthor .. &amp;#039;&amp;lt;/span&amp;gt;]]&amp;#039;&lt;br /&gt;
				msgCountString = conceal(v.msgCount, &amp;#039;msgCount&amp;#039;) .. &amp;#039;&amp;lt;span style=&amp;quot;border-bottom:1px dotted; cursor:help;&amp;quot; title=&amp;quot;От &amp;#039; .. #v.authors .. &amp;#039; &amp;#039; .. ru:plural(#v.authors , &amp;#039;автора&amp;#039;, &amp;#039;авторов&amp;#039;) .. &amp;#039;:&amp;amp;#10;&amp;#039; .. table.concat(v.authors, &amp;#039;, &amp;#039;) .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. v.msgCount .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
				&lt;br /&gt;
				numAttrs = &amp;#039;style=&amp;quot;padding:3px 0; vertical-align:top; text-align:right; padding-right:8px;&amp;quot;&amp;#039;&lt;br /&gt;
				topicAttrs = &amp;#039;style=&amp;quot;padding:3px 2em 3px 0; vertical-align:top;&amp;quot;&amp;#039;&lt;br /&gt;
				lastMsgAttrs = &amp;#039;style=&amp;quot;padding:3px 0.5em 3px 0; vertical-align:top; /* Chrome */ word-break:break-word; /* ? */ word-wrap:break-word;&amp;quot;&amp;#039;&lt;br /&gt;
				msgCountAttrs = &amp;#039;style=&amp;quot;padding:3px 0; vertical-align:top; text-align:center; vertical-align:top;&amp;quot;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			tableContent = tableContent&lt;br /&gt;
				.. &amp;#039;|-&amp;#039; .. (style ~= &amp;#039;форумный&amp;#039; and needHighlightOutLinks and k &amp;gt; fullTopicsToShow and &amp;#039; style=&amp;quot;background-color:#f2f2f2;&amp;quot;&amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
				.. (talkpageMode and talkpageCount &amp;gt; 1 and &amp;#039;&amp;#039; or &amp;#039;| &amp;#039; .. numAttrs .. &amp;#039; | &amp;#039; .. numString .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
				.. &amp;#039;| &amp;#039; .. topicAttrs .. &amp;#039; | &amp;#039; .. topicString .. &amp;#039;\n&amp;#039;&lt;br /&gt;
				.. &amp;#039;| &amp;#039; .. lastMsgAttrs .. &amp;#039; | &amp;#039; .. lastMsgString .. &amp;#039;\n&amp;#039;&lt;br /&gt;
				.. &amp;#039;| &amp;#039; .. msgCountAttrs .. &amp;#039; | &amp;#039; .. msgCountString .. &amp;#039;\n&amp;#039;&lt;br /&gt;
				.. (style == &amp;#039;форумный&amp;#039; and &amp;#039;&amp;#039; or &amp;#039;| &amp;#039; .. authorCountAttrs .. &amp;#039; | &amp;#039; .. authorCountString .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		tableContent = tableContent .. &amp;#039;|}\n&amp;#039;&lt;br /&gt;
		if style == &amp;#039;форумный&amp;#039; then&lt;br /&gt;
			tableContent = tableContent .. &amp;#039;|}\n&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		headerContent = headerContent .. tableContent&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- формируем сообщение(-я) об ошибке&lt;br /&gt;
	if not items[1] then&lt;br /&gt;
		if standardMode then&lt;br /&gt;
			table.insert(errorInfo, &amp;#039;В списке тем для отслеживания пока пусто.&amp;#039;)&lt;br /&gt;
		elseif talkpageMode or pageListMode then&lt;br /&gt;
			table.insert(errorInfo, &amp;#039;В списке страниц пусто.&amp;#039;)&lt;br /&gt;
		elseif afdMode then&lt;br /&gt;
			table.insert(errorInfo, &amp;#039;Не удалось найти темы.&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if errorInfo[1] then&lt;br /&gt;
		headerContent = headerContent&lt;br /&gt;
			.. &amp;#039;&amp;lt;div style=&amp;quot;font-style:italic; margin:1em 0;&amp;quot;&amp;gt;\n&amp;#039;&lt;br /&gt;
			.. table.concat(errorInfo, &amp;#039;&amp;lt;br&amp;gt;&amp;#039;)&lt;br /&gt;
			.. &amp;#039;&amp;lt;/div&amp;gt;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	local itemsToRemoveString&lt;br /&gt;
	if itemsToRemove[1] then&lt;br /&gt;
		itemsToRemoveString = &amp;#039;&amp;lt;ul style=&amp;quot;display:none;&amp;quot; class=&amp;quot;topicWatch-itemsToRemove&amp;quot;&amp;gt;\n&amp;#039;&lt;br /&gt;
		for k, v in pairs(itemsToRemove) do&lt;br /&gt;
			itemsToRemoveString = itemsToRemoveString .. &amp;#039;&amp;lt;li&amp;gt;&amp;#039; .. v .. &amp;#039;&amp;lt;/li&amp;gt;\n&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		itemsToRemoveString = itemsToRemoveString .. &amp;#039;&amp;lt;/ul&amp;gt;\n&amp;#039;&lt;br /&gt;
		headerContent = headerContent .. itemsToRemoveString&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- формируем сами темы&lt;br /&gt;
	local content = &amp;#039;&amp;#039;&lt;br /&gt;
	if fullTopicsToShow ~= 0 then&lt;br /&gt;
		headerContent = headerContent .. &amp;#039;__TOC__\n&amp;#039;&lt;br /&gt;
		for k, v in pairs(fullTopics) do&lt;br /&gt;
			if v.msgCount then&lt;br /&gt;
				v.sectionContent = mw.ustring.gsub(v.sectionContent, v.lastMsgDateString .. &amp;#039; %(UTC%)&amp;#039;, &amp;#039;&amp;lt;cite id=&amp;quot;&amp;#039; .. v.lastMsgAnchor:gsub(&amp;#039;&amp;quot;&amp;#039;, &amp;#039;&amp;amp;quot;&amp;#039;) .. &amp;#039;&amp;quot; style=&amp;quot;font-style:normal;&amp;quot;&amp;gt;%0&amp;lt;/cite&amp;gt;&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			content = content&lt;br /&gt;
				.. killHeadingMarkers(frame:preprocess(v.sectionContent)) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
				.. &amp;#039;&amp;lt;div style=&amp;quot;margin-top:1em;&amp;quot;&amp;gt;&amp;#039; .. (topicsToShow ~= 0 and &amp;#039;[[#topicTable&amp;#039; .. randomNum .. &amp;#039;|↑ К списку тем]]&amp;#039; or &amp;#039;[[#toc|↑ К содержанию]]&amp;#039;) .. &amp;#039;&amp;lt;/div&amp;gt;\n&amp;#039;&lt;br /&gt;
			if k == fullTopicsToShow then break end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	content = headerContent .. content&lt;br /&gt;
	&lt;br /&gt;
	return content&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ru&gt;Alex NB IT</name></author>
	</entry>
</feed>